Chapitre 23 : Pour aller plus loin



Documents pareils
Création d'une interface graphique

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

.NET - Classe de Log

Cours Apl 11 - Introduction à la gestion des écrans

Le stockage local de données en HTML5

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Chapitre 4 Pierre, papier, ciseaux

"Indy\Source\Fulld7.bat" 6. Lancer à présent Delphi. Allez dans le menu "Composant" puis sur "Installer des paquets...".

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 2 Devine mon nombre!

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Introduction à MATLAB R

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Guide d'installation sous Windows

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Gestion d Active Directory à distance : MMC & Délégation

Swyx Skin Editor - Guide de l'utilisateur. SwyxIt Skin Editor L éditeur de création des habillages individuels

Examen Médian - 1 heure 30

Récupération de fichiers effacés avec Recuva 1/ 5

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

Paginer les données côté serveur, mettre en cache côté client


Programmation Objet - Cours II

L analyse boursière avec Scilab

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Java 7 Les fondamentaux du langage Java

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

@telier d'initiation

Programmation C++ (débutant)/instructions for, while et do...while

Comment enregistrer simplement toute musique restituée par votre PC

Animer son cours depuis la tablette

Cloner son système avec True Image

Trier les ventes (sales order) avec Vtiger CRM

Application 1- VBA : Test de comportements d'investissements

Comment faire des étiquettes

Comment créer un diagramme de Gantt avec OpenOffice.org

Guide de l'utilisateur : Surveillance MédiaSource Analytique

Introduction : Cadkey

Responsive Web Design. Responsive Design avec HTML 5.0 et CSS3

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER.

Recherche dans un tableau

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Module SMS pour Microsoft Outlook MD et Outlook MD Express. Guide d'aide. Guide d'aide du module SMS de Rogers Page 1 sur 40 Tous droits réservés

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

VOS PREMIERS PAS AVEC TRACENPOCHE

Les calques supplémentaires. avec Magix Designer 10 et autres versions

MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN

Electricité : caractéristiques et point de fonctionnement d un circuit

Création d une SIGNATURE ANIMÉE avec PHOTOFILTRE 7

Chapitre 1. Prise en main

Protocoles DHCP et DNS

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Premiers pas sur e-lyco

LibreOffice Calc : introduction aux tableaux croisés dynamiques

AGRÉGATION «ÉCONOMIE ET GESTION»

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

NAS 106 Utiliser le NAS avec Microsoft Windows

Table des matières. F. Saint-Germain / S. Carasco Document réalisé avec OpenOffice.org Page 1/13

EXCEL Les tableaux croisés dynamiques

Manipulations du laboratoire

Livre blanc Mesure des performances sous Windows Embedded Standard 7

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Gestion des utilisateurs : Active Directory

Tutoriel TYPO3 pour les rédacteurs

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

1. Introduction Création d'une requête...2

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

TUTORIAL REUTERS. Utilisation de l'utilitaire de recherche Reuters

StarDraw, le module de dessin de StarOffice 6/7

Chapitre 4 : Édition de fichiers texte - Vi

Conditions d'utilisation de la version gratuite

«Petit guide d utilisation Prezi» par Marc Nolet

Organigramme / Algorigramme Dossier élève 1 SI

Compilation (INF 564)

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

Onglet sécurité de Windows XP Pro et XP Home

Sql Server 2005 Reporting Services

TP Blender n 2 : Importation d un modèle SketchUp et animation

FinImportExport Documentation Utilisateur Gestion d'environnement dans Fininfo Market

Écrit par Riphur Riphur.net

LA RÉGULARISATION DES CHARGES EN FIN D EXERCICE

WordPress :: Migrer son site du local vers le serveur en ligne

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

Introduction à Business Objects. J. Akoka I. Wattiau

Cyberclasse L'interface web pas à pas

Introduction à Expression Web 2

Guide de configuration de SQL Server pour BusinessObjects Planning

ACTIVITÉ DE PROGRAMMATION

MODULES 3D TAG CLOUD. Par GENIUS AOM

Prise en main du logiciel. Smart BOARD Notebook 10

Best.-Nr Manuel d utilisation logiciel Lindab Analysis. Logiciel pour la gestion des appareils de mesures Lindab PC 410 et LT600

Sauvegarder automatiquement ses documents

HP Data Protector Express Software - Tutoriel 4. Utilisation de Quick Access Control (Windows uniquement)

Sauvegarde et restauration d'un système d'exploitation Clonezilla

Transcription:

1 Chapitre 23 : Pour aller plus loin Table des matières 1.1. Créer ses propres interfaces graphiques (section 23.4)... 1 Rafraîchir automatiquement les éléments d'une interface graphique... 1 Cet extrait est avant tout destiné aux lecteurs du livre imprimée. La version 5.5 de Scilab n'a pas entraîné de changements majeurs, et les usages décrits dans livre, initialement pour la version 5.4 de Scilab, restent entièrement valables. Quelques améliorations ont été apportées sur l'interaction avec les graphiques. Parmi elles, la possibilité de rafraîchir automatiquement les éléments d'une interface graphique, qui fait l'objet d'une nouvelle section dans la version numérique du livre. 1.1. Créer ses propres interfaces graphiques (section 23.4) Rafraîchir automatiquement les éléments d'une interface graphique Si vous souhaitez agir de manière répétée sur une interface graphique, les éléments de l'interface doivent être mis à jour en fonction des différentes actions. Ces modifications sont effectuées par des appels répétés aux différents callbacks associés aux éléments de l'interface. Pour cela, on les place dans une boucle dont on ne sortira qu'au moment de fermer l'interface graphique. Pour expliquer ce principe nous allons prendre l'exemple d'une interface qui trace le graphe de la fonction sur l'intervalle [-10;10] suivant la valeur de qu'on veut modifier à l'aide d'un curseur (slider). 1

