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 | |
| parent | ceff6457bfeb5642616f4711f14e0bb652d12164 (diff) | |
Minor fixes
Diffstat (limited to 'unit_trace')
| -rw-r--r-- | unit_trace/viz/format.py | 6 | ||||
| -rw-r--r-- | unit_trace/viz/viewer.py | 61 | ||||
| -rwxr-xr-x | unit_trace/viz/visualizer.py | 10 |
3 files changed, 44 insertions, 33 deletions
diff --git a/unit_trace/viz/format.py b/unit_trace/viz/format.py index c544e26..d3ed4fd 100644 --- a/unit_trace/viz/format.py +++ b/unit_trace/viz/format.py | |||
| @@ -80,9 +80,9 @@ class GraphFormat(object): | |||
| 80 | SMALL_ARROW_FACTOR = 0.6 | 80 | SMALL_ARROW_FACTOR = 0.6 |
| 81 | COMPLETION_MARKER_FACTOR = 1.6 | 81 | COMPLETION_MARKER_FACTOR = 1.6 |
| 82 | 82 | ||
| 83 | def __init__(self, time_per_maj=DEF_TIME_PER_MAJ, maj_sep=DEF_MAJ_SEP, \ | 83 | def __init__(self, time_per_maj=DEF_TIME_PER_MAJ, maj_sep=DEF_MAJ_SEP, |
| 84 | min_per_maj=DEF_MIN_PER_MAJ, y_item_size=DEF_Y_ITEM_SIZE, bar_fopts=DEF_FOPTS_BAR, \ | 84 | min_per_maj=DEF_MIN_PER_MAJ, y_item_size=DEF_Y_ITEM_SIZE, bar_fopts=DEF_FOPTS_BAR, |
| 85 | item_fopts=DEF_FOPTS_ITEM, show_min=False, majfopts=DEF_FOPTS_MAJ, \ | 85 | item_fopts=DEF_FOPTS_ITEM, show_min=False, majfopts=DEF_FOPTS_MAJ, |
| 86 | minfopts=DEF_FOPTS_MIN): | 86 | minfopts=DEF_FOPTS_MIN): |
| 87 | self.time_per_maj = time_per_maj | 87 | self.time_per_maj = time_per_maj |
| 88 | self.maj_sep = maj_sep | 88 | self.maj_sep = maj_sep |
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, |
diff --git a/unit_trace/viz/visualizer.py b/unit_trace/viz/visualizer.py index c0186f7..e80b764 100755 --- a/unit_trace/viz/visualizer.py +++ b/unit_trace/viz/visualizer.py | |||
| @@ -8,16 +8,14 @@ import format | |||
| 8 | import pygtk | 8 | import pygtk |
| 9 | import gtk | 9 | import gtk |
| 10 | 10 | ||
| 11 | TIME_PER_MAJ = 10000000 | 11 | def visualizer(stream, time_per_maj): |
| 12 | |||
| 13 | def visualizer(stream): | ||
| 14 | sched = convert.convert_trace_to_schedule(stream) | 12 | sched = convert.convert_trace_to_schedule(stream) |
| 15 | sched.scan(TIME_PER_MAJ) | 13 | sched.scan(time_per_maj) |
| 16 | 14 | ||
| 17 | task_renderer = renderer.Renderer(sched) | 15 | task_renderer = renderer.Renderer(sched) |
| 18 | task_renderer.prepare_task_graph(attrs=format.GraphFormat(time_per_maj=TIME_PER_MAJ)) | 16 | task_renderer.prepare_task_graph(attrs=format.GraphFormat(time_per_maj=time_per_maj)) |
| 19 | cpu_renderer = renderer.Renderer(sched) | 17 | cpu_renderer = renderer.Renderer(sched) |
| 20 | cpu_renderer.prepare_cpu_graph(attrs=format.GraphFormat(time_per_maj=TIME_PER_MAJ)) | 18 | cpu_renderer.prepare_cpu_graph(attrs=format.GraphFormat(time_per_maj=time_per_maj)) |
| 21 | 19 | ||
| 22 | window = viewer.MainWindow() | 20 | window = viewer.MainWindow() |
| 23 | window.set_renderers({'Tasks' : task_renderer, 'CPUs' : cpu_renderer}) | 21 | window.set_renderers({'Tasks' : task_renderer, 'CPUs' : cpu_renderer}) |
