gadtools je craque…

7 sujets de 1 à 7 (sur un total de 7)

  • thellier

      #210992

      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 ouverte

      Et 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

      tito

        #210999
        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.

        thellier

          #211017

          Oui je suis parti du wiki pour faire mon prog
          J’ai ajouté un GT_RefreshWindow() et ça change rien

          Pourtant 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 fenetre

          J’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

          Gilloo

            #211059

            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…

            thellier

              #211421

              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

              Gilloo

                #211569

                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  2

                donc 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…

              Amiga Impact