[gthumb] edit metadata dialogs: simplified layout



commit 951a1ba192933c3c13bfed8ff05669bcaba9ddf5
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Mar 8 10:21:07 2020 +0100

    edit metadata dialogs: simplified layout
    
    Moved the lock button on the header bar. Show the navigation
    bar only when the lock button is active.

 .../hicolor/16x16/actions/lock-symbolic.svg        | 116 +++++++++++++++++++++
 data/ui/file-selection-info.ui                     | 106 +++++++++++--------
 extensions/catalogs/data/ui/add-to-catalog.ui      |  18 +---
 extensions/catalogs/dlg-add-to-catalog.c           |  30 +++---
 extensions/edit_metadata/dlg-edit-metadata.c       |  27 ++++-
 extensions/edit_metadata/gth-edit-comment-dialog.c |  23 +---
 .../edit_metadata/gth-edit-metadata-dialog.c       |   6 --
 .../edit_metadata/gth-edit-metadata-dialog.h       |   2 -
 extensions/edit_metadata/gth-edit-tags-dialog.c    |  35 +------
 gthumb/gth-file-selection-info.c                   |   8 ++
 gthumb/gth-file-selection-info.h                   |   2 +
 gthumb/gtk-utils.c                                 |  18 ++++
 gthumb/gtk-utils.h                                 |   2 +
 13 files changed, 252 insertions(+), 141 deletions(-)
---
diff --git a/data/icons/private/hicolor/16x16/actions/lock-symbolic.svg 
b/data/icons/private/hicolor/16x16/actions/lock-symbolic.svg
new file mode 100644
index 00000000..a853b994
--- /dev/null
+++ b/data/icons/private/hicolor/16x16/actions/lock-symbolic.svg
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="16"
+   height="16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="lock-symbolic.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3946">
+      <stop
+         id="stop3948"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:0.74698794;" />
+      <stop
+         id="stop3950"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0.02409638;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3830-9">
+      <stop
+         style="stop-color:#000000;stop-opacity:0.74698794;"
+         offset="0"
+         id="stop3832-7" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0.02409638;"
+         offset="1"
+         id="stop3834-5" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3984">
+      <stop
+         style="stop-color:#f4deba;stop-opacity:1;"
+         offset="0"
+         id="stop3986" />
+      <stop
+         style="stop-color:#de9625;stop-opacity:0;"
+         offset="1"
+         id="stop3988" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#555753"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="1"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-10.159501"
+     inkscape:cy="9.886072"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:snap-grids="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1136"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     showborder="true"
+     fit-margin-top="0"
+     fit-margin-right="0"
+     fit-margin-left="0"
+     fit-margin-bottom="0"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid7044"
+       empspacing="8"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-31.97559"
+       originy="-816.00002"
+       spacingx="1"
+       spacingy="1" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-31.97559,-220.36218)">
+    <path
+       inkscape:connector-curvature="0"
+       
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 40.134177,220.50804 c -2.078913,0.0172 -4.245658,1.39119 -4.276622,4.07304 l -0.05386,3.19507 c 
-0.213748,0.0167 -0.428071,0.0338 -0.641662,0.0503 -0.03177,0.66003 0.02447,4.54379 0.01329,7.67749 l 
1.152704,0.71259 c 2.677302,-0.13582 5.069075,-0.099 8.470968,-0.96039 l -0.05429,-7.6762 c -0.109652,0.0177 
-0.219435,0.0349 -0.329101,0.0527 0.105001,-0.0179 0.210304,-0.0348 0.315212,-0.0529 l -0.712168,-0.21363 
0.01299,-3.64408 c -0.110968,-1.38744 -0.900103,-2.31177 -1.943754,-2.78369 -0.587896,-0.29305 
-1.265862,-0.4361 -1.953827,-0.43034 z m 0.269619,1.49854 c 0.608196,-0.003 1.18865,0.19618 1.601085,0.61357 
0.195717,0.20975 0.349857,0.47198 0.447318,0.78734 -0.0071,-0.008 -0.01403,-0.0133 -0.0213,-0.0207 
0.01988,0.0454 0.03796,0.0929 0.05503,0.14118 0.04873,0.19321 0.07771,0.40436 0.08216,0.6352 l 
0.03658,3.02563 c -1.738803,0.17162 -3.454282,0.31988 -5.159171,0.45759 l 0.04707,-2.71794 c 0.03589,-1.87985 
1.542627,-2.91379 2.911231,-2.92183 z"
+       id="path3927"
+       sodipodi:nodetypes="sccccccccccccssccccccccs" />
+  </g>
+</svg>
diff --git a/data/ui/file-selection-info.ui b/data/ui/file-selection-info.ui
index 64d46366..480e3b02 100644
--- a/data/ui/file-selection-info.ui
+++ b/data/ui/file-selection-info.ui
@@ -2,28 +2,76 @@
 <!-- Generated with glade 3.22.2 -->
 <interface>
   <requires lib="gtk+" version="3.20"/>
