Skip to content

Commit 0057552

Browse files
committed
dirdiff: Migrate folder actions to GActions
As with the vcview migration, this UI is very placeholder right now. Also, this commit removes the long-since-unused Hide action.
1 parent d87746a commit 0057552

4 files changed

Lines changed: 121 additions & 104 deletions

File tree

data/ui/dirdiff-ui.xml

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,13 @@
11
<ui>
2-
<menubar name="Menubar">
3-
<menu action="ChangesMenu">
4-
<placeholder name="ChangesActions">
5-
<menuitem action="DirCopyLeft" />
6-
<menuitem action="DirCopyRight" />
7-
<menuitem action="DirDelete" />
8-
<separator/>
9-
<menuitem action="DirCompare" />
10-
</placeholder>
11-
</menu>
12-
13-
</menubar>
14-
152
<toolbar name="Toolbar">
16-
<placeholder name="GeneralActions">
17-
<toolitem action="DirCompare" />
18-
</placeholder>
19-
<placeholder name="SpecialActions">
20-
<toolitem action="DirCopyLeft" />
21-
<toolitem action="DirCopyRight" />
22-
<toolitem action="DirDelete" />
23-
</placeholder>
243
<placeholder name="FilterActions">
254
<toolitem action="CustomFilterMenu"/>
265
</placeholder>
276
</toolbar>
287

298
<popup name="Popup">
30-
<menuitem action="DirCompare" />
31-
<separator/>
329
<menuitem action="DirCollapseRecursively" />
3310
<menuitem action="DirExpandRecursively" />
34-
<separator/>
35-
<menuitem action="DirCopyLeft" />
36-
<menuitem action="DirCopyRight" />
37-
<menuitem action="DirDelete" />
3811
</popup>
3912

4013
<popup name="CustomPopup">

