Rework about dialog by using gtk_show_about_dialog
[lttv.git] / lttv / modules / gui / lttvwindow / lttvwindow / callbacks.c
index b370026810f3f004f6e5703f2e86410cd3f6d9df..018947aaf9778e05825c3052fa87a8207fe4c2fe 100644 (file)
@@ -31,9 +31,7 @@
 #include "callbacks.h"
 #include "interface.h"
 #include "support.h"
-#include <ltt/trace.h>
-#include <ltt/time.h>
-#include <ltt/event.h>
+#include <lttv/time.h>
 #include <lttv/lttv.h>
 #include <lttv/module.h>
 #include <lttv/iattribute.h>
@@ -283,7 +281,7 @@ int SetTraceset(Tab * tab, LttvTraceset *traceset)
   }
 #endif /*BABEL_CLEANUP*/
 
-  time_span = lttv_traceset_get_time_span(traceset);
+  time_span = lttv_traceset_get_time_span_real(traceset);
   
   tab->traceset_info->traceset = traceset;
   
@@ -344,7 +342,7 @@ int SetTraceset(Tab * tab, LttvTraceset *traceset)
     events_request->before_chunk_traceset = NULL;
     events_request->before_chunk_trace = NULL;
     events_request->before_chunk_tracefile = NULL;
-    events_request->event = traceset->event_hooks;
+    events_request->event = NULL;
     events_request->after_chunk_tracefile = NULL;
     events_request->after_chunk_trace = NULL;
     events_request->after_chunk_traceset = NULL;
@@ -1030,12 +1028,12 @@ gboolean lttvwindow_process_pending_requests(Tab *tab)
             /* Process the traceset with only state hooks */
 #ifdef DEBUG
             seek_count =
-
+#endif
                lttv_process_traceset_middle(ts,
                                             ltt_time_infinite,
                                             G_MAXUINT,
                                             events_request->start_position);
-#endif
+
             //g_assert(lttv_traceset_context_ctx_pos_compare(tsc,
             //             events_request->start_position) == 0);
 