-  <object class="GtkBox" id="content">
+  <object class="GtkRevealer" id="content">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="hexpand">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkBox">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="spacing">6</property>
+        <property name="orientation">vertical</property>
         <child>
-          <object class="GtkButton" id="prev_button">
+          <object class="GtkBox">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="tooltip_text" translatable="yes">Previous</property>
+            <property name="can_focus">False</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkButton" id="prev_button">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Previous</property>
+                <child>
+                  <object class="GtkImage">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="icon_name">go-previous-symbolic</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
             <child>
-              <object class="GtkImage">
+              <object class="GtkLabel" id="info_label">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="icon_name">go-previous-symbolic</property>
+                <property name="wrap">True</property>
+                <property name="wrap_mode">word-char</property>
+                <property name="max_width_chars">30</property>
+                <property name="xalign">0.5</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="next_button">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Next</property>
+                <child>
+                  <object class="GtkImage">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="icon_name">go-next-symbolic</property>
+                  </object>
+                </child>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
             </child>
           </object>
           <packing>
@@ -33,49 +81,19 @@
           </packing>
         </child>
         <child>
-          <object class="GtkLabel" id="info_label">
+          <object class="GtkSeparator">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="wrap">True</property>
-            <property name="wrap_mode">word-char</property>
-            <property name="max_width_chars">30</property>
-            <property name="xalign">0.5</property>
-            <attributes>
-              <attribute name="weight" value="bold"/>
-            </attributes>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="next_button">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="tooltip_text" translatable="yes">Next</property>
-            <child>
-              <object class="GtkImage">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="icon_name">go-next-symbolic</property>
-              </object>
-            </child>
+            <property name="margin_top">10</property>
+            <property name="margin_bottom">10</property>
           </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="position">2</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="position">0</property>
-      </packing>
     </child>
   </object>
 </interface>
diff --git a/extensions/catalogs/data/ui/add-to-catalog.ui b/extensions/catalogs/data/ui/add-to-catalog.ui
index e93be842..01f68344 100644
--- a/extensions/catalogs/data/ui/add-to-catalog.ui
+++ b/extensions/catalogs/data/ui/add-to-catalog.ui
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.1 -->
+<!-- Generated with glade 3.22.2 -->
 <interface>
   <requires lib="gtk+" version="3.20"/>
   <object class="GtkBox" id="dialog_content">
@@ -114,21 +114,5 @@
         <property name="position">2</property>
       </packing>
     </child>
-    <child>
-      <object class="GtkCheckButton" id="keep_open_checkbutton">
-        <property name="label" translatable="yes">_Keep the dialog open</property>
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="receives_default">False</property>
-        <property name="halign">start</property>
-        <property name="use_underline">True</property>
-        <property name="draw_indicator">True</property>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="position">3</property>
-      </packing>
-    </child>
   </object>
 </interface>
