diff options
author | Steven Rostedt <srostedt@redhat.com> | 2009-12-29 18:25:04 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2009-12-29 18:25:04 -0500 |
commit | d4c933761708232329bd255b51748a05a3222ec3 (patch) | |
tree | 1e6c595c1c84994e3f30b315f77243980e250016 | |
parent | c2fe7bb90488951ec0cce2d60d3ea03acf70ff06 (diff) |
trace-graph: Return generic widget for graph
In order to add another column to store the information of a bar
(like CPU, or TASK) we need to have more than one widget and control
the scrollwindow.
This patch places the scrollwindow inside the management of the
graph code, and returns a hbox to the caller.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | kernel-shark.c | 23 | ||||
-rw-r--r-- | trace-graph-main.c | 22 | ||||
-rw-r--r-- | trace-graph.c | 23 | ||||
-rw-r--r-- | trace-graph.h | 12 |
4 files changed, 41 insertions, 39 deletions
diff --git a/kernel-shark.c b/kernel-shark.c index 0d72459..6e1c206 100644 --- a/kernel-shark.c +++ b/kernel-shark.c | |||
@@ -169,7 +169,7 @@ void kernel_shark(int argc, char **argv) | |||
169 | GtkWidget *menu_item; | 169 | GtkWidget *menu_item; |
170 | GtkWidget *sub_item; | 170 | GtkWidget *sub_item; |
171 | GtkWidget *scrollwin; | 171 | GtkWidget *scrollwin; |
172 | GtkWidget *draw; | 172 | GtkWidget *widget; |
173 | GtkWidget *label; | 173 | GtkWidget *label; |
174 | GtkWidget *spin; | 174 | GtkWidget *spin; |
175 | int c; | 175 | int c; |
@@ -303,26 +303,15 @@ void kernel_shark(int argc, char **argv) | |||
303 | gtk_widget_show(vpaned); | 303 | gtk_widget_show(vpaned); |
304 | gtk_paned_set_position(GTK_PANED(vpaned), TRACE_HEIGHT / 2); | 304 | gtk_paned_set_position(GTK_PANED(vpaned), TRACE_HEIGHT / 2); |
305 | 305 | ||
306 | /* --- Scroll Window --- */ | ||
307 | scrollwin = gtk_scrolled_window_new(NULL, NULL); | ||
308 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), | ||
309 | GTK_POLICY_AUTOMATIC, | ||
310 | GTK_POLICY_AUTOMATIC); | ||
311 | gtk_paned_add1(GTK_PANED(vpaned), scrollwin); | ||
312 | gtk_widget_show(scrollwin); | ||
313 | 306 | ||
314 | /* --- Set up Drawing --- */ | 307 | /* --- Set up Graph --- */ |
315 | 308 | ||
316 | info->graph_cbs.select = ks_graph_select; | 309 | info->graph_cbs.select = ks_graph_select; |
317 | 310 | ||
318 | info->ginfo = trace_graph_create_with_callbacks(handle, GTK_SCROLLED_WINDOW(scrollwin), | 311 | info->ginfo = trace_graph_create_with_callbacks(handle, &info->graph_cbs); |
319 | &info->graph_cbs); | 312 | widget = trace_graph_get_window(info->ginfo); |
320 | draw = trace_graph_get_draw(info->ginfo); | 313 | gtk_paned_add1(GTK_PANED(vpaned), widget); |
321 | 314 | gtk_widget_show(widget); | |
322 | gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollwin), | ||
323 | draw); | ||
324 | gtk_widget_show(draw); | ||
325 | |||
326 | 315 | ||
327 | 316 | ||
328 | /* --- Tree View Vbox --- */ | 317 | /* --- Tree View Vbox --- */ |
diff --git a/trace-graph-main.c b/trace-graph-main.c index 54194e1..de6bd12 100644 --- a/trace-graph-main.c +++ b/trace-graph-main.c | |||
@@ -51,8 +51,7 @@ void trace_graph(int argc, char **argv) | |||
51 | GtkWidget *menu; | 51 | GtkWidget *menu; |
52 | GtkWidget *menu_item; | 52 | GtkWidget *menu_item; |
53 | GtkWidget *sub_item; | 53 | GtkWidget *sub_item; |
54 | GtkWidget *scrollwin; | 54 | GtkWidget *widget; |
55 | GtkWidget *draw; | ||
56 | int c; | 55 | int c; |
57 | 56 | ||
58 | while ((c = getopt(argc, argv, "hi:")) != -1) { | 57 | while ((c = getopt(argc, argv, "hi:")) != -1) { |
@@ -134,22 +133,13 @@ void trace_graph(int argc, char **argv) | |||
134 | gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); | 133 | gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); |
135 | gtk_widget_show(hbox); | 134 | gtk_widget_show(hbox); |
136 | 135 | ||
137 | /* --- Scroll Window --- */ | ||
138 | scrollwin = gtk_scrolled_window_new(NULL, NULL); | ||
139 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), | ||
140 | GTK_POLICY_AUTOMATIC, | ||
141 | GTK_POLICY_AUTOMATIC); | ||
142 | gtk_box_pack_start(GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0); | ||
143 | gtk_widget_show(scrollwin); | ||
144 | 136 | ||
145 | /* --- Set up Drawing --- */ | 137 | /* --- Set up the Graph --- */ |
146 | 138 | ||
147 | ginfo = trace_graph_create(handle, GTK_SCROLLED_WINDOW(scrollwin)); | 139 | ginfo = trace_graph_create(handle); |
148 | draw = trace_graph_get_draw(ginfo); | 140 | widget = trace_graph_get_window(ginfo); |
149 | 141 | gtk_box_pack_start(GTK_BOX (hbox), widget, TRUE, TRUE, 0); | |
150 | gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollwin), | 142 | gtk_widget_show(widget); |
151 | draw); | ||
152 | gtk_widget_show(draw); | ||
153 | 143 | ||
154 | 144 | ||
155 | /********************************************** | 145 | /********************************************** |
diff --git a/trace-graph.c b/trace-graph.c index 1f0fedd..b003ab4 100644 --- a/trace-graph.c +++ b/trace-graph.c | |||
@@ -1227,7 +1227,7 @@ destroy_event(GtkWidget *widget, gpointer data) | |||
1227 | 1227 | ||
1228 | 1228 | ||
1229 | struct graph_info * | 1229 | struct graph_info * |
1230 | trace_graph_create_with_callbacks(struct tracecmd_input *handle, GtkScrolledWindow *scrollwin, | 1230 | trace_graph_create_with_callbacks(struct tracecmd_input *handle, |
1231 | struct graph_callbacks *cbs) | 1231 | struct graph_callbacks *cbs) |
1232 | { | 1232 | { |
1233 | struct graph_info *ginfo; | 1233 | struct graph_info *ginfo; |
@@ -1247,8 +1247,19 @@ trace_graph_create_with_callbacks(struct tracecmd_input *handle, GtkScrolledWind | |||
1247 | ginfo->start_time = -1ULL; | 1247 | ginfo->start_time = -1ULL; |
1248 | ginfo->end_time = 0; | 1248 | ginfo->end_time = 0; |
1249 | 1249 | ||
1250 | ginfo->widget = gtk_hbox_new(FALSE, 0); | ||
1251 | gtk_widget_show(ginfo->widget); | ||
1252 | |||
1253 | ginfo->scrollwin = gtk_scrolled_window_new(NULL, NULL); | ||
1254 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ginfo->scrollwin), | ||
1255 | GTK_POLICY_AUTOMATIC, | ||
1256 | GTK_POLICY_AUTOMATIC); | ||
1257 | gtk_widget_show(ginfo->scrollwin); | ||
1258 | |||
1259 | gtk_box_pack_start(GTK_BOX (ginfo->widget), ginfo->scrollwin, TRUE, TRUE, 0); | ||
1260 | |||
1250 | ginfo->draw_height = CPU_SPACE(ginfo->cpus); | 1261 | ginfo->draw_height = CPU_SPACE(ginfo->cpus); |
1251 | ginfo->vadj = gtk_scrolled_window_get_hadjustment(scrollwin); | 1262 | ginfo->vadj = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(ginfo->scrollwin)); |
1252 | 1263 | ||
1253 | gtk_signal_connect(GTK_OBJECT(ginfo->vadj), "value_changed", | 1264 | gtk_signal_connect(GTK_OBJECT(ginfo->vadj), "value_changed", |
1254 | (GtkSignalFunc) value_changed, ginfo); | 1265 | (GtkSignalFunc) value_changed, ginfo); |
@@ -1303,11 +1314,15 @@ trace_graph_create_with_callbacks(struct tracecmd_input *handle, GtkScrolledWind | |||
1303 | | GDK_POINTER_MOTION_HINT_MASK); | 1314 | | GDK_POINTER_MOTION_HINT_MASK); |
1304 | 1315 | ||
1305 | 1316 | ||
1317 | gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(ginfo->scrollwin), | ||
1318 | ginfo->draw); | ||
1319 | gtk_widget_show(ginfo->draw); | ||
1320 | |||
1306 | return ginfo; | 1321 | return ginfo; |
1307 | } | 1322 | } |
1308 | 1323 | ||
1309 | struct graph_info * | 1324 | struct graph_info * |
1310 | trace_graph_create(struct tracecmd_input *handle, GtkScrolledWindow *scrollwin) | 1325 | trace_graph_create(struct tracecmd_input *handle) |
1311 | { | 1326 | { |
1312 | return trace_graph_create_with_callbacks(handle, scrollwin, NULL); | 1327 | return trace_graph_create_with_callbacks(handle, NULL); |
1313 | } | 1328 | } |
diff --git a/trace-graph.h b/trace-graph.h index d3e7e5c..d1b6c6f 100644 --- a/trace-graph.h +++ b/trace-graph.h | |||
@@ -15,6 +15,9 @@ struct graph_info { | |||
15 | struct tracecmd_input *handle; | 15 | struct tracecmd_input *handle; |
16 | struct pevent *pevent; | 16 | struct pevent *pevent; |
17 | gint cpus; | 17 | gint cpus; |
18 | GtkWidget *widget; /* Box to hold graph */ | ||
19 | GtkWidget *scrollwin; /* graph scroll window */ | ||
20 | GtkWidget *info; /* info window */ | ||
18 | GtkWidget *draw; | 21 | GtkWidget *draw; |
19 | GdkPixmap *curr_pixmap; /* pixmap backstore */ | 22 | GdkPixmap *curr_pixmap; /* pixmap backstore */ |
20 | GtkAdjustment *vadj; /* scrollwindow vert adjust */ | 23 | GtkAdjustment *vadj; /* scrollwindow vert adjust */ |
@@ -57,9 +60,9 @@ struct graph_info { | |||
57 | 60 | ||
58 | 61 | ||
59 | struct graph_info * | 62 | struct graph_info * |
60 | trace_graph_create(struct tracecmd_input *handle, GtkScrolledWindow *scrollwin); | 63 | trace_graph_create(struct tracecmd_input *handle); |
61 | struct graph_info * | 64 | struct graph_info * |
62 | trace_graph_create_with_callbacks(struct tracecmd_input *handle, GtkScrolledWindow *scrollwin, | 65 | trace_graph_create_with_callbacks(struct tracecmd_input *handle, |
63 | struct graph_callbacks *cbs); | 66 | struct graph_callbacks *cbs); |
64 | void trace_graph_select_by_time(struct graph_info *ginfo, guint64 time); | 67 | void trace_graph_select_by_time(struct graph_info *ginfo, guint64 time); |
65 | 68 | ||
@@ -73,4 +76,9 @@ static inline struct graph_callbacks *trace_graph_get_callbacks(struct graph_inf | |||
73 | return ginfo->callbacks; | 76 | return ginfo->callbacks; |
74 | } | 77 | } |
75 | 78 | ||
79 | static inline GtkWidget *trace_graph_get_window(struct graph_info *ginfo) | ||
80 | { | ||
81 | return ginfo->widget; | ||
82 | } | ||
83 | |||
76 | #endif /* _TRACE_GRAPH_H */ | 84 | #endif /* _TRACE_GRAPH_H */ |