Three buttons in the 'reset box' to improve the objects transparencies management

This commit is contained in:
Jean Sirmai 2024-07-23 00:17:35 +02:00
parent bff9a693e8
commit d132261f1e
Signed by: jean
GPG Key ID: FB3115C340E057E3
5 changed files with 127 additions and 29 deletions

View File

@ -50,6 +50,9 @@ void fsm_set_exec_edit (int value);
void fsm_set_state_rules_data (int value); void fsm_set_state_rules_data (int value);
void fsm_reset_all_objects_transparencies_at_value (int value); void fsm_reset_all_objects_transparencies_at_value (int value);
void fsm_memorize_all_objects_transparencies_current_values (int value);
void fsm_reset_all_objects_transparencies_from_mem (int value);
void fsm_reset_all_situations_transparencies_at_value (int value); void fsm_reset_all_situations_transparencies_at_value (int value);

View File

@ -128,6 +128,9 @@ void on_clicked_search (GtkWidget *btt_menu, gpointer list_box);
/******************************************************************************/ /******************************************************************************/
void on_objects_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar); void on_objects_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar);
void on_objects_box_do_memorize (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar);
void on_objects_box_do_reset_from_mem (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar);
void on_situations_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar); void on_situations_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar);

View File

@ -65,6 +65,17 @@ void fsm_set_state_rules_data (int value)
} }
} }
void fsm_reset_all_objects_transparencies_at_value (int value) void fsm_reset_all_objects_transparencies_at_value (int value)
{ {
// if (choice_OBJECTS_box_RESET_VALUE != value) { << NON: Je veux pouvoir // if (choice_OBJECTS_box_RESET_VALUE != value) { << NON: Je veux pouvoir
@ -76,21 +87,41 @@ void fsm_reset_all_objects_transparencies_at_value (int value)
widget_reset_all_objects_transparencies_to_value (value); widget_reset_all_objects_transparencies_to_value (value);
} }
void fsm_memorize_all_objects_transparencies_current_values (int value)
{
debug_printing (value, 3); // OBJECTS_box_RESET_VALUE is sub_automaton 2
choice_OBJECTS_box_RESET_VALUE = value;
widget_reset_all_objects_transparencies_to_value (value);
}
void fsm_reset_all_objects_transparencies_from_mem (int value)
{
debug_printing (value, 2); // OBJECTS_box_RESET_VALUE is sub_automaton 2
choice_OBJECTS_box_RESET_VALUE = value;
widget_reset_all_objects_transparencies_to_value (value);
}
void fsm_reset_all_situations_transparencies_at_value (int value) void fsm_reset_all_situations_transparencies_at_value (int value)
{ {
// if (choice_SITUATIONS_box_RESET_VALUE != value) { << NON: Je veux pouvoir debug_printing (value, 4); // SITUATIONS_box_RESET_VALUE is sub_automaton 5
// d'emblée tout remettre à zéro sans avoir à manipuler le curseur auparavant.
// Tant pis si cette fonction s'exécute parce qu'un reset inutile a été demandé.
debug_printing (value, 3); // SITUATIONS_box_RESET_VALUE is sub_automaton 3
choice_SITUATIONS_box_RESET_VALUE = value; choice_SITUATIONS_box_RESET_VALUE = value;
widget_reset_all_situations_transparencies_to_value (value); widget_reset_all_situations_transparencies_to_value (value);
} }
void fsm_set_situations_box_reset_value (int value) void fsm_set_situations_box_reset_value (int value)
{ {
if (choice_SITUATIONS_box_RESET_VALUE != value) { if (choice_SITUATIONS_box_RESET_VALUE != value) {
debug_printing (value, 3); // SITUATIONS_box_RESET_VALUE is sub_automaton 3 debug_printing (value, 5); // SITUATIONS_box_RESET_VALUE is sub_automaton 5
choice_SITUATIONS_box_RESET_VALUE = value; choice_SITUATIONS_box_RESET_VALUE = value;
} }
} }
@ -127,7 +158,13 @@ static void debug_printing (int value, int sub_automaton)
case (2) : printf("fsm_set_objects_box_reset_value : %3d > %3d\n", case (2) : printf("fsm_set_objects_box_reset_value : %3d > %3d\n",
fsm_get_objects_box_reset_value(), value); fsm_get_objects_box_reset_value(), value);
break; break;
case (3) : printf("fsm_set_situations_box_reset_value : %3d > %3d\n", case (3) : printf("fsm_set_objects_box_memorize : %3d > %3d\n",
fsm_get_objects_box_reset_value(), value);
break;
case (4) : printf("fsm_set_objects_box_restore : %3d > %3d\n",
fsm_get_objects_box_reset_value(), value);
break;
case (5) : printf("fsm_set_situations_box_reset_value : %3d > %3d\n",
fsm_get_situations_box_reset_value(), value); fsm_get_situations_box_reset_value(), value);
break; break;
default : printf("default in automaton.debug_printing()\n"); default : printf("default in automaton.debug_printing()\n");

View File

