[PyMUI] – Alpha release
-
Yomgui : Je crois que mon SDK n’a pas aimé mon changement de HD… (alors que j’avais bien fait un tar pour conserver les liens liens « logiques » ou je ne sais quoi comme on m’a appris). Après avoir modifié pydoc comme tu me l’as conseillé, ça roule (même si j’y capte pas grand chose pour le moment).
Je crois que j’irais voir pour un bouquin sur Python et je crois que je vais aussi repasser par la case « réinstalle ton SDK MOS gros naze » histoire d’avoir un truc potable.
En tout cas, merci de répondre aussi promptement
—
/me n’avait pas encore cherché que Yomgui avait déjà donné la réponse !
Only Amiga makes it possible !
Autre chose: metaclasse c’est pas une insulte, mais vous inquiétez pas… tout cela n’est que le cambouis interne, complètement caché pour l’utilisateur final.
Pour ce dernier l’important c’est de voir comment j’ai créé les classes Application and co dans pymui/_core.py.
Par exemple, je me rend compte que de donner des type basiques comme int, long, str pour définir les types C des attributs/methode des classes MUI n’est pas génial. Car comment dire un ‘unsigned short’ ? c’est pas comme un int, ça prend pas de valeurs négatives, cela ne prend pas la même place en mémoire si on doit donner un pointeur dessus. d’ailleurs comment donner un pointer sur un object ‘int’ en python, sachant qu’ils n’ont justement aucunes représentations physiques propres pour certains ?
(optimisation du code Python oblige… on va pas créer 10000 objects python pour représenter le nombre 0 si on a une liste de 10000 zéros).
Et comment justement donner un pointer sur un entier?
Ceci m’impose à repenser PyAmiga et PyMui pour les types et revoir comment ‘définir’ les classes.
Vous remarquerez d’ailleurs la puissance de PyMUI face à RxMUI.
PyMUI proposera de faire des « custom class ». … Enfin utilisable uniquement depuis Python.
Ca me fait penser qu’il doit être possible de faire des MCC entièrement en Python appelables depuis du code C… un poil astucieux mais possible.
Toujours sur la définition de classe: évidement il y aura toujours du code python pour le faire, mais si vous regarder le fichier _core.py, vous voyez que j’ai utilisé des tuple (METHODS et ATTRIBUTES) pour définir les méthodes (prototype, id, …) et attributs (type, id, contexte, …).
Vous préférez ainsi où bien autre chose comme du code XML.
Pour info, le code XML ralentira la lecture du scripts (donc juste le démarrage du programme) car il faut l’interpréter à chaque fois.
enfin voilà, aller y de vos propres commentaires…
Très intéressant ce projet. Combiné à la simplicité du language python, il va mettre la programmation a porté de tous.
Félicitations pour le résultat déja obtenu.
Quelques questions:
– pourquoi la couleur des objects (boutons, fond du texte) est toujours celle définie pour le fond des fenêtres ?
– pourquoi la fenêtre n’est redimensionnable qu’en largeur ?
Et un petit bémol concernant la création de classe custom directement en python. Cela signifierait :
– fermer la porte aux autres languages compilés qui sont certainement plus efficace en terme de performances,
– utiliser un language de haut niveau pour des composants de base, qui sont donc sensés être optimisés.
Bref, inciter à la création de classes custom en Python me parait contraire à la philosophie d’un système qui est justement apprécié pour sa réactivité et son efficacité.
A plus.
Rmais96 a écrit :
Très intéressant ce projet. Combiné à la simplicité du language python, il va mettre la programmation a porté de tous.
Félicitations pour le résultat déja obtenu.
Merci!
Quelques questions:
– pourquoi la couleur des objects (boutons, fond du texte) est toujours celle définie pour le fond des fenêtres ?
– pourquoi la fenêtre n’est redimensionnable qu’en largeur ?
Réponse dans la doc de MUI
(c’est vrai! il faut la lire)
Bon aller je te réponds:
– parceque, comme tout objets, les enfants héritent des attributs des parents. Donc si il n’est pas explicitement indiqué quel fond un objet doit prendre, il prend celui du parent… ainsi de suite jusqu’au premier: l’objet ‘root’ de la fenêtre (Attention: Window n’est pas un enfant d’Area).
– car l’ensemble des objets imposent une taille max lors du calcul de la taille des éléments.
Et un petit bémol concernant la création de classe custom directement en python. Cela signifierait :
– fermer la porte aux autres languages compilés qui sont certainement plus efficace en terme de performances,
– utiliser un language de haut niveau pour des composants de base, qui sont donc sensés être optimisés.
Bref, inciter à la création de classes custom en Python me parait contraire à la philosophie d’un système qui est justement apprécié pour sa réactivité et son efficacité.
Entièrement d’accord! C’était juste pour le fun
Il doit être évident que l’intérêt principal est de développer des GUI rapidement. Les ‘calculs complexes’ peuvent être réalisé en C (Python et C se côtoient facilement).
Partant du principe que dans une GUI, le temps CPU consacré est minime on peut y perdre un peu de temps.
Ensuite on peut voir aussi PyMUI comme un outil de prototypage avant réalisation final en C.
A plus.
A + aussi
Pour préciser un peu certaines questions :
– Dans l’equivalent en C de ta fonction SimpleButton() il n’y a pas besoin de préciser explicitement que l’attribut MUIA_Background doit avoir la valeur MUII_ButtonBack, c’est implicite puisque c’est un bouton. Ne devrait-il pas en être de même avec PyMUI ?
– Pour le texte, je ne parviens pas à affecter l’attribute Background. La valeur MUII_TextBack n’est-elle pas encore supportée ?
@Rblé96:
Alors oui faut faire attention (voilà typiquement pourquoi faut une doc…),
tout MUI n’est pas accessible depuis PyMUI, surtout les objets créés avec MUI_MakeObject() (les MUIO_xxxx).
Donc certaines macros qui se trouvent dans libraries/mui.h ne sont donc pas utilisable, comme par exemple SimpleButton, défini de la sorte:
#define SimpleButton(label) MUI_MakeObject(MUIO_Button,label)
Donc pas moyen de savoir comment il est fait en interne, mais il aurait été dommage de ne pas avoir l’équivalent n’est-ce pas.
Donc PyMUI donne une fonction SimpleButton, qui ne prend qu’un seul argument comme la macro en C:
SimpleButton = lambda text: Text(text,
Frame=MUIV_Frame_Button,
InputMode=MUIV_InputMode_RelVerify,
PreParse=" 33c")
Et là, effectivement j’ai oublié de mettre le keyword Background à MUII_ButtonBack.
Mais c’est du python… tous le monde peut corriger, c’est l’intérêt
Pour Text(), pareil… suffit d’affecter le keyword Background lors de la création de l’instance de Text.
Remarque: les ATTRIBUTES sont hérités dynamiquement, Text est sous-classe de Area qui posséde la définition de l’attribut Background.
En parlant de faire attention: l’appel au méthod MUI n’est pas super implémenté et risque de marcher parfois… ou pas!
Et j’ai commencé des classes comme Radio, mais pas utilisable car j’ai pas encore de support pour les tableaux (genre MUIA_Radio_Entries)
Enfin vous avez compris… c’est un bon gros alpha
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › [PyMUI] – Alpha release