Suggestions d'amélioration pour Xcas Windows

Utilisation de Xcas

Modérateur : xcasadmin

Maxens Pupin
Messages : 4
Inscription : lun. oct. 02, 2023 9:41 pm

Suggestions d'amélioration pour Xcas Windows

Message par Maxens Pupin » mar. oct. 03, 2023 7:56 pm

Bonjour Xcas World
Après quelques heures passées sur Xcas (version Windows >= 1.9) j'ai remarqué quelques petits trucs qui pourrait améliorer grandement son utilisation (en comparaison à leur apparente difficulté d'implémentation).
J'ai remarqué deux zones qui peuvent être améliorée : les raccourcis clavier et la navigation dans les menu et le texte au clavier. J'ajoute quelques suggestions diverses à la fin qui me semblent plus compliquées à ajouter.
J'utilise un clavier Windows mais cela s'applique peut être aussi aux clavier mac (?)
Je mets une petite note /10 de mon estimation (très vague) de la difficulté de l'ajout

Navigation dans du texte à l'aide du clavier (par exemple ligne de commande ou dans le menu aide) :
  • 1/10 Ctrl + flèche droite ou gauche est implémenté pour se déplacer entre les caractères séparateurs (espace, virgule, parenthèses, point,...) mais ni Ctrl + Backspace (effacer) ni Ctrl + Delete (supprimer après) ne fonctionne pas (but de supprimer un mot ou partie d'équation d'un instant), ça ne supprime qu'un caractère. Fonctionnerait comme faire Ctrl + Maj + flèche puis Backspace / Delete. La fonction est présente dans le menu aide déjà.
  • 2/10 Alt + Maj + Flèche (haut/bas/droite/gauche) pour sélectionner le texte entre deux sections, cela peut s'interpréter comme chaque ligne (délimitée par ";" (ou newline caracter) dans la ligne de commande) dans Xcas : permet une édition rapide de ligne de commandes récupérées d'un tutoriel / copiées / modifiés depuis une ligne précédente
  • 3/10 Comportement des flèches de droite/gauche lorsqu'un texte est sélectionné (choix) : si l'on sélection un bout de texte avec Ctrl + flèche droite par exemple et que l'on fait flèche de gauche une fois toutes les touches relâchées (cela désélectionne le texte et le "problème" vient de la position du curseur après), certains logiciels (Xcas, LibreOffice) mettent le curseur à la fin du texte sélectionné puis vont vers la gauche d'un caractère. D'autres logiciels comme les navigateurs, Bloc note Win de base, WordPad, VSCode, mettent le curseur à l'endroit du début de sélection (depuis la position où l'on avait commencé notre sélection), le choix revient aux préférences et pourrait donc être (si ajouté) dans un paramètre
Navigation dans les menus à l'aide du clavier (par ex se déplacer entre les sessions, les menus Fich, Edit, Aide , ...) :
  • 2/10 Ctrl + Tab, Ctrl + Maj + Tab pour passer d'une session à une autre plutôt que de cloquer à la souris
  • 3/10 Ctrl + Nb pour sauter à la Nb-ième session (si plus de 9 session, presser 9 saute à la dernière session), comportement inspiré des navigateurs webs (peut être de la ligne de chiffre au dessus des lettres ou pavé numérique)
  • 6/10 Alt pour permettre une navigation complètement au clavier des menus Fich, Edit, Cfg, ... Plusieurs modes possibles :
    • 5/10 Mode Wordpad / Microsoft Word : appuyer sur Alt et des petits icônes de lettres/chiffres pour accèder directement au menu voulu dans l'onglet. Par exemple, on appuie sur Alt, puis sur O pour afficher le menu déroulant d'Outils puis on peut appuyer sur P pour avoir le sous menu Proba puis sur B pour ouvrir le menu ouvert quand on clique sur binomial.
      Avantage : "temps" d'accès aux raccourcis dépendant seulement dépendant de leur profondeur, peut être plus facile à mettre en place que le mode suivant
      Inconvénient : peut être un peu moins intuitif que le mode décrit ci dessous, "apprentissage" des raccourcis
    • 7/10 Mode LibreOffice Writer / VSCode / Bloc note Windows de base : appuyer sur Alt pour sélectionner au clavier le menu Fich (menu pas ouvert mais sélection "en attente") puis navigation possible avec les flèches direction mais aussi avec les lettres/chiffres : la lettre a presser pour le raccourci est soulignée
      Avantage : Flexibilité, soit pour un utilisateur qui recherche dans les menus, avec les flèches directionnelles , soit pour un utilisateur expérimenté qui connaît sait bien naviguer les menus : "temps" potentiellement aussi rapide que le mode d'avant
      Inconvénient : Peut être plus complexe à coder : il faut indiquer si une case est "semi sélectionnée" (curseur clavier pour les menus) et souligner une lettre au choix dans les commandes disponibles dans le menu déroulant.
  • 2/10 Sauvegarde de la configuration choisie dans Cfg->Configuration graphique pour le champ "ortho" qui ne semble pas être sauvegardé de la même façon que les autres paramètres de la Config graphique, ni des autres configs ni préférences. Peut-être d'autres champs non sauvegardés de la même façon que je n'ai pas remarqué.
  • 6/10 Ajout d'un menu de raccourcis clavier customisable (le plus possible) pour différent raccourcis essentiels, par exemple :
    • nouvelle session (souvent Ctrl + Maj + N ou Ctrl + N) (nouvelle ligne de commande Alt + N)
    • Sauter en haut/bas les flèches haut/bas avec 3 traits à travers elles à côté du bouton Fin + Ctrl peut-être
    • Défiler plus rapidement (ou lentement) les lignes de commande et/ou échapper les graphiques (scroller avec la molette de la souris sans que, passant sur un graphique on se mette à dézoomer dessus) avec Ctrl ou Alt ?
    • Focus le curseur sur la dernière ligne de commande avec Ctrl + L si le curseur est parti en voyage (par exemple si on sélectionne à la souris une ligne de commande en cliquant sur son nombre)
    • Recherche / remplacer avec Ctrl + F / Ctrl + H dans la session entière/ligne de commande/toutes les sessions ouvertes avec des options ?
    • Recalculer le graphe / ligne de commande sélectionnée (où le curseur se trouve), souvent F5 mais semble déjà utilisé pour quelque chose
    • 8/10 Raccourcis customisable : choisir sa propre commande à effectuer (succession de plusieurs) avec un raccourcis clavier

Suggestions diverses avec une note /10 de la difficulté estimée
  • 1/10 Curseur qui clignote ?
  • 2/10 Convertir à l'écriture ou prendre en charge les exposants rapides ²,³,⁴,⁵,⁶,⁷,⁷,⁸,⁹,⁰,¹ ==> ^n
  • 8/10 Affichage des équations en Latex en dessous des lignes de commande mais potentiellement en option choisir (j'ai vu des mentions de Latex mais pas réussi à afficher les résultats de la ligne de commande en Latex)
  • 3/10 Curseur texte ne disparaît pas lorsque l'on change de champ de texte avec la souris (repasser la souris sur la ligne de commande où le curseur se trouvait le fait disparaître ainsi que de rentrer une commande depuis le menu aide dans le nouveau champ de texte)
  • 5/10 Warning d'écriture non conventionnelle (par exemple évaluation directe d'une expression) devrait pouvoir en un click et/ou touche clavier (tab est le plus commun mais pris par l'aide ici) créer dans la nouvelle ligne de commande, celle que l'on a rentré avec les parties problématiques converties
  • 9/10 Meilleure indication des erreurs (syntaxe/grammaire particulièrement) car line 2 col 33 n'est pas très bien exprimé, surtout si la ligne de commande est grande/similaire tout le long/se répète quasiment : si solution facile, proposer une version réparée (comme warning ci dessus) sinon changer l'affichage du texte sur la ligne de commande à l'endroit de la détection du problème/au problème pour indiquer directement à l'utilisateur où est l'erreur.
  • 10/10 Exporter la session en session Xcas web/JS avec les résultats (pas besoin de recalcul) pour partage plus facile des sessions Xcas.
  • 0/10 Erreur d'aide dans _qme_ : la charge de l'électron est (maintenant) nommée _qe_ et non _q_
  • ?/10 utilisation de µ (sur le clavier AZERTY sur la touche * proche de l'entrée) pour les préfixes d'unité (au lieu de micro)

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Suggestions d'amélioration pour Xcas Windows

Message par parisse » mer. oct. 04, 2023 6:02 pm

Merci pour ce retour très détaille, ça fait beaucoup de suggestions! J'ai bien peur d'être incapable d'implémenter la grande majorité (il faudrait quelqu'un de plus compétent en UI)... Et je n'ai pas tout compris, peut-être parce que je n'utilise pas moi-même les logiciels cités (mon environnement c'est emacs et ses raccourcis claviers, un shell dans un terminal et les commandes Unix, et une utilisation basique de Firefox et Thunderbird).
Quelques commentaires:
Concernant les menus, je n'ai aucune idée de comment faire pour les ouvrir au clavier, en fait je pense que ce n'est pas prévu dans FLTK. Certains raccourcis claviers peut sans doute être implémenté, mais je ne peux pas le mettre très haut dans ma liste de todo, parce que j'ai l'impression que ça ne va concerner qu'une très petite minorité d'utilisateurs. S'il y a un truc qui me parait facile, je regarderai mais au niveau de l'interface, j'ai l'impression que c'est sur la version web qu'il faut investir un peu de temps de développement, par exemple un éditeur d'expression 2d intéresserait surement du monde.
Pour le curseur qui clignote, je n'ai pas l'impression que FLTK gère ça. Pareil quand il reste dans un champ qui n'a pas le focus, ce n'est pas géré à mon niveau de code.
Pour les exposants, ils sont déjà pris en compte, mais c'est piégeux, parce que si on en met deux de suite, c'est une puissance de puissance et pas une puissance à 2 chiffres.
Pour avoir une expression en entrée traduite en latex, on peut taper la commande latex(expression). Ou bien 'expression' puis Ctrl-T dans le widget résultat.
Les erreurs de syntaxe avec numéro de ligne/colonne sont surtout prévues pour un niveau éditeur de programme où on voit les valeurs correspondant au curseur. Je vais rajouter la sélection du token invalide en ligne de commande comme c'est déjà le cas en éditeur de programme.
L'ajout des sorties déjà évaluées dans l'URL qui lance Xcas web se heurterait à des problèmes de taille, à la fois pour tenir dans un QR code (pour les petites sessions) ou pour l'insérer dans un mail (les détecteurs de spam ont déjà trop tendance à rejeter mes URL). Demander de taper sur le bouton Exec me parait un bon compromis. On peut sinon envoyer la session au format xws.
J'ai corrigé la typo de la masse dans le menu (c'est le fichier doc/fr/xcasmenu).
Je vais faire une tentative de traduction automatique de µ en micro au niveau du lexer. Il me semble que j'avais déjà fait une tentative infructueuse pour gérer µ dans les unités, on verra si ça marche comme ça, on peut toujours revenir en arrière...

Maxens Pupin
Messages : 4
Inscription : lun. oct. 02, 2023 9:41 pm

Priorité

Message par Maxens Pupin » jeu. oct. 05, 2023 2:45 pm

Je fais une petite liste selon la priorité des suggestions :
Les plus utiles
  1. Indication de l'erreur dans une ligne de commande (déjà ajouté si j'ai bien compris)
  2. Navigation au clavier dans la ligne de commande (notamment Ctrl + Delete/Suppr qui est déjà présent dans d'autres menus)
  3. Navigation entre les sessions comme des onglets internet (Ctrl + Tab, Ctrl + Nb)
  4. Création d'un nouvelle session (Ctrl (+ Maj) + N)
  5. Suggestion de modification lors d'une erreur (par exemple : Expr(2) ==> subst(Expr,var,2)
  6. (bug) Sauvegarde de la config pour "Ortho" dans Cfg->Configuration graphique
Moins utile (pas tous les utilisateurs en profitent)
  1. Plus de raccourcis / menu de raccourcis modifiable par l'utilisateur comme une préférence
  2. Pouvoir défiler la page d'une session sans intéragir avec un plot
  3. Sélection de texte (Alt + Maj + Flèche, Ctrl + Maj + Flèche puis flèche inverse)
  4. Inverser la sélection
  5. Navigation des menus au clavier ("impossible" avec FLTK ?)
Les autres sont peu importantes / déjà implémentées...
Ces suggestions sont pour la version bureau / PC de Xcas mais la version web requiert plus d'attention, où j'ai relevé plusieurs suggestions déjà.

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Suggestions d'amélioration pour Xcas Windows

Message par parisse » dim. oct. 08, 2023 8:56 am

Alors, j'ai réussi à implémenter certaines fonctionnalités, mais il y en a qui semblent impossible en particulier sous windows. Un truc qui marche partout et que je viens de changer c'est quand le curseur atteint la fin de la ligne de commande, on repasse au début et inversement, comme sur les calculatrices. Voici un lien temporaire pour tester la version windows
https://www-fourier.univ-grenoble-alpes ... ininst.exe
Donc j'ai ajouté: alt-a pour une nouvelle sesssion (ctrl-n ne marche pas, j'ignore pourquoi). Ctrl-tab pour changer d'onglet, mais ca ne fonctionne chez moi que sous linux, pas sous windows. Ctrl-0, Ctrl-1 et Ctrl-9 marchent sous linux, mais pas sous windows. Ctrl-2 à Ctrl-8 ne marchent pas.
Ctrl-Suppr permet d'effacer le mot situé à droite (au sens de mot alphanumérique)
La configuration orthogonale ne peut pas etre sauvegardée, car ca dépend de la taille verticale du widget. On peut imposer à l'exécution l'orthogonalisation avec gl_ortho=1 en ligne de commande, ou bien cliquer sur le bouton d'orthonormalisation.

On peut modifier des menus de Xcas en éditant le fichier doc/fr/xcasmenu, mais on ne peut pas éditer les raccourcis claviers. C'est sans doute faisable, mais il faudrait définir un format de fichier et implémenter les shortcut ensuite...
Je ne sais pas empecher le défilement de la souris de s'appliquer à un plot s'il y en a un en-dessous.
La sélection de texte avec shift-touches de déplacement semble fonctionner, il ne faut pas utiliser alt en meme temps. Que veut dire inverser la sélection?

Maxens Pupin
Messages : 4
Inscription : lun. oct. 02, 2023 9:41 pm

Re: Suggestions d'amélioration pour Xcas Windows

Message par Maxens Pupin » lun. oct. 09, 2023 8:33 pm

Super fonctionnalité le retour du curseur en fin/début de ligne.
Alt+A est super, dommage que les autres raccourcis ne fonctionnent pas sur Windows...
Super pour le Ctrl+Suppr mais il serait bien d'avoir l'autre sens (vers la gauche) (plus souvent utilisé car sens inverse d'écriture)

Petit ajout, maintenant que l'on a ouvert 20 session avec Alt+a, on ne peut pas les fermer rapidement :lol: , un raccourci (souvent Ctrl+W sur web) clavier ou au clic du milieu de la souris sur le nom de la session pour la fermer serait super !
Une autre petite idée serait de pouvoir modifier toutes les occurrences de la sélection (par exemple on sélection un 'x' dans notre équation et on fait une modification sur tous les 'x' de la ligne de commande pour les transformer en 't' par exemple (rejoint la fonctionnalité de rechercher et remplacer))
On peut modifier des menus de Xcas en éditant le fichier doc/fr/xcasmenu, mais on ne peut pas éditer les raccourcis claviers. C'est sans doute faisable, mais il faudrait définir un format de fichier et implémenter les shortcut ensuite...
Selon la façon dont les raccourcis sont pris en compte, il faut peut être revoir le système qui s'en occupe. Pour une implémentation "basique" j'ai vu simplement un .txt avec pour chaque ligne le nom du paramètre (true/false pour un comportement, nom de l'action à faire associé à la clé du clavier ...)
par exemple : options.txt :
open_new_session:Alt+A
close_all:Ctrl+Q
clone_one:Ctrl+W
color_editor_bg:green2

éventuellement remplacer "Alt+A"(et similaires) par la(es) clé(s) détectée(s) par FLK (par exemple 81 == pavé numérique 3, -100 clic gauche souris...)
Que veut dire inverser la sélection?
Depuis une ligne de commande par exemple
plot(x^2/2,x)
et que l'on sélection plot(comme souligné), alors on pourra inverser la sélection pour que la zone sélectionnée soit maintenant
plot(x^2/2,x)
Et l'on peut maintenant supprimer/copier/modifier tout ce qui n'est pas 'plot'
Sélection de texte (Alt + Maj + Flèche, Ctrl + Maj + Flèche puis flèche inverse)
Je vais faire une petite vidéo pour montrer, ça sera plus facile, même si on reste sur un détail.

Maxens Pupin
Messages : 4
Inscription : lun. oct. 02, 2023 9:41 pm

Re: Suggestions d'amélioration pour Xcas Windows

Message par Maxens Pupin » lun. oct. 09, 2023 9:43 pm

voici une petite vidéo pour montrer le comportement de sélection de test.
https://youtu.be/ozUP4f9ogtw

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Suggestions d'amélioration pour Xcas Windows

Message par parisse » mar. oct. 10, 2023 2:56 pm

Maxens Pupin a écrit :
lun. oct. 09, 2023 8:33 pm
Super fonctionnalité le retour du curseur en fin/début de ligne.
Alt+A est super, dommage que les autres raccourcis ne fonctionnent pas sur Windows...
Super pour le Ctrl+Suppr mais il serait bien d'avoir l'autre sens (vers la gauche) (plus souvent utilisé car sens inverse d'écriture)
Je viens d'implémenter Ctrl-Backspace. Par contre, pour le reste, je ne sais pas faire ou c'est trop compliqué vu l'usage qui est fait de Xcas version PC. Par exemple, ouvrir plus que de 2 ou 3 sessions simultanément, ça ne va arriver que très rarement, en fait personnellement je n'ai la plupart du temps qu'une seule session ouverte. Fermer une session n'est pas comparable à fermer un onglet de navigateur à mon avis, au sens où en principe on va la sauvegarder, donc devoir cliquer sur la croix pour fermer l'onglet n'est pas très pénalisant.
Une autre petite idée serait de pouvoir modifier toutes les occurrences de la sélection (par exemple on sélection un 'x' dans notre équation et on fait une modification sur tous les 'x' de la ligne de commande pour les transformer en 't' par exemple (rejoint la fonctionnalité de rechercher et remplacer))
C'est une fonctionnalité qu'on a dans un niveau de programmes. Du coup on peut s'y ramener avec un copier/coller: Ctrl-A Ctrl-C Alt-P Echap Ctrl-V
Selon la façon dont les raccourcis sont pris en compte, il faut peut être revoir le système qui s'en occupe. Pour une implémentation "basique" j'ai vu simplement un .txt avec pour chaque ligne le nom du paramètre (true/false pour un comportement, nom de l'action à faire associé à la clé du clavier ...)
par exemple : options.txt :
open_new_session:Alt+A
close_all:Ctrl+Q
clone_one:Ctrl+W
color_editor_bg:green2
Oui, on peut imaginer plein de formats possibles, mais après il faut implémenter tout ça pour tous les widgets concernés, je pense que ça demanderait trop de travail. Les menus configurables de Xcas n'étaient pas trop difficiles à implémenter, parce qu'il n'y a qu'un widget concerné (la barre de menu principale) et que FLTK parse lui-même l'item avec une structure arborescente à la Unix pour l'ajouter à un menu. Là tout est potentiellement impacté, or pour vous donner une idée, le code source de l'interface de Xcas c'est environ 50 000 lignes de code, 125 000 mots, 1.5 millions de caractères. On peut surement faire beaucoup mieux, surtout si la personne qui programme a comme domaine d'expertise l'interface, mais l'ordre de grandeur doit quand même être le bon. Je trouve personnellement que programmer de l'interface c'est une corvée, alors qu'optimiser un algorithme de maths, c'est dans mon domaine et c'est assez souvent amusant, un peu comme faire un highscore dans un jeu video (ou un lowscore en temps d'exécution). Et au bout de quelques années,l'interface c'est souvent du temps perdu car les interfaces et les toolkits changent, alors qu'un algo de math optimisé ça reste. Alors je fais juste le minimum pour que Xcas soit "good enough"...
Désolé si c'est un peu décevant comme réponse...

compsystems
Messages : 562
Inscription : sam. févr. 04, 2017 11:34 pm
Localisation : Colombia
Contact :

Re: Suggestions d'amélioration pour Xcas Windows

Message par compsystems » jeu. avr. 04, 2024 5:36 pm

Greetings
Mr. Parisse, it is good that the GUI can be contracted with third parties, that is, seek sponsorship to be able to pay for these services.
The Xcas online user interface works well, but in underdeveloped countries like Colombia we do not have guaranteed internet service during a class session, hence the importance of having a version of Xcas installed on Windows-OS.

And another point I would like to discuss is adding new commands for specific symbolic manipulation, focused not so much on the solution but on the procedure.

Thank you so much

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Suggestions d'amélioration pour Xcas Windows

Message par parisse » lun. avr. 08, 2024 10:23 am

The web interface is designed to be usable offline. Get https://www-fourier.univ-grenoble-alpes ... ashtml.zip, unzip it and open the file xcasen.html in your browser.
As for GUI, I'm favorable to all kinds of partnerships that someone could propose to me, but I won't try to find them myself, this is not the kind of job I'm good at (and it would require too much time anyway...).

Répondre