diff --git a/extensions/catalogs/dlg-add-to-catalog.c b/extensions/catalogs/dlg-add-to-catalog.c
index e6a78f55..202ed2cb 100644
--- a/extensions/catalogs/dlg-add-to-catalog.c
+++ b/extensions/catalogs/dlg-add-to-catalog.c
@@ -85,6 +85,7 @@ typedef struct {
        GthBrowser    *browser;
        GtkBuilder    *builder;
        GtkWidget     *dialog;
+       GtkWidget     *keep_open_checkbutton;
        GtkWidget     *source_tree;
        GtkWidget     *info;
        AddData       *add_data;
@@ -260,7 +261,7 @@ static void
 add_button_clicked_cb (GtkWidget  *widget,
                       DialogData *data)
 {
-       add_selection_to_catalog (data, ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET 
("keep_open_checkbutton"))));
+       add_selection_to_catalog (data, ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(data->keep_open_checkbutton)));
 }
 
 
@@ -276,8 +277,8 @@ update_sensitivity (DialogData *data)
        items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view 
(data->browser)));
        can_add = (items != NULL) && (selected_catalog != NULL);
        gtk_dialog_set_response_sensitive (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, can_add);
-       gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (GET_WIDGET ("view_destination_checkbutton")), 
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_open_checkbutton"))));
-       gtk_widget_set_sensitive (GET_WIDGET ("view_destination_checkbutton"), ! gtk_toggle_button_get_active 
(GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_open_checkbutton"))));
+       gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (GET_WIDGET ("view_destination_checkbutton")), 
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->keep_open_checkbutton)));
+       gtk_widget_set_sensitive (GET_WIDGET ("view_destination_checkbutton"), ! gtk_toggle_button_get_active 
(GTK_TOGGLE_BUTTON (data->keep_open_checkbutton)));
 
        file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (data->browser)), 
items);
        gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (data->info), file_data_list);
@@ -659,6 +660,8 @@ static void
 keep_open_button_toggled_cb (GtkToggleButton *button,
                             DialogData      *data)
 {
+       gth_file_selection_info_set_visible (GTH_FILE_SELECTION_INFO (data->info),
+                                            gtk_toggle_button_get_active (button));
        update_sensitivity (data);
 }
 
@@ -669,7 +672,6 @@ dlg_add_to_catalog (GthBrowser *browser)
        DialogData       *data;
        GtkTreeSelection *selection;
        char             *last_catalog;
-       GtkWidget        *sep;
 
        if (gth_browser_get_dialog (browser, ADD_TO_CATALOG_DIALOG_NAME)) {
                gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, 
ADD_TO_CATALOG_DIALOG_NAME)));
@@ -697,24 +699,22 @@ dlg_add_to_catalog (GthBrowser *browser)
                            FALSE,
                            0);
 
-       sep = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
-       gtk_widget_show (sep);
-       gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))),
-                           sep,
-                           FALSE,
-                           FALSE,
-                           5);
-
        gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))),
                            GET_WIDGET ("dialog_content"),
-                           FALSE,
-                           FALSE,
+                           TRUE,
+                           TRUE,
                            0);
 
        gtk_dialog_add_buttons (GTK_DIALOG (data->dialog),
                                _GTK_LABEL_CLOSE, GTK_RESPONSE_CANCEL,
                                _("_Add"), GTK_RESPONSE_OK,
                                NULL);
+
+       data->keep_open_checkbutton = _gtk_toggle_image_button_new_for_header_bar ("lock-symbolic");
+       gtk_widget_set_tooltip_text (data->keep_open_checkbutton, _("Keep the dialog open"));
+       gtk_widget_show (data->keep_open_checkbutton);
+       _gtk_dialog_add_action_widget (GTK_DIALOG (data->dialog), data->keep_open_checkbutton);
+
        _gtk_dialog_add_class_to_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, 
GTK_STYLE_CLASS_SUGGESTED_ACTION);
 
        gth_browser_set_dialog (browser, ADD_TO_CATALOG_DIALOG_NAME, data->dialog);
@@ -760,7 +760,7 @@ dlg_add_to_catalog (GthBrowser *browser)
                          "clicked",
                          G_CALLBACK (new_library_button_clicked_cb),
                          data);
