[meld/ui-next] meldwindow: Dynamically pack DirDiff view actions into the headerbar



commit 93a0d5e9ca8986591127293f3302484cc8847f68
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Fri Mar 15 07:24:37 2019 +1000

    meldwindow: Dynamically pack DirDiff view actions into the headerbar
    
    The plan is to do this for all views, to avoid double (well... triple)
    toolbars.

 meld/dirdiff.py                      |  4 ++
 meld/meldwindow.py                   |  5 +++
 meld/resources/meld.gresource.xml    |  1 +
 meld/resources/ui/appwindow.ui       |  8 ++++
 meld/resources/ui/dirdiff-actions.ui | 84 ++++++++++++++++++++++++++++++++++++
 meld/resources/ui/dirdiff.ui         | 77 ---------------------------------
 6 files changed, 102 insertions(+), 77 deletions(-)
---
diff --git a/meld/dirdiff.py b/meld/dirdiff.py
index 5d5ef859..c34978eb 100644
--- a/meld/dirdiff.py
+++ b/meld/dirdiff.py
@@ -449,6 +449,10 @@ class DirDiff(Gtk.VBox, tree.TreeviewCommon, MeldDoc):
         self.popup_menu = Gtk.Menu.new_from_model(context_menu)
         self.popup_menu.attach_to_widget(self)
 
+        builder = Gtk.Builder.new_from_resource(
+            '/org/gnome/meld/ui/dirdiff-actions.ui')
+        self.toolbar_actions = builder.get_object('view-toolbar')
+
         self.name_filters = []
         self.text_filters = []
         self.create_name_filters()
diff --git a/meld/meldwindow.py b/meld/meldwindow.py
index b8157a60..5ebb3394 100644
--- a/meld/meldwindow.py
+++ b/meld/meldwindow.py
@@ -55,6 +55,7 @@ class MeldWindow(Gtk.ApplicationWindow):
     notebook = Template.Child("notebook")
     spinner = Template.Child("spinner")
     vc_filter_button = Template.Child()
+    view_toolbar = Template.Child()
 
     def __init__(self):
         super().__init__()
@@ -213,6 +214,10 @@ class MeldWindow(Gtk.ApplicationWindow):
         if hasattr(newdoc, 'scheduler'):
             self.scheduler.add_task(newdoc.scheduler)
 
+        self.view_toolbar.foreach(self.view_toolbar.remove)
+        if hasattr(newdoc, 'toolbar_actions'):
+            self.view_toolbar.add(newdoc.toolbar_actions)
+
     @Template.Callback()
     def after_switch_page(self, notebook, page, which):
         newdoc = notebook.get_nth_page(which)
diff --git a/meld/resources/meld.gresource.xml b/meld/resources/meld.gresource.xml
index b993a442..2ac0a9ad 100644
--- a/meld/resources/meld.gresource.xml
+++ b/meld/resources/meld.gresource.xml
@@ -12,6 +12,7 @@
     <file>ui/column-list.ui</file>
     <file>ui/commit-dialog.ui</file>
     <file>ui/dirdiff.ui</file>
+    <file>ui/dirdiff-actions.ui</file>
     <file>ui/dirdiff-menus.ui</file>
     <file>ui/encoding-selector.ui</file>
     <file>ui/filter-list.ui</file>
diff --git a/meld/resources/ui/appwindow.ui b/meld/resources/ui/appwindow.ui
index 801dc429..bbf1d114 100644
--- a/meld/resources/ui/appwindow.ui
+++ b/meld/resources/ui/appwindow.ui
@@ -159,6 +159,14 @@
             </child>
           </object>
         </child>
+        <child>
+          <object class="GtkBox" id="view_toolbar">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="pack-type">start</property>
+          </packing>
+        </child>
         <child>
           <object class="GtkMenuButton" id="gear_menu_button">
             <property name="visible">true</property>
