summaryrefslogtreecommitdiffstats
path: root/unit_trace/viz/viewer.py
diff options
context:
space:
mode:
authorGary Bressler <garybressler@nc.rr.com>2010-04-12 11:58:37 -0400
committerGary Bressler <garybressler@nc.rr.com>2010-04-12 11:58:37 -0400
commite3a1e19e87dbb3df413015bfc714283bc8602999 (patch)
treef59b14cdab486521065af473968b69f55244fc2b /unit_trace/viz/viewer.py
parentceff6457bfeb5642616f4711f14e0bb652d12164 (diff)
Minor fixes
Diffstat (limited to 'unit_trace/viz/viewer.py')
-rw-r--r--unit_trace/viz/viewer.py61
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,