summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--GstDebugViewer/GUI/window.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/GstDebugViewer/GUI/window.py b/GstDebugViewer/GUI/window.py
index fc35980..a377243 100644
--- a/GstDebugViewer/GUI/window.py
+++ b/GstDebugViewer/GUI/window.py
@@ -292,6 +292,13 @@ class Window (object):
self.view_popup = ui.get_widget ("/ui/context/LogViewContextMenu").get_submenu ()
Common.GUI.widget_add_popup_menu (self.log_view, self.view_popup)
+ # Widgets to set insensitive when the window is considered as
+ # such. This is done during loading/filtering, where we can't set the
+ # whole window insensitive because the progress info bar should be
+ # usable to allow cancellation.
+ self.main_sensitivity = [menubar]
+ self.main_sensitivity.extend (self.widgets.vbox_main.get_children ())
+
self.line_view = LineView ()
self.attach ()
@@ -543,6 +550,8 @@ class Window (object):
gobject.source_remove (self.update_progress_id)
self.update_progress_id = None
+ self.set_sensitive (True)
+
@action
def handle_close_window_action_activate (self, action):
@@ -654,6 +663,11 @@ class Window (object):
self.app.state_section.zoom_level = int (round (scale * 100.))
+ def set_sensitive (self, sensitive):
+
+ for widget in self.main_sensitivity:
+ widget.props.sensitive = sensitive
+
def show_info (self, widget):
self.hide_info ()
@@ -692,6 +706,8 @@ class Window (object):
gobject.timeout_add (250, self.update_filter_progress)
+ self.set_sensitive (False)
+
def update_filter_progress (self):
if self.progress_dialog is None:
@@ -716,6 +732,8 @@ class Window (object):
self.log_view.set_model (self.log_filter)
self.pop_view_state ()
+ self.set_sensitive (True)
+
def handle_log_filter_process_finished (self):
self.hide_info ()
@@ -727,6 +745,8 @@ class Window (object):
self.actions.show_hidden_lines.props.sensitive = True
+ self.set_sensitive (True)
+
@action
def handle_set_base_time_action_activate (self, action):
@@ -853,6 +873,8 @@ class Window (object):
self.progress_dialog.handle_cancel = self.handle_load_progress_dialog_cancel
self.update_progress_id = gobject.timeout_add (250, self.update_load_progress)
+ self.set_sensitive (False)
+
def handle_load_progress_dialog_cancel (self):
self.actions.cancel_load.activate ()
@@ -884,6 +906,8 @@ class Window (object):
self.actions.groups["RowActions"].props.sensitive = True
self.actions.show_hidden_lines.props.sensitive = False
+ self.set_sensitive (True)
+
if len (self.log_model) == 0:
self.show_error (_("The file does not contain any parsable lines."),
_("It is not a GStreamer log file."))