-       g_signal_connect (G_OBJECT (GET_WIDGET ("keep_open_checkbutton")),
+       g_signal_connect (data->keep_open_checkbutton,
                          "toggled",
                          G_CALLBACK (keep_open_button_toggled_cb),
                          data);
diff --git a/extensions/edit_metadata/dlg-edit-metadata.c b/extensions/edit_metadata/dlg-edit-metadata.c
index 93363a4f..6e00292b 100644
--- a/extensions/edit_metadata/dlg-edit-metadata.c
+++ b/extensions/edit_metadata/dlg-edit-metadata.c
@@ -33,6 +33,8 @@ typedef struct {
        int         ref;
        GthBrowser *browser;
        GtkWidget  *dialog;
+       GtkWidget  *keep_open_checkbutton;
+       GtkWidget  *info;
        char       *dialog_name;
        GList      *file_list; /* GthFileData list */
        GList      *parents;
@@ -165,7 +167,7 @@ edit_metadata_dialog__response_cb (GtkDialog *dialog,
        if (data->file_list == NULL)
                return;
 
-       data->close_dialog = ! gth_edit_metadata_dialog_get_keep_open (GTH_EDIT_METADATA_DIALOG 
(data->dialog));
+       data->close_dialog = ! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->keep_open_checkbutton));
 
        /* get the parents list */
 
@@ -239,6 +241,7 @@ loader_completed_cb (GthTask  *task,
        _g_object_list_unref (data->file_list);
        data->file_list = _g_object_list_ref (gth_load_file_data_task_get_result (GTH_LOAD_FILE_DATA_TASK 
(task)));
 
+       gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (data->info), data->file_list);
        gth_edit_metadata_dialog_set_file_list (GTH_EDIT_METADATA_DIALOG (data->dialog), data->file_list);
 
        gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser));
@@ -299,6 +302,15 @@ file_selection_changed_cb (GthFileSelection *self,
 }
 
 
+static void
+keep_open_button_toggled_cb (GtkToggleButton *button,
+                            DialogData      *data)
+{
+       gth_file_selection_info_set_visible (GTH_FILE_SELECTION_INFO (data->info),
+                                            gtk_toggle_button_get_active (button));
+}
+
+
 void
 dlg_edit_metadata (GthBrowser *browser,
                   GType       dialog_type,
@@ -322,11 +334,20 @@ dlg_edit_metadata (GthBrowser *browser,
        data->dialog_name = g_strdup (dialog_name);
        data->never_shown = TRUE;
 
+       data->info = gth_file_selection_info_new ();
+       gtk_widget_show (data->info);
+       gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))), data->info, 
FALSE, FALSE, 0);
+
        gtk_dialog_add_buttons (GTK_DIALOG (data->dialog),
                                _GTK_LABEL_CLOSE, GTK_RESPONSE_CANCEL,
                                _GTK_LABEL_SAVE, GTK_RESPONSE_OK,
                                NULL);
 
+       data->keep_open_checkbutton = _gtk_toggle_image_button_new_for_header_bar ("lock-symbolic");
+       gtk_widget_set_tooltip_text (data->keep_open_checkbutton, _("Keep the dialog open"));
+       gtk_widget_show (data->keep_open_checkbutton);
+       _gtk_dialog_add_action_widget (GTK_DIALOG (data->dialog), data->keep_open_checkbutton);
+
        _gtk_dialog_add_class_to_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, 
GTK_STYLE_CLASS_SUGGESTED_ACTION);
        gth_browser_set_dialog (browser, data->dialog_name, data->dialog);
 
@@ -338,6 +359,10 @@ dlg_edit_metadata (GthBrowser *browser,
                          "response",
                          G_CALLBACK (edit_metadata_dialog__response_cb),
                          data);
