Étape 10 : Le programme, partie 2
Maintenant, nous pouvons définir les éléments d’interface graphique. En haut du fichier « robot.rcp » il faut une ligne qui contient :#include "robot.h"
Sans cette ligne, le compilateur ne serait pas substituer les noms d’élément pour les numéros d’identification.
Le premier formulaire (page) dans notre programme contient 2 photos, certaines étiquettes et certaines zones de texte. Les zones de texte ne devrait pas être modifiables par l’utilisateur. Je ne veux pas qu’il y ait une frontière, et il devrait y avoir un bouton qui permet à l’utilisateur d’arrêter facilement le programme de mise à jour de l’affichage du capteur.
FORM ID FormMain AT (0 0 160 160) NOFRAMEUSABLEMENUID MainMenu BEGIN TITLE "iRobot Status" FORMBITMAP AT (20 25) BITMAP PicRobot FORMBITMAP AT (110 21) BITMAP PicWall_ LABEL "Program:" AUTOID AT (10 120) FONT 0 FIELD ID FldProg AT (80 PREVTOP 70 AUTO) NONEDITABLE UNDERLINED MAXCHARS 15 LABEL "Voltage:" AUTOID AT (10 PREVBOTTOM+1) FONT 0 FIELD ID FldVoltage AT (80 PREVTOP 70 AUTO) NONEDITABLE UNDERLINED MAXCHARS 15 BUTTON "Stop" ID BtnDisconnect AT (110 102 AUTO AUTO) END
Le second formulaire serviront à sélectionner les programmes de démonstration sur l’iRobot Create. Elle devrait avoir une étiquette de texte explicatif, une liste des options possibles et un champ de texte (non modifiable) qui vous montrera une brève description de la démo sélectionnée. Il doit également contenir un titre, mais sans bordure.
FORM ID FormSelect AT (0 0 160 160) NOFRAMEUSABLEMENUID MainMenu BEGIN TITLE "Select Script" LABEL "Select a demo program or Macro:" AUTOID AT (5 20) FONT 0 LIST "Cover" "Cover and Dock" "Spot Cover" "Mouse" "Figure Eight" "Wimp" "Home" "Tag" "Pachelbel" "Banjo" ID SelScript AT (30 35 90 1) FONT 0 VISIBLEITEMS 5 FIELD ID FldDescription AT (5 PREVBOTTOM+8 145 60) FONT 0 NONEDITABLE UNDERLINED MULTIPLELINES MAXCHARS 255 END
La forme finale servira pour la création de scripts. Il devrait contenir quelques boutons qui contrôle le script comme un ensemble (par exemple "Exécuter le Script" ou "Supprimer le Script") ainsi que des boutons utilisé pour ajouter des commandes au script. Pour séparer ces 2 ensembles de boutons, il devraient être une ligne de démarcation (dans ce cas une image bitmap). Il devrait également y avoir un (encore une fois, non modifiables) champ de texte qui affiche les commandes dans le script, ce champ de texte devrait être accompagné d’une barre de défilement. Comme la dernière forme, il devrait y avoir un titre.
FORM ID FormMacro AT (0 0 160 160) NOFRAMEUSABLEMENUID MainMenu BEGIN TITLE "Create/Edit Macro" BUTTON "Send to robot" ID BtnSend AT (6 20 AUTO AUTO) BUTTON "Clear" ID BtnClear AT (PREVRIGHT+3 PREVTOP AUTO AUTO) BUTTON "Delete" ID BtnDel AT (PREVRIGHT+3 PREVTOP AUTO AUTO) FORMBITMAP AT (0 35) BITMAP PicBar BUTTON "Up" ID BtnUp AT (23 45 13 13) NOFRAME GRAPHICAL BITMAPID PicUp BUTTON "Left" ID BtnLeft AT (PREVLEFT-15 PREVTOP 13 13) NOFRAME GRAPHICAL BITMAPID PicLeft BUTTON "Right" ID BtnRight AT (PREVRIGHT+17 PREVTOP 13 13) NOFRAME GRAPHICAL BITMAPID PicRight BUTTON "Down" ID BtnDown AT (PREVLEFT-15 PREVBOTTOM+4 13 13) NOFRAME GRAPHICAL BITMAPID PicDown BUTTON "Clock" ID BtnClock AT (68 45 18 18) NOFRAME GRAPHICAL BITMAPID PicClock BUTTON "CClock" ID BtnCClock AT (PREVRIGHT+7 PREVTOP 18 18) NOFRAME GRAPHICAL BITMAPID PicCClock BUTTON "Pause" ID BtnPause AT (130 PREVTOP 18 18) NOFRAME GRAPHICAL BITMAPID PicPause LABEL "Plus" AUTOID AT (46 70) FONT 0 BUTTON "1" ID BtnP1 AT (PREVRIGHT PREVTOP 10 11) RECTFRAME BUTTON "2" ID BtnP2 AT (PREVRIGHT+1 PREVTOP 10 11) RECTFRAME BUTTON "4" ID BtnP4 AT (PREVRIGHT+1 PREVTOP 10 11) RECTFRAME BUTTON "8" ID BtnP8 AT (PREVRIGHT+1 PREVTOP 10 11) RECTFRAME BUTTON "16" ID BtnP16 AT (PREVRIGHT+1 PREVTOP 15 11) RECTFRAME LABEL "seconds" AUTOID AT (PREVRIGHT+2 PREVTOP) FONT 0 FORMBITMAP AT (0 PREVBOTTOM+5) BITMAP PicBar FIELD ID FldScript AT (5 90 135 70) FONT 0 NONEDITABLE UNDERLINED MULTIPLELINES MAXCHARS 500 HASSCROLLBAR SCROLLBAR ID SclScript AT (PREVRIGHT+5 PREVTOP 7 PREVHEIGHT) VALUE 0 MIN 0 MAX 8 PAGESIZE 1 END
Chaque forme devrait avoir un menu. Le menu permet à l’utilisateur de choisir entre les formes et le contrôle de communication avec le robot.
MENU ID MainMenu BEGIN PULLDOWN "Main" BEGIN MENUITEM "Status" ID MnuStatus "S" MENUITEM "Scripts" ID MnuScript "I" MENUITEM "Edit Macros" ID MnuMacro "M" END PULLDOWN "Robot" BEGIN MENUITEM "Connect" ID MnuConnect "C" MENUITEM "Disconnect" ID MnuDisconnect "D" MENUITEM SEPARATOR MENUITEM "Run" ID MnuRun "R" MENUITEM "Stop" ID MnuStop "O" END PULLDOWN "Help" BEGIN MENUITEM "Help" ID MnuHelp "H" MENUITEM "About" ID MnuAbout "A" END END
Nous devons définir l’écran « a propos ».
ALERT ID AboutAlert INFORMATIONBEGIN TITLE "About iRobot" MESSAGE "A program designed to communicate with an iRobot Create\n" \ "------------------\n"\ "By: Tristan Losier\n"\ "Released under the GPL\n"\ "------------------\n"\ "iRobot is a registered trademark of the iRobot Corporation" BUTTONS "Ok" END
Et enfin, et surtout, nous devons définir ensemble des bitmaps et icônes qui seront utilisés dans le programme. Vous remarquerez peut-être que beaucoup d'entre les bitmaps définies ci-dessous ne sont pas utilisés ci-dessus, c’est parce qu’ils sont utilisés ailleurs dans le programme.
BITMAP ID PicBar "images/bar.bmp" BITMAP ID PicRobot "images/irobot.bmp" BITMAP ID PicWall_ "images/wall_.bmp" BITMAP ID PicCliff "images/sensors/cliff.bmp" BITMAP ID PicWhealL "images/sensors/lwheal.bmp" BITMAP ID PicWhealR "images/sensors/rwheal.bmp" BITMAP ID PicBumpL "images/sensors/bumpl.bmp" BITMAP ID PicBumpR "images/sensors/bumpr.bmp" BITMAP ID PicWall "images/sensors/wall.bmp" BITMAP ID PicUp "images/buttons/up.bmp" BITMAP ID PicDown "images/buttons/down.bmp" BITMAP ID PicLeft "images/buttons/left.bmp" BITMAP ID PicRight "images/buttons/right.bmp" BITMAP ID PicClock "images/buttons/clock.bmp" BITMAP ID PicCClock "images/buttons/cclock.bmp" BITMAP ID PicPause "images/buttons/pause.bmp" ICON "robot.bmp" SMALLICON "robotsmall.bmp"