21 #include "ns3/config.h" 
   22 #include "ns3/string.h" 
   23 #include "ns3/pointer.h" 
   32                           GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 
   35   gtk_tree_model_get (model, iter, 
COL_NODE, &node, -1);
 
   40       g_object_set (renderer, 
"text", str.
Get ().c_str (), (
char*) 0);
 
   41       g_object_set (renderer, 
"editable", TRUE, (
char*) 0);
 
   45       g_object_set (renderer, 
"text", 
"", (
char*) 0);
 
   46       g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
 
   55                           GtkTreeIter *iter, gpointer user_data)
 
   58   gtk_tree_model_get (model, iter, 
COL_NODE, &node, -1);
 
   59   g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
 
   66       g_object_set (renderer, 
"text", node->
name.c_str (), (
char*) 0);
 
   69       g_object_set (renderer, 
"text", node->
name.c_str (), (
char*) 0);
 
   73         std::stringstream oss;
 
   75         g_object_set (renderer, 
"text", oss.str ().c_str (), (
char*) 0);
 
   79       g_object_set (renderer, 
"text", node->
name.c_str (), (
char*) 0);
 
   89                       gchar *new_text, gpointer user_data)
 
   91   GtkTreeModel *model = GTK_TREE_MODEL (user_data);
 
   93   gtk_tree_model_get_iter_from_string (model, &iter, path_string);
 
   95   gtk_tree_model_get (model, &iter, 
COL_NODE, &node, -1);
 
  109   g_return_val_if_fail (col != 0, -1);
 
  110   g_return_val_if_fail (col->tree_view != 0, -1);
 
  111   cols = gtk_tree_view_get_columns (GTK_TREE_VIEW (col->tree_view));
 
  112   num = g_list_index (cols, (gpointer) col);
 
  123                        GtkTooltip *tooltip, gpointer user_data)
 
  127   GtkTreeViewColumn * column;
 
  128   if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (widget), &x, &y,
 
  129                                           keyboard_tip, &model, 0, &iter))
 
  133   if (!gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), x, y, 0, &column, 0, 0))
 
  140   gtk_tree_model_get (model, &iter, 
COL_NODE, &node, -1);
 
  147           std::string tip = 
"This object is of type " 
  149           gtk_tooltip_set_text (tooltip, tip.c_str ());
 
  158           std::string tip = 
"This object is of type " 
  160           gtk_tooltip_set_text (tooltip, tip.c_str ());
 
  169           std::string tip = 
"This object is of type " 
  171           gtk_tooltip_set_text (tooltip, tip.c_str ());
 
  177         uint32_t attrIndex = 0;
 
  194             gtk_tooltip_set_text (tooltip, tip.c_str ());
 
  206             gtk_tooltip_set_text (tooltip, tip.c_str ());
 
  222   GtkTreeViewColumn *col;
 
  223   GtkCellRenderer *renderer;
 
  226   view = gtk_tree_view_new ();
 
  227   g_object_set (view, 
"has-tooltip", TRUE, (
char*) 0);
 
  230   gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (view), GTK_TREE_VIEW_GRID_LINES_BOTH);
 
  231   gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE);
 
  233   col = gtk_tree_view_column_new ();
 
  234   gtk_tree_view_column_set_title (col, 
"Object Attributes");
 
  235   gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
 
  236   renderer = gtk_cell_renderer_text_new ();
 
  237   gtk_tree_view_column_pack_start (col, renderer, TRUE);
 
  239   g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
 
  241   col = gtk_tree_view_column_new ();
 
  242   gtk_tree_view_column_set_title (col, 
"Attribute Value");
 
  243   gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
 
  244   renderer = gtk_cell_renderer_text_new ();
 
  246   gtk_tree_view_column_pack_start (col, renderer, TRUE);
 
  249   gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (model));
 
  251   g_object_unref (model); 
 
  263   GtkWidget *parent_window = GTK_WIDGET (user_data);
 
  266   dialog = gtk_file_chooser_dialog_new (
"Save File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_SAVE,
 
  267                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
 
  268                                         GTK_RESPONSE_ACCEPT, (
char *) 0);
 
  269   gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog),
 
  272   gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), 
"config.txt");
 
  274   if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
 
  278       filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 
  285   gtk_widget_destroy (dialog);
 
  294   GtkWidget *parent_window = GTK_WIDGET (user_data);
 
  297   dialog = gtk_file_chooser_dialog_new (
"Open File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_OPEN,
 
  298                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
 
  299                                         GTK_RESPONSE_ACCEPT, (
char *) 0);
 
  301   if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
 
  305       filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 
  311   gtk_widget_destroy (dialog);
 
  321   gtk_widget_hide (GTK_WIDGET (user_data));
 
  331   gtk_widget_hide (GTK_WIDGET (user_data));
 
  340                       GtkTreeIter *iter, gpointer 
data)
 
  343   gtk_tree_model_get (GTK_TREE_MODEL (model), iter, 
COL_NODE, &node, -1);
 
  357                                          GtkTreeModel *model, GtkTreeIter *iter,
 
  361   gtk_tree_model_get (model, iter, 
COL_TYPEID, &node, -1);
 
  364       g_object_set (renderer, 
"text", node->
defaultValue.c_str (), (
char*) 0);
 
  365       g_object_set (renderer, 
"editable", TRUE, (
char*) 0);
 
  369       g_object_set (renderer, 
"text", 
"", (
char*) 0);
 
  370       g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
 
  378                                          GtkTreeIter *iter, gpointer user_data)
 
  381   gtk_tree_model_get (model, iter, 
COL_NODE, &node, -1);
 
  382   g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
 
  386       g_object_set (renderer, 
"text", node->
tid.
GetName ().c_str (), (
char*) 0);
 
  389       g_object_set (renderer, 
"text", node->
name.c_str (), (
char*) 0);
 
  402                                      gchar *new_text, gpointer user_data)
 
  404   GtkTreeModel *model = GTK_TREE_MODEL (user_data);
 
  406   gtk_tree_model_get_iter_from_string (model, &iter, path_string);
 
  408   gtk_tree_model_get (model, &iter, 
COL_NODE, &node, -1);
 
  424                                       gboolean keyboard_tip, GtkTooltip *tooltip, gpointer user_data)
 
  428   GtkTreeViewColumn * column;
 
  429   if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (widget), &x, &y,
 
  430                                           keyboard_tip, &model, 0, &iter))
 
  434   if (!gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), x, y, 0, &column, 0, 0))
 
  441   gtk_tree_model_get (model, &iter, 
COL_NODE, &node, -1);
 
  448           std::string tip = 
