22 #include "ns3/config.h"    23 #include "ns3/string.h"    24 #include "ns3/pointer.h"    33                           GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
    36   gtk_tree_model_get (model, iter, 
COL_NODE, &node, -1);
    45       g_object_set (renderer, 
"text", str.
Get ().c_str (), (
char*) 0);
    46       g_object_set (renderer, 
"editable", TRUE, (
char*) 0);
    50       g_object_set (renderer, 
"text", 
"", (
char*) 0);
    51       g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
    60                           GtkTreeIter *iter, gpointer user_data)
    63   gtk_tree_model_get (model, iter, 
COL_NODE, &node, -1);
    64   g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
    76       g_object_set (renderer, 
"text", node->
name.c_str (), (
char*) 0);
    79       g_object_set (renderer, 
"text", node->
name.c_str (), (
char*) 0);
    83         std::stringstream oss;
    85         g_object_set (renderer, 
"text", oss.str ().c_str (), (
char*) 0);
    89       g_object_set (renderer, 
"text", node->
name.c_str (), (
char*) 0);
    99                       gchar *new_text, gpointer user_data)
   101   GtkTreeModel *model = GTK_TREE_MODEL (user_data);
   103   gtk_tree_model_get_iter_from_string (model, &iter, path_string);
   105   gtk_tree_model_get (model, &iter, 
COL_NODE, &node, -1);
   123   g_return_val_if_fail (col != 0, -1);
   124   g_return_val_if_fail (gtk_tree_view_column_get_tree_view(col) != 0, -1);
   125   cols = gtk_tree_view_get_columns (GTK_TREE_VIEW (gtk_tree_view_column_get_tree_view(col)));
   126   num = g_list_index (cols, (gpointer) col);
   137                        GtkTooltip *tooltip, gpointer user_data)
   141   GtkTreeViewColumn * column;
   142   if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (widget), &
x, &y,
   143                                           keyboard_tip, &model, 0, &iter))
   147   if (!gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), 
x, y, 0, &column, 0, 0))
   154   gtk_tree_model_get (model, &iter, 
COL_NODE, &node, -1);
   165           std::string tip = 
"This object is of type "   167           gtk_tooltip_set_text (tooltip, tip.c_str ());
   176           std::string tip = 
"This object is of type "   178           gtk_tooltip_set_text (tooltip, tip.c_str ());
   187           std::string tip = 
"This object is of type "   189           gtk_tooltip_set_text (tooltip, tip.c_str ());
   195         uint32_t attrIndex = 0;
   212             gtk_tooltip_set_text (tooltip, tip.c_str ());
   224             gtk_tooltip_set_text (tooltip, tip.c_str ());
   240   GtkTreeViewColumn *col;
   241   GtkCellRenderer *renderer;
   244   view = gtk_tree_view_new ();
   245   g_object_set (view, 
"has-tooltip", TRUE, (
char*) 0);
   248   gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (view), GTK_TREE_VIEW_GRID_LINES_BOTH);
   251   col = gtk_tree_view_column_new ();
   252   gtk_tree_view_column_set_title (col, 
"Object Attributes");
   253   gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
   254   renderer = gtk_cell_renderer_text_new ();
   255   gtk_tree_view_column_pack_start (col, renderer, TRUE);
   257   g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
   259   col = gtk_tree_view_column_new ();
   260   gtk_tree_view_column_set_title (col, 
"Attribute Value");
   261   gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
   262   renderer = gtk_cell_renderer_text_new ();
   264   gtk_tree_view_column_pack_start (col, renderer, TRUE);
   267   gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (model));
   269   g_object_unref (model); 
   281   gtk_widget_hide (GTK_WIDGET (user_data));
   291   gtk_widget_hide (GTK_WIDGET (user_data));
   300                       GtkTreeIter *iter, gpointer 
data)
   303   gtk_tree_model_get (GTK_TREE_MODEL (model), iter, 
COL_NODE, &node, -1);
   320                                          GtkTreeModel *model, GtkTreeIter *iter,
   324   gtk_tree_model_get (model, iter, 
COL_TYPEID, &node, -1);
   331       g_object_set (renderer, 
"text", node->
defaultValue.c_str (), (
char*) 0);
   332       g_object_set (renderer, 
"editable", TRUE, (
char*) 0);
   336       g_object_set (renderer, 
"text", 
"", (
char*) 0);
   337       g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
   345                                          GtkTreeIter *iter, gpointer user_data)
   348   gtk_tree_model_get (model, iter, 
COL_NODE, &node, -1);
   349   g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
   358       g_object_set (renderer, 
"text", node->
tid.
GetName ().c_str (), (
char*) 0);
   361       g_object_set (renderer, 
"text", node->
name.c_str (), (
char*) 0);
   374                                      gchar *new_text, gpointer user_data)
   376   GtkTreeModel *model = GTK_TREE_MODEL (user_data);
   378   gtk_tree_model_get_iter_from_string (model, &iter, path_string);
   380   gtk_tree_model_get (model, &iter, 
COL_NODE, &node, -1);
   408                                       gboolean keyboard_tip, GtkTooltip *tooltip, gpointer user_data)
   412   GtkTreeViewColumn * column;
   413   if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (widget), &
x, &y,
   414                                           keyboard_tip, &model, 0, &iter))
   418   if (!gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), 
x, y, 0, &column, 0, 0))
   425   gtk_tree_model_get (model, &iter, 
COL_NODE, &node, -1);
   436           std::string tip = 
"This object is of type " + node->
tid.
GetName ();
   437           gtk_tooltip_set_text (tooltip, tip.c_str ());
   443         uint32_t attrIndex = node->
index;
   447             gtk_tooltip_set_text (tooltip, tip.c_str ());
   458             gtk_tooltip_set_text (tooltip, tip.c_str ());
   477   GtkWindow *parent_window = GTK_WINDOW (user_data);
   479   GtkFileChooserNative *native;
   480   GtkFileChooser *chooser;
   481   GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;
   484   native = gtk_file_chooser_native_new (
"Save File",
   489   chooser = GTK_FILE_CHOOSER (native);
   491   gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE);
   493   gtk_file_chooser_set_current_name (chooser, (
"config-defaults.txt"));
   495   res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native));
   496   if (res == GTK_RESPONSE_ACCEPT)
   500       filename = gtk_file_chooser_get_filename (chooser);
   507   g_object_unref (native);
   519   GtkWindow *parent_window = GTK_WINDOW (user_data);
   520   GtkFileChooserNative *native;
   521   GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
   524   native = gtk_file_chooser_native_new (
"Open File",
   530   res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native));
   531   if (res == GTK_RESPONSE_ACCEPT)
   534       GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
   535       filename = gtk_file_chooser_get_filename (chooser);
   542   g_object_unref (native);
   555   GtkWindow *parent_window = GTK_WINDOW (user_data);
   557   GtkFileChooserNative *native;
   558   GtkFileChooser *chooser;
   559   GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;
   562   native = gtk_file_chooser_native_new (
"Save File",
   567   chooser = GTK_FILE_CHOOSER (native);
   569   gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE);
   571   gtk_file_chooser_set_current_name (chooser, (
"config-attributes.txt"));
   573   res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native));
   574   if (res == GTK_RESPONSE_ACCEPT)
   578       filename = gtk_file_chooser_get_filename (chooser);
   585   g_object_unref (native);
   597   GtkWindow *parent_window = GTK_WINDOW (user_data);
   598   GtkFileChooserNative *native;
   599   GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
   602   native = gtk_file_chooser_native_new (
"Open File",
   608   res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native));
   609   if (res == GTK_RESPONSE_ACCEPT)
   612       GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
   613       filename = gtk_file_chooser_get_filename (chooser);
   620   g_object_unref (native);
   630   GtkTreeViewColumn *col;
   631   GtkCellRenderer *renderer;
   634   view = gtk_tree_view_new ();
   635   g_object_set (view, 
"has-tooltip", TRUE, (
char*) 0);
   638   gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (view), GTK_TREE_VIEW_GRID_LINES_BOTH);
   641   col = gtk_tree_view_column_new ();
   642   gtk_tree_view_column_set_title (col, 
"Object Attributes");
   643   gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
   644   renderer = gtk_cell_renderer_text_new ();
   645   gtk_tree_view_column_pack_start (col, renderer, TRUE);
   647   g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
   649   col = gtk_tree_view_column_new ();
   650   gtk_tree_view_column_set_title (col, 
"Attribute Value");
   651   gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
   652   renderer = gtk_cell_renderer_text_new ();
   654   gtk_tree_view_column_pack_start (col, renderer, TRUE);
   657   gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (model));
   659   g_object_unref (model); 
   669                                      GtkTreeIter *iter, gpointer 
