From: compudj Date: Sat, 27 Aug 2005 03:23:23 +0000 (+0000) Subject: add control flow view legend X-Git-Tag: v0.12.20~2405 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=0de51231df955953661f9bf712394961524092d9;p=lttv.git add control flow view legend git-svn-id: http://ltt.polymtl.ca/svn@1084 04897980-b3bd-0310-b5e0-8ef037075253 --- diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c b/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c index 60169687..082a8ff9 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c @@ -48,7 +48,6 @@ header_size_allocate(GtkWidget *widget, } - /***************************************************************************** * Control Flow Viewer class implementation * *****************************************************************************/ @@ -151,7 +150,6 @@ guicontrolflow(void) //inserted in the main window before the drawing area //can be configured (and this must happend bedore sending //data) - return control_flow_data; diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.h b/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.h index 0b2caea1..3e469bab 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.h @@ -50,7 +50,7 @@ struct _ControlFlowData { Drawing_t *drawing; GtkAdjustment *v_adjust ; - + /* Shown events information */ // TimeWindow time_window; // LttTime current_time; @@ -62,7 +62,6 @@ struct _ControlFlowData { } ; - /* Control Flow Data constructor */ ControlFlowData *guicontrolflow(void); void diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c index cf48bda0..a31234c6 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c @@ -69,6 +69,7 @@ #include #include #include +#include #include "eventhooks.h" @@ -79,6 +80,8 @@ #define MAX_PATH_LEN 256 +extern GSList *g_legend_list; + #if 0 typedef struct _ProcessAddClosure { ControlFlowData *cfd; @@ -263,6 +266,46 @@ h_guicontrolflow(Tab *tab) } +void legend_destructor(GtkWindow *legend) +{ + g_legend_list = g_slist_remove(g_legend_list, legend); +} + +/* Create a popup legend */ +GtkWidget * +h_legend(Tab *tab) +{ + g_info("h_legend, %p", tab); + + GtkWindow *legend = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)); + + g_legend_list = g_slist_append( + g_legend_list, + legend); + + g_object_set_data_full( + G_OBJECT(legend), + "legend", + legend, + (GDestroyNotify)legend_destructor); + + gtk_window_set_title(legend, "Control Flow View Legend"); + + GtkWidget *pixmap = create_pixmap(GTK_WIDGET(legend), "lttv-color-list.png"); + + // GtkImage *image = GTK_IMAGE(gtk_image_new_from_pixmap( + // GDK_PIXMAP(pixmap), NULL)); + + gtk_container_add(GTK_CONTAINER(legend), GTK_WIDGET(pixmap)); + + gtk_widget_show(GTK_WIDGET(pixmap)); + gtk_widget_show(GTK_WIDGET(legend)); + + + return NULL; /* This is a popup window */ +} + + int event_selected_hook(void *hook_data, void *call_data) { ControlFlowData *control_flow_data = (ControlFlowData*) hook_data; diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.h b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.h index d7244129..6f4fdf01 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.h @@ -59,6 +59,8 @@ void send_test_data(ProcessList *process_list, Drawing_t *drawing); GtkWidget *h_guicontrolflow(Tab *tab); +GtkWidget *h_legend(Tab *tab); + int event_selected_hook(void *hook_data, void *call_data); /* @@ -114,4 +116,6 @@ gint traceset_notify(void *hook_data, void *call_data); gint redraw_notify(void *hook_data, void *call_data); gint continue_notify(void *hook_data, void *call_data); +void legend_destructor(GtkWindow *legend); + #endif // _EVENT_HOOKS_H diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/hLegendInsert.xpm b/ltt/branches/poly/lttv/modules/gui/controlflow/hLegendInsert.xpm new file mode 100644 index 00000000..a6ff0f39 --- /dev/null +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/hLegendInsert.xpm @@ -0,0 +1,45 @@ +/* XPM */ +static char * hLegendInsert_xpm[] = { +"22 22 20 1", +" c None", +". c #0DF904", +"+ c #000000", +"@ c #000500", +"# c #000B00", +"$ c #034001", +"% c #000200", +"& c #0CF403", +"* c #0BD603", +"= c #034901", +"- c #F90404", +"; c #0AC503", +"> c #000F00", +", c #034601", +"' c #0CF503", +") c #D60303", +"! c #001000", +"~ c #044E01", +"{ c #0CF203", +"] c #E40303", +" ", +" . ", +" .. ", +" ++@#$ ", +" ++++++% ", +" + &*=++ ", +" .. ++ ", +" . ++ ", +" ++ ", +"----------;>+,'.......", +"---------)!+~{........", +" +++ ", +" ++]---- ", +" ++----- ", +" ++----- ", +" ------ ", +" ++----- ", +" ++----- ", +" ", +"..........------------", +"..........------------", +" "}; diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/module.c b/ltt/branches/poly/lttv/modules/gui/controlflow/module.c index c7c57192..14311efe 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/module.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/module.c @@ -50,12 +50,14 @@ #include "eventhooks.h" #include "hGuiControlFlowInsert.xpm" +#include "hLegendInsert.xpm" GQuark LTT_NAME_CPU; /** Array containing instanced objects. Used when module is unloaded */ GSList *g_control_flow_data_list = NULL ; +GSList *g_legend_list = NULL ; /***************************************************************************** * Functions for module loading/unloading * @@ -77,6 +79,14 @@ static void init() { hGuiControlFlowInsert_xpm, "Insert Control Flow Viewer", h_guicontrolflow); + + lttvwindow_register_constructor("guicontrolflowlegend", + "/", + "Popup Control Flow Viewer Legend", + hLegendInsert_xpm, + "Popup Control Flow Viewer Legend", + h_legend); + LTT_NAME_CPU = g_quark_from_string("/cpu"); } @@ -87,6 +97,12 @@ void destroy_walk(gpointer data, gpointer user_data) guicontrolflow_destructor_full((ControlFlowData*)data); } +void destroy_legend_walk(gpointer data, gpointer user_data) +{ + g_info("Walk destroy GUI Control Flow Viewer"); + legend_destructor((GtkWindow*)data); +} + /** @@ -102,8 +118,13 @@ static void destroy() { g_slist_free(g_control_flow_data_list); + g_slist_foreach(g_legend_list, destroy_legend_walk, NULL ); + + g_slist_free(g_control_flow_data_list); + /* Unregister the toolbar insert button and menu entry */ lttvwindow_unregister_constructor(h_guicontrolflow); + lttvwindow_unregister_constructor(h_legend); } diff --git a/ltt/branches/poly/lttv/modules/gui/lttvwindow/pixmaps/Makefile.am b/ltt/branches/poly/lttv/modules/gui/lttvwindow/pixmaps/Makefile.am index afca17b9..71064961 100644 --- a/ltt/branches/poly/lttv/modules/gui/lttvwindow/pixmaps/Makefile.am +++ b/ltt/branches/poly/lttv/modules/gui/lttvwindow/pixmaps/Makefile.am @@ -26,4 +26,5 @@ EXTRA_DIST = \ stock_redo_24.png\ stock_refresh_24.png\ close.png\ - stock_jump_to_24.png + stock_jump_to_24.png\ + lttv-color-list.png diff --git a/ltt/branches/poly/lttv/modules/gui/lttvwindow/pixmaps/lttv-color-list.png b/ltt/branches/poly/lttv/modules/gui/lttvwindow/pixmaps/lttv-color-list.png new file mode 100644 index 00000000..2fc66511 Binary files /dev/null and b/ltt/branches/poly/lttv/modules/gui/lttvwindow/pixmaps/lttv-color-list.png differ