11 #include <lttv/mainWindow.h>
12 #include <lttv/menu.h>
13 #include <lttv/toolbar.h>
14 #include <lttv/gtkTraceSet.h>
15 #include <lttv/module.h>
16 #include <lttv/gtkdirsel.h>
18 #define PATH_LENGTH 256
20 extern LttvTracesetContext
* gTracesetContext
;
22 /** Array containing instanced objects. */
23 extern GSList
* Main_Window_List
;
25 static int gWinCount
= 0;
27 mainWindow
* get_window_data_struct(GtkWidget
* widget
);
28 char * get_unload_module(char ** loaded_module_name
, int nb_module
);
29 void * create_tab(GtkWidget
* parent
, GtkNotebook
* notebook
, char * label
);
32 void insertView(GtkWidget
* widget
, view_constructor constructor
);
41 on_textview1_grab_focus (GtkTextView
*text_view
,
45 GtkCustom
* custom
= (GtkCustom
*)user_data
;
46 widget
= gtk_widget_get_parent((GtkWidget
*)text_view
);
47 widget
= gtk_widget_get_parent(widget
);
48 gtk_custom_set_focus((GtkWidget
*)custom
, (gpointer
)widget
);
52 insertViewTest(GtkMenuItem
*menuitem
, gpointer user_data
)
55 insertView((GtkWidget
*)menuitem
, (view_constructor
)user_data
);
56 // selected_hook(&val);
60 on_insert_viewer_test_activate (GtkMenuItem
*menuitem
,
63 GtkWidget
*scrolledwindow1
, *textview1
, *label
;
70 mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
71 if(!mwData
->CurrentTab
) return;
72 custom
= mwData
->CurrentTab
->custom
;
74 sprintf(str
,"label : %d",++count
);
75 scrolledwindow1
= gtk_scrolled_window_new (NULL
, NULL
);
76 gtk_widget_show (scrolledwindow1
);
77 label
= gtk_label_new(str
);
78 gtk_widget_show(label
);
80 gtk_custom_widget_add(custom
, scrolledwindow1
);
81 gtk_widget_set_size_request ((GtkWidget
*)scrolledwindow1
, 800, 100);
83 textview1
= gtk_text_view_new ();
84 gtk_widget_show (textview1
);
85 gtk_container_add (GTK_CONTAINER (scrolledwindow1
), textview1
);
86 buf
= gtk_text_view_get_buffer((GtkTextView
*)textview1
);
87 sprintf(str
,"text view : %d",count
);
88 gtk_text_buffer_set_text(buf
,str
, -1);
90 g_signal_connect ((gpointer
) textview1
, "grab_focus",
91 G_CALLBACK (on_textview1_grab_focus
), custom
);
94 /* end of test part */
97 /* internal functions */
98 void insertView(GtkWidget
* widget
, view_constructor constructor
)
104 mwData
= get_window_data_struct(widget
);
105 if(!mwData
->CurrentTab
) return;
106 custom
= mwData
->CurrentTab
->custom
;
108 viewer
= (GtkWidget
*)constructor(mwData
);
111 gtk_custom_widget_add(custom
, viewer
);
113 // g_object_unref(G_OBJECT(viewer));
117 void get_label_string (GtkWidget
* text
, gchar
* label
)
119 GtkEntry
* entry
= (GtkEntry
*)text
;
120 if(strlen(gtk_entry_get_text(entry
))!=0)
121 strcpy(label
,gtk_entry_get_text(entry
));
124 void get_label(GtkWindow
* mw
, gchar
* str
, gchar
* dialogue_title
, gchar
* label_str
)
126 GtkWidget
* dialogue
;
131 dialogue
= gtk_dialog_new_with_buttons(dialogue_title
,NULL
,
133 GTK_STOCK_OK
,GTK_RESPONSE_ACCEPT
,
134 GTK_STOCK_CANCEL
,GTK_RESPONSE_REJECT
,
137 label
= gtk_label_new(label_str
);
138 gtk_widget_show(label
);
140 text
= gtk_entry_new();
141 gtk_widget_show(text
);
143 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), label
,TRUE
, TRUE
,0);
144 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), text
,FALSE
, FALSE
,0);
146 id
= gtk_dialog_run(GTK_DIALOG(dialogue
));
148 case GTK_RESPONSE_ACCEPT
:
149 get_label_string(text
,str
);
150 gtk_widget_destroy(dialogue
);
152 case GTK_RESPONSE_REJECT
:
154 gtk_widget_destroy(dialogue
);
159 mainWindow
* get_window_data_struct(GtkWidget
* widget
)
164 mw
= lookup_widget(widget
, "MWindow");
166 g_printf("Main window does not exist\n");
170 mwData
= (mainWindow
*) g_object_get_data(G_OBJECT(mw
),"mainWindow");
172 g_printf("Main window data does not exist\n");
178 void createNewWindow(GtkWidget
* widget
, gpointer user_data
, gboolean clone
)
180 mainWindow
* parent
= get_window_data_struct(widget
);
182 constructMainWin(parent
, NULL
);
185 g_printf("Clone : use the same traceset\n");
187 g_printf("Empty : traceset is set to NULL\n");
191 void move_up_viewer(GtkWidget
* widget
, gpointer user_data
)
193 mainWindow
* mw
= get_window_data_struct(widget
);
194 if(!mw
->CurrentTab
) return;
195 gtk_custom_widget_move_up(mw
->CurrentTab
->custom
);
198 void move_down_viewer(GtkWidget
* widget
, gpointer user_data
)
200 mainWindow
* mw
= get_window_data_struct(widget
);
201 if(!mw
->CurrentTab
) return;
202 gtk_custom_widget_move_down(mw
->CurrentTab
->custom
);
205 void delete_viewer(GtkWidget
* widget
, gpointer user_data
)
207 mainWindow
* mw
= get_window_data_struct(widget
);
208 if(!mw
->CurrentTab
) return;
209 gtk_custom_widget_delete(mw
->CurrentTab
->custom
);
212 void open_traceset(GtkWidget
* widget
, gpointer user_data
)
214 g_printf("Open a trace set\n");
217 void add_trace(GtkWidget
* widget
, gpointer user_data
)
219 g_printf("add a trace to a trace set\n");
222 void remove_trace(GtkWidget
* widget
, gpointer user_data
)
224 g_printf("remove a trace from a trace set\n");
227 void save(GtkWidget
* widget
, gpointer user_data
)
232 void save_as(GtkWidget
* widget
, gpointer user_data
)
234 g_printf("Save as\n");
237 void zoom_in(GtkWidget
* widget
, gpointer user_data
)
239 g_printf("Zoom in\n");
242 void zoom_out(GtkWidget
* widget
, gpointer user_data
)
244 g_printf("Zoom out\n");
247 void zoom_extended(GtkWidget
* widget
, gpointer user_data
)
249 g_printf("Zoom extended\n");
252 void go_to_time(GtkWidget
* widget
, gpointer user_data
)
254 g_printf("Go to time\n");
257 void show_time_frame(GtkWidget
* widget
, gpointer user_data
)
259 g_printf("Show time frame\n");
263 /* callback function */
266 on_empty_traceset_activate (GtkMenuItem
*menuitem
,
269 createNewWindow((GtkWidget
*)menuitem
, user_data
, FALSE
);
274 on_clone_traceset_activate (GtkMenuItem
*menuitem
,
277 createNewWindow((GtkWidget
*)menuitem
, user_data
, TRUE
);
282 on_tab_activate (GtkMenuItem
*menuitem
,
285 gchar label
[PATH_LENGTH
];
286 GtkNotebook
* notebook
= (GtkNotebook
*)lookup_widget((GtkWidget
*)menuitem
, "MNotebook");
287 if(notebook
== NULL
){
288 g_printf("Notebook does not exist\n");
292 strcpy(label
,"Page");
293 get_label(NULL
, label
,"Get the name of the tab","Please input tab's name");
295 create_tab ((GtkWidget
*)menuitem
, notebook
, label
);
300 on_open_activate (GtkMenuItem
*menuitem
,
303 open_traceset((GtkWidget
*)menuitem
, user_data
);
308 on_close_activate (GtkMenuItem
*menuitem
,
316 on_close_tab_activate (GtkMenuItem
*menuitem
,
319 g_printf("Close tab\n");
324 on_add_trace_activate (GtkMenuItem
*menuitem
,
327 add_trace((GtkWidget
*)menuitem
, user_data
);
332 on_remove_trace_activate (GtkMenuItem
*menuitem
,
335 remove_trace((GtkWidget
*)menuitem
, user_data
);
340 on_save_activate (GtkMenuItem
*menuitem
,
343 save((GtkWidget
*)menuitem
, user_data
);
348 on_save_as_activate (GtkMenuItem
*menuitem
,
351 save_as((GtkWidget
*)menuitem
, user_data
);
356 on_quit_activate (GtkMenuItem
*menuitem
,
359 mainWindow
* mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
360 mainWindow_Destructor(mwData
);
365 on_cut_activate (GtkMenuItem
*menuitem
,
373 on_copy_activate (GtkMenuItem
*menuitem
,
381 on_paste_activate (GtkMenuItem
*menuitem
,
389 on_delete_activate (GtkMenuItem
*menuitem
,
392 g_printf("Delete\n");
397 on_zoom_in_activate (GtkMenuItem
*menuitem
,
400 zoom_in((GtkWidget
*)menuitem
, user_data
);
405 on_zoom_out_activate (GtkMenuItem
*menuitem
,
408 zoom_out((GtkWidget
*)menuitem
, user_data
);
413 on_zoom_extended_activate (GtkMenuItem
*menuitem
,
416 zoom_extended((GtkWidget
*)menuitem
, user_data
);
421 on_go_to_time_activate (GtkMenuItem
*menuitem
,
424 go_to_time((GtkWidget
*)menuitem
, user_data
);
429 on_show_time_frame_activate (GtkMenuItem
*menuitem
,
432 show_time_frame((GtkWidget
*)menuitem
, user_data
);
437 on_move_viewer_up_activate (GtkMenuItem
*menuitem
,
440 move_up_viewer((GtkWidget
*)menuitem
, user_data
);
445 on_move_viewer_down_activate (GtkMenuItem
*menuitem
,
448 move_down_viewer((GtkWidget
*)menuitem
, user_data
);
453 on_remove_viewer_activate (GtkMenuItem
*menuitem
,
456 delete_viewer((GtkWidget
*)menuitem
, user_data
);
461 on_load_module_activate (GtkMenuItem
*menuitem
,
466 char str
[PATH_LENGTH
];
467 mainWindow
* mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
468 GtkFileSelection
* fileSelector
= (GtkFileSelection
*)gtk_file_selection_new("Select a module");
469 gtk_file_selection_hide_fileop_buttons(fileSelector
);
472 id
= gtk_dialog_run(GTK_DIALOG(fileSelector
));
474 case GTK_RESPONSE_ACCEPT
:
475 case GTK_RESPONSE_OK
:
476 dir
= gtk_file_selection_get_selections (fileSelector
);
478 if(mwData
->winCreationData
)
479 lttv_module_load(str
, mwData
->winCreationData
->argc
,mwData
->winCreationData
->argv
);
481 lttv_module_load(str
, 0,NULL
);
483 case GTK_RESPONSE_REJECT
:
484 case GTK_RESPONSE_CANCEL
:
486 gtk_widget_destroy((GtkWidget
*)fileSelector
);
489 g_printf("Load module: %s\n", str
);
494 on_unload_module_activate (GtkMenuItem
*menuitem
,
498 char **name
, *unload_module_name
;
500 LttvModule
** modules
, *module
;
501 mainWindow
* mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
503 modules
= lttv_module_list(&nb
);
504 name
= g_new(char*, nb
);
507 name
[i
] = lttv_module_name(module
);
510 unload_module_name
=get_unload_module(name
,nb
);
512 if(unload_module_name
){
514 if(strcmp(unload_module_name
, name
[i
]) == 0){
515 lttv_module_unload(modules
[i
]);
526 on_add_module_search_path_activate (GtkMenuItem
*menuitem
,
529 GtkDirSelection
* fileSelector
= (GtkDirSelection
*)gtk_dir_selection_new("Select module path");
533 mainWindow
* mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
535 id
= gtk_dialog_run(GTK_DIALOG(fileSelector
));
537 case GTK_RESPONSE_ACCEPT
:
538 case GTK_RESPONSE_OK
:
539 dir
= gtk_dir_selection_get_dir (fileSelector
);
540 lttv_module_path_add(dir
);
541 case GTK_RESPONSE_REJECT
:
542 case GTK_RESPONSE_CANCEL
:
544 gtk_widget_destroy((GtkWidget
*)fileSelector
);
551 on_color_activate (GtkMenuItem
*menuitem
,
559 on_filter_activate (GtkMenuItem
*menuitem
,
562 g_printf("Filter\n");
567 on_save_configuration_activate (GtkMenuItem
*menuitem
,
570 g_printf("Save configuration\n");
575 on_content_activate (GtkMenuItem
*menuitem
,
578 g_printf("Content\n");
583 on_about_activate (GtkMenuItem
*menuitem
,
586 g_printf("About...\n");
591 on_button_new_clicked (GtkButton
*button
,
594 createNewWindow((GtkWidget
*)button
, user_data
, FALSE
);
599 on_button_open_clicked (GtkButton
*button
,
602 open_traceset((GtkWidget
*)button
, user_data
);
607 on_button_add_trace_clicked (GtkButton
*button
,
610 add_trace((GtkWidget
*)button
, user_data
);
615 on_button_remove_trace_clicked (GtkButton
*button
,
618 remove_trace((GtkWidget
*)button
, user_data
);
623 on_button_save_clicked (GtkButton
*button
,
626 save((GtkWidget
*)button
, user_data
);
631 on_button_save_as_clicked (GtkButton
*button
,
634 save_as((GtkWidget
*)button
, user_data
);
639 on_button_zoom_in_clicked (GtkButton
*button
,
642 zoom_in((GtkWidget
*)button
, user_data
);
647 on_button_zoom_out_clicked (GtkButton
*button
,
650 zoom_out((GtkWidget
*)button
, user_data
);
655 on_button_zoom_extended_clicked (GtkButton
*button
,
658 zoom_extended((GtkWidget
*)button
, user_data
);
663 on_button_go_to_time_clicked (GtkButton
*button
,
666 go_to_time((GtkWidget
*)button
, user_data
);
671 on_button_show_time_frame_clicked (GtkButton
*button
,
674 show_time_frame((GtkWidget
*)button
, user_data
);
679 on_button_move_up_clicked (GtkButton
*button
,
682 move_up_viewer((GtkWidget
*)button
, user_data
);
687 on_button_move_down_clicked (GtkButton
*button
,
690 move_down_viewer((GtkWidget
*)button
, user_data
);
695 on_button_delete_viewer_clicked (GtkButton
*button
,
698 delete_viewer((GtkWidget
*)button
, user_data
);
702 on_MWindow_destroy (GtkObject
*object
,
705 g_printf("There are : %d windows\n",g_slist_length(Main_Window_List
));
714 on_MNotebook_switch_page (GtkNotebook
*notebook
,
715 GtkNotebookPage
*page
,
719 mainWindow
* mw
= get_window_data_struct((GtkWidget
*)notebook
);
726 mw
->CurrentTab
= Tab
;
729 char * get_unload_module(char ** loaded_module_name
, int nb_module
)
731 GtkWidget
* dialogue
;
732 GtkWidget
* scroll_win
;
734 GtkListStore
* store
;
735 GtkTreeViewColumn
* column
;
736 GtkCellRenderer
* renderer
;
737 GtkTreeSelection
* select
;
740 char * unload_module_name
= NULL
;
742 dialogue
= gtk_dialog_new_with_buttons("Select an unload module",
745 GTK_STOCK_OK
,GTK_RESPONSE_ACCEPT
,
746 GTK_STOCK_CANCEL
,GTK_RESPONSE_REJECT
,
748 gtk_window_set_default_size((GtkWindow
*)dialogue
, 500, 200);
750 scroll_win
= gtk_scrolled_window_new (NULL
, NULL
);
751 gtk_widget_show ( scroll_win
);
752 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_win
),
753 GTK_POLICY_AUTOMATIC
, GTK_POLICY_AUTOMATIC
);
755 store
= gtk_list_store_new (N_COLUMNS
,G_TYPE_STRING
);
756 tree
= gtk_tree_view_new_with_model(GTK_TREE_MODEL (store
));
757 gtk_widget_show ( tree
);
758 g_object_unref (G_OBJECT (store
));
760 renderer
= gtk_cell_renderer_text_new ();
761 column
= gtk_tree_view_column_new_with_attributes ("MODULE NAME",
763 "text", MODULE_COLUMN
,
765 gtk_tree_view_column_set_alignment (column
, 0.5);
766 gtk_tree_view_column_set_fixed_width (column
, 150);
767 gtk_tree_view_append_column (GTK_TREE_VIEW (tree
), column
);
769 select
= gtk_tree_view_get_selection (GTK_TREE_VIEW (tree
));
770 gtk_tree_selection_set_mode (select
, GTK_SELECTION_SINGLE
);
772 gtk_container_add (GTK_CONTAINER (scroll_win
), tree
);
774 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), scroll_win
,TRUE
, TRUE
,0);
776 for(i
=0;i
<nb_module
;i
++){
777 gtk_list_store_append (store
, &iter
);
778 gtk_list_store_set (store
, &iter
, MODULE_COLUMN
,loaded_module_name
[i
],-1);
781 id
= gtk_dialog_run(GTK_DIALOG(dialogue
));
783 case GTK_RESPONSE_ACCEPT
:
784 case GTK_RESPONSE_OK
:
785 if (gtk_tree_selection_get_selected (select
, (GtkTreeModel
**)&store
, &iter
)){
786 gtk_tree_model_get ((GtkTreeModel
*)store
, &iter
, MODULE_COLUMN
, &unload_module_name
, -1);
788 case GTK_RESPONSE_REJECT
:
789 case GTK_RESPONSE_CANCEL
:
791 gtk_widget_destroy(dialogue
);
795 return unload_module_name
;
798 void insertMenuToolbarItem(mainWindow
* mw
)
802 view_constructor constructor
;
804 LttvToolbars
* toolbar
;
805 lttv_menu_closure
*menuItem
;
806 lttv_toolbar_closure
*toolbarItem
;
807 LttvAttributeValue value
;
808 LttvIAttribute
*attributes
= LTTV_IATTRIBUTE(lttv_global_attributes());
809 GtkWidget
* ToolMenuTitle_menu
, *insert_view
, *pixmap
;
811 g_assert(lttv_iattribute_find_by_path(attributes
,
812 "viewers/menu", LTTV_POINTER
, &value
));
813 menu
= (LttvMenus
*)*(value
.v_pointer
);
816 for(i
=0;i
<menu
->len
;i
++){
817 menuItem
= &g_array_index(menu
, lttv_menu_closure
, i
);
818 constructor
= menuItem
->con
;
819 ToolMenuTitle_menu
= lookup_widget(mw
->MWindow
,"ToolMenuTitle_menu");
820 insert_view
= gtk_menu_item_new_with_mnemonic (menuItem
->menuText
);
821 gtk_widget_show (insert_view
);
822 gtk_container_add (GTK_CONTAINER (ToolMenuTitle_menu
), insert_view
);
823 g_signal_connect ((gpointer
) insert_view
, "activate",
824 G_CALLBACK (insertViewTest
),
829 g_assert(lttv_iattribute_find_by_path(attributes
,
830 "viewers/toolbar", LTTV_POINTER
, &value
));
831 toolbar
= (LttvToolbars
*)*(value
.v_pointer
);
834 for(i
=0;i
<toolbar
->len
;i
++){
835 toolbarItem
= &g_array_index(toolbar
, lttv_toolbar_closure
, i
);
836 constructor
= toolbarItem
->con
;
837 ToolMenuTitle_menu
= lookup_widget(mw
->MWindow
,"MToolbar2");
838 pixbuf
= gdk_pixbuf_new_from_xpm_data ((const char**)toolbarItem
->pixmap
);
839 pixmap
= gtk_image_new_from_pixbuf(pixbuf
);
840 insert_view
= gtk_toolbar_append_element (GTK_TOOLBAR (ToolMenuTitle_menu
),
841 GTK_TOOLBAR_CHILD_BUTTON
,
844 toolbarItem
->tooltip
, NULL
,
846 gtk_label_set_use_underline (GTK_LABEL (((GtkToolbarChild
*) (g_list_last (GTK_TOOLBAR (ToolMenuTitle_menu
)->children
)->data
))->label
), TRUE
);
847 gtk_widget_show (insert_view
);
848 gtk_container_set_border_width (GTK_CONTAINER (insert_view
), 1);
849 g_signal_connect ((gpointer
) insert_view
, "clicked",G_CALLBACK (insertViewTest
),constructor
);
854 void constructMainWin(mainWindow
* parent
, WindowCreationData
* win_creation_data
)
856 // systemView * sv = NULL; /* System view */
857 systemView
* newSv
; /* New system view displayed in the new window */
858 GtkWidget
* newWindow
; /* New generated main window */
859 mainWindow
* newMWindow
;/* New main window structure */
860 GtkNotebook
* notebook
;
862 // if(parent) sv = parent->SystemView;
864 newMWindow
= g_new(mainWindow
, 1);
866 // Add the object's information to the module's array
867 Main_Window_List
= g_slist_append(Main_Window_List
, newMWindow
);
869 newWindow
= create_MWindow();
870 gtk_widget_show (newWindow
);
872 newSv
= g_new(systemView
, 1);
874 // while(sv->Next) sv = sv->Next;
878 newSv
->EventDB
= NULL
;
879 newSv
->SystemInfo
= NULL
;
880 newSv
->Options
= NULL
;
882 newSv
->Window
= newMWindow
;
884 newMWindow
->MWindow
= newWindow
;
885 newMWindow
->Tab
= NULL
;
886 newMWindow
->CurrentTab
= NULL
;
887 newMWindow
->SystemView
= newSv
;
888 newMWindow
->Attributes
= LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE
, NULL
));
890 newMWindow
->traceset_context
= parent
->traceset_context
;
891 newMWindow
->traceset
= parent
->traceset
;
892 newMWindow
->winCreationData
= parent
->winCreationData
;
894 newMWindow
->traceset_context
= LTTV_TRACESET_CONTEXT(gTracesetContext
);
895 newMWindow
->traceset
= (LTTV_TRACESET_CONTEXT(gTracesetContext
))->ts
;
896 newMWindow
->winCreationData
= win_creation_data
;
899 insertMenuToolbarItem(newMWindow
);
901 g_object_set_data(G_OBJECT(newWindow
), "systemView", (gpointer
)newSv
);
902 g_object_set_data(G_OBJECT(newWindow
), "mainWindow", (gpointer
)newMWindow
);
904 //create a default tab
905 notebook
= (GtkNotebook
*)lookup_widget(newMWindow
->MWindow
, "MNotebook");
906 if(notebook
== NULL
){
907 g_printf("Notebook does not exist\n");
910 //for now there is no name field in LttvTraceset structure
911 //Use "Traceset" as the label for the default tab
912 create_tab(newMWindow
->MWindow
, notebook
,"Traceset");
914 g_object_set_data_full(
915 G_OBJECT(newMWindow
->MWindow
),
918 (GDestroyNotify
)mainWindow_free
);
923 void * create_tab(GtkWidget
* parent
, GtkNotebook
* notebook
, char * label
)
929 mwData
= get_window_data_struct(parent
);
931 tmpTab
= mwData
->Tab
;
932 while(tmpTab
&& tmpTab
->Next
) tmpTab
= tmpTab
->Next
;
934 mwData
->CurrentTab
= NULL
;
935 tmpTab
= g_new(tab
,1);
936 mwData
->Tab
= tmpTab
;
938 tmpTab
->Next
= g_new(tab
,1);
939 tmpTab
= tmpTab
->Next
;
941 if(mwData
->CurrentTab
){
942 tmpTab
->traceStartTime
= mwData
->CurrentTab
->traceStartTime
;
943 tmpTab
->traceEndTime
= mwData
->CurrentTab
->traceEndTime
;
944 tmpTab
->startTime
= mwData
->CurrentTab
->startTime
;
945 tmpTab
->endTime
= mwData
->CurrentTab
->endTime
;
946 tmpTab
->currentTime
= mwData
->CurrentTab
->currentTime
;
948 getTracesetTimeSpan(mwData
,&tmpTab
->traceStartTime
, &tmpTab
->traceEndTime
);
949 tmpTab
->startTime
= tmpTab
->traceStartTime
;
950 tmpTab
->endTime
= tmpTab
->traceEndTime
;
951 tmpTab
->currentTime
= tmpTab
->traceStartTime
;
953 tmpTab
->Attributes
= LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE
, NULL
));
954 // mwData->CurrentTab = tmpTab;
955 tmpTab
->custom
= (GtkCustom
*)gtk_custom_new();
956 tmpTab
->custom
->mw
= mwData
;
957 gtk_widget_show((GtkWidget
*)tmpTab
->custom
);
960 tmpTab
->label
= gtk_label_new (label
);
961 gtk_widget_show (tmpTab
->label
);
963 gtk_notebook_append_page(notebook
, (GtkWidget
*)tmpTab
->custom
, tmpTab
->label
);
965 list
= gtk_container_get_children(GTK_CONTAINER(notebook
));
966 gtk_notebook_set_current_page(notebook
,g_list_length(list
)-1);