[PyMUI] – Alpha release
-
Yomgui : AMHA, il ne faut pas que tu te prennes la tête, surtout si le nombre d’utilisateurs reste « réduit ». Toutefois, ton PyMUI m’intéresse fortement et je serais heureux si tu allais au fond des choses et tentait la deuxième idée.
Mais comme dit, ce n’est peut-être la peine que tu y passes des heures si nous sommes seulement deux ou trois à l’utiliser.
Donc, je te laisse décider et je te conseillerai de faire ce qui te sembles le plus facile et le moins contraignant pour toi.
—
/me n’a désormais plus aucune excuse !
Only Amiga makes it possible !
Yomgui : Je préfèrerais que MUI se fasse oublier pour encore plus de facilité et pour réutiliser une API d’interface qui existe déjà en Python. Mais si ça n’existe pas ou si c’est très lié à WxWidgets par exemple et bien alors comme le dit le sage BatteMan, envisage plutôt un wrapper MUI qui sera plus Amiga-like et que les utilisateurs pourront peut-être plus s’approprier.
Je ne sais pas combien l’utiliseront mais il faut faire de la pub sur d’autres sites (généralistes et de développement).
En effet, Yomgui est grand !
Je remonte ce fils vu que j’ai de bonnes nouvelles
Après pas mal de temps passé dessus et BEAUCOUP de travail, de ré-écritures et de nuits courtes… J’approche d’avoir une version Beta de PyMUI (nom final), module permettant d’utiliser MUI à travers Python pour rappel.
Alors c’est avec joie que je vous propose de tester une version Alpha, mise sur mon espace web.
Pour voir rapidement la chose en fonctionnement je vais aussi donner un petit script d’exemple, si après vous souhaitez ‘maniper’ il vaut mieux connaître d’abord Python et MUI car je peux dire que la doc n’est pas à l’ordre du jour
Avant de commencer l’installation, ce n’est pas 1 module que j’ai écris mais 2 packages complets, comprenant de nombreux modules:
PyAmiga:
PyMUI repose complètement dessus. Ce package composé de plusieurs modules permet d’accéder plus ou moins directement à l’API AmigaOS par python.
Les modules représentent chacun un support pour chaque bibliothèque AmigaOS. Un module principal (appelé _core) donne des nouveaux types, base pour tous les autres modules ainsi que PyMUI.
Pour l’instant, et pour les besoins de PyMUI, il n’y a de dispo que _exec (exec.library, pas ‘exec’ car c’est un mot clés de Python), gfx (graphics.library) et intuition (intuition.library… original n’est-ce pas ).
Chacun d’entre eux apportant l’accès à l’API ainsi que des nouveaux types, basés sur ceux de _core.
* _core apporte principalement 2 types pouvant servir de base pour des classes mais utilisables seuls aussi (enfin pour l’instant…):
CPointer: représente un pointeur C en mémoire.
CStructure: représente une structure allouée en mémoire.
* _exec: API + 2 types: Node et List.
* gfx: en plus de l’API, seul type d’écrit ici RastPort, utilisé par intuition pour les structures RastPort des écrans et fenêtres.
* intuition: API + 2 types, Screen et Window… je vous laisse deviner à quoi cela sert.
Pour savoir comment utiliser cela je vous laisse lire la note plus bas, après l’installation.
PyMUI:
Ce package est découpé en 2 grandes parties:
– une partie bas-niveau écrite en C, qui utilise le cadre de travail donné par PyAmiga (CPointer), permettant de créer et de manipuler des objets MUI. Cette partie est représentée par un module nommé _muimaster ;
– une partie haut-niveau écrite en Python, utilisant la précédente partie et qui va Pythonifier quelques aspects de MUI. Donner une forme aux principales classes de MUI comme MUIC_Notify, MUIC_Application, … Cette partie se retrouve dans les fichiers .py dont le seul représentant actuel est _core.py
Maintenant je ne vous fait pas attendre plus longtemps, je vous vois baver d’envie d’essayer:
Installation:
Python
1) Télécharger quelque part l’archive suivante: Python – 7a
Note: Il y avait un pb avec l’archive 7a de l’année passée, prendre celle-ci maintenant.
2) Décompresser cette archive quelque part aussi (pas d’importance).
Vous obtiendrez un répertoire Python-2.4.4 ;
3) Exécuter le script shell install_me dans une console ou bien (pour les pros…) en double-cliquant sur son icone. Faite ce que vous-voulez du contenu de Developer, mais je vous conseil de le mettre dans votre installation du SDK MorphOS si vous voulez un jour compiler vous même les modules Python en utilisant les sources, plutôt que d’attendre les archives binaires ;
4) Vous pouvez effacer le répertoire Python-2.4.4 maintenant.
Vous venez d’installer Python dans votre système! dur je sais…
PyAmiga et PyMUI
On va pas s’arrêter en si bon chemin. Reprenez votre respiration…
1) Télécharger quelque part les archives suivantes: PyAmiga – Alpha et PyMUI – Alpha
2) Décompresser ces archives quelque part sans importance, mais au même endroit pour les deux, c’est plus simple ;
3) Copier intégralement sans vous posez de questions le contenu du répertoire Libs dans…. LIBS: . Faites ce que vous voulez de includestd, mais comme pour Python vous pouvez l’utiliser aussi, mais cela reste inutile pour l’utilisation de base de PyMUI ;
4) Effacer includestd et Libs maintenant si cela n’est pas déjà fait.
Félicitation, c’est terminé!
Utilisation:
Bon là on rigole plus!
Déjà commencez par vérifier que le programme python-2.4.4 installé dans C: fonctionne en l’exécutant dans un nouveau shell. Vous pouvez aussi exécuter python, lien symbolique sur python-2.4.4 si vous avez utilisé le script install_me.
Si vous avez juste 2 lignes à-propos de chemins qu’il trouve pas, c’est pas important.
Ensuite vous avez un petit message donnant la version, puis le prompt de l’interpréteur Python apparaît:
>>>
Pour voir si tout est bien installé au niveau de PyAmiga et PyMUI, tapez à la suite (je laisse le prompt visible) avec ENTER à la fin:
>>> import pymui
>>>
Rien ne doit s’afficher de plus qu’un retour au prompt.
Tout est ok? alors on quitte avec COMMAND-Q (COMMAND = touche AMIGA, POMME, WINDOWS… suivant clavier ), où bien en fermant la fenêtre de la console… qui ne ferme pas la fenêtre mais quitte l’interpréteur pour revenir au shell.
Une petite démo? Télécharger ceci dans RAM: par exemple: HelloWorld.py
Dans un shell taper:
python RAM:HelloWorld.py
et admirer
Info
Pour connaître le contenu des packages, taper dans un shell ceci:
pydoc pyamiga
ou
pydoc pymui
pydoc est installé dans C: en même temps que Python.
[edit] Tel quel pydoc peut ne pas fonctionner chez vous si vous n’avez pas l’assign usr: et le chemin usr:bin/env pointant sur le binaire env du SDK MorphOS.
Il faut modifier la première ligne du scripts C:pydoc de la façon suivante:
Avant: #!/usr/bin/env python
Après: #!python
Je vais peut-être me mettre enfin à Python un jour depuis que mon neveu me tanne pour que je m’y mette…
Abonnez-vous à ma nouvelle chronique "En Route vers le Futur" sur Youtube !
Incroyable tout ton boulot Yomgui (sur Blender également) !
Encore BRAVO Yomgui, tu es grand (*) !
/me encourage.
(*) en fait j’en sais rien si tu es réellement grand
Testé aussi et ça marche, je dirais même que c’est vivant !!!
J’ai voulu maté les packages avec pydoc et là, c’est le drame… j’ai droit à un « usr:bin/env: Unknown command » alors que pydoc est bien dans c: mais j’ai probablement foiré/oublié un truc à l’install’…
—
/me va mater tout ça et remercie grand Yomgui
Only Amiga makes it possible !
Bat: ah oaui je vois, en fait usr: c’est assigné a GG:usr, fait par l’install du SDK de MorphOS. alors forcement quand on a pas le SDK, ca marche pas.
Pi maintenant que j’y pense, j’ai copié a la main le fichier env depuis gg:bin vers gg:usr/bin pour que pydoc fonctione.
Si on regarde la premiere ligne de pydoc c’est
#!/usr/bin/env python
Cela sert a trouver le chemin de python a travers l’environments.
Le shell MorphOS gere le #! au debut du fichier pour executer la commande qui suit. Pratique pour ne pas faire « python C:pydoc ».
Mais c’est un truc typiquement du monde unix, et donc cette commande est formatée pour. Tu peux changer alors cette commande en ne mettant que
#! python
.
Vu qu’il est dans ton path c’est bon.
Faut que je modifie mon scripts qui genere mes distrib binaires de Python…
Juste pour dire que j’aime pas mon design actuel pour PyAmiga, surtout la classe CPointer. Elle devait être la base de toute classe interfèrent entre un pointeur en C représentant une donnée en mémoire quelconque.
Mais je doit alors jongler avec des fonctions complexe pour faire la diff entre un coup un type C basique (int, short, …) et c’est pointeurs.
Cela bouffe l’espace de nom des classes et globale en Python, et c’est connu dans ce monde pour être très mauvais.
Je vais donc utiliser les meta-classes et les coder directement en C pour gagner en vitesse.
J’adore les meta-classes! C’est plus fort que les classes
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › [PyMUI] – Alpha release