X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2FmainWin%2Fsrc%2Fcallbacks.c;h=5e292993573e8eb5f8e766f0294640e89b084fdb;hb=fc188b78164da3123cd707a4f52393aed8e15835;hp=65ef18b7bee81a932a1a868d193489c0a6c3c4e6;hpb=37d0eca6ca06648a9330f31d5b632e65da90d646;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c b/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c index 65ef18b7..5e292993 100644 --- a/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c +++ b/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c @@ -11,8 +11,17 @@ #include #include #include +#include +#include +#include + +#define PATH_LENGTH 256 extern systemView * gSysView; +extern LttvTracesetContext * gTracesetContext; + +/** Array containing instanced objects. */ +extern GSList * Main_Window_List; mainWindow * get_window_data_struct(GtkWidget * widget); @@ -81,12 +90,19 @@ void insertView(GtkWidget* widget, view_constructor constructor) { GtkCustom * custom; mainWindow * mwData; + GtkWidget * viewer; mwData = get_window_data_struct(widget); if(!mwData->CurrentTab) return; custom = mwData->CurrentTab->custom; - gtk_custom_widget_add(custom, (GtkWidget*)constructor(mwData)); + viewer = (GtkWidget*)constructor(mwData); + if(viewer) + { + gtk_custom_widget_add(custom, viewer); + // Added by MD + // g_object_unref(G_OBJECT(viewer)); + } } void get_label_string (GtkWidget * text, gchar * label) @@ -96,22 +112,20 @@ void get_label_string (GtkWidget * text, gchar * label) strcpy(label,gtk_entry_get_text(entry)); } -void get_label(GtkWindow * mw, gchar * str) +void get_label(GtkWindow * mw, gchar * str, gchar* dialogue_title, gchar * label_str) { GtkWidget * dialogue; GtkWidget * text; GtkWidget * label; gint id; - strcpy(str,"Page"); //default label - - dialogue = gtk_dialog_new_with_buttons("Get the name of the tab",mw, + dialogue = gtk_dialog_new_with_buttons(dialogue_title,mw, GTK_DIALOG_MODAL, GTK_STOCK_OK,GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL,GTK_RESPONSE_REJECT, NULL); - label = gtk_label_new("Please input tab's name"); + label = gtk_label_new(label_str); gtk_widget_show(label); text = gtk_entry_new(); @@ -186,6 +200,10 @@ void createNewWindow(GtkWidget* widget, gpointer user_data, gboolean clone) } newMWindow = g_new(mainWindow, 1); + + /* Add the object's information to the module's array */ + Main_Window_List = g_slist_append(Main_Window_List, mw); + newWindow = create_MWindow(); gtk_widget_show (newWindow); @@ -204,7 +222,10 @@ void createNewWindow(GtkWidget* widget, gpointer user_data, gboolean clone) newMWindow->Tab = NULL; newMWindow->CurrentTab = NULL; newMWindow->SystemView = newSv; - // newMWindow->Attributes = LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE, NULL)); + newMWindow->Attributes = LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE, NULL)); + newMWindow->traceset_context = LTTV_TRACESET_CONTEXT(gTracesetContext); + newMWindow->traceset = (LTTV_TRACESET_CONTEXT(gTracesetContext))->ts; + g_object_ref(gTracesetContext); //test yxx g_assert(lttv_iattribute_find_by_path(attributes, @@ -354,7 +375,7 @@ on_tab_activate (GtkMenuItem *menuitem, gpointer user_data) { GList * list; - gchar label[64]; + gchar label[PATH_LENGTH]; tab * tmpTab; GtkWidget * pane; @@ -370,18 +391,34 @@ on_tab_activate (GtkMenuItem *menuitem, tmpTab = mwData->Tab; while(tmpTab && tmpTab->Next) tmpTab = tmpTab->Next; if(!tmpTab){ + mwData->CurrentTab = NULL; tmpTab = g_new(tab,1); - mwData->Tab = tmpTab; + mwData->Tab = tmpTab; }else{ tmpTab->Next = g_new(tab,1); tmpTab = tmpTab->Next; } + if(mwData->CurrentTab){ + tmpTab->traceStartTime = mwData->CurrentTab->traceStartTime; + tmpTab->traceEndTime = mwData->CurrentTab->traceEndTime; + tmpTab->startTime = mwData->CurrentTab->startTime; + tmpTab->endTime = mwData->CurrentTab->endTime; + tmpTab->currentTime = mwData->CurrentTab->currentTime; + }else{ + getTracesetTimeSpan(mwData,&tmpTab->traceStartTime, &tmpTab->traceEndTime); + tmpTab->startTime = tmpTab->traceStartTime; + tmpTab->endTime = tmpTab->traceEndTime; + tmpTab->currentTime = tmpTab->traceStartTime; + } + tmpTab->Attributes = LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE, NULL)); // mwData->CurrentTab = tmpTab; tmpTab->custom = (GtkCustom*)gtk_custom_new(); + tmpTab->custom->mw = mwData; gtk_widget_show((GtkWidget*)tmpTab->custom); tmpTab->Next = NULL; - get_label((GtkWindow*)mwData->MWindow, label); + strcpy(label,"Page"); + get_label((GtkWindow*)mwData->MWindow, label,"Get the name of the tab","Please input tab's name"); tmpTab->label = gtk_label_new (label); gtk_widget_show (tmpTab->label); @@ -572,7 +609,25 @@ void on_add_module_search_path_activate (GtkMenuItem *menuitem, gpointer user_data) { - g_printf("Add module search path\n"); + GtkDirSelection * fileSelector = (GtkDirSelection *)gtk_dir_selection_new("Select module path"); + char * dir; + gint id; + + gchar str[PATH_LENGTH]; + mainWindow * mwData = get_window_data_struct((GtkWidget*)menuitem); + + id = gtk_dialog_run(GTK_DIALOG(fileSelector)); + switch(id){ + case GTK_RESPONSE_ACCEPT: + case GTK_RESPONSE_OK: + dir = gtk_dir_selection_get_dir (fileSelector); + lttv_module_path_add(dir); + case GTK_RESPONSE_REJECT: + case GTK_RESPONSE_CANCEL: + default: + gtk_widget_destroy((GtkWidget*)fileSelector); + break; + } }