Skip to content

Commit 068315f

Browse files
fxrivkareh
authored andcommitted
EomPropertiesDialog: Convert to GtkBuilder template
origin commit: https://gitlab.gnome.org/GNOME/eog/commit/a8343a6
1 parent 734ad19 commit 068315f

File tree

6 files changed

+152
-114
lines changed

6 files changed

+152
-114
lines changed

‎data/eom-image-properties-dialog.ui‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<!-- Generated with glade 3.22.1 -->
33
<interface>
44
<requires lib="gtk+" version="3.22"/>
5-
<object class="GtkDialog" id="eom_image_properties_dialog">
5+
<template class="EomPropertiesDialog" parent="GtkDialog">
66
<property name="can_focus">False</property>
77
<property name="border_width">5</property>
88
<property name="title" translatable="yes">Image Properties</property>
@@ -144,6 +144,7 @@
144144
<property name="visible">True</property>
145145
<property name="can_focus">True</property>
146146
<property name="border_width">5</property>
147+
<signal name="switch-page" handler="eom_properties_dialog_page_switch" object="EomPropertiesDialog" swapped="no"/>
147148
<child>
148149
<object class="GtkBox" id="general_box">
149150
<property name="visible">True</property>
@@ -390,6 +391,7 @@
390391
<property name="visible">True</property>
391392
<property name="can_focus">True</property>
392393
<property name="receives_default">True</property>
394+
<signal name="clicked" handler="pd_folder_button_clicked_cb" object="EomPropertiesDialog" swapped="no"/>
393395
</object>
394396
<packing>
395397
<property name="expand">False</property>
@@ -940,6 +942,7 @@
940942
<attributes>
941943
<attribute name="weight" value="bold"/>
942944
</attributes>
945+
<signal name="notify::expanded" handler="pd_exif_details_activated_cb" object="EomPropertiesDialog" after="yes" swapped="no"/>
943946
</object>
944947
</child>
945948
</object>
@@ -1008,5 +1011,5 @@
10081011
<style>
10091012
<class name="eom-image-properties-dialog"/>
10101013
</style>
1011-
</object>
1014+
</template>
10121015
</interface>

‎src/eom-metadata-sidebar.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ static void
304304
_details_button_clicked_cb (GtkButton *button, gpointer user_data)
305305
{
306306
EomMetadataSidebarPrivate *priv = EOM_METADATA_SIDEBAR(user_data)->priv;
307-
EomDialog *dlg;
307+
GtkWidget *dlg;
308308

309309
g_return_if_fail (priv->parent_window != NULL);
310310

@@ -313,7 +313,7 @@ _details_button_clicked_cb (GtkButton *button, gpointer user_data)
313313
g_return_if_fail (dlg != NULL);
314314
eom_properties_dialog_set_page (EOM_PROPERTIES_DIALOG (dlg),
315315
EOM_PROPERTIES_DIALOG_PAGE_DETAILS);
316-
eom_dialog_show (dlg);
316+
gtk_widget_show (dlg);
317317
}
318318
#endif /* HAVE_METADATA */
319319

‎src/eom-properties-dialog.c‎

Lines changed: 133 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ struct _EomPropertiesDialogPrivate {
105105
gboolean netbook_mode;
106106
};
107107

108-
G_DEFINE_TYPE_WITH_PRIVATE (EomPropertiesDialog, eom_properties_dialog, EOM_TYPE_DIALOG);
108+
G_DEFINE_TYPE_WITH_PRIVATE (EomPropertiesDialog, eom_properties_dialog, GTK_TYPE_DIALOG);
109109

