gadtools je craque…
7 sujets de 1 à 7 (sur un total de 7)
-
Bonjour
J’essaye désespérément de faire un prog avec des bouttons gadtools (je cherche pas à faire qque chose de beau mais fonctionnel)Ca ouvre une fenetre
Ca crée et y attache n boutons (une glist)
(Ca marche jusque là)
Je gére les evenements de la fenetre
(Ca marche jusque là)
Et si on clique sur un boutons alors j’enléve tout les boutons, je crée et y attache m boutons (une autre glist) avec la fenetre qui reste ouverteEt là ca marche pas !!! les anciens n boutons restent quoi que je fasse avec les m nouveaux en plus
QQun a t’il une exemple qui marche qui fasse ça ?
MERCI
Alain
tu as fait un refresh pour demander à intuition de redessiner ta liste de gadgets ? void GT_RefreshWindow( struct Window *win, struct Requester *req ); cf ici : http://amigang.fr/rkm/Libraries_Manual_guide/node026F.html doc complete gadtools : http://amigang.fr/rkm/Libraries_Manual_guide/node024B.html (amiga os 3)
Partage de photos entre amis : les réseaux sociaux trop risqués ? les envois par email aléatoires ? le Cloud compliqué ? ---
Essayez album.zaclys.com ! ---
Association loi 1901, 100% made & hosted in France.Oui je suis parti du wiki pour faire mon prog
J’ai ajouté un GT_RefreshWindow() et ça change rienPourtant c’est un problème simple une fenetre avec n boutons puis avec m boutons differents
Normalement gadtools devrait pouvoir le faire
Je comprends pas … comment on fais pour enlever les boutons à une fenetreJ’enléve avec
RemoveGList(window,glist,-1);
window->FirstGadget=NULL; /* pour etre sur */
GT_RefreshWindow(window,NULL); /* pour etre sur */puis je cree les nouveaux gadgets avec
glist=NULL;
gad=CreateContext(&glist);large=80; high=20;
x=2; y=2;
SetButton(4,x,y,large,high, »Offset »); x=x+large;
SetButton(3,x,y,large,high, »Name « ); x=x+large;
SetButton(2,x,y,large,high, »Size « ); x=x+large;
SetButton(1,x,y,large,high, »Call « ); x=x+large;
SetButton(0,x,y,large,high, »Called »); x=x+large;AddGList(window,glist,0,-1,NULL);
RefreshGList(glist,window,NULL,-1);
GT_RefreshWindow(window,NULL);avec SetButton definit ainsi
void SetButton(ULONG n,ULONG x,ULONG y,ULONG large,ULONG high,UBYTE *name)
{
ng[n].ng_TextAttr = &Topaz80;
ng[n].ng_VisualInfo = vi;
ng[n].ng_LeftEdge = x;
ng[n].ng_TopEdge = y;
ng[n].ng_Width = large;
ng[n].ng_Height = high;
ng[n].ng_GadgetText = name;
ng[n].ng_GadgetID = n+1;
ng[n].ng_Flags = 0;
gad = CreateGadget(BUTTON_KIND, gad, &ng[n], TAG_END);
}A noter que la création des boutons est ok c’est leur enlevement/remplacement qui marche pas
Alain
Je dirais que c’est normal.
Si on enlève un gadget d’une fenêtre avec RemoveGList, il est enlevé de la liste des gadgets, mais en aucun cas il n’est effacé de la fenêtre.
Il faut faire un RecfFill() avec la couleur du fond, généralement couleur 0, à l’emplacement exact du gadget à enlever avant d’appeler RefreshGList() qui redessine la liste à partir du gadget indiqué en paramètre. L’ideal serait d’effacer avant RemoveGList.SetRast(window->RPort, 0) marche aussi mais efface toute la zone cliente de la fenêtre, cela peut provoquer un flash pas zoli zoli…
Merci Gilloo cette fois ça marche 🙂
Par contre j’ai tout mes boutons avec le texte centré
Mais je voudrais les boutons avec le texte aligné à gauche: On fais comment ?Pour info sur mon prog (ObjDumpFuncs):
Je désassemble avec ObjDump sous OS4 puis mon prog ObjDumpFuncs analyse le source ASM
Il trouve les noms des fonctions, leur tailles, leurs appels (called/calls =entrant/sortant) et en fais une liste en mémoire
On peut afficher cette liste par offset/name/size/called/calls la faire défiler,etc..
Après je peut cliquer sur une des fonctions et cela me donne quelles fonctions l’appellent (called) et quelles fonctions elle appelle (calls)
Bref c’est un explorateur de fonctions d’un exécutable (interactive function-tree)Alain
fichier gadgets/button.h, dans la liste des tags, on trouve
BUTTON_Justification
suivi des valeurs au choix
/* Justification modes for BUTTON_Justification. */
#define BCJ_LEFT 0
#define BCJ_CENTER 1 /* Default – center text */
#define BCJ_RIGHT 2donc ajouter BUTTON_Justification, BCJ_LEFT, TAG_END à la place de TAG_END dans CreateGadget et ça devrait rouler.
7 sujets de 1 à 7 (sur un total de 7)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › gadtools je craque…