aboutsummaryrefslogtreecommitdiffstats
path: root/trace-graph.c
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-02-10 14:23:47 -0500
committerSteven Rostedt <rostedt@goodmis.org>2010-02-10 14:23:47 -0500
commite0b069a3dc344154c22c2c5ab825e1aab22907a8 (patch)
tree8c03979f75134ea135d3a2e1132870efeb06de96 /trace-graph.c
parent586385934cd776e268042c9061c6edbe129a0977 (diff)
trace-graph: Add popup menu to remove plot
Add a way to remove a plot. Todo: Add warning to remove plot Add ways to get back CPU plots Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'trace-graph.c')
-rw-r--r--trace-graph.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/trace-graph.c b/trace-graph.c
index dee08f4..f1dcf0c 100644
--- a/trace-graph.c
+++ b/trace-graph.c
@@ -430,6 +430,20 @@ plot_task_clicked (gpointer data)
430 update_label_window(ginfo); 430 update_label_window(ginfo);
431} 431}
432 432
433static void
434remove_plot_clicked (gpointer data)
435{
436 struct graph_info *ginfo = data;
437 int p = ginfo->plot_clicked;
438
439 if (p < 0)
440 return;
441
442 trace_graph_plot_remove(ginfo, p);
443 redraw_graph(ginfo);
444 update_label_window(ginfo);
445}
446
433static gboolean 447static gboolean
434do_pop_up(GtkWidget *widget, GdkEventButton *event, gpointer data) 448do_pop_up(GtkWidget *widget, GdkEventButton *event, gpointer data)
435{ 449{
@@ -440,6 +454,7 @@ do_pop_up(GtkWidget *widget, GdkEventButton *event, gpointer data)
440 static GtkWidget *menu_filter_hide_task; 454 static GtkWidget *menu_filter_hide_task;
441 static GtkWidget *menu_filter_clear_tasks; 455 static GtkWidget *menu_filter_clear_tasks;
442 static GtkWidget *menu_plot_task; 456 static GtkWidget *menu_plot_task;
457 static GtkWidget *menu_remove_plot;
443 struct record *record = NULL; 458 struct record *record = NULL;
444 struct graph_plot *plot; 459 struct graph_plot *plot;
445 const char *comm; 460 const char *comm;
@@ -494,6 +509,14 @@ do_pop_up(GtkWidget *widget, GdkEventButton *event, gpointer data)
494 G_CALLBACK (plot_task_clicked), 509 G_CALLBACK (plot_task_clicked),
495 data); 510 data);
496 511
512 menu_remove_plot = gtk_menu_item_new_with_label("Remove Plot");
513 gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_remove_plot);
514 gtk_widget_show(menu_remove_plot);
515
516 g_signal_connect_swapped (G_OBJECT (menu_remove_plot), "activate",
517 G_CALLBACK (remove_plot_clicked),
518 data);
519
497 } 520 }
498 521
499 if (ginfo->filter_enabled) 522 if (ginfo->filter_enabled)
@@ -516,15 +539,23 @@ do_pop_up(GtkWidget *widget, GdkEventButton *event, gpointer data)
516 539
517 time = convert_x_to_time(ginfo, x); 540 time = convert_x_to_time(ginfo, x);
518 541
542 ginfo->plot_clicked = -1;
543
519 for (i = 0; i < ginfo->plots; i++) { 544 for (i = 0; i < ginfo->plots; i++) {
520 if (y >= (PLOT_TOP(i) - PLOT_GIVE) && 545 if (y >= (PLOT_TOP(i) - PLOT_GIVE) &&
521 y <= (PLOT_BOTTOM(i) + PLOT_GIVE)) { 546 y <= (PLOT_BOTTOM(i) + PLOT_GIVE)) {
522 plot = ginfo->plot_array[i]; 547 plot = ginfo->plot_array[i];
523 record = trace_graph_plot_find_record(ginfo, plot, time); 548 record = trace_graph_plot_find_record(ginfo, plot, time);
549 ginfo->plot_clicked = i;
524 break; 550 break;
525 } 551 }
526 } 552 }
527 553
554 if (ginfo->plot_clicked < 0)
555 gtk_widget_set_sensitive(menu_remove_plot, FALSE);
556 else
557 gtk_widget_set_sensitive(menu_remove_plot, TRUE);
558
528 if (record) { 559 if (record) {
529 560
530 if (!trace_graph_check_sched_switch(ginfo, record, &pid, &comm)) { 561 if (!trace_graph_check_sched_switch(ginfo, record, &pid, &comm)) {