@@ -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
110110static void
111111pd_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-
412405static void
413406pd_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-
454433void
455434eom_properties_dialog_set_netbook_mode (EomPropertiesDialog * dlg ,
456435 gboolean enable )
@@ -563,9 +542,9 @@ eom_properties_dialog_dispose (GObject *object)
563542}
564543
565544static 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
594686static void
595687eom_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 *
741774eom_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
765801void
0 commit comments