From fda2c4f87d6e98d9a2f49764e46e19dca4a994be Mon Sep 17 00:00:00 2001 From: Tommaso Pecorella Date: Fri, 25 Dec 2020 00:19:20 +0000 Subject: [PATCH] config-store: GtkConfig bug fixes --- doc/manual/Makefile | 2 + ...tk-config-lena-dual-stripe-device-view.png | Bin 0 -> 54451 bytes ...k-config-lena-dual-stripe-eNB-tx-power.png | Bin 0 -> 59775 bytes doc/manual/source/attributes.rst | 105 +++++-- src/config-store/model/display-functions.cc | 284 +++++++++++------- src/config-store/model/display-functions.h | 26 +- src/config-store/model/gtk-config-store.cc | 4 +- 7 files changed, 271 insertions(+), 150 deletions(-) create mode 100644 doc/manual/figures/gtk-config-lena-dual-stripe-device-view.png create mode 100644 doc/manual/figures/gtk-config-lena-dual-stripe-eNB-tx-power.png diff --git a/doc/manual/Makefile b/doc/manual/Makefile index 4298d8fdf..58ac1cd8b 100644 --- a/doc/manual/Makefile +++ b/doc/manual/Makefile @@ -64,6 +64,8 @@ SOURCEFIGS = \ figures/plot-2d.png \ figures/plot-2d-with-error-bars.png \ figures/plot-3d.png \ + figures/gtk-config-lena-dual-stripe-device-view.png \ + figures/gtk-config-lena-dual-stripe-eNB-tx-power.png \ ${SRC}/stats/doc/Stat-framework-arch.png \ ${SRC}/stats/doc/Wifi-default.png \ ${SRC}/stats/doc/dcf-overview.dia \ diff --git a/doc/manual/figures/gtk-config-lena-dual-stripe-device-view.png b/doc/manual/figures/gtk-config-lena-dual-stripe-device-view.png new file mode 100644 index 0000000000000000000000000000000000000000..186b51e4cc4b5198517dc52e5e42502dea27d60a GIT binary patch literal 54451 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 literal 0 HcmV?d00001 diff --git a/doc/manual/figures/gtk-config-lena-dual-stripe-eNB-tx-power.png b/doc/manual/figures/gtk-config-lena-dual-stripe-eNB-tx-power.png new file mode 100644 index 0000000000000000000000000000000000000000..cd76e79bd186407b8c4dc66783092b091b06c0b0 GIT binary patch literal 59775 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 z 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