+       g_signal_connect (data->keep_open_checkbutton,
+                         "toggled",
+                         G_CALLBACK (keep_open_button_toggled_cb),
+                         data);
        data->file_selection_changed_event =
                        g_signal_connect (gth_browser_get_file_list_view (data->browser),
                                          "file-selection-changed",
diff --git a/extensions/edit_metadata/gth-edit-comment-dialog.c 
b/extensions/edit_metadata/gth-edit-comment-dialog.c
index 3bed6c01..1459d805 100644
--- a/extensions/edit_metadata/gth-edit-comment-dialog.c
+++ b/extensions/edit_metadata/gth-edit-comment-dialog.c
@@ -28,8 +28,6 @@
 struct _GthEditCommentDialogPrivate {
        GtkWidget *notebook;
        GtkWidget *save_changed_checkbutton;
-       GtkWidget *keep_open_check_button;
-       GtkWidget *info;
 };
 
 
@@ -54,8 +52,6 @@ gth_edit_comment_dialog_set_file_list (GthEditMetadataDialog *base,
        GList                *pages;
        GList                *scan;
 
-       gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (self->priv->info), file_list);
-
        /* update the widgets */
 
        n_files = g_list_length (file_list);
@@ -101,20 +97,11 @@ gth_edit_comment_dialog_update_info (GthEditMetadataDialog *base,
 }
 
 
-static gboolean
-gth_edit_comment_dialog_get_keep_open (GthEditMetadataDialog *base)
-{
-       GthEditCommentDialog *self = GTH_EDIT_COMMENT_DIALOG (base);
-       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->priv->keep_open_check_button));
-}
-
-
 static void
 gth_edit_comment_dialog_gth_edit_metadata_dialog_interface_init (GthEditMetadataDialogInterface *iface)
 {
        iface->set_file_list = gth_edit_comment_dialog_set_file_list;
        iface->update_info = gth_edit_comment_dialog_update_info;
-       iface->get_keep_open = gth_edit_comment_dialog_get_keep_open;
 }
 
 
@@ -142,11 +129,7 @@ gth_edit_comment_dialog_init (GthEditCommentDialog *self)
        vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
        gtk_container_set_border_width (GTK_CONTAINER (vbox), 0);
        gtk_widget_show (vbox);
-       gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), vbox, TRUE, TRUE, 0);
-
-       self->priv->info = gth_file_selection_info_new ();
-       gtk_widget_show (self->priv->info);
-       gtk_box_pack_start (GTK_BOX (vbox), self->priv->info, FALSE, FALSE, 0);
+       gtk_box_pack_end (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), vbox, TRUE, TRUE, 0);
 
        self->priv->notebook = gtk_notebook_new ();
        gtk_widget_show (self->priv->notebook);
@@ -156,10 +139,6 @@ gth_edit_comment_dialog_init (GthEditCommentDialog *self)
        gtk_widget_show (self->priv->save_changed_checkbutton);
        gtk_box_pack_start (GTK_BOX (vbox), self->priv->save_changed_checkbutton, FALSE, FALSE, 0);
 
-       self->priv->keep_open_check_button = gtk_check_button_new_with_mnemonic (_("_Keep the dialog open"));
-       gtk_widget_show (self->priv->keep_open_check_button);
-       gtk_box_pack_start (GTK_BOX (vbox), self->priv->keep_open_check_button, FALSE, FALSE, 0);
-
        pages = gth_main_get_type_set ("edit-comment-dialog-page");
        if (pages == NULL)
                return;
diff --git a/extensions/edit_metadata/gth-edit-metadata-dialog.c 
b/extensions/edit_metadata/gth-edit-metadata-dialog.c
index c5673639..c2319234 100644
--- a/extensions/edit_metadata/gth-edit-metadata-dialog.c
+++ b/extensions/edit_metadata/gth-edit-metadata-dialog.c
@@ -48,9 +48,3 @@ gth_edit_metadata_dialog_update_info (GthEditMetadataDialog *self,
        GTH_EDIT_METADATA_DIALOG_GET_INTERFACE (self)->update_info (self, file_list);
 }
 