data)
   672   gtk_tree_model_get (GTK_TREE_MODEL (model), iter, 
COL_TYPEID, &node, -1);
 std::string GetName(void) const
Get the name. 
A class to enable saving of configuration store in a raw text file. 
std::string name
node name 
Smart pointer class similar to boost::intrusive_ptr. 
bool SetDefaultFailSafe(std::string fullName, const AttributeValue &value)
virtual void Attributes(void)
Load or save the attributes values. 
Hold variables of type string. 
enum ns3::ModelTypeid::@3 type
node type 
void cell_data_function_col_1(GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
This function includes the name of the attribute or the editable value in the second column...
virtual void SetFilename(std::string filename)
Set the file name. 
Ptr< Object > GetObject(void) const
Get the Object referenced by the PointerValue. 
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
int get_col_number_from_tree_view_column(GtkTreeViewColumn *col)
This function gets the column number 0 or 1 from the mouse click. 
bool HasParent(void) const
Check if this TypeId has a parent. 
virtual void SetFilename(std::string filename)
Set the file name. 
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. 
void cell_edited_callback(GtkCellRendererText *cell, gchar *path_string, gchar *new_text, gpointer user_data)
This is the callback called when the value of an attribute is changed. 
TypeId GetParent(void) const
Get the parent of this TypeId. 
virtual bool HasUnderlyingTypeInformation(void) const =0
enum ns3::ModelNode::@1 type
node type 
std::string defaultValue
TypeId default value. 
std::string Get(void) const
  
virtual std::string GetValueTypeName(void) const =0
void cell_data_function_col_1_config_default(GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
This function writes data in the second column, this data is going to be editable if it is a NODE_ATT...
gboolean cell_tooltip_callback(GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, GtkTooltip *tooltip, gpointer user_data)
This function displays the tooltip for an object, pointer, vector item or an attribute. 
gboolean cell_tooltip_callback_config_default(GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, GtkTooltip *tooltip, gpointer user_data)
This function is used to display a tooltip whenever the user puts the mouse over a type ID or an attr...
Ptr< Object > object
the object 
std::string name
TypeId name. 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
void cell_data_function_col_0_config_default(GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
This function writes the attribute or typeid name in the column 0. 
Hold objects of type Ptr<T>. 
GtkWidget * create_view_config_default(GtkTreeStore *model)
This is the main view opening the widget, getting tooltips and drawing the tree of attributes...
std::string GetAttributeFullName(std::size_t i) const
Get the Attribute name by index. 
virtual void Attributes(void)
Load or save the attributes values. 
GtkWidget * create_view(GtkTreeStore *model)
This is the main view opening the widget, getting tooltips and drawing the tree of attributes...
A class used in the implementation of the GtkConfigStore. 
virtual void Default(void)
Load or save the default values. 
TypeId tid
The TypeId object and if it is an attribute, it's the TypeId object of the attribute. 
void cell_edited_callback_config_default(GtkCellRendererText *cell, gchar *path_string, gchar *new_text, gpointer user_data)
This functions is called whenever there is a change in the value of an attribute If the input value i...
void cell_data_function_col_0(GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
This function includes the name of the object, pointer, vector or vector item in the first column...
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object. 
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...
std::size_t GetAttributeN(void) const
Get the number of attributes. 
struct TypeId::AttributeInformation GetAttribute(std::size_t i) const
Get Attribute information by index. 
void exit_clicked_callback(GtkButton *button, gpointer user_data)
Exit the window when exit button is pressed. 
gboolean clean_model_callback(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
Delete the tree model contents. 
uint32_t index
stores the index of the attribute in list of attributes for a given TypeId 
gboolean clean_model_callback_config_default(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
Delete the tree model contents. 
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_attribute(GtkButton *button, gpointer user_data)
If the user presses the button load, it will load the config file into memory for the Attributes...
A class used in the implementation of the GtkConfigStore. 
virtual std::string GetUnderlyingTypeInformation(void) const =0
gboolean delete_event_callback(GtkWidget *widget, GdkEvent *event, gpointer user_data)
Exit the application. 
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful. 
A class to enable loading of configuration store from a raw text file. 
a unique identifier for an interface. 
void GetAttribute(std::string name, AttributeValue &value) const
Get the value of an attribute, raising fatal errors if unsuccessful. 
virtual void Default(void)
Load or save the default values.