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
smart pointer class similar to boost::intrusive_ptr
std::string Get(void) const
virtual TypeId GetInstanceTypeId(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
#define NS_ASSERT(condition)
TypeId GetParent(void) const
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
bool SetDefaultFailSafe(std::string fullName, const AttributeValue &value)
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
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.
GtkWidget * create_view_config_default(GtkTreeStore *model)
This is the main view opening the widget, getting tooltips and drawing the tree of attributes...
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
void GetAttribute(std::string name, AttributeValue &value) const
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
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
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)
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)