@@ -1047,7 +1045,6 @@ gboolean lttvwindow_process_pending_requests(Tab *tab)
       /* 1.3 Add hooks and call before request for all list_in members */
       {
         GSList *iter = NULL;
-
         for(iter=list_in;iter!=NULL;iter=g_slist_next(iter)) {
           EventsRequest *events_request = (EventsRequest*)iter->data;
           /* 1.3.1 If !servicing */
@@ -1063,13 +1060,14 @@ gboolean lttvwindow_process_pending_requests(Tab *tab)
            */
          //TODO ybrosseau 2012-07-10: || TRUE added since we only support
          //     traceset wide requests
-          if(events_request->trace == -1 || TRUE)
+          if(events_request->trace == -1 || TRUE) {
+
             lttv_process_traceset_begin(ts,
                 events_request->before_chunk_traceset,
                 events_request->before_chunk_trace,
                 events_request->event
                 );
-          else {
+         } else {
             guint nb_trace = lttv_traceset_number(ts);
             g_assert((guint)events_request->trace < nb_trace &&
                       events_request->trace > -1);
@@ -1378,15 +1376,12 @@ gboolean lttvwindow_process_pending_requests(Tab *tab)
            */
          //TODO ybrosseau 2012-07-10: || TRUE added since we only support
          //     traceset wide requests
-          if(events_request->trace == -1 || TRUE) 
+          if(events_request->trace == -1 || TRUE) {
                lttv_process_traceset_end(ts,
                                          events_request->after_chunk_traceset,
                                          events_request->after_chunk_trace,
-
                                          events_request->event);
-
-
-          else {
+         } else {
             guint nb_trace = lttv_traceset_number(ts);
             g_assert(events_request->trace < nb_trace &&
                       events_request->trace > -1);
@@ -1683,23 +1678,12 @@ void add_trace(GtkWidget * widget, gpointer user_data)
     ptab = (LttvPluginTab *)g_object_get_data(G_OBJECT(page), "Tab_Plugin");
     tab = ptab->tab;
   }
-//TODO fdeslauriers 2012-07-06: Remove this popup when we support multiple traces
-  traceset = lttvwindow_get_traceset(tab);
-  if(traceset != NULL && lttv_traceset_number(traceset) > 0){
-         GtkWidget *dialogue = 
-           gtk_message_dialog_new(
-             GTK_WINDOW(gtk_widget_get_toplevel(widget)),
-             GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
-             GTK_MESSAGE_ERROR,
-             GTK_BUTTONS_OK,
-             "Loading multiple traces is not supported at the moment.");
-         gtk_dialog_run(GTK_DIALOG(dialogue));
-         gtk_widget_destroy(dialogue);
-         return;
-       }
-  
+
   /* Create a new traceset*/
-  traceset = lttv_traceset_new();
+  traceset = tab->traceset_info->traceset;
+  if(traceset == NULL) {
+    traceset = lttv_traceset_new();
+  }
   /* File open dialog management */
 #ifdef BABEL_CLEANUP
   GtkWidget *extra_live_button;
@@ -2282,7 +2266,7 @@ LttvPluginTab *create_new_tab(GtkWidget* widget, gpointer user_data)
                       gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)));
   Tab *copy_tab;
 
-  if(!page) {
+  if(!page || TRUE ) {
     copy_tab = NULL;
   } else {
     LttvPluginTab *ptab;
@@ -3013,90 +2997,36 @@ on_content_activate                    (GtkMenuItem     *menuitem,
 }
 
 
-static void 
-on_about_close_activate                (GtkButton       *button,
-                                        gpointer         user_data)
-{
-  GtkWidget *about_widget = GTK_WIDGET(user_data);
-
-  gtk_widget_destroy(about_widget);
-}
-
 void
 on_about_activate                      (GtkMenuItem     *menuitem,
                                         gpointer         user_data)
 {
   MainWindow *main_window = get_window_data_struct(GTK_WIDGET(menuitem));
-  GtkWidget *window_widget = main_window->mwindow;
-  GtkWidget *about_widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-  GtkWindow *about_window = GTK_WINDOW(about_widget);
-  
-  gtk_window_set_title(about_window, "About Linux Trace Toolkit");
-
-  gtk_window_set_resizable(about_window, FALSE);
-  gtk_window_set_transient_for(about_window, GTK_WINDOW(window_widget));
-  gtk_window_set_destroy_with_parent(about_window, TRUE);
-  gtk_window_set_modal(about_window, FALSE);
-
-  /* Put the about window at the center of the screen */
-  gtk_window_set_position(about_window, GTK_WIN_POS_CENTER_ALWAYS);
-
-  GtkWidget *vbox = gtk_vbox_new(FALSE, 1);
-
-  gtk_container_add(GTK_CONTAINER(about_widget), vbox);
 
-  /* Text to show */
-  GtkWidget *label1 = gtk_label_new("");
-  gtk_misc_set_padding(GTK_MISC(label1), 10, 20);
-  gtk_label_set_markup(GTK_LABEL(label1), "\
-<big>Linux Trace Toolkit " VERSION "</big>");
-  gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_CENTER);
+  gchar * authors[] = { "Yannick Brosseau",
+                       "Francis Deslauriers", 
+                       "Mathieu Desnoyer",
+                       "Michel Dagenais", 
+                       "Benoit Des Ligneris",
+                       "Eric Clement",
+                       "Xang-Xiu Yang",
+                       "Tom Zanussi",
+                       NULL };
+
+  static const gchar *comments =  "Trace visualiser for LTTng 2.x data\
+\nInspired from the original Linux Trace Toolkit Visualizer made by Karim Yaghmour";
   
-  GtkWidget *label2 = gtk_label_new("");
-  gtk_misc_set_padding(GTK_MISC(label2), 10, 20);
-  gtk_label_set_markup(GTK_LABEL(label2), "\
-Contributors :\n\
-\n\
-Michel Dagenais (New trace format, lttv main)\n\
-Mathieu Desnoyers (Kernel Tracer, Directory structure, build with automake/conf,\n\
-                   lttv gui, control flow view, gui cooperative trace reading\n\
-                   scheduler with interruptible foreground and background\n\
-                   computation, detailed event list (rewrite), trace reading\n\
-                   library (rewrite))\n\
-Benoit Des Ligneris, Eric Clement (Cluster adaptation, work in progress)\n\
-Xang-Xiu Yang (new trace reading library and converter, lttv gui, \n\
-               detailed event list and statistics view)\n\
-Tom Zanussi (RelayFS)\n\
-\n\
-Inspired from the original Linux Trace Toolkit Visualizer made by\n\
-Karim Yaghmour");
-
-  GtkWidget *label3 = gtk_label_new("");
-  gtk_label_set_markup(GTK_LABEL(label3), "\
-Linux Trace Toolkit Viewer, Copyright (C) 2004, 2005, 2006\n\
-                                                Michel Dagenais\n\
-                                                Mathieu Desnoyers\n\
-                                                Xang-Xiu Yang\n\
-Linux Trace Toolkit comes with ABSOLUTELY NO WARRANTY.\n\
-This is free software, and you are welcome to redistribute it\n\
-under certain conditions. See COPYING for details.");
-  gtk_misc_set_padding(GTK_MISC(label3), 10, 20);
-
-  gtk_box_pack_start_defaults(GTK_BOX(vbox), label1);
-  gtk_box_pack_start_defaults(GTK_BOX(vbox), label2);
-  gtk_box_pack_start_defaults(GTK_BOX(vbox), label3);
-
-  GtkWidget *hbox = gtk_hbox_new(TRUE, 0);
-  gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
-  GtkWidget *close_button = gtk_button_new_with_mnemonic("_Close");
-  gtk_box_pack_end(GTK_BOX(hbox), close_button, FALSE, FALSE, 0);
-  gtk_container_set_border_width(GTK_CONTAINER(close_button), 20);
-
-  g_signal_connect(G_OBJECT(close_button), "clicked",
-      G_CALLBACK(on_about_close_activate),
-      (gpointer)about_widget);
-  
-  gtk_widget_show_all(about_widget);
+  static const gchar *copyright = "Copyright \xc2\xa9 2004-2013";
+
+  gtk_show_about_dialog(main_window->mwindow,
+                 "authors", authors,
+                 "comments", comments,
+                 "version", VERSION,
+                 "program-name", "LTTV",
+                 "license", "GPLv2, see COPYING file for details",
+                 "website", "http://lttng.org/lttv/",
+                 "copyright", copyright,
+                 NULL);
 }
 
 
@@ -3104,7 +3034,19 @@ void
 on_button_new_clicked                  (GtkButton       *button,
                                         gpointer         user_data)
 {
+#ifdef BABEL_CLEANUP
   create_new_window((GtkWidget*)button, user_data, TRUE);
+#else
+  GtkWidget *dialogue = 
+    gtk_message_dialog_new(
+      GTK_WINDOW(gtk_widget_get_toplevel(button)),
+      GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
+      GTK_MESSAGE_ERROR,
+      GTK_BUTTONS_OK,
+      "Opening multiple windows is disabled.");
+  gtk_dialog_run(GTK_DIALOG(dialogue));
+  gtk_widget_destroy(dialogue);
+#endif
 }
 
 void
@@ -3323,9 +3265,8 @@ void time_change_manager               (Tab *tab,
   TimeInterval time_span;
   
   LttvTraceset *ts = tab->traceset_info->traceset;
-  time_span.start_time =ltt_time_from_uint64( lttv_traceset_get_timestamp_begin(ts));
-  time_span.end_time = ltt_time_from_uint64(lttv_traceset_get_timestamp_end(ts));
   
+  time_span = lttv_traceset_get_time_span_real(ts);
 
   LttTime start_time = new_time_window.start_time;
   LttTime end_time = new_time_window.end_time;
@@ -3432,7 +3373,7 @@ static void on_timebar_starttime_changed(Timebar *timebar,
 {
        Tab *tab = (Tab *)user_data;
        LttvTraceset * ts =tab->traceset_info->traceset;
-       TimeInterval time_span = lttv_traceset_get_time_span(ts);
+       TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
 
        TimeWindow new_time_window = tab->time_window;
        new_time_window.start_time = timebar_get_start_time(timebar);
@@ -3468,7 +3409,7 @@ static void on_timebar_endtime_changed(Timebar *timebar,
 {
        Tab *tab = (Tab *)user_data;
         LttvTraceset * ts =tab->traceset_info->traceset;
-        TimeInterval time_span = lttv_traceset_get_time_span(ts);
+        TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
 
        TimeWindow new_time_window = tab->time_window;
 
@@ -3519,7 +3460,7 @@ void scroll_value_changed_cb(GtkWidget *scrollbar,
   gdouble page_size;
   
   LttvTraceset * ts = tab->traceset_info->traceset;
-  TimeInterval time_span = lttv_traceset_get_time_span(ts);
+  TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
 
   time = ltt_time_add(ltt_time_from_double(value),
                       time_span.start_time);
This page took 0.02675 seconds and 4 git commands to generate.