WIP: reprise de l'automate : états d'abord (using printf() only) - window design ensuite

This commit is contained in:
Jean Sirmai 2024-06-16 06:38:14 +02:00
parent e6871816a4
commit aa3c7bcc82
Signed by: jean
GPG Key ID: FB3115C340E057E3
3 changed files with 37 additions and 22 deletions

View File

@ -10,7 +10,7 @@
/* (exec / edit) < MODE
* X
* (state / rules / data) < STATUS
* (state / rules / data) < VIEW
* X
* (measure / analyse / interpret)
* X
@ -21,9 +21,9 @@ static int mode = RUN;
void set_mode (int prescribed) {mode = prescribed;}
int get_mode () {return mode;}
static int status = INTER; // int get_status () {return status;}
void set_status (int prescribed) {status = prescribed;}
int get_status () {return status;}
static int view = INTER; // int get_view () {return view;}
void set_view (int prescribed) {view = prescribed;}
int get_view () {return view;}
/******************************************************************************/
@ -33,16 +33,16 @@ int get_status () {return status;}
void SWITCH_TO (int asked) {
switch (asked) {
case (INTER) :
status = INTER; printf ("SWITCH_TO INTER\n");
view = INTER; printf ("SWITCH_TO INTER\n");
break;
case (STATE) : // BEGIN_TO_EXEC_STOP
status = STATE; printf ("SWITCH_TO STATE\n");
view = STATE; printf ("SWITCH_TO STATE\n");
break;
case (RULES) : // EXEC_STOP_TO_RUN
status = RULES; printf ("SWITCH_TO RULES\n");
view = RULES; printf ("SWITCH_TO RULES\n");
break;
case (DATA) : // EXEC_RUN_TO_STOP
status = DATA; printf ("SWITCH_TO DATA\n");
view = DATA; printf ("SWITCH_TO DATA\n");
break;
default : ;
}
@ -73,7 +73,7 @@ enum { // S T A T E S
CONFIGURE
};
static int status = EXEC_STOP; // int get_status () {return status;}
static int view = EXEC_STOP; // int get_view () {return view;}
enum { // T R A N S I T I O N S
BEGIN_TO_EXEC_STOP
@ -86,29 +86,29 @@ enum { // T R A N S I T I O N S
};
void set_status (int prescribed) {
status = prescribed; if (0) printf ("status = %d\n", status);
void set_view (int prescribed) {
view = prescribed; if (0) printf ("view = %d\n", view);
switch (status) {
switch (view) {
case (0) : // EXEC_STOP DATA_ANALYSIS
status = EXEC_RUN;
view = EXEC_RUN;
break;
case (1) : // EXEC_RUN
// Ici, il faudra prévenir l'utilisateur par une pop-up window : (sauvegarde automatique sinon)
// S'il ne prend pas la main, les données de la simulation en cours risquent d'être perdues
status = EXEC_STOP;
view = EXEC_STOP;
break;
case (2) : // EXEC_STOP_EDIT_STOP
status = EXEC_RUN_EDIT_RULE;
view = EXEC_RUN_EDIT_RULE;
break;
case (3) : // EXEC_RUN_EDIT_RULE
status = EXEC_STOP_EDIT_RULE;
view = EXEC_STOP_EDIT_RULE;
break;
case (4) : // EXEC_STOP_EDIT_MEASURE
status = EXEC_RUN_EDIT_MEASURE;
view = EXEC_RUN_EDIT_MEASURE;
break;
case (5) : // EXEC_RUN_EDIT_MEASURE
status = EXEC_STOP_EDIT_MEASURE;
view = EXEC_STOP_EDIT_MEASURE;
break;
case (6) : // EDIT_STATE
break;

View File

@ -1,13 +1,27 @@
#include <gtk-4.0/gtk/gtk.h>
#include <assert.h>
void set_status (int prescribed);
int get_status ();
/******************************************************************************/
/* S T A T E S */
/******************************************************************************/
/* (exec / edit) < MODE
* X
* (state / rules / data) < VIEW
* X
* (measure / analyse / interpret) < DATA
* X
* (read / write) < R__W
*/
/******************************************************************************/
void set_view (int prescribed);
int get_view ();
void set_mode (int prescribed);
int get_mode ();
enum mode { RUN, EDIT };
enum choice { INTER, STATE, RULES, DATA };
enum view { INTER, STATE, RULES, DATA };
// MEASURE, OBSERVE, INTERPRET, HELP, CONFIGURE };
void SWITCH_TO (int asked);

View File

@ -203,7 +203,7 @@ void window_header_bar (GtkWindow *window, char *title){
}
void window_main_child (GtkWindow *main_window, int selected_page){
// in automaton.h : enum { INTER, STATE, RULES, DATA }
/*
switch (selected_page) {
case (INTER) : //SWITCH_TO (INTER);
break;
@ -231,6 +231,7 @@ void window_main_child (GtkWindow *main_window, int selected_page){
default : gtk_window_set_child (main_window, GTK_WIDGET (get_SPACE_VIEW_box())); // + un "help message"
}
// printf ("%d\n", get_status());
*/
}
void main_window_design (GtkWindow *main_window){