8}x 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 literal 0 HcmV?d00001 diff --git a/doc/manual/source/attributes.rst b/doc/manual/source/attributes.rst index f53c2561a..dacffb881 100644 --- a/doc/manual/source/attributes.rst +++ b/doc/manual/source/attributes.rst @@ -27,29 +27,29 @@ In the course of this chapter we will discuss the various ways to set or modify the values used by |ns3| model objects. In increasing order of specificity, these are: -+---------------------------------------+-------------------------------------+ -| Method | Scope | -+=======================================+=====================================+ -| Default Attribute values set when | Affect all instances of the class. | -| Attributes are defined in | | -| :cpp:func:`GetTypeId ()`. | | -+---------------------------------------+-------------------------------------+ -| | :cpp:class:`CommandLine` | Affect all future instances. | -| | :cpp:func:`Config::SetDefault()` | | -| | :cpp:class:`ConfigStore` | | -+---------------------------------------+-------------------------------------+ -| :cpp:class:`ObjectFactory` | Affects all instances created with | -| | the factory. | -+---------------------------------------+-------------------------------------+ -| Helper methods with (string/ | Affects all instances created by | -| AttributeValue) parameter pairs | the helper. | -+---------------------------------------+-------------------------------------+ -| | :cpp:func:`MyClass::SetX ()` | Alters this particular instance. | -| | :cpp:func:`Object::SetAttribute ()` | Generally this is the only form | -| | :cpp:func:`Config::Set()` | which can be scheduled to alter | -| | an instance once the simulation | -| | is running. | -+---------------------------------------+-------------------------------------+ ++-------------------------------------+------------------------------------+ +| Method | Scope | ++=====================================+====================================+ +| Default Attribute values set when | Affect all instances of the class. | +| Attributes are defined in | | +| :cpp:func:`GetTypeId ()`. | | ++-------------------------------------+------------------------------------+ +| :cpp:class:`CommandLine` | Affect all future instances. | +| :cpp:func:`Config::SetDefault()` | | +| :cpp:class:`ConfigStore` | | ++-------------------------------------+------------------------------------+ +| :cpp:class:`ObjectFactory` | Affects all instances created with | +| | the factory. | ++-------------------------------------+------------------------------------+ +| Helper methods with (string/ | Affects all instances created by | +| AttributeValue) parameter pairs | the helper. | ++-------------------------------------+------------------------------------+ +| :cpp:func:`MyClass::SetX ()` | Alters this particular instance. | +| :cpp:func:`Object::SetAttribute ()` | Generally this is the only form | +| :cpp:func:`Config::Set()` | which can be scheduled to alter | +| | an instance once the simulation | +| | is running. | ++-------------------------------------+------------------------------------+ By "specificity" we mean that methods in later rows in the table override the values set by, and typically affect fewer instances than, @@ -1158,20 +1158,61 @@ write out the resulting attributes to a separate file called Simulator::Run (); } +ConfigStore use cases (pre- and post-simulation) +++++++++++++++++++++++++++++++++++++++++++++++++ + +It is worth stressing that ConfigStore can be used for different purposes, and this is +reflected in where in the script ConfigStore is invoked. + +The typical use-cases are: + +* Change an Object default attributes +* Inspect/change a *specific* Object attributes +* Inspect the simulation Objects and their attributes + +As a matter of fact, some Objects might be created when the simulation starts. +Hence, ConfigStore will not "report" their attributes if invoked earlier in the code. + +A typical workflow might involve running the simulation, calling ConfigStore +at the end of the simulation (after ``Simulator::Run ()`` and before ``Simulator::Destroy ()``) +This will show all the attributes in the Objects, both those with default values, and those +with values changed during the simulation execution. + +To change these values, you'll need to either change the default (class-wide) attribute values +(in this case call ConfigStore before the Object creation), or specific object attribute +(in this case call ConfigStore after the Object creation, typically just before ``Simulator::Run ()``. + + ConfigStore GUI +++++++++++++++ There is a GTK-based front end for the ConfigStore. This allows users to use a -GUI to access and change variables. Screenshots of this feature are available -in the `|ns3| Overview `_ -presentation. +GUI to access and change variables. -To use this feature, one must install ``libgtk`` and ``libgtk-dev``; an example +Some screenshots are presented here. They are the result of using GtkConfig on +``src/lte/examples/lena-dual-stripe.cc`` after ``Simulator::Run ()``. + +.. _GtkConfig: + +.. figure:: figures/gtk-config-lena-dual-stripe-device-view.* + +.. figure:: figures/gtk-config-lena-dual-stripe-eNB-tx-power.* + + +To use this feature, one must install ``libgtk-3-dev``; an example Ubuntu installation command is: .. sourcecode:: bash - $ sudo apt-get install libgtk2.0-0 libgtk2.0-dev + $ sudo apt-get install libgtk-3-dev + +On a MacOS it is possible to install GTK-3 using `Homebrew `_. +The installation command is: + +.. sourcecode:: bash + + $ brew install gtk+3 adwaita-icon-theme + To check whether it is configured or not, check the output of the step: @@ -1183,7 +1224,7 @@ To check whether it is configured or not, check the output of the step: Python Bindings : enabled Python API Scanning Support : enabled NS-3 Click Integration : enabled - GtkConfigStore : not enabled (library 'gtk+-2.0 >= 2.12' not found) + GtkConfigStore : not enabled (library 'gtk+-3.0 >= 3.0' not found) In the above example, it was not enabled, so it cannot be used until a suitable version is installed and: @@ -1206,3 +1247,9 @@ are no :cpp:class:`ConfigStore` attributes involved:: Now, when you run the script, a GUI should pop up, allowing you to open menus of attributes on different nodes/objects, and then launch the simulation execution when you are done. + +Note that "launch the simulation" means to proceed with the simulation script. +If GtkConfigStore has been called after ``Simulator::Run ()`` the simulation will +not be started again - it will just end. + + diff --git a/src/config-store/model/display-functions.cc b/src/config-store/model/display-functions.cc index d1f28e558..5194e1352 100644 --- a/src/config-store/model/display-functions.cc +++ b/src/config-store/model/display-functions.cc @@ -16,6 +16,7 @@ * Authors: Faker Moatamri * Mathieu Lacage */ + #include "display-functions.h" #include "raw-text-config.h" #include "ns3/config.h" @@ -31,8 +32,12 @@ void cell_data_function_col_1 (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { - ModelNode *node; + ModelNode *node = 0; gtk_tree_model_get (model, iter, COL_NODE, &node, -1); + if (!node) + { + return; + } if (node->type == ModelNode::NODE_ATTRIBUTE) { StringValue str; @@ -54,11 +59,16 @@ void cell_data_function_col_0 (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { - ModelNode *node; + ModelNode *node = 0; gtk_tree_model_get (model, iter, COL_NODE, &node, -1); g_object_set (renderer, "editable", FALSE, (char*) 0); - switch (node->type) + if (!node) { + return; + } + + switch (node->type) + { case ModelNode::NODE_OBJECT: g_object_set (renderer, "text", node->object->GetInstanceTypeId ().GetName ().c_str (), (char*) 0); break; @@ -78,7 +88,7 @@ cell_data_function_col_0 (GtkTreeViewColumn *col, GtkCellRenderer *renderer, Gtk case ModelNode::NODE_ATTRIBUTE: g_object_set (renderer, "text", node->name.c_str (), (char*) 0); break; - } + } } /** @@ -91,8 +101,12 @@ cell_edited_callback (GtkCellRendererText *cell, gchar *path_string, GtkTreeModel *model = GTK_TREE_MODEL (user_data); GtkTreeIter iter; gtk_tree_model_get_iter_from_string (model, &iter, path_string); - ModelNode *node; + ModelNode *node = 0; gtk_tree_model_get (model, &iter, COL_NODE, &node, -1); + if (!node) + { + return; + } NS_ASSERT (node->type == ModelNode::NODE_ATTRIBUTE); node->object->SetAttribute (node->name, StringValue (new_text)); } @@ -136,16 +150,20 @@ cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, } int col = get_col_number_from_tree_view_column (column); - ModelNode *node; + ModelNode *node = 0; gtk_tree_model_get (model, &iter, COL_NODE, &node, -1); + if (!node) + { + return FALSE; + } switch (node->type) - { + { case ModelNode::NODE_OBJECT: if (col == 0) { std::string tip = "This object is of type " - + node->object->GetInstanceTypeId ().GetName (); + + node->object->GetInstanceTypeId ().GetName (); gtk_tooltip_set_text (tooltip, tip.c_str ()); return TRUE; } @@ -156,7 +174,7 @@ cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, PointerValue ptr; node->object->GetAttribute (node->name, ptr); std::string tip = "This object is of type " - + ptr.GetObject ()->GetInstanceTypeId ().GetName (); + + ptr.GetObject ()->GetInstanceTypeId ().GetName (); gtk_tooltip_set_text (tooltip, tip.c_str ()); return TRUE; } @@ -167,7 +185,7 @@ cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, if (col == 0) { std::string tip = "This object is of type " - + node->object->GetInstanceTypeId ().GetName (); + + node->object->GetInstanceTypeId ().GetName (); gtk_tooltip_set_text (tooltip, tip.c_str ()); return TRUE; } @@ -177,7 +195,7 @@ cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, uint32_t attrIndex = 0; TypeId tid; for (tid = node->object->GetInstanceTypeId (); tid.HasParent (); tid - = tid.GetParent ()) + = tid.GetParent ()) { for (uint32_t i = 0; i < tid.GetAttributeN (); ++i) { @@ -188,7 +206,7 @@ cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, } } } -out: if (col == 0) + out: if (col == 0) { std::string tip = tid.GetAttribute (attrIndex).help; gtk_tooltip_set_text (tooltip, tip.c_str ()); @@ -208,7 +226,7 @@ out: if (col == 0) return TRUE; } break; - } + } return FALSE; } @@ -253,67 +271,6 @@ create_view (GtkTreeStore *model) return view; } -/** - * This is the action done when the user presses on the save button. - * It will save the config to a file. - * - * \param button (unused) - * \param user_data - */ -void -save_clicked (GtkButton *button, gpointer user_data) -{ - GtkWidget *parent_window = GTK_WIDGET (user_data); - GtkWidget *dialog; - - dialog = gtk_file_chooser_dialog_new ("Save File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_SAVE, - "_Cancel", GTK_RESPONSE_CANCEL, "_Save", - GTK_RESPONSE_ACCEPT, (char *) 0); - gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), - TRUE); - - gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "config.txt"); - - if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); - RawTextConfigSave config; - config.SetFilename (filename); - config.Attributes (); - g_free (filename); - } - - gtk_widget_destroy (dialog); -} - -/** - * If the user presses the button load, it will load the config file into memory. - */ -void -load_clicked (GtkButton *button, gpointer user_data) -{ - GtkWidget *parent_window = GTK_WIDGET (user_data); - GtkWidget *dialog; - - dialog = gtk_file_chooser_dialog_new ("Open File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_OPEN, - "_Cancel", GTK_RESPONSE_CANCEL, "_Open", - GTK_RESPONSE_ACCEPT, (char *) 0); - - if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); - RawTextConfigLoad config; - config.SetFilename (filename); - config.Attributes (); - } - - gtk_widget_destroy (dialog); -} - /** * Exit the window when exit button is pressed */ @@ -342,9 +299,12 @@ gboolean clean_model_callback (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { - ModelNode *node; + ModelNode *node = 0; gtk_tree_model_get (GTK_TREE_MODEL (model), iter, COL_NODE, &node, -1); - delete node; + if (node) + { + delete node; + } gtk_tree_store_set (GTK_TREE_STORE (model), iter, COL_NODE, (ModelNode*) 0, -1); return FALSE; @@ -360,8 +320,12 @@ cell_data_function_col_1_config_default (GtkTreeViewColumn *col, GtkCellRenderer GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { - ModelTypeid *node; + ModelTypeid *node = 0; gtk_tree_model_get (model, iter, COL_TYPEID, &node, -1); + if (!node) + { + return; + } if (node->type == ModelTypeid::NODE_ATTRIBUTE) { g_object_set (renderer, "text", node->defaultValue.c_str (), (char*) 0); @@ -380,18 +344,23 @@ void cell_data_function_col_0_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { - ModelTypeid *node; + ModelTypeid *node = 0; gtk_tree_model_get (model, iter, COL_NODE, &node, -1); g_object_set (renderer, "editable", FALSE, (char*) 0); - switch (node->type) + if (!node) { + return; + } + + switch (node->type) + { case ModelTypeid::NODE_TYPEID: g_object_set (renderer, "text", node->tid.GetName ().c_str (), (char*) 0); break; case ModelTypeid::NODE_ATTRIBUTE: g_object_set (renderer, "text", node->name.c_str (), (char*) 0); break; - } + } } @@ -407,8 +376,12 @@ cell_edited_callback_config_default (GtkCellRendererText *cell, gchar *path_stri GtkTreeModel *model = GTK_TREE_MODEL (user_data); GtkTreeIter iter; gtk_tree_model_get_iter_from_string (model, &iter, path_string); - ModelTypeid *node; + ModelTypeid *node = 0; gtk_tree_model_get (model, &iter, COL_NODE, &node, -1); + if (!node) + { + return; + } NS_ASSERT (node->type == ModelTypeid::NODE_ATTRIBUTE); if (Config::SetDefaultFailSafe (node->tid.GetAttributeFullName (node->index),StringValue (new_text))) { @@ -448,11 +421,15 @@ cell_tooltip_callback_config_default (GtkWidget *widget, gint x, gint y, } int col = get_col_number_from_tree_view_column (column); - ModelTypeid *node; + ModelTypeid *node = 0; gtk_tree_model_get (model, &iter, COL_NODE, &node, -1); + if (!node) + { + return FALSE; + } switch (node->type) - { + { case ModelTypeid::NODE_TYPEID: if (col == 0) { @@ -483,7 +460,7 @@ cell_tooltip_callback_config_default (GtkWidget *widget, gint x, gint y, return TRUE; } break; - } + } return FALSE; } @@ -497,29 +474,37 @@ cell_tooltip_callback_config_default (GtkWidget *widget, gint x, gint y, void save_clicked_default (GtkButton *button, gpointer user_data) { - GtkWidget *parent_window = GTK_WIDGET (user_data); - GtkWidget *dialog; + GtkWindow *parent_window = GTK_WINDOW (user_data); - dialog = gtk_file_chooser_dialog_new ("Save File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_SAVE, - "_Cancel", GTK_RESPONSE_CANCEL, "_Save", - GTK_RESPONSE_ACCEPT, (char *) 0); - gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), - TRUE); + GtkFileChooserNative *native; + GtkFileChooser *chooser; + GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE; + gint res; - gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "config.txt"); + native = gtk_file_chooser_native_new ("Save File", + parent_window, + action, + "_Save", + "_Cancel"); + chooser = GTK_FILE_CHOOSER (native); - if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) + gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE); + + gtk_file_chooser_set_current_name (chooser, ("config-defaults.txt")); + + res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native)); + if (res == GTK_RESPONSE_ACCEPT) { char *filename; - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); + filename = gtk_file_chooser_get_filename (chooser); RawTextConfigSave config; config.SetFilename (filename); config.Default (); g_free (filename); } - gtk_widget_destroy (dialog); + g_object_unref (native); } /** @@ -531,24 +516,108 @@ save_clicked_default (GtkButton *button, gpointer user_data) void load_clicked_default (GtkButton *button, gpointer user_data) { - GtkWidget *parent_window = GTK_WIDGET (user_data); - GtkWidget *dialog; + GtkWindow *parent_window = GTK_WINDOW (user_data); + GtkFileChooserNative *native; + GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; + gint res; - dialog = gtk_file_chooser_dialog_new ("Open File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_OPEN, - "_Cancel", GTK_RESPONSE_CANCEL, "_Open", - GTK_RESPONSE_ACCEPT, (char *) 0); + native = gtk_file_chooser_native_new ("Open File", + parent_window, + action, + "_Open", + "_Cancel"); - if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) + res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native)); + if (res == GTK_RESPONSE_ACCEPT) { char *filename; - - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); + GtkFileChooser *chooser = GTK_FILE_CHOOSER (native); + filename = gtk_file_chooser_get_filename (chooser); RawTextConfigLoad config; config.SetFilename (filename); config.Default (); + g_free (filename); } - gtk_widget_destroy (dialog); + g_object_unref (native); +} + +/** + * This is the action done when the user presses on the save button. + * It will save the config to a file. + * + * \param button (unused) + * \param user_data + */ +void +save_clicked_attribute (GtkButton *button, gpointer user_data) +{ + GtkWindow *parent_window = GTK_WINDOW (user_data); + + GtkFileChooserNative *native; + GtkFileChooser *chooser; + GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE; + gint res; + + native = gtk_file_chooser_native_new ("Save File", + parent_window, + action, + "_Save", + "_Cancel"); + chooser = GTK_FILE_CHOOSER (native); + + gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE); + + gtk_file_chooser_set_current_name (chooser, ("config-attributes.txt")); + + res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native)); + if (res == GTK_RESPONSE_ACCEPT) + { + char *filename; + + filename = gtk_file_chooser_get_filename (chooser); + RawTextConfigSave config; + config.SetFilename (filename); + config.Attributes (); + g_free (filename); + } + + g_object_unref (native); +} + +/** + * If the user presses the button load, it will load the config file into memory. + * + * \param button (unused) + * \param user_data + */ +void +load_clicked_attribute (GtkButton *button, gpointer user_data) +{ + GtkWindow *parent_window = GTK_WINDOW (user_data); + GtkFileChooserNative *native; + GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; + gint res; + + native = gtk_file_chooser_native_new ("Open File", + parent_window, + action, + "_Open", + "_Cancel"); + + res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native)); + if (res == GTK_RESPONSE_ACCEPT) + { + char *filename; + GtkFileChooser *chooser = GTK_FILE_CHOOSER (native); + filename = gtk_file_chooser_get_filename (chooser); + RawTextConfigLoad config; + config.SetFilename (filename); + config.Attributes (); + g_free (filename); + } + + g_object_unref (native); } /** @@ -599,9 +668,12 @@ gboolean clean_model_callback_config_default (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { - ModelTypeid *node; + ModelTypeid *node = 0; gtk_tree_model_get (GTK_TREE_MODEL (model), iter, COL_TYPEID, &node, -1); - delete node; + if (node) + { + delete node; + } gtk_tree_store_set (GTK_TREE_STORE (model), iter, COL_TYPEID, (ModelTypeid*) 0, -1); return FALSE; } diff --git a/src/config-store/model/display-functions.h b/src/config-store/model/display-functions.h index 467d301de..2d067258e 100644 --- a/src/config-store/model/display-functions.h +++ b/src/config-store/model/display-functions.h @@ -63,17 +63,6 @@ cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, */ GtkWidget * create_view (GtkTreeStore *model); -/** - * This is the action done when the user presses on the save button. - * It will save the config to a file. - */ -void -save_clicked (GtkButton *button, gpointer user_data); -/** - * If the user presses the button load, it will load the config file into memory. - */ -void -load_clicked (GtkButton *button, gpointer user_data); /** * Exit the window when exit button is pressed */ @@ -106,16 +95,27 @@ void cell_data_function_col_0_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data); /** - * This is the action done when the user presses on the save button. + * This is the action done when the user presses on the save button for the Default attributes. * It will save the config to a file. */ void save_clicked_default (GtkButton *button, gpointer user_data); /** - * If the user presses the button load, it will load the config file into memory. + * If the user presses the button load, it will load the config file into memory for the Default attributes. */ void load_clicked_default (GtkButton *button, gpointer user_data); +/** + * This is the action done when the user presses on the save button for the Attributes. + * It will save the config to a file. + */ +void +save_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. + */ +void +load_clicked_attribute (GtkButton *button, gpointer user_data); /** * This functions is called whenever there is a change in the value of an attribute * If the input value is ok, it will be updated in the default value and in the diff --git a/src/config-store/model/gtk-config-store.cc b/src/config-store/model/gtk-config-store.cc index ea293c5bb..4b652f5d4 100644 --- a/src/config-store/model/gtk-config-store.cc +++ b/src/config-store/model/gtk-config-store.cc @@ -113,10 +113,10 @@ GtkConfigStore::ConfigureAttributes (void) GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); GtkWidget *save = gtk_button_new_with_label ("Save"); - g_signal_connect (save, "clicked", (GCallback) save_clicked, window); + g_signal_connect (save, "clicked", (GCallback) save_clicked_attribute, window); gtk_box_pack_end (GTK_BOX (hbox), save, FALSE, FALSE, 0); GtkWidget *load = gtk_button_new_with_label ("Load"); - g_signal_connect (load, "clicked", (GCallback) load_clicked, window); + g_signal_connect (load, "clicked", (GCallback) load_clicked_attribute, window); gtk_box_pack_end (GTK_BOX (hbox), load, FALSE, FALSE, 0); GtkWidget *exit = gtk_button_new_with_label ("Run Simulation"); g_signal_connect (exit, "clicked", (GCallback) exit_clicked_callback, window);