From a4a5c24c1b86576b5aa98aa4fc415a9003c52c4d Mon Sep 17 00:00:00 2001 From: Jean Sirmai Date: Mon, 3 Jun 2024 23:11:03 +0200 Subject: [PATCH] =?UTF-8?q?Le=20bouton=20=20[exec=5Fxor=5Fedit]=20=20contr?= =?UTF-8?q?=C3=B4le=20le=20bouton=20=20[run=5Fstop=5Fmodel=5Fexec]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- callback.c | 19 ++++++++----------- callback.h | 1 - contain.c | 20 +++++++++----------- in_depth.c | 12 +++--------- 4 files changed, 20 insertions(+), 32 deletions(-) diff --git a/callback.c b/callback.c index 824197d..24f2996 100644 --- a/callback.c +++ b/callback.c @@ -44,7 +44,7 @@ void on_bind_user_tree_factory (GtkSignalListItemFactory *factory, GObject* obje /******************************************************************************/ /* B U T T O N S */ /******************************************************************************/ -void ui_toggle_exec_edit (GtkWidget *btt_exec_xor_edit, gpointer data) +void ui_toggle_exec_edit (GtkWidget *btt_exec_xor_edit, GtkWidget *btt_run_stop_model_exec) { if (get_exec_edit_mode()) { gtk_button_set_icon_name (GTK_BUTTON (btt_exec_xor_edit), "system-run-symbolic"); @@ -53,27 +53,24 @@ void ui_toggle_exec_edit (GtkWidget *btt_exec_xor_edit, gpointer data) gtk_button_set_icon_name (GTK_BUTTON (btt_exec_xor_edit), "document-edit-symbolic"); gtk_button_set_icon_name (GTK_BUTTON (btt_exec_xor_edit), "text-editor-symbolic"); // I hesitate set_exec_edit_mode (1); + + if (! get_run_xor_stop_exec()) { // il faudra une pop-up window, ici, TODO + // pour prévenir l'utilisateur du risque de perte des données de la simulation en cours + set_run_xor_stop_exec (0); + gtk_button_set_icon_name (GTK_BUTTON (btt_run_stop_model_exec), "media-playback-pause-symbolic"); + } } } void ui_toggle_model_exec (GtkWidget *btt_run_stop_model_exec, gpointer data) { - if (get_run_xor_stop_exec()) { + if (get_run_xor_stop_exec() && ! get_exec_edit_mode()) { gtk_button_set_icon_name (GTK_BUTTON (btt_run_stop_model_exec), "media-playback-start-symbolic"); set_run_xor_stop_exec (0); } else { gtk_button_set_icon_name (GTK_BUTTON (btt_run_stop_model_exec), "media-playback-pause-symbolic"); -// gtk_button_set_icon_name (GTK_BUTTON (btt_run_stop_model_exec), "system-shutdown-symbolic"); -// I hesitate : The button should then toggle between activable xor inactivable states set_run_xor_stop_exec (1); } } -void ui_model_exec_depends_on_edition (GtkWidget *btt_run_stop_model_exec, gpointer data) -{ - if (get_run_xor_stop_exec() && get_exec_edit_mode()) { - gtk_button_set_icon_name (GTK_BUTTON (btt_run_stop_model_exec), "media-playback-start-symbolic"); -// set_run_xor_stop_exec (0); - } -} diff --git a/callback.h b/callback.h index 4ba19f2..729a1a2 100644 --- a/callback.h +++ b/callback.h @@ -12,7 +12,6 @@ void ui_disable_action (const char *name); void ui_toggle_exec_edit (GtkWidget *btt_exec_xor_edit, gpointer data); void ui_toggle_model_exec (GtkWidget *btt_run_stop_model_exec, gpointer data); -void ui_model_exec_depends_on_edition (GtkWidget *btt_run_stop_model_exec, gpointer data); void on_quit_action (GSimpleAction *action, GVariant *parameter, gpointer user_data); void on_about_action (GSimpleAction *action, GVariant *parameter, gpointer user_data); diff --git a/contain.c b/contain.c index e1baab8..ee0244a 100644 --- a/contain.c +++ b/contain.c @@ -280,25 +280,23 @@ void window_header_bar (GtkWindow *window, char *title){ // GtkWidget my_window_controls = *gtk_window_controls_new (GTK_PACK_END); // _START // gtk_window_controls_set_decoration_layout (GTK_WINDOW_CONTROLS(my_window_controls), NULL); // const char* layout); + GtkButton *run_stop_model_exec = GTK_BUTTON (gtk_toggle_button_new ()); + gtk_button_set_icon_name (run_stop_model_exec, "system-shutdown-symbolic"); + gtk_button_set_icon_name (run_stop_model_exec, "media-playback-pause-symbolic"); + gtk_button_set_icon_name (run_stop_model_exec, "media-playback-start-symbolic"); + g_signal_connect (run_stop_model_exec, "clicked", G_CALLBACK (ui_toggle_model_exec), NULL); + GtkButton *exec_xor_edit = GTK_BUTTON (gtk_toggle_button_new ()); // gtk_button_set_icon_name (exec_xor_edit, "system-run-symbolic"); // g_signal_connect (exec_xor_edit, "clicked", G_CALLBACK (ui_toggle_run_edit), NULL); gtk_button_set_icon_name (exec_xor_edit, "document-edit-symbolic"); gtk_button_set_icon_name (exec_xor_edit, "text-editor-symbolic"); gtk_button_set_icon_name (exec_xor_edit, "system-run-symbolic"); - g_signal_connect (exec_xor_edit, "clicked", G_CALLBACK (ui_toggle_exec_edit), NULL); - g_signal_connect (exec_xor_edit, "clicked", G_CALLBACK (ui_model_exec_depends_on_edition), NULL); + g_signal_connect (exec_xor_edit, "clicked", G_CALLBACK (ui_toggle_exec_edit), run_stop_model_exec); + gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar), GTK_WIDGET (exec_xor_edit)); - - gtk_window_set_titlebar (window, header_bar); - - GtkButton *run_stop_model_exec = GTK_BUTTON (gtk_toggle_button_new ()); - gtk_button_set_icon_name (run_stop_model_exec, "system-shutdown-symbolic"); - gtk_button_set_icon_name (run_stop_model_exec, "media-playback-pause-symbolic"); - gtk_button_set_icon_name (run_stop_model_exec, "media-playback-start-symbolic"); - g_signal_connect (run_stop_model_exec, "clicked", G_CALLBACK (ui_toggle_model_exec), NULL); gtk_header_bar_pack_start (GTK_HEADER_BAR (header_bar), GTK_WIDGET (run_stop_model_exec)); - + gtk_window_set_titlebar (window, header_bar); icons_for_fun (GTK_HEADER_BAR (header_bar)); // https://iconduck.com/sets/adwaita-icon-theme } diff --git a/in_depth.c b/in_depth.c index 2541917..84e54a0 100644 --- a/in_depth.c +++ b/in_depth.c @@ -12,15 +12,9 @@ static int run_stop_val = STOP; // --- EXEC / EDIT --------------------------------------------------------- int get_exec_edit_mode () {return run_edit_mode_val;} -void set_exec_edit_mode (int prescribed_mode) -{ - run_edit_mode_val = prescribed_mode; - if (! run_stop_val) { - run_stop_val = STOP; - // Là, il faut envoyer un signal > signal connect - // set_run_xor_stop_exec (STOP); - } -} +void set_exec_edit_mode (int prescribed_mode) {run_edit_mode_val = prescribed_mode;} + // if (prescribed_mode == EDIT_MODE && run_stop_val == RUN) run_stop_val = STOP; + // serait redondant car déjà fait dans le callback ui_toggle_exec_edit() // --- RUN / STOP ----------------------------------------------------------