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
)
89 mwData
= get_window_data_struct(widget
);
90 if(!mwData
->CurrentTab
) return;
91 custom
= mwData
->CurrentTab
->custom
;
93 gtk_custom_widget_add(custom
, (GtkWidget
*)constructor(mwData
));
96 void get_label_string (GtkWidget
* text
, gchar
* label
)
98 GtkEntry
* entry
= (GtkEntry
*)text
;
99 if(strlen(gtk_entry_get_text(entry
))!=0)
100 strcpy(label
,gtk_entry_get_text(entry
));
103 void get_label(GtkWindow
* mw
, gchar
* str
)
105 GtkWidget
* dialogue
;
110 strcpy(str
,"Page"); //default label
112 dialogue
= gtk_dialog_new_with_buttons("Get the name of the tab",mw
,
114 GTK_STOCK_OK
,GTK_RESPONSE_ACCEPT
,
115 GTK_STOCK_CANCEL
,GTK_RESPONSE_REJECT
,
118 label
= gtk_label_new("Please input tab's name");
119 gtk_widget_show(label
);
121 text
= gtk_entry_new();
122 gtk_widget_show(text
);
124 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), label
,TRUE
, TRUE
,0);
125 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), text
,FALSE
, FALSE
,0);
127 id
= gtk_dialog_run(GTK_DIALOG(dialogue
));
129 case GTK_RESPONSE_ACCEPT
:
130 get_label_string(text
,str
);
131 gtk_widget_destroy(dialogue
);
133 case GTK_RESPONSE_REJECT
:
135 gtk_widget_destroy(dialogue
);
140 mainWindow
* get_window_data_struct(GtkWidget
* widget
)
145 mw
= lookup_widget(widget
, "MWindow");
147 g_printf("Main window does not exist\n");
151 mwData
= (mainWindow
*) g_object_get_data(G_OBJECT(mw
),"mainWindow");
153 g_printf("Main window data does not exist\n");
159 void createNewWindow(GtkWidget
* widget
, gpointer user_data
, gboolean clone
)
161 GtkWidget
* mw
= NULL
; /* Main window */
162 systemView
* sv
= NULL
; /* System view */
163 systemView
* newSv
; /* New system view displayed in the new window */
164 GtkWidget
* newWindow
; /* New generated main window */
165 mainWindow
* newMWindow
;/* New main window structure */
169 GtkWidget
* ToolMenuTitle_menu
, *insert_view
, *pixmap
;
171 LttvToolbars
* toolbar
;
172 lttv_menu_closure
*menuItem
;
173 lttv_toolbar_closure
*toolbarItem
;
174 LttvAttributeValue value
;
175 LttvIAttribute
*attributes
= LTTV_IATTRIBUTE(lttv_global_attributes());
176 view_constructor constructor
;
180 mw
= lookup_widget (widget
, "MWindow");
182 g_printf("Can not find main window\n");
186 sv
= (systemView
*)g_object_get_data(G_OBJECT(mw
),"systemView");
188 g_printf("Can not find system view\n");
192 newMWindow
= g_new(mainWindow
, 1);
194 /* Add the object's information to the module's array */
195 Main_Window_List
= g_slist_append(Main_Window_List
, mw
);
197 newWindow
= create_MWindow();
198 gtk_widget_show (newWindow
);
201 newSv
= g_new(systemView
, 1);
202 while(sv
->Next
) sv
= sv
->Next
;
205 newSv
->EventDB
= NULL
;
206 newSv
->SystemInfo
= NULL
;
207 newSv
->Options
= NULL
;
209 newSv
->Window
= newMWindow
;
211 newMWindow
->MWindow
= newWindow
;
212 newMWindow
->Tab
= NULL
;
213 newMWindow
->CurrentTab
= NULL
;
214 newMWindow
->SystemView
= newSv
;
215 newMWindow
->Attributes
= LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE
, NULL
));
216 newMWindow
->traceset_context
= LTTV_TRACESET_CONTEXT(gTracesetContext
);
217 newMWindow
->traceset
= (LTTV_TRACESET_CONTEXT(gTracesetContext
))->ts
;
218 g_object_ref(gTracesetContext
);
221 g_assert(lttv_iattribute_find_by_path(attributes
,
222 "viewers/menu", LTTV_POINTER
, &value
));
223 menu
= (LttvMenus
*)*(value
.v_pointer
);
226 for(i
=0;i
<menu
->len
;i
++){
227 menuItem
= &g_array_index(menu
, lttv_menu_closure
, i
);
228 constructor
= menuItem
->con
;
229 ToolMenuTitle_menu
= lookup_widget(newMWindow
->MWindow
,"ToolMenuTitle_menu");
230 insert_view
= gtk_menu_item_new_with_mnemonic (menuItem
->menuText
);
231 gtk_widget_show (insert_view
);
232 gtk_container_add (GTK_CONTAINER (ToolMenuTitle_menu
), insert_view
);
233 g_signal_connect ((gpointer
) insert_view
, "activate",
234 G_CALLBACK (insertViewTest
),
238 g_assert(lttv_iattribute_find_by_path(attributes
,
239 "viewers/toolbar", LTTV_POINTER
, &value
));
240 toolbar
= (LttvToolbars
*)*(value
.v_pointer
);
243 for(i
=0;i
<toolbar
->len
;i
++){
244 toolbarItem
= &g_array_index(toolbar
, lttv_toolbar_closure
, i
);
245 constructor
= toolbarItem
->con
;
246 ToolMenuTitle_menu
= lookup_widget(newMWindow
->MWindow
,"MToolbar2");
247 pixbuf
= gdk_pixbuf_new_from_xpm_data ((const char**)toolbarItem
->pixmap
);
248 pixmap
= gtk_image_new_from_pixbuf(pixbuf
);
249 insert_view
= gtk_toolbar_append_element (GTK_TOOLBAR (ToolMenuTitle_menu
),
250 GTK_TOOLBAR_CHILD_BUTTON
,
253 toolbarItem
->tooltip
, NULL
,
255 gtk_label_set_use_underline (GTK_LABEL (((GtkToolbarChild
*) (g_list_last (GTK_TOOLBAR (ToolMenuTitle_menu
)->children
)->data
))->label
), TRUE
);
256 gtk_widget_show (insert_view
);
257 gtk_container_set_border_width (GTK_CONTAINER (insert_view
), 1);
258 g_signal_connect ((gpointer
) insert_view
, "clicked",G_CALLBACK (insertViewTest
),constructor
);
263 g_object_set_data(G_OBJECT(newWindow
), "systemView", (gpointer
)newSv
);
264 g_object_set_data(G_OBJECT(newWindow
), "mainWindow", (gpointer
)newMWindow
);
267 g_printf("Clone : use the same traceset\n");
269 g_printf("Empty : traceset is set to NULL\n");
273 void move_up_viewer(GtkWidget
* widget
, gpointer user_data
)
275 mainWindow
* mw
= get_window_data_struct(widget
);
276 if(!mw
->CurrentTab
) return;
277 gtk_custom_widget_move_up(mw
->CurrentTab
->custom
);
280 void move_down_viewer(GtkWidget
* widget
, gpointer user_data
)
282 mainWindow
* mw
= get_window_data_struct(widget
);
283 if(!mw
->CurrentTab
) return;
284 gtk_custom_widget_move_down(mw
->CurrentTab
->custom
);
287 void delete_viewer(GtkWidget
* widget
, gpointer user_data
)
289 mainWindow
* mw
= get_window_data_struct(widget
);
290 if(!mw
->CurrentTab
) return;
291 gtk_custom_widget_delete(mw
->CurrentTab
->custom
);
294 void open_traceset(GtkWidget
* widget
, gpointer user_data
)
296 g_printf("Open a trace set\n");
299 void add_trace(GtkWidget
* widget
, gpointer user_data
)
301 g_printf("add a trace to a trace set\n");
304 void remove_trace(GtkWidget
* widget
, gpointer user_data
)
306 g_printf("remove a trace from a trace set\n");
309 void save(GtkWidget
* widget
, gpointer user_data
)
314 void save_as(GtkWidget
* widget
, gpointer user_data
)
316 g_printf("Save as\n");
319 void zoom_in(GtkWidget
* widget
, gpointer user_data
)
321 g_printf("Zoom in\n");
324 void zoom_out(GtkWidget
* widget
, gpointer user_data
)
326 g_printf("Zoom out\n");
329 void zoom_extended(GtkWidget
* widget
, gpointer user_data
)
331 g_printf("Zoom extended\n");
334 void go_to_time(GtkWidget
* widget
, gpointer user_data
)
336 g_printf("Go to time\n");
339 void show_time_frame(GtkWidget
* widget
, gpointer user_data
)
341 g_printf("Show time frame\n");
345 /* callback function */
348 on_empty_traceset_activate (GtkMenuItem
*menuitem
,
351 createNewWindow((GtkWidget
*)menuitem
, user_data
, FALSE
);
356 on_clone_traceset_activate (GtkMenuItem
*menuitem
,
359 createNewWindow((GtkWidget
*)menuitem
, user_data
, TRUE
);
364 on_tab_activate (GtkMenuItem
*menuitem
,
373 GtkNotebook
* notebook
= (GtkNotebook
*)lookup_widget((GtkWidget
*)menuitem
, "MNotebook");
374 if(notebook
== NULL
){
375 g_printf("Notebook does not exist\n");
379 mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
381 tmpTab
= mwData
->Tab
;
382 while(tmpTab
&& tmpTab
->Next
) tmpTab
= tmpTab
->Next
;
384 mwData
->CurrentTab
= NULL
;
385 tmpTab
= g_new(tab
,1);
386 tmpTab
->traceStartTime
.tv_sec
= 0;
387 tmpTab
->traceStartTime
.tv_nsec
= 0;
388 tmpTab
->traceEndTime
.tv_sec
= G_MAXULONG
;
389 tmpTab
->traceEndTime
.tv_nsec
= G_MAXULONG
;
390 tmpTab
->startTime
.tv_sec
= 0;
391 tmpTab
->startTime
.tv_nsec
= 0;
392 tmpTab
->endTime
.tv_sec
= G_MAXULONG
;
393 tmpTab
->endTime
.tv_nsec
= G_MAXULONG
;
394 tmpTab
->currentTime
.tv_sec
= 0;
395 tmpTab
->currentTime
.tv_nsec
= 0;
396 mwData
->Tab
= tmpTab
;
398 tmpTab
->Next
= g_new(tab
,1);
399 tmpTab
= tmpTab
->Next
;
401 if(mwData
->CurrentTab
){
402 tmpTab
->traceStartTime
= mwData
->CurrentTab
->traceStartTime
;
403 tmpTab
->traceEndTime
= mwData
->CurrentTab
->traceEndTime
;
404 tmpTab
->startTime
= mwData
->CurrentTab
->startTime
;
405 tmpTab
->endTime
= mwData
->CurrentTab
->endTime
;
406 tmpTab
->currentTime
= mwData
->CurrentTab
->currentTime
;
408 tmpTab
->Attributes
= LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE
, NULL
));
409 // mwData->CurrentTab = tmpTab;
410 tmpTab
->custom
= (GtkCustom
*)gtk_custom_new();
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
;