Add GUI utility function to add a popup menu to a widget
authorRené Stadler <mail@renestadler.de>
Fri, 7 Dec 2007 14:24:01 +0000 (16:24 +0200)
committerStefan Sauer <ensonic@users.sf.net>
Thu, 11 Sep 2014 18:51:42 +0000 (20:51 +0200)
debug-viewer/GstDebugViewer/Common/GUI.py
debug-viewer/GstDebugViewer/GUI.py
debug-viewer/GstDebugViewer/Plugins/Timeline.py

index cf4af08..a4ddeb2 100644 (file)
@@ -30,6 +30,18 @@ import gtk
 
 from GstDebugViewer.Common import utils
 
+def widget_add_popup_menu (widget, menu, button = 3):
+
+    def popup_callback (widget, event):
+
+        if event.button == button:
+            menu.popup (None, None, None, event.button, event.get_time ())
+            return True
+        else:
+            return False
+
+    widget.connect ("button-press-event", popup_callback)
+
 class Actions (dict):
 
     def __init__ (self):
index 61d67c8..14dd44a 100755 (executable)
@@ -1212,13 +1212,12 @@ class LineView (object):
         handler = self.handle_clear_line_view_action_activate
         self.clear_action.connect ("activate", handler)
 
-        ui = window.ui_manager
-        self.popup = ui.get_widget ("/ui/context/LineViewContextMenu").get_submenu ()
-
         self.line_view = window.widgets.line_view
         self.line_view.connect ("row-activated", self.handle_line_view_row_activated)
-        self.line_view.connect ("button-press-event",
-                                self.handle_line_view_button_press_event)
+
+        ui = window.ui_manager
+        self.popup = ui.get_widget ("/ui/context/LineViewContextMenu").get_submenu ()
+        Common.GUI.widget_add_popup_menu (self.line_view, self.popup)
 
         self.log_view = log_view = window.log_view
         log_view.connect ("row-activated", self.handle_log_view_row_activated)
@@ -1304,14 +1303,6 @@ class LineView (object):
 
         self.clear ()
 
-    def handle_line_view_button_press_event (self, line_view, event):
-
-        if event.button != 3:
-            return False
-
-        self.popup.popup (None, None, None, event.button, event.get_time ())
-        return True
-
 class Window (object):
 
     def __init__ (self, app):
@@ -1379,7 +1370,6 @@ class Window (object):
         self.ui_manager = ui = self.ui_factory.make ()
         menubar = ui.get_widget ("/ui/menubar")        
         self.widgets.vbox_main.pack_start (menubar, False, False, 0)
-        self.view_popup = ui.get_widget ("/ui/menubar/ViewMenu").get_submenu ()
 
         self.gtk_window = self.widgets.main_window
         self.gtk_window.add_accel_group (ui.get_accel_group ())
@@ -1387,7 +1377,8 @@ class Window (object):
         self.log_view.drag_dest_unset ()
         self.log_view.set_search_column (-1)
 
-        self.log_view.connect ("button-press-event", self.handle_log_view_button_press_event)
+        self.view_popup = ui.get_widget ("/ui/menubar/ViewMenu").get_submenu ()
+        Common.GUI.widget_add_popup_menu (self.log_view, self.view_popup)
 
         self.line_view = LineView ()
 
@@ -1721,14 +1712,6 @@ class Window (object):
         dialog.run ()
         dialog.destroy ()
 
-    def handle_log_view_button_press_event (self, view, event):
-
-        if event.button != 3:
-            return False
-
-        self.view_popup.popup (None, None, None, event.button, event.get_time ())
-        return True
-
     def handle_load_started (self):
 
         self.logger.debug ("load has started")
index 5a437db..757369e 100644 (file)
@@ -660,8 +660,6 @@ class TimelineFeature (FeatureBase):
                    "hide-after-line", gtk.UI_MANAGER_MENUITEM, False)
         ui.add_ui (self.merge_id, "/TimelineContextMenu", "TimelineShowHiddenLines",
                    "show-hidden-lines", gtk.UI_MANAGER_MENUITEM, False)
-
-        self.popup = ui.get_widget ("/TimelineContextMenu")
         
         box = window.get_top_attach_point ()
 
@@ -672,6 +670,9 @@ class TimelineFeature (FeatureBase):
         box.pack_start (self.timeline, False, False, 0)
         self.timeline.hide ()
 
+        self.popup = ui.get_widget ("/TimelineContextMenu")
+        Common.GUI.widget_add_popup_menu (self.timeline, self.popup)
+
         box = window.get_side_attach_point ()
 
         self.vtimeline = VerticalTimelineWidget ()
@@ -805,12 +806,8 @@ class TimelineFeature (FeatureBase):
 
     def handle_timeline_button_press_event (self, widget, event):
 
-        if event.button == 3:
-            self.popup.popup (None, None, None, event.button, event.get_time ())
-            return True
-
         if event.button != 1:
-            return True
+            return False
 
         # TODO: Check if clicked inside a warning/error indicator triangle and
         # navigate there.