110110
static void
111111
pd_update_general_tab (EomPropertiesDialog *prop_dlg,
@@ -402,21 +402,13 @@ pd_exif_details_activated_cb (GtkExpander *expander,
402402
}
403403
#endif
404404

405-
static void
406-
pd_close_button_clicked_cb (GtkButton *button,
407-
gpointer user_data)
408-
{
409-
eom_dialog_hide (EOM_DIALOG (user_data));
410-
}
411-
412405
static void
413406
pd_folder_button_clicked_cb (GtkButton *button, gpointer data)
414407
{
415408
EomPropertiesDialogPrivate *priv = EOM_PROPERTIES_DIALOG (data)->priv;
416409
GdkScreen *screen;
417410
guint32 timestamp;
418411

419-
420412
if (!priv->folder_button_uri)
421413
return;
422414

@@ -432,25 +424,12 @@ eom_properties_dialog_page_switch (GtkNotebook *notebook,
432424
guint page_index,
433425
EomPropertiesDialog *prop_dlg)
434426
{
435-
436427
if (prop_dlg->priv->update_page)
437428
prop_dlg->priv->current_page = page_index;
438429

439430
return TRUE;
440431
}
441432

442-
static gint
443-
eom_properties_dialog_delete (GtkWidget *widget,
444-
GdkEventAny *event,
445-
gpointer user_data)
446-
{
447-
g_return_val_if_fail (EOM_IS_PROPERTIES_DIALOG (user_data), FALSE);
448-
449-
eom_dialog_hide (EOM_DIALOG (user_data));
450-
451-
return TRUE;
452-
}
453-
454433
void
455434
eom_properties_dialog_set_netbook_mode (EomPropertiesDialog *dlg,
456435
gboolean enable)
@@ -563,9 +542,9 @@ eom_properties_dialog_dispose (GObject *object)
563542
}
564543

565544
static void
566-
eom_properties_dialog_class_init (EomPropertiesDialogClass *class)
545+
eom_properties_dialog_class_init (EomPropertiesDialogClass *klass)
567546
{
568-
GObjectClass *g_object_class = (GObjectClass *) class;
547+
GObjectClass *g_object_class = (GObjectClass *) klass;
569548

570549
g_object_class->dispose = eom_properties_dialog_dispose;
571550
g_object_class->set_property = eom_properties_dialog_set_property;
@@ -589,13 +568,125 @@ eom_properties_dialog_class_init (EomPropertiesDialogClass *class)
589568
FALSE,
590569
G_PARAM_READWRITE |
591570
G_PARAM_STATIC_STRINGS));
571+
572+
gchar* data;
573+
gsize data_size;
574+
g_file_get_contents(g_build_filename (EOM_DATA_DIR, "eom-image-properties-dialog.ui", NULL), &data, &data_size, NULL);
575+
GBytes *bytes = g_bytes_new_static(data, data_size);
576+
gtk_widget_class_set_template((GtkWidgetClass *) klass, bytes);
577+
578+
GtkWidgetClass *wklass = (GtkWidgetClass*) klass;
579+
gtk_widget_class_bind_template_child_private(wklass,
580+
EomPropertiesDialog,
581+
notebook);
582+
gtk_widget_class_bind_template_child_private(wklass,
583+
EomPropertiesDialog,
584+
previous_button);
585+
gtk_widget_class_bind_template_child_private(wklass,
586+
EomPropertiesDialog,
587+
next_button);
588+
gtk_widget_class_bind_template_child_private(wklass,
589+
EomPropertiesDialog,
590+
close_button);
591+
gtk_widget_class_bind_template_child_private(wklass,
592+
EomPropertiesDialog,
593+
thumbnail_image);
594+
gtk_widget_class_bind_template_child_private(wklass,
595+
EomPropertiesDialog,
596+
general_box);
597+
gtk_widget_class_bind_template_child_private(wklass,
598+
EomPropertiesDialog,
599+
name_label);
600+
gtk_widget_class_bind_template_child_private(wklass,
601+
EomPropertiesDialog,
602+
width_label);
603+
gtk_widget_class_bind_template_child_private(wklass,
604+
EomPropertiesDialog,
605+
height_label);
606+
gtk_widget_class_bind_template_child_private(wklass,
607+
EomPropertiesDialog,
608+
type_label);
609+
gtk_widget_class_bind_template_child_private(wklass,
610+
EomPropertiesDialog,
611+
bytes_label);
612+
gtk_widget_class_bind_template_child_private(wklass,
613+
EomPropertiesDialog,
614+
folder_button);
615+
616+
#if HAVE_EXIF
617+
gtk_widget_class_bind_template_child_private(wklass,
618+
EomPropertiesDialog,
619+
exif_aperture_label);
620+
gtk_widget_class_bind_template_child_private(wklass,
621+
EomPropertiesDialog,
622+
exif_exposure_label);
623+
gtk_widget_class_bind_template_child_private(wklass,
624+
EomPropertiesDialog,
625+
exif_focal_label);
626+
gtk_widget_class_bind_template_child_private(wklass,
627+
EomPropertiesDialog,
628+
exif_flash_label);
629+
gtk_widget_class_bind_template_child_private(wklass,
630+
EomPropertiesDialog,
631+
exif_iso_label);
632+
gtk_widget_class_bind_template_child_private(wklass,
633+
EomPropertiesDialog,
634+
exif_metering_label);
635+
gtk_widget_class_bind_template_child_private(wklass,
636+
EomPropertiesDialog,
637+
exif_model_label);
638+
gtk_widget_class_bind_template_child_private(wklass,
639+
EomPropertiesDialog,
640+
exif_date_label);
641+
#endif
642+
#if HAVE_EXEMPI
643+
gtk_widget_class_bind_template_child_private(wklass,
644+
EomPropertiesDialog,
645+
xmp_location_label);
646+
gtk_widget_class_bind_template_child_private(wklass,
647+
EomPropertiesDialog,
648+
xmp_description_label);
649+
gtk_widget_class_bind_template_child_private(wklass,
650+
EomPropertiesDialog,
651+
xmp_keywords_label);
652+
gtk_widget_class_bind_template_child_private(wklass,
653+
EomPropertiesDialog,
654+
xmp_creator_label);
655+
gtk_widget_class_bind_template_child_private(wklass,
656+
EomPropertiesDialog,
657+
xmp_rights_label);
658+
#else
659+
gtk_widget_class_bind_template_child_private(wklass,
660+
EomPropertiesDialog,
661+
xmp_box);
662+
gtk_widget_class_bind_template_child_private(wklass,
663+
EomPropertiesDialog,
664+
xmp_box_label);
665+
#endif
666+
#ifdef HAVE_METADATA
667+
gtk_widget_class_bind_template_child_private(wklass,
668+
EomPropertiesDialog,
669+
metadata_box);
670+
gtk_widget_class_bind_template_child_private(wklass,
671+
EomPropertiesDialog,
672+
metadata_details_expander);
673+
gtk_widget_class_bind_template_child_private(wklass,
674+
EomPropertiesDialog,
675+
metadata_details_box);
676+
677+
gtk_widget_class_bind_template_callback(wklass,
678+
pd_exif_details_activated_cb);
679+
#endif
680+
gtk_widget_class_bind_template_callback(wklass,
681+
eom_properties_dialog_page_switch);
682+
gtk_widget_class_bind_template_callback(wklass,
683+
pd_folder_button_clicked_cb);
592684
}
593685

