Skip to content

Commit bc252a0

Browse files
committed
nemo-action-layout-editor: UI improvement for enabling/disabling
actions. - Use GtkCellRendererToggles to allow toggling actions, remove the switch for the 'selected' row. - Italicize disabled actions.
1 parent ef64921 commit bc252a0

File tree

2 files changed

+48
-48
lines changed

2 files changed

+48
-48
lines changed

action-layout-editor/nemo_action_layout_editor.py

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,6 @@ def __init__(self, window, builder=None):
182182
self.clear_icon_button = self.builder.get_object("clear_icon_button")
183183
self.icon_selector_menu_button = self.builder.get_object("icon_selector_menu_button")
184184
self.icon_selector_image = self.builder.get_object("icon_selector_image")
185-
self.action_enabled_switch = self.builder.get_object("action_enabled_switch")
186185
self.selected_item_widgets_group = XApp.VisibilityGroup.new(True, True, [
187186
self.icon_selector_menu_button,
188187
self.name_entry
@@ -244,11 +243,16 @@ def __init__(self, window, builder=None):
244243
visible=True
245244
)
246245

247-
# Icon and label
246+
# Checkbox, Icon and label
248247
column = Gtk.TreeViewColumn()
249248
self.treeview.append_column(column)
250249
column.set_expand(True)
250+
column.set_spacing(2)
251251

252+
cell = Gtk.CellRendererToggle(activatable=True)
253+
cell.connect("toggled", self.on_action_row_toggled)
254+
column.pack_start(cell, False)
255+
column.set_cell_data_func(cell, self.toggle_render_func)
252256
cell = Gtk.CellRendererPixbuf()
253257
column.pack_start(cell, False)
254258
column.set_cell_data_func(cell, self.menu_icon_render_func)
@@ -286,7 +290,7 @@ def __init__(self, window, builder=None):
286290
self.name_entry.connect("changed", self.on_name_entry_changed)
287291
self.name_entry.connect("icon-press", self.on_name_entry_icon_clicked)
288292
self.remove_submenu_button.connect("clicked", self.on_remove_submenu_clicked)
289-
self.action_enabled_switch.connect("notify::active", self.on_action_enabled_switch_notify)
293+
290294
self.treeview.connect("row-activated", self.on_row_activated)
291295

292296
# DND
@@ -686,8 +690,6 @@ def update_row_controls(self):
686690
orig_icon = row.get_icon_string(original=True)
687691
self.original_icon_menu_item.set_sensitive(orig_icon is not None and orig_icon != row.get_icon_string())
688692
self.selected_item_widgets_group.set_sensitive(row.enabled and row_type != ROW_TYPE_SEPARATOR)
689-
self.action_enabled_switch.set_active(row.enabled)
690-
self.action_enabled_switch.set_sensitive(row_type == ROW_TYPE_ACTION)
691693
self.remove_submenu_button.set_sensitive(row_type in (ROW_TYPE_SUBMENU, ROW_TYPE_SEPARATOR))
692694

693695
if row_type == ROW_TYPE_ACTION and row.get_custom_label() is not None:
@@ -699,12 +701,25 @@ def update_row_controls(self):
699701

700702
self.updating_row_edit_fields = False
701703

702-
def on_row_activated(self, path, column, data=None):
703-
row_type = self.get_selected_row_field(ROW_TYPE)
704-
if row_type != ROW_TYPE_ACTION:
704+
def _toggle_row_enabled(self, row):
705+
row.enabled = not row.enabled
706+
self.selected_row_changed(needs_saved=False)
707+
self.save_disabled_list()
708+
709+
def on_row_activated(self, treeview, path, column, data=None):
710+
if self.updating_row_edit_fields:
705711
return
706712

707-
self.action_enabled_switch.set_active(not self.action_enabled_switch.get_active())
713+
row = self.get_selected_row_field(ROW_OBJ)
714+
if row is not None:
715+
self._toggle_row_enabled(row)
716+
717+
def on_action_row_toggled(self, renderer, path, data=None):
718+
iter = self.model.get_iter(path)
719+
row = self.model.get_value(iter, ROW_OBJ)
720+
721+
if row is not None:
722+
self._toggle_row_enabled(row)
708723

709724
def set_icon_button(self, row):
710725
for image, use_orig in ([self.icon_selector_image, False], [self.original_icon_menu_image, True]):
@@ -890,18 +905,6 @@ def on_name_entry_icon_clicked(self, entry, icon_pos, event, data=None):
890905
row.set_custom_label(None)
891906
self.selected_row_changed()
892907

893-
def on_action_enabled_switch_notify(self, switch, pspec):
894-
if self.updating_row_edit_fields:
895-
return
896-
897-
row = self.get_selected_row_field(ROW_OBJ)
898-
if row is not None:
899-
row.enabled = switch.get_active()
900-
# The layout file does not track active/inactive actions,
901-
# so this shouldn't prompt a layout save.
902-
self.selected_row_changed(needs_saved=False)
903-
self.save_disabled_list()
904-
905908
def on_accel_edited(self, accel, path, key, mods, kc, data=None):
906909
if not self.validate_accelerator(key, mods):
907910
return
@@ -988,6 +991,15 @@ def check_for_action_conflict(iter):
988991
return not conflict
989992

990993
# Cell render functions
994+
def toggle_render_func(self, column, cell, model, iter, data):
995+
row_type = model.get_value(iter, ROW_TYPE)
996+
row = model.get_value(iter, ROW_OBJ)
997+
998+
if row_type in (ROW_TYPE_SUBMENU, ROW_TYPE_SEPARATOR):
999+
cell.set_property("visible", False)
1000+
else:
1001+
cell.set_property("visible", True)
1002+
cell.set_property("active", row.enabled)
9911003

9921004
def menu_icon_render_func(self, column, cell, model, iter, data):
9931005
row = model.get_value(iter, ROW_OBJ)
@@ -1009,6 +1021,7 @@ def menu_label_render_func(self, column, cell, model, iter, data):
10091021
else:
10101022
cell.set_property("markup", row.get_label())
10111023
cell.set_property("weight", Pango.Weight.NORMAL if row.enabled else Pango.Weight.ULTRALIGHT)
1024+
cell.set_property("style", Pango.Style.NORMAL if row.enabled else Pango.Style.ITALIC)
10121025

10131026
def accel_render_func(self, column, cell, model, iter, data):
10141027
row_type = model.get_value(iter, ROW_TYPE)

gresources/nemo-action-layout-editor.glade

Lines changed: 14 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@
77
<property name="can-focus">False</property>
88
<property name="icon-name">list-remove-symbolic</property>
99
</object>
10+
<object class="GtkImage" id="image5">
11+
<property name="visible">True</property>
12+
<property name="can-focus">False</property>
13+
<property name="icon-name">go-up-symbolic</property>
14+
</object>
15+
<object class="GtkImage" id="image6">
16+
<property name="visible">True</property>
17+
<property name="can-focus">False</property>
18+
<property name="icon-name">go-down-symbolic</property>
19+
</object>
1020
<object class="GtkBox" id="layout_editor_box">
1121
<property name="visible">True</property>
1222
<property name="can-focus">False</property>
@@ -221,28 +231,15 @@
221231
</packing>
222232
</child>
223233
<child>
224-
<object class="GtkBox">
234+
<object class="GtkLabel">
225235
<property name="visible">True</property>
226236
<property name="can-focus">False</property>
227-
<child>
228-
<object class="GtkSwitch" id="action_enabled_switch">
229-
<property name="visible">True</property>
230-
<property name="can-focus">True</property>
231-
<property name="tooltip-text" translatable="yes">Enabled</property>
232-
<property name="halign">center</property>
233-
<property name="valign">center</property>
234-
</object>
235-
<packing>
236-
<property name="expand">False</property>
237-
<property name="fill">True</property>
238-
<property name="position">2</property>
239-
</packing>
240-
</child>
237+
<property name="label" translatable="yes">Appearance:</property>
238+
<property name="xalign">1</property>
241239
</object>
242240
<packing>
243-
<property name="expand">False</property>
241+
<property name="expand">True</property>
244242
<property name="fill">True</property>
245-
<property name="pack-type">end</property>
246243
<property name="position">1</property>
247244
</packing>
248245
</child>
@@ -350,16 +347,6 @@
350347
<widget name="name_entry"/>
351348
</widgets>
352349
</object>
353-
<object class="GtkImage" id="image5">
354-
<property name="visible">True</property>
355-
<property name="can-focus">False</property>
356-
<property name="icon-name">go-up-symbolic</property>
357-
</object>
358-
<object class="GtkImage" id="image6">
359-
<property name="visible">True</property>
360-
<property name="can-focus">False</property>
361-
<property name="icon-name">go-down-symbolic</property>
362-
</object>
363350
<object class="GtkWindow" id="main_window">
364351
<property name="can-focus">False</property>
365352
<property name="border-width">4</property>

0 commit comments

Comments
 (0)