Figure 1 : Graphe d'une fonction à paramètre contrôlé par un curseur Visionnez cette vidéo sur la galerie en ligne. L'analyse de cette interface permet de comprendre les différents éléments à programmer. D'abord l'interface graphique est représentée par un handle principal (appelons-le G) qui aura pour descendants les handles des autres éléments : un handle A correspondant au tracé du graphe ; un handle F, uicontrol de type frame, contenant les autres éléments de l'interface : le handle S, uicontrol de type slider, correspondant au curseur ; le handle T, uicontrol de type text, affichant la valeur du curseur ; le handle B, uicontrol de type pushbutton, affichant le bouton qui ferme la fenêtre ; deux autres handles correspondant aux valeurs affichées à gauche et à droite du curseur. Parmi ces handles, les éléments qui doivent être mis à jour en fonction des événements sont au nombre de trois, ils vont correspondre aux trois callbacks à définir : plot_callback pour mettre à jour l'apparence du graphe ; disp_callback pour mettre à jour la valeur du curseur ; quit_callback chargé de fermer l'interface. 2

Voici maintenant le code Scilab correspondant à tous ces éléments : // Mise en place de l'interface Hauteur=480; Largeur=640; // la figure G = figure('position', [0 0 Largeur Hauteur],... 'Tag','figure_handle',... 'backgroundcolor', name2rgb('lightblue')/255,... "figure_name", 'Scilab Demo GUI'); //A : Axes pour contenir le graphe A=newaxes(); A.auto_clear="on"; // effacer automatiquement // F va contenir les uicontrols F = uicontrol(g,... 'Tag','frame_handle',... 'position', [0 0 Largeur-2 35],... 'fontsize', 12,... 'style', 'frame',... 'string', 'boutons',... 'backgroundcolor', name2rgb('lightgray')/255); //le curseur S = uicontrol('parent',f,... 'style', 'slider',... 'Tag','slider_value',... 'position', [20 2 350 30],... "Min",0,"Max",10,... "value",0); // plusieurs zones de texte T = uicontrol('parent',f,... 'Tag','slider_value_display',... 'position', [500 2 80 30],... 'String',' ',... 'callback','disp_callback',...// va afficher la valeur du curseur T1 = uicontrol('parent',f,... 'Tag','slider_value_min',... 'position', [2 2 18 30],... 'String', '0',... 3

T2 = uicontrol('parent',f,... 'Tag','slider_value_max',... 'position', [372 2 40 30],... 'String', '10',... T3 = uicontrol('parent',f,... 'Tag','var_name',... 'position', [440 2 40 20],... 'String', '$$a=$$',... 'HorizontalAlignment', 'right',... 'FontSize',20); // un bouton pour quitter l'interface B = uicontrol('parent',f,... 'position', [Largeur-55,2 50 30],... 'Tag','quit_bouton',... 'fontsize', 12,... 'style', 'pushbutton',... 'string', 'Quitter',... 'callback', 'quit_callback',...// va stopper la boucle et fermer la fenêtre 'backgroundcolor', name2rgb('red')/255); // les callbacks function disp_callback() //récupère la valeur du curseur E1=findobj("Tag","slider_value"); value=e1.value; //change la valeur affichée E2=findobj("Tag","slider_value_display"); E2.string=string(value) function plot_callback() //récupère la valeur du curseur E1=findobj("Tag","slider_value"); value=e1.value; //trace la courbe drawlater() x=[1:0.001:20*%pi]; 4

y=cos(x).*cos(value*x) plot(x,y,'-r') xgrid(3) A=gca() A.title.text="$$y=\cos(x)\cos(a x)$$"; A.title.font_size=4; drawnow() function quit_callback() h=findobj("tag","figure_handle");// récupère le handle de la fenêtre delete(h); abort // quitte la boucle while // lancement de l'interface cont=%t while cont // la boucle principale if findobj("tag","figure_handle")==[] then cont=%f; // on quitte la fenêtre prématurément break else F.position=[0 0 G.figure_size(1)-2 35]; disp_callback() // mise à jour de la valeur a plot_callback() // mise à jour du graphe end end delete(gcf()) // si on quitte la fenêtre sans utiliser le boutton B C'est la boucle while à la fin du programme qui permet d'actualiser l'interface, en fonction des actions de l'utilisateur, en appelant répétitivement disp_callback et plot_callback. L'instruction F.position=[0 0 G.figure_size(1)-2 35]; modifie la position du uicontrol F contenant le curseur, les zones de texte et le bouton, en fonction de la taille de la fenêtre G.figure_size(1) (sa largeur en fait). Ceci permet à l'interface graphique de s'adapter aux modifications que l'utilisateur peut apporter à la taille de la fenêtre. Astuce > Regrouper des uicontrols dans un uicontrol de type frame permet de modifier facilement leur agencement dans la fenêtre puisqu'il suffit de modifier un seul handle pour modifier la position de tous ses descendants. Par contre il faudra penser le positionnement des éléments relativement au uicontrol de type frame et pas de manière absolue. Attention > Les différentes manières de quitter l'interface graphique peuvent provoquer des erreurs irrécupérables dans la session de Scilab. En particulier, si l'interface graphique est lancée depuis le niveau d'exécution principal de Scilab alors, si la figure est fermée prématurément, on peut obtenir des messages d'erreurs du type Le handle n'est pas ou n'est plus valide ou même ne plus pouvoir stopper la boucle qui gère le rafraîchissement de l'interface! 5