Apprendre Maple Le package Maplets
 
  Page d'accueilPage d'accueil   RechercherRechercher   Forum de discussionForum de discussion   ContactContact   SommaireSommaire 
  Cours MapleCours Maple   Travaux dirigésTravaux dirigés   Thèmes d'activitésThèmes d'activités   MapletsMaplets 
Ecran MapleEcran Maple  TéléchargementTéléchargement  BibliographieBibliographie  LiensLiens  

 

 

Page d'accueil   Maplets   Page suivante >>


Le package Maplets, incorporé dans Maple depuis la version 8, utilise la technologie Java [TM] Runtime Environment.
Il comprend différents outils permettant la création de mini-applications (ou applets) Java appelées maplets.
Ces maplets peuvent être exécutés:
• soit directement depuis une feuille de travail Maple.
• soit indépendamment de l'interface d'une feuille de calcul Maple, à partir de la visionneuse de maplets (Maplet Application Viewer).  

 

> restart:
   with(Maplets);
 

[Display, Elements, Examples, Tools]

La fonction Display:

La fonction Display permet d'exécuter et de visualiser un maplet depuis la feuille de calcul, comme le montre le premier exemple très simple suivant:

> restart:
   with(Maplets[Elements]):
   maplet1a := Maplet( [["Mon premier maplet"]] ):
   Maplets[Display]( maplet1a );

Le package Maplets[Elements]:

Le sous-package Elements du package Maplets comporte différents outils premettant d'intégrer, dans les fenêtres des maplets,
des éléments graphiques tels que les boutons, les menus, les barres d'outils, etc...

> with(Maplets[Elements]);

[Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDi... [Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDi... [Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDi... [Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDi... [Action, AlertDialog, Argument, BoxCell, BoxColumn, BoxLayout, BoxRow, Button, ButtonGroup, CheckBox, CheckBoxMenuItem, CloseWindow, ColorDialog, ComboBox, ConfirmDialog, DropDownBox, Evaluate, FileDi...

On peut ranger ces outils en sept catégories:

• Commandes  • Dialogues  • Éléments de disposition
(en anglais: Layout)  
• Éléments de menus   • Éléments de barres d'outils   • Éléments de fenêtres     • Autres éléments


On illustrera chaque catégorie par des maplets d'exemples.

Commandes:

Une Action peut contenir plusieurs éléments de type commande. Lorsqu'une action est enclenchée, chaque commande élément
de cette action est exécutée dans l'ordre.


CloseWindow
(Fermer une fenêtre) , RunWindow (Ouvrir une fenêtre) , ShutDown (Met fin à l'application maplet en cours) :

> restart;
   with(Maplets[Elements]):
   maplet1b := Maplet('onstartup' = 'A1',
   Window['F1']("Fenêtre1",
    [Button("Ouvre une nouvelle fenêtre", RunWindow('F2')),
     Button("Quitter", Shutdown("Fenêtre1"))]
    ),
    Window['F2']("Fenêtre2",
    [Button("Fermer cette fenêtre", CloseWindow('F2')),
     Button("Quitter", Shutdown("Fenêtre2"))]
    ),
    Action['A1'](RunWindow('F1'))
   ):
  Maplets[Display](maplet1b);

 

Evaluate (Évaluer une expression Maple):

> restart;
   with(Maplets[Elements]):
   maplet1c:=Maplet( [
   "Entrer une expression de la variable x:",
   [ TextField['TF1']('width' = 30)],
   [  Button("Intégrer", Evaluate('TF1' = 'int('TF1',x)')),
      Button("Quitter", Shutdown(['TF1']))
   ]
  ] ):
  Maplets[Display](maplet1c):

RunDialog (Afficher un élément de type Dialogue) :

> restart;
   with(Maplets[Elements]):
   maplet1d := Maplet('onstartup' = 'A1',
   Window['W1']([
           [Button("Intégrer", RunWindow('W2'))],
           [Button("Aide", RunDialog('MD1'))]]
    ),
   Window['W2']('title'="Intégrer", [
     [
        "Entrer une expression de la variable x:",
        TextField['TF1']()
     ],
     [
        Button("Intégrer", Evaluate('TF1' = 'int(TF1, x)')),
        Button("Quitter", Shutdown(['TF1']))
     ]
    ]),
    MessageDialog['MD1']("Voir ?int pour lire la page d'aide sur la fonction int."),
    Action['A1'](RunWindow('W1'))
   ):
   Maplets[Display](maplet1d);
 

SetOption (Attribuer une valeur à une option d'un élément d'un maplet):

> restart:
   with(Maplets[Elements]):
   maplet1e:= Maplet( [
   "Entrer un texte:",
   TextField['TF1'](20),
   TextField['TF2'](20, 'editable'='false'),
   [
     Button("Effacer la première ligne", SetOption('target' = 'TF1', 'value' = "")),
     Button("Copier dans la seconde ligne", SetOption('target' = 'TF2', Argument('TF1'))),
     Button("Résultat: le contenu de la seconde ligne", Shutdown(['TF2']))
   ]
   ] ):
   Maplets[Display](maplet1e);

Dialogues:
Les éléments de type Dialogue ont une configuration prédéfinie, ce qui les distingue des éléments de fenêtre qui eux peuvent
contenir d'autres éléments définis par l'utilisateur. La plupart des éléments de type Dialogue ont une valeur (excepté l'élément
MessageDialog
) et les résultats peuvent être utilisés par Maple en cas de besoin ultérieur.

AlertDialog
(Permet à l'utilisateur de répondre à un message d'alerte en sélectionnant OK ou Annuler)
ConfirmDialog
(Permet à l'utilisateur de répondre à un message de confirmation en sélectionnant Oui, Non ou Annuler)
MessageDialog
(Permet d'adresser à l'utilisateur un message dans une fenêtre que celui refermera en cliquant OK)
QuestionDialog  
(Permet à l'utilisateur de répondre à une question en sélectionnant Oui ou Non)
 

> restart:
   with(Maplets[Elements]):
   recommencer:=true:
   maplet1f:= Maplet( QuestionDialog("Voulez-vous recommencer?",
   'onapprove'=Shutdown('true'),
   'ondecline'=Shutdown('false')
   ) ):
   while recommencer do
      recommencer:=evalb(Maplets[Display](maplet1f)="true")
   end do;

recommencer := false

FileDialog (Permet à l'utilisateur de sélectionner un fichier)
InputDialog
(Permet à l'utilisateur de répondre à un message en entrant un texte et en sélectionnant OK, ou en sélectionnant Annuler)
ColorDialog  
(Permet à l'utilisateur de sélectionner une couleur à partir d'échantillons, ou des palettes HSB et RVB)

> restart:
   with(Maplets[Elements]):
   maplet1g:= Maplet( ColorDialog['CD1'](
   'onapprove' = Shutdown(['CD1']),
   'oncancel' = Shutdown()
   ) ):
   resultat:=Maplets[Display](maplet1g);

resultat := [

Éléments de disposition:
BoxCell
(Spécifie une cellule dans un des éléments suivants: BoxColumn, BoxLayout ou BoxRow)
BoxColumn
(Spécifie une disposition d'éléments en colonne dans un élément BoxLayout )
BoxRow
(Spécifie une disposition d'éléments en ligne dans un élément BoxLayout )
BoxLayout
(Définit une disposition d'éléments dans un maplet)
Ceci permet de contrôler la façon dont les éléments apparaîtront (horizontalement ou verticalement) par rapport aux autres éléments.

> restart:
   with(Maplets[Elements]):
   maplet1h := Maplet(
    BoxLayout(
     BoxColumn('halign'='left','valign'='none',
        BoxCell(Button("Élément 1", Shutdown([]))),
        BoxCell(Button("Élément 2", Shutdown([]))),
        VerticalGlue(), # séparateur vertical
        BoxCell(Button("Élément 3", Shutdown([]))),
        VerticalGlue(), # séparateur vertical
        VerticalGlue(), # séparateur vertical
        BoxCell(Button("Élément 4", Shutdown([])))
     ),
      BoxRow('halign'='left','valign'='none',
        BoxCell(Button("Élément 5", Shutdown([]))),
        HorizontalGlue(), # séparateur horizontal  
        BoxCell(Button("Élément 6", Shutdown([])))
      )
    )
   ):
   Maplets[Display](maplet1h);

GridCell (Spécifie une cellule dans une ligne d'une disposition en grille GridRow)
GridRow
(Spécifie une ligne dans une disposition en grille GridLayout)
GridLayout
(Définit une disposition d'éléments selon une grille dans un maplet)    


> restart:
   with(Maplets[Elements]):
   maplet1i := Maplet(GridLayout(
     GridRow(
        GridCell(Button("Élément 1", Shutdown([]))),
        GridCell(Button("Élément 2", Shutdown([]))),
        GridCell(Button("Élément 3", Shutdown([])))
      ),
     GridRow(
       GridCell(Button("Élément 4", Shutdown([]))),
       GridCell(Button("Élément 5", Shutdown([])))
      )
    )):
   Maplets[Display](maplet1i);

Éléments de menus:
Une barre de menus peut être insérée dans une fenêtre. Cette barre de menus peut contenir différents menus, chacun d'eux
étant divisé en items (sous-menus) ou séparateurs.

MenuBar
(Définit une barre de menus dans une fenêtre de maplet)
Menu
(Définit un menu dans une barre de menus)
MenuItem
( Définit dans un menu un item, c'est à dire un sous-menu)
CheckBoxMenuItem
( Définit dans un menu un item muni d'une case à cocher)
RadioButtonMenuItem
( Définit dans un menu un item muni d'un bouton d'options)
MenuSeparator
(Définit dans un menu un séparateur)                                   

> restart:
   with(Maplets[Elements]):
   maplet1j := Maplet(
   Window('menubar'='MB1', [[Button("OK", Shutdown("Quitter à partir du bouton"))]]),
   MenuBar['MB1'](
     Menu("Fichier",
         MenuItem("Fermer", Shutdown("Quitter à partir du menu", ['RBMI1', 'RBMI2']
     ))),
     Menu("Options",
        RadioButtonMenuItem['RBMI1']("Option 1", 'group'='BG1'),
        RadioButtonMenuItem['RBMI2']("Option 2", 'group'='BG1'),
        MenuSeparator(),
        RadioButtonMenuItem['RBMI3']("Option 3", 'group'='BG2'),
        RadioButtonMenuItem['RBMI4']("Option 4", 'group'='BG2'),
        MenuSeparator(),
        CheckBoxMenuItem['CBMI1']("Case à cocher")
      )
    ),
       ButtonGroup['BG1'](),ButtonGroup['BG2']()
   ):
   Maplets[Display](maplet1j);

PopupMenu (Définit un menu pop-up dans un élément de type: Maplet, TextBox, ou TextField ):

> restart:
   with(Maplets[Elements]):
   maplet1k := Maplet(
   Window([
     ["Entrer dans la zone de texte une expression en x et en y"],
     [TextField['TF1']('popupmenu'='PM1'), Button("Quitter", Shutdown(['TF1']))],
     ["Faire un clic droit dans la zone de texte pour afficher le menu pop-up"]
    ]),  
    PopupMenu['PM1'](
      Menu("Dériver",
        MenuItem("Par rapport à x", Evaluate('TF1' = 'diff(TF1, x)')),
        MenuItem("Par rapport à y", Evaluate('TF1' = 'diff(TF1, y)'))
      ),
      MenuSeparator(),
      MenuItem("Quitter", Shutdown(['TF1']))
    )
   ):
   Maplets[Display](maplet1k);

Éléments de barres d'outils:
Une barre d'outils peut être insérée dans une fenêtre. Cette barre d'outils peut contenir différents boutons ou séparateurs.

ToolBar
(Définit une barre d'outils dans une fenêtre de maplet)
ToolBarButton
(Définit un bouton dans une barre d'outils)
ToolBarSeparator
(Définit un séparateur dans une barre d'outils)         

> restart:
   with(Maplets[Elements]):
   maplet1l := Maplet(
    Window('title' = "Intégration", 'toolbar' = ToolBar(
      ToolBarButton("Intégrer", 'onclick'=Evaluate('TF1' = 'int(TF1, x)')),
      ToolBarSeparator(),
      ToolBarButton("Quitter", Shutdown())
    ),
    [  "Entrer une expression de la variable x:",
       TextField['TF1']()
    ])
   ):
   Maplets[Display](maplet1l);

Éléments de fenêtres:
Button
(Définit un bouton dans une fenêtre de maplet)
CheckBox
(Définit une case à cocher dans une fenêtre de maplet)
ComboBox
(Définit une liste déroulante combinée à une zone de texte dans une fenêtre de maplet)
DropDownBox
(Définit une liste déroulante dans une fenêtre de maplet)
Label
(Définit une étiquette dans une fenêtre de maplet)    
RadioButton
(Définit un bouton d'options dans une fenêtre de maplet)

> restart:
   with(Maplets[Elements]):
   maplet1m := Maplet(BoxLayout(
     BoxColumn(
       BoxCell("ComboBox:"),
       BoxCell(ComboBox['CB1']( 'value' = "Lundi", [
       "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi",
       "Dimanche"] )),
       VerticalGlue(),
       BoxCell("DropDownBox:"),
       BoxCell(DropDownBox['DDB1']( 'value' = "Béatrice", [
       "Béatrice", "Edouard", "François", "Hubert", "Noelle", "Raymond",
       "Samuel", "Valérie"] ))
      ) ,
     BoxColumn(
       BoxCell("CheckBox:"),
       BoxCell(CheckBox['ChB1']( 'value' = 'true' )),
       BoxCell("RadioButtons:"),
       RadioButton['RB1']( "Option 1", true, 'group'=BG1 ),
       RadioButton['RB2']( "Option 2", 'group'=BG1 )
     ),
     BoxColumn(
       BoxCell("Label:"),
       Label("Etiquette", 'font' = Font("helvetica", italic, 12), 'background'="#FFCC99"),
       BoxCell("Button:"),
       Button("Quitter", Shutdown(['RB1', 'RB2']))
     )
     ),
     ButtonGroup['BG1']() ):
   Maplets[Display](maplet1m);

ListBox (Définit une liste simple dans une fenêtre de maplet)
MathMLEditor
(Définit un éditeur d'équations MathML dans une fenêtre de maplet)
MathMLViewer
(Définit un visualiseur d'expressions MathML dans une fenêtre de maplet)
Plotter
(Définit une zone de dessin dans une fenêtre de maplet)
Slider
(Définit une barre de défilement de type "jauge" dans une fenêtre de maplet)
Table
(Définit une table dans une fenêtre de maplet)
TextBox
(Définit une zone de saisie de texte dans une fenêtre de maplet)
TextField
(Définit une zone de saisie de texte d'une ligne dans une fenêtre de maplet)
ToggleButton
(Définit un bouton de type "Enfoncé/Relâché" dans une fenêtre de maplet)

> restart:
   with(Maplets[Elements]):
   maplet1n := Maplet( Window( BoxColumn('vscroll'='always',
     ["Fonction à intégrer: ", TextField['TF1']()],
     ["Variable d'intégration: ", TextField['TF2'](3)],
     TextField['TF3']( 'editable' = 'false' ),
     Plotter['PL1']('height'=250),
     Slider['SL1']( 0..20, 5, 'showticks', 'majorticks'=5, 'minorticks'=1, 'visible'='false',

     Evaluate( 'PL1' = 'plot([TF1, TF3], TF2=0..SL1)' ) ),
     MathMLViewer['MMLV1'](),
     [Button("Intégrer", Action(Evaluate('TF3' = 'int(TF1, TF2)'), Evaluate( 'MMLV1' = 'MathML[Export](TF3)' )   

     ,SetOption('B1'(enabled)='true'))),
     Button("Effacer", Action(SetOption('TF1' = ""), SetOption('TF2' = ""), SetOption('TF3' = ""),
     SetOption('MMLV1'('value')=""), SetOption('B1'(enabled)='false'), SetOption('SL1'('visible')='false'),

     Evaluate( 'PL1' = 'plot(undefined, x=0..SL1)' ))),
     Button['B1']("Représenter", 'enabled'='false', Action( SetOption('SL1'('visible')='true'),

     Evaluate( 'PL1' = 'plot([TF1, TF3], TF2=0..SL1)' ) ) ),
     Button("Aide", RunDialog('MD1')),
     Button("Quitter", Shutdown(['TF1', 'TF2', 'TF3']))]
   ) ),
    MessageDialog['MD1']( "Ce maplet donne la représentation graphique d'une fonction et d'une de ses primitives \n

   et permet de visualiser cette primitive en MathML.", 'type'='information' ) ):
   Maplets[Display](maplet1n);

Autres éléments:
Action
(Définit une action dans une fenêtre de maplet)
Argument
(Spécifie l'argument d'un appel d'une fonction Maple)
ButtonGroup
(Définit un groupe de boutons associés, comme les boutons d'options)
Font
(Définit une police de caractères)
Image
( Spécifie une image  .jpg or .gif dans une fenêtre de maplet)       
Item
(Spécifie un item dans un élément ComboBox, DropDownBox, ou ListBox)
Maplet
(Définit un maplet)
Return
( élément contenant un ou plusieurs éléments de type ReturnItem)
ReturnItem
(Spécifie quelles valeurs sont retournées à Maple quand une application Maplet se termine)
Window  
(Définit une fenêtre dans un maplet, qui comprend une barre de titre, une barre de menus (optionnelle), une barre d'outils (optionnelle) et un corps)

> restart:
   with(Maplets[Elements]):
   maplet1o := Maplet(
     [ [Label("Image dans une zone d'étiquette:",'font' = Font("Arial", italic,14))],
     #Modifier au besoin le chemin et le nom du fichier image"
     [Label['LBL1']('image'=Image("C:\\logo.gif"))],
     [Button['B1']("OK", 'onclick' = 'A1')]],
     Action['A1'](Shutdown())
   ):
   Maplets[Display](maplet1o);

TableHeader (Définit une entête de colonne dans une table)
TableItem
(Définit un item (ou cellule) dans une table)
TableRow
(Définit une ligne dans une table)

> restart:
   with(Maplets[Elements]):
   maplet1p := Maplet([
    BoxCell(
     Table(
        TableHeader(
           TableItem("Colonne A"),
           TableItem("Colonne B")
        ),
        TableRow(
           TableItem('caption'=1),
           TableItem('caption'=2)
        ),
        TableRow(
           TableItem('caption'=3),
           TableItem('caption'=4)
        )
      ),
    'as_needed'),
    Button("OK", Shutdown())
   ]):
   Maplets[Display](maplet1p);

 

Le package Maplets[Examples]:

Le sous-package Examples du package Maplets comporte différents exemples intéressants qu'on se doit de consulter:

> with(Maplets[Examples]);

Warning, the protected name LinearAlgebra has been redefined and unprotected

[Alert, Confirm, GetColor, GetEquation, GetExpression, GetFile, GetInput, Integration, KernelOpts, LinearAlgebra, Message, Question, Selection, ShowTable, SignQuery]

 

Le package Maplets[Tools]:

Le sous-package Tools du package Maplets comporte les outils suivants:

> with(Maplets[Tools]);

[AddAttribute, AddContent, Get, ListBoxSplit, Print, Set, SetTimeout, StartEngine, StopEngine]

Signalons entre autres:
Get
(Permet d'obtenir un résultat à partir d'une propriété d'un élément d'un maplet)
Set
(Permet de modifier une propriété d'un élément d'un maplet)

> restart:
with(Maplets[Elements]):with(Maplets[Tools]):

Obtention et modification de la valeur de la ligne de texte 'TF1': on intègre plusieurs fois par rapport à x l'expression contenue dans
ce champ en cliquant à plusieurs reprises sur le bouton "Intégrer".

> ProcSet := proc()
    Maplets:-Tools:-Set( 'TF1' = int(Maplets:-Tools:-Get('TF1'::algebraic), x) );
    end proc;

ProcSet := proc () Maplets:-Tools:-Set('TF1' = int(Maplets:-Tools:-Get('TF1'::algebraic), x)) end proc

> maplet1q := Maplet([TextField['TF1'](), [
  Button("Intégrer par rapport à x", Evaluate('function' = "ProcSet")),
  Button("OK", Shutdown(['TF1']))
]]):
Maplets[Display](maplet1q);

 

haut de cette page


©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.