[meld/pathlabel] filediff: Update to use MeldFileButton



commit f66974a39ffbec4bfa82310a0c8ed9bdd9ff9c9d
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Sun Jan 17 08:19:30 2021 +1000

    filediff: Update to use MeldFileButton

 meld/filediff.py              | 20 ++++----------------
 meld/resources/ui/filediff.ui | 39 +++++++++++++++------------------------
 2 files changed, 19 insertions(+), 40 deletions(-)
---
diff --git a/meld/filediff.py b/meld/filediff.py
index eb208d30..8c59d43f 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -1504,6 +1504,7 @@ class FileDiff(Gtk.VBox, MeldDoc):
 
         buf = self.textbuffer[pane]
         buf.data.reset(gfile)
+        self.file_open_button[pane].props.file = gfile
 
         # FIXME: this was self.textbuffer[pane].data.label, which could be
         # either a custom label or the fallback
@@ -2075,26 +2076,13 @@ class FileDiff(Gtk.VBox, MeldDoc):
         self.save_file(idx)
 
     @Gtk.Template.Callback()
-    def on_file_open_button_clicked(self, button):
-        pane = self.file_open_button.index(button)
-
-        dialog = Gtk.FileChooserNative(
-            title=_("Open File"),
-            transient_for=self.get_toplevel(),
-        )
-        if self.textbuffer[pane].data.gfile:
-            dialog.set_file(self.textbuffer[pane].data.gfile)
-        response = dialog.run()
-        gfile = dialog.get_file()
-        dialog.destroy()
-
-        if response != Gtk.ResponseType.ACCEPT:
-            return
+    def on_file_selected(
+            self, button: Gtk.Button, pane: int, file: Gio.File) -> None:
 
         if not self.check_unsaved_changes():
             return
 
-        self.set_file(pane, gfile)
+        self.set_file(pane, file)
 
     def _get_focused_pane(self):
         for i in range(self.num_panes):
diff --git a/meld/resources/ui/filediff.ui b/meld/resources/ui/filediff.ui
index f0f537c4..473e487f 100644
--- a/meld/resources/ui/filediff.ui
+++ b/meld/resources/ui/filediff.ui
@@ -39,17 +39,14 @@
               </object>
             </child>
             <child>
-              <object class="GtkButton" id="file_open_button2">
+              <object class="MeldFileButton" id="file_open_button2">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="pane">2</property>
+                <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
+                <property name="dialog_label">Select File</property>
                 <property name="tooltip_text" translatable="yes">Open file in this pane</property>
-                <signal name="clicked" handler="on_file_open_button_clicked" swapped="no"/>
-                <child>
-                  <object class="GtkImage">
-                    <property name="icon-name">document-open-symbolic</property>
-                    <property name="visible">true</property>
-                  </object>
-                </child>
+                <signal name="file-selected" handler="on_file_selected" swapped="no"/>
               </object>
             </child>
             <child>
@@ -100,17 +97,14 @@
               </object>
             </child>
             <child>
-              <object class="GtkButton" id="file_open_button1">
+              <object class="MeldFileButton" id="file_open_button1">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="pane">1</property>
+                <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
+                <property name="dialog_label">Select File</property>
                 <property name="tooltip_text" translatable="yes">Open file in this pane</property>
-                <signal name="clicked" handler="on_file_open_button_clicked" swapped="no"/>
-                <child>
-                  <object class="GtkImage">
-                    <property name="icon-name">document-open-symbolic</property>
-                    <property name="visible">true</property>
-                  </object>
-                </child>
+                <signal name="file-selected" handler="on_file_selected" swapped="no"/>
               </object>
             </child>
             <child>
@@ -161,17 +155,14 @@
               </object>
             </child>
             <child>
-              <object class="GtkButton" id="file_open_button0">
+              <object class="MeldFileButton" id="file_open_button0">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="pane">0</property>
+                <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
+                <property name="dialog_label">Select File</property>
                 <property name="tooltip_text" translatable="yes">Open file in this pane</property>
-                <signal name="clicked" handler="on_file_open_button_clicked" swapped="no"/>
-                <child>
-                  <object class="GtkImage">
-                    <property name="icon-name">document-open-symbolic</property>
-                    <property name="visible">true</property>
-                  </object>
-                </child>
+                <signal name="file-selected" handler="on_file_selected" swapped="no"/>
               </object>
             </child>
             <child>


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