A Discrete-Event Network Simulator
API
gtk-config-store.cc
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 as
5 * published by the Free Software Foundation;
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15 *
16 * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
17 * Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
18 */
19
20#include "gtk-config-store.h"
21#include "raw-text-config.h"
22#include "display-functions.h"
23#include "ns3/log.h"
24#include <fstream>
25
26
27namespace ns3 {
28
29NS_LOG_COMPONENT_DEFINE ("GtkconfigStore");
30
32{
33}
34
35void
37{
38 //this function should be called before running the script to enable the user
39 //to configure the default values for the objects he wants to use
40 GtkWidget *window;
41 GtkWidget *view;
42 GtkWidget *scroll;
43
44 gtk_init (0, 0);
45 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
46 gtk_window_set_title (GTK_WINDOW (window), "ns-3 Default attributes.");
47 gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
48
49 g_signal_connect (window, "delete_event", (GCallback)delete_event_callback, window);
50 GtkTreeStore *model = gtk_tree_store_new (COL_LAST, G_TYPE_POINTER);
51 ModelTypeidCreator creator;
52 creator.Build (model);
53
54 view = create_view_config_default (model);
55 scroll = gtk_scrolled_window_new (0, 0);
56 gtk_container_add (GTK_CONTAINER (scroll), view);
57
58 GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
59 gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
60 gtk_box_pack_end (GTK_BOX (vbox), gtk_separator_new (GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0);
61 GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
62 gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
63 GtkWidget *save = gtk_button_new_with_label ("Save");
64 g_signal_connect (save, "clicked", (GCallback) save_clicked_default, window);
65 gtk_box_pack_end (GTK_BOX (hbox), save, FALSE, FALSE, 0);
66 GtkWidget *load = gtk_button_new_with_label ("Load");
67 g_signal_connect (load, "clicked", (GCallback) load_clicked_default, window);
68 gtk_box_pack_end (GTK_BOX (hbox), load, FALSE, FALSE, 0);
69 GtkWidget *exit = gtk_button_new_with_label ("Run Simulation");
70 g_signal_connect (exit, "clicked", (GCallback) exit_clicked_callback, window);
71 gtk_box_pack_end (GTK_BOX (hbox), exit, FALSE, FALSE, 0);
72
73 gtk_container_add (GTK_CONTAINER (window), vbox);
74
75 gtk_widget_show_all (window);
76
77 gtk_main ();
78
79 gtk_tree_model_foreach (GTK_TREE_MODEL (model),
81 0);
82
83 gtk_widget_destroy (window);
84}
85
86void
88{
89 GtkWidget *window;
90 GtkWidget *view;
91 GtkWidget *scroll;
92
93 gtk_init (0, 0);
94
95 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
96 gtk_window_set_title (GTK_WINDOW (window), "ns-3 Object attributes.");
97 gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
98
99 g_signal_connect (window, "delete_event", (GCallback)delete_event_callback, window);
100
101
102 GtkTreeStore *model = gtk_tree_store_new (COL_LAST, G_TYPE_POINTER);
103 ModelCreator creator;
104 creator.Build (model);
105
106 view = create_view (model);
107 scroll = gtk_scrolled_window_new (0, 0);
108 gtk_container_add (GTK_CONTAINER (scroll), view);
109
110 GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
111 gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
112 gtk_box_pack_end (GTK_BOX (vbox), gtk_separator_new (GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0);
113 GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
114 gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
115 GtkWidget *save = gtk_button_new_with_label ("Save");
116 g_signal_connect (save, "clicked", (GCallback) save_clicked_attribute, window);
117 gtk_box_pack_end (GTK_BOX (hbox), save, FALSE, FALSE, 0);
118 GtkWidget *load = gtk_button_new_with_label ("Load");
119 g_signal_connect (load, "clicked", (GCallback) load_clicked_attribute, window);
120 gtk_box_pack_end (GTK_BOX (hbox), load, FALSE, FALSE, 0);
121 GtkWidget *exit = gtk_button_new_with_label ("Run Simulation");
122 g_signal_connect (exit, "clicked", (GCallback) exit_clicked_callback, window);
123 gtk_box_pack_end (GTK_BOX (hbox), exit, FALSE, FALSE, 0);
124
125 gtk_container_add (GTK_CONTAINER (window), vbox);
126
127 gtk_widget_show_all (window);
128
129 gtk_main ();
130
131 gtk_tree_model_foreach (GTK_TREE_MODEL (model),
133 0);
134
135 gtk_widget_destroy (window);
136}
137
138} // namespace ns3
void ConfigureAttributes(void)
Process attribute values.
void ConfigureDefaults(void)
Process default values.
ModelCreator class.
void Build(GtkTreeStore *treestore)
Allocate attribute tree.
ModelTypeIdCreator class.
void Build(GtkTreeStore *treestore)
This method will iterate on typeIds having default attributes and create a model for them,...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:205
Every class exported by the ns3 library is enclosed in the ns3 namespace.
gboolean clean_model_callback(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
Delete the tree model contents.
void save_clicked_attribute(GtkButton *button, gpointer user_data)
This is the action done when the user presses on the save button for the Attributes.
gboolean delete_event_callback(GtkWidget *widget, GdkEvent *event, gpointer user_data)
Exit the application.
void exit_clicked_callback(GtkButton *button, gpointer user_data)
Exit the window when exit button is pressed.
GtkWidget * create_view_config_default(GtkTreeStore *model)
This is the main view opening the widget, getting tooltips and drawing the tree of attributes.
gboolean clean_model_callback_config_default(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
Delete the tree model contents.
GtkWidget * create_view(GtkTreeStore *model)
This is the main view opening the widget, getting tooltips and drawing the tree of attributes....
void save_clicked_default(GtkButton *button, gpointer user_data)
This is the action done when the user presses on the save button for the Default attributes.
void load_clicked_default(GtkButton *button, gpointer user_data)
If the user presses the button load, it will load the config file into memory for the Default attribu...
void load_clicked_attribute(GtkButton *button, gpointer user_data)
If the user presses the button load, it will load the config file into memory for the Attributes.