Advertisement
Guest User

Untitled

a guest
Mar 25th, 2018
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.08 KB | None | 0 0
  1. /* Gadget example */
  2. #include <proto/intuition.h>
  3. #include <proto/gadtools.h>
  4. #include <proto/exec.h>
  5. #include <proto/dos.h>
  6. #include <intuition/intuition.h>
  7. #include <libraries/gadtools.h>
  8. #include <stdio.h>
  9. APTR visual;
  10. /* Type of gadgets to display */
  11.    ULONG Gadgetkinds[3] = {STRING_KIND, INTEGER_KIND, BUTTON_KIND };
  12. struct TextAttr topaz8 = {
  13.    (STRPTR)"topaz.font", 8, 0, 1
  14.    };
  15. /* Data for gadget structures */
  16.    struct NewGadget Gadgetdata[3] = {
  17.    63, 26, 172, 13, (UBYTE *)"Name", &topaz8, 1, PLACETEXT_LEFT, NULL, NULL,
  18.    62, 50, 175, 15, (UBYTE *)"Age", &topaz8, 2, PLACETEXT_LEFT, NULL,    NULL,
  19.    111, 105, 54, 31, (UBYTE *)"Calc", &topaz8, 3, PLACETEXT_IN, NULL,    NULL
  20.    };
  21. /* Extra information for gadgets using Tags */
  22.    ULONG GadgetTags[] = {
  23.    (GTST_MaxChars), 256, (TAG_DONE),
  24.    (GTNM_Border), TRUE, (TAG_DONE),
  25.    (TAG_DONE)
  26.    };
  27. int main() {
  28.       struct Screen *pubScreen;
  29.       struct Window *myWindow;
  30.       struct Gadget *myGadgets[3], *glist=NULL, *gad1;
  31.       int closewin = FALSE, i;
  32.       struct IntuiMessage *msg;
  33.       ULONG msgClass;
  34.    
  35.       /* Lock screen and get visual info for gadtools */
  36.       if (pubScreen = LockPubScreen(NULL)) {
  37.          if (!(visual = GetVisualInfo(pubScreen,    TAG_DONE))) {
  38.             printf("Failed to get visual info.\n");
  39.             return(5);
  40.          }
  41.       }
  42.       else {
  43.          printf("Failed to lock screen.\n");
  44.          return(5);
  45.       }
  46.     /* Create the gadget list */
  47.       if (!(gad1 = CreateContext(&glist))) {
  48.          printf("Failed to create gadtools context.\n");
  49.          return(5);
  50.       }
  51.       /* Create gadgets specify gadget kind, a Gadget, NewGadget data and extra tag info */
  52.       for (i=0; i<3; i++) {
  53.          Gadgetdata[i].ng_VisualInfo = visual;
  54.          if (myGadgets[i] = gad1 = CreateGadgetA(Gadgetkinds[i], gad1, &Gadgetdata[i], (struct TagItem *)&GadgetTags[i])) {
  55.             printf("Gadget %d created.\n", i);
  56.          }
  57.          else
  58.             printf("Failed to create gadget %d.\n",i);
  59.       }
  60.    
  61.       /* Open window and specify gadget list (glist) */
  62.       myWindow = OpenWindowTags(NULL,
  63.          WA_Left, 10, WA_Top, 15,
  64.          WA_Width, 280, WA_Height, 180,
  65.          WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_GADGETUP,
  66.          WA_Flags, WFLG_SIZEGADGET | WFLG_DRAGBAR    | WFLG_DEPTHGADGET | WFLG_CLOSEGADGET | WFLG_ACTIVATE | WFLG_SMART_REFRESH,
  67.          WA_Gadgets, glist,
  68.          WA_Title, "My Window",
  69.          WA_PubScreenName, "Workbench",
  70.          TAG_DONE);
  71.       GT_RefreshWindow(myWindow, NULL); /* Update window */
  72.    
  73.       while (closewin == FALSE) {
  74.          Wait(1L << myWindow->UserPort->mp_SigBit);
  75.          msg = GT_GetIMsg(myWindow->UserPort);
  76.          msgClass = msg->Class;
  77.          GT_ReplyIMsg(msg);
  78.          if (msgClass == IDCMP_CLOSEWINDOW) {
  79.             closewin = TRUE;
  80.          }
  81.       }
  82.     if (myWindow) CloseWindow(myWindow);
  83.     /* Free gadgets */
  84.     if (glist) FreeGadgets(glist);
  85.    
  86.     if (visual) FreeVisualInfo(visual);
  87.     if (pubScreen) UnlockPubScreen(NULL, pubScreen);
  88.     return(0);
  89.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement