src/config-store/model/gtk-config-store.cc
changeset 6941 9d2c79c992d7
parent 5992 73ea01eb5674
child 10411 f5916669dbe7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/gtk-config-store.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,139 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  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
+ * 
+ * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+
+#include "gtk-config-store.h"
+#include "raw-text-config.h"
+#include "display-functions.h"
+#include "ns3/log.h"
+#include <fstream>
+
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("GtkconfigStore");
+
+
+GtkConfigStore::GtkConfigStore ()
+{
+}
+
+void
+GtkConfigStore::ConfigureDefaults (void)
+{
+  //this function should be called before running the script to enable the user
+  //to configure the default values for the objects he wants to use
+  GtkWidget *window;
+  GtkWidget *view;
+  GtkWidget *scroll;
+
+  gtk_init (0, 0);
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_title (GTK_WINDOW (window), "ns-3 Default attributes.");
+  gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
+
+  g_signal_connect (window, "delete_event", (GCallback)delete_event_callback, window);
+  GtkTreeStore *model = gtk_tree_store_new (COL_LAST, G_TYPE_POINTER);
+  ModelTypeidCreator creator;
+  creator.Build (model);
+
+  view = create_view_config_default (model);
+  scroll = gtk_scrolled_window_new (0, 0);
+  gtk_container_add (GTK_CONTAINER (scroll), view);
+
+  GtkWidget *vbox = gtk_vbox_new (FALSE, 5);
+  gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
+  gtk_box_pack_end (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0);
+  GtkWidget *hbox = gtk_hbox_new (FALSE, 5);
+  gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+  GtkWidget *save = gtk_button_new_with_label ("Save");
+  g_signal_connect (save, "clicked",  (GCallback) save_clicked_default, window);
+  gtk_box_pack_end (GTK_BOX (hbox), save, FALSE, FALSE, 0);
+  GtkWidget *load = gtk_button_new_with_label ("Load");
+  g_signal_connect (load, "clicked",  (GCallback) load_clicked_default, window);
+  gtk_box_pack_end (GTK_BOX (hbox), load, FALSE, FALSE, 0);
+  GtkWidget *exit = gtk_button_new_with_label ("Run Simulation");
+  g_signal_connect (exit, "clicked",  (GCallback) exit_clicked_callback, window);
+  gtk_box_pack_end (GTK_BOX (hbox), exit, FALSE, FALSE, 0);
+
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+
+  gtk_widget_show_all (window);
+
+  gtk_main ();
+
+  gtk_tree_model_foreach (GTK_TREE_MODEL (model), 
+                          clean_model_callback_config_default,
+                          0);
+
+  gtk_widget_destroy (window); 
+}
+
+void 
+GtkConfigStore::ConfigureAttributes (void)
+{
+  GtkWidget *window;
+  GtkWidget *view;
+  GtkWidget *scroll;
+
+  gtk_init (0, 0);
+
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_title (GTK_WINDOW (window), "ns-3 Object attributes.");
+  gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
+
+  g_signal_connect (window, "delete_event", (GCallback)delete_event_callback, window);
+
+
+  GtkTreeStore *model = gtk_tree_store_new (COL_LAST, G_TYPE_POINTER);
+  ModelCreator creator;
+  creator.Build (model);
+
+  view = create_view (model);
+  scroll = gtk_scrolled_window_new (0, 0);
+  gtk_container_add (GTK_CONTAINER (scroll), view);
+
+  GtkWidget *vbox = gtk_vbox_new (FALSE, 5);
+  gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
+  gtk_box_pack_end (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0);
+  GtkWidget *hbox = gtk_hbox_new (FALSE, 5);
+  gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+  GtkWidget *save = gtk_button_new_with_label ("Save");
+  g_signal_connect (save, "clicked",  (GCallback) save_clicked, window);
+  gtk_box_pack_end (GTK_BOX (hbox), save, FALSE, FALSE, 0);
+  GtkWidget *load = gtk_button_new_with_label ("Load");
+  g_signal_connect (load, "clicked",  (GCallback) load_clicked, window);
+  gtk_box_pack_end (GTK_BOX (hbox), load, FALSE, FALSE, 0);
+  GtkWidget *exit = gtk_button_new_with_label ("Run Simulation");
+  g_signal_connect (exit, "clicked",  (GCallback) exit_clicked_callback, window);
+  gtk_box_pack_end (GTK_BOX (hbox), exit, FALSE, FALSE, 0);
+
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+
+  gtk_widget_show_all (window);
+
+  gtk_main ();
+
+  gtk_tree_model_foreach (GTK_TREE_MODEL (model), 
+                          clean_model_callback,
+                          0);
+
+  gtk_widget_destroy (window);
+}
+
+} // namespace ns3