module guiEvents: read real data from traceset
[lttv.git] / ltt / branches / poly / lttv / modules / gui / mainWin / src / callbacks.c
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"
11 #include <lttv/mainWindow.h>
12 #include <lttv/menu.h>
13 #include <lttv/toolbar.h>
14
15 extern systemView * gSysView;
16
17 mainWindow * get_window_data_struct(GtkWidget * widget);
18
19 /* test part */
20 void insertView(GtkWidget* widget, view_constructor constructor);
21
22 void
23 on_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
33 void
34 insertViewTest(GtkMenuItem *menuitem, gpointer user_data)
35 {
36 guint val = 20;
37 insertView((GtkWidget*)menuitem, (view_constructor)user_data);
38 // selected_hook(&val);
39 }
40
41 void
42 on_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 */
80 void 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
92 void 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
99 void 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
136 mainWindow * 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
155 void 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
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;
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
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 }
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
262 void 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
269 void 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
276 void 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
283 void open_traceset(GtkWidget * widget, gpointer user_data)
284 {
285 g_printf("Open a trace set\n");
286 }
287
288 void add_trace(GtkWidget * widget, gpointer user_data)
289 {
290 g_printf("add a trace to a trace set\n");
291 }
292
293 void remove_trace(GtkWidget * widget, gpointer user_data)
294 {
295 g_printf("remove a trace from a trace set\n");
296 }
297
298 void save(GtkWidget * widget, gpointer user_data)
299 {
300 g_printf("Save\n");
301 }
302
303 void save_as(GtkWidget * widget, gpointer user_data)
304 {
305 g_printf("Save as\n");
306 }
307
308 void zoom_in(GtkWidget * widget, gpointer user_data)
309 {
310 g_printf("Zoom in\n");
311 }
312
313 void zoom_out(GtkWidget * widget, gpointer user_data)
314 {
315 g_printf("Zoom out\n");
316 }
317
318 void zoom_extended(GtkWidget * widget, gpointer user_data)
319 {
320 g_printf("Zoom extended\n");
321 }
322
323 void go_to_time(GtkWidget * widget, gpointer user_data)
324 {
325 g_printf("Go to time\n");
326 }
327
328 void show_time_frame(GtkWidget * widget, gpointer user_data)
329 {
330 g_printf("Show time frame\n");
331 }
332
333
334 /* callback function */
335
336 void
337 on_empty_traceset_activate (GtkMenuItem *menuitem,
338 gpointer user_data)
339 {
340 createNewWindow((GtkWidget*)menuitem, user_data, FALSE);
341 }
342
343
344 void
345 on_clone_traceset_activate (GtkMenuItem *menuitem,
346 gpointer user_data)
347 {
348 createNewWindow((GtkWidget*)menuitem, user_data, TRUE);
349 }
350
351
352 void
353 on_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
395 void
396 on_open_activate (GtkMenuItem *menuitem,
397 gpointer user_data)
398 {
399 open_traceset((GtkWidget*)menuitem, user_data);
400 }
401
402
403 void
404 on_close_activate (GtkMenuItem *menuitem,
405 gpointer user_data)
406 {
407 g_printf("Close\n");
408 }
409
410
411 void
412 on_close_tab_activate (GtkMenuItem *menuitem,
413 gpointer user_data)
414 {
415 g_printf("Close tab\n");
416 }
417
418
419 void
420 on_add_trace_activate (GtkMenuItem *menuitem,
421 gpointer user_data)
422 {
423 add_trace((GtkWidget*)menuitem, user_data);
424 }
425
426
427 void
428 on_remove_trace_activate (GtkMenuItem *menuitem,
429 gpointer user_data)
430 {
431 remove_trace((GtkWidget*)menuitem, user_data);
432 }
433
434
435 void
436 on_save_activate (GtkMenuItem *menuitem,
437 gpointer user_data)
438 {
439 save((GtkWidget*)menuitem, user_data);
440 }
441
442
443 void
444 on_save_as_activate (GtkMenuItem *menuitem,
445 gpointer user_data)
446 {
447 save_as((GtkWidget*)menuitem, user_data);
448 }
449
450
451 void
452 on_quit_activate (GtkMenuItem *menuitem,
453 gpointer user_data)
454 {
455 on_MWindow_destroy(GTK_OBJECT(menuitem), user_data);
456 }
457
458
459 void
460 on_cut_activate (GtkMenuItem *menuitem,
461 gpointer user_data)
462 {
463 g_printf("Cut\n");
464 }
465
466
467 void
468 on_copy_activate (GtkMenuItem *menuitem,
469 gpointer user_data)
470 {
471 g_printf("Copye\n");
472 }
473
474
475 void
476 on_paste_activate (GtkMenuItem *menuitem,
477 gpointer user_data)
478 {
479 g_printf("Paste\n");
480 }
481
482
483 void
484 on_delete_activate (GtkMenuItem *menuitem,
485 gpointer user_data)
486 {
487 g_printf("Delete\n");
488 }
489
490
491 void
492 on_zoom_in_activate (GtkMenuItem *menuitem,
493 gpointer user_data)
494 {
495 zoom_in((GtkWidget*)menuitem, user_data);
496 }
497
498
499 void
500 on_zoom_out_activate (GtkMenuItem *menuitem,
501 gpointer user_data)
502 {
503 zoom_out((GtkWidget*)menuitem, user_data);
504 }
505
506
507 void
508 on_zoom_extended_activate (GtkMenuItem *menuitem,
509 gpointer user_data)
510 {
511 zoom_extended((GtkWidget*)menuitem, user_data);
512 }
513
514
515 void
516 on_go_to_time_activate (GtkMenuItem *menuitem,
517 gpointer user_data)
518 {
519 go_to_time((GtkWidget*)menuitem, user_data);
520 }
521
522
523 void
524 on_show_time_frame_activate (GtkMenuItem *menuitem,
525 gpointer user_data)
526 {
527 show_time_frame((GtkWidget*)menuitem, user_data);
528 }
529
530
531 void
532 on_move_viewer_up_activate (GtkMenuItem *menuitem,
533 gpointer user_data)
534 {
535 move_up_viewer((GtkWidget*)menuitem, user_data);
536 }
537
538
539 void
540 on_move_viewer_down_activate (GtkMenuItem *menuitem,
541 gpointer user_data)
542 {
543 move_down_viewer((GtkWidget*)menuitem, user_data);
544 }
545
546
547 void
548 on_remove_viewer_activate (GtkMenuItem *menuitem,
549 gpointer user_data)
550 {
551 delete_viewer((GtkWidget*)menuitem, user_data);
552 }
553
554
555 void
556 on_load_module_activate (GtkMenuItem *menuitem,
557 gpointer user_data)
558 {
559 g_printf("Load module\n");
560 }
561
562
563 void
564 on_unload_module_activate (GtkMenuItem *menuitem,
565 gpointer user_data)
566 {
567 g_printf("Unload module\n");
568 }
569
570
571 void
572 on_add_module_search_path_activate (GtkMenuItem *menuitem,
573 gpointer user_data)
574 {
575 g_printf("Add module search path\n");
576 }
577
578
579 void
580 on_color_activate (GtkMenuItem *menuitem,
581 gpointer user_data)
582 {
583 g_printf("Color\n");
584 }
585
586
587 void
588 on_filter_activate (GtkMenuItem *menuitem,
589 gpointer user_data)
590 {
591 g_printf("Filter\n");
592 }
593
594
595 void
596 on_save_configuration_activate (GtkMenuItem *menuitem,
597 gpointer user_data)
598 {
599 g_printf("Save configuration\n");
600 }
601
602
603 void
604 on_content_activate (GtkMenuItem *menuitem,
605 gpointer user_data)
606 {
607 g_printf("Content\n");
608 }
609
610
611 void
612 on_about_activate (GtkMenuItem *menuitem,
613 gpointer user_data)
614 {
615 g_printf("About...\n");
616 }
617
618
619 void
620 on_button_new_clicked (GtkButton *button,
621 gpointer user_data)
622 {
623 createNewWindow((GtkWidget*)button, user_data, FALSE);
624 }
625
626
627 void
628 on_button_open_clicked (GtkButton *button,
629 gpointer user_data)
630 {
631 open_traceset((GtkWidget*)button, user_data);
632 }
633
634
635 void
636 on_button_add_trace_clicked (GtkButton *button,
637 gpointer user_data)
638 {
639 add_trace((GtkWidget*)button, user_data);
640 }
641
642
643 void
644 on_button_remove_trace_clicked (GtkButton *button,
645 gpointer user_data)
646 {
647 remove_trace((GtkWidget*)button, user_data);
648 }
649
650
651 void
652 on_button_save_clicked (GtkButton *button,
653 gpointer user_data)
654 {
655 save((GtkWidget*)button, user_data);
656 }
657
658
659 void
660 on_button_save_as_clicked (GtkButton *button,
661 gpointer user_data)
662 {
663 save_as((GtkWidget*)button, user_data);
664 }
665
666
667 void
668 on_button_zoom_in_clicked (GtkButton *button,
669 gpointer user_data)
670 {
671 zoom_in((GtkWidget*)button, user_data);
672 }
673
674
675 void
676 on_button_zoom_out_clicked (GtkButton *button,
677 gpointer user_data)
678 {
679 zoom_out((GtkWidget*)button, user_data);
680 }
681
682
683 void
684 on_button_zoom_extended_clicked (GtkButton *button,
685 gpointer user_data)
686 {
687 zoom_extended((GtkWidget*)button, user_data);
688 }
689
690
691 void
692 on_button_go_to_time_clicked (GtkButton *button,
693 gpointer user_data)
694 {
695 go_to_time((GtkWidget*)button, user_data);
696 }
697
698
699 void
700 on_button_show_time_frame_clicked (GtkButton *button,
701 gpointer user_data)
702 {
703 show_time_frame((GtkWidget*)button, user_data);
704 }
705
706
707 void
708 on_button_move_up_clicked (GtkButton *button,
709 gpointer user_data)
710 {
711 move_up_viewer((GtkWidget*)button, user_data);
712 }
713
714
715 void
716 on_button_move_down_clicked (GtkButton *button,
717 gpointer user_data)
718 {
719 move_down_viewer((GtkWidget*)button, user_data);
720 }
721
722
723 void
724 on_button_delete_viewer_clicked (GtkButton *button,
725 gpointer user_data)
726 {
727 delete_viewer((GtkWidget*)button, user_data);
728 }
729
730 void
731 on_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
747 void
748 on_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.053714 seconds and 5 git commands to generate.