[meld/ui-next] Move open-externally to GAction
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld/ui-next] Move open-externally to GAction
- Date: Sat, 23 Mar 2019 02:00:21 +0000 (UTC)
commit 9f2394c9ab3612ae169d7d01f6d1abf083a0dd04
Author: Kai Willadsen <kai willadsen gmail com>
Date: Fri Feb 22 11:48:44 2019 +1000
Move open-externally to GAction
data/ui/dirdiff-ui.xml | 3 ---
data/ui/filediff-ui.xml | 4 ----
data/ui/vcview-ui.xml | 4 ----
meld/dirdiff.py | 11 ++++-------
meld/filediff.py | 12 ++++++------
meld/melddoc.py | 3 ---
meld/meldwindow.py | 7 -------
meld/resources/gtk/menus.ui | 7 +++++++
meld/vcview.py | 15 +++++----------
9 files changed, 22 insertions(+), 44 deletions(-)
---
diff --git a/data/ui/dirdiff-ui.xml b/data/ui/dirdiff-ui.xml
index d7299842..8aaebd29 100644
--- a/data/ui/dirdiff-ui.xml
+++ b/data/ui/dirdiff-ui.xml
@@ -17,7 +17,6 @@
<menuitem action="DirDelete" />
<separator/>
<menuitem action="DirCompare" />
- <menuitem action="OpenExternal" />
</placeholder>
</menu>
@@ -51,8 +50,6 @@
<menuitem action="DirCopyLeft" />
<menuitem action="DirCopyRight" />
<menuitem action="DirDelete" />
- <separator/>
- <menuitem action="OpenExternal" />
</popup>
<popup name="CustomPopup">
diff --git a/data/ui/filediff-ui.xml b/data/ui/filediff-ui.xml
index 55c69509..f5b0be0d 100644
--- a/data/ui/filediff-ui.xml
+++ b/data/ui/filediff-ui.xml
@@ -25,8 +25,6 @@
<menuitem action="MergeFromLeft"/>
<menuitem action="MergeFromRight"/>
<menuitem action="MergeAll"/>
- <separator/>
- <menuitem action="OpenExternal"/>
</placeholder>
</menu>
<menu action="ViewMenu">
@@ -50,8 +48,6 @@
<separator/>
<menuitem action="SplitAdd"/>
<menuitem action="SplitClear"/>
- <separator/>
- <menuitem action="OpenExternal" />
</popup>
</ui>
diff --git a/data/ui/vcview-ui.xml b/data/ui/vcview-ui.xml
index 3f86bc40..005c14b5 100644
--- a/data/ui/vcview-ui.xml
+++ b/data/ui/vcview-ui.xml
@@ -14,8 +14,6 @@
<menuitem action="VcDeleteLocally" />
<separator/>
<menuitem action="VcResolved" />
- <separator/>
- <menuitem action="OpenExternal" />
</placeholder>
</menu>
<menu action="ViewMenu">
@@ -71,8 +69,6 @@
<menuitem action="VcDeleteLocally" />
<separator/>
<menuitem action="VcResolved" />
- <separator/>
- <menuitem action="OpenExternal" />
</popup>
</ui>
diff --git a/meld/dirdiff.py b/meld/dirdiff.py
index 23059d68..b85621d9 100644
--- a/meld/dirdiff.py
+++ b/meld/dirdiff.py
@@ -413,6 +413,7 @@ class DirDiff(Gtk.VBox, tree.TreeviewCommon, MeldDoc):
# Manually handle GAction additions
actions = (
('next-change', self.action_next_change),
+ ('open-external', self.action_open_external),
('previous-change', self.action_previous_change),
('refresh', self.action_refresh),
)
@@ -1155,16 +1156,12 @@ class DirDiff(Gtk.VBox, tree.TreeviewCommon, MeldDoc):
is_valid and not busy and pane > 0)
get_action("DirCopyRight").set_sensitive(
is_valid and not busy and pane + 1 < self.num_panes)
- if self.main_actiongroup:
- act = self.main_actiongroup.get_action("OpenExternal")
- act.set_sensitive(is_valid)
+ self.set_action_enabled("open-external", is_valid)
else:
for action in ("DirCompare", "DirCopyLeft", "DirCopyRight",
"DirDelete", "Hide"):
get_action(action).set_sensitive(False)
- if self.main_actiongroup:
- act = self.main_actiongroup.get_action("OpenExternal")
- act.set_sensitive(False)
+ self.set_action_enabled("open-external", False)
@Template.Callback()
def on_treeview_cursor_changed(self, view):
@@ -1352,7 +1349,7 @@ class DirDiff(Gtk.VBox, tree.TreeviewCommon, MeldDoc):
def on_button_delete_clicked(self, button):
self.delete_selected()
- def open_external(self):
+ def action_open_external(self, *args):
pane = self._get_focused_pane()
if pane is None:
return
diff --git a/meld/filediff.py b/meld/filediff.py
index 86fe49aa..79ddb9be 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -280,6 +280,7 @@ class FileDiff(Gtk.VBox, MeldDoc):
actions = (
('format-as-patch', self.action_format_as_patch),
('next-change', self.action_next_change),
+ ('open-external', self.action_open_external),
('previous-change', self.action_previous_change),
('refresh', self.action_refresh),
('revert', self.action_revert),
@@ -902,12 +903,11 @@ class FileDiff(Gtk.VBox, MeldDoc):
self.move_cursor_pane(pane, new_pane)
def _set_external_action_sensitivity(self):
+ # FIXME: This sensitivity is very confused. Essentially, it's always
+ # enabled because we don't unset focus_pane, but the action uses the
+ # current pane focus (i.e., _get_focused_pane) instead of focus_pane.
have_file = self.focus_pane is not None
- try:
- self.main_actiongroup.get_action("OpenExternal").set_sensitive(
- have_file)
- except AttributeError:
- pass
+ self.set_action_enabled("open-external", have_file)
def on_textview_drag_data_received(
self, widget, context, x, y, selection_data, info, time):
@@ -1113,7 +1113,7 @@ class FileDiff(Gtk.VBox, MeldDoc):
self.recompute_label()
@with_focused_pane
- def open_external(self, pane):
+ def action_open_external(self, pane, *args):
if not self.textbuffer[pane].data.gfile:
return
pos = self.textbuffer[pane].props.cursor_position
diff --git a/meld/melddoc.py b/meld/melddoc.py
index 74939519..b7249d9e 100644
--- a/meld/melddoc.py
+++ b/meld/melddoc.py
@@ -169,9 +169,6 @@ class MeldDoc(LabeledObjectMixin, GObject.GObject):
f.query_info_async(query_attrs, 0, GLib.PRIORITY_LOW, None,
open_cb, None)
- def open_external(self):
- pass
-
def on_find_activate(self, *extra):
pass
diff --git a/meld/meldwindow.py b/meld/meldwindow.py
index 051245ae..bbc90cae 100644
--- a/meld/meldwindow.py
+++ b/meld/meldwindow.py
@@ -86,10 +86,6 @@ class MeldWindow(Gtk.ApplicationWindow):
self.on_menu_go_to_line_activate),
("ChangesMenu", None, _("_Changes")),
- ("OpenExternal", None, _("Open Externally"), None,
- _("Open selected file or directory in the default external "
- "application"),
- self.on_open_external),
("ViewMenu", None, _("_View")),
("FileStatus", None, _("File Status")),
@@ -374,9 +370,6 @@ class MeldWindow(Gtk.ApplicationWindow):
def on_menu_edit_up_activate(self, *args):
self.current_doc().next_diff(Gdk.ScrollDirection.UP)
- def on_open_external(self, *args):
- self.current_doc().open_external()
-
def action_stop(self, *args):
self.current_doc().action_stop()
diff --git a/meld/resources/gtk/menus.ui b/meld/resources/gtk/menus.ui
index 8a0f8709..f262fa7b 100644
--- a/meld/resources/gtk/menus.ui
+++ b/meld/resources/gtk/menus.ui
@@ -55,6 +55,13 @@
<attribute name="id">submenu-section</attribute>
<submenu>
<attribute name="label" translatable="yes">Tools</attribute>
+ <section>
+ <attribute name="id">document-tool-section</attribute>
+ <item>
+ <attribute name="label" translatable="yes">Open Externally</attribute>
+ <attribute name="action">view.open-external</attribute>
+ </item>
+ </section>
<section>
<attribute name="id">tool-section</attribute>
<item>
diff --git a/meld/vcview.py b/meld/vcview.py
index d983af90..f5a16105 100644
--- a/meld/vcview.py
+++ b/meld/vcview.py
@@ -196,6 +196,7 @@ class VcView(Gtk.VBox, tree.TreeviewCommon, MeldDoc):
# Manually handle GAction additions
actions = (
('next-change', self.action_next_change),
+ ('open-external', self.action_open_external),
('previous-change', self.action_previous_change),
('refresh', self.action_refresh),
)
@@ -251,20 +252,14 @@ class VcView(Gtk.VBox, tree.TreeviewCommon, MeldDoc):
self.actiongroup.get_action(
self.state_actions[s][0]).set_active(True)
- def _set_external_action_sensitivity(self, focused):
- try:
- self.main_actiongroup.get_action("OpenExternal").set_sensitive(
- focused)
- except AttributeError:
- pass
-
def on_container_switch_in_event(self, ui, window):
super().on_container_switch_in_event(ui, window)
- self._set_external_action_sensitivity(True)
+ # FIXME: open-external should be tied to having a treeview selection
+ self.set_action_enabled("open-external", True)
self.scheduler.add_task(self.on_treeview_cursor_changed)
def on_container_switch_out_event(self, ui, window):
- self._set_external_action_sensitivity(False)
+ self.set_action_enabled("open-external", False)
super().on_container_switch_out_event(ui, window)
def populate_vcs_for_location(self, location):
@@ -744,7 +739,7 @@ class VcView(Gtk.VBox, tree.TreeviewCommon, MeldDoc):
for f in files:
self.run_diff(f)
- def open_external(self):
+ def action_open_external(self, *args):
self._open_files(self._get_selected_files())
def refresh(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]