diff options
author | René Stadler <mail@renestadler.de> | 2011-11-05 23:52:40 +0100 |
---|---|---|
committer | René Stadler <mail@renestadler.de> | 2011-11-06 00:02:36 +0100 |
commit | 32da7ebe7ee5b349070991b15ba3cc54c3b86b51 (patch) | |
tree | cecee6e594c505d4948c652bf6fd6fafc8ce97b9 | |
parent | 3e27cb4e0abde5433a212d47e9b44daf750e24dc (diff) |
Refactor and fix zoom handling
ColumnManager has to apply the zoom factor to newly added columns. Otherwise,
showing a previously hidden column appears with scale 1.0.
This also drops the value-changed signal emission for the vadjustment, as it is
apparently not needed.
-rw-r--r-- | GstDebugViewer/GUI/columns.py | 15 | ||||
-rw-r--r-- | GstDebugViewer/GUI/window.py | 27 |
2 files changed, 32 insertions, 10 deletions
diff --git a/GstDebugViewer/GUI/columns.py b/GstDebugViewer/GUI/columns.py index 62df7f3..0579a41 100644 --- a/GstDebugViewer/GUI/columns.py +++ b/GstDebugViewer/GUI/columns.py @@ -377,6 +377,7 @@ class ColumnManager (Common.GUI.Manager): self.view = None self.actions = None + self.zoom = 1.0 self.__columns_changed_id = None self.columns = [] self.column_order = list (self.column_classes) @@ -450,6 +451,15 @@ class ColumnManager (Common.GUI.Manager): sort_model.set_sort_column_id (TREE_SORTABLE_UNSORTED_COLUMN_ID, gtk.SORT_ASCENDING) + def set_zoom (self, scale): + + for column in self.columns: + cell = column.view_column.get_cell_renderers ()[0] + cell.props.scale = scale + column.view_column.queue_resize () + + self.zoom = scale + def get_toggle_action (self, column_class): action_name = "show-%s-column" % (column_class.name,) @@ -463,8 +473,13 @@ class ColumnManager (Common.GUI.Manager): name = column.name pos = self.__get_column_insert_position (column) + if self.view.props.fixed_height_mode: column.view_column.props.sizing = gtk.TREE_VIEW_COLUMN_FIXED + + cell = column.view_column.get_cell_renderers ()[0] + cell.props.scale = self.zoom + self.columns.insert (pos, column) self.view.insert_column (column.view_column, pos) diff --git a/GstDebugViewer/GUI/window.py b/GstDebugViewer/GUI/window.py index ee3437d..411c155 100644 --- a/GstDebugViewer/GUI/window.py +++ b/GstDebugViewer/GUI/window.py @@ -19,6 +19,8 @@ """GStreamer Debug Viewer GUI module.""" +ZOOM_FACTOR = 1.15 + def _ (s): return s @@ -286,6 +288,7 @@ class Window (object): def attach (self): + self.zoom_level = 0 self.window_state.attach (window = self.gtk_window, state = self.app.state_section) @@ -577,18 +580,22 @@ class Window (object): self.clipboard.set_text (self.get_active_line ()[col_id]) def handle_enlarge_text_action_activate (self, action): - for col in self.column_manager.columns: - cell = col.view_column.get_cell_renderers ()[0] - cell.props.scale *= 1.15 - col.view_column.queue_resize () - self.widgets.log_view_scrolled_window.props.vadjustment.emit ("value-changed") + + self.update_zoom_level (1) def handle_shrink_text_action_activate (self, action): - for col in self.column_manager.columns: - cell = col.view_column.get_cell_renderers ()[0] - cell.props.scale /= 1.15 - col.view_column.queue_resize () - self.widgets.log_view_scrolled_window.props.vadjustment.emit ("value-changed") + + self.update_zoom_level (-1) + + def update_zoom_level (self, delta_step): + + if not delta_step: + return + + self.zoom_level += delta_step + scale = ZOOM_FACTOR ** self.zoom_level + + self.column_manager.set_zoom (scale) def add_model_filter (self, filter): |