home *** CD-ROM | disk | FTP | other *** search
- /* qnamePanel.c
- *
- * defines the GUIFront characteristics of the qname panel
- */
- #include <exec/types.h>
- #include <exec/lists.h>
- #include <exec/nodes.h>
- #include <exec/memory.h>
- #include <stdio.h>
- #include <intuition/gadgetclass.h>
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
- #include "amiCheck.h"
- #include "qnamePanel.h"
- #include "dataBase.h"
- #include "enterPanel.h"
- #include "regGadget.h"
-
- /* prototypes */
- BOOL QNameHandleGadget(struct IntuiMessage *);
- void QNameInit(void);
-
-
- ULONG qnameSel = ~0;
- struct Window *qnameWin = NULL;
- GUIFront *qnameGUI;
- static BOOL done;
- static BOOL useme;
-
- /* quick configure of some gadgets */
-
- /* define gadgetspec */
- GadgetSpec QNgadgetspecs[] =
- {
- {LISTVIEW_KIND,STRINGSIZE-10,8, {0,0,0,0,NULL,NULL,GID_QNAMELIST,
- PLACETEXT_ABOVE},ListView,GS_DefaultTags},
- };
-
- /* set up array of pointers to our specs */
- GadgetSpec *QN_NameSpecs[] =
- {
- &QNgadgetspecs[0],
- NULL,
- };
-
-
- /* define the layout of this panel */
- ULONG QN_NamePanel[] =
- {
- GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
-
- GUIL_GadgetSpecID, GID_QNAMELIST,
-
- TAG_DONE,
- };
-
- /****************************************************
- * QNameGUI
- *
- * create gui for this panel
- *****************************************************/
- BOOL QNameGUI(GUIFront *parent)
- {
- UWORD ordinal;
- BOOL noreply;
- ULONG signal;
-
- done = FALSE;
-
- /* lock edit window */
- GF_LockGUI(parent);
-
- /* bring up this gui */
- GF_SetGUIAttr(qnameGUI, GUI_OpenGUI, TRUE, TAG_DONE);
-
- /* grab window */
- GF_GetGUIAttr(qnameGUI,GUI_Window,&qnameWin,TAG_DONE);
-
- QNameInit();
-
- /* Process input events */
- while (!done)
- {
- struct IntuiMessage *imsg;
- /* Wait for an event to occur */
-
- signal = GF_Wait(guiapp,AmigaGuideSignal(agc));
- if (signal & AmigaGuideSignal(agc)) {
- AmiHelpMsg();
- continue;
- }
-
- /* We only bother to listen for CLOSEWINDOW events.
- * Of course, in a real application, you would be
- * examining the Class field for IDCMP_GADGETUP
- * messages and act accordingly.
- */
-
- while (imsg = GF_GetIMsg(guiapp))
- {
- noreply = TRUE;
- switch (imsg->Class) {
- case IDCMP_REFRESHWINDOW:
- RegRefresh(TRUE);
- break;
-
- case IDCMP_CLOSEWINDOW:
- done = TRUE;
- break;
-
- case IDCMP_RAWKEY:
- if (GF_ProcessListView(qnameGUI,QN_NameSpecs[GID_QNAMELIST],
- imsg,&ordinal)) {
- qnameSel = ordinal;
- }
- else AmiHelpKey(imsg,QUICKNAME_PANEL);
- break;
-
- case IDCMP_GADGETUP:
- noreply = FALSE;
- done=QNameHandleGadget(imsg);
- break;
-
- }
-
- if (noreply) GF_ReplyIMsg(imsg);
-
- }
- }
-
- /* detach list */
- GF_SetGadgetAttrs(qnameGUI,QNgadgetspecs[GID_QNAMELIST].gs_Gadget,
- GTLV_Labels, ~0,
- TAG_DONE);
-
- /* close window */
- GF_SetGUIAttr(qnameGUI, GUI_OpenGUI, FALSE, TAG_DONE);
- qnameWin = NULL;
-
- /* unlock edit window */
- GF_UnlockGUI(parent);
-
- return (useme);
- }
-
- /***************************************************
- * QNameHandleGadget....
- *
- * double clicks change ord val.
- ****************************************************/
- BOOL QNameHandleGadget(struct IntuiMessage *imsg)
- {
- BOOL done = FALSE;
- struct Gadget *gad = (struct Gadget *)(imsg->IAddress);
- UWORD code = imsg->Code;
-
- switch (gad->GadgetID) {
- case GID_QNAMELIST:
- qnameSel = code;
- useme = TRUE;
- done = TRUE;
- break;
- }
-
- return (done);
- }
-
- /***********************************************************
- * QNameInit()
- *
- *
- ************************************************************/
- void QNameInit(void)
- {
- useme = FALSE;
- GF_SetGadgetAttrs(qnameGUI,QNgadgetspecs[GID_QNAMELIST].gs_Gadget,
- GTLV_Labels, &namelist,
- GTLV_Selected, qnameSel,
- TAG_DONE);
-
- if (qnameSel != ~0)
- GF_SetGadgetAttrs(qnameGUI,QNgadgetspecs[GID_QNAMELIST].gs_Gadget,
- GTLV_MakeVisible, qnameSel,
- TAG_DONE);
-
- }
-