594686
static void
595687
eom_properties_dialog_init (EomPropertiesDialog *prop_dlg)
596688
{
597689
EomPropertiesDialogPrivate *priv;
598-
GtkWidget *dlg;
599690
#ifndef HAVE_EXEMPI
600691
GtkWidget *xmp_box, *xmp_box_label;
601692
#endif
@@ -609,70 +700,17 @@ eom_properties_dialog_init (EomPropertiesDialog *prop_dlg)
609700

610701
priv->update_page = FALSE;
611702

612-
eom_dialog_construct (EOM_DIALOG (prop_dlg),
613-
"eom-image-properties-dialog.ui",
614-
"eom_image_properties_dialog");
615-
616-
eom_dialog_get_controls (EOM_DIALOG (prop_dlg),
617-
"eom_image_properties_dialog", &dlg,
618-
"notebook", &priv->notebook,
619-
"previous_button", &priv->previous_button,
620-
"next_button", &priv->next_button,
621-
"close_button", &priv->close_button,
622-
"thumbnail_image", &priv->thumbnail_image,
623-
"general_box", &priv->general_box,
624-
"name_label", &priv->name_label,
625-
"width_label", &priv->width_label,
626-
"height_label", &priv->height_label,
627-
"type_label", &priv->type_label,
628-
"bytes_label", &priv->bytes_label,
629-
"folder_button", &priv->folder_button,
630-
#ifdef HAVE_EXIF
631-
"exif_aperture_label", &priv->exif_aperture_label,
632-
"exif_exposure_label", &priv->exif_exposure_label,
633-
"exif_focal_label", &priv->exif_focal_label,
634-
"exif_flash_label", &priv->exif_flash_label,
635-
"exif_iso_label", &priv->exif_iso_label,
636-
"exif_metering_label", &priv->exif_metering_label,
637-
"exif_model_label", &priv->exif_model_label,
638-
"exif_date_label", &priv->exif_date_label,
639-
#endif
640-
#ifdef HAVE_EXEMPI
641-
"xmp_location_label", &priv->xmp_location_label,
642-
"xmp_description_label", &priv->xmp_description_label,
643-
"xmp_keywords_label", &priv->xmp_keywords_label,
644-
"xmp_creator_label", &priv->xmp_creator_label,
645-
"xmp_rights_label", &priv->xmp_rights_label,
646-
#else
647-
"xmp_box", &xmp_box,
648-
"xmp_box_label", &xmp_box_label,
649-
#endif
650-
#ifdef HAVE_METADATA
651-
"metadata_box", &priv->metadata_box,
652-
"metadata_details_expander", &priv->metadata_details_expander,
653-
"metadata_details_box", &priv->metadata_details_box,
654-
#endif
655-
NULL);
656-
657-
g_signal_connect (dlg,
658-
"delete-event",
659-
G_CALLBACK (eom_properties_dialog_delete),
660-
prop_dlg);
703+
gtk_widget_init_template (GTK_WIDGET (prop_dlg));
661704

662-
g_signal_connect (priv->notebook,
663-
"switch-page",
664-
G_CALLBACK (eom_properties_dialog_page_switch),
665-
prop_dlg);
705+
g_signal_connect (prop_dlg,
706+
"delete-event",
707+
G_CALLBACK (gtk_widget_hide_on_delete),
708+
prop_dlg);
666709

667-
g_signal_connect (priv->close_button,
668-
"clicked",
669-
G_CALLBACK (pd_close_button_clicked_cb),
670-
prop_dlg);
671-
672-
g_signal_connect (priv->folder_button,
673-
"clicked",
674-
G_CALLBACK (pd_folder_button_clicked_cb),
675-
prop_dlg);
710+
g_signal_connect_swapped (priv->close_button,
711+
"clicked",
712+
G_CALLBACK (gtk_widget_hide_on_delete),
713+
prop_dlg);
676714

677715
gtk_widget_set_size_request (priv->thumbnail_image, 100, 100);
678716

@@ -705,11 +743,6 @@ eom_properties_dialog_init (EomPropertiesDialog *prop_dlg)
705743
sw);
706744
}
707745

