La FSM n'a pas à connaitre le détail des préférences mais seulement si elles sont satisfaites ou non.

This commit is contained in:
Jean Sirmai 2024-07-25 05:55:15 +02:00
parent 89bde1d284
commit 40857dd683
Signed by: jean
GPG Key ID: FB3115C340E057E3
5 changed files with 88 additions and 87 deletions

View File

@ -30,7 +30,7 @@
#pragma once #pragma once
#include <stdio.h> #include <stdio.h>
#include <stdbool.h>
/******************************************************************************/ /******************************************************************************/
@ -57,3 +57,6 @@ void fsm_set_state_rules_data (int value);
void fsm_set_store_restore_reset (int target, int value); void fsm_set_store_restore_reset (int target, int value);
void fsm_reset_all_situations_transparencies_at_value (int value); void fsm_reset_all_situations_transparencies_at_value (int value);
bool fsm_get_preferences_state ();
void fsm_set_preferences_state (bool value);

View File

@ -32,12 +32,5 @@
#pragma once #pragma once
#include <gtk-4.0/gtk/gtk.h> #include <gtk-4.0/gtk/gtk.h>
void print_sth(char *msg); void pref_set_store_restore_reset (int choice, int value);
struct preferences {
int id;
};
void pref_store_objects_transparencies_values ();
void pref_restore_previous_objects_transparencies_values ();
void pref_reset_objects_transparencies_values();

View File

@ -27,6 +27,7 @@
* * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * */ * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <stdbool.h>
#include "../include/fsm.h" #include "../include/fsm.h"
#include "../include/prefer.h" #include "../include/prefer.h"
@ -39,11 +40,13 @@
static int choice_EXEC_EDIT = EXEC; static int choice_EXEC_EDIT = EXEC;
static int choice_STATE_RULES_DATA = STATE; static int choice_STATE_RULES_DATA = STATE;
static int choice_STORE_RESTORE_RESET = STORE; static int preferences = TRUE;
int fsm_get_exec_edit () {return choice_EXEC_EDIT;} int fsm_get_exec_edit () {return choice_EXEC_EDIT;}
int fsm_get_state_rules_data () {return choice_STATE_RULES_DATA;} int fsm_get_state_rules_data () {return choice_STATE_RULES_DATA;}
int fsm_get_store_restore_reset () {return choice_STORE_RESTORE_RESET;}
bool fsm_get_preferences_state () {return preferences;}
void fsm_set_preferences_state (bool value) {preferences = value;}
/******************************************************************************/ /******************************************************************************/
@ -52,6 +55,7 @@ int fsm_get_store_restore_reset () {return choice_STORE_RESTORE_RESET;}
static void debug_printing (int choice, int value, int sub_automaton); static void debug_printing (int choice, int value, int sub_automaton);
void fsm_set_exec_edit (int choice) void fsm_set_exec_edit (int choice)
{ {
if (choice_EXEC_EDIT != choice) { if (choice_EXEC_EDIT != choice) {
@ -68,25 +72,13 @@ void fsm_set_state_rules_data (int choice)
} }
} }
void fsm_set_store_restore_reset (int choice, int value)
{
choice_STORE_RESTORE_RESET = choice;
switch (choice) { // ------------------------- O B J E C T S ------------------------------//
case (STORE) : printf("STORE current values in MEM "); // >> transferred to prefer.c
pref_store_objects_transparencies_values (); break;
case (RESTORE) : printf("RESTORE values from MEM "); break;
case (RESET) : printf("RESET current values from [value] "); break;
default : printf("default in signal.switch_store_restore_reset()\n");
}
debug_printing (choice, value, 2); // STORE_RESTORE_RESET is sub_automaton 2
}
// ---------------------- S I T U A T I O N S ---------------------------// // ---------------------- S I T U A T I O N S ---------------------------//
static int choice_SITUATIONS_box_RESET_VALUE = -1; static int choice_SITUATIONS_box_RESET_VALUE = -1;
void fsm_reset_all_situations_transparencies_at_value (int value) void fsm_reset_all_situations_transparencies_at_value (int value)
@ -100,11 +92,10 @@ void fsm_reset_all_situations_transparencies_at_value (int value)
/******************************************************************************/ /******************************************************************************/
/* D E B U G G E R S */ /* D E B U G G E R S */
/***************************************************************************ù***/ /******************************************************************************/
static char *tab_0 [] = { "EXEC", "EDIT" }; static char *tab_0 [] = { "EXEC", "EDIT" };
static char *tab_1 [] = { "STATE", "RULES", "DATA" }; static char *tab_1 [] = { "STATE", "RULES", "DATA" };
static char *tab_2 [] = { "STORE", "RESTORE", "RESET" };
static void debug_printing (int choice, int value, int sub_automaton) static void debug_printing (int choice, int value, int sub_automaton)
{ {
@ -122,11 +113,8 @@ static void debug_printing (int choice, int value, int sub_automaton)
tab_0 [choice_EXEC_EDIT], tab_0 [choice_EXEC_EDIT],
tab_1 [choice]); tab_1 [choice]);
break; break;
case (2) : printf("fsm_set_store_restore_reset <> choice = %s\n", case (2) : printf("fsm_set_store_restore_reset >> prefer.c\n"); break;
tab_2 [choice_STORE_RESTORE_RESET]); case (3) : printf("fsm_reset_all_situations_transparencies_at_value : %3d\n", value); break;
break;
case (3) : printf("fsm_reset_all_situations_transparencies_at_value : %3d\n", value);
break;
default : printf("default in automaton.debug_printing()\n"); default : printf("default in automaton.debug_printing()\n");
} }

