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.
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...
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)