home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1997 #3 / amigamamagazinepolishissue03-1 / ma_1995 / 01 / ami070a.txt < prev    next >
Text File  |  1997-04-06  |  6KB  |  491 lines

  1. /*
  2.  
  3.     Kurs E, czëôê 5 -- GTExample v1.0
  4.  
  5.     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  6.  
  7.     Program pokazuje jak sië posîugiwaê bibliotekâ
  8.  
  9.     gadtools.library -- czyli budowaê wîasny interfejs
  10.  
  11.     uûytkownika. Ûródîo wymaga uzupeînienia przez Ciebie!
  12.  
  13.     (ale da sië skompilowaê i uruchomiê)
  14.  
  15. */
  16.  
  17.  
  18.  
  19. ENUM    ER_OK,ER_NODFLIB,ER_NOGTLIB,ER_NOMEM,ER_NOFONT,ER_WB,
  20.  
  21.     ER_VISUAL,ER_CONTEXT,ER_MENUS,ER_GADGET,ER_WINDOW
  22.  
  23.  
  24.  
  25. ENUM GA_SLIDER0=1,GA_LISTV0
  26.  
  27.  
  28.  
  29. MODULE 'diskfont','graphics/text'
  30.  
  31. MODULE 'intuition/intuition','gadtools','libraries/gadtools'
  32.  
  33. MODULE 'intuition/gadgetclass','exec/nodes','intuition/screens'
  34.  
  35.  
  36.  
  37. DEF diskfontbase,mojfont,tmp,wys,tekst[200]:STRING,mymenu,mymenuitem
  38.  
  39. DEF mojtextattr:PTR TO textattr,mojtext:PTR TO intuitext
  40.  
  41. DEF scr:PTR TO screen,visual,wnd:PTR TO window,glist,g
  42.  
  43. DEF type,infos,listv:PTR TO LONG,menu,tutaj
  44.  
  45.  
  46.  
  47. CONST MINSYSTEM=39
  48.  
  49.  
  50.  
  51. RAISE ER_NOMEM IF New()=NIL
  52.  
  53.  
  54.  
  55. PROC main() HANDLE
  56.  
  57.  
  58.  
  59.     openinterface()
  60.  
  61.  
  62.  
  63.     REPEAT
  64.  
  65.  
  66.  
  67.         wait4message()
  68.  
  69.  
  70.  
  71.         StringF(tekst,'typ: \d, gadget: \h    ',type,infos)
  72.  
  73.         wypisz(5,tutaj,tekst)
  74.  
  75.  
  76.  
  77.         SELECT type
  78.  
  79.             CASE IDCMP_MENUPICK
  80.  
  81.                 mymenu:=infos AND %11111
  82.  
  83.                 mymenuitem:=Shr(infos AND %11111100000,5)
  84.  
  85.                 SELECT mymenuitem
  86.  
  87.                     CASE 0
  88.  
  89.                         wypisz(5,tutaj,'Wybrales Open .LHA file  ')
  90.  
  91.                     CASE 1
  92.  
  93.                         wypisz(5,tutaj,'Wybrales Open .LHA file  ')
  94.  
  95.                     /* 2 to "szlaczek" */
  96.  
  97.                     CASE 3
  98.  
  99.                         wypisz(5,tutaj,'Wybrales About                 ')
  100.  
  101.                     CASE 4
  102.  
  103.                     type:=IDCMP_CLOSEWINDOW
  104.  
  105.                 ENDSELECT
  106.  
  107.         ENDSELECT
  108.  
  109.  
  110.  
  111.     UNTIL type=IDCMP_CLOSEWINDOW
  112.  
  113.  
  114.  
  115.     Raise(ER_OK)
  116.  
  117.  
  118.  
  119. EXCEPT
  120.  
  121.  
  122.  
  123.     IF mojfont THEN CloseFont(mojfont)
  124.  
  125.     IF diskfontbase THEN CloseLibrary(diskfontbase)
  126.  
  127.     IF wnd THEN ClearMenuStrip(wnd)
  128.  
  129.     IF menu THEN FreeMenus(menu)
  130.  
  131.     IF visual THEN FreeVisualInfo(visual)
  132.  
  133.     IF wnd THEN CloseWindow(wnd)
  134.  
  135.     IF glist THEN FreeGadgets(glist)
  136.  
  137.     IF scr THEN UnlockPubScreen(NIL,scr)
  138.  
  139.     IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
  140.  
  141.  
  142.  
  143.     IF exception
  144.  
  145.         SELECT exception
  146.  
  147.         CASE ER_NODFLIB
  148.  
  149.             WriteF('Cannot open diskfont.library.\n')
  150.  
  151.         CASE ER_NOGTLIB
  152.  
  153.             WriteF('Cannot open gadtools.library.\n')
  154.  
  155.         CASE ER_WB
  156.  
  157.             WriteF('Cannot lock Workbench screen.\n')
  158.  
  159.         CASE ER_VISUAL
  160.  
  161.             WriteF('Cannot get visual info.\n')
  162.  
  163.         CASE ER_CONTEXT
  164.  
  165.             WriteF('Cannot get gadget context.\n')
  166.  
  167.         CASE ER_NOMEM
  168.  
  169.             WriteF('No memory for program operation.\n')
  170.  
  171.         CASE ER_NOFONT
  172.  
  173.             WriteF('Cannot open \s.\n',mojtextattr.name)
  174.  
  175.         CASE ER_MENUS
  176.  
  177.             WriteF('Cannot create menus.\n')
  178.  
  179.         CASE ER_GADGET
  180.  
  181.             WriteF('Cannot create gadget(s).\n')
  182.  
  183.         CASE ER_WINDOW
  184.  
  185.             WriteF('Cannot open window.\n')
  186.  
  187.         DEFAULT
  188.  
  189.             WriteF('Unknown exception: \d \h "\s".\n',exception,exception,[exception,0])
  190.  
  191.         ENDSELECT
  192.  
  193.     ENDIF
  194.  
  195.  
  196.  
  197. ENDPROC
  198.  
  199.  
  200.  
  201.  
  202.  
  203. PROC openinterface()
  204.  
  205.  
  206.  
  207.     IF (diskfontbase:=OpenLibrary('diskfont.library',37))=NIL THEN Raise(ER_NODFLIB)
  208.  
  209.     IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN Raise(ER_NOGTLIB)
  210.  
  211.     IF (scr:=LockPubScreen('Workbench'))=NIL THEN Raise(ER_WB)
  212.  
  213.     IF (visual:=GetVisualInfoA(scr,NIL))=NIL THEN Raise(ER_VISUAL)
  214.  
  215.  
  216.  
  217.     mojtextattr:=New(SIZEOF textattr)
  218.  
  219.     mojtextattr.name:='scala.font'
  220.  
  221.     mojtextattr.ysize:=13
  222.  
  223.     mojtextattr.style:=FS_NORMAL /* FSF_BOLD+FSF_ITALIC */
  224.  
  225.     mojtextattr.flags:=FPF_DESIGNED
  226.  
  227.     mojtext:=New(SIZEOF intuitext)
  228.  
  229.  
  230.  
  231.     IF (mojfont:=OpenDiskFont(mojtextattr))=NIL THEN Raise(ER_NOFONT)
  232.  
  233.  
  234.  
  235.     wys:=5
  236.  
  237.  
  238.  
  239.     IF (g:=CreateContext({glist}))=NIL THEN Raise(ER_CONTEXT)
  240.  
  241.  
  242.  
  243.     IF (menu:=CreateMenusA(
  244.  
  245.         [NM_TITLE,NIL,'Project',NIL,NIL,NIL,NIL,
  246.  
  247.         NM_ITEM,NIL,'Open .LHA file','l',NIL,NIL,NIL,
  248.  
  249.         NM_ITEM,NIL,'Save .LHA file','s',NM_ITEMDISABLED,NIL,NIL,
  250.  
  251.         NM_ITEM,NIL,NM_BARLABEL,NIL,NIL,NIL,NIL,
  252.  
  253.         NM_ITEM,NIL,'About','a',NIL,NIL,NIL,
  254.  
  255.         NM_ITEM,NIL,'Quit','q',NIL,NIL,NIL,
  256.  
  257.         NM_END,NIL,NIL,NIL,NIL,NIL,NIL]:newmenu,NIL))=NIL THEN Raise(ER_MENUS)
  258.  
  259.  
  260.  
  261.     IF LayoutMenusA(menu,visual,NIL)=FALSE THEN Raise(ER_MENUS)
  262.  
  263.  
  264.  
  265.     IF (g:=CreateGadgetA(SCROLLER_KIND,g,
  266.  
  267.         [5,wys,200,mojtextattr.ysize+4,NIL,NIL,GA_SLIDER0,0,visual,0]:newgadget,
  268.  
  269.             [GTSC_TOP,2,
  270.  
  271.             GTSC_VISIBLE,3,
  272.  
  273.             GTSC_TOTAL,10,
  274.  
  275.             GTSC_ARROWS,22,
  276.  
  277.             PGA_FREEDOM,LORIENT_HORIZ,
  278.  
  279.             GA_RELVERIFY,TRUE,
  280.  
  281.             GA_IMMEDIATE,TRUE,0]))=NIL THEN Raise(ER_GADGET)
  282.  
  283.     wys:=wys+mojtextattr.ysize+14
  284.  
  285.  
  286.  
  287.     listv:=[0,0,0,0]; listv[0]:=listv+4; listv[2]:=listv
  288.  
  289.     AddTail(listv,[0,0,0,0,'Magazyn AMIGA']:ln)
  290.  
  291.     AddTail(listv,[0,0,0,0,'Enter']:ln)
  292.  
  293.     AddTail(listv,[0,0,0,0,'PCkurier']:ln)
  294.  
  295.     AddTail(listv,[0,0,0,0,'Net Forum']:ln)
  296.  
  297.     AddTail(listv,[0,0,0,0,'Unix Forum']:ln)
  298.  
  299.     AddTail(listv,[0,0,0,0,'Gambler']:ln)
  300.  
  301.     AddTail(listv,[0,0,0,0,'Mîody Technik']:ln)
  302.  
  303.     AddTail(listv,[0,0,0,0,'CADCAM Forum']:ln)
  304.  
  305.     AddTail(listv,[0,0,0,0,'Magazyn AMIGA']:ln)
  306.  
  307.     AddTail(listv,[0,0,0,0,'Enter']:ln)
  308.  
  309.     AddTail(listv,[0,0,0,0,'PCkurier']:ln)
  310.  
  311.     AddTail(listv,[0,0,0,0,'Net Forum']:ln)
  312.  
  313.     AddTail(listv,[0,0,0,0,'Unix Forum']:ln)
  314.  
  315.     AddTail(listv,[0,0,0,0,'Gambler']:ln)
  316.  
  317.     AddTail(listv,[0,0,0,0,'Mîody Technik']:ln)
  318.  
  319.     AddTail(listv,[0,0,0,0,'CADCAM Forum']:ln)
  320.  
  321.  
  322.  
  323.     IF (g:=CreateGadgetA(LISTVIEW_KIND,g,
  324.  
  325.         [5,wys,200,mojtextattr.ysize*10+4,NIL,NIL,GA_LISTV0,0,visual,0]:newgadget,
  326.  
  327.             [GTLV_SCROLLWIDTH,20,
  328.  
  329.             GTLV_LABELS,listv,0]))=NIL THEN Raise(ER_GADGET)
  330.  
  331.  
  332.  
  333.     wys:=mojtextattr.ysize*10+wys+6
  334.  
  335.     tutaj:=wys
  336.  
  337.  
  338.  
  339.     IF (wnd:=OpenWindowTagList(NIL,
  340.  
  341.         [WA_IDCMP,IDCMP_MENUPICK+IDCMP_CLOSEWINDOW+IDCMP_REFRESHWINDOW+SCROLLERIDCMP,
  342.  
  343.         WA_WIDTH,400,
  344.  
  345.         WA_HEIGHT,wys+36,
  346.  
  347.         WA_TITLE,'Make GUIs!',
  348.  
  349.         WA_GADGETS,glist,
  350.  
  351.         WA_FLAGS,WFLG_GIMMEZEROZERO+WFLG_DRAGBAR+WFLG_DEPTHGADGET+WFLG_CLOSEGADGET,
  352.  
  353.         NIL,NIL]))=NIL THEN Raise(ER_WINDOW)
  354.  
  355.  
  356.  
  357.     IF SetMenuStrip(wnd,menu)=FALSE THEN Raise(ER_MENUS)
  358.  
  359.  
  360.  
  361.     Gt_RefreshWindow(wnd,NIL)
  362.  
  363.  
  364.  
  365. ENDPROC
  366.  
  367.  
  368.  
  369.  
  370.  
  371. PROC wait4message()
  372.  
  373.  
  374.  
  375. DEF mes:PTR TO intuimessage,g:PTR TO gadget
  376.  
  377.  
  378.  
  379. REPEAT
  380.  
  381.  
  382.  
  383.     type:=0
  384.  
  385.  
  386.  
  387.     IF mes:=Gt_GetIMsg(wnd.userport)
  388.  
  389.         type:=mes.class
  390.  
  391.  
  392.  
  393.         IF type=IDCMP_MENUPICK
  394.  
  395.  
  396.  
  397.             infos:=mes.code
  398.  
  399.             IF infos=-1 THEN type:=0
  400.  
  401.  
  402.  
  403.         ELSEIF (type=IDCMP_GADGETDOWN) OR (type=IDCMP_GADGETUP)
  404.  
  405.  
  406.  
  407.             g:=mes.iaddress
  408.  
  409.             infos:=g.gadgetid
  410.  
  411.  
  412.  
  413.         ELSEIF type=IDCMP_REFRESHWINDOW
  414.  
  415.  
  416.  
  417.             Gt_BeginRefresh(wnd)
  418.  
  419.             Gt_EndRefresh(wnd,TRUE)
  420.  
  421.             type:=0
  422.  
  423.  
  424.  
  425.         ELSEIF type<>IDCMP_CLOSEWINDOW
  426.  
  427.  
  428.  
  429.             type:=0
  430.  
  431.  
  432.  
  433.         ENDIF
  434.  
  435.  
  436.  
  437.         Gt_ReplyIMsg(mes)
  438.  
  439.  
  440.  
  441.     ELSE
  442.  
  443.  
  444.  
  445.         Wait(-1)
  446.  
  447.  
  448.  
  449.     ENDIF
  450.  
  451.  
  452.  
  453.     UNTIL type
  454.  
  455.  
  456.  
  457. ENDPROC
  458.  
  459.  
  460.  
  461.  
  462.  
  463. PROC wypisz(xoff,yoff,wypisztekst)
  464.  
  465.  
  466.  
  467.     mojtext.frontpen:=0
  468.  
  469.     mojtext.frontpen:=1
  470.  
  471.     mojtext.drawmode:=AUTODRAWMODE
  472.  
  473.     mojtext.leftedge:=0
  474.  
  475.     mojtext.topedge:=0
  476.  
  477.     mojtext.itextfont:=mojtextattr
  478.  
  479.     mojtext.itext:=wypisztekst
  480.  
  481.     mojtext.nexttext:=0
  482.  
  483.  
  484.  
  485.     PrintIText(wnd.rport,mojtext,xoff,yoff)
  486.  
  487.  
  488.  
  489. ENDPROC
  490.  
  491.