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" |
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"); |
bd4bd78f |
205 | insert_view = gtk_menu_item_new_with_mnemonic ("insert_view"); |
561eba2a |
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 | |