home *** CD-ROM | disk | FTP | other *** search
- /* ShowLists.c */
-
- /* 13 Aug 1991 At 09:58:37 */
- #include <exec/execbase.h>
- #include <proto/intuition.h>
- #include <proto/gadtools.h>
- #include <proto/exec.h>
- #include <intuition/gadgetclass.h>
- #include <intuition/screens.h>
- struct ExecBase *ExecBase;
- struct IntuitionBase *IntuitionBase = NULL;
- struct GadToolsBase *GadToolsBase = NULL;
- struct Window *WBWindow = NULL;
- struct Screen *WBScreen = NULL;
- APTR vi = NULL;
- BOOL activated = TRUE;
- struct Gadget *currgad,*g0,*g1;
- struct Gadget *gadlist = NULL;
- #define NUMLISTS 6
- struct List *ExecLists[NUMLISTS];
- #define REFRESHBUTTON 2
- #define NODEGAD_ID 1
- #define LVGADHEIGHT 95
- #define LVGADWIDTH 165
- #define LVGADY 15
- #define LVGADX 13
- #define LABLEN 8
-
- static char *CycleLabels[NUMLISTS+1] = /* up to LABLEN long strings */
- { " PORTS ",
- " DEVICES ",
- " LIBRARY ",
- " TASKWAIT ",
- " RESOURCE ",
- " MEMORY ",
- };
-
- void Bummer(char *errmsg)
- {
- puts(errmsg);
- CleanExit(5);
- }
- int CleanExit(returnvalue)
- int returnvalue;
- {
- if (gadlist)
- FreeGadgets(gadlist);
- if (vi)
- FreeVisualInfo(vi);
- if (WBWindow) CloseWindow (WBWindow);
- if (WBScreen != NULL)
- UnlockPubScreen (NULL, WBScreen);
- if (GadToolsBase)
- CloseLibrary ((struct Library *)GadToolsBase);
- if (IntuitionBase)
- CloseLibrary ((struct Library *)IntuitionBase);
- if (ExecBase)
- CloseLibrary ((struct Library *)ExecBase);
- exit (returnvalue);
- return (returnvalue);
- }
-
- void handleIDCMP(struct Window *win)
- {
- struct IntuiMessage *message = NULL;
- struct Gadget *gad = NULL;
- ULONG class, signals, signalmask;
- WORD code;
- int CurList=0;
-
- signalmask = 1L << win->UserPort->mp_SigBit;
- while (1)
- {
- signals = Wait(signalmask);
- if (signals & signalmask)
- while (message = (struct IntuiMessage *)GT_GetIMsg(win->UserPort))
- {
- class = message->Class;
- code = (WORD)message->Code;
- gad = (struct Gadget *) message->IAddress;
- GT_ReplyIMsg(message);
- /* printf("Gadget: %d, Code: %d\n",gad->GadgetID,code); */
- switch(class)
- {
- case CLOSEWINDOW:
- CleanExit(0);
- case GADGETUP: /* Fall through to window activated case... */
- CurList=code;
- default: /* only activate message I hope */
- GT_SetGadgetAttrs(g0, WBWindow, NULL,GTLV_Labels,ExecLists[CurList]);
- break;
- }
- }
- }
- }
-
-
- struct NewGadget ng = {
- LVGADX,LVGADY,
- LVGADWIDTH, LVGADHEIGHT,
- "",
- NULL,
- 1,
- PLACETEXT_BELOW,
- NULL,
- NULL
- };
-
-
- void main(int argc, char *argv[])
- {
-
- IntuitionBase = (struct IntuitionBase *) OpenLibrary ("intuition.library", 36);
- if (IntuitionBase == NULL)
- CleanExit(30);
- ExecBase = (struct ExecBase *) OpenLibrary ("exec.library", 36);
- if (ExecBase == NULL)
- CleanExit(30);
- GadToolsBase = (struct GadToolsBase *) OpenLibrary ("gadtools.library", 36);
- if (GadToolsBase == NULL)
- CleanExit(30);
- WBScreen = LockPubScreen(NULL);
- if (WBScreen == NULL)
- CleanExit(30);
-
- vi = GetVisualInfo (WBScreen, TAG_DONE);
- if (vi == NULL)
- CleanExit(30);
-
- ExecLists[0]= &(ExecBase->PortList);
- ExecLists[1]= &(ExecBase->DeviceList);
- ExecLists[2]= &(ExecBase->LibList);
- ExecLists[3]= &(ExecBase->TaskWait);
- ExecLists[4]= &(ExecBase->ResourceList);
- ExecLists[5]= &(ExecBase->MemList);
-
- ng.ng_TextAttr = WBScreen->Font;
- ng.ng_TopEdge= (WBScreen->Font->ta_YSize *4)/3;
- ng.ng_VisualInfo = vi;
- g0 = CreateContext (&gadlist);
- ng.ng_Flags= PLACETEXT_IN;
- ng.ng_GadgetID=NODEGAD_ID;
- g0 = CreateGadget(LISTVIEW_KIND, g0, &ng,
- GTLV_Labels,ExecLists[0],
- /* GTLV_ShowSelected,NULL, */
- /* GTLV_Active, 1, */
- TAG_DONE);
- if (!g0)
- Bummer("ListView Gad failed");
- ng.ng_Height = ng.ng_TopEdge; /* (WBScreen->Font->ta_YSize *4)/3; */
- ng.ng_TopEdge += LVGADHEIGHT+ng.ng_Height;
- ng.ng_Flags= PLACETEXT_IN;
- ng.ng_GadgetID=REFRESHBUTTON;
- /* ng.ng_GadgetText=" REFRESH ";
- g1 = CreateGadget(BUTTON_KIND, g0, &ng, TAG_DONE); */
- g1 = CreateGadget(CYCLE_KIND, g0, &ng, GTCY_Labels, CycleLabels,TAG_DONE);
- if (!g1)
- Bummer("Button Gad failed");
- WBWindow = OpenWindowTags (NULL, WA_Title, (ULONG) "Amiga Lists",
- WA_Flags, (ULONG)SMART_REFRESH|WINDOWCLOSE|WINDOWDEPTH|WINDOWDRAG|ACTIVATE,
- WA_InnerHeight, LVGADHEIGHT+4*ng.ng_Height,
- WA_InnerWidth,LVGADWIDTH+2*LVGADX,
- WA_AutoAdjust, TRUE,
- WA_GimmeZeroZero, TRUE,
- WA_IDCMP, (ULONG)CLOSEWINDOW|BUTTONIDCMP|ACTIVEWINDOW,
- TAG_DONE);
- AddGList (WBWindow, gadlist, -1, -1, NULL);
- RefreshGList(WBWindow->FirstGadget, WBWindow, NULL, (UWORD)-1);
- GT_RefreshWindow (WBWindow, NULL);
- handleIDCMP (WBWindow);
- }
-