summaryrefslogtreecommitdiffstats
path: root/unit_trace/viz/viewer.py
diff options
context:
space:
mode:
authorMac Mollison <mollison@cs.unc.edu>2010-04-13 12:28:49 -0400
committerMac Mollison <mollison@cs.unc.edu>2010-04-13 12:28:49 -0400
commit51e246d367d043913a882080abde3d8bae5ce4d4 (patch)
tree8da2a8071f6fbfb36b3362c2bf46a63e99373116 /unit_trace/viz/viewer.py
parentde297ade4c09eb63b30d567598bf33c0e1c38fc9 (diff)
parent533dd1ba6651f14c68e9323b5cc5a4f938f4e495 (diff)
Merge branch 'wip-gary'
- Adds time_per_maj option to visualizer Conflicts: unit-trace
Diffstat (limited to 'unit_trace/viz/viewer.py')
-rw-r--r--unit_trace/viz/viewer.py53
1 files changed, 33 insertions, 20 deletions
diff --git a/unit_trace/viz/viewer.py b/unit_trace/viz/viewer.py
index 4d1fb7f..fb31e8a 100644
--- a/unit_trace/viz/viewer.py
+++ b/unit_trace/viz/viewer.py
@@ -122,12 +122,14 @@ class GraphArea(gtk.DrawingArea):
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 self.config_scrollbars(self.cur_x, self.cur_y, self.scale)
125 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)
132 self.config_scrollbars(self.cur_x, self.cur_y, self.scale)
131 133
132 def set_scale(self, scale): 134 def set_scale(self, scale):
133 if scale == self.scale: 135 if scale == self.scale:
@@ -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,21 +185,25 @@ 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,
205 self.height / scale)
206 self.set_vvalue(vvalue)
185 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
@@ -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,