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