View File

@ -33,15 +33,24 @@
#include "../include/signal.h" #include "../include/signal.h"
#include "../include/widget.h" #include "../include/widget.h"
void print_sth(char *msg) {printf("%s\n", msg);} // static struct preferences *pref = NULL;
// size_t pref_size = 0;
struct preferences *pref; struct preferences {
int id [n_objects];
};
void pref_store_objects_transparencies_values() static int choice_STORE_RESTORE_RESET = STORE;
void pref_set_store_restore_reset (int choice, int value)
{ {
printf("pref_store_objects_transparencies_values n_objects = %d\n", n_objects); choice_STORE_RESTORE_RESET = choice;
switch (choice) {
case (STORE) : printf("STORE current values in MEM [%d]\n", n_objects); break;
case (RESTORE) : printf("RESTORE values from MEM [%d]\n", n_objects); break;
case (RESET) : printf("RESET current values from [%d]\n", value); break;
default : printf("default in signal.switch_store_restore_reset()\n");
}
} }
void pref_restore_previous_objects_transparencies_values() {}
void pref_reset_objects_transparencies_values() {}

View File

@ -225,9 +225,39 @@ void on_write_current_model (GtkWidget *btt_WRITE_CURRENT_MODEL,
/******************************************************************************/ /******************************************************************************/
/* S T A T E W I D G E T */ /* T O P B A R W I D G E T S */
/******************************************************************************/ /******************************************************************************/
// ----------------------- E X E C / E D I T -------------------------- //
static void switch_state_rules_data();
void on_toggle_exec_edit (GtkWidget *toggled_button, gpointer user_data)
{
if (fsm_get_exec_edit ()) {
gtk_button_set_icon_name (GTK_BUTTON (toggled_button),
"power-profile-balanced-rtl-symbolic");
fsm_set_exec_edit (EXEC);
} else {
gtk_button_set_icon_name (GTK_BUTTON (toggled_button),
"text-editor-symbolic");
// https://docs.gtk.org/gtk4/class.Window.html TODO 2024-06-30
// gtk_window_present (GTK_WINDOW (widget_get_dialog_window())); // works once only !
fsm_set_exec_edit (EDIT);
}
switch_state_rules_data();
}
// ------------------ S T A T E / R U L E S / D A T A --------------- //
static void switch_state_rules_data() static void switch_state_rules_data()
{ {
switch (fsm_get_state_rules_data()) { switch (fsm_get_state_rules_data()) {
@ -252,28 +282,6 @@ static void switch_state_rules_data()
} }
} }
void on_toggle_exec_edit (GtkWidget *toggled_button, gpointer user_data)
{
if (fsm_get_exec_edit ()) {
gtk_button_set_icon_name (GTK_BUTTON (toggled_button),
"power-profile-balanced-rtl-symbolic");
fsm_set_exec_edit (EXEC);
} else {
gtk_button_set_icon_name (GTK_BUTTON (toggled_button),
"text-editor-symbolic");
// https://docs.gtk.org/gtk4/class.Window.html TODO 2024-06-30
// gtk_window_present (GTK_WINDOW (widget_get_dialog_window())); // works once only !
fsm_set_exec_edit (EDIT);
}
switch_state_rules_data();
}
// TODO Il doit y avoir plus élégant,... // TODO Il doit y avoir plus élégant,...
void on_toggle_state_rules_data (GtkWidget *toggled_button, gpointer user_data) void on_toggle_state_rules_data (GtkWidget *toggled_button, gpointer user_data)
{ {
@ -290,31 +298,7 @@ void on_toggle_state_rules_data (GtkWidget *toggled_button, gpointer user_data)
// ---------------------------- O B J E C T S --------------------------- // // ------------ M E N U / S E A R C H / H O M E / E T C ----------- //
void on_updating_objects_transparencies (GtkWidget *btt_source, GtkScrollbar *reset_scrollbar)
{
const char *btt_name = gtk_button_get_icon_name (GTK_BUTTON (btt_source));
int value = gtk_adjustment_get_value (gtk_scrollbar_get_adjustment (reset_scrollbar));
if ( ! strcmp (btt_name, "view-restore-symbolic")) fsm_set_store_restore_reset (STORE, value);
if ( ! strcmp (btt_name, "view-fullscreen-symbolic")) fsm_set_store_restore_reset (RESTORE, value);
if ( ! strcmp (btt_name, "view-refresh-symbolic")) fsm_set_store_restore_reset (RESET, value);
}
void on_situations_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)
{
GtkAdjustment *adj_situ = gtk_scrollbar_get_adjustment (reset_scrollbar);
fsm_reset_all_situations_transparencies_at_value (gtk_adjustment_get_value (adj_situ));
}
/******************************************************************************/
/* M A I N W I N D O W H E A D E R W I D G E T S */
/******************************************************************************/
void on_clicked_search (GtkWidget *btt_menu, gpointer list_box) { void on_clicked_search (GtkWidget *btt_menu, gpointer list_box) {
// next line presents the text_window and works only once.\n // next line presents the text_window and works only once.\n
@ -322,6 +306,7 @@ void on_clicked_search (GtkWidget *btt_menu, gpointer list_box) {
gtk_window_present (GTK_WINDOW (widget_get_text_window())); gtk_window_present (GTK_WINDOW (widget_get_text_window()));
} }
void on_clicked_home (GtkWidget *btt_reset, gpointer data) void on_clicked_home (GtkWidget *btt_reset, gpointer data)
{ {
printf ("signal.on_clicked_HOME() button presents the dialog_window\ printf ("signal.on_clicked_HOME() button presents the dialog_window\
@ -331,7 +316,30 @@ void on_clicked_home (GtkWidget *btt_reset, gpointer data)
/******************************************************************************/ /******************************************************************************/
/* M E N U */ /* S T A T E W I D G E T S */
/******************************************************************************/ /******************************************************************************/
// ---------------------------- O B J E C T S --------------------------- //
void on_updating_objects_transparencies (GtkWidget *btt_source, GtkScrollbar *reset_scrollbar)
{
const char *btt_name = gtk_button_get_icon_name (GTK_BUTTON (btt_source));
int value = gtk_adjustment_get_value (gtk_scrollbar_get_adjustment (reset_scrollbar));
if ( ! strcmp (btt_name, "view-restore-symbolic")) pref_set_store_restore_reset (STORE, value);
if ( ! strcmp (btt_name, "view-fullscreen-symbolic")) pref_set_store_restore_reset (RESTORE, value);
if ( ! strcmp (btt_name, "view-refresh-symbolic")) pref_set_store_restore_reset (RESET, value);
}
// -------------------------- S IT U A T I O N S ------------------------ //
void on_situations_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)
{
GtkAdjustment *adj_situ = gtk_scrollbar_get_adjustment (reset_scrollbar);
fsm_reset_all_situations_transparencies_at_value (gtk_adjustment_get_value (adj_situ));
}