11 #include <lttv/mainWindow.h>
12 #include <lttv/menu.h>
13 #include <lttv/toolbar.h>
15 extern systemView
* gSysView
;
16 extern LttvTracesetContext
* gTracesetContext
;
18 /** Array containing instanced objects. */
19 extern GSList
* Main_Window_List
;
21 mainWindow
* get_window_data_struct(GtkWidget
* widget
);
24 void insertView(GtkWidget
* widget
, view_constructor constructor
);
27 on_textview1_grab_focus (GtkTextView
*text_view
,
31 GtkCustom
* custom
= (GtkCustom
*)user_data
;
32 widget
= gtk_widget_get_parent((GtkWidget
*)text_view
);
33 widget
= gtk_widget_get_parent(widget
);
34 gtk_custom_set_focus((GtkWidget
*)custom
, (gpointer
)widget
);
38 insertViewTest(GtkMenuItem
*menuitem
, gpointer user_data
)
41 insertView((GtkWidget
*)menuitem
, (view_constructor
)user_data
);
42 // selected_hook(&val);
46 on_insert_viewer_test_activate (GtkMenuItem
*menuitem
,
49 GtkWidget
*scrolledwindow1
, *textview1
, *label
;
56 mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
57 if(!mwData
->CurrentTab
) return;
58 custom
= mwData
->CurrentTab
->custom
;
60 sprintf(str
,"label : %d",++count
);
61 scrolledwindow1
= gtk_scrolled_window_new (NULL
, NULL
);
62 gtk_widget_show (scrolledwindow1
);
63 label
= gtk_label_new(str
);
64 gtk_widget_show(label
);
66 gtk_custom_widget_add(custom
, scrolledwindow1
);
67 gtk_widget_set_size_request ((GtkWidget
*)scrolledwindow1
, 800, 100);
69 textview1
= gtk_text_view_new ();
70 gtk_widget_show (textview1
);
71 gtk_container_add (GTK_CONTAINER (scrolledwindow1
), textview1
);
72 buf
= gtk_text_view_get_buffer((GtkTextView
*)textview1
);
73 sprintf(str
,"text view : %d",count
);
74 gtk_text_buffer_set_text(buf
,str
, -1);
76 g_signal_connect ((gpointer
) textview1
, "grab_focus",
77 G_CALLBACK (on_textview1_grab_focus
), custom
);
80 /* end of test part */
83 /* internal functions */
84 void insertView(GtkWidget
* widget
, view_constructor constructor
)
90 mwData
= get_window_data_struct(widget
);
91 if(!mwData
->CurrentTab
) return;
92 custom
= mwData
->CurrentTab
->custom
;
94 viewer
= (GtkWidget
*)constructor(mwData
);
96 gtk_custom_widget_add(custom
, viewer
);
99 void get_label_string (GtkWidget
* text
, gchar
* label
)
101 GtkEntry
* entry
= (GtkEntry
*)text
;
102 if(strlen(gtk_entry_get_text(entry
))!=0)
103 strcpy(label
,gtk_entry_get_text(entry
));
106 void get_label(GtkWindow
* mw
, gchar
* str
)
108 GtkWidget
* dialogue
;
113 strcpy(str
,"Page"); //default label
115 dialogue
= gtk_dialog_new_with_buttons("Get the name of the tab",mw
,
117 GTK_STOCK_OK
,GTK_RESPONSE_ACCEPT
,
118 GTK_STOCK_CANCEL
,GTK_RESPONSE_REJECT
,
121 label
= gtk_label_new("Please input tab's name");
122 gtk_widget_show(label
);
124 text
= gtk_entry_new();
125 gtk_widget_show(text
);
127 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), label
,TRUE
, TRUE
,0);
128 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), text
,FALSE
, FALSE
,0);
130 id
= gtk_dialog_run(GTK_DIALOG(dialogue
));
132 case GTK_RESPONSE_ACCEPT
:
133 get_label_string(text
,str
);
134 gtk_widget_destroy(dialogue
);
136 case GTK_RESPONSE_REJECT
:
138 gtk_widget_destroy(dialogue
);
143 mainWindow
* get_window_data_struct(GtkWidget
* widget
)
148 mw
= lookup_widget(widget
, "MWindow");
150 g_printf("Main window does not exist\n");
154 mwData
= (mainWindow
*) g_object_get_data(G_OBJECT(mw
),"mainWindow");
156 g_printf("Main window data does not exist\n");
162 void createNewWindow(GtkWidget
* widget
, gpointer user_data
, gboolean clone
)
164 GtkWidget
* mw
= NULL
; /* Main window */
165 systemView
* sv
= NULL
; /* System view */
166 systemView
* newSv
; /* New system view displayed in the new window */
167 GtkWidget
* newWindow
; /* New generated main window */
168 mainWindow
* newMWindow
;/* New main window structure */
172 GtkWidget
* ToolMenuTitle_menu
, *insert_view
, *pixmap
;
174 LttvToolbars
* toolbar
;
175 lttv_menu_closure
*menuItem
;
176 lttv_toolbar_closure
*toolbarItem
;
177 LttvAttributeValue value
;
178 LttvIAttribute
*attributes
= LTTV_IATTRIBUTE(lttv_global_attributes());
179 view_constructor constructor
;
183 mw
= lookup_widget (widget
, "MWindow");
185 g_printf("Can not find main window\n");
189 sv
= (systemView
*)g_object_get_data(G_OBJECT(mw
),"systemView");
191 g_printf("Can not find system view\n");
195 newMWindow
= g_new(mainWindow
, 1);
197 /* Add the object's information to the module's array */
198 Main_Window_List
= g_slist_append(Main_Window_List
, mw
);
200 newWindow
= create_MWindow();
201 gtk_widget_show (newWindow
);
204 newSv
= g_new(systemView
, 1);
205 while(sv
->Next
) sv
= sv
->Next
;
208 newSv
->EventDB
= NULL
;
209 newSv
->SystemInfo
= NULL
;
210 newSv
->Options
= NULL
;
212 newSv
->Window
= newMWindow
;
214 newMWindow
->MWindow
= newWindow
;
215 newMWindow
->Tab
= NULL
;
216 newMWindow
->CurrentTab
= NULL
;
217 newMWindow
->SystemView
= newSv
;
218 newMWindow
->Attributes
= LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE
, NULL
));
219 newMWindow
->traceset_context
= LTTV_TRACESET_CONTEXT(gTracesetContext
);
220 newMWindow
->traceset
= (LTTV_TRACESET_CONTEXT(gTracesetContext
))->ts
;
221 g_object_ref(gTracesetContext
);
224 g_assert(lttv_iattribute_find_by_path(attributes
,
225 "viewers/menu", LTTV_POINTER
, &value
));
226 menu
= (LttvMenus
*)*(value
.v_pointer
);
229 for(i
=0;i
<menu
->len
;i
++){
230 menuItem
= &g_array_index(menu
, lttv_menu_closure
, i
);
231 constructor
= menuItem
->con
;
232 ToolMenuTitle_menu
= lookup_widget(newMWindow
->MWindow
,"ToolMenuTitle_menu");
233 insert_view
= gtk_menu_item_new_with_mnemonic (menuItem
->menuText
);
234 gtk_widget_show (insert_view
);
235 gtk_container_add (GTK_CONTAINER (ToolMenuTitle_menu
), insert_view
);
236 g_signal_connect ((gpointer
) insert_view
, "activate",
237 G_CALLBACK (insertViewTest
),
241 g_assert(lttv_iattribute_find_by_path(attributes
,
242 "viewers/toolbar", LTTV_POINTER
, &value
));
243 toolbar
= (LttvToolbars
*)*(value
.v_pointer
);
246 for(i
=0;i
<toolbar
->len
;i
++){
247 toolbarItem
= &g_array_index(toolbar
, lttv_toolbar_closure
, i
);
248 constructor
= toolbarItem
->con
;
249 ToolMenuTitle_menu
= lookup_widget(newMWindow
->MWindow
,"MToolbar2");
250 pixbuf
= gdk_pixbuf_new_from_xpm_data ((const char**)toolbarItem
->pixmap
);
251 pixmap
= gtk_image_new_from_pixbuf(pixbuf
);
252 insert_view
= gtk_toolbar_append_element (GTK_TOOLBAR (ToolMenuTitle_menu
),
253 GTK_TOOLBAR_CHILD_BUTTON
,
256 toolbarItem
->tooltip
, NULL
,
258 gtk_label_set_use_underline (GTK_LABEL (((GtkToolbarChild
*) (g_list_last (GTK_TOOLBAR (ToolMenuTitle_menu
)->children
)->data
))->label
), TRUE
);
259 gtk_widget_show (insert_view
);
260 gtk_container_set_border_width (GTK_CONTAINER (insert_view
), 1);
261 g_signal_connect ((gpointer
) insert_view
, "clicked",G_CALLBACK (insertViewTest
),constructor
);
266 g_object_set_data(G_OBJECT(newWindow
), "systemView", (gpointer
)newSv
);
267 g_object_set_data(G_OBJECT(newWindow
), "mainWindow", (gpointer
)newMWindow
);
270 g_printf("Clone : use the same traceset\n");
272 g_printf("Empty : traceset is set to NULL\n");
276 void move_up_viewer(GtkWidget
* widget
, gpointer user_data
)
278 mainWindow
* mw
= get_window_data_struct(widget
);
279 if(!mw
->CurrentTab
) return;
280 gtk_custom_widget_move_up(mw
->CurrentTab
->custom
);
283 void move_down_viewer(GtkWidget
* widget
, gpointer user_data
)
285 mainWindow
* mw
= get_window_data_struct(widget
);
286 if(!mw
->CurrentTab
) return;
287 gtk_custom_widget_move_down(mw
->CurrentTab
->custom
);
290 void delete_viewer(GtkWidget
* widget
, gpointer user_data
)
292 mainWindow
* mw
= get_window_data_struct(widget
);
293 if(!mw
->CurrentTab
) return;
294 gtk_custom_widget_delete(mw
->CurrentTab
->custom
);
297 void open_traceset(GtkWidget
* widget
, gpointer user_data
)
299 g_printf("Open a trace set\n");
302 void add_trace(GtkWidget
* widget
, gpointer user_data
)
304 g_printf("add a trace to a trace set\n");
307 void remove_trace(GtkWidget
* widget
, gpointer user_data
)
309 g_printf("remove a trace from a trace set\n");
312 void save(GtkWidget
* widget
, gpointer user_data
)
317 void save_as(GtkWidget
* widget
, gpointer user_data
)
319 g_printf("Save as\n");
322 void zoom_in(GtkWidget
* widget
, gpointer user_data
)
324 g_printf("Zoom in\n");
327 void zoom_out(GtkWidget
* widget
, gpointer user_data
)
329 g_printf("Zoom out\n");
332 void zoom_extended(GtkWidget
* widget
, gpointer user_data
)
334 g_printf("Zoom extended\n");
337 void go_to_time(GtkWidget
* widget
, gpointer user_data
)
339 g_printf("Go to time\n");
342 void show_time_frame(GtkWidget
* widget
, gpointer user_data
)
344 g_printf("Show time frame\n");
348 /* callback function */
351 on_empty_traceset_activate (GtkMenuItem
*menuitem
,
354 createNewWindow((GtkWidget
*)menuitem
, user_data
, FALSE
);
359 on_clone_traceset_activate (GtkMenuItem
*menuitem
,
362 createNewWindow((GtkWidget
*)menuitem
, user_data
, TRUE
);
367 on_tab_activate (GtkMenuItem
*menuitem
,
376 GtkNotebook
* notebook
= (GtkNotebook
*)lookup_widget((GtkWidget
*)menuitem
, "MNotebook");
377 if(notebook
== NULL
){
378 g_printf("Notebook does not exist\n");
382 mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
384 tmpTab
= mwData
->Tab
;
385 while(tmpTab
&& tmpTab
->Next
) tmpTab
= tmpTab
->Next
;
387 mwData
->CurrentTab
= NULL
;
388 tmpTab
= g_new(tab
,1);
389 tmpTab
->traceStartTime
.tv_sec
= 0;
390 tmpTab
->traceStartTime
.tv_nsec
= 0;
391 tmpTab
->traceEndTime
.tv_sec
= G_MAXULONG
;
392 tmpTab
->traceEndTime
.tv_nsec
= G_MAXULONG
;
393 tmpTab
->startTime
.tv_sec
= 0;
394 tmpTab
->startTime
.tv_nsec
= 0;
395 tmpTab
->endTime
.tv_sec
= G_MAXULONG
;
396 tmpTab
->endTime
.tv_nsec
= G_MAXULONG
;
397 tmpTab
->currentTime
.tv_sec
= 0;
398 tmpTab
->currentTime
.tv_nsec
= 0;
399 mwData
->Tab
= tmpTab
;
401 tmpTab
->Next
= g_new(tab
,1);
402 tmpTab
= tmpTab
->Next
;
404 if(mwData
->CurrentTab
){
405 tmpTab
->traceStartTime
= mwData
->CurrentTab
->traceStartTime
;
406 tmpTab
->traceEndTime
= mwData
->CurrentTab
->traceEndTime
;
407 tmpTab
->startTime
= mwData
->CurrentTab
->startTime
;
408 tmpTab
->endTime
= mwData
->CurrentTab
->endTime
;
409 tmpTab
->currentTime
= mwData
->CurrentTab
->currentTime
;
411 tmpTab
->Attributes
= LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE
, NULL
));
412 // mwData->CurrentTab = tmpTab;
413 tmpTab
->custom
= (GtkCustom
*)gtk_custom_new();
414 gtk_widget_show((GtkWidget
*)tmpTab
->custom
);
417 get_label((GtkWindow
*)mwData
->MWindow
, label
);
418 tmpTab
->label
= gtk_label_new (label
);
419 gtk_widget_show (tmpTab
->label
);
421 gtk_notebook_append_page(notebook
, (GtkWidget
*)tmpTab
->custom
, tmpTab
->label
);
423 list
= gtk_container_get_children(GTK_CONTAINER(notebook
));
424 gtk_notebook_set_current_page(notebook
,g_list_length(list
)-1);
429 on_open_activate (GtkMenuItem
*menuitem
,
432 open_traceset((GtkWidget
*)menuitem
, user_data
);
437 on_close_activate (GtkMenuItem
*menuitem
,
445 on_close_tab_activate (GtkMenuItem
*menuitem
,
448 g_printf("Close tab\n");
453 on_add_trace_activate (GtkMenuItem
*menuitem
,
456 add_trace((GtkWidget
*)menuitem
, user_data
);
461 on_remove_trace_activate (GtkMenuItem
*menuitem
,
464 remove_trace((GtkWidget
*)menuitem
, user_data
);
469 on_save_activate (GtkMenuItem
*menuitem
,
472 save((GtkWidget
*)menuitem
, user_data
);
477 on_save_as_activate (GtkMenuItem
*menuitem
,
480 save_as((GtkWidget
*)menuitem
, user_data
);
485 on_quit_activate (GtkMenuItem
*menuitem
,
488 on_MWindow_destroy(GTK_OBJECT(menuitem
), user_data
);
493 on_cut_activate (GtkMenuItem
*menuitem
,
501 on_copy_activate (GtkMenuItem
*menuitem
,
509 on_paste_activate (GtkMenuItem
*menuitem
,
517 on_delete_activate (GtkMenuItem
*menuitem
,
520 g_printf("Delete\n");
525 on_zoom_in_activate (GtkMenuItem
*menuitem
,
528 zoom_in((GtkWidget
*)menuitem
, user_data
);
533 on_zoom_out_activate (GtkMenuItem
*menuitem
,
536 zoom_out((GtkWidget
*)menuitem
, user_data
);
541 on_zoom_extended_activate (GtkMenuItem
*menuitem
,
544 zoom_extended((GtkWidget
*)menuitem
, user_data
);
549 on_go_to_time_activate (GtkMenuItem
*menuitem
,
552 go_to_time((GtkWidget
*)menuitem
, user_data
);
557 on_show_time_frame_activate (GtkMenuItem
*menuitem
,
560 show_time_frame((GtkWidget
*)menuitem
, user_data
);
565 on_move_viewer_up_activate (GtkMenuItem
*menuitem
,
568 move_up_viewer((GtkWidget
*)menuitem
, user_data
);
573 on_move_viewer_down_activate (GtkMenuItem
*menuitem
,
576 move_down_viewer((GtkWidget
*)menuitem
, user_data
);
581 on_remove_viewer_activate (GtkMenuItem
*menuitem
,
584 delete_viewer((GtkWidget
*)menuitem
, user_data
);
589 on_load_module_activate (GtkMenuItem
*menuitem
,
592 g_printf("Load module\n");
597 on_unload_module_activate (GtkMenuItem
*menuitem
,
600 g_printf("Unload module\n");
605 on_add_module_search_path_activate (GtkMenuItem
*menuitem
,
608 g_printf("Add module search path\n");
613 on_color_activate (GtkMenuItem
*menuitem
,
621 on_filter_activate (GtkMenuItem
*menuitem
,
624 g_printf("Filter\n");
629 on_save_configuration_activate (GtkMenuItem
*menuitem
,
632 g_printf("Save configuration\n");
637 on_content_activate (GtkMenuItem
*menuitem
,
640 g_printf("Content\n");
645 on_about_activate (GtkMenuItem
*menuitem
,
648 g_printf("About...\n");
653 on_button_new_clicked (GtkButton
*button
,
656 createNewWindow((GtkWidget
*)button
, user_data
, FALSE
);
661 on_button_open_clicked (GtkButton
*button
,
664 open_traceset((GtkWidget
*)button
, user_data
);
669 on_button_add_trace_clicked (GtkButton
*button
,
672 add_trace((GtkWidget
*)button
, user_data
);
677 on_button_remove_trace_clicked (GtkButton
*button
,
680 remove_trace((GtkWidget
*)button
, user_data
);
685 on_button_save_clicked (GtkButton
*button
,
688 save((GtkWidget
*)button
, user_data
);
693 on_button_save_as_clicked (GtkButton
*button
,
696 save_as((GtkWidget
*)button
, user_data
);
701 on_button_zoom_in_clicked (GtkButton
*button
,
704 zoom_in((GtkWidget
*)button
, user_data
);
709 on_button_zoom_out_clicked (GtkButton
*button
,
712 zoom_out((GtkWidget
*)button
, user_data
);
717 on_button_zoom_extended_clicked (GtkButton
*button
,
720 zoom_extended((GtkWidget
*)button
, user_data
);
725 on_button_go_to_time_clicked (GtkButton
*button
,
728 go_to_time((GtkWidget
*)button
, user_data
);
733 on_button_show_time_frame_clicked (GtkButton
*button
,
736 show_time_frame((GtkWidget
*)button
, user_data
);
741 on_button_move_up_clicked (GtkButton
*button
,
744 move_up_viewer((GtkWidget
*)button
, user_data
);
749 on_button_move_down_clicked (GtkButton
*button
,
752 move_down_viewer((GtkWidget
*)button
, user_data
);
757 on_button_delete_viewer_clicked (GtkButton
*button
,
760 delete_viewer((GtkWidget
*)button
, user_data
);
764 on_MWindow_destroy (GtkObject
*object
,
767 systemView
* sv
= gSysView
;
770 g_printf("There are : %d windows\n",++count
);
773 g_printf("There are : %d windows\n",++count
);
781 on_MNotebook_switch_page (GtkNotebook
*notebook
,
782 GtkNotebookPage
*page
,
786 mainWindow
* mw
= get_window_data_struct((GtkWidget
*)notebook
);
793 mw
->CurrentTab
= Tab
;