-
-gboolean
-gth_edit_metadata_dialog_get_keep_open (GthEditMetadataDialog *self)
-{
-       return GTH_EDIT_METADATA_DIALOG_GET_INTERFACE (self)->get_keep_open (self);
-}
diff --git a/extensions/edit_metadata/gth-edit-metadata-dialog.h 
b/extensions/edit_metadata/gth-edit-metadata-dialog.h
index bef2464c..0615c9c5 100644
--- a/extensions/edit_metadata/gth-edit-metadata-dialog.h
+++ b/extensions/edit_metadata/gth-edit-metadata-dialog.h
@@ -41,7 +41,6 @@ struct _GthEditMetadataDialogInterface {
                                                 GList                 *file_list /* GthFileData list */);
        void            (*update_info)          (GthEditMetadataDialog *dialog,
                                                 GList                 *file_list /* GthFileData list */);
-       gboolean        (*get_keep_open)        (GthEditMetadataDialog *dialog);
 };
 
 /* GthEditMetadataDialog */
@@ -51,7 +50,6 @@ void           gth_edit_metadata_dialog_set_file_list  (GthEditMetadataDialog *d
                                                        GList                 *file_list /* GthFileData list 
*/);
 void           gth_edit_metadata_dialog_update_info    (GthEditMetadataDialog *dialog,
                                                        GList                 *file_list /* GthFileData list 
*/);
-gboolean       gth_edit_metadata_dialog_get_keep_open  (GthEditMetadataDialog *dialog);
 
 G_END_DECLS
 
diff --git a/extensions/edit_metadata/gth-edit-tags-dialog.c b/extensions/edit_metadata/gth-edit-tags-dialog.c
index 10521356..7d28096f 100644
--- a/extensions/edit_metadata/gth-edit-tags-dialog.c
+++ b/extensions/edit_metadata/gth-edit-tags-dialog.c
@@ -32,8 +32,6 @@
 struct _GthEditTagsDialogPrivate {
        GtkBuilder *builder;
        GtkWidget  *tags_entry;
-       GtkWidget  *keep_open_check_button;
-       GtkWidget  *info;
 };
 
 
@@ -70,8 +68,6 @@ gth_edit_tags_dialog_set_file_list (GthEditMetadataDialog *base,
        GList             *common_tags_list;
        GList             *no_common_tags_list;
 
-       gth_file_selection_info_set_file_list (GTH_FILE_SELECTION_INFO (self->priv->info), file_list);
-
        /* update the tag entry */
 
        utils_get_common_tags (file_list, &common_tags, &no_common_tags);
@@ -147,20 +143,11 @@ gth_edit_tags_dialog_update_info (GthEditMetadataDialog *base,
 }
 
 
-static gboolean
-gth_edit_tags_dialog_get_keep_open (GthEditMetadataDialog *base)
-{
-       GthEditTagsDialog *self = GTH_EDIT_TAGS_DIALOG (base);
-       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->priv->keep_open_check_button));
-}
-
-
 static void
 gth_edit_tags_dialog_gth_edit_metadata_dialog_interface_init (GthEditMetadataDialogInterface *iface)
 {
        iface->set_file_list = gth_edit_tags_dialog_set_file_list;
        iface->update_info = gth_edit_tags_dialog_update_info;
-       iface->get_keep_open = gth_edit_tags_dialog_get_keep_open;
 }
 
 
@@ -177,9 +164,6 @@ gth_edit_tags_dialog_class_init (GthEditTagsDialogClass *klass)
 static void
 gth_edit_tags_dialog_init (GthEditTagsDialog *self)
 {
-       GtkWidget *box;
-       GtkWidget *sep;
-
        self->priv = gth_edit_tags_dialog_get_instance_private (self);
        self->priv->builder = _gtk_builder_new_from_file ("tag-chooser.ui", "edit_metadata");
 
@@ -195,22 +179,5 @@ gth_edit_tags_dialog_init (GthEditTagsDialog *self)
        gtk_widget_show (self->priv->tags_entry);
        gtk_box_pack_start (GTK_BOX (GET_WIDGET ("tag_entry_box")), self->priv->tags_entry, TRUE, TRUE, 0);
 
-       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-
-       self->priv->info = gth_file_selection_info_new ();
-       gtk_widget_show (self->priv->info);
-       gtk_box_pack_start (GTK_BOX (box), self->priv->info, FALSE, FALSE, 0);
-
-       sep = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
-       gtk_widget_show (sep);
-       gtk_box_pack_start (GTK_BOX (box), sep, FALSE, FALSE, 0);
-
-       gtk_box_pack_start (GTK_BOX (box), GET_WIDGET ("content"), TRUE, TRUE, 0);
-
-       self->priv->keep_open_check_button = gtk_check_button_new_with_mnemonic (_("_Keep the dialog open"));
-       gtk_widget_show (self->priv->keep_open_check_button);
-       gtk_box_pack_start (GTK_BOX (box), self->priv->keep_open_check_button, FALSE, FALSE, 0);
-
-       gtk_widget_show (box);
-       gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), box, TRUE, TRUE, 0);
+       gtk_box_pack_end (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), GET_WIDGET ("content"), 
TRUE, TRUE, 0);
 }
