diff options
-rw-r--r-- | data/eom-image-properties-dialog.ui | 38 | ||||
-rw-r--r-- | src/eom-properties-dialog.c | 54 |
2 files changed, 76 insertions, 16 deletions
diff --git a/data/eom-image-properties-dialog.ui b/data/eom-image-properties-dialog.ui index d0711d6..3c54692 100644 --- a/data/eom-image-properties-dialog.ui +++ b/data/eom-image-properties-dialog.ui @@ -1,13 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.20.0 --> +<!-- Generated with glade 3.22.1 --> <interface> - <requires lib="gtk+" version="3.14"/> + <requires lib="gtk+" version="3.22"/> <object class="GtkDialog" id="eom_image_properties_dialog"> <property name="can_focus">False</property> <property name="border_width">5</property> <property name="title" translatable="yes">Image Properties</property> <property name="icon_name">gtk-properties</property> <property name="type_hint">dialog</property> + <child> + <placeholder/> + </child> <child internal-child="vbox"> <object class="GtkBox" id="image-properties-dialog-vbox"> <property name="visible">True</property> @@ -189,6 +192,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">8</property> + <property name="margin_bottom">8</property> <property name="label" translatable="yes">Name:</property> <property name="justify">right</property> <attributes> @@ -206,6 +211,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">8</property> + <property name="margin_bottom">8</property> <property name="label" translatable="yes">Width:</property> <attributes> <attribute name="weight" value="bold"/> @@ -222,6 +229,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">8</property> + <property name="margin_bottom">8</property> <property name="label" translatable="yes">Height:</property> <attributes> <attribute name="weight" value="bold"/> @@ -238,6 +247,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">8</property> + <property name="margin_bottom">8</property> <property name="label" translatable="yes">Type:</property> <attributes> <attribute name="weight" value="bold"/> @@ -254,6 +265,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">8</property> + <property name="margin_bottom">8</property> <property name="label" translatable="yes">Bytes:</property> <attributes> <attribute name="weight" value="bold"/> @@ -270,6 +283,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">8</property> + <property name="margin_bottom">8</property> <property name="label" translatable="yes">Location:</property> <attributes> <attribute name="weight" value="bold"/> @@ -299,6 +314,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">9</property> + <property name="margin_bottom">7</property> <property name="selectable">True</property> </object> <packing> @@ -312,6 +329,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">9</property> + <property name="margin_bottom">7</property> <property name="selectable">True</property> </object> <packing> @@ -325,6 +344,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">9</property> + <property name="margin_bottom">7</property> <property name="selectable">True</property> </object> <packing> @@ -338,6 +359,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">9</property> + <property name="margin_bottom">7</property> <property name="selectable">True</property> </object> <packing> @@ -351,6 +374,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="halign">start</property> + <property name="margin_top">9</property> + <property name="margin_bottom">7</property> <property name="selectable">True</property> </object> <packing> @@ -360,12 +385,11 @@ </packing> </child> <child> - <object class="GtkLabel" id="location_label"> + <object class="GtkButton" id="folder_button"> + <property name="label">button</property> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="halign">start</property> - <property name="selectable">True</property> - <property name="ellipsize">end</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> </object> <packing> <property name="expand">False</property> diff --git a/src/eom-properties-dialog.c b/src/eom-properties-dialog.c index 00bada5..299e056 100644 --- a/src/eom-properties-dialog.c +++ b/src/eom-properties-dialog.c @@ -80,7 +80,8 @@ struct _EomPropertiesDialogPrivate { GtkWidget *height_label; GtkWidget *type_label; GtkWidget *bytes_label; - GtkWidget *location_label; + GtkWidget *folder_button; + gchar *folder_button_uri; GtkWidget *created_label; GtkWidget *modified_label; #ifdef HAVE_EXIF @@ -115,9 +116,9 @@ static void pd_update_general_tab (EomPropertiesDialog *prop_dlg, EomImage *image) { - gchar *bytes_str, *dir_str, *uri_str; + gchar *bytes_str, *dir_str; gchar *width_str, *height_str; - GFile *file; + GFile *file, *parent_file; GFileInfo *file_info; const char *mime_str; char *type_str; @@ -165,15 +166,21 @@ pd_update_general_tab (EomPropertiesDialog *prop_dlg, gtk_label_set_text (GTK_LABEL (prop_dlg->priv->bytes_label), bytes_str); - uri_str = eom_image_get_uri_for_display (image); - dir_str = g_path_get_dirname (uri_str); - gtk_label_set_text (GTK_LABEL (prop_dlg->priv->location_label), - dir_str); + parent_file = g_file_get_parent (file); + if (parent_file == NULL) { + /* file is root directory itself */ + parent_file = g_object_ref (file); + } + dir_str = g_file_get_basename (parent_file); + gtk_button_set_label (GTK_BUTTON (prop_dlg->priv->folder_button), + dir_str); + g_free (prop_dlg->priv->folder_button_uri); + prop_dlg->priv->folder_button_uri = g_file_get_uri (parent_file); + g_object_unref (parent_file); g_free (type_str); g_free (bytes_str); g_free (dir_str); - g_free (uri_str); } #if HAVE_EXEMPI @@ -401,6 +408,23 @@ pd_close_button_clicked_cb (GtkButton *button, eom_dialog_hide (EOM_DIALOG (user_data)); } +static void +pd_folder_button_clicked_cb (GtkButton *button, gpointer data) +{ + EomPropertiesDialogPrivate *priv = EOM_PROPERTIES_DIALOG (data)->priv; + GdkScreen *screen; + guint32 timestamp; + + + if (!priv->folder_button_uri) + return; + + screen = gtk_widget_get_screen (GTK_WIDGET (button)); + timestamp = gtk_get_current_event_time (); + + gtk_show_uri (screen, priv->folder_button_uri, timestamp, NULL); +} + static gboolean eom_properties_dialog_page_switch (GtkNotebook *notebook, gpointer page, @@ -531,6 +555,9 @@ eom_properties_dialog_dispose (GObject *object) priv->thumbview = NULL; } + g_free (priv->folder_button_uri); + priv->folder_button_uri = NULL; + G_OBJECT_CLASS (eom_properties_dialog_parent_class)->dispose (object); } @@ -600,7 +627,7 @@ eom_properties_dialog_init (EomPropertiesDialog *prop_dlg) "height_label", &priv->height_label, "type_label", &priv->type_label, "bytes_label", &priv->bytes_label, - "location_label", &priv->location_label, + "folder_button", &priv->folder_button, "created_label", &priv->created_label, "modified_label", &priv->modified_label, #ifdef HAVE_EXIF @@ -645,6 +672,15 @@ eom_properties_dialog_init (EomPropertiesDialog *prop_dlg) G_CALLBACK (pd_close_button_clicked_cb), prop_dlg); + g_signal_connect (priv->folder_button, + "clicked", + G_CALLBACK (pd_folder_button_clicked_cb), + prop_dlg); + gtk_widget_set_tooltip_text (GTK_WIDGET (priv->folder_button), + _("Show the folder which contains this " + "file in the file manager")); + priv->folder_button_uri = NULL; + gtk_widget_set_size_request (priv->thumbnail_image, 100, 100); #ifdef HAVE_METADATA |