[pitivi] shortcuts: Make sure the groups appear in the same order
- From: Alexandru Băluț <alexbalut src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] shortcuts: Make sure the groups appear in the same order
- Date: Tue, 27 Sep 2016 08:50:41 +0000 (UTC)
commit 7ec9fc932f0e9d884bda36fb5f6a2a07c43e3754
Author: Alexandru Băluț <alexandru balut gmail com>
Date: Sat Sep 17 00:05:20 2016 +0200
shortcuts: Make sure the groups appear in the same order
Reviewed-by: Jakub Brindza <jakub brindza gmail com>
Differential Revision: https://phabricator.freedesktop.org/D1324
pitivi/application.py | 2 +-
pitivi/clipproperties.py | 2 +-
pitivi/dialogs/prefs.py | 3 ++-
pitivi/mainwindow.py | 2 +-
pitivi/medialibrary.py | 2 +-
pitivi/shortcuts.py | 15 ++++++++++++---
pitivi/timeline/timeline.py | 4 ++--
tests/test_shortcuts.py | 15 ++++++++-------
8 files changed, 28 insertions(+), 17 deletions(-)
---
diff --git a/pitivi/application.py b/pitivi/application.py
index 2a46304..11874f3 100644
--- a/pitivi/application.py
+++ b/pitivi/application.py
@@ -153,7 +153,7 @@ class Pitivi(Gtk.Application, Loggable):
self._syncDoUndo()
def _createActions(self):
- self.shortcuts.register_group("app", _("General"))
+ self.shortcuts.register_group("app", _("General"), position=10)
self.undo_action = Gio.SimpleAction.new("undo", None)
self.undo_action.connect("activate", self._undoCb)
self.add_action(self.undo_action)
diff --git a/pitivi/clipproperties.py b/pitivi/clipproperties.py
index 4895c65..cb8e66c 100644
--- a/pitivi/clipproperties.py
+++ b/pitivi/clipproperties.py
@@ -225,7 +225,7 @@ class EffectProperties(Gtk.Expander, Loggable):
effects_actions_group = Gio.SimpleActionGroup()
self.treeview.insert_action_group("clipproperties-effects", effects_actions_group)
buttons_box.insert_action_group("clipproperties-effects", effects_actions_group)
- self.app.shortcuts.register_group("clipproperties-effects", _("Clip Effects"))
+ self.app.shortcuts.register_group("clipproperties-effects", _("Clip Effects"), position=60)
self.remove_effect_action = Gio.SimpleAction.new("remove-effect", None)
self.remove_effect_action.connect("activate", self._removeEffectCb)
diff --git a/pitivi/dialogs/prefs.py b/pitivi/dialogs/prefs.py
index caa1f4f..4b6e21a 100644
--- a/pitivi/dialogs/prefs.py
+++ b/pitivi/dialogs/prefs.py
@@ -222,7 +222,8 @@ class PreferencesDialog(Loggable):
self.content_box = Gtk.ListBox()
self.list_store = Gio.ListStore.new(ModelItem)
index = 0
- for group, actions in shortcuts_manager.group_actions.items():
+ for group in shortcuts_manager.groups:
+ actions = shortcuts_manager.group_actions[group]
for action, title in actions:
item = ModelItem(self.app, action, title, group)
self.list_store.append(item)
diff --git a/pitivi/mainwindow.py b/pitivi/mainwindow.py
index fa9ad46..2944834 100644
--- a/pitivi/mainwindow.py
+++ b/pitivi/mainwindow.py
@@ -437,7 +437,7 @@ class MainWindow(Gtk.ApplicationWindow, Loggable):
self._headerbar.pack_start(self.render_button)
def _set_keyboard_shortcuts(self):
- self.app.shortcuts.register_group("win", _("Project"))
+ self.app.shortcuts.register_group("win", _("Project"), position=20)
self.save_action = Gio.SimpleAction.new("save", None)
self.save_action.connect("activate", self._saveProjectCb)
self.add_action(self.save_action)
diff --git a/pitivi/medialibrary.py b/pitivi/medialibrary.py
index a8f16cb..a66922d 100644
--- a/pitivi/medialibrary.py
+++ b/pitivi/medialibrary.py
@@ -426,7 +426,7 @@ class MediaLibraryWidget(Gtk.Box, Loggable):
actions_group = Gio.SimpleActionGroup()
self.insert_action_group("medialibrary", actions_group)
- self.app.shortcuts.register_group("medialibrary", _("Media Library"))
+ self.app.shortcuts.register_group("medialibrary", _("Media Library"), position=50)
self.remove_assets_action = Gio.SimpleAction.new("remove-assets", None)
self.remove_assets_action.connect("activate", self._removeAssetsCb)
diff --git a/pitivi/shortcuts.py b/pitivi/shortcuts.py
index 3dabcf2..a5b58c2 100644
--- a/pitivi/shortcuts.py
+++ b/pitivi/shortcuts.py
@@ -26,7 +26,7 @@ from pitivi.settings import xdg_config_home
from pitivi.utils.misc import show_user_manual
-class ShortcutsManager(GObject.Object):
+class ShortcutsManager(GObject.Object): # pylint: disable=too-many-instance-attributes
"""Manager storing the shortcuts from all across the app."""
__gsignals__ = {
@@ -36,6 +36,7 @@ class ShortcutsManager(GObject.Object):
def __init__(self, app):
GObject.Object.__init__(self)
self.app = app
+ self.__groups = []
self.group_titles = {}
self.group_actions = {}
self.default_accelerators = {}
@@ -44,6 +45,11 @@ class ShortcutsManager(GObject.Object):
"shortcuts.conf"])
self.__loaded = self.__load()
+ @property
+ def groups(self):
+ """The group ids ordered as they should be displayed."""
+ return [item[1] for item in self.__groups]
+
def __load(self):
"""Loads the shortcuts from the config file and sets them.
@@ -144,15 +150,18 @@ class ShortcutsManager(GObject.Object):
return neighbor_action
return None
- def register_group(self, action_prefix, title):
+ def register_group(self, action_prefix, title, position):
"""Registers a group of shortcuts to be displayed.
Args:
action_prefix (str): The group id.
title (str): The title of the group.
+ position (int): The position used to sort the groups for display.
"""
assert action_prefix not in self.group_titles
self.group_titles[action_prefix] = title
+ self.__groups.append((position, action_prefix))
+ self.__groups.sort()
def reset_accels(self, action=None):
"""Resets accelerators to their default values.
@@ -190,7 +199,7 @@ class ShortcutsWindow(Gtk.ShortcutsWindow):
"""Gathers the accelerators and populates the window."""
section = Gtk.ShortcutsSection()
section.show()
- for group_id in self.app.shortcuts.group_titles:
+ for group_id in self.app.shortcuts.groups:
group = Gtk.ShortcutsGroup(title=self.app.shortcuts.group_titles[group_id])
group.show()
for action, title in self.app.shortcuts.group_actions[group_id]:
diff --git a/pitivi/timeline/timeline.py b/pitivi/timeline/timeline.py
index 27ad076..fdaadb3 100644
--- a/pitivi/timeline/timeline.py
+++ b/pitivi/timeline/timeline.py
@@ -1390,7 +1390,7 @@ class TimelineContainer(Gtk.Grid, Zoomable, Loggable):
group = Gio.SimpleActionGroup()
self.timeline.layout.insert_action_group("timeline", group)
self.toolbar.insert_action_group("timeline", group)
- self.app.shortcuts.register_group("timeline", _("Timeline"))
+ self.app.shortcuts.register_group("timeline", _("Timeline"), position=30)
# Clips actions.
self.delete_action = Gio.SimpleAction.new("delete-selected-clips", None)
@@ -1444,7 +1444,7 @@ class TimelineContainer(Gtk.Grid, Zoomable, Loggable):
navigation_group = Gio.SimpleActionGroup()
self.timeline.layout.insert_action_group("navigation", navigation_group)
self.toolbar.insert_action_group("navigation", navigation_group)
- self.app.shortcuts.register_group("navigation", _("Timeline Navigation"))
+ self.app.shortcuts.register_group("navigation", _("Timeline Navigation"), position=40)
self.zoom_in_action = Gio.SimpleAction.new("zoom-in", None)
self.zoom_in_action.connect("activate", self._zoomInCb)
diff --git a/tests/test_shortcuts.py b/tests/test_shortcuts.py
index 9d12062..d77b3e8 100644
--- a/tests/test_shortcuts.py
+++ b/tests/test_shortcuts.py
@@ -34,10 +34,11 @@ class TestShortcutsManager(TestCase):
manager = ShortcutsManager(app)
# Test register_group method
- manager.register_group("alpha_group", "The very first test group")
+ manager.register_group("alpha_group", "One", position=20)
with self.assertRaises(AssertionError):
- manager.register_group("alpha_group", "")
- manager.register_group("beta_group", "Another test group")
+ manager.register_group("alpha_group", "", position=0)
+ manager.register_group("beta_group", "Two", position=10)
+ self.assertEqual(manager.groups, ["beta_group", "alpha_group"])
# Test grouping using the stripping away group name from action name
manager.add("alpha_group.first", ["<Primary>A"], "First action")
@@ -67,7 +68,7 @@ class TestShortcutsManager(TestCase):
manager = ShortcutsManager(app)
# Test the add is calling set_accels_for_action(),
# since there is no shortcuts.conf in the directory.
- manager.register_group("general", "General group")
+ manager.register_group("general", "General group", position=0)
manager.add("prefix.action1", ["<Primary>P"], "Action one")
self.assertEqual(app.set_accels_for_action.call_count, 1)
@@ -75,7 +76,7 @@ class TestShortcutsManager(TestCase):
# and test that add is not calling set_accels_for_action()
open(os.path.sep.join([temp_dir, "shortcuts.conf"]), "w").close()
manager2 = ShortcutsManager(app)
- manager2.register_group("other", "Other group")
+ manager2.register_group("other", "Other group", position=0)
manager2.add("prefix.action4", ["<Primary>W"],
"Action addition not invoking set_accels_for_action")
@@ -94,7 +95,7 @@ class TestShortcutsManager(TestCase):
self.assertEqual(app.set_accels_for_action.call_count, 0)
# Set default shortcuts
- manager.register_group("group", "Test group")
+ manager.register_group("group", "Test group", position=0)
manager.add("group.action1", ["<Primary>i"], "Action 1")
manager.add("group.action2", ["<Shift>p", "<Primary>m"], "Action 2")
manager.add("group.action3", ["<Primary><Shift>a", "a"], "Action 3")
@@ -123,7 +124,7 @@ class TestShortcutsManager(TestCase):
manager = ShortcutsManager(app)
# Set default shortcuts - they will be stored in self.defaults_accelerators.
- manager.register_group("group", "Test group")
+ manager.register_group("group", "Test group", position=0)
manager.add("group.action1", ["<Primary>i"], "Action 1")
manager.add("group.action2", ["<Shift>p"], "Action 2")
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]