quit menu complete
[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>
6b1d3120 15#include <lttv/module.h>
fc188b78 16#include <lttv/gtkdirsel.h>
6b1d3120 17
18#define PATH_LENGTH 256
561eba2a 19
ec25ff5e 20extern LttvTracesetContext * gTracesetContext;
21
22/** Array containing instanced objects. */
23extern GSList * Main_Window_List;
561eba2a 24
7a859036 25static int gWinCount = 0;
26
561eba2a 27mainWindow * get_window_data_struct(GtkWidget * widget);
36b3c068 28char * get_unload_module(char ** loaded_module_name, int nb_module);
5723fa24 29void * create_tab(GtkWidget* parent, GtkNotebook * notebook, char * label);
561eba2a 30
31/* test part */
32void insertView(GtkWidget* widget, view_constructor constructor);
33
36b3c068 34enum
35{
36 MODULE_COLUMN,
37 N_COLUMNS
38};
39
561eba2a 40void
41on_textview1_grab_focus (GtkTextView *text_view,
42 gpointer user_data)
43{
44 GtkWidget * widget;
45 GtkCustom * custom = (GtkCustom*)user_data;
46 widget = gtk_widget_get_parent((GtkWidget*)text_view);
47 widget = gtk_widget_get_parent(widget);
48 gtk_custom_set_focus((GtkWidget*)custom, (gpointer)widget);
49}
50
51void
52insertViewTest(GtkMenuItem *menuitem, gpointer user_data)
53{
54 guint val = 20;
37d0eca6 55 insertView((GtkWidget*)menuitem, (view_constructor)user_data);
56 // selected_hook(&val);
561eba2a 57}
58
59void
60on_insert_viewer_test_activate (GtkMenuItem *menuitem,
61 gpointer user_data)
62{
63 GtkWidget *scrolledwindow1, *textview1, *label;
64 static int count = 0;
65 char str[64];
66 GtkCustom * custom;
67 GtkTextBuffer* buf;
68
69 mainWindow * mwData;
70 mwData = get_window_data_struct((GtkWidget*)menuitem);
71 if(!mwData->CurrentTab) return;
72 custom = mwData->CurrentTab->custom;
73
74 sprintf(str,"label : %d",++count);
75 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
76 gtk_widget_show (scrolledwindow1);
77 label = gtk_label_new(str);
78 gtk_widget_show(label);
79
80 gtk_custom_widget_add(custom, scrolledwindow1);
81 gtk_widget_set_size_request ((GtkWidget*)scrolledwindow1, 800, 100);
82
83 textview1 = gtk_text_view_new ();
84 gtk_widget_show (textview1);
85 gtk_container_add (GTK_CONTAINER (scrolledwindow1), textview1);
86 buf = gtk_text_view_get_buffer((GtkTextView*)textview1);
87 sprintf(str,"text view : %d",count);
88 gtk_text_buffer_set_text(buf,str, -1);
89
90 g_signal_connect ((gpointer) textview1, "grab_focus",
91 G_CALLBACK (on_textview1_grab_focus), custom);
92}
93
94/* end of test part */
95
96
97/* internal functions */
98void insertView(GtkWidget* widget, view_constructor constructor)
99{
100 GtkCustom * custom;
101 mainWindow * mwData;
f9334f6f 102 GtkWidget * viewer;
561eba2a 103
104 mwData = get_window_data_struct(widget);
105 if(!mwData->CurrentTab) return;
106 custom = mwData->CurrentTab->custom;
107
f9334f6f 108 viewer = (GtkWidget*)constructor(mwData);
109 if(viewer)
f0d936c0 110 {
111 gtk_custom_widget_add(custom, viewer);
112 // Added by MD
8af8e4c5 113 // g_object_unref(G_OBJECT(viewer));
f0d936c0 114 }
561eba2a 115}
116
117void get_label_string (GtkWidget * text, gchar * label)
118{
119 GtkEntry * entry = (GtkEntry*)text;
120 if(strlen(gtk_entry_get_text(entry))!=0)
121 strcpy(label,gtk_entry_get_text(entry));
122}
123
6b1d3120 124void get_label(GtkWindow * mw, gchar * str, gchar* dialogue_title, gchar * label_str)
561eba2a 125{
126 GtkWidget * dialogue;
127 GtkWidget * text;
128 GtkWidget * label;
129 gint id;
130
5723fa24 131 dialogue = gtk_dialog_new_with_buttons(dialogue_title,NULL,
561eba2a 132 GTK_DIALOG_MODAL,
133 GTK_STOCK_OK,GTK_RESPONSE_ACCEPT,
134 GTK_STOCK_CANCEL,GTK_RESPONSE_REJECT,
135 NULL);
136
6b1d3120 137 label = gtk_label_new(label_str);
561eba2a 138 gtk_widget_show(label);
139
140 text = gtk_entry_new();
141 gtk_widget_show(text);
142
143 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue)->vbox), label,TRUE, TRUE,0);
144 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue)->vbox), text,FALSE, FALSE,0);
145
146 id = gtk_dialog_run(GTK_DIALOG(dialogue));
147 switch(id){
148 case GTK_RESPONSE_ACCEPT:
149 get_label_string(text,str);
150 gtk_widget_destroy(dialogue);
151 break;
152 case GTK_RESPONSE_REJECT:
153 default:
154 gtk_widget_destroy(dialogue);
155 break;
156 }
157}
158
159mainWindow * get_window_data_struct(GtkWidget * widget)
160{
161 GtkWidget * mw;
162 mainWindow * mwData;
163
164 mw = lookup_widget(widget, "MWindow");
165 if(mw == NULL){
166 g_printf("Main window does not exist\n");
167 return;
168 }
169
170 mwData = (mainWindow *) g_object_get_data(G_OBJECT(mw),"mainWindow");
171 if(mwData == NULL){
172 g_printf("Main window data does not exist\n");
173 return;
174 }
175 return mwData;
176}
177
178void createNewWindow(GtkWidget* widget, gpointer user_data, gboolean clone)
179{
5723fa24 180 mainWindow * parent = get_window_data_struct(widget);
561eba2a 181
5723fa24 182 constructMainWin(parent, NULL);
561eba2a 183
184 if(clone){
185 g_printf("Clone : use the same traceset\n");
186 }else{
187 g_printf("Empty : traceset is set to NULL\n");
188 }
189}
190
191void move_up_viewer(GtkWidget * widget, gpointer user_data)
192{
193 mainWindow * mw = get_window_data_struct(widget);
194 if(!mw->CurrentTab) return;
195 gtk_custom_widget_move_up(mw->CurrentTab->custom);
196}
197
198void move_down_viewer(GtkWidget * widget, gpointer user_data)
199{
200 mainWindow * mw = get_window_data_struct(widget);
201 if(!mw->CurrentTab) return;
202 gtk_custom_widget_move_down(mw->CurrentTab->custom);
203}
204
205void delete_viewer(GtkWidget * widget, gpointer user_data)
206{
207 mainWindow * mw = get_window_data_struct(widget);
208 if(!mw->CurrentTab) return;
209 gtk_custom_widget_delete(mw->CurrentTab->custom);
210}
211
212void open_traceset(GtkWidget * widget, gpointer user_data)
213{
214 g_printf("Open a trace set\n");
215}
216
217void add_trace(GtkWidget * widget, gpointer user_data)
218{
219 g_printf("add a trace to a trace set\n");
220}
221
222void remove_trace(GtkWidget * widget, gpointer user_data)
223{
224 g_printf("remove a trace from a trace set\n");
225}
226
227void save(GtkWidget * widget, gpointer user_data)
228{
229 g_printf("Save\n");
230}
231
232void save_as(GtkWidget * widget, gpointer user_data)
233{
234 g_printf("Save as\n");
235}
236
237void zoom_in(GtkWidget * widget, gpointer user_data)
238{
239 g_printf("Zoom in\n");
240}
241
242void zoom_out(GtkWidget * widget, gpointer user_data)
243{
244 g_printf("Zoom out\n");
245}
246
247void zoom_extended(GtkWidget * widget, gpointer user_data)
248{
249 g_printf("Zoom extended\n");
250}
251
252void go_to_time(GtkWidget * widget, gpointer user_data)
253{
254 g_printf("Go to time\n");
255}
256
257void show_time_frame(GtkWidget * widget, gpointer user_data)
258{
259 g_printf("Show time frame\n");
260}
261
262
263/* callback function */
264
265void
266on_empty_traceset_activate (GtkMenuItem *menuitem,
267 gpointer user_data)
268{
269 createNewWindow((GtkWidget*)menuitem, user_data, FALSE);
270}
271
272
273void
274on_clone_traceset_activate (GtkMenuItem *menuitem,
275 gpointer user_data)
276{
277 createNewWindow((GtkWidget*)menuitem, user_data, TRUE);
278}
279
280
281void
282on_tab_activate (GtkMenuItem *menuitem,
283 gpointer user_data)
284{
6b1d3120 285 gchar label[PATH_LENGTH];
561eba2a 286 GtkNotebook * notebook = (GtkNotebook *)lookup_widget((GtkWidget*)menuitem, "MNotebook");
287 if(notebook == NULL){
288 g_printf("Notebook does not exist\n");
289 return;
290 }
291
6b1d3120 292 strcpy(label,"Page");
5723fa24 293 get_label(NULL, label,"Get the name of the tab","Please input tab's name");
561eba2a 294
5723fa24 295 create_tab ((GtkWidget*)menuitem, notebook, label);
561eba2a 296}
297
298
299void
300on_open_activate (GtkMenuItem *menuitem,
301 gpointer user_data)
302{
303 open_traceset((GtkWidget*)menuitem, user_data);
304}
305
306
307void
308on_close_activate (GtkMenuItem *menuitem,
309 gpointer user_data)
310{
311 g_printf("Close\n");
312}
313
314
315void
316on_close_tab_activate (GtkMenuItem *menuitem,
317 gpointer user_data)
318{
319 g_printf("Close tab\n");
320}
321
322
323void
324on_add_trace_activate (GtkMenuItem *menuitem,
325 gpointer user_data)
326{
327 add_trace((GtkWidget*)menuitem, user_data);
328}
329
330
331void
332on_remove_trace_activate (GtkMenuItem *menuitem,
333 gpointer user_data)
334{
335 remove_trace((GtkWidget*)menuitem, user_data);
336}
337
338
339void
340on_save_activate (GtkMenuItem *menuitem,
341 gpointer user_data)
342{
343 save((GtkWidget*)menuitem, user_data);
344}
345
346
347void
348on_save_as_activate (GtkMenuItem *menuitem,
349 gpointer user_data)
350{
351 save_as((GtkWidget*)menuitem, user_data);
352}
353
354
355void
356on_quit_activate (GtkMenuItem *menuitem,
357 gpointer user_data)
358{
7a859036 359 mainWindow * mwData = get_window_data_struct((GtkWidget*)menuitem);
360 mainWindow_Destructor(mwData);
561eba2a 361}
362
363
364void
365on_cut_activate (GtkMenuItem *menuitem,
366 gpointer user_data)
367{
368 g_printf("Cut\n");
369}
370
371
372void
373on_copy_activate (GtkMenuItem *menuitem,
374 gpointer user_data)
375{
376 g_printf("Copye\n");
377}
378
379
380void
381on_paste_activate (GtkMenuItem *menuitem,
382 gpointer user_data)
383{
384 g_printf("Paste\n");
385}
386
387
388void
389on_delete_activate (GtkMenuItem *menuitem,
390 gpointer user_data)
391{
392 g_printf("Delete\n");
393}
394
395
396void
397on_zoom_in_activate (GtkMenuItem *menuitem,
398 gpointer user_data)
399{
400 zoom_in((GtkWidget*)menuitem, user_data);
401}
402
403
404void
405on_zoom_out_activate (GtkMenuItem *menuitem,
406 gpointer user_data)
407{
408 zoom_out((GtkWidget*)menuitem, user_data);
409}
410
411
412void
413on_zoom_extended_activate (GtkMenuItem *menuitem,
414 gpointer user_data)
415{
416 zoom_extended((GtkWidget*)menuitem, user_data);
417}
418
419
420void
421on_go_to_time_activate (GtkMenuItem *menuitem,
422 gpointer user_data)
423{
424 go_to_time((GtkWidget*)menuitem, user_data);
425}
426
427
428void
429on_show_time_frame_activate (GtkMenuItem *menuitem,
430 gpointer user_data)
431{
432 show_time_frame((GtkWidget*)menuitem, user_data);
433}
434
435
436void
437on_move_viewer_up_activate (GtkMenuItem *menuitem,
438 gpointer user_data)
439{
440 move_up_viewer((GtkWidget*)menuitem, user_data);
441}
442
443
444void
445on_move_viewer_down_activate (GtkMenuItem *menuitem,
446 gpointer user_data)
447{
448 move_down_viewer((GtkWidget*)menuitem, user_data);
449}
450
451
452void
453on_remove_viewer_activate (GtkMenuItem *menuitem,
454 gpointer user_data)
455{
456 delete_viewer((GtkWidget*)menuitem, user_data);
457}
458
459
460void
461on_load_module_activate (GtkMenuItem *menuitem,
462 gpointer user_data)
463{
36b3c068 464 char ** dir;
465 gint id;
466 char str[PATH_LENGTH];
467 mainWindow * mwData = get_window_data_struct((GtkWidget*)menuitem);
468 GtkFileSelection * fileSelector = (GtkFileSelection *)gtk_file_selection_new("Select a module");
469 gtk_file_selection_hide_fileop_buttons(fileSelector);
470
471 str[0] = '\0';
472 id = gtk_dialog_run(GTK_DIALOG(fileSelector));
473 switch(id){
474 case GTK_RESPONSE_ACCEPT:
475 case GTK_RESPONSE_OK:
476 dir = gtk_file_selection_get_selections (fileSelector);
477 sprintf(str,dir[0]);
478 if(mwData->winCreationData)
479 lttv_module_load(str, mwData->winCreationData->argc,mwData->winCreationData->argv);
480 else
481 lttv_module_load(str, 0,NULL);
482 g_strfreev(dir);
483 case GTK_RESPONSE_REJECT:
484 case GTK_RESPONSE_CANCEL:
485 default:
486 gtk_widget_destroy((GtkWidget*)fileSelector);
487 break;
488 }
489 g_printf("Load module: %s\n", str);
561eba2a 490}
491
492
493void
494on_unload_module_activate (GtkMenuItem *menuitem,
495 gpointer user_data)
496{
36b3c068 497 int i;
498 char **name, *unload_module_name;
499 guint nb;
500 LttvModule ** modules, *module;
501 mainWindow * mwData = get_window_data_struct((GtkWidget*)menuitem);
502
503 modules = lttv_module_list(&nb);
504 name = g_new(char*, nb);
505 for(i=0;i<nb;i++){
506 module = modules[i];
507 name[i] = lttv_module_name(module);
508 }
509
510 unload_module_name =get_unload_module(name,nb);
511
512 if(unload_module_name){
513 for(i=0;i<nb;i++){
514 if(strcmp(unload_module_name, name[i]) == 0){
515 lttv_module_unload(modules[i]);
516 break;
517 }
518 }
519 }
520
521 g_free(name);
561eba2a 522}
523
524
525void
526on_add_module_search_path_activate (GtkMenuItem *menuitem,
527 gpointer user_data)
528{
fc188b78 529 GtkDirSelection * fileSelector = (GtkDirSelection *)gtk_dir_selection_new("Select module path");
530 char * dir;
531 gint id;
532
6b1d3120 533 mainWindow * mwData = get_window_data_struct((GtkWidget*)menuitem);
fc188b78 534
535 id = gtk_dialog_run(GTK_DIALOG(fileSelector));
536 switch(id){
537 case GTK_RESPONSE_ACCEPT:
538 case GTK_RESPONSE_OK:
539 dir = gtk_dir_selection_get_dir (fileSelector);
540 lttv_module_path_add(dir);
541 case GTK_RESPONSE_REJECT:
542 case GTK_RESPONSE_CANCEL:
543 default:
544 gtk_widget_destroy((GtkWidget*)fileSelector);
545 break;
6b1d3120 546 }
561eba2a 547}
548
549
550void
551on_color_activate (GtkMenuItem *menuitem,
552 gpointer user_data)
553{
554 g_printf("Color\n");
555}
556
557
558void
559on_filter_activate (GtkMenuItem *menuitem,
560 gpointer user_data)
561{
562 g_printf("Filter\n");
563}
564
565
566void
567on_save_configuration_activate (GtkMenuItem *menuitem,
568 gpointer user_data)
569{
570 g_printf("Save configuration\n");
571}
572
573
574void
575on_content_activate (GtkMenuItem *menuitem,
576 gpointer user_data)
577{
578 g_printf("Content\n");
579}
580
581
582void
583on_about_activate (GtkMenuItem *menuitem,
584 gpointer user_data)
585{
586 g_printf("About...\n");
587}
588
589
590void
591on_button_new_clicked (GtkButton *button,
592 gpointer user_data)
593{
594 createNewWindow((GtkWidget*)button, user_data, FALSE);
595}
596
597
598void
599on_button_open_clicked (GtkButton *button,
600 gpointer user_data)
601{
602 open_traceset((GtkWidget*)button, user_data);
603}
604
605
606void
607on_button_add_trace_clicked (GtkButton *button,
608 gpointer user_data)
609{
610 add_trace((GtkWidget*)button, user_data);
611}
612
613
614void
615on_button_remove_trace_clicked (GtkButton *button,
616 gpointer user_data)
617{
618 remove_trace((GtkWidget*)button, user_data);
619}
620
621
622void
623on_button_save_clicked (GtkButton *button,
624 gpointer user_data)
625{
626 save((GtkWidget*)button, user_data);
627}
628
629
630void
631on_button_save_as_clicked (GtkButton *button,
632 gpointer user_data)
633{
634 save_as((GtkWidget*)button, user_data);
635}
636
637
638void
639on_button_zoom_in_clicked (GtkButton *button,
640 gpointer user_data)
641{
642 zoom_in((GtkWidget*)button, user_data);
643}
644
645
646void
647on_button_zoom_out_clicked (GtkButton *button,
648 gpointer user_data)
649{
650 zoom_out((GtkWidget*)button, user_data);
651}
652
653
654void
655on_button_zoom_extended_clicked (GtkButton *button,
656 gpointer user_data)
657{
658 zoom_extended((GtkWidget*)button, user_data);
659}
660
661
662void
663on_button_go_to_time_clicked (GtkButton *button,
664 gpointer user_data)
665{
666 go_to_time((GtkWidget*)button, user_data);
667}
668
669
670void
671on_button_show_time_frame_clicked (GtkButton *button,
672 gpointer user_data)
673{
674 show_time_frame((GtkWidget*)button, user_data);
675}
676
677
678void
679on_button_move_up_clicked (GtkButton *button,
680 gpointer user_data)
681{
682 move_up_viewer((GtkWidget*)button, user_data);
683}
684
685
686void
687on_button_move_down_clicked (GtkButton *button,
688 gpointer user_data)
689{
690 move_down_viewer((GtkWidget*)button, user_data);
691}
692
693
694void
695on_button_delete_viewer_clicked (GtkButton *button,
696 gpointer user_data)
697{
698 delete_viewer((GtkWidget*)button, user_data);
699}
700
701void
702on_MWindow_destroy (GtkObject *object,
703 gpointer user_data)
704{
5723fa24 705 g_printf("There are : %d windows\n",g_slist_length(Main_Window_List));
561eba2a 706
7a859036 707 gWinCount--;
708 if(gWinCount == 0)
709 gtk_main_quit ();
561eba2a 710}
711
712
713void
714on_MNotebook_switch_page (GtkNotebook *notebook,
715 GtkNotebookPage *page,
716 guint page_num,
717 gpointer user_data)
718{
719 mainWindow * mw = get_window_data_struct((GtkWidget*)notebook);
720 tab * Tab = mw->Tab;
721
722 while(page_num){
723 Tab = Tab->Next;
724 page_num--;
725 }
726 mw->CurrentTab = Tab;
727}
728
36b3c068 729char * get_unload_module(char ** loaded_module_name, int nb_module)
730{
731 GtkWidget * dialogue;
732 GtkWidget * scroll_win;
733 GtkWidget * tree;
734 GtkListStore * store;
735 GtkTreeViewColumn * column;
736 GtkCellRenderer * renderer;
737 GtkTreeSelection * select;
738 GtkTreeIter iter;
739 gint id, i;
740 char * unload_module_name = NULL;
741
742 dialogue = gtk_dialog_new_with_buttons("Select an unload module",
743 NULL,
744 GTK_DIALOG_MODAL,
745 GTK_STOCK_OK,GTK_RESPONSE_ACCEPT,
746 GTK_STOCK_CANCEL,GTK_RESPONSE_REJECT,
747 NULL);
748 gtk_window_set_default_size((GtkWindow*)dialogue, 500, 200);
749
750 scroll_win = gtk_scrolled_window_new (NULL, NULL);
751 gtk_widget_show ( scroll_win);
752 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_win),
753 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
754
755 store = gtk_list_store_new (N_COLUMNS,G_TYPE_STRING);
756 tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL (store));
757 gtk_widget_show ( tree);
758 g_object_unref (G_OBJECT (store));
759
760 renderer = gtk_cell_renderer_text_new ();
761 column = gtk_tree_view_column_new_with_attributes ("MODULE NAME",
762 renderer,
763 "text", MODULE_COLUMN,
764 NULL);
765 gtk_tree_view_column_set_alignment (column, 0.5);
766 gtk_tree_view_column_set_fixed_width (column, 150);
767 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
768
769 select = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree));
770 gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
771
772 gtk_container_add (GTK_CONTAINER (scroll_win), tree);
773
774 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue)->vbox), scroll_win,TRUE, TRUE,0);
775
776 for(i=0;i<nb_module;i++){
777 gtk_list_store_append (store, &iter);
778 gtk_list_store_set (store, &iter, MODULE_COLUMN,loaded_module_name[i],-1);
779 }
780
781 id = gtk_dialog_run(GTK_DIALOG(dialogue));
782 switch(id){
783 case GTK_RESPONSE_ACCEPT:
784 case GTK_RESPONSE_OK:
785 if (gtk_tree_selection_get_selected (select, (GtkTreeModel**)&store, &iter)){
786 gtk_tree_model_get ((GtkTreeModel*)store, &iter, MODULE_COLUMN, &unload_module_name, -1);
787 }
788 case GTK_RESPONSE_REJECT:
789 case GTK_RESPONSE_CANCEL:
790 default:
791 gtk_widget_destroy(dialogue);
792 break;
793 }
794
795 return unload_module_name;
796}
5723fa24 797
798void insertMenuToolbarItem(mainWindow * mw)
799{
800 int i;
801 GdkPixbuf *pixbuf;
802 view_constructor constructor;
803 LttvMenus * menu;
804 LttvToolbars * toolbar;
805 lttv_menu_closure *menuItem;
806 lttv_toolbar_closure *toolbarItem;
807 LttvAttributeValue value;
808 LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
809 GtkWidget * ToolMenuTitle_menu, *insert_view, *pixmap;
810
811 g_assert(lttv_iattribute_find_by_path(attributes,
812 "viewers/menu", LTTV_POINTER, &value));
813 menu = (LttvMenus*)*(value.v_pointer);
814
815 if(menu){
816 for(i=0;i<menu->len;i++){
817 menuItem = &g_array_index(menu, lttv_menu_closure, i);
818 constructor = menuItem->con;
819 ToolMenuTitle_menu = lookup_widget(mw->MWindow,"ToolMenuTitle_menu");
820 insert_view = gtk_menu_item_new_with_mnemonic (menuItem->menuText);
821 gtk_widget_show (insert_view);
822 gtk_container_add (GTK_CONTAINER (ToolMenuTitle_menu), insert_view);
823 g_signal_connect ((gpointer) insert_view, "activate",
824 G_CALLBACK (insertViewTest),
825 constructor);
826 }
827 }
828
829 g_assert(lttv_iattribute_find_by_path(attributes,
830 "viewers/toolbar", LTTV_POINTER, &value));
831 toolbar = (LttvToolbars*)*(value.v_pointer);
832
833 if(toolbar){
834 for(i=0;i<toolbar->len;i++){
835 toolbarItem = &g_array_index(toolbar, lttv_toolbar_closure, i);
836 constructor = toolbarItem->con;
837 ToolMenuTitle_menu = lookup_widget(mw->MWindow,"MToolbar2");
838 pixbuf = gdk_pixbuf_new_from_xpm_data ((const char**)toolbarItem->pixmap);
839 pixmap = gtk_image_new_from_pixbuf(pixbuf);
840 insert_view = gtk_toolbar_append_element (GTK_TOOLBAR (ToolMenuTitle_menu),
841 GTK_TOOLBAR_CHILD_BUTTON,
842 NULL,
843 "",
844 toolbarItem->tooltip, NULL,
845 pixmap, NULL, NULL);
846 gtk_label_set_use_underline (GTK_LABEL (((GtkToolbarChild*) (g_list_last (GTK_TOOLBAR (ToolMenuTitle_menu)->children)->data))->label), TRUE);
847 gtk_widget_show (insert_view);
848 gtk_container_set_border_width (GTK_CONTAINER (insert_view), 1);
849 g_signal_connect ((gpointer) insert_view, "clicked",G_CALLBACK (insertViewTest),constructor);
850 }
851 }
852}
853
854void constructMainWin(mainWindow * parent, WindowCreationData * win_creation_data)
855{
7a859036 856 // systemView * sv = NULL; /* System view */
5723fa24 857 systemView * newSv; /* New system view displayed in the new window */
858 GtkWidget * newWindow; /* New generated main window */
859 mainWindow * newMWindow;/* New main window structure */
860 GtkNotebook * notebook;
861
7a859036 862 // if(parent) sv = parent->SystemView;
5723fa24 863
864 newMWindow = g_new(mainWindow, 1);
865
866 // Add the object's information to the module's array
867 Main_Window_List = g_slist_append(Main_Window_List, newMWindow);
868
869 newWindow = create_MWindow();
870 gtk_widget_show (newWindow);
871
872 newSv = g_new(systemView, 1);
7a859036 873 // if(sv){
874 // while(sv->Next) sv = sv->Next;
875 // sv->Next = newSv;
876 // }
5723fa24 877
878 newSv->EventDB = NULL;
879 newSv->SystemInfo = NULL;
880 newSv->Options = NULL;
881 newSv->Next = NULL;
882 newSv->Window = newMWindow;
883
884 newMWindow->MWindow = newWindow;
885 newMWindow->Tab = NULL;
886 newMWindow->CurrentTab = NULL;
887 newMWindow->SystemView = newSv;
888 newMWindow->Attributes = LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE, NULL));
889 if(parent){
890 newMWindow->traceset_context = parent->traceset_context;
891 newMWindow->traceset = parent->traceset;
892 newMWindow->winCreationData = parent->winCreationData;
893 }else{
894 newMWindow->traceset_context = LTTV_TRACESET_CONTEXT(gTracesetContext);
895 newMWindow->traceset = (LTTV_TRACESET_CONTEXT(gTracesetContext))->ts;
896 newMWindow->winCreationData = win_creation_data;
897 }
898
899 insertMenuToolbarItem(newMWindow);
900
901 g_object_set_data(G_OBJECT(newWindow), "systemView", (gpointer)newSv);
902 g_object_set_data(G_OBJECT(newWindow), "mainWindow", (gpointer)newMWindow);
903
904 //create a default tab
905 notebook = (GtkNotebook *)lookup_widget(newMWindow->MWindow, "MNotebook");
906 if(notebook == NULL){
907 g_printf("Notebook does not exist\n");
908 return;
909 }
910 //for now there is no name field in LttvTraceset structure
911 //Use "Traceset" as the label for the default tab
912 create_tab(newMWindow->MWindow, notebook,"Traceset");
913
7a859036 914 g_object_set_data_full(
915 G_OBJECT(newMWindow->MWindow),
916 "Main_Window_Data",
917 newMWindow,
918 (GDestroyNotify)mainWindow_free);
919
920 gWinCount++;
5723fa24 921}
922
923void * create_tab(GtkWidget* parent, GtkNotebook * notebook, char * label)
924{
925 GList * list;
926 tab * tmpTab;
927 mainWindow * mwData;
928
929 mwData = get_window_data_struct(parent);
930
931 tmpTab = mwData->Tab;
932 while(tmpTab && tmpTab->Next) tmpTab = tmpTab->Next;
933 if(!tmpTab){
934 mwData->CurrentTab = NULL;
935 tmpTab = g_new(tab,1);
936 mwData->Tab = tmpTab;
937 }else{
938 tmpTab->Next = g_new(tab,1);
939 tmpTab = tmpTab->Next;
940 }
941 if(mwData->CurrentTab){
942 tmpTab->traceStartTime = mwData->CurrentTab->traceStartTime;
943 tmpTab->traceEndTime = mwData->CurrentTab->traceEndTime;
944 tmpTab->startTime = mwData->CurrentTab->startTime;
945 tmpTab->endTime = mwData->CurrentTab->endTime;
946 tmpTab->currentTime = mwData->CurrentTab->currentTime;
947 }else{
948 getTracesetTimeSpan(mwData,&tmpTab->traceStartTime, &tmpTab->traceEndTime);
949 tmpTab->startTime = tmpTab->traceStartTime;
950 tmpTab->endTime = tmpTab->traceEndTime;
951 tmpTab->currentTime = tmpTab->traceStartTime;
952 }
953 tmpTab->Attributes = LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE, NULL));
954 // mwData->CurrentTab = tmpTab;
955 tmpTab->custom = (GtkCustom*)gtk_custom_new();
956 tmpTab->custom->mw = mwData;
957 gtk_widget_show((GtkWidget*)tmpTab->custom);
958 tmpTab->Next = NULL;
959
960 tmpTab->label = gtk_label_new (label);
961 gtk_widget_show (tmpTab->label);
962
963 gtk_notebook_append_page(notebook, (GtkWidget*)tmpTab->custom, tmpTab->label);
964
965 list = gtk_container_get_children(GTK_CONTAINER(notebook));
966 gtk_notebook_set_current_page(notebook,g_list_length(list)-1);
967}
This page took 0.063845 seconds and 4 git commands to generate.