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