diff options
author | Gary Bressler <garybressler@nc.rr.com> | 2010-04-12 11:58:37 -0400 |
---|---|---|
committer | Gary Bressler <garybressler@nc.rr.com> | 2010-04-12 11:58:37 -0400 |
commit | e3a1e19e87dbb3df413015bfc714283bc8602999 (patch) | |
tree | f59b14cdab486521065af473968b69f55244fc2b /unit_trace/viz/viewer.py | |
parent | ceff6457bfeb5642616f4711f14e0bb652d12164 (diff) |
Minor fixes
Diffstat (limited to 'unit_trace/viz/viewer.py')
-rw-r--r-- | unit_trace/viz/viewer.py | 61 |
1 files changed, 37 insertions, 24 deletions
diff --git a/unit_trace/viz/viewer.py b/unit_trace/viz/viewer.py index 4d1fb7f..5e707b8 100644 --- a/unit_trace/viz/viewer.py +++ b/unit_trace/viz/viewer.py | |||
@@ -116,19 +116,21 @@ class GraphArea(gtk.DrawingArea): | |||
116 | 116 | ||
117 | def get_schedule(self): | 117 | def get_schedule(self): |
118 | return self.renderer.get_schedule() | 118 | return self.renderer.get_schedule() |
119 | 119 | ||
120 | def zoom_in(self): | 120 | def zoom_in(self): |
121 | scale = self.scale + GraphArea.ZOOM_INCR | 121 | scale = self.scale + GraphArea.ZOOM_INCR |
122 | if scale > GraphArea.MAX_ZOOM_IN: | 122 | if scale > GraphArea.MAX_ZOOM_IN: |
123 | scale = GraphArea.MAX_ZOOM_IN | 123 | scale = GraphArea.MAX_ZOOM_IN |
124 | self.set_scale(scale) | 124 | self.set_scale(scale) |
125 | 125 | self.config_scrollbars(self.cur_x, self.cur_y, self.scale) | |
126 | |||
126 | def zoom_out(self): | 127 | def zoom_out(self): |
127 | scale = self.scale - GraphArea.ZOOM_INCR | 128 | scale = self.scale - GraphArea.ZOOM_INCR |
128 | if scale < GraphArea.MIN_ZOOM_OUT: | 129 | if scale < GraphArea.MIN_ZOOM_OUT: |
129 | scale = GraphArea.MIN_ZOOM_OUT | 130 | scale = GraphArea.MIN_ZOOM_OUT |
130 | self.set_scale(scale) | 131 | self.set_scale(scale) |
131 | 132 | self.config_scrollbars(self.cur_x, self.cur_y, self.scale) | |
133 | |||
132 | def set_scale(self, scale): | 134 | def set_scale(self, scale): |
133 | if scale == self.scale: | 135 | if scale == self.scale: |
134 | return | 136 | return |
@@ -136,6 +138,22 @@ class GraphArea(gtk.DrawingArea): | |||
136 | self.scale = scale | 138 | self.scale = scale |
137 | self._dirty(0, 0, self.width, self.height) | 139 | self._dirty(0, 0, self.width, self.height) |
138 | 140 | ||
141 | def set_hvalue(self, value): | ||
142 | if self.horizontal is None: | ||
143 | return | ||
144 | |||
145 | value = max(value, self.horizontal.get_lower()) | ||
146 | value = min(value, self.horizontal.get_upper() - self.horizontal.get_page_size()) | ||
147 | self.horizontal.set_value(value) | ||
148 | |||
149 | def set_vvalue(self, value): | ||
150 | if self.vertical is None: | ||
151 | return | ||
152 | |||
153 | value = max(value, self.vertical.get_lower()) | ||
154 | value = min(value, self.vertical.get_upper() - self.vertical.get_page_size()) | ||
155 | self.vertical.set_value(value) | ||
156 | |||
139 | def set_scroll_adjustments(self, widget, horizontal, vertical, data=None): | 157 | def set_scroll_adjustments(self, widget, horizontal, vertical, data=None): |
140 | graph = self.renderer.get_graph() | 158 | graph = self.renderer.get_graph() |
141 | width = graph.get_width() | 159 | width = graph.get_width() |
@@ -143,7 +161,7 @@ class GraphArea(gtk.DrawingArea): | |||
143 | 161 | ||
144 | self.horizontal = horizontal | 162 | self.horizontal = horizontal |
145 | self.vertical = vertical | 163 | self.vertical = vertical |
146 | self.config_scrollbars(self.cur_x, self.cur_y) | 164 | self.config_scrollbars(self.cur_x, self.cur_y, self.scale) |
147 | 165 | ||
148 | if self.horizontal is not None: | 166 | if self.horizontal is not None: |
149 | self.horizontal.connect('value-changed', self.horizontal_value_changed) | 167 | self.horizontal.connect('value-changed', self.horizontal_value_changed) |
@@ -167,22 +185,26 @@ class GraphArea(gtk.DrawingArea): | |||
167 | def size_allocate(self, widget, allocation): | 185 | def size_allocate(self, widget, allocation): |
168 | self.width = allocation.width | 186 | self.width = allocation.width |
169 | self.height = allocation.height | 187 | self.height = allocation.height |
170 | self.config_scrollbars(self.cur_x, self.cur_y) | 188 | self.config_scrollbars(self.cur_x, self.cur_y, self.scale) |
171 | 189 | ||
172 | def config_scrollbars(self, hvalue, vvalue): | 190 | def config_scrollbars(self, hvalue, vvalue, scale): |
173 | graph = self.renderer.get_graph() | 191 | graph = self.renderer.get_graph() |
174 | width = graph.get_width() | 192 | width = graph.get_width() |
175 | height = graph.get_height() | 193 | height = graph.get_height() |
176 | 194 | ||
177 | if self.horizontal is not None: | 195 | if self.horizontal is not None: |
178 | self.horizontal.set_all(hvalue, 0.0, width + self.width, | 196 | self.horizontal.set_all(0.0, 0.0, width, |
179 | graph.get_attrs().maj_sep * GraphArea.HORIZ_STEP_SCROLL_FACTOR, | 197 | graph.get_attrs().maj_sep * GraphArea.HORIZ_STEP_SCROLL_FACTOR / scale, |
180 | graph.get_attrs().maj_sep * GraphArea.HORIZ_PAGE_SCROLL_FACTOR, self.width) | 198 | graph.get_attrs().maj_sep * GraphArea.HORIZ_PAGE_SCROLL_FACTOR / scale, |
199 | self.width / scale) | ||
200 | self.set_hvalue(hvalue) | ||
181 | if self.vertical is not None: | 201 | if self.vertical is not None: |
182 | self.vertical.set_all(vvalue, 0.0, height + self.height, | 202 | self.vertical.set_all(0.0, 0.0, height, |
183 | graph.get_attrs().y_item_size * GraphArea.VERT_STEP_SCROLL_FACTOR, | 203 | graph.get_attrs().y_item_size * GraphArea.VERT_STEP_SCROLL_FACTOR / scale, |
184 | graph.get_attrs().y_item_size * GraphArea.VERT_PAGE_SCROLL_FACTOR, self.height) | 204 | graph.get_attrs().y_item_size * GraphArea.VERT_PAGE_SCROLL_FACTOR / scale, |
185 | 205 | self.height / scale) | |
206 | self.set_vvalue(vvalue) | ||
207 | |||
186 | def refresh_events(self, sender, new, old, replace): | 208 | def refresh_events(self, sender, new, old, replace): |
187 | """Even if the selected areas change on one graph, they change | 209 | """Even if the selected areas change on one graph, they change |
188 | everywhere, and different events might be in different regions on | 210 | everywhere, and different events might be in different regions on |
@@ -485,16 +507,10 @@ class GraphWindow(gtk.ScrolledWindow): | |||
485 | return True | 507 | return True |
486 | 508 | ||
487 | def set_hvalue(self, value): | 509 | def set_hvalue(self, value): |
488 | if self.get_hadjustment() is None: | 510 | self.get_graph_area().set_hvalue(value) |
489 | return | ||
490 | |||
491 | self.get_hadjustment().set_value(value) | ||
492 | 511 | ||
493 | def set_vvalue(self, value): | 512 | def set_vvalue(self, value): |
494 | if self.get_vadjustment() is None: | 513 | self.get_graph_area().set_vvalue(value) |
495 | return | ||
496 | |||
497 | self.get_vadjustment().set_value(value) | ||
498 | 514 | ||
499 | def _scroll_direction(self, keystr): | 515 | def _scroll_direction(self, keystr): |
500 | hadj = self.get_hadjustment() | 516 | hadj = self.get_hadjustment() |
@@ -721,9 +737,6 @@ class MainWindow(gtk.Window): | |||
721 | garea = self.notebook.get_nth_page(i).get_graph_area() | 737 | garea = self.notebook.get_nth_page(i).get_graph_area() |
722 | # Center as much as possible | 738 | # Center as much as possible |
723 | pos = garea.get_graph().get_time_xpos(time) - garea.get_width() / 2.0 | 739 | pos = garea.get_graph().get_time_xpos(time) - garea.get_width() / 2.0 |
724 | pos = max(0, pos) | ||
725 | pos = min(garea.get_graph().get_width(), pos) | ||
726 | |||
727 | self.notebook.get_nth_page(i).set_hvalue(pos) | 740 | self.notebook.get_nth_page(i).set_hvalue(pos) |
728 | else: | 741 | else: |
729 | err_dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, | 742 | err_dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, |