diff --git a/include/ui.h b/include/ui.h
index d17fc0e..23a248a 100644
--- a/include/ui.h
+++ b/include/ui.h
@@ -167,6 +167,7 @@ void ui_set_stack(int mode);
void ui_send_internal_notification(const char *message);
void ui_close_internal_notification(void);
void ui_toggle_sidebar();
+void ui_toggle_run_edit(int mode);
//
// Graphical stuff
diff --git a/src/ui/application.c b/src/ui/application.c
index 8745389..07a8f32 100644
--- a/src/ui/application.c
+++ b/src/ui/application.c
@@ -113,6 +113,7 @@ static void gem_graph_client_application_init(GemGraphClientApplication *self)
ui_disable_action("runmode");
ui_disable_action("presentmode");
ui_disable_action("togglesidebar");
+ ui_disable_action("toggle_run_edit");
}
void ui_send_notification(const char *message)
diff --git a/src/ui/events.c b/src/ui/events.c
index 3f84ffa..3dd9f98 100644
--- a/src/ui/events.c
+++ b/src/ui/events.c
@@ -89,6 +89,19 @@ void on_togglesidebar_action(GSimpleAction *action,
ui_toggle_sidebar();
}
+void on_toggle_run_stop_action(GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GemGraphClientApplication *self = user_data;
+
+ g_assert(GEM_GRAPH_CLIENT_IS_APPLICATION(self));
+
+ // Switch on the first letter of the mode, because switch is soooo simple :)
+ if (EDIT_MODE) ui_toggle_run_edit (RUN_MODE);
+ else if (RUN_MODE) ui_toggle_run_edit (EDIT_MODE);
+}
+
void on_editmode_action(GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
@@ -166,6 +179,7 @@ void on_closefile_action(GSimpleAction *action,
ui_disable_action("editmode");
ui_disable_action("presentmode");
ui_disable_action("togglesidebar");
+ ui_disable_action("toggle_run_edit");
ui_set_stack(HOME_MODE);
}
@@ -362,6 +376,7 @@ void ui_model_loading(GObject *source_object,
ui_enable_action("editmode");
ui_enable_action("presentmode");
ui_enable_action("togglesidebar");
+ ui_enable_action("toggle_run_edit");
ui_set_stack(RUN_MODE);
g_free(basenamestr);
@@ -397,6 +412,7 @@ void ui_debug_model_loading (GtkWindow *self, const char *file)
ui_enable_action("editmode");
ui_enable_action("presentmode");
ui_enable_action("togglesidebar");
+ ui_enable_action("toggle_run_edit");
ui_set_stack(RUN_MODE);
ui_toggle_sidebar();
}
diff --git a/src/ui/gemgraph.ui b/src/ui/gemgraph.ui
index 31fe3e1..f0785f8 100644
--- a/src/ui/gemgraph.ui
+++ b/src/ui/gemgraph.ui
@@ -19,6 +19,20 @@
main_menu
+
+
+
+
+
+
diff --git a/src/ui/window.c b/src/ui/window.c
index 6192a30..ecda1c2 100644
--- a/src/ui/window.c
+++ b/src/ui/window.c
@@ -45,6 +45,7 @@ struct _GemGraphClientWindow
GtkStack *side_stack;
GtkPaned *main_paned;
GtkMenuButton *main_button_mode;
+ GtkToggleButton *main_button_run_stop;
GtkToggleButton *main_button_sidebar;
GtkRevealer *toast_revealer;
GtkToggleButton *toast_close_button;
@@ -83,6 +84,7 @@ static void gem_graph_client_window_class_init(GemGraphClientWindowClass *klass)
gtk_widget_class_bind_template_child(widget_class, GemGraphClientWindow, main_stack);
gtk_widget_class_bind_template_child(widget_class, GemGraphClientWindow, side_stack);
gtk_widget_class_bind_template_child(widget_class, GemGraphClientWindow, main_paned);
+ gtk_widget_class_bind_template_child(widget_class, GemGraphClientWindow, main_button_run_stop);
gtk_widget_class_bind_template_child(widget_class, GemGraphClientWindow, main_button_mode);
gtk_widget_class_bind_template_child(widget_class, GemGraphClientWindow, main_button_sidebar);
gtk_widget_class_bind_template_child(widget_class, GemGraphClientWindow, toast_revealer);
@@ -194,3 +196,33 @@ void ui_toggle_sidebar(void)
gtk_paned_set_position(window->main_paned, 400);
}
}
+void ui_toggle_run_edit(int mode)
+{
+ if (window->main_stack == NULL) {
+ g_printerr("Can't find self->main_stack !\n");
+ return;
+ }
+ if (window->side_stack == NULL) {
+ g_printerr("Can't find self->side_stack !\n");
+ return;
+ }
+
+ // Switch on the first letter of the mode, because switch is soooo simple :)
+ switch(mode) {
+ case EDIT_MODE:
+ // gtk_stack_set_visible_child_full(window->main_stack, "edition", GTK_STACK_TRANSITION_TYPE_CROSSFADE);
+ gtk_stack_set_visible_child_full(window->side_stack, "edition", GTK_STACK_TRANSITION_TYPE_CROSSFADE);
+ gtk_menu_button_set_icon_name(window->main_button_run_stop, "document-edit-symbolic");
+ ui_setup_glarea(EDIT_MODE, GTK_WIDGET(window->edition_glarea_box));
+ break;
+ case RUN_MODE:
+ // gtk_stack_set_visible_child_full(window->main_stack, "run", GTK_STACK_TRANSITION_TYPE_CROSSFADE);
+ gtk_stack_set_visible_child_full(window->side_stack, "run", GTK_STACK_TRANSITION_TYPE_CROSSFADE);
+ gtk_menu_button_set_icon_name(window->main_button_run_stop, "system-run-symbolic");
+ ui_setup_glarea(RUN_MODE, GTK_WIDGET(window->run_glarea_box));
+ ui_create_tree (GTK_WIDGET (window->run_conditions_tree_box));
+ break;
+ default:
+ break;
+ }
+}