Nicer properties dialog

This commit is contained in:
Pierre Pronchery 2012-08-30 20:48:54 +00:00
parent 2354f01e9a
commit 8b18428460

View File

@ -395,14 +395,15 @@ void pdfviewer_open(PDFviewer * pdfviewer, char const * uri)
/* pdfviewer_properties */ /* pdfviewer_properties */
static GtkWidget * _properties_label(PDFviewer * pdfviewer, char const * label, static GtkWidget * _properties_label(PDFviewer * pdfviewer,
char const * value); GtkSizeGroup * group, char const * label, char const * value);
static GtkWidget * _properties_label_date(PDFviewer * pdfviewer, static GtkWidget * _properties_label_date(PDFviewer * pdfviewer,
char const * label, time_t t); GtkSizeGroup * group, char const * label, time_t t);
void pdfviewer_properties(PDFviewer * pdfviewer) void pdfviewer_properties(PDFviewer * pdfviewer)
{ {
GtkWidget * dialog; GtkWidget * dialog;
GtkSizeGroup * group;
GtkWidget * vbox; GtkWidget * vbox;
GtkWidget * hbox; GtkWidget * hbox;
GtkWidget * widget; GtkWidget * widget;
@ -416,6 +417,7 @@ void pdfviewer_properties(PDFviewer * pdfviewer)
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
gtk_window_set_default_size(GTK_WINDOW(dialog), 300, 200); gtk_window_set_default_size(GTK_WINDOW(dialog), 300, 200);
group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
#if GTK_CHECK_VERSION(2, 14, 0) #if GTK_CHECK_VERSION(2, 14, 0)
vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
#else #else
@ -431,44 +433,44 @@ void pdfviewer_properties(PDFviewer * pdfviewer)
free(p); free(p);
/* author */ /* author */
p = poppler_document_get_author(pdfviewer->pdf->document); p = poppler_document_get_author(pdfviewer->pdf->document);
hbox = _properties_label(pdfviewer, "Author: ", p); hbox = _properties_label(pdfviewer, group, "Author: ", p);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
free(p); free(p);
/* subject */ /* subject */
p = poppler_document_get_subject(pdfviewer->pdf->document); p = poppler_document_get_subject(pdfviewer->pdf->document);
hbox = _properties_label(pdfviewer, "Subject: ", p); hbox = _properties_label(pdfviewer, group, "Subject: ", p);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
free(p); free(p);
/* keywords */ /* keywords */
p = poppler_document_get_keywords(pdfviewer->pdf->document); p = poppler_document_get_keywords(pdfviewer->pdf->document);
hbox = _properties_label(pdfviewer, "Keywords: ", p); hbox = _properties_label(pdfviewer, group, "Keywords: ", p);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
free(p); free(p);
/* creator */ /* creator */
p = poppler_document_get_creator(pdfviewer->pdf->document); p = poppler_document_get_creator(pdfviewer->pdf->document);
hbox = _properties_label(pdfviewer, "Creator: ", p); hbox = _properties_label(pdfviewer, group, "Creator: ", p);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
free(p); free(p);
/* producer */ /* producer */
p = poppler_document_get_producer(pdfviewer->pdf->document); p = poppler_document_get_producer(pdfviewer->pdf->document);
hbox = _properties_label(pdfviewer, "Producer: ", p); hbox = _properties_label(pdfviewer, group, "Producer: ", p);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
free(p); free(p);
/* creation time */ /* creation time */
t = poppler_document_get_creation_date(pdfviewer->pdf->document); t = poppler_document_get_creation_date(pdfviewer->pdf->document);
hbox = _properties_label_date(pdfviewer, "Created on: ", t); hbox = _properties_label_date(pdfviewer, group, "Created on: ", t);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
/* modification time */ /* modification time */
t = poppler_document_get_modification_date(pdfviewer->pdf->document); t = poppler_document_get_modification_date(pdfviewer->pdf->document);
hbox = _properties_label_date(pdfviewer, "Modified on: ", t); hbox = _properties_label_date(pdfviewer, group, "Modified on: ", t);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
gtk_widget_show_all(vbox); gtk_widget_show_all(vbox);
gtk_dialog_run(GTK_DIALOG(dialog)); gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog); gtk_widget_destroy(dialog);
} }
static GtkWidget * _properties_label(PDFviewer * pdfviewer, char const * label, static GtkWidget * _properties_label(PDFviewer * pdfviewer,
char const * value) GtkSizeGroup * group, char const * label, char const * value)
{ {
GtkWidget * hbox; GtkWidget * hbox;
GtkWidget * widget; GtkWidget * widget;
@ -476,6 +478,8 @@ static GtkWidget * _properties_label(PDFviewer * pdfviewer, char const * label,
hbox = gtk_hbox_new(FALSE, 4); hbox = gtk_hbox_new(FALSE, 4);
widget = gtk_label_new(label); widget = gtk_label_new(label);
gtk_widget_modify_font(widget, pdfviewer->bold); gtk_widget_modify_font(widget, pdfviewer->bold);
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5);
gtk_size_group_add_widget(group, widget);
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0);
widget = gtk_label_new((value != NULL) ? value : ""); widget = gtk_label_new((value != NULL) ? value : "");
gtk_label_set_ellipsize(GTK_LABEL(widget), PANGO_ELLIPSIZE_END); gtk_label_set_ellipsize(GTK_LABEL(widget), PANGO_ELLIPSIZE_END);
@ -485,14 +489,14 @@ static GtkWidget * _properties_label(PDFviewer * pdfviewer, char const * label,
} }
static GtkWidget * _properties_label_date(PDFviewer * pdfviewer, static GtkWidget * _properties_label_date(PDFviewer * pdfviewer,
char const * label, time_t t) GtkSizeGroup * group, char const * label, time_t t)
{ {
char buf[256]; char buf[256];
struct tm tm; struct tm tm;
localtime_r(&t, &tm); localtime_r(&t, &tm);
strftime(buf, sizeof(buf), "%b %d %Y, %H:%M:%S", &tm); strftime(buf, sizeof(buf), "%b %d %Y, %H:%M:%S", &tm);
return _properties_label(pdfviewer, label, buf); return _properties_label(pdfviewer, group, label, buf);
} }