diff --git a/gthumb/gth-file-selection-info.c b/gthumb/gth-file-selection-info.c
index 21033d73..bf904ad4 100644
--- a/gthumb/gth-file-selection-info.c
+++ b/gthumb/gth-file-selection-info.c
@@ -144,3 +144,11 @@ gth_file_selection_info_set_file_list (GthFileSelectionInfo        *self,
 
        g_free (title);
 }
+
+
+void
+gth_file_selection_info_set_visible (GthFileSelectionInfo *self,
+                                    gboolean              visible)
+{
+       gtk_revealer_set_reveal_child (GTK_REVEALER (GET_WIDGET ("content")), visible);
+}
diff --git a/gthumb/gth-file-selection-info.h b/gthumb/gth-file-selection-info.h
index 457760ba..25e6489f 100644
--- a/gthumb/gth-file-selection-info.h
+++ b/gthumb/gth-file-selection-info.h
@@ -51,6 +51,8 @@ GType         gth_file_selection_info_get_type        (void);
 GtkWidget *    gth_file_selection_info_new             (void);
 void           gth_file_selection_info_set_file_list   (GthFileSelectionInfo   *self,
                                                         GList                  *file_list);
+void           gth_file_selection_info_set_visible     (GthFileSelectionInfo   *self,
+                                                        gboolean                visible);
 
 G_END_DECLS
 
diff --git a/gthumb/gtk-utils.c b/gthumb/gtk-utils.c
index 70511a87..16ff339b 100644
--- a/gthumb/gtk-utils.c
+++ b/gthumb/gtk-utils.c
@@ -284,6 +284,24 @@ _gtk_dialog_add_class_to_response (GtkDialog    *dialog,
 }
 
 
+void
+_gtk_dialog_add_action_widget (GtkDialog *dialog,
+                              GtkWidget *button)
+{
+       if (gtk_dialog_get_header_bar (dialog)) {
+               GtkWidget *headerbar = gtk_dialog_get_header_bar (dialog);
+
+               gtk_container_add (GTK_CONTAINER (headerbar), button);
+               gtk_container_child_set (GTK_CONTAINER (headerbar),
+                                        button,
+                                        "pack-type", GTK_PACK_END,
+                                        NULL);
+       }
+       else
+               gtk_container_add (GTK_CONTAINER (gtk_dialog_get_action_area (dialog)), button);
+}
+
+
 GdkPixbuf *
 _g_icon_get_pixbuf (GIcon        *icon,
                    int           icon_size,
diff --git a/gthumb/gtk-utils.h b/gthumb/gtk-utils.h
index dc67942f..a23b3d41 100644
--- a/gthumb/gtk-utils.h
+++ b/gthumb/gtk-utils.h
@@ -108,6 +108,8 @@ void            _gtk_dialog_add_to_window_group            (GtkDialog        *di
 void            _gtk_dialog_add_class_to_response          (GtkDialog        *dialog,
                                                            int               respose_id,
                                                            const char       *class_name);
+void           _gtk_dialog_add_action_widget              (GtkDialog        *dialog,
+                                                           GtkWidget        *button);
 GdkPixbuf *     _g_icon_get_pixbuf                         (GIcon            *icon,
                                                            int               icon_size,
                                                            GtkIconTheme     *icon_theme);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]