From 5e018f61477e2e1c5bfd70b3b6971ae622b1da88 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Br=C3=B6tzmann?= <mailtrash@posteo.de>
Date: Sun, 17 Nov 2019 15:34:49 +0100
Subject: [PATCH] Themes: Rearrange dialog buttons, close popover after adding
 option

---
 gajim/data/gui/themes_window.ui | 160 +++++++++++++++++++-------------
 gajim/gtk/themes.py             |   5 +-
 2 files changed, 99 insertions(+), 66 deletions(-)

diff --git a/gajim/data/gui/themes_window.ui b/gajim/data/gui/themes_window.ui
index 13d7ba832d..bca454d263 100644
--- a/gajim/data/gui/themes_window.ui
+++ b/gajim/data/gui/themes_window.ui
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- Generated with glade 3.22.1 -->
 <interface>
-  <requires lib="gtk+" version="3.18"/>
-  <object class="GtkPopover" id="popover1">
+  <requires lib="gtk+" version="3.20"/>
+  <object class="GtkPopover" id="option_popover">
     <property name="can_focus">False</property>
     <child>
       <object class="GtkScrolledWindow">
@@ -32,6 +32,27 @@
       </object>
     </child>
   </object>
+  <object class="GtkBox" id="placeholder">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkLabel">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Add a setting you would like to change</property>
+        <style>
+          <class name="bold"/>
+          <class name="dim-label"/>
+        </style>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+  </object>
   <object class="GtkListStore" id="theme_store">
     <columns>
       <!-- column-name name -->
@@ -41,7 +62,6 @@
   <object class="GtkGrid" id="theme_grid">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="row_spacing">6</property>
     <property name="column_spacing">6</property>
     <child>
       <object class="GtkScrolledWindow">
@@ -82,62 +102,6 @@
         <property name="top_attach">0</property>
       </packing>
     </child>
-    <child>
-      <object class="GtkBox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <child>
-          <object class="GtkButton">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <signal name="clicked" handler="_on_add_new_theme" swapped="no"/>
-            <child>
-              <object class="GtkImage">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="icon_name">list-add-symbolic</property>
-                <property name="icon_size">1</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkButton" id="remove_theme_button">
-            <property name="visible">True</property>
-            <property name="sensitive">False</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <signal name="clicked" handler="_on_remove_theme" swapped="no"/>
-            <child>
-              <object class="GtkImage">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="icon_name">list-remove-symbolic</property>
-                <property name="icon_size">1</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <style>
-          <class name="linked"/>
-        </style>
-      </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">1</property>
-      </packing>
-    </child>
     <child>
       <object class="GtkScrolledWindow">
         <property name="visible">True</property>
@@ -174,18 +138,44 @@
       <object class="GtkBox">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="halign">center</property>
+        <property name="valign">center</property>
         <child>
           <object class="GtkMenuButton" id="add_option_button">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="receives_default">True</property>
-            <property name="popover">popover1</property>
+            <property name="popover">option_popover</property>
             <child>
-              <object class="GtkImage">
+              <object class="GtkBox">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="icon_name">list-add-symbolic</property>
-                <property name="icon_size">1</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkImage">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="icon_name">list-add-symbolic</property>
+                    <property name="icon_size">1</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Add Setting</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
               </object>
             </child>
           </object>
@@ -196,12 +186,52 @@
             <property name="position">0</property>
           </packing>
         </child>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkToolbar">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="icon_size">2</property>
+        <child>
+          <object class="GtkToolButton" id="add_theme_button">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="tooltip_text" translatable="yes">Add new Theme</property>
+            <property name="use_underline">True</property>
+            <property name="icon_name">list-add-symbolic</property>
+            <signal name="clicked" handler="_on_add_new_theme" swapped="no"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolButton" id="remove_theme_button">
+            <property name="visible">True</property>
+            <property name="sensitive">False</property>
+            <property name="can_focus">False</property>
+            <property name="tooltip_text" translatable="yes">Remove Theme</property>
+            <property name="use_underline">True</property>
+            <property name="icon_name">list-remove-symbolic</property>
+            <signal name="clicked" handler="_on_remove_theme" swapped="no"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
         <style>
-          <class name="linked"/>
+          <class name="inline-toolbar"/>
         </style>
       </object>
       <packing>
-        <property name="left_attach">1</property>
+        <property name="left_attach">0</property>
         <property name="top_attach">1</property>
       </packing>
     </child>
diff --git a/gajim/gtk/themes.py b/gajim/gtk/themes.py
index bcbc3cc0da..01896d3dc3 100644
--- a/gajim/gtk/themes.py
+++ b/gajim/gtk/themes.py
@@ -185,7 +185,7 @@ def __init__(self, transient):
 
         widgets = ['option_listbox', 'remove_theme_button', 'theme_store',
                    'theme_treeview', 'choose_option_listbox',
-                   'add_option_button']
+                   'add_option_button', 'placeholder', 'option_popover']
         for widget in widgets:
             setattr(self, '_%s' % widget, self.builder.get_object(widget))
 
@@ -193,6 +193,7 @@ def __init__(self, transient):
         self._add_option_button.set_sensitive(False)
 
         self._get_themes()
+        self._option_listbox.set_placeholder(self._placeholder)
 
         self.builder.connect_signals(self)
         self.connect('destroy', self._on_destroy)
@@ -264,6 +265,7 @@ def _add_option(self, listbox, row):
                 return
         row = Option(row.option, None)
         self._option_listbox.add(row)
+        self._option_popover.popdown()
 
     def _clear_options(self):
         self._option_listbox.foreach(self._remove_option)
@@ -367,6 +369,7 @@ def __init__(self, option, value):
 
         remove_button = Gtk.Button.new_from_icon_name(
             'list-remove-symbolic', Gtk.IconSize.MENU)
+        remove_button.set_tooltip_text(_('Remove Setting'))
         remove_button.get_style_context().add_class('theme_remove_button')
         remove_button.connect('clicked', self._on_remove)
         self._box.add(remove_button)
-- 
GitLab