diff --git a/debug-viewer/GstDebugViewer/GUI.py b/debug-viewer/GstDebugViewer/GUI.py
index 2dca01abf4..d676d17744 100755
--- a/debug-viewer/GstDebugViewer/GUI.py
+++ b/debug-viewer/GstDebugViewer/GUI.py
@@ -1340,6 +1340,44 @@ class LineView (object):
self.clear ()
+class ProgressDialog (object):
+
+ def __init__ (self, window, title = ""):
+
+ widgets = window.widget_factory.make ("progress_dialog")
+ dialog = widgets.progress_dialog
+ dialog.connect ("response", self.__handle_dialog_response)
+
+ self.__dialog = dialog
+ self.__progress_bar = widgets.progress_bar
+ self.__progress_bar.props.text = title
+
+ dialog.set_transient_for (window.gtk_window)
+ dialog.show ()
+
+ def __handle_dialog_response (self, dialog, resp):
+
+ self.handle_cancel ()
+
+ def handle_cancel (self):
+
+ pass
+
+ def update (self, progress):
+
+ if self.__progress_bar is None:
+ return
+
+ self.__progress_bar.props.fraction = progress
+
+ def destroy (self):
+
+ if self.__dialog is None:
+ return
+ self.__dialog.destroy ()
+ self.__dialog = None
+ self.__progress_bar = None
+
class Window (object):
def __init__ (self, app):
@@ -1348,7 +1386,7 @@ class Window (object):
self.app = app
self.dispatcher = None
- self.progress_bar = None
+ self.progress_dialog = None
self.update_progress_id = None
self.window_state = Common.GUI.WindowState ()
@@ -1579,10 +1617,10 @@ class Window (object):
self.logger.debug ("cancelling data load")
self.set_log_file (None)
+
if self.progress_dialog:
self.progress_dialog.destroy ()
self.progress_dialog = None
- self.progress_bar = None
if self.update_progress_id is not None:
gobject.source_remove (self.update_progress_id)
self.update_progress_id = None
@@ -1769,30 +1807,23 @@ class Window (object):
self.logger.debug ("load has started")
- widgets = self.widget_factory.make ("progress_dialog")
- dialog = widgets.progress_dialog
- dialog.connect ("response", self.handle_progress_dialog_response)
- self.progress_dialog = dialog
- self.progress_bar = widgets.progress_bar
- dialog.set_transient_for (self.gtk_window)
- dialog.show ()
-
+ self.progress_dialog = ProgressDialog (self, _("Loading log file"))
+ self.progress_dialog.handle_cancel = self.handle_load_progress_dialog_cancel
self.update_progress_id = gobject.timeout_add (250, self.update_load_progress)
- def handle_progress_dialog_response (self, dialog, response):
+ def handle_load_progress_dialog_cancel (self):
self.actions.cancel_load.activate ()
def update_load_progress (self):
- if not self.progress_bar:
- self.logger.debug ("progress window is gone, removing progress update timeout")
+ if self.progress_dialog is None:
+ self.logger.debug ("progress dialog is gone, removing progress update timeout")
self.update_progress_id = None
return False
progress = self.log_file.get_load_progress ()
- self.logger.debug ("update progress to %i%%", progress * 100)
- self.progress_bar.props.fraction = progress
+ self.progress_dialog.update (progress)
return True
@@ -1800,14 +1831,8 @@ class Window (object):
self.logger.debug ("load has finshed")
- if self.update_progress_id is not None:
- gobject.source_remove (self.update_progress_id)
- self.update_progress_id = None
-
- self.progress_dialog.hide ()
self.progress_dialog.destroy ()
self.progress_dialog = None
- self.progress_bar = None
self.log_model.set_log (self.log_file)
self.log_filter = FilteredLogModelIdentity (self.log_model)
diff --git a/debug-viewer/data/gst-debug-viewer.glade b/debug-viewer/data/gst-debug-viewer.glade
index 8c984809bf..cc0eed7ee8 100644
--- a/debug-viewer/data/gst-debug-viewer.glade
+++ b/debug-viewer/data/gst-debug-viewer.glade
@@ -484,7 +484,7 @@ Public License instead of this License.
True
- Loading log...
+
GTK_WINDOW_TOPLEVEL
GTK_WIN_POS_CENTER_ON_PARENT
True
@@ -545,7 +545,7 @@ Public License instead of this License.
GTK_PROGRESS_LEFT_TO_RIGHT
0
0.10000000149
- Loading file
+
PANGO_ELLIPSIZE_NONE