@ -297,12 +297,26 @@ void on_toggle_state_rules_data (GtkWidget *toggled_button, gpointer user_data)
} }
} }
void on_objects_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar) void on_objects_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)
{ {
GtkAdjustment *adj_obj = gtk_scrollbar_get_adjustment (reset_scrollbar); GtkAdjustment *adj_obj = gtk_scrollbar_get_adjustment (reset_scrollbar);
fsm_reset_all_objects_transparencies_at_value (gtk_adjustment_get_value (adj_obj)); fsm_reset_all_objects_transparencies_at_value (gtk_adjustment_get_value (adj_obj));
} }
void on_objects_box_do_memorize (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)
{
GtkAdjustment *adj_obj = gtk_scrollbar_get_adjustment (reset_scrollbar);
fsm_memorize_all_objects_transparencies_current_values (gtk_adjustment_get_value (adj_obj));
}
void on_objects_box_do_reset_from_mem (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)
{
GtkAdjustment *adj_obj = gtk_scrollbar_get_adjustment (reset_scrollbar);
fsm_reset_all_objects_transparencies_from_mem (gtk_adjustment_get_value (adj_obj));
}
void on_situations_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar) void on_situations_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)
{ {
GtkAdjustment *adj_situ = gtk_scrollbar_get_adjustment (reset_scrollbar); GtkAdjustment *adj_situ = gtk_scrollbar_get_adjustment (reset_scrollbar);

View File

@ -33,19 +33,9 @@
#define UPPER_COMPARTMENT_PARTITION 600 #define UPPER_COMPARTMENT_PARTITION 600
/* L'image de l'état de l'espace (au centre) fait partie d'un panneau "milieu", /******************************************************************************/
* qui est encadré par les deux panneaux: "haut" et "bas". /* O B J E C T S */
* La partie droite du panneau "milieu" est elle-même un panneau de commandes. /******************************************************************************/
*
* Si l'on nomme ces panneaux selon leur fonction, on trouvera:
* - CONTROL ou EDIT en bas permet de contrôler / choisir un état et / ou de l'éditer.
* ce panneau peut avoir deux apparences (et fonctions) différentes:
* - en mode EDIT, seuls les outils d'édition de l'état sont disponibles
* - en mode EXEC, seuls les outils de déplacement dans la séquence sont disponibles
* - CAMERA à droite permet de choisir la position de la caméra
* - CONTRAST en haut permet de modifier un à un les contrastes des objets et des situations
* afin de mieux mettre en évidence l'objet ou le phénomène d'intérêt */
static GtkScrollbar *object_bar [n_objects]; static GtkScrollbar *object_bar [n_objects];
static GtkAdjustment *object_adjust [n_objects]; static GtkAdjustment *object_adjust [n_objects];
@ -58,17 +48,58 @@ void widget_reset_all_objects_transparencies_to_value (int value)
else gtk_adjustment_set_value (object_adjust [i], rand() % 127); else gtk_adjustment_set_value (object_adjust [i], rand() % 127);
} }
static GtkBox *rec_OBJECTS_box() static void *get_objects_box()
{ {
GtkBox *objects_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0)); GtkBox *objects_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0));
GtkAdjustment *reset_value = gtk_adjustment_new (0, 0, 127, 1, 0, 0); GtkAdjustment *reset_value = gtk_adjustment_new (0, 0, 127, 1, 0, 0);
GtkScrollbar *reset_scrollbar = GTK_SCROLLBAR (gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, reset_value)); GtkScrollbar *reset_scrollbar =
GTK_SCROLLBAR (gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, reset_value));
gtk_box_append (objects_box, gtk_label_new (" ")); // AD HOC (pour "centrer") gtk_box_append (objects_box, gtk_label_new (" ")); // AD HOC (pour "centrer")
gtk_box_append (objects_box, GTK_WIDGET (reset_scrollbar)); gtk_box_append (objects_box, GTK_WIDGET (reset_scrollbar));
GtkBox *reset_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 0));
GtkWidget *btt_store_this = gtk_toggle_button_new ();
const char *btt_store_this_tip = " store current transparencies values.\n\n\
warning : this action will delete \n previous storage of these values";
char tooltip_text_for_btt_store [140];
sprintf(tooltip_text_for_btt_store, btt_store_this_tip);
gtk_widget_set_tooltip_text (GTK_WIDGET (btt_store_this), btt_store_this_tip);
gtk_button_set_icon_name (GTK_BUTTON (btt_store_this),
"view-restore-symbolic");
g_signal_connect (btt_store_this, "toggled",
G_CALLBACK (on_objects_box_do_memorize), reset_scrollbar);
GtkWidget *btt_restore = gtk_toggle_button_new ();
const char *btt_restore_this_tip = " restore transparencies\n\
from previous storage"; // from the last storage ?
char tooltip_text_for_btt_restore [140];
sprintf(tooltip_text_for_btt_restore, btt_restore_this_tip);
gtk_widget_set_tooltip_text (GTK_WIDGET (btt_restore), btt_restore_this_tip);
gtk_button_set_icon_name (GTK_BUTTON (btt_restore),
"view-fullscreen-symbolic");
g_signal_connect (btt_restore, "toggled",
G_CALLBACK (on_objects_box_do_reset_from_mem), reset_scrollbar);
GtkWidget *btt_reset = gtk_toggle_button_new (); GtkWidget *btt_reset = gtk_toggle_button_new ();
gtk_button_set_icon_name (GTK_BUTTON (btt_reset), "view-refresh-symbolic"); const char *btt_reset_all = "reset all transparencies to the value\n\
g_signal_connect (btt_reset, "toggled", G_CALLBACK (on_objects_box_do_reset), reset_scrollbar); currently set by the left bar";
gtk_box_append (objects_box, btt_reset); char tooltip_text_for_btt_reset [140];
sprintf(tooltip_text_for_btt_reset, btt_reset_all);
gtk_widget_set_tooltip_text (GTK_WIDGET (btt_reset), btt_reset_all);
gtk_button_set_icon_name (GTK_BUTTON (btt_reset),
"view-refresh-symbolic");
g_signal_connect (btt_reset, "toggled",
G_CALLBACK (on_objects_box_do_reset), reset_scrollbar);
gtk_box_append (reset_box, btt_store_this);
gtk_box_append (reset_box, btt_restore);
gtk_box_append (reset_box, btt_reset);
gtk_box_append (objects_box, GTK_WIDGET (reset_box));
// GtkAdjustment *object_adjust [n_objects]; // (value, lower, upper, step_increment, page_increment, page_size) // GtkAdjustment *object_adjust [n_objects]; // (value, lower, upper, step_increment, page_increment, page_size)
for (int i = 0; i < n_objects; i++) for (int i = 0; i < n_objects; i++)
@ -91,6 +122,13 @@ static GtkBox *rec_OBJECTS_box()
return objects_box; return objects_box;
} }
/******************************************************************************/
/* S I T U A T I O N S */
/******************************************************************************/
static GtkScrollbar *situation_bar [n_situations]; static GtkScrollbar *situation_bar [n_situations];
static GtkAdjustment *situation_adjust [n_situations]; static GtkAdjustment *situation_adjust [n_situations];
@ -102,7 +140,7 @@ void widget_reset_all_situations_transparencies_to_value (int value)
else gtk_adjustment_set_value (situation_adjust [i], rand() % 127); else gtk_adjustment_set_value (situation_adjust [i], rand() % 127);
} }
static GtkBox *rec_SITUATIONS_box() static void *get_situations_box()
{ {
GtkBox *situations_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0)); GtkBox *situations_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0));
GtkAdjustment *reset_value = gtk_adjustment_new (0, 0, 127, 1, 0, 0); GtkAdjustment *reset_value = gtk_adjustment_new (0, 0, 127, 1, 0, 0);
@ -139,7 +177,7 @@ static GtkBox *rec_SITUATIONS_box()
/******************************************************************************/ /******************************************************************************/
/* S T A T E p a g e > t h r e e t o p l e v e l b o x e s */ /* S T A T E p a g e > t o p l e v e l b o x */
/******************************************************************************/ /******************************************************************************/
void *widget_get_graph_view_control() void *widget_get_graph_view_control()
@ -148,15 +186,18 @@ void *widget_get_graph_view_control()
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_objects), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_objects), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
GtkWidget *frame_objects = gtk_frame_new (" Objects"); // defines each class of object transparency GtkWidget *frame_objects = gtk_frame_new (" Objects"); // defines each class of object transparency
gtk_frame_set_child (GTK_FRAME (frame_objects), GTK_WIDGET (rec_OBJECTS_box())); gtk_frame_set_child (GTK_FRAME (frame_objects), GTK_WIDGET (get_objects_box()));
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scroll_objects), frame_objects); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scroll_objects), frame_objects);
GtkWidget *scroll_situations = gtk_scrolled_window_new (); GtkWidget *scroll_situations = gtk_scrolled_window_new ();
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_situations), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_situations), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
GtkWidget *frame_situations = gtk_frame_new (" Situations"); // facilitates each situation identification GtkWidget *frame_situations = gtk_frame_new (" Situations"); // facilitates each situation identification
gtk_frame_set_child (GTK_FRAME (frame_situations), GTK_WIDGET (rec_SITUATIONS_box())); gtk_frame_set_child (GTK_FRAME (frame_situations), GTK_WIDGET (get_situations_box()));
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scroll_situations), frame_situations); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scroll_situations), frame_situations);
GtkWidget *objects_and_situations_horizontal_pane = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); GtkWidget *objects_and_situations_horizontal_pane = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
gtk_paned_set_start_child (GTK_PANED(objects_and_situations_horizontal_pane), GTK_WIDGET (scroll_objects)); gtk_paned_set_start_child (GTK_PANED(objects_and_situations_horizontal_pane), GTK_WIDGET (scroll_objects));
gtk_paned_set_end_child (GTK_PANED(objects_and_situations_horizontal_pane), GTK_WIDGET (scroll_situations)); gtk_paned_set_end_child (GTK_PANED(objects_and_situations_horizontal_pane), GTK_WIDGET (scroll_situations));