git-svn-id: http://ltt.polymtl.ca/svn@469 04897980-b3bd-0310-b5e0-8ef037075253
[lttv.git] / ltt / branches / poly / lttv / modules / gui / main / src / callbacks.c
index 4c82c444be72dacd7b5fcb40307a01990db17275..98585271c1600ef8f9a167381eace42e32d801fd 100644 (file)
@@ -1,3 +1,21 @@
+/* This file is part of the Linux Trace Toolkit viewer
+ * Copyright (C) 2003-2004 XangXiu Yang
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License Version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, 
+ * MA 02111-1307, USA.
+ */
+
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
 #include "callbacks.h"
 #include "interface.h"
 #include "support.h"
-#include <lttv/mainWindow.h>
+#include <lttv/mainwindow.h>
 #include <lttv/menu.h>
 #include <lttv/toolbar.h>
-#include <lttv/gtkTraceSet.h>
+#include <lttv/gtktraceset.h>
 #include <lttv/module.h>
 #include <lttv/gtkdirsel.h>
 #include <lttv/iattribute.h>
@@ -623,14 +641,10 @@ on_clone_traceset_activate             (GtkMenuItem     *menuitem,
   create_new_window((GtkWidget*)menuitem, user_data, TRUE);
 }
 
-
-void
-on_tab_activate                        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
+void create_new_tab(GtkWidget* widget, gpointer user_data){
   gchar label[PATH_LENGTH];
-  MainWindow * mw_data = get_window_data_struct((GtkWidget*)menuitem);
-  GtkNotebook * notebook = (GtkNotebook *)lookup_widget((GtkWidget*)menuitem, "MNotebook");
+  MainWindow * mw_data = get_window_data_struct(widget);
+  GtkNotebook * notebook = (GtkNotebook *)lookup_widget(widget, "MNotebook");
   if(notebook == NULL){
     g_printf("Notebook does not exist\n");
     return;
@@ -642,6 +656,13 @@ on_tab_activate                        (GtkMenuItem     *menuitem,
   create_tab (mw_data, mw_data, notebook, label);
 }
 
+void
+on_tab_activate                        (GtkMenuItem     *menuitem,
+                                        gpointer         user_data)
+{
+  create_new_tab((GtkWidget*)menuitem, user_data);
+}
+
 
 void
 on_open_activate                       (GtkMenuItem     *menuitem,
@@ -931,7 +952,7 @@ on_add_module_search_path_activate     (GtkMenuItem     *menuitem,
                                         gpointer         user_data)
 {
   GtkDirSelection * file_selector = (GtkDirSelection *)gtk_dir_selection_new("Select module path");
-  char * dir;
+  const char * dir;
   gint id;
 
   MainWindow * mw_data = get_window_data_struct((GtkWidget*)menuitem);
@@ -995,9 +1016,15 @@ void
 on_button_new_clicked                  (GtkButton       *button,
                                         gpointer         user_data)
 {
-  create_new_window((GtkWidget*)button, user_data, FALSE);
+  create_new_window((GtkWidget*)button, user_data, TRUE);
 }
 
+void
+on_button_new_tab_clicked              (GtkButton       *button,
+                                        gpointer         user_data)
+{
+  create_new_tab((GtkWidget*)button, user_data);
+}
 
 void
 on_button_open_clicked                 (GtkButton       *button,
@@ -1106,10 +1133,19 @@ void
 on_MWindow_destroy                     (GtkObject       *object,
                                         gpointer         user_data)
 {
-  MainWindow *Main_Window = (MainWindow*)user_data;
-  
+  MainWindow *Main_Window = get_window_data_struct((GtkWidget*)object);
+  GtkWidget  *widget;
+  Tab *tab = Main_Window->tab;
   g_printf("There are : %d windows\n",g_slist_length(g_main_window_list));
 
+  while(tab){
+    while(tab->multi_vpaned->num_children){
+      gtk_multi_vpaned_widget_delete(tab->multi_vpaned);
+    }    
+    tab = tab->next;
+  }
+  
   g_win_count--;
   if(g_win_count == 0)
     gtk_main_quit ();
@@ -1589,7 +1625,7 @@ void construct_main_window(MainWindow * parent, WindowCreationData * win_creatio
   }
   //for now there is no name field in LttvTraceset structure
   //Use "Traceset" as the label for the default tab
-  create_tab(NULL, new_m_window, notebook,"Traceset");
+  create_tab(parent, new_m_window, notebook,"Traceset");
 
   g_object_set_data_full(
                        G_OBJECT(new_m_window->mwindow),
@@ -1631,8 +1667,9 @@ void tab_destructor(Tab * tab_instance)
       ref_count = lttv_trace_get_ref_number(trace);
       if(ref_count <= 1){
        ltt_trace_close(lttv_trace(trace));
+       lttv_trace_destroy(trace);
       }
-      lttv_trace_destroy(trace);
+      //      lttv_trace_destroy(trace);
     }
   }  
   lttv_traceset_destroy(tab_instance->traceset_info->traceset); 
This page took 0.025139 seconds and 4 git commands to generate.