[gedit/wip/merge-encoding-settings] EncodingsDialog: headerbar with Reset and Close buttons



commit c9574b8f088edb0105f31c4ae123f8d03813a4d6
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun Apr 5 11:39:01 2015 +0200

    EncodingsDialog: headerbar with Reset and Close buttons
    
    It's better to have the Reset button as a text button, not with an icon.
    With the destructive style class, so the button is red.

 gedit/gedit-encodings-dialog.c               |   41 ++++++++-------------
 gedit/resources/ui/gedit-encodings-dialog.ui |   51 +++++++++-----------------
 2 files changed, 33 insertions(+), 59 deletions(-)
---
diff --git a/gedit/gedit-encodings-dialog.c b/gedit/gedit-encodings-dialog.c
index c1aba76..dbbcdb7 100644
--- a/gedit/gedit-encodings-dialog.c
+++ b/gedit/gedit-encodings-dialog.c
@@ -35,6 +35,8 @@ struct _GeditEncodingsDialogPrivate
 {
        GSettings *enc_settings;
 
+       GtkWidget *reset_button;
+
        /* Available encodings */
        GtkListStore *liststore_available;
        GtkTreeModelSort *sort_available;
@@ -47,7 +49,6 @@ struct _GeditEncodingsDialogPrivate
        GtkWidget *remove_button;
        GtkWidget *up_button;
        GtkWidget *down_button;
-       GtkWidget *reset_button;
 
        guint modified : 1;
 };
@@ -84,7 +85,6 @@ gedit_encodings_dialog_dispose (GObject *object)
        g_clear_object (&priv->remove_button);
        g_clear_object (&priv->up_button);
        g_clear_object (&priv->down_button);
-       g_clear_object (&priv->reset_button);
 
        G_OBJECT_CLASS (gedit_encodings_dialog_parent_class)->dispose (object);
 }
@@ -180,6 +180,7 @@ gedit_encodings_dialog_class_init (GeditEncodingsDialogClass *klass)
        gtk_widget_class_bind_template_child_private (widget_class, GeditEncodingsDialog, sort_available);
        gtk_widget_class_bind_template_child_private (widget_class, GeditEncodingsDialog, treeview_available);
        gtk_widget_class_bind_template_child_private (widget_class, GeditEncodingsDialog, treeview_chosen);
+       gtk_widget_class_bind_template_child_private (widget_class, GeditEncodingsDialog, reset_button);
        gtk_widget_class_bind_template_child_full (widget_class, "scrolledwindow_available", FALSE, 0);
        gtk_widget_class_bind_template_child_full (widget_class, "scrolledwindow_chosen", FALSE, 0);
        gtk_widget_class_bind_template_child_full (widget_class, "toolbar_available", FALSE, 0);
@@ -775,32 +776,13 @@ init_toolbar_chosen (GeditEncodingsDialog *dialog)
                                 dialog,
                                 0);
 
-       /* Reset button */
-       dialog->priv->reset_button = GTK_WIDGET (gtk_tool_button_new (NULL, NULL));
-       g_object_ref_sink (dialog->priv->reset_button);
-
-       gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (dialog->priv->reset_button),
-                                      "edit-clear-all-symbolic");
-
-       gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (dialog->priv->reset_button),
-                                       _("Reset"));
-
-       gtk_toolbar_insert (toolbar,
-                           GTK_TOOL_ITEM (dialog->priv->reset_button),
-                           -1);
-
-       g_signal_connect_object (dialog->priv->reset_button,
-                                "clicked",
-                                G_CALLBACK (reset_button_clicked_cb),
-                                dialog,
-                                0);
-
        gtk_widget_show_all (GTK_WIDGET (toolbar));
 }
 
 static void
 gedit_encodings_dialog_init (GeditEncodingsDialog *dialog)
 {
+       GtkStyleContext *context;
        GtkTreeSelection *selection;
 
        dialog->priv = gedit_encodings_dialog_get_instance_private (dialog);
@@ -809,12 +791,19 @@ gedit_encodings_dialog_init (GeditEncodingsDialog *dialog)
 
        gtk_widget_init_template (GTK_WIDGET (dialog));
 
-       gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
-
        init_toolbar_available (dialog);
        init_toolbar_chosen (dialog);
        init_liststores (dialog);
 
+       /* Reset button */
+       context = gtk_widget_get_style_context (dialog->priv->reset_button);
+       gtk_style_context_add_class (context, GTK_STYLE_CLASS_DESTRUCTIVE_ACTION);
+
+       g_signal_connect (dialog->priv->reset_button,
+                         "clicked",
+                         G_CALLBACK (reset_button_clicked_cb),
+                         dialog);
+
        /* Available encodings */
        gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (dialog->priv->sort_available),
                                              COLUMN_NAME,
@@ -843,7 +832,9 @@ gedit_encodings_dialog_init (GeditEncodingsDialog *dialog)
 GtkWidget *
 gedit_encodings_dialog_new (void)
 {
-       return g_object_new (GEDIT_TYPE_ENCODINGS_DIALOG, NULL);
+       return g_object_new (GEDIT_TYPE_ENCODINGS_DIALOG,
+                            "use-header-bar", TRUE,
+                            NULL);
 }
 
 /* ex:set ts=8 noet: */
diff --git a/gedit/resources/ui/gedit-encodings-dialog.ui b/gedit/resources/ui/gedit-encodings-dialog.ui
index 2293908..1d8ea2a 100644
--- a/gedit/resources/ui/gedit-encodings-dialog.ui
+++ b/gedit/resources/ui/gedit-encodings-dialog.ui
@@ -30,45 +30,31 @@
     <property name="height_request">400</property>
     <property name="can_focus">False</property>
     <property name="border_width">5</property>
-    <property name="title" translatable="yes">Character encodings</property>
     <property name="modal">True</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="dialog-vbox3">
+    <child type="titlebar">
+      <object class="GtkHeaderBar" id="header_bar">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area3">
+        <property name="has_subtitle">False</property>
+        <property name="show_close_button">True</property>
+        <property name="title" translatable="yes">Character Encodings</property>
+        <child>
+          <object class="GtkButton" id="reset_button">
+            <property name="label" translatable="yes">_Reset</property>
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="close_button">
-                <property name="label" translatable="yes">_Close</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
+            <property name="use_underline">True</property>
           </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
         </child>
+      </object>
+    </child>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
         <child>
           <object class="GtkGrid" id="encodings_dialog_contents">
             <property name="visible">True</property>
@@ -274,8 +260,5 @@
         </child>
       </object>
     </child>
-    <action-widgets>
-      <action-widget response="-7">close_button</action-widget>
-    </action-widgets>
   </template>
 </interface>


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