11 #include <lttv/mainWindow.h>
12 #include <lttv/menu.h>
13 #include <lttv/toolbar.h>
15 extern systemView
* gSysView
;
17 mainWindow
* get_window_data_struct(GtkWidget
* widget
);
20 void insertView(GtkWidget
* widget
, view_constructor constructor
);
23 on_textview1_grab_focus (GtkTextView
*text_view
,
27 GtkCustom
* custom
= (GtkCustom
*)user_data
;
28 widget
= gtk_widget_get_parent((GtkWidget
*)text_view
);
29 widget
= gtk_widget_get_parent(widget
);
30 gtk_custom_set_focus((GtkWidget
*)custom
, (gpointer
)widget
);
34 insertViewTest(GtkMenuItem
*menuitem
, gpointer user_data
)
37 insertView((GtkWidget
*)menuitem
, (view_constructor
)user_data
);
38 // selected_hook(&val);
42 on_insert_viewer_test_activate (GtkMenuItem
*menuitem
,
45 GtkWidget
*scrolledwindow1
, *textview1
, *label
;
52 mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
53 if(!mwData
->CurrentTab
) return;
54 custom
= mwData
->CurrentTab
->custom
;
56 sprintf(str
,"label : %d",++count
);
57 scrolledwindow1
= gtk_scrolled_window_new (NULL
, NULL
);
58 gtk_widget_show (scrolledwindow1
);
59 label
= gtk_label_new(str
);
60 gtk_widget_show(label
);
62 gtk_custom_widget_add(custom
, scrolledwindow1
);
63 gtk_widget_set_size_request ((GtkWidget
*)scrolledwindow1
, 800, 100);
65 textview1
= gtk_text_view_new ();
66 gtk_widget_show (textview1
);
67 gtk_container_add (GTK_CONTAINER (scrolledwindow1
), textview1
);
68 buf
= gtk_text_view_get_buffer((GtkTextView
*)textview1
);
69 sprintf(str
,"text view : %d",count
);
70 gtk_text_buffer_set_text(buf
,str
, -1);
72 g_signal_connect ((gpointer
) textview1
, "grab_focus",
73 G_CALLBACK (on_textview1_grab_focus
), custom
);
76 /* end of test part */
79 /* internal functions */
80 void insertView(GtkWidget
* widget
, view_constructor constructor
)
85 mwData
= get_window_data_struct(widget
);
86 if(!mwData
->CurrentTab
) return;
87 custom
= mwData
->CurrentTab
->custom
;
89 gtk_custom_widget_add(custom
, (GtkWidget
*)constructor(mwData
));
92 void get_label_string (GtkWidget
* text
, gchar
* label
)
94 GtkEntry
* entry
= (GtkEntry
*)text
;
95 if(strlen(gtk_entry_get_text(entry
))!=0)
96 strcpy(label
,gtk_entry_get_text(entry
));
99 void get_label(GtkWindow
* mw
, gchar
* str
)
101 GtkWidget
* dialogue
;
106 strcpy(str
,"Page"); //default label
108 dialogue
= gtk_dialog_new_with_buttons("Get the name of the tab",mw
,
110 GTK_STOCK_OK
,GTK_RESPONSE_ACCEPT
,
111 GTK_STOCK_CANCEL
,GTK_RESPONSE_REJECT
,
114 label
= gtk_label_new("Please input tab's name");
115 gtk_widget_show(label
);
117 text
= gtk_entry_new();
118 gtk_widget_show(text
);
120 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), label
,TRUE
, TRUE
,0);
121 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue
)->vbox
), text
,FALSE
, FALSE
,0);
123 id
= gtk_dialog_run(GTK_DIALOG(dialogue
));
125 case GTK_RESPONSE_ACCEPT
:
126 get_label_string(text
,str
);
127 gtk_widget_destroy(dialogue
);
129 case GTK_RESPONSE_REJECT
:
131 gtk_widget_destroy(dialogue
);
136 mainWindow
* get_window_data_struct(GtkWidget
* widget
)
141 mw
= lookup_widget(widget
, "MWindow");
143 g_printf("Main window does not exist\n");
147 mwData
= (mainWindow
*) g_object_get_data(G_OBJECT(mw
),"mainWindow");
149 g_printf("Main window data does not exist\n");
155 void createNewWindow(GtkWidget
* widget
, gpointer user_data
, gboolean clone
)
157 GtkWidget
* mw
= NULL
; /* Main window */
158 systemView
* sv
= NULL
; /* System view */
159 systemView
* newSv
; /* New system view displayed in the new window */
160 GtkWidget
* newWindow
; /* New generated main window */
161 mainWindow
* newMWindow
;/* New main window structure */
165 GtkWidget
* ToolMenuTitle_menu
, *insert_view
, *pixmap
;
167 LttvToolbars
* toolbar
;
168 lttv_menu_closure
*menuItem
;
169 lttv_toolbar_closure
*toolbarItem
;
170 LttvAttributeValue value
;
171 LttvIAttribute
*attributes
= LTTV_IATTRIBUTE(lttv_global_attributes());
172 view_constructor constructor
;
176 mw
= lookup_widget (widget
, "MWindow");
178 g_printf("Can not find main window\n");
182 sv
= (systemView
*)g_object_get_data(G_OBJECT(mw
),"systemView");
184 g_printf("Can not find system view\n");
188 newMWindow
= g_new(mainWindow
, 1);
189 newWindow
= create_MWindow();
190 gtk_widget_show (newWindow
);
193 newSv
= g_new(systemView
, 1);
194 while(sv
->Next
) sv
= sv
->Next
;
197 newSv
->EventDB
= NULL
;
198 newSv
->SystemInfo
= NULL
;
199 newSv
->Options
= NULL
;
201 newSv
->Window
= newMWindow
;
203 newMWindow
->MWindow
= newWindow
;
204 newMWindow
->Tab
= NULL
;
205 newMWindow
->CurrentTab
= NULL
;
206 newMWindow
->SystemView
= newSv
;
207 // newMWindow->Attributes = LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE, NULL));
210 g_assert(lttv_iattribute_find_by_path(attributes
,
211 "viewers/menu", LTTV_POINTER
, &value
));
212 menu
= (LttvMenus
*)*(value
.v_pointer
);
215 for(i
=0;i
<menu
->len
;i
++){
216 menuItem
= &g_array_index(menu
, lttv_menu_closure
, i
);
217 constructor
= menuItem
->con
;
218 ToolMenuTitle_menu
= lookup_widget(newMWindow
->MWindow
,"ToolMenuTitle_menu");
219 insert_view
= gtk_menu_item_new_with_mnemonic (menuItem
->menuText
);
220 gtk_widget_show (insert_view
);
221 gtk_container_add (GTK_CONTAINER (ToolMenuTitle_menu
), insert_view
);
222 g_signal_connect ((gpointer
) insert_view
, "activate",
223 G_CALLBACK (insertViewTest
),
227 g_assert(lttv_iattribute_find_by_path(attributes
,
228 "viewers/toolbar", LTTV_POINTER
, &value
));
229 toolbar
= (LttvToolbars
*)*(value
.v_pointer
);
232 for(i
=0;i
<toolbar
->len
;i
++){
233 toolbarItem
= &g_array_index(toolbar
, lttv_toolbar_closure
, i
);
234 constructor
= toolbarItem
->con
;
235 ToolMenuTitle_menu
= lookup_widget(newMWindow
->MWindow
,"MToolbar2");
236 pixbuf
= gdk_pixbuf_new_from_xpm_data ((const char**)toolbarItem
->pixmap
);
237 pixmap
= gtk_image_new_from_pixbuf(pixbuf
);
238 insert_view
= gtk_toolbar_append_element (GTK_TOOLBAR (ToolMenuTitle_menu
),
239 GTK_TOOLBAR_CHILD_BUTTON
,
242 toolbarItem
->tooltip
, NULL
,
244 gtk_label_set_use_underline (GTK_LABEL (((GtkToolbarChild
*) (g_list_last (GTK_TOOLBAR (ToolMenuTitle_menu
)->children
)->data
))->label
), TRUE
);
245 gtk_widget_show (insert_view
);
246 gtk_container_set_border_width (GTK_CONTAINER (insert_view
), 1);
247 g_signal_connect ((gpointer
) insert_view
, "clicked",G_CALLBACK (insertViewTest
),constructor
);
252 g_object_set_data(G_OBJECT(newWindow
), "systemView", (gpointer
)newSv
);
253 g_object_set_data(G_OBJECT(newWindow
), "mainWindow", (gpointer
)newMWindow
);
256 g_printf("Clone : use the same traceset\n");
258 g_printf("Empty : traceset is set to NULL\n");
262 void move_up_viewer(GtkWidget
* widget
, gpointer user_data
)
264 mainWindow
* mw
= get_window_data_struct(widget
);
265 if(!mw
->CurrentTab
) return;
266 gtk_custom_widget_move_up(mw
->CurrentTab
->custom
);
269 void move_down_viewer(GtkWidget
* widget
, gpointer user_data
)
271 mainWindow
* mw
= get_window_data_struct(widget
);
272 if(!mw
->CurrentTab
) return;
273 gtk_custom_widget_move_down(mw
->CurrentTab
->custom
);
276 void delete_viewer(GtkWidget
* widget
, gpointer user_data
)
278 mainWindow
* mw
= get_window_data_struct(widget
);
279 if(!mw
->CurrentTab
) return;
280 gtk_custom_widget_delete(mw
->CurrentTab
->custom
);
283 void open_traceset(GtkWidget
* widget
, gpointer user_data
)
285 g_printf("Open a trace set\n");
288 void add_trace(GtkWidget
* widget
, gpointer user_data
)
290 g_printf("add a trace to a trace set\n");
293 void remove_trace(GtkWidget
* widget
, gpointer user_data
)
295 g_printf("remove a trace from a trace set\n");
298 void save(GtkWidget
* widget
, gpointer user_data
)
303 void save_as(GtkWidget
* widget
, gpointer user_data
)
305 g_printf("Save as\n");
308 void zoom_in(GtkWidget
* widget
, gpointer user_data
)
310 g_printf("Zoom in\n");
313 void zoom_out(GtkWidget
* widget
, gpointer user_data
)
315 g_printf("Zoom out\n");
318 void zoom_extended(GtkWidget
* widget
, gpointer user_data
)
320 g_printf("Zoom extended\n");
323 void go_to_time(GtkWidget
* widget
, gpointer user_data
)
325 g_printf("Go to time\n");
328 void show_time_frame(GtkWidget
* widget
, gpointer user_data
)
330 g_printf("Show time frame\n");
334 /* callback function */
337 on_empty_traceset_activate (GtkMenuItem
*menuitem
,
340 createNewWindow((GtkWidget
*)menuitem
, user_data
, FALSE
);
345 on_clone_traceset_activate (GtkMenuItem
*menuitem
,
348 createNewWindow((GtkWidget
*)menuitem
, user_data
, TRUE
);
353 on_tab_activate (GtkMenuItem
*menuitem
,
362 GtkNotebook
* notebook
= (GtkNotebook
*)lookup_widget((GtkWidget
*)menuitem
, "MNotebook");
363 if(notebook
== NULL
){
364 g_printf("Notebook does not exist\n");
368 mwData
= get_window_data_struct((GtkWidget
*)menuitem
);
370 tmpTab
= mwData
->Tab
;
371 while(tmpTab
&& tmpTab
->Next
) tmpTab
= tmpTab
->Next
;
373 tmpTab
= g_new(tab
,1);
374 mwData
->Tab
= tmpTab
;
376 tmpTab
->Next
= g_new(tab
,1);
377 tmpTab
= tmpTab
->Next
;
379 // mwData->CurrentTab = tmpTab;
380 tmpTab
->custom
= (GtkCustom
*)gtk_custom_new();
381 gtk_widget_show((GtkWidget
*)tmpTab
->custom
);
384 get_label((GtkWindow
*)mwData
->MWindow
, label
);
385 tmpTab
->label
= gtk_label_new (label
);
386 gtk_widget_show (tmpTab
->label
);
388 gtk_notebook_append_page(notebook
, (GtkWidget
*)tmpTab
->custom
, tmpTab
->label
);
390 list
= gtk_container_get_children(GTK_CONTAINER(notebook
));
391 gtk_notebook_set_current_page(notebook
,g_list_length(list
)-1);
396 on_open_activate (GtkMenuItem
*menuitem
,
399 open_traceset((GtkWidget
*)menuitem
, user_data
);
404 on_close_activate (GtkMenuItem
*menuitem
,
412 on_close_tab_activate (GtkMenuItem
*menuitem
,
415 g_printf("Close tab\n");
420 on_add_trace_activate (GtkMenuItem
*menuitem
,
423 add_trace((GtkWidget
*)menuitem
, user_data
);
428 on_remove_trace_activate (GtkMenuItem
*menuitem
,
431 remove_trace((GtkWidget
*)menuitem
, user_data
);
436 on_save_activate (GtkMenuItem
*menuitem
,
439 save((GtkWidget
*)menuitem
, user_data
);
444 on_save_as_activate (GtkMenuItem
*menuitem
,
447 save_as((GtkWidget
*)menuitem
, user_data
);
452 on_quit_activate (GtkMenuItem
*menuitem
,
455 on_MWindow_destroy(GTK_OBJECT(menuitem
), user_data
);
460 on_cut_activate (GtkMenuItem
*menuitem
,
468 on_copy_activate (GtkMenuItem
*menuitem
,
476 on_paste_activate (GtkMenuItem
*menuitem
,
484 on_delete_activate (GtkMenuItem
*menuitem
,
487 g_printf("Delete\n");
492 on_zoom_in_activate (GtkMenuItem
*menuitem
,
495 zoom_in((GtkWidget
*)menuitem
, user_data
);
500 on_zoom_out_activate (GtkMenuItem
*menuitem
,
503 zoom_out((GtkWidget
*)menuitem
, user_data
);
508 on_zoom_extended_activate (GtkMenuItem
*menuitem
,
511 zoom_extended((GtkWidget
*)menuitem
, user_data
);
516 on_go_to_time_activate (GtkMenuItem
*menuitem
,
519 go_to_time((GtkWidget
*)menuitem
, user_data
);
524 on_show_time_frame_activate (GtkMenuItem
*menuitem
,
527 show_time_frame((GtkWidget
*)menuitem
, user_data
);
532 on_move_viewer_up_activate (GtkMenuItem
*menuitem
,
535 move_up_viewer((GtkWidget
*)menuitem
, user_data
);
540 on_move_viewer_down_activate (GtkMenuItem
*menuitem
,
543 move_down_viewer((GtkWidget
*)menuitem
, user_data
);
548 on_remove_viewer_activate (GtkMenuItem
*menuitem
,
551 delete_viewer((GtkWidget
*)menuitem
, user_data
);
556 on_load_module_activate (GtkMenuItem
*menuitem
,
559 g_printf("Load module\n");
564 on_unload_module_activate (GtkMenuItem
*menuitem
,
567 g_printf("Unload module\n");
572 on_add_module_search_path_activate (GtkMenuItem
*menuitem
,
575 g_printf("Add module search path\n");
580 on_color_activate (GtkMenuItem
*menuitem
,
588 on_filter_activate (GtkMenuItem
*menuitem
,
591 g_printf("Filter\n");
596 on_save_configuration_activate (GtkMenuItem
*menuitem
,
599 g_printf("Save configuration\n");
604 on_content_activate (GtkMenuItem
*menuitem
,
607 g_printf("Content\n");
612 on_about_activate (GtkMenuItem
*menuitem
,
615 g_printf("About...\n");
620 on_button_new_clicked (GtkButton
*button
,
623 createNewWindow((GtkWidget
*)button
, user_data
, FALSE
);
628 on_button_open_clicked (GtkButton
*button
,
631 open_traceset((GtkWidget
*)button
, user_data
);
636 on_button_add_trace_clicked (GtkButton
*button
,
639 add_trace((GtkWidget
*)button
, user_data
);
644 on_button_remove_trace_clicked (GtkButton
*button
,
647 remove_trace((GtkWidget
*)button
, user_data
);
652 on_button_save_clicked (GtkButton
*button
,
655 save((GtkWidget
*)button
, user_data
);
660 on_button_save_as_clicked (GtkButton
*button
,
663 save_as((GtkWidget
*)button
, user_data
);
668 on_button_zoom_in_clicked (GtkButton
*button
,
671 zoom_in((GtkWidget
*)button
, user_data
);
676 on_button_zoom_out_clicked (GtkButton
*button
,
679 zoom_out((GtkWidget
*)button
, user_data
);
684 on_button_zoom_extended_clicked (GtkButton
*button
,
687 zoom_extended((GtkWidget
*)button
, user_data
);
692 on_button_go_to_time_clicked (GtkButton
*button
,
695 go_to_time((GtkWidget
*)button
, user_data
);
700 on_button_show_time_frame_clicked (GtkButton
*button
,
703 show_time_frame((GtkWidget
*)button
, user_data
);
708 on_button_move_up_clicked (GtkButton
*button
,
711 move_up_viewer((GtkWidget
*)button
, user_data
);
716 on_button_move_down_clicked (GtkButton
*button
,
719 move_down_viewer((GtkWidget
*)button
, user_data
);
724 on_button_delete_viewer_clicked (GtkButton
*button
,
727 delete_viewer((GtkWidget
*)button
, user_data
);
731 on_MWindow_destroy (GtkObject
*object
,
734 systemView
* sv
= gSysView
;
737 g_printf("There are : %d windows\n",++count
);
740 g_printf("There are : %d windows\n",++count
);
748 on_MNotebook_switch_page (GtkNotebook
*notebook
,
749 GtkNotebookPage
*page
,
753 mainWindow
* mw
= get_window_data_struct((GtkWidget
*)notebook
);
760 mw
->CurrentTab
= Tab
;