[meld/ui-next] filediff: Move merge actions to GAction
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld/ui-next] filediff: Move merge actions to GAction
- Date: Sat, 23 Mar 2019 02:02:01 +0000 (UTC)
commit d05744b7e969a6180fdda842c3d3781a68253bf7
Author: Kai Willadsen <kai willadsen gmail com>
Date: Fri Mar 1 08:57:29 2019 +1000
filediff: Move merge actions to GAction
data/ui/filediff-ui.xml | 4 ----
meld/filediff.py | 26 ++++++++++++--------------
meld/resources/gtk/menus.ui | 15 +++++++++++++++
meld/resources/ui/filediff.ui | 21 ---------------------
4 files changed, 27 insertions(+), 39 deletions(-)
---
diff --git a/data/ui/filediff-ui.xml b/data/ui/filediff-ui.xml
index 28679a08..a8ec4564 100644
--- a/data/ui/filediff-ui.xml
+++ b/data/ui/filediff-ui.xml
@@ -15,10 +15,6 @@
<menuitem action="CopyLeftDown"/>
<menuitem action="CopyRightUp"/>
<menuitem action="CopyRightDown"/>
- <separator/>
- <menuitem action="MergeFromLeft"/>
- <menuitem action="MergeFromRight"/>
- <menuitem action="MergeAll"/>
</placeholder>
</menu>
</menubar>
diff --git a/meld/filediff.py b/meld/filediff.py
index d58f98dc..b3c883dc 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -292,6 +292,9 @@ class FileDiff(Gtk.VBox, MeldDoc):
('add-sync-point', self.add_sync_point),
('clear-sync-point', self.clear_sync_points),
('format-as-patch', self.action_format_as_patch),
+ ('merge-all-left', self.action_pull_all_changes_left),
+ ('merge-all-right', self.action_pull_all_changes_right),
+ ('merge-all', self.action_merge_all_changes),
('next-change', self.action_next_change),
('next-pane', self.action_next_pane),
('open-external', self.action_open_external),
@@ -773,18 +776,15 @@ class FileDiff(Gtk.VBox, MeldDoc):
self._sync_vscroll(self.scrolledwindow[src].get_vadjustment(), src)
self.scheduler.add_task(resync)
- @Template.Callback()
def action_pull_all_changes_left(self, *args):
src, dst = self.get_action_panes(PANE_LEFT, reverse=True)
self.pull_all_non_conflicting_changes(src, dst)
- @Template.Callback()
def action_pull_all_changes_right(self, *args):
src, dst = self.get_action_panes(PANE_RIGHT, reverse=True)
self.pull_all_non_conflicting_changes(src, dst)
- @Template.Callback()
- def merge_all_non_conflicting_changes(self, *args):
+ def action_merge_all_changes(self, *args):
dst = 1
merger = Merger()
merger.differ = self.linediffer
@@ -1476,25 +1476,23 @@ class FileDiff(Gtk.VBox, MeldDoc):
self.scheduler.add_task(self._diff_files(refresh=True))
def _set_merge_action_sensitivity(self):
- pane = self._get_focused_pane()
- if pane != -1:
- editable = self.textview[pane].get_editable()
- mergeable = self.linediffer.has_mergeable_changes(pane)
+ if self.focus_pane:
+ editable = self.focus_pane.get_editable()
+ pane_idx = self.textview.index(self.focus_pane)
+ mergeable = self.linediffer.has_mergeable_changes(pane_idx)
else:
editable = False
mergeable = (False, False)
- # TODO: We need this helper everywhere.
- def set_action_enabled(action, enabled):
- self.actiongroup.get_action(action).set_sensitive(enabled)
+ self.set_action_enabled('merge-all-left', mergeable[0] and editable)
+ self.set_action_enabled('merge-all-right', mergeable[1] and editable)
- set_action_enabled("MergeFromLeft", mergeable[0] and editable)
- set_action_enabled("MergeFromRight", mergeable[1] and editable)
if self.num_panes == 3 and self.textview[1].get_editable():
mergeable = self.linediffer.has_mergeable_changes(1)
else:
mergeable = (False, False)
- set_action_enabled("MergeAll", mergeable[0] or mergeable[1])
+
+ self.set_action_enabled('merge-all', mergeable[0] or mergeable[1])
def on_diffs_changed(self, linediffer, chunk_changes):
diff --git a/meld/resources/gtk/menus.ui b/meld/resources/gtk/menus.ui
index e5a2635c..da58bfcc 100644
--- a/meld/resources/gtk/menus.ui
+++ b/meld/resources/gtk/menus.ui
@@ -60,6 +60,21 @@
</submenu>
<submenu>
<attribute name="label" translatable="yes">Comparison</attribute>
+ <section>
+ <attribute name="id">merge-section</attribute>
+ <item>
+ <attribute name="label">Merge All from Left</attribute>
+ <attribute name="action">view.merge-all-left</attribute>
+ </item>
+ <item>
+ <attribute name="label">Merge All from Reft</attribute>
+ <attribute name="action">view.merge-all-right</attribute>
+ </item>
+ <item>
+ <attribute name="label">Merge All</attribute>
+ <attribute name="action">view.merge-all</attribute>
+ </item>
+ </section>
<section>
<attribute name="id">synchronisation-section</attribute>
<item>
diff --git a/meld/resources/ui/filediff.ui b/meld/resources/ui/filediff.ui
index 1a64814c..e6e13605 100644
--- a/meld/resources/ui/filediff.ui
+++ b/meld/resources/ui/filediff.ui
@@ -824,26 +824,5 @@
</object>
<accelerator key="Delete" modifiers="GDK_MOD1_MASK"/>
</child>
- <child>
- <object class="GtkAction" id="MergeFromLeft">
- <property name="label" translatable="yes">Merge All from Left</property>
- <property name="tooltip" translatable="yes">Merge all non-conflicting changes from the
left</property>
- <signal name="activate" handler="action_pull_all_changes_left" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="MergeFromRight">
- <property name="label" translatable="yes">Merge All from Right</property>
- <property name="tooltip" translatable="yes">Merge all non-conflicting changes from the
right</property>
- <signal name="activate" handler="action_pull_all_changes_right" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="MergeAll">
- <property name="label" translatable="yes">Merge All</property>
- <property name="tooltip" translatable="yes">Merge all non-conflicting changes from left and right
panes</property>
- <signal name="activate" handler="merge_all_non_conflicting_changes" swapped="no"/>
- </object>
- </child>
</object>
</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]