meld/accelerators.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
def register_accels(app: Gtk.Application):
66
view_accels = (
7+
('view.folder-compare', 'Return'),
8+
('view.folder-copy-left', '<Alt>Left'),
9+
('view.folder-copy-right', '<Alt>Right'),
10+
('view.folder-delete', 'Delete'),
711
("view.next-change", ("<Alt>Down", "<Alt>KP_Down", "<Primary>D")),
812
("view.previous-change", ("<Alt>Up", "<Alt>KP_Up", "<Primary>E")),
913
('view.redo', '<Primary><Shift>Z'),

meld/dirdiff.py

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,10 @@ def __init__(self, num_panes):
412412

413413
# Manually handle GAction additions
414414
actions = (
415+
('folder-compare', self.action_diff),
416+
('folder-copy-left', self.action_copy_left),
417+
('folder-copy-right', self.action_copy_right),
418+
('folder-delete', self.action_delete),
415419
('next-change', self.action_next_change),
416420
('open-external', self.action_open_external),
417421
('previous-change', self.action_previous_change),
@@ -1152,6 +1156,7 @@ def update_action_sensitivity(self):
11521156
break
11531157

11541158
busy = self._scan_in_progress > 0
1159+
is_valid = is_valid and not busy
11551160

11561161
is_single_foldable_row = False
11571162
if (selection.count_selected_rows() == 1):
@@ -1161,24 +1166,27 @@ def update_action_sensitivity(self):
11611166
is_single_foldable_row = self.model.is_folder(
11621167
it, pane, os_path)
11631168

1164-
get_action("DirCompare").set_sensitive(True)
11651169
get_action("DirCollapseRecursively").set_sensitive(
11661170
is_single_foldable_row)
11671171
get_action("DirExpandRecursively").set_sensitive(
11681172
is_single_foldable_row)
1169-
get_action("Hide").set_sensitive(True)
1170-
get_action("DirDelete").set_sensitive(
1171-
is_valid and not busy)
1172-
get_action("DirCopyLeft").set_sensitive(
1173-
is_valid and not busy and pane > 0)
1174-
get_action("DirCopyRight").set_sensitive(
1175-
is_valid and not busy and pane + 1 < self.num_panes)
1176-
self.set_action_enabled("open-external", is_valid)
1173+
1174+
self.set_action_enabled('folder-compare', True)
1175+
self.set_action_enabled('folder-delete', is_valid)
1176+
self.set_action_enabled('folder-copy-left', is_valid and pane > 0)
1177+
self.set_action_enabled(
1178+
'folder-copy-right', is_valid and pane + 1 < self.num_panes)
1179+
self.set_action_enabled('open-external', is_valid)
11771180
else:
1178-
for action in ("DirCompare", "DirCopyLeft", "DirCopyRight",
1179-
"DirDelete", "Hide"):
1180-
get_action(action).set_sensitive(False)
1181-
self.set_action_enabled("open-external", False)
1181+
actions = (
1182+
'folder-compare',
1183+
'folder-copy-left',
1184+
'folder-copy-right',
1185+
'folder-delete',
1186+
'open-external',
1187+
)
1188+
for action in actions:
1189+
self.set_action_enabled(action, False)
11821190

11831191
@Template.Callback()
11841192
def on_treeview_cursor_changed(self, view):
@@ -1313,8 +1321,7 @@ def run_diff_from_iter(self, it):
13131321
for p in row_paths if os.path.exists(p)]
13141322
self.create_diff_signal.emit(gfiles, {})
13151323

1316-
@Template.Callback()
1317-
def on_button_diff_clicked(self, button):
1324+
def action_diff(self, *args):
13181325
pane = self._get_focused_pane()
13191326
if pane is None:
13201327
return
@@ -1354,16 +1361,13 @@ def on_expand_recursive_clicked(self, action):
13541361
for path in paths:
13551362
self.treeview[pane].expand_row(path, True)
13561363

1357-
@Template.Callback()
1358-
def on_button_copy_left_clicked(self, button):
1364+
def action_copy_left(self, *args):
13591365
self.copy_selected(-1)
13601366

1361-
@Template.Callback()
1362-
def on_button_copy_right_clicked(self, button):
1367+
def action_copy_right(self, *args):
13631368
self.copy_selected(1)
13641369

1365-
@Template.Callback()
1366-
def on_button_delete_clicked(self, button):
1370+
def action_delete(self, *args):
13671371
self.delete_selected()
13681372

13691373
def action_open_external(self, *args):
@@ -1403,15 +1407,6 @@ def _update_name_filter(self, button, idx):
14031407
self.name_filters[idx].active = button.get_active()
14041408
self.refresh()
14051409

1406-
@Template.Callback()
1407-
def on_filter_hide_current_clicked(self, button):
1408-
pane = self._get_focused_pane()
1409-
if pane is not None:
1410-
paths = self._get_selected_paths(pane)
1411-
paths.reverse()
1412-
for p in paths:
1413-
self.model.remove(self.model.get_iter(p))
1414-
14151410
#
14161411
# Selection
14171412
#

meld/resources/ui/dirdiff.ui

Lines changed: 92 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,6 @@
33
<!-- interface-requires gtk+ 3.0 -->
44
<!-- interface-requires meld.ui.gladesupport 0.0 -->
55
<object class="GtkActionGroup" id="DirdiffActions">
6-
<child>
7-
<object class="GtkAction" id="DirCompare">
8-
<property name="label" translatable="yes">_Compare</property>
9-
<property name="tooltip" translatable="yes">Compare selected files</property>
10-
<property name="stock_id">gtk-dialog-info</property>
11-
<property name="is_important">True</property>
12-
<signal name="activate" handler="on_button_diff_clicked" swapped="no"/>
13-
</object>
14-
<accelerator key="Return"/>
15-
</child>
166
<child>
177
<object class="GtkAction" id="DirCollapseRecursively">
188
<property name="label" translatable="yes">Collapse Recursively</property>
@@ -31,43 +21,6 @@
3121
<signal name="activate" handler="on_expand_recursive_clicked" swapped="no"/>
3222
</object>
3323
</child>
34-
<child>
35-
<object class="GtkAction" id="DirCopyLeft">
36-
<property name="label" translatable="yes">Copy to _Left</property>
37-
<property name="tooltip" translatable="yes">Copy to left</property>
38-
<property name="stock_id">gtk-go-back</property>
39-
<property name="is_important">True</property>
40-
<signal name="activate" handler="on_button_copy_left_clicked" swapped="no"/>
41-
</object>
42-
<accelerator key="Left" modifiers="GDK_MOD1_MASK"/>
43-
</child>
44-
<child>
45-
<object class="GtkAction" id="DirCopyRight">
46-
<property name="label" translatable="yes">Copy to _Right</property>
47-
<property name="tooltip" translatable="yes">Copy to right</property>
48-
<property name="stock_id">gtk-go-forward</property>
49-
<property name="is_important">True</property>
50-
<signal name="activate" handler="on_button_copy_right_clicked" swapped="no"/>
51-
</object>
52-
<accelerator key="Right" modifiers="GDK_MOD1_MASK"/>
53-
</child>
54-
<child>
55-
<object class="GtkAction" id="DirDelete">
56-
<property name="tooltip" translatable="yes">Delete selected</property>
57-
<property name="stock_id">gtk-delete</property>
58-
<property name="is_important">True</property>
59-
<signal name="activate" handler="on_button_delete_clicked" swapped="no"/>
60-
</object>
61-
<accelerator key="Delete"/>
62-
</child>
63-
<child>
64-
<object class="GtkAction" id="Hide">
65-
<property name="label" translatable="yes">Hide</property>
66-
<property name="tooltip" translatable="yes">Hide selected</property>
67-
<property name="stock_id">gtk-no</property>
68-
<signal name="activate" handler="on_filter_hide_current_clicked" swapped="no"/>
69-
</object>
70-
</child>
7124
<child>
7225
<object class="GtkToggleAction" id="CustomFilterMenu">
7326
<property name="label" translatable="yes">Filters</property>
@@ -80,6 +33,98 @@
8033
<template class="DirDiff" parent="GtkVBox">
8134
<property name="visible">True</property>
8235
<property name="can_focus">False</property>
36+
<child>
37+
<object class="GtkActionBar">
38+
<property name="visible">True</property>
39+
<property name="can_focus">False</property>
40+
<child>
41+
<object class="GtkButton">
42+
<property name="visible">True</property>
43+
<property name="action_name">view.folder-compare</property>
44+
<!-- <property name="label" translatable="yes">Compare</property> -->
45+
<property name="tooltip_text" translatable="yes">Compare selected files</property>
46+
<property name="focus_on_click">False</property>
47+
<style>
48+
<class name="image-button"/>
49+
</style>
50+
<child>
51+
<object class="GtkImage">
52+
<property name="visible">True</property>
53+
<property name="icon-name">document-new-symbolic</property>
54+
<property name="icon-size">1</property>
55+
</object>
56+
</child>
57+
</object>
58+
</child>
59+
<child>
60+
<object class="GtkBox">
61+
<property name="visible">True</property>
62+
<property name="orientation">horizontal</property>
63+
<property name="homogeneous">True</property>
64+
<style>
65+
<class name="linked"/>
66+
</style>
67+
<child>
68+
<object class="GtkButton">
69+
<property name="visible">True</property>
70+
<property name="action_name">view.folder-copy-left</property>
71+
<!-- <property name="label" translatable="yes">Copy to Left</property> -->
72+
<property name="tooltip_text" translatable="yes">Copy to left</property>
73+
<property name="focus_on_click">False</property>
74+
<style>
75+
<class name="image-button"/>
76+
</style>
77+
<child>
78+
<object class="GtkImage">
79+
<property name="visible">True</property>
80+
<property name="icon-name">go-previous-symbolic</property>
81+
<property name="icon-size">1</property>
82+
</object>
83+
</child>
84+
</object>
85+
</child>
86+
<child>
87+
<object class="GtkButton">
88+
<property name="visible">True</property>
89+
<property name="action_name">view.folder-copy-right</property>
90+
<!-- <property name="label" translatable="yes">Copy to Right</property> -->
91+
<property name="tooltip_text" translatable="yes">Copy to right</property>
92+
<property name="focus_on_click">False</property>
93+
<child>
94+
<object class="GtkImage">
95+
<property name="visible">True</property>
96+
<property name="icon-name">go-next-symbolic</property>
97+
<property name="icon-size">1</property>
98+
</object>
99+
</child>
100+
</object>
101+
</child>
102+
</object>
103+
</child>
104+
<child>
105+
<object class="GtkButton">
106+
<property name="visible">True</property>
107+
<property name="action_name">view.folder-delete</property>
108+
<!-- <property name="label" translatable="yes">Delete</property> -->
109+
<property name="tooltip_text" translatable="yes">Delete selected</property>
110+
<property name="focus_on_click">False</property>
111+
<child>
112+
<object class="GtkImage">
113+
<property name="visible">True</property>
114+
<property name="icon-name">user-trash-symbolic</property>
115+
<property name="icon-size">1</property>
116+
</object>
117+
</child>
118+
</object>
119+
</child>
120+
</object>
121+
<packing>
122+
<property name="expand">False</property>
123+
<property name="fill">True</property>
124+
<property name="pack_type">start</property>
125+
<property name="position">0</property>
126+
</packing>
127+
</child>
83128
<child>
84129
<object class="GtkGrid" id="grid">
85130
<property name="visible">True</property>

0 commit comments

Comments
 (0)