Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
abuledu:developpeur:logiciels_du_terrier_en_tcl-tk [2008/11/26 18:35] http://abuledu.org/openid/ania.lesca |
abuledu:developpeur:logiciels_du_terrier_en_tcl-tk [2016/01/21 12:00] (Version actuelle) erics |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
====== Spécification de développement, | ====== Spécification de développement, | ||
Ligne 8: | Ligne 9: | ||
* Révision v0.3 14 juillet 2002 | * Révision v0.3 14 juillet 2002 | ||
* v8.11 22 novembre 2008 | * v8.11 22 novembre 2008 | ||
+ | * v8.12 14 décembre 2008 - ajout de la section " | ||
//Ce document essaye de préciser les contraintes que nous souhaitons respecter lors de l' | //Ce document essaye de préciser les contraintes que nous souhaitons respecter lors de l' | ||
Ligne 17: | Ligne 19: | ||
Il s'agit de respecter quelques règles simples qui, dans le passé, ont permis une relecture aisée du code produit. | Il s'agit de respecter quelques règles simples qui, dans le passé, ont permis une relecture aisée du code produit. | ||
- | Car une application | + | Car une application |
Mais elle meurt si elle est illisible. | Mais elle meurt si elle est illisible. | ||
Ligne 33: | Ligne 35: | ||
Commentons sans excès, mais commentons, les parties difficiles à comprendre. | Commentons sans excès, mais commentons, les parties difficiles à comprendre. | ||
- | Evitons | + | Évitons |
* faux | * faux | ||
Ligne 108: | Ligne 110: | ||
ou des identifieurs définis par l' | ou des identifieurs définis par l' | ||
- | Le choix des identifieurs définis par l' | + | Le choix des identifieurs définis par l' |
< | < | ||
Ligne 120: | Ligne 122: | ||
</ | </ | ||
- | est sûrement | + | est surement |
===== 4. Littéral et constante ===== | ===== 4. Littéral et constante ===== | ||
- | 60, 3.141592 et " | + | 60, 3.141592 et " |
Après les instructions : | Après les instructions : | ||
Ligne 156: | Ligne 157: | ||
Les indications concernant les constantes s' | Les indications concernant les constantes s' | ||
- | Evitons | + | Évitons |
< | < | ||
Ligne 231: | Ligne 232: | ||
* un (des) fichier(s) de messages traduits préfixés (fr_ uk_ etc.) | * un (des) fichier(s) de messages traduits préfixés (fr_ uk_ etc.) | ||
- | ===== 8.1 Le fichier de configuration | + | ==== 8.1 Le fichier de configuration ==== |
Ce fichier précise la langue utilisée par l' | Ce fichier précise la langue utilisée par l' | ||
Ligne 251: | Ligne 252: | ||
</ | </ | ||
- | ===== 8.2 Le fichier des messages | + | ==== 8.2 Le fichier des messages ==== |
Ligne 267: | Ligne 268: | ||
.menu add cascade -label [mc "À propos" | .menu add cascade -label [mc "À propos" | ||
</ | </ | ||
+ | |||
Exception : si le message doit contenir une variable, par exemple $var, le message doit être composé d'un seul mot suivi ou précédé de la variable. | Exception : si le message doit contenir une variable, par exemple $var, le message doit être composé d'un seul mot suivi ou précédé de la variable. | ||
Ligne 276: | Ligne 278: | ||
</ | </ | ||
- | ===== 8.3 Pour traduire, comment ça marche ? ===== | + | Autre exception : le message contient plusieurs variables séparées par des mots à traduire. Dans ce cas, l' |
+ | < | ||
+ | append titre "ALLER - " [mc " | ||
+ | wm title . $titre | ||
+ | </ | ||
+ | |||
+ | et précédemment nous aurions pu écrire : | ||
+ | < | ||
+ | append message [mc " | ||
+ | .menu add cascade -label $message -menu .menu.fichier | ||
+ | </ | ||
+ | |||
+ | ==== 8.3 Pour traduire, comment ça marche ? ==== | ||
Voir la doc sur le site abuledu : | Voir la doc sur le site abuledu : | ||
Ligne 285: | Ligne 300: | ||
L' | L' | ||
- | Divers projets ont été développé, sont en cours de développement, | + | Divers projets ont été développés, sont en cours de développement, |
* mulot | * mulot | ||
Ligne 293: | Ligne 308: | ||
* bonjour poussins | * bonjour poussins | ||
- | Dans ce contexte, pour chacun des projets, précisons ce projet dans le champ ' | + | Dans ce contexte, pour chacun des projets, |
* lt-mulot | * lt-mulot | ||
Ligne 301: | Ligne 316: | ||
* lt-poussins | * lt-poussins | ||
- | Et précisons l' | + | **Et précisons l' |
Exemple : | Exemple : | ||
Ligne 309: | Ligne 324: | ||
</ | </ | ||
- | ===== 10. A faire ===== | + | ===== 10. Le son ===== |
+ | |||
+ | Cette section a été ajoutée le 14 décembre 2008 et se propose d' | ||
+ | |||
+ | ==== 10.1 Le cas général ==== | ||
+ | |||
+ | Nous utilisons la bibliothèque snack pour gérer les accès à la carte son, snack est bien intégré dans les logiciels du terrier, association par exemple. | ||
+ | |||
+ | * Charger snack: | ||
+ | |||
+ | < | ||
+ | if {[catch {package require snack}]} { | ||
+ | set sound 0 | ||
+ | } else { | ||
+ | set sound 1 | ||
+ | snack:: | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * Utiliser snack: | ||
+ | |||
+ | < | ||
+ | snd configure -file [file join $Home sons $son$ext] | ||
+ | snd play | ||
+ | </ | ||
+ | |||
+ | Pour plus de détails, référez-vous au fichier sonlinux.tcl ou sonwindows.tcl | ||
+ | |||
+ | ==== 10.2 Spécificités AbulÉdu ==== | ||
+ | |||
+ | Sur les terminaux légers nous ne pouvons pas gérer le son de la même manière que sur un poste autonome. À l' | ||
+ | |||
+ | En TCL/Tk il suffit donc d' | ||
+ | |||
+ | < | ||
+ | exec esdplay $file | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 10.3 Proposition d' | ||
+ | |||
+ | Proposition pour satisfaire tout le monde et toutes les plates formes: | ||
+ | |||
+ | < | ||
+ | #en fonction de la plate-forme | ||
+ | switch $tcl_platform(platform) { | ||
+ | unix { | ||
+ | #si on est sur un serveur abuledu on en profite pour l' | ||
+ | if {[file isdirectory [file join /etc abuledu]]} { | ||
+ | set abuledu 1 | ||
+ | } else { | ||
+ | set abuledu 0 | ||
+ | } | ||
+ | source sonlinux.tcl | ||
+ | } | ||
+ | windows { | ||
+ | source sonwindows.tcl | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Et dans le fichier sonlinux.tcl on devra systématiquement tester la variable abuledu pour savoir s'il faut faire appel à snack ou esdplay | ||
+ | |||
+ | < | ||
+ | proc enterstart {file} { | ||
+ | if {$abuledu == 0} { | ||
+ | snd stop | ||
+ | update | ||
+ | catch { | ||
+ | snd configure -file $file | ||
+ | snd play | ||
+ | } | ||
+ | } else { | ||
+ | set cur [pwd] | ||
+ | set file [string map {./ /} $file] | ||
+ | set file " | ||
+ | catch { | ||
+ | exec esdplay $file | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | #on ne charge pas snack si on est sur abuledu c'est snack qui provoque | ||
+ | #les erreurs de open / | ||
+ | if {$abuledu == 0} { | ||
+ | #on est sous linux, on essaye de charger la lib snack | ||
+ | if {[catch {package require snack}]} { | ||
+ | #ca n'a pas marche, on est donc sans son | ||
+ | set sound 0 | ||
+ | } else { | ||
+ | set sound 1 | ||
+ | snack:: | ||
+ | } | ||
+ | } else { | ||
+ | #on est sur abuledu par defaut on a du son via esdplay | ||
+ | #esdplay a la bonne idee de ne pas provoquer d' | ||
+ | #si le TX n'a pas de carte son ! | ||
+ | set sound 1 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== 11. Utiliser le pavé numérique sous Linux ===== | ||
+ | |||
+ | Cette section a été ajoutée le 14 décembre 2008 et se propose de fournir une solution pour la gestion du pavé numérique lorsqu' | ||
+ | |||
+ | < | ||
+ | proc changenum {c key} { | ||
+ | global curcol currow | ||
+ | focus -force .frame.c | ||
+ | |||
+ | $c itemconf textcol[expr \$curcol]row[expr \$currow] -text $key | ||
+ | switch $key { | ||
+ | BackSpace - Delete {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text .} | ||
+ | 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text $key} | ||
+ | #le pavé numérique sous linux retourne les codes suivants au lieu | ||
+ | #de retourner directement les chiffres ... | ||
+ | KP_Insert {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_End {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_Down {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_Next {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_Left {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_Begin {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_Right {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_Home {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_Up {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_Prior {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text " | ||
+ | KP_Delete {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text ,} | ||
+ | comma {$c itemconf textcol[expr \$curcol]row[expr \$currow] -text ,} | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ===== 12. À faire ===== | ||
* répertoire de sauvegarde des traces-élèves (utilisation d'une variable d' | * répertoire de sauvegarde des traces-élèves (utilisation d'une variable d' | ||
* format de la trace-élève (a priori en XML) ; les champs sont à définir | * format de la trace-élève (a priori en XML) ; les champs sont à définir | ||
- | * language | + | * langage |
Si nous choisissons python+Qt, un bon outil de développement serait Qt-designer | Si nous choisissons python+Qt, un bon outil de développement serait Qt-designer | ||
- | Utiliser la forge : gforge.ryxeo.com | + | Utiliser la forge du Terrier |