"This object is of type " + node->
tid.
GetName ();
 
  449           gtk_tooltip_set_text (tooltip, tip.c_str ());
 
  455         uint32_t attrIndex = node->
index;
 
  459             gtk_tooltip_set_text (tooltip, tip.c_str ());
 
  470             gtk_tooltip_set_text (tooltip, tip.c_str ());
 
  486   GtkWidget *parent_window = GTK_WIDGET (user_data);
 
  489   dialog = gtk_file_chooser_dialog_new (
"Save File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_SAVE,
 
  490                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
 
  491                                         GTK_RESPONSE_ACCEPT, (
char *) 0);
 
  492   gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog),
 
  495   gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), 
"config.txt");
 
  497   if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
 
  501       filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 
  508   gtk_widget_destroy (dialog);
 
  517   GtkWidget *parent_window = GTK_WIDGET (user_data);
 
  520   dialog = gtk_file_chooser_dialog_new (
"Open File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_OPEN,
 
  521                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
 
  522                                         GTK_RESPONSE_ACCEPT, (
char *) 0);
 
  524   if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
 
  528       filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 
  534   gtk_widget_destroy (dialog);
 
  544   GtkTreeViewColumn *col;
 
  545   GtkCellRenderer *renderer;
 
  548   view = gtk_tree_view_new ();
 
  549   g_object_set (view, 
"has-tooltip", TRUE, (
char*) 0);
 
  552   gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (view), GTK_TREE_VIEW_GRID_LINES_BOTH);
 
  553   gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE);
 
  555   col = gtk_tree_view_column_new ();
 
  556   gtk_tree_view_column_set_title (col, 
"Object Attributes");
 
  557   gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
 
  558   renderer = gtk_cell_renderer_text_new ();
 
  559   gtk_tree_view_column_pack_start (col, renderer, TRUE);
 
  561   g_object_set (renderer, 
"editable", FALSE, (
char*) 0);
 
  563   col = gtk_tree_view_column_new ();
 
  564   gtk_tree_view_column_set_title (col, 
"Attribute Value");
 
  565   gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
 
  566   renderer = gtk_cell_renderer_text_new ();
 
  568   gtk_tree_view_column_pack_start (col, renderer, TRUE);
 
  571   gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (model));
 
  573   g_object_unref (model); 
 
  583                                      GtkTreeIter *iter, gpointer 
data)
 
  586   gtk_tree_model_get (GTK_TREE_MODEL (model), iter, 
COL_TYPEID, &node, -1);
 
uint32_t GetAttributeN(void) const 
Get the number of attributes. 
 
Smart pointer class similar to boost::intrusive_ptr. 
 
bool SetDefaultFailSafe(std::string fullName, const AttributeValue &value)
 
std::string Get(void) const 
 
virtual void Attributes(void)
 
Hold variables of type string. 
 
enum ns3::ModelTypeid::@3 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)
 
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...
 
TypeId GetParent(void) const 
Get the parent of this TypeId. 
 
int get_col_number_from_tree_view_column(GtkTreeViewColumn *col)
This function gets the column number 0 or 1 from the mouse click. 
 
virtual void SetFilename(std::string filename)
 
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. 
 
virtual bool HasUnderlyingTypeInformation(void) const =0
 
enum ns3::ModelNode::@1 type
 
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. 
 
bool HasParent(void) const 
Check if this TypeId has a parent. 
 
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...
 
void load_clicked(GtkButton *button, gpointer user_data)
If the user presses the button load, it will load the config file into memory. 
 
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. 
 
GtkWidget * create_view_config_default(GtkTreeStore *model)
This is the main view opening the widget, getting tooltips and drawing the tree of attributes...
 
virtual TypeId GetInstanceTypeId(void) const 
Implement the GetInstanceTypeId method defined in ObjectBase. 
 
virtual void Attributes(void)
 
GtkWidget * create_view(GtkTreeStore *model)
This is the main view opening the widget, getting tooltips and drawing the tree of attributes...
 
virtual void Default(void)
 
std::string GetName(void) const 
Get the name. 
 
void GetAttribute(std::string name, AttributeValue &value) const 
Get the value of an attribute, raising fatal errors if unsuccessful. 
 
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...
 
void load_clicked_default(GtkButton *button, gpointer user_data)
If the user presses the button load, it will load the config file into memory. 
 
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. 
 
gboolean clean_model_callback_config_default(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
Delete the tree model contents. 
 
std::string GetAttributeFullName(uint32_t i) const 
Get the Attribute name by index. 
 
void save_clicked_default(GtkButton *button, gpointer user_data)
This is the action done when the user presses on the save button. 
 
struct TypeId::AttributeInformation GetAttribute(uint32_t i) const 
Get Attribute information by index. 
 
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 unique identifier for an interface. 
 
void save_clicked(GtkButton *button, gpointer user_data)
This is the action done when the user presses on the save button. 
 
virtual void Default(void)