diff --git a/meld/resources/ui/dirdiff-actions.ui b/meld/resources/ui/dirdiff-actions.ui
new file mode 100644
index 00000000..a9088d20
--- /dev/null
+++ b/meld/resources/ui/dirdiff-actions.ui
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <object class="GtkBox" id="view-toolbar">
+    <property name="visible">True</property>
+    <property name="orientation">horizontal</property>
+    <property name="spacing">6</property>
+    <child>
+      <object class="GtkBox">
+        <property name="visible">True</property>
+        <property name="orientation">horizontal</property>
+        <property name="homogeneous">True</property>
+        <style>
+          <class name="linked"/>
+        </style>
+        <child>
+          <object class="GtkButton">
+            <property name="visible">True</property>
+            <property name="action-name">view.folder-copy-left</property>
+            <property name="use-action-appearance">False</property>
+            <property name="tooltip-text">Copy to left</property>
+            <property name="focus_on_click">False</property>
+            <style>
+              <class name="image-button"/>
+            </style>
+            <child>
+              <object class="GtkImage">
+                <property name="visible">True</property>
+                <property name="icon-name">go-previous-symbolic</property>
+                <property name="icon-size">1</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="pack-type">start</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton">
+            <property name="visible">True</property>
+            <property name="action-name">view.folder-copy-right</property>
+            <property name="use-action-appearance">False</property>
+            <property name="tooltip-text">Copy to right</property>
+            <property name="focus_on_click">False</property>
+            <style>
+              <class name="image-button"/>
+            </style>
+            <child>
+              <object class="GtkImage">
+                <property name="visible">True</property>
+                <property name="icon-name">go-next-symbolic</property>
+                <property name="icon-size">1</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="pack-type">start</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child>
+      <object class="GtkButton">
+        <property name="visible">True</property>
+        <property name="action-name">view.folder-delete</property>
+        <property name="use-action-appearance">False</property>
+        <property name="tooltip-text">Delete selected</property>
+        <property name="focus_on_click">False</property>
+        <style>
+          <class name="image-button"/>
+        </style>
+        <child>
+          <object class="GtkImage">
+            <property name="visible">True</property>
+            <property name="icon-name">user-trash-symbolic</property>
+            <property name="icon-size">1</property>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="pack-type">start</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/meld/resources/ui/dirdiff.ui b/meld/resources/ui/dirdiff.ui
index 53a6683c..9cba7856 100644
--- a/meld/resources/ui/dirdiff.ui
+++ b/meld/resources/ui/dirdiff.ui
@@ -5,83 +5,6 @@
   <template class="DirDiff" parent="GtkVBox">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <child>
-      <object class="GtkBox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">6</property>
-        <style>
-          <class name="meld-actionbar"/>
-        </style>
-        <child>
-          <object class="GtkBox">
-            <property name="visible">True</property>
-            <property name="orientation">horizontal</property>
-            <property name="homogeneous">True</property>
-            <style>
-              <class name="linked"/>
-            </style>
-            <child>
-              <object class="GtkButton">
-                <property name="visible">True</property>
-                <property name="action_name">view.folder-copy-left</property>
-                <!-- <property name="label" translatable="yes">Copy to Left</property> -->
-                <property name="tooltip_text" translatable="yes">Copy to left</property>
-                <property name="focus_on_click">False</property>
-                <style>
-                  <class name="image-button"/>
-                </style>
-                <child>
-                  <object class="GtkImage">
-                    <property name="visible">True</property>
-                    <property name="icon-name">go-previous-symbolic</property>
-                    <property name="icon-size">1</property>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="visible">True</property>
-                <property name="action_name">view.folder-copy-right</property>
-                <!-- <property name="label" translatable="yes">Copy to Right</property> -->
-                <property name="tooltip_text" translatable="yes">Copy to right</property>
-                <property name="focus_on_click">False</property>
-                <child>
-                  <object class="GtkImage">
-                    <property name="visible">True</property>
-                    <property name="icon-name">go-next-symbolic</property>
-                    <property name="icon-size">1</property>
-                  </object>
-                </child>
-              </object>
-            </child>
-          </object>
-        </child>
-        <child>
-          <object class="GtkButton">
-            <property name="visible">True</property>
-            <property name="action_name">view.folder-delete</property>
-            <!-- <property name="label" translatable="yes">Delete</property> -->
-            <property name="tooltip_text" translatable="yes">Delete selected</property>
-            <property name="focus_on_click">False</property>
-            <child>
-              <object class="GtkImage">
-                <property name="visible">True</property>
-                <property name="icon-name">user-trash-symbolic</property>
-                <property name="icon-size">1</property>
-              </object>
-            </child>
-          </object>
-        </child>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="pack_type">start</property>
-        <property name="position">0</property>
-      </packing>
-    </child>
     <child>
       <object class="GtkGrid" id="grid">
         <property name="visible">True</property>


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