diff --git a/data/image/data network interpretation (bump chart).png b/data/image/data network interpretation (bump chart).png index aba1618..7bc0c70 100644 Binary files a/data/image/data network interpretation (bump chart).png and b/data/image/data network interpretation (bump chart).png differ diff --git a/data/text/about_commands.txt b/data/text/about_commands.txt deleted file mode 100644 index 02c52e1..0000000 --- a/data/text/about_commands.txt +++ /dev/null @@ -1,54 +0,0 @@ - - Dans : [space_page - mode RUN] doivent être : ------------------------------------------------------------- - - (1) les commandes de mouvement: - - run/stop, slow down/speed up, step by step, do/undo/redo - + le buffer [elapsed time] qui montre le temps de simulation écoulé - - (2) les commandes qui modifient la perception de l'espace (la caméra) - - son orientation (X,Y,Z), - + l'orientation (X,Y,Z) de l'état dans l'espace (six possibilités), - + le zoom, - + les paramètres qui définissent la perspective (distances oeil/écran, écran/objet virtuel) - - (3) les commandes qui modifient les apparences des objets et des situations d'intérêt - (+/- transparents, colorés, etc.) - - (4) les commandes qui modifient l'apparence de l'espace (grilles, +/- surfaces, aspect des flèches, etc.) - - (0) NB >>> AUCUNE COMMANDE NE DOIT PERMETTRE D'ÉDITER L'ESPACE ! <<< - - - >>> Dans : [space_page - mode EDIT] doivent être : ------------------------------------------------------ - - (1) les commandes qui modifient la perception de l'espace (la caméra) - - son orientation (X,Y,Z), - + l'orientation (X,Y,Z) de l'état dans l'espace (six possibilités), - + le zoom, - + les paramètres qui définissent la perspective (distances oeil/écran, écran/objet virtuel) - - (2) les commandes qui modifient les apparences des objets et des situations d'intérêt - (+/- transparents, colorés, etc.) - - (3) les commandes qui modifient l'apparence de l'espace (grilles, +/- surfaces, aspect des flèches, etc.) - - (4) les commandes d'édition locales (drag and drop une flèche) - ('faire de la place' pour insérer) - (sélectionner pour déplacer ou enlever...) - NB ces commandes doivent être graphiques et/ou accessibles par raccourcis ou en ligne - - (5) les commandes d'édition globales - (ex: introduire, retirer, transformer +/-aléatoirement (n) objets dans l'espace) - - - NB une action effectuée sur une zone d'intérêt devrait pouvoir être automatiquement appliquée - à d'autres zones d'intérêt identifiées comme similaires - - (0) NB >>> AUCUNE COMMANDE NE DOIT PERMETTRE D'EXÉCUTER UN RUN ! <<< - - - >>> L'objectif est que l'utilisateur ait accès à une organsisation aussi ergonomique que possible ----- - - i.e : chaque utilisateur devrait disposer de 'préférences' - c'est-à-dire avoir la possiblité de faire des choix ergonomiques personnalisés. - \ No newline at end of file diff --git a/data/text/any.txt b/data/text/any.txt deleted file mode 100644 index e4977a5..0000000 --- a/data/text/any.txt +++ /dev/null @@ -1,3 +0,0 @@ - - any text - (please, edit...) diff --git a/data/text/pratique.txt b/data/text/pratique.txt new file mode 100644 index 0000000..f9aecad --- /dev/null +++ b/data/text/pratique.txt @@ -0,0 +1,103 @@ + ERGONOMIE, PRÉFÉRENCES ----------------------------------------------- + + Liste des préférences possibles : + + - polices, couleurs, apparences des widgets (icones, textes, traductions) + - widgets 'mandatory' vs d'autres facultatifs (à certains emplacements) + >> sélection de certains widgets (parmi une liste) + - disposition 'libre' de certains boutons ? de certaines 'sous-fenêtres' ? + - macros (habitudes, facilitation de cycles de travail) + (accepter plusieurs chemins possibles pour effectuer une même tâche) + + + + + + /**********************************************************************/ + É D I T I O N D E M E S U R E S + /**********************************************************************/ + + ÉDITION DE MESURES + + (1) SÉLECTION d'un ou plusieurs ensembles de règles (au moins une règle) + + (2) ACTION à exécuter orsque l'une de ces règles est appliquée: + + - incrémentation d'un 'compteur de règle' + - calcul d'un 'temps' entre une 'règle de début' et une 'règle de fin' + (quel 'temps' choisir ?) + - mesure d'une valeur modifiée 'avant / après' + + (3) OBSERVATIONS POSSIBLES + + - fréquence d'utilisation d'une règle + - durée de vie d'un objet ou d'une situation + - variation d'une grandeur (autre que le temps) avant / après + + (*) ANALYSE DE L'ÉTAT (pattern recognition) + + À quelle fréquence ? + Systématiquement ? Aléatoirement ? Les deux ? + Signal déclenchant ? (exécution d'une règle) (ou d'une dans un groupe) + + + /**********************************************************************/ + D A T A B A S E R É S U L T A T S + /**********************************************************************/ + + + /**********************************************************************/ + P R É S E N T A T I O N R É S U L T A T S + /**********************************************************************/ + + + + <> + + + + + EXEC / EDIT ---------------------------------------------------------- + + Les commandes se regroupent par blocs + selon leurs fonctions et/ou leurs présentations. + + Les commandes de 'mouvement' ou de gestion du temps de simulation : + - run/stop, slow down/speed up, step by step, do/undo/redo + + le buffer [elapsed time] qui montre le temps de simulation écoulé + + Les commandes qui modifient la perception de l'espace (la caméra) + - son orientation (X,Y,Z), + + l'orientation (X,Y,Z) de l'état dans l'espace (six possibilités), + + le zoom, + + les paramètres qui définissent la perspective + (distances oeil/écran, écran/objet virtuel) + + Les commandes qui modifient les apparences des objets dans l'espace + (couleur, transparence...) et des situations d'intérêt + + Les commandes qui modifient l'apparence de l'espace lui-même + (grilles, +/- surfaces, aspect des flèches, etc.) + + Les commandes d'édition locales + (drag and drop une flèche) + ('faire de la place' pour insérer) + (sélectionner pour déplacer ou enlever...) + + Les commandes d'édition globales + ex: introduire, retirer, transformer (n) objets dans l'espace + systématiquement ou aléatoirement + + NB Toute édition effectuée sur une zone d'intérêt doit pouvoir être + automatiquement appliquée à d'autres zones d'intérêt similaires + + EN MODE EXEC, AUCUNE COMMANDE NE DOIT PERMETTRE D'ÉDITER L'ESPACE + EN MODE EDIT, AUCUNE COMMANDE NE DOIT PERMETTRE D'EXÉCUTER UN RUN + + Les transitions entre ces deux modes + demandent s'il y a lieu de sauver l'état courant + + + + + diff --git a/include/widget.h b/include/widget.h index cc7cd82..7a6d9b6 100644 --- a/include/widget.h +++ b/include/widget.h @@ -37,8 +37,11 @@ // called in dispatch.c // functions are in topbar.c -#define W_MY_SCREEN_1920 1920 // 1920 x 960 = ad hoc (pour mon écran)) -#define H_MY_SCREEN_1000 1000 +#define W_MY_SCREEN 1920 // 1920 x 960 = ad hoc (pour mon écran)) +#define H_MY_SCREEN 1000 // Full HD (1920 x 1080 pixels) + +#define W_TEXT_WINDOW 550 // ad hoc (mais sans conséquences ici) +#define H_TEXT_WINDOW 1000 void widget_design_main_window (GtkWindow *main_window); void widget_design_dialog_window (GtkWindow *main_window, GtkWindow *dialog_window); @@ -73,8 +76,6 @@ void *widget_get_state_page(); // in : src/widget/state/dispatch.c void *widget_get_rules_page(); // in : src/widget/rules/dispatch.c void *widget_get_data_page(); // in : src/widget/data /dispatch.c -void *widget_get_stock_text (gchar *text_name); - #define W_TREE_160 160 #define W_DO_UNDO_REDO_BOX_1300 1300 #define H_XYZ_BOX_200 200 @@ -165,9 +166,10 @@ void *widget_get_user_rules_tree (); // see "labo.c" for specification of the tr // functions in : widget / stock.c // used by text_window (see topbar/dispatch.c)) +void *widget_get_text_from_address (gchar *text_name); + char *widget_get_text_address_theory (); -char *widget_get_text_address_about_commands (); -char *widget_get_text_address_any (); +char *widget_get_text_address_practice (); /******************************************************************************/ diff --git a/src/widget/state/dispatch.c b/src/widget/state/dispatch.c index 2dc779a..7135863 100644 --- a/src/widget/state/dispatch.c +++ b/src/widget/state/dispatch.c @@ -52,6 +52,9 @@ /******************************************************************************/ +#define PARTITION_SPACE_VS_CONTROLS_1 920 +#define PARTITION_SPACE_VS_CONTROLS_2 800 + void *widget_get_state_page() { GtkBox *page_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 2)); @@ -59,9 +62,19 @@ void *widget_get_state_page() gtk_box_append (page_box, GTK_WIDGET (gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); gtk_box_append (page_box, GTK_WIDGET (widget_get_space_view())); gtk_box_append (page_box, GTK_WIDGET (gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - if (fsm_get_exec_edit ()) gtk_box_append (page_box, GTK_WIDGET (widget_get_space_edit_control())); - else gtk_box_append (page_box, GTK_WIDGET (widget_get_sequence_control())); - return GTK_WIDGET (page_box); + + GtkWidget *view_space_vs_controls = gtk_paned_new (GTK_ORIENTATION_VERTICAL); + gtk_paned_set_start_child (GTK_PANED(view_space_vs_controls), GTK_WIDGET (page_box)); + + if (fsm_get_exec_edit ()) gtk_paned_set_end_child (GTK_PANED(view_space_vs_controls), GTK_WIDGET (widget_get_space_edit_control())); + else gtk_paned_set_end_child (GTK_PANED(view_space_vs_controls), GTK_WIDGET (widget_get_sequence_control())); + + if (fsm_get_exec_edit ()) gtk_paned_set_position (GTK_PANED (view_space_vs_controls), PARTITION_SPACE_VS_CONTROLS_2); + else gtk_paned_set_position (GTK_PANED (view_space_vs_controls), PARTITION_SPACE_VS_CONTROLS_1); + gtk_paned_set_shrink_start_child (GTK_PANED (view_space_vs_controls), FALSE); + gtk_paned_set_shrink_end_child (GTK_PANED (view_space_vs_controls), FALSE); + + return view_space_vs_controls; // GTK_WIDGET (page_box); } diff --git a/src/widget/state/middle.c b/src/widget/state/middle.c index ed02983..00b7578 100644 --- a/src/widget/state/middle.c +++ b/src/widget/state/middle.c @@ -72,24 +72,30 @@ static GtkBox *rec_ZOOM_box() return ZOOM_box; } +#define PARTITION_SPACE_VS_CAMERA 1860 void *widget_get_space_view() { - GtkBox *right_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 2)); - gtk_box_append (right_box, GTK_WIDGET (rec_XYZ_box())); - gtk_box_append (right_box, GTK_WIDGET (gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - gtk_box_append (right_box, GTK_WIDGET (rec_ZOOM_box())); - - GtkBox *central_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2)); - - // TODO - gtk_box_append (central_box, GTK_WIDGET (gtk_picture_new_for_filename + GtkBox *E_coli = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0)); + gtk_box_append (GTK_BOX (E_coli), GTK_WIDGET (gtk_picture_new_for_filename ("/home/jean/Gem-Graph/gem-graph-client/data/image/E coli by D Goodsell.png"))); - // ui_setup_glarea (0, GTK_WIDGET (central_box)); + gtk_widget_set_size_request (GTK_WIDGET (E_coli), 0, H_E_COLI); // (provisoire) TODO - gtk_box_append (central_box, GTK_WIDGET (gtk_separator_new (GTK_ORIENTATION_VERTICAL))); - gtk_box_append (central_box, GTK_WIDGET (right_box)); - return GTK_WIDGET (central_box); + // TODO replace this image by >> ui_setup_glarea (0, GTK_WIDGET (~)); + + GtkBox *camera = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 2)); + gtk_box_append (camera, GTK_WIDGET (rec_XYZ_box())); + gtk_box_append (camera, GTK_WIDGET (gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); + gtk_box_append (camera, GTK_WIDGET (rec_ZOOM_box())); + + GtkWidget *view_space_vs_camera = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); + gtk_paned_set_start_child (GTK_PANED (view_space_vs_camera), GTK_WIDGET (E_coli)); + gtk_paned_set_end_child (GTK_PANED (view_space_vs_camera), GTK_WIDGET (camera)); + gtk_paned_set_shrink_start_child (GTK_PANED (view_space_vs_camera), FALSE); + gtk_paned_set_shrink_end_child (GTK_PANED (view_space_vs_camera), FALSE); + gtk_paned_set_position (GTK_PANED (view_space_vs_camera), PARTITION_SPACE_VS_CAMERA); + + return GTK_WIDGET (view_space_vs_camera); } diff --git a/src/widget/synth/dispatch.c b/src/widget/synth/dispatch.c index 23f006e..8351a3e 100644 --- a/src/widget/synth/dispatch.c +++ b/src/widget/synth/dispatch.c @@ -33,14 +33,27 @@ #include "../../../include/widget.h" +static void *widget_get_non_time_dependent_analysis_elements() // for fun ! +{ + GtkBox *results_box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 2)); + gtk_box_append (results_box, GTK_WIDGET (gtk_picture_new_for_filename + ("/home/jean/Gem-Graph/gem-graph-client/data/image/data bar graph vertical.png"))); + gtk_box_append (results_box, GTK_WIDGET (gtk_picture_new_for_filename + ("/home/jean/Gem-Graph/gem-graph-client/data/image/data correlations (4, horizontal).png"))); + gtk_box_append (results_box, GTK_WIDGET (gtk_picture_new_for_filename + ("/home/jean/Gem-Graph/gem-graph-client/data/image/data network interpretation (bump chart).png"))); + gtk_box_append (results_box, GTK_WIDGET (gtk_picture_new_for_filename + ("/home/jean/Gem-Graph/gem-graph-client/data/image/hb.png"))); + return results_box; +} + static void *widget_get_space_vs_non_time_dependent_analysis() { GtkWidget *space_vs_non_time_dependent_analysis = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); gtk_paned_set_start_child (GTK_PANED (space_vs_non_time_dependent_analysis), GTK_WIDGET (widget_get_space_view())); gtk_paned_set_end_child (GTK_PANED (space_vs_non_time_dependent_analysis), - GTK_WIDGET (gtk_picture_new_for_filename - ("/home/jean/Gem-Graph/gem-graph-client/data/image/data bar graph vertical.png"))); + GTK_WIDGET (widget_get_non_time_dependent_analysis_elements())); gtk_paned_set_position (GTK_PANED (space_vs_non_time_dependent_analysis), ARBITRARY_PARTITION_1600); gtk_paned_set_shrink_start_child (GTK_PANED (space_vs_non_time_dependent_analysis), TRUE); gtk_paned_set_shrink_end_child (GTK_PANED (space_vs_non_time_dependent_analysis), TRUE); @@ -58,11 +71,29 @@ void *widget_get_synth_page() gtk_paned_set_position (GTK_PANED (space_and_analysis_vs_history), ARBITRARY_PARTITION_750); gtk_paned_set_shrink_start_child (GTK_PANED (space_and_analysis_vs_history), FALSE); gtk_paned_set_shrink_end_child (GTK_PANED (space_and_analysis_vs_history), FALSE); - gtk_widget_set_size_request (space_and_analysis_vs_history, 0, H_MY_SCREEN_1000); // OK (required)) + gtk_widget_set_size_request (space_and_analysis_vs_history, 0, H_MY_SCREEN); // OK (required)) return space_and_analysis_vs_history; } + + + + + + + + + + + + + + + + + + /* jean@n-guix-port:~/Gem-Graph/gem-graph-client [env] $ grep -r 'gtk_paned_set_position' grep: bin/gem-graph-client : fichiers binaires correspondent diff --git a/src/widget/topbar/dispatch.c b/src/widget/topbar/dispatch.c index b2c2d56..68a173f 100644 --- a/src/widget/topbar/dispatch.c +++ b/src/widget/topbar/dispatch.c @@ -95,13 +95,7 @@ char *widget_get_text_address_theory () { return "/home/jean/Gem-Graph/gem-graph-client/data/text/théorie.txt"; } -char *widget_get_text_address_about_commands () { - return "/home/jean/Gem-Graph/gem-graph-client/data/text/about_commands.txt"; +char *widget_get_text_address_practice () { + return "/home/jean/Gem-Graph/gem-graph-client/data/text/pratique.txt"; } -char *widget_get_text_address_any () { - return "/home/jean/Gem-Graph/gem-graph-client/data/text/any.txt"; -} - - - diff --git a/src/widget/topbar/polytext.c b/src/widget/topbar/polytext.c index ee9df55..6edd1a6 100644 --- a/src/widget/topbar/polytext.c +++ b/src/widget/topbar/polytext.c @@ -32,10 +32,6 @@ #include "../../../include/signal.h" #include "../../../include/widget.h" -#define W_TEXT_WINDOW 700 // ad hoc (mais sans conséquences ici) -#define H_TEXT_WINDOW 1000 - - /******************************************************************************/ /* T E X T W I N D O W */ @@ -48,8 +44,8 @@ void widget_design_text_window (GtkWindow *main_window, GtkWindow *text_window) gtk_header_bar_set_title_widget (GTK_HEADER_BAR (header_bar), gtk_label_new (title)); gtk_window_set_titlebar (text_window, header_bar); - GtkWidget *child = widget_get_stock_text (widget_get_text_address_theory()); - child = widget_get_stock_text (widget_get_text_address_about_commands()); + GtkWidget *child = widget_get_text_from_address (widget_get_text_address_theory()); + child = widget_get_text_from_address (widget_get_text_address_practice()); gtk_window_set_child (GTK_WINDOW (text_window), GTK_WIDGET (child)); gtk_widget_set_size_request (GTK_WIDGET (child), W_TEXT_WINDOW, H_TEXT_WINDOW); @@ -60,7 +56,7 @@ void widget_design_text_window (GtkWindow *main_window, GtkWindow *text_window) -void *widget_get_stock_text (gchar *text_address) { +void *widget_get_text_from_address (gchar *text_address) { GtkWidget *view = gtk_text_view_new (); GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); gtk_text_buffer_set_text (buffer, read_file (text_address), -1);