708-
g_signal_connect_after (G_OBJECT (priv->metadata_details_expander),
709-
"notify::expanded",
710-
G_CALLBACK (pd_exif_details_activated_cb),
711-
dlg);
712-
713746
#ifndef HAVE_EXEMPI
714747
gtk_widget_hide (xmp_box);
715748
gtk_widget_hide (xmp_box_label);
@@ -737,7 +770,7 @@ eom_properties_dialog_init (EomPropertiesDialog *prop_dlg)
737770
* Returns: (transfer full) (type EomPropertiesDialog): a new #EomPropertiesDialog
738771
**/
739772

740-
GObject *
773+
GtkWidget *
741774
eom_properties_dialog_new (GtkWindow *parent,
742775
EomThumbView *thumbview,
743776
GtkAction *next_image_action,
@@ -751,15 +784,18 @@ eom_properties_dialog_new (GtkWindow *parent,
751784
g_return_val_if_fail (GTK_IS_ACTION (previous_image_action), NULL);
752785

753786
prop_dlg = g_object_new (EOM_TYPE_PROPERTIES_DIALOG,
754-
"parent-window", parent,
755-
"thumbview", thumbview,
756-
NULL);
787+
"thumbview", thumbview,
788+
NULL);
789+
790+
if (parent) {
791+
gtk_window_set_transient_for (GTK_WINDOW (prop_dlg), parent);
792+
}
757793

758794
gtk_activatable_set_related_action (GTK_ACTIVATABLE (EOM_PROPERTIES_DIALOG (prop_dlg)->priv->next_button), next_image_action);
759795

760796
gtk_activatable_set_related_action (GTK_ACTIVATABLE (EOM_PROPERTIES_DIALOG (prop_dlg)->priv->previous_button), previous_image_action);
761797

762-
return prop_dlg;
798+
return GTK_WIDGET (prop_dlg);
763799
}
764800

765801
void

0 commit comments

Comments
 (0)