11 #include <lttv/mainWindow.h>
12 #include <lttv/menu.h>
13 #include <lttv/toolbar.h>
14 #include <lttv/gtkTraceSet.h>
16 extern systemView
* gSysView
;
17 extern LttvTracesetContext
* gTracesetContext
;
19 /** Array containing instanced objects. */
20 extern GSList
* Main_Window_List
;
22 mainWindow
* get_window_data_struct(GtkWidget
* widget
);
25 void insertView(GtkWidget
* widget
, view_constructor constructor
);
28 on_textview1_grab_focus (GtkTextView
*text_view
,
32 GtkCustom
* custom
= (GtkCustom
*)user_data
;
33 widget
= gtk_widget_get_parent((GtkWidget
*)text_view
);
34 widget
= gtk_widget_get_parent(widget
);
35 gtk_custom_set_focus((GtkWidget
*)custom
, (gpointer
)widget
);
39 insertViewTest(GtkMenuItem
*menuitem
, gpointer user_data
)
42 insertView((GtkWidget
*)menuitem
, (view_constructor
)user_data
);
43 // selected_hook(&val);
47 on_insert_viewer_test_activate (GtkMenuItem
*menuitem
,
50 GtkWidget
*scrolledwindow1
, *textview1
, *label
;
57 mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
58 if(!mwData
->CurrentTab
) return;
59 custom
= mwData
->CurrentTab
->custom
;
61 sprintf(str
,"label : %d",++count
);
62 scrolledwindow1
= gtk_scrolled_window_new (NULL
, NULL
);
63 gtk_widget_show (scrolledwindow1
);
64 label
= gtk_label_new(str
);
65 gtk_widget_show(label
);
67 gtk_custom_widget_add(custom
, scrolledwindow1
);
68 gtk_widget_set_size_request ((GtkWidget
*)scrolledwindow1
, 800, 100);
70 textview1
= gtk_text_view_new ();
71 gtk_widget_show (textview1
);
72 gtk_container_add (GTK_CONTAINER (scrolledwindow1
), textview1
);
73 buf
= gtk_text_view_get_buffer((GtkTextView
*)textview1
);
74 sprintf(str
,"text view : %d",count
);
75 gtk_text_buffer_set_text(buf
,str
, -1);
77 g_signal_connect ((gpointer
) textview1
, "grab_focus",
78 G_CALLBACK (on_textview1_grab_focus
), custom
);
81 /* end of test part */
84 /* internal functions */
85 void insertView(GtkWidget
* widget
, view_constructor constructor
)
91 mwData
= get_window_data_struct(widget
);
92 if(!mwData
->CurrentTab
) return;
93 custom
= mwData
->CurrentTab
->custom
;
95 viewer
= (GtkWidget
*)constructor(mwData
);
97 gtk_custom_widget_add(custom
, viewer
);
100 void get_label_string (GtkWidget
* text
, gchar
* label
)
102 GtkEntry
* entry
= (GtkEntry
*)text
;
103 if(strlen(gtk_entry_get_text(entry
))!=0)
104 strcpy(label
,gtk_entry_get_text(entry
));
107 void get_label(GtkWindow
* mw
, gchar
* str
)
109 GtkWidget
* dialogue
;
114 strcpy(str
,"Page"); //default label
116 dialogue
= gtk_dialog_new_with_buttons("Get the name of the tab",mw
,
118 GTK_STOCK_OK
,GTK_RESPONSE_ACCEPT
,
119 GTK_STOCK_CANCEL
,GTK_RESPONSE_REJECT
,
122 label
= gtk_label_new("Please input tab's name");
123 gtk_widget_show(label
);
125 text
= gtk_entry_new();
126 gtk_widget_show(text
);
128 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), label
,TRUE
, TRUE
,0);
129 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), text
,FALSE
, FALSE
,0);
131 id
= gtk_dialog_run(GTK_DIALOG(dialogue
));
133 case GTK_RESPONSE_ACCEPT
:
134 get_label_string(text
,str
);
135 gtk_widget_destroy(dialogue
);
137 case GTK_RESPONSE_REJECT
:
139 gtk_widget_destroy(dialogue
);
144 mainWindow
* get_window_data_struct(GtkWidget
* widget
)
149 mw
= lookup_widget(widget
, "MWindow");
151 g_printf("Main window does not exist\n");
155 mwData
= (mainWindow
*) g_object_get_data(G_OBJECT(mw
),"mainWindow");
157 g_printf("Main window data does not exist\n");
163 void createNewWindow(GtkWidget
* widget
, gpointer user_data
, gboolean clone
)
165 GtkWidget
* mw
= NULL
; /* Main window */
166 systemView
* sv
= NULL
; /* System view */
167 systemView
* newSv
; /* New system view displayed in the new window */
168 GtkWidget
* newWindow
; /* New generated main window */
169 mainWindow
* newMWindow
;/* New main window structure */
173 GtkWidget
* ToolMenuTitle_menu
, *insert_view
, *pixmap
;
175 LttvToolbars
* toolbar
;
176 lttv_menu_closure
*menuItem
;
177 lttv_toolbar_closure
*toolbarItem
;
178 LttvAttributeValue value
;
179 LttvIAttribute
*attributes
= LTTV_IATTRIBUTE(lttv_global_attributes());
180 view_constructor constructor
;
184 mw
= lookup_widget (widget
, "MWindow");
186 g_printf("Can not find main window\n");
190 sv
= (systemView
*)g_object_get_data(G_OBJECT(mw
),"systemView");
192 g_printf("Can not find system view\n");
196 newMWindow
= g_new(mainWindow
, 1);
198 /* Add the object's information to the module's array */
199 Main_Window_List
= g_slist_append(Main_Window_List
, mw
);
201 newWindow
= create_MWindow();
202 gtk_widget_show (newWindow
);
205 newSv
= g_new(systemView
, 1);
206 while(sv
->Next
) sv
= sv
->Next
;
209 newSv
->EventDB
= NULL
;
210 newSv
->SystemInfo
= NULL
;
211 newSv
->Options
= NULL
;
213 newSv
->Window
= newMWindow
;
215 newMWindow
->MWindow
= newWindow
;
216 newMWindow
->Tab
= NULL
;
217 newMWindow
->CurrentTab
= NULL
;
218 newMWindow
->SystemView
= newSv
;
219 newMWindow
->Attributes
= LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE
, NULL
));
220 newMWindow
->traceset_context
= LTTV_TRACESET_CONTEXT(gTracesetContext
);
221 newMWindow
->traceset
= (LTTV_TRACESET_CONTEXT(gTracesetContext
))->ts
;
222 g_object_ref(gTracesetContext
);
225 g_assert(lttv_iattribute_find_by_path(attributes
,
226 "viewers/menu", LTTV_POINTER
, &value
));
227 menu
= (LttvMenus
*)*(value
.v_pointer
);
230 for(i
=0;i
<menu
->len
;i
++){
231 menuItem
= &g_array_index(menu
, lttv_menu_closure
, i
);
232 constructor
= menuItem
->con
;
233 ToolMenuTitle_menu
= lookup_widget(newMWindow
->MWindow
,"ToolMenuTitle_menu");
234 insert_view
= gtk_menu_item_new_with_mnemonic (menuItem
->menuText
);
235 gtk_widget_show (insert_view
);
236 gtk_container_add (GTK_CONTAINER (ToolMenuTitle_menu
), insert_view
);
237 g_signal_connect ((gpointer
) insert_view
, "activate",
238 G_CALLBACK (insertViewTest
),
242 g_assert(lttv_iattribute_find_by_path(attributes
,
243 "viewers/toolbar", LTTV_POINTER
, &value
));
244 toolbar
= (LttvToolbars
*)*(value
.v_pointer
);
247 for(i
=0;i
<toolbar
->len
;i
++){
248 toolbarItem
= &g_array_index(toolbar
, lttv_toolbar_closure
, i
);
249 constructor
= toolbarItem
->con
;
250 ToolMenuTitle_menu
= lookup_widget(newMWindow
->MWindow
,"MToolbar2");
251 pixbuf
= gdk_pixbuf_new_from_xpm_data ((const char**)toolbarItem
->pixmap
);
252 pixmap
= gtk_image_new_from_pixbuf(pixbuf
);
253 insert_view
= gtk_toolbar_append_element (GTK_TOOLBAR (ToolMenuTitle_menu
),
254 GTK_TOOLBAR_CHILD_BUTTON
,
257 toolbarItem
->tooltip
, NULL
,
259 gtk_label_set_use_underline (GTK_LABEL (((GtkToolbarChild
*) (g_list_last (GTK_TOOLBAR (ToolMenuTitle_menu
)->children
)->data
))->label
), TRUE
);
260 gtk_widget_show (insert_view
);
261 gtk_container_set_border_width (GTK_CONTAINER (insert_view
), 1);
262 g_signal_connect ((gpointer
) insert_view
, "clicked",G_CALLBACK (insertViewTest
),constructor
);
267 g_object_set_data(G_OBJECT(newWindow
), "systemView", (gpointer
)newSv
);
268 g_object_set_data(G_OBJECT(newWindow
), "mainWindow", (gpointer
)newMWindow
);
271 g_printf("Clone : use the same traceset\n");
273 g_printf("Empty : traceset is set to NULL\n");
277 void move_up_viewer(GtkWidget
* widget
, gpointer user_data
)
279 mainWindow
* mw
= get_window_data_struct(widget
);
280 if(!mw
->CurrentTab
) return;
281 gtk_custom_widget_move_up(mw
->CurrentTab
->custom
);
284 void move_down_viewer(GtkWidget
* widget
, gpointer user_data
)
286 mainWindow
* mw
= get_window_data_struct(widget
);
287 if(!mw
->CurrentTab
) return;
288 gtk_custom_widget_move_down(mw
->CurrentTab
->custom
);
291 void delete_viewer(GtkWidget
* widget
, gpointer user_data
)
293 mainWindow
* mw
= get_window_data_struct(widget
);
294 if(!mw
->CurrentTab
) return;
295 gtk_custom_widget_delete(mw
->CurrentTab
->custom
);
298 void open_traceset(GtkWidget
* widget
, gpointer user_data
)
300 g_printf("Open a trace set\n");
303 void add_trace(GtkWidget
* widget
, gpointer user_data
)
305 g_printf("add a trace to a trace set\n");
308 void remove_trace(GtkWidget
* widget
, gpointer user_data
)
310 g_printf("remove a trace from a trace set\n");
313 void save(GtkWidget
* widget
, gpointer user_data
)
318 void save_as(GtkWidget
* widget
, gpointer user_data
)
320 g_printf("Save as\n");
323 void zoom_in(GtkWidget
* widget
, gpointer user_data
)
325 g_printf("Zoom in\n");
328 void zoom_out(GtkWidget
* widget
, gpointer user_data
)
330 g_printf("Zoom out\n");
333 void zoom_extended(GtkWidget
* widget
, gpointer user_data
)
335 g_printf("Zoom extended\n");
338 void go_to_time(GtkWidget
* widget
, gpointer user_data
)
340 g_printf("Go to time\n");
343 void show_time_frame(GtkWidget
* widget
, gpointer user_data
)
345 g_printf("Show time frame\n");
349 /* callback function */
352 on_empty_traceset_activate (GtkMenuItem
*menuitem
,
355 createNewWindow((GtkWidget
*)menuitem
, user_data
, FALSE
);
360 on_clone_traceset_activate (GtkMenuItem
*menuitem
,
363 createNewWindow((GtkWidget
*)menuitem
, user_data
, TRUE
);
368 on_tab_activate (GtkMenuItem
*menuitem
,
377 GtkNotebook
* notebook
= (GtkNotebook
*)lookup_widget((GtkWidget
*)menuitem
, "MNotebook");
378 if(notebook
== NULL
){
379 g_printf("Notebook does not exist\n");
383 mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
385 tmpTab
= mwData
->Tab
;
386 while(tmpTab
&& tmpTab
->Next
) tmpTab
= tmpTab
->Next
;
388 mwData
->CurrentTab
= NULL
;
389 tmpTab
= g_new(tab
,1);
390 mwData
->Tab
= tmpTab
;
392 tmpTab
->Next
= g_new(tab
,1);
393 tmpTab
= tmpTab
->Next
;
395 if(mwData
->CurrentTab
){
396 tmpTab
->traceStartTime
= mwData
->CurrentTab
->traceStartTime
;
397 tmpTab
->traceEndTime
= mwData
->CurrentTab
->traceEndTime
;
398 tmpTab
->startTime
= mwData
->CurrentTab
->startTime
;
399 tmpTab
->endTime
= mwData
->CurrentTab
->endTime
;
400 tmpTab
->currentTime
= mwData
->CurrentTab
->currentTime
;
402 getTracesetTimeSpan(mwData
,&tmpTab
->traceStartTime
, &tmpTab
->traceEndTime
);
403 tmpTab
->startTime
= tmpTab
->traceStartTime
;
404 tmpTab
->endTime
= tmpTab
->traceEndTime
;
405 tmpTab
->currentTime
= tmpTab
->traceStartTime
;
407 tmpTab
->Attributes
= LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE
, NULL
));
408 // mwData->CurrentTab = tmpTab;
409 tmpTab
->custom
= (GtkCustom
*)gtk_custom_new();
410 tmpTab
->custom
->mw
= mwData
;
411 gtk_widget_show((GtkWidget
*)tmpTab
->custom
);
414 get_label((GtkWindow
*)mwData
->MWindow
, label
);
415 tmpTab
->label
= gtk_label_new (label
);
416 gtk_widget_show (tmpTab
->label
);
418 gtk_notebook_append_page(notebook
, (GtkWidget
*)tmpTab
->custom
, tmpTab
->label
);
420 list
= gtk_container_get_children(GTK_CONTAINER(notebook
));
421 gtk_notebook_set_current_page(notebook
,g_list_length(list
)-1);
426 on_open_activate (GtkMenuItem
*menuitem
,
429 open_traceset((GtkWidget
*)menuitem
, user_data
);
434 on_close_activate (GtkMenuItem
*menuitem
,
442 on_close_tab_activate (GtkMenuItem
*menuitem
,
445 g_printf("Close tab\n");
450 on_add_trace_activate (GtkMenuItem
*menuitem
,
453 add_trace((GtkWidget
*)menuitem
, user_data
);
458 on_remove_trace_activate (GtkMenuItem
*menuitem
,
461 remove_trace((GtkWidget
*)menuitem
, user_data
);
466 on_save_activate (GtkMenuItem
*menuitem
,
469 save((GtkWidget
*)menuitem
, user_data
);
474 on_save_as_activate (GtkMenuItem
*menuitem
,
477 save_as((GtkWidget
*)menuitem
, user_data
);
482 on_quit_activate (GtkMenuItem
*menuitem
,
485 on_MWindow_destroy(GTK_OBJECT(menuitem
), user_data
);
490 on_cut_activate (GtkMenuItem
*menuitem
,
498 on_copy_activate (GtkMenuItem
*menuitem
,
506 on_paste_activate (GtkMenuItem
*menuitem
,
514 on_delete_activate (GtkMenuItem
*menuitem
,
517 g_printf("Delete\n");
522 on_zoom_in_activate (GtkMenuItem
*menuitem
,
525 zoom_in((GtkWidget
*)menuitem
, user_data
);
530 on_zoom_out_activate (GtkMenuItem
*menuitem
,
533 zoom_out((GtkWidget
*)menuitem
, user_data
);
538 on_zoom_extended_activate (GtkMenuItem
*menuitem
,
541 zoom_extended((GtkWidget
*)menuitem
, user_data
);
546 on_go_to_time_activate (GtkMenuItem
*menuitem
,
549 go_to_time((GtkWidget
*)menuitem
, user_data
);
554 on_show_time_frame_activate (GtkMenuItem
*menuitem
,
557 show_time_frame((GtkWidget
*)menuitem
, user_data
);
562 on_move_viewer_up_activate (GtkMenuItem
*menuitem
,
565 move_up_viewer((GtkWidget
*)menuitem
, user_data
);
570 on_move_viewer_down_activate (GtkMenuItem
*menuitem
,
573 move_down_viewer((GtkWidget
*)menuitem
, user_data
);
578 on_remove_viewer_activate (GtkMenuItem
*menuitem
,
581 delete_viewer((GtkWidget
*)menuitem
, user_data
);
586 on_load_module_activate (GtkMenuItem
*menuitem
,
589 g_printf("Load module\n");
594 on_unload_module_activate (GtkMenuItem
*menuitem
,
597 g_printf("Unload module\n");
602 on_add_module_search_path_activate (GtkMenuItem
*menuitem
,
605 g_printf("Add module search path\n");
610 on_color_activate (GtkMenuItem
*menuitem
,
618 on_filter_activate (GtkMenuItem
*menuitem
,
621 g_printf("Filter\n");
626 on_save_configuration_activate (GtkMenuItem
*menuitem
,
629 g_printf("Save configuration\n");
634 on_content_activate (GtkMenuItem
*menuitem
,
637 g_printf("Content\n");
642 on_about_activate (GtkMenuItem
*menuitem
,
645 g_printf("About...\n");
650 on_button_new_clicked (GtkButton
*button
,
653 createNewWindow((GtkWidget
*)button
, user_data
, FALSE
);
658 on_button_open_clicked (GtkButton
*button
,
661 open_traceset((GtkWidget
*)button
, user_data
);
666 on_button_add_trace_clicked (GtkButton
*button
,
669 add_trace((GtkWidget
*)button
, user_data
);
674 on_button_remove_trace_clicked (GtkButton
*button
,
677 remove_trace((GtkWidget
*)button
, user_data
);
682 on_button_save_clicked (GtkButton
*button
,
685 save((GtkWidget
*)button
, user_data
);
690 on_button_save_as_clicked (GtkButton
*button
,
693 save_as((GtkWidget
*)button
, user_data
);
698 on_button_zoom_in_clicked (GtkButton
*button
,
701 zoom_in((GtkWidget
*)button
, user_data
);
706 on_button_zoom_out_clicked (GtkButton
*button
,
709 zoom_out((GtkWidget
*)button
, user_data
);
714 on_button_zoom_extended_clicked (GtkButton
*button
,
717 zoom_extended((GtkWidget
*)button
, user_data
);
722 on_button_go_to_time_clicked (GtkButton
*button
,
725 go_to_time((GtkWidget
*)button
, user_data
);
730 on_button_show_time_frame_clicked (GtkButton
*button
,
733 show_time_frame((GtkWidget
*)button
, user_data
);
738 on_button_move_up_clicked (GtkButton
*button
,
741 move_up_viewer((GtkWidget
*)button
, user_data
);
746 on_button_move_down_clicked (GtkButton
*button
,
749 move_down_viewer((GtkWidget
*)button
, user_data
);
754 on_button_delete_viewer_clicked (GtkButton
*button
,
757 delete_viewer((GtkWidget
*)button
, user_data
);
761 on_MWindow_destroy (GtkObject
*object
,
764 systemView
* sv
= gSysView
;
767 g_printf("There are : %d windows\n",++count
);
770 g_printf("There are : %d windows\n",++count
);
778 on_MNotebook_switch_page (GtkNotebook
*notebook
,
779 GtkNotebookPage
*page
,
783 mainWindow
* mw
= get_window_data_struct((GtkWidget
*)notebook
);
790 mw
->CurrentTab
= Tab
;