[pitivi] markers: Keyboard shortcut for adding a marker



commit c96cedb4608b3aa0528ef27a3937498b83b2fb0d
Author: Hugo Eduardo Ziviani <hugo_ziviani hotmail com>
Date:   Mon May 18 23:09:35 2020 -0300

    markers: Keyboard shortcut for adding a marker
    
    First part for fixing #2458

 pitivi/timeline/markers.py  | 39 ++++++++++++++++++++++++++++++++++-----
 pitivi/timeline/timeline.py |  3 +++
 2 files changed, 37 insertions(+), 5 deletions(-)
---
diff --git a/pitivi/timeline/markers.py b/pitivi/timeline/markers.py
index 60afad7c..e3b1286f 100644
--- a/pitivi/timeline/markers.py
+++ b/pitivi/timeline/markers.py
@@ -15,10 +15,15 @@
 # You should have received a copy of the GNU Lesser General Public
 # License along with this program; if not, see <http://www.gnu.org/licenses/>.
 """Markers display and management."""
+from gettext import gettext as _
+
 from gi.repository import Gdk
+from gi.repository import Gio
+from gi.repository import GLib
 from gi.repository import Gtk
 
 from pitivi.utils.loggable import Loggable
+from pitivi.utils.pipeline import PipelineError
 from pitivi.utils.timeline import Zoomable
 from pitivi.utils.ui import SPACING
 
@@ -44,7 +49,6 @@ class Marker(Gtk.EventBox, Loggable):
 
         self._selected = False
 
-    # pylint: disable=arguments-differ
     def do_get_request_mode(self):
         return Gtk.SizeRequestMode.CONSTANT_SIZE
 
@@ -123,6 +127,33 @@ class MarkersBox(Gtk.EventBox, Zoomable, Loggable):
                         Gdk.EventMask.BUTTON_PRESS_MASK |
                         Gdk.EventMask.BUTTON_RELEASE_MASK)
 
+        self._create_actions()
+
+    def _create_actions(self):
+        self.action_group = Gio.SimpleActionGroup()
+        self.insert_action_group("markers", self.action_group)
+        self.app.shortcuts.register_group("markers", _("Markers"), position=70)
+
+        self.add_marker_action = Gio.SimpleAction.new("marker-add", GLib.VariantType("mx"))
+        self.add_marker_action.connect("activate", self._add_marker_cb)
+        self.action_group.add_action(self.add_marker_action)
+        self.app.shortcuts.add("markers.marker-add(@mx nothing)", ["<Primary><Shift>m"],
+                               self.add_marker_action, _("Add a marker"))
+
+    def _add_marker_cb(self, action, param):
+        maybe = param.get_maybe()
+        if maybe:
+            position = maybe.get_int64()
+        else:
+            try:
+                position = self.app.project_manager.current_project.pipeline.get_position(fails=False)
+            except PipelineError:
+                self.warning("Could not get pipeline position")
+                return
+
+        with self.app.action_log.started("Added marker", toplevel=True):
+            self.__markers_container.add(position)
+
     @property
     def markers_container(self):
         """Gets the GESMarkerContainer."""
@@ -162,7 +193,6 @@ class MarkersBox(Gtk.EventBox, Zoomable, Loggable):
             position = self.ns_to_pixel(marker.position) - self.offset - MARKER_WIDTH / 2
             self.layout.move(marker, position, 0)
 
-    # pylint: disable=arguments-differ
     def do_button_press_event(self, event):
         event_widget = Gtk.get_event_widget(event)
         button = event.button
@@ -181,8 +211,8 @@ class MarkersBox(Gtk.EventBox, Zoomable, Loggable):
 
             else:
                 position = self.pixel_to_ns(event.x + self.offset)
-                with self.app.action_log.started("Added marker", toplevel=True):
-                    self.__markers_container.add(position)
+                param = GLib.Variant.new_maybe(GLib.VariantType("x"), GLib.Variant.new_int64(position))
+                self.add_marker_action.activate(param)
                 self.marker_new.selected = True
 
     def do_button_release_event(self, event):
@@ -265,7 +295,6 @@ class MarkerPopover(Gtk.Popover):
         self.set_relative_to(self.marker)
         self.show_all()
 
-    # pylint: disable=arguments-differ
     def do_closed(self):
         buffer = self.text_view.get_buffer()
         if buffer.props.text != self.marker.comment:
diff --git a/pitivi/timeline/timeline.py b/pitivi/timeline/timeline.py
index db0d2eca..4ce29da3 100644
--- a/pitivi/timeline/timeline.py
+++ b/pitivi/timeline/timeline.py
@@ -1814,6 +1814,9 @@ class TimelineContainer(Gtk.Grid, Zoomable, Loggable):
                                self.forward_one_second_action,
                                _("Seek forward one second"))
 
+        # Markers actions.
+        self.timeline.layout.insert_action_group("markers", self.markers.action_group)
+
         # Viewer actions.
         self.timeline.layout.insert_action_group("viewer", self.app.gui.editor.viewer.action_group)
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]