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