From 860ed6142e5f6a35495d4467b1817300e9fb1b54 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
Date: Tue, 31 Mar 2020 19:20:56 +0200
Subject: [PATCH] applet: Replace menu by a menu button

---
 data/ui/ppm.ui                | 142 ++++++++++++++--------------------
 src/prepaid-manager-applet.py |  11 ++-
 2 files changed, 66 insertions(+), 87 deletions(-)

diff --git a/data/ui/ppm.ui b/data/ui/ppm.ui
index 2bd6054..33f1238 100644
--- a/data/ui/ppm.ui
+++ b/data/ui/ppm.ui
@@ -1,80 +1,57 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.2 -->
 <interface>
   <requires lib="gtk+" version="3.16"/>
+  <object class="GtkPopoverMenu" id="menu_main">
+    <child>
+      <object class="GtkBox">
+        <property name="visible">True</property>
+        <property name="margin">10</property>
+        <child>
+          <object class="GtkModelButton">
+            <property name="visible">True</property>
+            <property name="action-name">win.about</property>
+            <property name="text" translatable="yes">About PPM</property>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
   <template class="PPMDialog" parent="GtkApplicationWindow">
     <property name="can_focus">False</property>
+    <property name="show_menubar">False</property>
     <signal name="delete-event" handler="on_delete" swapped="no"/>
-    <child>
-      <object class="GtkBox" id="vbox_main">
+    <child type="titlebar">
+      <object class="GtkHeaderBar">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
+        <property name="title" translatable="yes">Prepaid Manager</property>
+        <property name="show_close_button">True</property>
         <child>
-          <object class="GtkMenuBar" id="menubar1">
+          <object class="GtkMenuButton">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkMenuItem" id="menu_item_file">
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_File</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu_file">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkImageMenuItem" id="menuitem_quit">
-                        <property name="label">gtk-quit</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_close_clicked" swapped="no"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="popover">menu_main</property>
             <child>
-              <object class="GtkMenuItem" id="menu_item_help">
-                <property name="use_action_appearance">False</property>
+              <object class="GtkImage">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_Help</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu_help">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkImageMenuItem" id="imagemenuitem_about">
-                        <property name="label">gtk-about</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_about_activated" swapped="no"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
+                <property name="icon_name">open-menu-symbolic</property>
               </object>
             </child>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">0</property>
+            <property name="pack_type">end</property>
           </packing>
         </child>
-        <child>
-          <placeholder/>
-        </child>
+      </object>
+    </child>
+    <child>
+      <object class="GtkBox" id="vbox_main">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
         <child>
           <object class="GtkNotebook" id="notebook1">
             <property name="visible">True</property>
@@ -87,6 +64,9 @@
                 <property name="n_columns">3</property>
                 <property name="column_spacing">4</property>
                 <property name="row_spacing">4</property>
+                <child>
+                  <placeholder/>
+                </child>
                 <child>
                   <object class="GtkLabel" id="label_provider">
                     <property name="visible">True</property>
@@ -94,8 +74,8 @@
                     <property name="label" translatable="yes">Provider:</property>
                   </object>
                   <packing>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
+                    <property name="x_options"/>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -112,7 +92,7 @@
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -127,14 +107,13 @@
                     <property name="has_tooltip">True</property>
                     <property name="tooltip_markup" translatable="yes">Change provider</property>
                     <property name="tooltip_text" translatable="yes">Change provider</property>
-                    <property name="use_action_appearance">False</property>
                     <signal name="clicked" handler="on_provider_change_clicked" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">2</property>
                     <property name="right_attach">3</property>
                     <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -147,8 +126,8 @@
                   <packing>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
+                    <property name="x_options"/>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -163,7 +142,7 @@
                     <property name="right_attach">2</property>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -183,7 +162,7 @@
                     <property name="right_attach">2</property>
                     <property name="top_attach">2</property>
                     <property name="bottom_attach">3</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -198,7 +177,6 @@
                     <property name="has_tooltip">True</property>
                     <property name="tooltip_markup" translatable="yes">Check your prepaid cards balance.</property>
                     <property name="tooltip_text" translatable="yes">Check your prepaid cards balance.</property>
