home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * EDIT.C
- */
-
- #include "defs.h"
-
- Prototype int OpenEditWindow(void);
- Prototype void CloseEditWindow(void);
- Prototype void HandleEditGadget(IMsg *);
- Prototype void UpdateEWinInfo(TplRegion *);
- Prototype NewGadget *MakeENG(short, short, short, short, char *, short, long, APTR);
-
- Prototype Window *EWin;
- Prototype long EWinMask;
- Prototype char *DefName;
- Prototype char *LabName;
- Prototype char *RegName;
- Prototype char *MaxName;
- Prototype List EList;
-
- Window *EWin;
- Gadget *EGList;
- long EWinMask;
- NewGadget ENg;
-
- char *CycLabels[] = { "Invisible", "Button", "String", "ListView", "Cycle", NULL };
- char *CycOrient[] = { "Text Left", "Text Right", "Text Above", "Text Below", "Text In", NULL };
- List EList;
-
- char *DefName;
- char *LabName;
- char *RegName;
- char *AddName;
- char *MaxName;
-
- Gadget *EGadType;
- Gadget *EGadOrient;
- Gadget *EGadRegText;
- Gadget *EGadLabText;
- Gadget *EGadDefText;
- Gadget *EGadAddText;
- Gadget *EGadMaxBufLen;
- Gadget *EGadList;
-
- OpenEditWindow()
- {
- Gadget *gad;
-
- NewList(&EList);
- if ((gad = CreateContext(&EGList)) == NULL)
- return(-1);
- ENg.ng_TextAttr = Scr->Font;
- ENg.ng_VisualInfo= Ng.ng_VisualInfo;
-
- EGadType = gad = CreateGadget(CYCLE_KIND, gad,
- MakeENG(20, 20, 110, 16, NULL, EGAD_TYPES, 0, 0),
- GTCY_Labels, CycLabels,
- TAG_END
- );
- if (gad == NULL)
- return(-1);
-
- EGadOrient = gad = CreateGadget(CYCLE_KIND, gad,
- MakeENG(20, 40, 110, 16, NULL, EGAD_LABPL, 0, 0),
- GTCY_Labels, CycOrient,
- TAG_END
- );
- if (gad == NULL)
- return(-1);
-
- gad = CreateGadget(BUTTON_KIND, gad,
- MakeENG(135, 20, 40, 16, "NEW", EGAD_NEW, PLACETEXT_IN, 0),
- TAG_END
- );
- if (gad == NULL)
- return(-1);
-
- gad = CreateGadget(BUTTON_KIND, gad,
- MakeENG(180, 20, 40, 16, "DEL", EGAD_DEL, PLACETEXT_IN, 0),
- TAG_END
- );
- if (gad == NULL)
- return(-1);
-
- gad = CreateGadget(BUTTON_KIND, gad,
- MakeENG(140, 40, 80, 16, "UPDATE", EGAD_UPDATE, PLACETEXT_IN, 0),
- TAG_END
- );
-
-
- gad = CreateGadget(BUTTON_KIND, gad,
- MakeENG(225, 20, 40, 16, "MOV", EGAD_MOVE, PLACETEXT_IN, 0),
- TAG_END
- );
- if (gad == NULL)
- return(-1);
-
- gad = CreateGadget(BUTTON_KIND, gad,
- MakeENG(270, 20, 40, 16, "SIZ", EGAD_SIZE, PLACETEXT_IN, 0),
- TAG_END
- );
- if (gad == NULL)
- return(-1);
-
- gad = CreateGadget(BUTTON_KIND, gad,
- MakeENG(315, 20, 70, 16, "WANDER", EGAD_WANDER, PLACETEXT_IN, 0),
- TAG_END
- );
- if (gad == NULL)
- return(-1);
-
- EGadRegText = gad = CreateGadget(STRING_KIND, gad,
- MakeENG(100, 60, 100, 16, "REGION", EGAD_REGNAME, PLACETEXT_LEFT, 0),
- GTST_MaxChars, 32,
- TAG_END
- );
- if (gad == NULL)
- return(-1);
- RegName = ((StringInfo *)gad->SpecialInfo)->Buffer;
-
- EGadLabText = gad = CreateGadget(STRING_KIND, gad,
- MakeENG(100, 80, 100, 16, "LABEL", EGAD_LABEL, PLACETEXT_LEFT, 0),
- GTST_MaxChars, 32,
- TAG_END
- );
- if (gad == NULL)
- return(-1);
- LabName = ((StringInfo *)gad->SpecialInfo)->Buffer;
-
- EGadDefText = gad = CreateGadget(STRING_KIND, gad,
- MakeENG(100, 100, 100, 16, "DEFAULT", EGAD_DEFAULT, PLACETEXT_LEFT, 0),
- GTST_MaxChars, 32,
- TAG_END
- );
- if (gad == NULL)
- return(-1);
- DefName = ((StringInfo *)gad->SpecialInfo)->Buffer;
-
- EGadMaxBufLen = gad = CreateGadget(STRING_KIND, gad,
- MakeENG(100, 120, 50, 16, "BUFLEN", EGAD_MAXBUFLEN, PLACETEXT_LEFT, 0),
- GTST_MaxChars, 3,
- TAG_END
- );
- if (gad == NULL)
- return(-1);
- MaxName = ((StringInfo *)gad->SpecialInfo)->Buffer;
-
- /*
- * Item List
- */
-
- gad = CreateGadget(BUTTON_KIND, gad,
- MakeENG(225, 145, 40, 16, "ADD", EGAD_LADD, PLACETEXT_IN, 0),
- TAG_END
- );
- if (gad == NULL)
- return(-1);
- gad = CreateGadget(BUTTON_KIND, gad,
- MakeENG(270, 145, 40, 16, "DEL", EGAD_LDEL, PLACETEXT_IN, 0),
- TAG_END
- );
- if (gad == NULL)
- return(-1);
-
-
- EGadAddText = gad = CreateGadget(STRING_KIND, gad,
- MakeENG(225, 125, 175, 16, "ENUM", EGAD_ENUMSTR, PLACETEXT_BELOW, 0),
- GTST_MaxChars, 32,
- TAG_END
- );
- if (gad == NULL)
- return(-1);
- AddName = ((StringInfo *)gad->SpecialInfo)->Buffer;
-
- EGadList = gad = CreateGadget(LISTVIEW_KIND, gad,
- MakeENG(225, 40, 175, 80, NULL, EGAD_ENUM, 0, 0),
- GTLV_Labels, &EList,
- GTLV_ShowSelected, EGadAddText,
- TAG_END
- );
-
- /*
- * Window
- */
-
- EWin = OpenWindowTags(NULL,
- WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|
- WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_REPORTMOUSE|
- WFLG_SIZEGADGET,
-
- WA_IDCMP, IDCMP_NEWSIZE|IDCMP_MOUSEBUTTONS|IDCMP_GADGETDOWN|
- IDCMP_GADGETUP|IDCMP_MENUPICK|IDCMP_VANILLAKEY|
- IDCMP_RAWKEY|IDCMP_CHANGEWINDOW|IDCMP_CLOSEWINDOW|
- IDCMP_REFRESHWINDOW|IDCMP_MOUSEMOVE|IDCMP_ACTIVEWINDOW,
-
- WA_Left, 0,
- WA_Top, 0,
- WA_InnerWidth, 400,
- WA_InnerHeight, 160,
- WA_Title, "TPL CONTROL",
- WA_MinWidth, 32,
- WA_MinHeight, 32,
- WA_MaxWidth, -1,
- WA_MaxHeight, -1,
- WA_AutoAdjust, 1,
- WA_PubScreen, NULL,
- WA_PubScreenFallBack, 1,
- WA_Gadgets, EGList,
- TAG_END
- );
-
- if (EWin == NULL)
- return(-1);
-
- EWinMask = 1 << EWin->UserPort->mp_SigBit;
-
- GT_RefreshWindow(EWin, NULL);
- return(1);
- }
-
- void
- CloseEditWindow()
- {
- if (EWin) {
- ClearMenuStrip(EWin);
- CloseWindow(EWin);
- EWin = NULL;
- }
- if (EGList) {
- FreeGadgets(EGList);
- EGList = NULL;
- }
- /*
- if (ENg.ng_VisualInfo) {
- FreeVisualInfo(ENg.ng_VisualInfo);
- ENg.ng_VisualInfo = NULL;
- }
- */
- }
-
- void
- HandleEditGadget(im)
- IMsg *im;
- {
- switch(((Gadget *)im->IAddress)->GadgetID) {
- case EGAD_TYPES:
- NewType = im->Code;
- break;
- case EGAD_LABPL:
- NewFlags= 1 << im->Code;
- break;
- case EGAD_NEW:
- CurState = STATE_NEWREGION;
- DisableGadgets();
- break;
- case EGAD_WANDER:
- CurState = STATE_WANDER;
- EnableGadgets();
- break;
- case EGAD_DEL:
- DisableGadgets();
- CurState = STATE_DELREGION;
- break;
- case EGAD_MOVE:
- DisableGadgets();
- CurState = STATE_MOVEREGION;
- break;
- case EGAD_SIZE:
- DisableGadgets();
- CurState = STATE_SIZEREGION;
- break;
- #ifdef NOTDEF
- case EGAD_REGNAME:
- if (CurRegion) {
- StringInfo *si = (StringInfo *)(((Gadget *)im->IAddress)->SpecialInfo);
-
- printf("%08lx %08lx\n", si->Buffer, RegName);
-
- if (CurRegion->rg_Node.ln_Name)
- free(CurRegion->rg_Node.ln_Name);
- CurRegion->rg_Node.ln_Name = strdup(si->Buffer);
- SetCurRegion(CurRegion);
- }
- break;
- case EGAD_LABEL:
- if (CurRegion) {
- StringInfo *si = (StringInfo *)(((Gadget *)im->IAddress)->SpecialInfo);
-
- if (CurRegion->rg_LabText)
- free(CurRegion->rg_LabText);
- CurRegion->rg_LabText = strdup(si->Buffer);
- }
- break;
- case EGAD_DEFAULT:
- if (CurRegion) {
- StringInfo *si = (StringInfo *)(((Gadget *)im->IAddress)->SpecialInfo);
-
- if (CurRegion->rg_DefText)
- free(CurRegion->rg_DefText);
- CurRegion->rg_DefText = strdup(si->Buffer);
- }
- break;
- #endif
- case EGAD_ENUMSTR:
- case EGAD_LADD:
- if (AddName[0] == 0)
- break;
- GT_SetGadgetAttrs(EGadList, EWin, NULL,
- GTLV_Labels, -1,
- TAG_END
- );
- {
- MaxNode *mn;
- for (mn = GetHead(&EList); mn; mn = GetSucc(mn)) {
- if (strcmp(AddName, mn->ln_Name) == 0)
- break;
- }
- if (mn == NULL)
- AddNode(&EList, AddName, 1);
- }
- GT_SetGadgetAttrs(EGadList, EWin, NULL,
- GTLV_Labels, &EList,
- TAG_END
- );
- break;
- case EGAD_LDEL:
- GT_SetGadgetAttrs(EGadList, EWin, NULL,
- GTLV_Labels, -1,
- TAG_END
- );
- {
- MaxNode *mn;
- for (mn = GetHead(&EList); mn; mn = GetSucc(mn)) {
- if (strcmp(AddName, mn->ln_Name) == 0) {
- Remove(mn);
- free(mn->ln_Name);
- free(mn);
- break;
- }
- }
- }
- GT_SetGadgetAttrs(EGadList, EWin, NULL,
- GTLV_Labels, &EList,
- TAG_END
- );
- break;
- case EGAD_UPDATE:
- /*
- * Update currently selected gadget from TPL CONTROL window
- */
-
- if (CurRegion) {
- UpdateTplRegion(CurRegion);
- SetCurRegion(CurRegion);
- CurState = STATE_WANDER;
- ReMakeEverything();
- /*
- MakeAllGadgets();
- RefreshGList(GList, Win, NULL, -1);
- GT_RefreshWindow(Win, NULL);
- */
- }
- break;
- }
- }
-
- void
- UpdateEWinInfo(rg)
- TplRegion *rg;
- {
- NewType = rg->rg_Type;
- NewFlags= rg->rg_Flags;
-
- sprintf(TmpBuf, "%d", rg->rg_MaxBufLen);
- GT_SetGadgetAttrs(EGadMaxBufLen, EWin, NULL,
- GTST_String, TmpBuf,
- TAG_END
- );
-
- GT_SetGadgetAttrs(EGadType, EWin, NULL,
- GTCY_Active, rg->rg_Type,
- TAG_END
- );
- GT_SetGadgetAttrs(EGadOrient, EWin, NULL,
- GTCY_Active, (rg->rg_Flags & 0x0001) ? 0 :
- (rg->rg_Flags & 0x0002) ? 1 :
- (rg->rg_Flags & 0x0004) ? 2 :
- (rg->rg_Flags & 0x0008) ? 4 :
- (rg->rg_Flags & 0x0010) ? 5 : 0,
- TAG_END
- );
- GT_SetGadgetAttrs(EGadRegText, EWin, NULL,
- GTST_String, (rg->rg_Node.ln_Name) ? rg->rg_Node.ln_Name : "",
- TAG_END
- );
- GT_SetGadgetAttrs(EGadLabText, EWin, NULL,
- GTST_String, (rg->rg_LabText) ? rg->rg_LabText : "",
- TAG_END
- );
- GT_SetGadgetAttrs(EGadDefText, EWin, NULL,
- GTST_String, (rg->rg_DefText) ? rg->rg_DefText : "",
- TAG_END
- );
- if (rg->rg_Type == RGT_CYCLE || rg->rg_Type == RGT_SELLIST) {
- MaxNode *mn;
-
- GT_SetGadgetAttrs(EGadList, EWin, NULL,
- GTLV_Labels, -1,
- TAG_END
- );
- while (mn = RemHead(&EList)) {
- free(mn->ln_Name);
- free(mn);
- }
- for (mn = GetHead(&rg->rg_ListSet); mn; mn = GetSucc(mn)) {
- AddNode(&EList, mn->ln_Name, 1);
- }
- GT_SetGadgetAttrs(EGadList, EWin, NULL,
- GTLV_Labels, &EList,
- TAG_END
- );
- }
- }
-
- NewGadget *
- MakeENG(le, te, w, h, ltext, gadid, flags, user)
- short le;
- short te;
- short w;
- short h;
- char *ltext;
- short gadid;
- long flags;
- APTR user;
- {
- ENg.ng_LeftEdge = le;
- ENg.ng_TopEdge = te;
- ENg.ng_Width = w;
- ENg.ng_Height= h;
- ENg.ng_GadgetText = ltext;
- ENg.ng_GadgetID = gadid;
- ENg.ng_Flags = flags;
- ENg.ng_UserData = user;
- return(&ENg);
- }
-
-