Fenêtres de dialogue spécifiques à Octave basées sur Zenity

Depuis l'implémentation des "Fenêtres de dialogue standards" MATLAB sous Octave 3.8, nous vous déconseillons d'utiliser les fonctions zenity_* présentées ici afin de préserver le caractère portable de votre code Octave/MATLAB.

Zenity est un outil du monde GNU/Linux sous GNOME permettant d'afficher aisément, depuis des scripts, des widgets basées sur les librairies GTK+ et Glade. Un package Octave-Forge, également nommé zenity, permet d'accéder aux possibilités de cet outil via des fonctions Octave nommées zenity_*.

Installation de Zenity sous Windows
Installation de Zenity sous GNU/Linux Ubuntu
Installation de Zenity sous macOS
Il vous faudra installer le portage DarwinPorts de Zenity, puis le package Octave zenity. Mais nous n'avons pas testé cette procédure, donc faites-nous signe si ça fonctionne !
Brève illustration des fonctions zenity_* sous Octave
Nous présentons ces fonctions sous forme d'exemples. Pour davantage de détails, référez-vous à l'aide en-ligne avec help zenity_fonction. Les illustrations ci-dessous proviennent de Octave & Zenity sous Ubuntu 10.04.

Boîte d'information :

zenity_message('Message d''info\nsur plusieurs lignes', 'info');

Notez la présence du \n pour passer à la ligne

Boîte d'avertissement :

zenity_message('Message d''avertissement...', 'warning');

Boîte d'erreur :

zenity_message('Message d''erreur...', 'error');

Pour afficher un message/avertissement/erreur dans la zone de notification Windows ou Linux, on utilisera zenity_notification de façon analogue à zenity_message
Question oui/non :

true_false = zenity_message('Voulez-vous... ?', 'question')

Affichage d'information dans un champ de plusieurs lignes :

zenity_text_info('Information', "Une longue info\n sur plusieurs lignes\nnon editable", true)

Notez ici la nécessité, compte tenu des \n, d'entourer la chaîne par
des guillemets (et non pas apostrophes).
Notez aussi la présence du 3e paramètre, par opposition à l'exemple suivant.

Saisie dans un champ de plusieurs lignes :

chaine = zenity_text_info('Votre commentaire', 'a inserer ici...')

Saisie dans champ simple :

chaine = zenity_entry('Pays', 'Suisse')

Saisie dans champ caché :

chaine = zenity_entry('Mot de passe', '', true)

Choix à partir d'une liste :

chaine = zenity_list('Choisir',{'Couleur'}, ...
    {'rouge','bleu','vert'})

Les 2e et 3e paramètres doivent être des tableaux cellulaires de chaînes

Choix multiple dans une liste :

tabcell = zenity_list('Choisir', ...
    {'Choix','Couleur'}, ...
    {'TRUE','FALSE','TRUE'; ...
      'rouge','bleu','vert'}, ...
    'checklist')

Semble bugué sous Octave 3.2 à 4.0 Windows+Linux au niveau retour d'info.

Choix d'une ligne dans un tableau :

chaine = zenity_list('Age et taille', ...
    {'Age', 'Taille'}, ...
    {'10', '120cm'; '20', '180cm'}')

On récupère ici seulement l'âge.
Pour récupérer toute la ligne (sur tableau cellulaire), ajouter le paramètre 'all'

Remarquez qu'on peut trier les lignes en cliquant sur les en-têtes de colonne

Saisie de plusieurs champs en ligne :

tabcell = zenity_list('Definir', ...
    {'Nom','Prenom'}', ...
    {'editer...','editer...'}', ...
    'editable','all')

Définition d'une valeur par slider :

nombre = zenity_scale('Temperature', ...
    'Choisir', 12, -10, 30, 2)

Le 3e paramètre est la valeur par défaut, le 4e la valeur minimum, le 5e la
valeur maximum, et le 6e est le pas lorsque l'on actionne le curseur avec
les touches de clavier <fléche-gauche> et <fléche-droite>

Sélection d'une date (jour/mois/année) :

jour_chaine = zenity_calendar('Choisir un jour :', 20,9,2010)

La date spécifiée (jour/mois/année) aux 2e à 4e param. est la valeur par défaut

Bugé sous Octave Windows 3.2.4 à 4.0 (mais pas Linux) au niveau retour
d'information (message d'erreur: datevec...)

Sélection d'un fichier existant (voir Illustration ci-dessous) :

  fichier = zenity_file_selection('Choisir fichier')

Définition d'un fichier a créer :

  fichier = zenity_file_selection('Fichier a créer', 'save')

Sélection multiple de plusieurs fichiers existants :

  fichiers_tabcell = zenity_file_selection('Choisir fichier(s)', 'multiple')

Sélection d'un répertoire existant :

  dossier = zenity_file_selection('Choisir dossier', 'directory')

IMPORTANT : sous Linux, ce qui est retourné sur les variables fichier et répertoire ci-dessus c'est une chaîne de caractère contenant le path absolu suivi du nom de fichier (par exemple /home/dupond/exos_matlab/mon_fichier.txt). Sous Windows par contre, cette fonction zenity_file_selection retourne dans tous les cas un tableau cellulaire dans lequel une cellule contient la lettre de lecteur sans le :\ , et l'autre cellule contient le path suivi du nom de fichier (par exemple Z dans la 1ère cellule, et \exos_matlab\mon_fichier.txt dans la seconde)

Affichage d'une barre de progression :

 widget = zenity_progress('Operation en cours', ...
     'auto-close')
for pourcent=0:2:100
   zenity_progress(widget, pourcent, ...
     sprintf('%u ...',pourcent) )
   pause(0.1)
end



Documentation © CC BY-SA 4.0 / / EPFL / Rév. 10-09-2017       ↵ Table des matières