-                    <property name="use_action_appearance">False</property>
                     <signal name="clicked" handler="on_balance_info_renew_clicked" swapped="no"/>
                   </object>
                   <packing>
@@ -207,14 +185,11 @@
                     <property name="top_attach">2</property>
                     <property name="bottom_attach">3</property>
                     <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
                 </child>
-                <child>
-                  <placeholder/>
-                </child>
               </object>
             </child>
             <child type="tab">
@@ -242,8 +217,8 @@
                     <property name="label" translatable="yes">Provider:</property>
                   </object>
                   <packing>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
+                    <property name="x_options"/>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -260,7 +235,7 @@
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -272,14 +247,13 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
-                    <property name="use_action_appearance">False</property>
                     <signal name="clicked" handler="on_provider_change_clicked" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">2</property>
                     <property name="right_attach">3</property>
                     <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -295,7 +269,6 @@
                     <property name="has_tooltip">True</property>
                     <property name="tooltip_markup" translatable="yes">Top up your prepaid accounts balance</property>
                     <property name="tooltip_text" translatable="yes">Top up your prepaid accounts balance</property>
-                    <property name="use_action_appearance">False</property>
                     <signal name="clicked" handler="on_balance_top_up_clicked" swapped="no"/>
                   </object>
                   <packing>
@@ -304,7 +277,7 @@
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
                     <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -317,7 +290,6 @@
                     <property name="tooltip_markup" translatable="yes">Enter code to top up credit to your prepaid card.</property>
                     <property name="tooltip_text" translatable="yes">Enter code to top up credit to your prepaid card.</property>
                     <property name="invisible_char">●</property>
-                    <property name="invisible_char_set">True</property>
                     <property name="placeholder_text">01234567890123</property>
                     <signal name="changed" handler="on_entry_code_insert" swapped="no"/>
                   </object>
@@ -326,7 +298,7 @@
                     <property name="right_attach">2</property>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -340,8 +312,8 @@
                   <packing>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
-                    <property name="x_options"></property>
-                    <property name="y_options"></property>
+                    <property name="x_options"/>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -355,7 +327,7 @@
                     <property name="right_attach">3</property>
                     <property name="top_attach">2</property>
                     <property name="bottom_attach">3</property>
-                    <property name="y_options"></property>
+                    <property name="y_options"/>
                     <property name="x_padding">5</property>
                     <property name="y_padding">5</property>
                   </packing>
@@ -379,7 +351,7 @@
             </child>
           </object>
           <packing>
-            <property name="expand">False</property>
+            <property name="expand">True</property>
             <property name="fill">True</property>
             <property name="pack_type">end</property>
             <property name="position">2</property>
diff --git a/src/prepaid-manager-applet.py b/src/prepaid-manager-applet.py
index eec3966..1c0b79c 100755
--- a/src/prepaid-manager-applet.py
+++ b/src/prepaid-manager-applet.py
@@ -349,6 +349,13 @@ class PPMDialog(Gtk.ApplicationWindow):
         self._init_infobars()
         self._init_subdialogs()
 
+    def _add_actions(self):
+        action = Gio.SimpleAction(name='about')
+        action.set_enabled(True)
+        action.connect('activate', self.on_about_activated, None)
+
+        self.add_action(action)
+
     def __init__(self, controller):
         Gtk.ApplicationWindow.__init__(self)
         self.code_len = 0
@@ -356,6 +363,7 @@ class PPMDialog(Gtk.ApplicationWindow):
         # Register ourself to the controller
         self.controller.view = self
 
+        self._add_actions()
         self._setup_ui()
         self.show()
 
@@ -385,8 +393,7 @@ class PPMDialog(Gtk.ApplicationWindow):
         self.clear_top_up_information()
         self.controller.top_up_balance()
 
-    @Gtk.Template.Callback("on_about_activated")
-    def on_about_activated(self, dummy):
+    def on_about_activated(self, *argv):
         self.about_dialog.run()
         self.about_dialog.hide()
 
-- 
GitLab