module guiEvents: read real data from traceset
[lttv.git] / ltt / branches / poly / lttv / modules / gui / mainWin / src / callbacks.c
CommitLineData
561eba2a 1#ifdef HAVE_CONFIG_H
2# include <config.h>
3#endif
4
5#include <gtk/gtk.h>
6#include <gmodule.h>
7
8#include "callbacks.h"
9#include "interface.h"
10#include "support.h"
95cd67ef 11#include <lttv/mainWindow.h>
37d0eca6 12#include <lttv/menu.h>
13#include <lttv/toolbar.h>
561eba2a 14
15extern systemView * gSysView;
16
561eba2a 17mainWindow * get_window_data_struct(GtkWidget * widget);
18
19/* test part */
20void insertView(GtkWidget* widget, view_constructor constructor);
21
22void
23on_textview1_grab_focus (GtkTextView *text_view,
24 gpointer user_data)
25{
26 GtkWidget * widget;
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);
31}
32
33void
34insertViewTest(GtkMenuItem *menuitem, gpointer user_data)
35{
36 guint val = 20;
37d0eca6 37 insertView((GtkWidget*)menuitem, (view_constructor)user_data);
38 // selected_hook(&val);
561eba2a 39}
40
41void
42on_insert_viewer_test_activate (GtkMenuItem *menuitem,
43 gpointer user_data)
44{
45 GtkWidget *scrolledwindow1, *textview1, *label;
46 static int count = 0;
47 char str[64];
48 GtkCustom * custom;
49 GtkTextBuffer* buf;
50
51 mainWindow * mwData;
52 mwData = get_window_data_struct((GtkWidget*)menuitem);
53 if(!mwData->CurrentTab) return;
54 custom = mwData->CurrentTab->custom;
55
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);
61
62 gtk_custom_widget_add(custom, scrolledwindow1);
63 gtk_widget_set_size_request ((GtkWidget*)scrolledwindow1, 800, 100);
64
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);
71
72 g_signal_connect ((gpointer) textview1, "grab_focus",
73 G_CALLBACK (on_textview1_grab_focus), custom);
74}
75
76/* end of test part */
77
78
79/* internal functions */
80void insertView(GtkWidget* widget, view_constructor constructor)
81{
82 GtkCustom * custom;
83 mainWindow * mwData;
84
85 mwData = get_window_data_struct(widget);
86 if(!mwData->CurrentTab) return;
87 custom = mwData->CurrentTab->custom;
88
89 gtk_custom_widget_add(custom, (GtkWidget*)constructor(mwData));
90}
91
92void get_label_string (GtkWidget * text, gchar * label)
93{
94 GtkEntry * entry = (GtkEntry*)text;
95 if(strlen(gtk_entry_get_text(entry))!=0)
96 strcpy(label,gtk_entry_get_text(entry));
97}
98
99void get_label(GtkWindow * mw, gchar * str)
100{
101 GtkWidget * dialogue;
102 GtkWidget * text;
103 GtkWidget * label;
104 gint id;
105
106 strcpy(str,"Page"); //default label
107
108 dialogue = gtk_dialog_new_with_buttons("Get the name of the tab",mw,
109 GTK_DIALOG_MODAL,
110 GTK_STOCK_OK,GTK_RESPONSE_ACCEPT,
111 GTK_STOCK_CANCEL,GTK_RESPONSE_REJECT,
112 NULL);
113
114 label = gtk_label_new("Please input tab's name");
115 gtk_widget_show(label);
116
117 text = gtk_entry_new();
118 gtk_widget_show(text);
119
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);
122
123 id = gtk_dialog_run(GTK_DIALOG(dialogue));
124 switch(id){
125 case GTK_RESPONSE_ACCEPT:
126 get_label_string(text,str);
127 gtk_widget_destroy(dialogue);
128 break;
129 case GTK_RESPONSE_REJECT:
130 default:
131 gtk_widget_destroy(dialogue);
132 break;
133 }
134}
135
136mainWindow * get_window_data_struct(GtkWidget * widget)
137{
138 GtkWidget * mw;
139 mainWindow * mwData;
140
141 mw = lookup_widget(widget, "MWindow");
142 if(mw == NULL){
143 g_printf("Main window does not exist\n");
144 return;
145 }
146
147 mwData = (mainWindow *) g_object_get_data(G_OBJECT(mw),"mainWindow");
148 if(mwData == NULL){
149 g_printf("Main window data does not exist\n");
150 return;
151 }
152 return mwData;
153}
154
155void createNewWindow(GtkWidget* widget, gpointer user_data, gboolean clone)
156{
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 */
162
163 //test
37d0eca6 164 int i;
165 GtkWidget * ToolMenuTitle_menu, *insert_view, *pixmap;
166 LttvMenus * menu;
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;
173 GdkPixbuf *pixbuf;
561eba2a 174 //end
175
176 mw = lookup_widget (widget, "MWindow");
177 if(mw == NULL){
178 g_printf("Can not find main window\n");
179 return;
180 }
181
182 sv = (systemView *)g_object_get_data(G_OBJECT(mw),"systemView");
183 if(sv == NULL){
184 g_printf("Can not find system view\n");
185 return;
186 }
187
188 newMWindow = g_new(mainWindow, 1);
189 newWindow = create_MWindow();
190 gtk_widget_show (newWindow);
191
192
193 newSv = g_new(systemView, 1);
194 while(sv->Next) sv = sv->Next;
195 sv->Next = newSv;
196
197 newSv->EventDB = NULL;
198 newSv->SystemInfo = NULL;
199 newSv->Options = NULL;
200 newSv->Next = NULL;
201 newSv->Window = newMWindow;
202
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));
208
209 //test yxx
37d0eca6 210 g_assert(lttv_iattribute_find_by_path(attributes,
211 "viewers/menu", LTTV_POINTER, &value));
212 menu = (LttvMenus*)*(value.v_pointer);
213
214 if(menu){
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),
224 constructor);
225 }
226 }
227 g_assert(lttv_iattribute_find_by_path(attributes,
228 "viewers/toolbar", LTTV_POINTER, &value));
229 toolbar = (LttvToolbars*)*(value.v_pointer);
230
231 if(toolbar){
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,
240 NULL,
241 "",
242 toolbarItem->tooltip, NULL,
243 pixmap, NULL, 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);
248 }
249 }
561eba2a 250 //end
251
252 g_object_set_data(G_OBJECT(newWindow), "systemView", (gpointer)newSv);
253 g_object_set_data(G_OBJECT(newWindow), "mainWindow", (gpointer)newMWindow);
254
255 if(clone){
256 g_printf("Clone : use the same traceset\n");
257 }else{
258 g_printf("Empty : traceset is set to NULL\n");
259 }
260}
261
262void move_up_viewer(GtkWidget * widget, gpointer user_data)
263{
264 mainWindow * mw = get_window_data_struct(widget);
265 if(!mw->CurrentTab) return;
266 gtk_custom_widget_move_up(mw->CurrentTab->custom);
267}
268
269void move_down_viewer(GtkWidget * widget, gpointer user_data)
270{
271 mainWindow * mw = get_window_data_struct(widget);
272 if(!mw->CurrentTab) return;
273 gtk_custom_widget_move_down(mw->CurrentTab->custom);
274}
275
276void delete_viewer(GtkWidget * widget, gpointer user_data)
277{
278 mainWindow * mw = get_window_data_struct(widget);
279 if(!mw->CurrentTab) return;
280 gtk_custom_widget_delete(mw->CurrentTab->custom);
281}
282
283void open_traceset(GtkWidget * widget, gpointer user_data)
284{
285 g_printf("Open a trace set\n");
286}
287
288void add_trace(GtkWidget * widget, gpointer user_data)
289{
290 g_printf("add a trace to a trace set\n");
291}
292
293void remove_trace(GtkWidget * widget, gpointer user_data)
294{
295 g_printf("remove a trace from a trace set\n");
296}
297
298void save(GtkWidget * widget, gpointer user_data)
299{
300 g_printf("Save\n");
301}
302
303void save_as(GtkWidget * widget, gpointer user_data)
304{
305 g_printf("Save as\n");
306}
307
308void zoom_in(GtkWidget * widget, gpointer user_data)
309{
310 g_printf("Zoom in\n");
311}
312
313void zoom_out(GtkWidget * widget, gpointer user_data)
314{
315 g_printf("Zoom out\n");
316}
317
318void zoom_extended(GtkWidget * widget, gpointer user_data)
319{
320 g_printf("Zoom extended\n");
321}
322
323void go_to_time(GtkWidget * widget, gpointer user_data)
324{
325 g_printf("Go to time\n");
326}
327
328void show_time_frame(GtkWidget * widget, gpointer user_data)
329{
330 g_printf("Show time frame\n");
331}
332
333
334/* callback function */
335
336void
337on_empty_traceset_activate (GtkMenuItem *menuitem,
338 gpointer user_data)
339{
340 createNewWindow((GtkWidget*)menuitem, user_data, FALSE);
341}
342
343
344void
345on_clone_traceset_activate (GtkMenuItem *menuitem,
346 gpointer user_data)
347{
348 createNewWindow((GtkWidget*)menuitem, user_data, TRUE);
349}
350
351
352void
353on_tab_activate (GtkMenuItem *menuitem,
354 gpointer user_data)
355{
356 GList * list;
357 gchar label[64];
358
359 tab * tmpTab;
360 GtkWidget * pane;
361 mainWindow * mwData;
362 GtkNotebook * notebook = (GtkNotebook *)lookup_widget((GtkWidget*)menuitem, "MNotebook");
363 if(notebook == NULL){
364 g_printf("Notebook does not exist\n");
365 return;
366 }
367
368 mwData = get_window_data_struct((GtkWidget*)menuitem);
369
370 tmpTab = mwData->Tab;
371 while(tmpTab && tmpTab->Next) tmpTab = tmpTab->Next;
372 if(!tmpTab){
373 tmpTab = g_new(tab,1);
374 mwData->Tab = tmpTab;
375 }else{
376 tmpTab->Next = g_new(tab,1);
377 tmpTab = tmpTab->Next;
378 }
379 // mwData->CurrentTab = tmpTab;
380 tmpTab->custom = (GtkCustom*)gtk_custom_new();
381 gtk_widget_show((GtkWidget*)tmpTab->custom);
382 tmpTab->Next = NULL;
383
384 get_label((GtkWindow*)mwData->MWindow, label);
385 tmpTab->label = gtk_label_new (label);
386 gtk_widget_show (tmpTab->label);
387
388 gtk_notebook_append_page(notebook, (GtkWidget*)tmpTab->custom, tmpTab->label);
389
390 list = gtk_container_get_children(GTK_CONTAINER(notebook));
391 gtk_notebook_set_current_page(notebook,g_list_length(list)-1);
392}
393
394
395void
396on_open_activate (GtkMenuItem *menuitem,
397 gpointer user_data)
398{
399 open_traceset((GtkWidget*)menuitem, user_data);
400}
401
402
403void
404on_close_activate (GtkMenuItem *menuitem,
405 gpointer user_data)
406{
407 g_printf("Close\n");
408}
409
410
411void
412on_close_tab_activate (GtkMenuItem *menuitem,
413 gpointer user_data)
414{
415 g_printf("Close tab\n");
416}
417
418
419void
420on_add_trace_activate (GtkMenuItem *menuitem,
421 gpointer user_data)
422{
423 add_trace((GtkWidget*)menuitem, user_data);
424}
425
426
427void
428on_remove_trace_activate (GtkMenuItem *menuitem,
429 gpointer user_data)
430{
431 remove_trace((GtkWidget*)menuitem, user_data);
432}
433
434
435void
436on_save_activate (GtkMenuItem *menuitem,
437 gpointer user_data)
438{
439 save((GtkWidget*)menuitem, user_data);
440}
441
442
443void
444on_save_as_activate (GtkMenuItem *menuitem,
445 gpointer user_data)
446{
447 save_as((GtkWidget*)menuitem, user_data);
448}
449
450
451void
452on_quit_activate (GtkMenuItem *menuitem,
453 gpointer user_data)
454{
455 on_MWindow_destroy(GTK_OBJECT(menuitem), user_data);
456}
457
458
459void
460on_cut_activate (GtkMenuItem *menuitem,
461 gpointer user_data)
462{
463 g_printf("Cut\n");
464}
465
466
467void
468on_copy_activate (GtkMenuItem *menuitem,
469 gpointer user_data)
470{
471 g_printf("Copye\n");
472}
473
474
475void
476on_paste_activate (GtkMenuItem *menuitem,
477 gpointer user_data)
478{
479 g_printf("Paste\n");
480}
481
482
483void
484on_delete_activate (GtkMenuItem *menuitem,
485 gpointer user_data)
486{
487 g_printf("Delete\n");
488}
489
490
491void
492on_zoom_in_activate (GtkMenuItem *menuitem,
493 gpointer user_data)
494{
495 zoom_in((GtkWidget*)menuitem, user_data);
496}
497
498
499void
500on_zoom_out_activate (GtkMenuItem *menuitem,
501 gpointer user_data)
502{
503 zoom_out((GtkWidget*)menuitem, user_data);
504}
505
506
507void
508on_zoom_extended_activate (GtkMenuItem *menuitem,
509 gpointer user_data)
510{
511 zoom_extended((GtkWidget*)menuitem, user_data);
512}
513
514
515void
516on_go_to_time_activate (GtkMenuItem *menuitem,
517 gpointer user_data)
518{
519 go_to_time((GtkWidget*)menuitem, user_data);
520}
521
522
523void
524on_show_time_frame_activate (GtkMenuItem *menuitem,
525 gpointer user_data)
526{
527 show_time_frame((GtkWidget*)menuitem, user_data);
528}
529
530
531void
532on_move_viewer_up_activate (GtkMenuItem *menuitem,
533 gpointer user_data)
534{
535 move_up_viewer((GtkWidget*)menuitem, user_data);
536}
537
538
539void
540on_move_viewer_down_activate (GtkMenuItem *menuitem,
541 gpointer user_data)
542{
543 move_down_viewer((GtkWidget*)menuitem, user_data);
544}
545
546
547void
548on_remove_viewer_activate (GtkMenuItem *menuitem,
549 gpointer user_data)
550{
551 delete_viewer((GtkWidget*)menuitem, user_data);
552}
553
554
555void
556on_load_module_activate (GtkMenuItem *menuitem,
557 gpointer user_data)
558{
559 g_printf("Load module\n");
560}
561
562
563void
564on_unload_module_activate (GtkMenuItem *menuitem,
565 gpointer user_data)
566{
567 g_printf("Unload module\n");
568}
569
570
571void
572on_add_module_search_path_activate (GtkMenuItem *menuitem,
573 gpointer user_data)
574{
575 g_printf("Add module search path\n");
576}
577
578
579void
580on_color_activate (GtkMenuItem *menuitem,
581 gpointer user_data)
582{
583 g_printf("Color\n");
584}
585
586
587void
588on_filter_activate (GtkMenuItem *menuitem,
589 gpointer user_data)
590{
591 g_printf("Filter\n");
592}
593
594
595void
596on_save_configuration_activate (GtkMenuItem *menuitem,
597 gpointer user_data)
598{
599 g_printf("Save configuration\n");
600}
601
602
603void
604on_content_activate (GtkMenuItem *menuitem,
605 gpointer user_data)
606{
607 g_printf("Content\n");
608}
609
610
611void
612on_about_activate (GtkMenuItem *menuitem,
613 gpointer user_data)
614{
615 g_printf("About...\n");
616}
617
618
619void
620on_button_new_clicked (GtkButton *button,
621 gpointer user_data)
622{
623 createNewWindow((GtkWidget*)button, user_data, FALSE);
624}
625
626
627void
628on_button_open_clicked (GtkButton *button,
629 gpointer user_data)
630{
631 open_traceset((GtkWidget*)button, user_data);
632}
633
634
635void
636on_button_add_trace_clicked (GtkButton *button,
637 gpointer user_data)
638{
639 add_trace((GtkWidget*)button, user_data);
640}
641
642
643void
644on_button_remove_trace_clicked (GtkButton *button,
645 gpointer user_data)
646{
647 remove_trace((GtkWidget*)button, user_data);
648}
649
650
651void
652on_button_save_clicked (GtkButton *button,
653 gpointer user_data)
654{
655 save((GtkWidget*)button, user_data);
656}
657
658
659void
660on_button_save_as_clicked (GtkButton *button,
661 gpointer user_data)
662{
663 save_as((GtkWidget*)button, user_data);
664}
665
666
667void
668on_button_zoom_in_clicked (GtkButton *button,
669 gpointer user_data)
670{
671 zoom_in((GtkWidget*)button, user_data);
672}
673
674
675void
676on_button_zoom_out_clicked (GtkButton *button,
677 gpointer user_data)
678{
679 zoom_out((GtkWidget*)button, user_data);
680}
681
682
683void
684on_button_zoom_extended_clicked (GtkButton *button,
685 gpointer user_data)
686{
687 zoom_extended((GtkWidget*)button, user_data);
688}
689
690
691void
692on_button_go_to_time_clicked (GtkButton *button,
693 gpointer user_data)
694{
695 go_to_time((GtkWidget*)button, user_data);
696}
697
698
699void
700on_button_show_time_frame_clicked (GtkButton *button,
701 gpointer user_data)
702{
703 show_time_frame((GtkWidget*)button, user_data);
704}
705
706
707void
708on_button_move_up_clicked (GtkButton *button,
709 gpointer user_data)
710{
711 move_up_viewer((GtkWidget*)button, user_data);
712}
713
714
715void
716on_button_move_down_clicked (GtkButton *button,
717 gpointer user_data)
718{
719 move_down_viewer((GtkWidget*)button, user_data);
720}
721
722
723void
724on_button_delete_viewer_clicked (GtkButton *button,
725 gpointer user_data)
726{
727 delete_viewer((GtkWidget*)button, user_data);
728}
729
730void
731on_MWindow_destroy (GtkObject *object,
732 gpointer user_data)
733{
734 systemView * sv = gSysView;
735 gint count = 0;
736 while(sv->Next){
737 g_printf("There are : %d windows\n",++count);
738 sv = sv->Next;
739 }
740 g_printf("There are : %d windows\n",++count);
741
742 gtk_main_quit ();
743
744}
745
746
747void
748on_MNotebook_switch_page (GtkNotebook *notebook,
749 GtkNotebookPage *page,
750 guint page_num,
751 gpointer user_data)
752{
753 mainWindow * mw = get_window_data_struct((GtkWidget*)notebook);
754 tab * Tab = mw->Tab;
755
756 while(page_num){
757 Tab = Tab->Next;
758 page_num--;
759 }
760 mw->CurrentTab = Tab;
761}
762
This page took 0.05048 seconds and 4 git commands to generate.