home *** CD-ROM | disk | FTP | other *** search
- /*
- * editwindow.c V1.5
- *
- * edit window
- *
- * (c) 1991 by Stefan Becker
- *
- */
- #include "ToolManager.h"
-
- /* Structures for window */
- static char WindowTitle[]="Edit Tool Definition"; /* 1. Window title */
- static char IP1WindowTitle[]="Press right mouse button"; /* 2. Window title */
- static char IP2WindowTitle[]="Position, then release"; /* 3. Window title */
- extern struct NewWindow nw;
- static struct Window *w;
- static struct MsgPort *wp;
- static ULONG wh; /* Window height */
- static struct Screen *pubsc; /* Workbench screen */
-
- /* Structures for window gadgets */
- static void *vi; /* Visual information is a *PRIVATE* data field! */
- extern struct GfxBase *GfxBase;
- static struct TextAttr ta={NULL,0,0,0};
- static struct Gadget *gl; /* Gadget list */
- #define TOGAD_ID 1
- static char *ToolLabelTexts[]={"Dummy","CLI","WB",NULL};
- #define OTGAD_ID 2
- static struct Gadget *otcg;
- #define ALGAD_ID 3
- extern char AliasKey[];
- static struct Gadget *alsg;
- #define RBGAD_ID 4
- extern char RealKey[];
- static struct Gadget *rnbg;
- #define RNGAD_ID 5
- static struct Gadget *rnsg;
- #define WBGAD_ID 6
- static char WDButtonText[]="WorkDir";
- static struct Gadget *wdbg;
- #define WDGAD_ID 7
- static struct Gadget *wdsg;
- #define PBGAD_ID 8
- static char PAButtonText[]="Path";
- static struct Gadget *pabg;
- #define PAGAD_ID 9
- static struct Gadget *pasg;
- #define OBGAD_ID 10
- static char OFButtonText[]="OutFile";
- static struct Gadget *ofbg;
- #define OFGAD_ID 11
- static struct Gadget *ofsg;
- #define STGAD_ID 12
- extern char StackKey[];
- static struct Gadget *stig;
- #define HKGAD_ID 13
- extern char HotKKey[];
- static struct Gadget *hksg;
- #define MNGAD_ID 14
- static struct Gadget *mncg;
- #define ARGAD_ID 15
- static struct Gadget *arcg;
- #define WFGAD_ID 16
- static struct Gadget *wfcg;
- #define ICGAD_ID 17
- static struct Gadget *iccg;
- #define INGAD_ID 18
- static struct Gadget *incg;
- #define ITGAD_ID 19
- extern char BrushKey[];
- extern char DObjKey[];
- static char *IconLabelTexts[]={BrushKey,DObjKey,NULL};
- static struct Gadget *itcg;
- #define IBGAD_ID 20
- extern char IFileKey[];
- static struct Gadget *ifbg;
- #define IFGAD_ID 21
- static struct Gadget *ifsg;
- #define IXGAD_ID 22
- static struct Gadget *ixig;
- #define IYGAD_ID 23
- static struct Gadget *iyig;
- #define IPGAD_ID 24
- static struct Gadget *ipbg;
- static BOOL DoPositioning;
- static BOOL NewPosition;
- #define DOGAD_ID 25
- static struct Gadget *docg;
- #define SIGAD_ID 26
- static struct Gadget *sicg;
- #define DTGAD_ID 27
- static struct Gadget *dtcg;
- #define DBGAD_ID 28
- extern char DFileKey[];
- static struct Gadget *dfbg;
- #define DFGAD_ID 29
- static struct Gadget *dfsg;
- #define OKGAD_ID 30
- #define CAGAD_ID 31
- static struct Gadget *curg; /* Current active string gadget */
-
- /* miscellaneous */
- extern WORD lvord;
- static struct ToolNode *etn; /* Pointer to edit tool node */
- static struct ConfigBlock *cb; /* Pointer to config block */
-
- /* Create config block */
- static BOOL GetConfigBlock(struct ToolNode *tn)
- {
- if (!(cb=malloc(sizeof(struct ConfigBlock)))) return(FALSE);
-
- /* Init config block */
- InitConfigBlock(cb);
-
- /* Copy tools parameters */
- cb->cb_Type=tn->tn_Type;
- cb->cb_Flags=tn->tn_Flags;
- cb->cb_Stack=tn->tn_Stack;
- strcpy(cb->cb_Alias,tn->tn_Node.ln_Name);
- if (tn->tn_RealName) strcpy(cb->cb_RealName,tn->tn_RealName);
- if (tn->tn_WorkDir) strcpy(cb->cb_WorkDir,tn->tn_WorkDir);
- if (tn->tn_Path) strcpy(cb->cb_Path,tn->tn_Path);
- if (tn->tn_OutFile) strcpy(cb->cb_OutFile,tn->tn_OutFile);
- if (tn->tn_HotKey) strcpy(cb->cb_HotKey,tn->tn_HotKey);
- if (tn->tn_IconFile) strcpy(cb->cb_IconFile,tn->tn_IconFile);
- if (tn->tn_DockFile) strcpy(cb->cb_DockFile,tn->tn_DockFile);
- if (tn->tn_Icon)
- {
- cb->cb_IconX=tn->tn_Icon->do_CurrentX;
- cb->cb_IconY=tn->tn_Icon->do_CurrentY;
- }
-
- /* All OK */
- return(TRUE);
- }
-
- /* Create gadgets */
- static BOOL CreateGadgets(ULONG *width)
- {
- struct NewGadget ng;
- struct Gadget *g;
- struct TextFont *f;
- UWORD topborder,leftedge,leftstring,fheight;
- UWORD fwidth,wg,wbg,wsg;
- BOOL dummy=cb->cb_Type==TNTYPE_DUMMY;
- BOOL ncli=cb->cb_Type!=TNTYPE_CLI;
- BOOL nicon=dummy || !(cb->cb_Flags&TNFLAGS_ICON);
- BOOL ndock=dummy || !(cb->cb_Flags&TNFLAGS_DOCK);
-
- if (!(f=OpenFont(pubsc->Font))) goto cge1; /* Open window font */
- topborder=pubsc->WBorTop+f->tf_YSize+1; /* Top border offset */
- CloseFont(f); /* Close font */
-
- f=GfxBase->DefaultFont; /* System Default Font */
- ta.ta_Name=f->tf_Message.mn_Node.ln_Name;
- ta.ta_YSize=f->tf_YSize;
- fheight=f->tf_YSize+INTERHEIGHT; /* font height */
- fwidth=f->tf_XSize; /* font width */
-
- /* Create gadget list */
- gl=NULL;
- g=CreateContext(&gl);
-
- /* Calculate window values */
- leftedge=pubsc->WBorLeft+INTERWIDTH;
- wbg=8*fwidth+INTERWIDTH;
- leftstring=8*fwidth+pubsc->WBorLeft+3*INTERWIDTH;
- wg=30*fwidth+pubsc->WBorLeft+13*INTERWIDTH;
- if (wg>*width) *width=wg;
- wsg=*width-leftstring+INTERWIDTH+INTERWIDTH/2;
-
- /* 1. gadget: Cycle, Tool type */
- ng.ng_LeftEdge=leftstring;
- ng.ng_TopEdge=topborder+INTERHEIGHT;
- ng.ng_Width=6*fwidth+3*INTERWIDTH;
- ng.ng_Height=fheight;
- ng.ng_GadgetText="Type ";
- ng.ng_TextAttr=&ta;
- ng.ng_GadgetID=TOGAD_ID;
- ng.ng_Flags=PLACETEXT_LEFT;
- ng.ng_VisualInfo=vi;
- ng.ng_UserData=NULL;
- if (!(g=CreateGadget(CYCLE_KIND,g,&ng,
- GTCY_Labels,ToolLabelTexts,
- GTCY_Active,cb->cb_Type,
- TAG_DONE)))
- goto cge2;
-
- /* 2. gadget: CheckBox, Output */
- ng.ng_LeftEdge+=g->Width+2*INTERWIDTH;
- ng.ng_Width=10;
- ng.ng_GadgetText="Output";
- ng.ng_GadgetID=OTGAD_ID;
- ng.ng_Flags=PLACETEXT_RIGHT;
- if (!(otcg=g=CreateGadget(CHECKBOX_KIND,g,&ng,
- GTCB_Checked,cb->cb_Flags&TNFLAGS_COUT,
- GA_Disabled,ncli,
- TAG_DONE)))
- goto cge2;
-
- /* 3. gadget: String, Alias */
- ng.ng_LeftEdge=leftstring;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=wsg;
- ng.ng_Height=fheight+2;
- ng.ng_GadgetText=AliasKey;
- ng.ng_GadgetID=ALGAD_ID;
- ng.ng_Flags=PLACETEXT_LEFT;
- if (!(alsg=g=CreateGadget(STRING_KIND,g,&ng,
- GTST_String,cb->cb_Alias,
- GTST_MaxChars,BUFLEN-1,
- TAG_DONE)))
- goto cge2;
-
- /* 4. gadget: Button, RealName */
- ng.ng_LeftEdge=leftedge;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=wbg;
- ng.ng_GadgetText=RealKey;
- ng.ng_GadgetID=RBGAD_ID;
- ng.ng_Flags=PLACETEXT_IN;
- if (!(rnbg=g=CreateGadget(BUTTON_KIND,g,&ng,
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 5. gadget: String, RealName */
- ng.ng_LeftEdge=leftstring;
- ng.ng_Width=wsg;
- ng.ng_GadgetText=NULL;
- ng.ng_GadgetID=RNGAD_ID;
- if (!(rnsg=g=CreateGadget(STRING_KIND,g,&ng,
- GTST_String,cb->cb_RealName,
- GTST_MaxChars,BUFLEN-1,
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 6. gadget: Button, WorkDir */
- ng.ng_LeftEdge=leftedge;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=wbg;
- ng.ng_GadgetText=WDButtonText;
- ng.ng_GadgetID=WBGAD_ID;
- if (!(wdbg=g=CreateGadget(BUTTON_KIND,g,&ng,
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 7. gadget: String, WorkDir */
- ng.ng_LeftEdge=leftstring;
- ng.ng_Width=wsg;
- ng.ng_GadgetText=NULL;
- ng.ng_GadgetID=WDGAD_ID;
- if (!(wdsg=g=CreateGadget(STRING_KIND,g,&ng,
- GTST_String,cb->cb_WorkDir,
- GTST_MaxChars,BUFLEN-1,
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 8. gadget: Button, Path */
- ng.ng_LeftEdge=leftedge;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=wbg;
- ng.ng_GadgetText=PAButtonText;
- ng.ng_GadgetID=PBGAD_ID;
- if (!(pabg=g=CreateGadget(BUTTON_KIND,g,&ng,
- GA_Disabled,ncli,
- TAG_DONE)))
- goto cge2;
-
- /* 9. gadget: String, Path */
- ng.ng_LeftEdge=leftstring;
- ng.ng_Width=wsg;
- ng.ng_GadgetText=NULL;
- ng.ng_GadgetID=PAGAD_ID;
- if (!(pasg=g=CreateGadget(STRING_KIND,g,&ng,
- GTST_String,cb->cb_Path,
- GTST_MaxChars,BUFLEN-1,
- GA_Disabled,ncli,
- TAG_DONE)))
- goto cge2;
-
- /* 10. gadget: String, OutFile */
- ng.ng_LeftEdge=leftedge;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=wbg;
- ng.ng_GadgetText=OFButtonText;
- ng.ng_GadgetID=OBGAD_ID;
- if (!(ofbg=g=CreateGadget(BUTTON_KIND,g,&ng,
- GA_Disabled,ncli,
- TAG_DONE)))
- goto cge2;
-
- /* 11. gadget: String, OutFile */
- ng.ng_LeftEdge=leftstring;
- ng.ng_Width=wsg;
- ng.ng_GadgetText=NULL;
- ng.ng_GadgetID=OFGAD_ID;
- if (!(ofsg=g=CreateGadget(STRING_KIND,g,&ng,
- GTST_String,cb->cb_OutFile,
- GTST_MaxChars,BUFLEN-1,
- GA_Disabled,ncli,
- TAG_DONE)))
- goto cge2;
-
- /* 12. gadget: Integer, Stack */
- ng.ng_LeftEdge=leftstring;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_GadgetText=StackKey;
- ng.ng_GadgetID=STGAD_ID;
- ng.ng_Flags=PLACETEXT_LEFT;
- if (!(stig=g=CreateGadget(INTEGER_KIND,g,&ng,
- GTIN_Number,cb->cb_Stack,
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 13. gadget: String, HotKey */
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_GadgetText=HotKKey;
- ng.ng_GadgetID=HKGAD_ID;
- if (!(hksg=g=CreateGadget(STRING_KIND,g,&ng,
- GTST_String,cb->cb_HotKey,
- GTST_MaxChars,BUFLEN-1,
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 14. gadget: CheckBox, Menu */
- ng.ng_LeftEdge=pubsc->WBorLeft+INTERWIDTH;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=10;
- ng.ng_Height=fheight;
- ng.ng_GadgetText="Menu";
- ng.ng_GadgetID=MNGAD_ID;
- ng.ng_Flags=PLACETEXT_RIGHT;
- if (!(mncg=g=CreateGadget(CHECKBOX_KIND,g,&ng,
- GTCB_Checked,cb->cb_Flags&TNFLAGS_MENU,
- TAG_DONE)))
- goto cge2;
-
- /* 15. gadget: CheckBox, Args */
- wg=4*fwidth+2*INTERWIDTH;
- ng.ng_LeftEdge+=g->Width+wg;
- ng.ng_GadgetText="Args";
- ng.ng_GadgetID=ARGAD_ID;
- if (!(arcg=g=CreateGadget(CHECKBOX_KIND,g,&ng,
- GTCB_Checked,!(cb->cb_Flags&TNFLAGS_NARG),
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 16. gadget: CheckBox, WBFront */
- ng.ng_LeftEdge+=g->Width+wg;
- ng.ng_GadgetText="WBFront";
- ng.ng_GadgetID=WFGAD_ID;
- if (!(wfcg=g=CreateGadget(CHECKBOX_KIND,g,&ng,
- GTCB_Checked,cb->cb_Flags&TNFLAGS_WBTF,
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 17. gadget: CheckBox, Icon */
- ng.ng_LeftEdge=pubsc->WBorLeft+INTERWIDTH;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_GadgetText=DObjKey;
- ng.ng_GadgetID=ICGAD_ID;
- if (!(iccg=g=CreateGadget(CHECKBOX_KIND,g,&ng,
- GTCB_Checked,cb->cb_Flags&TNFLAGS_ICON,
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 18. gadget: CheckBox, Name */
- ng.ng_LeftEdge+=g->Width+wg;
- ng.ng_GadgetText="Name";
- ng.ng_GadgetID=INGAD_ID;
- if (!(incg=g=CreateGadget(CHECKBOX_KIND,g,&ng,
- GTCB_Checked,!(cb->cb_Flags&TNFLAGS_NNAM),
- GA_Disabled,nicon,
- TAG_DONE)))
- goto cge2;
-
- /* 19. gadget: Cycle, Icon type */
- ng.ng_LeftEdge+=g->Width+wg;
- ng.ng_Width=6*fwidth+3*INTERWIDTH;
- ng.ng_GadgetText="Type ";
- ng.ng_GadgetID=ITGAD_ID;
- if (!(itcg=g=CreateGadget(CYCLE_KIND,g,&ng,
- GTCY_Labels,IconLabelTexts,
- GTCY_Active,(cb->cb_Flags&TNFLAGS_DOBJ)?1:0,
- GA_Disabled,nicon,
- TAG_DONE)))
- goto cge2;
-
- /* 20. gadget: String, IconFile */
- ng.ng_LeftEdge=leftedge;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=wbg;
- ng.ng_Height=fheight+2;
- ng.ng_GadgetText=IFileKey;
- ng.ng_GadgetID=IBGAD_ID;
- ng.ng_Flags=PLACETEXT_IN;
- if (!(ifbg=g=CreateGadget(BUTTON_KIND,g,&ng,
- GA_Disabled,nicon,
- TAG_DONE)))
- goto cge2;
-
- /* 21. gadget: String, IconFile */
- ng.ng_LeftEdge=leftstring;
- ng.ng_Width=wsg;
- ng.ng_GadgetText=NULL;
- ng.ng_GadgetID=IFGAD_ID;
- if (!(ifsg=g=CreateGadget(STRING_KIND,g,&ng,
- GTST_String,cb->cb_IconFile,
- GTST_MaxChars,BUFLEN-1,
- GA_Disabled,nicon,
- TAG_DONE)))
- goto cge2;
-
- /* 22. gadget: Integer, Icon X Position */
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=4*fwidth+2*INTERWIDTH;
- ng.ng_GadgetText="Icon X";
- ng.ng_GadgetID=IXGAD_ID;
- ng.ng_Flags=PLACETEXT_LEFT;
- if (!(ixig=g=CreateGadget(INTEGER_KIND,g,&ng,
- GTIN_Number,cb->cb_IconX,
- GA_Disabled,nicon,
- TAG_DONE)))
- goto cge2;
-
- /* 23. gadget: Integer, Icon Y Position */
- ng.ng_LeftEdge+=g->Width+3*fwidth+2*INTERWIDTH;
- ng.ng_GadgetText="Y";
- ng.ng_GadgetID=IYGAD_ID;
- if (!(iyig=g=CreateGadget(INTEGER_KIND,g,&ng,
- GTIN_Number,cb->cb_IconY,
- GA_Disabled,nicon,
- TAG_DONE)))
- goto cge2;
-
- /* 24. gadget: Button, Icon Positioning */
- ng.ng_LeftEdge+=g->Width+3*INTERWIDTH;
- ng.ng_Width=11*fwidth+INTERWIDTH;
- ng.ng_GadgetText="Positioning";
- ng.ng_GadgetID=IPGAD_ID;
- ng.ng_Flags=PLACETEXT_IN;
- if (!(ipbg=g=CreateGadget(BUTTON_KIND,g,&ng,
- GA_Disabled,nicon,
- TAG_DONE)))
- goto cge2;
- DoPositioning=FALSE;
- NewPosition=FALSE;
-
- /* 25. gadget: CheckBox, Dock */
- ng.ng_LeftEdge=pubsc->WBorLeft+INTERWIDTH;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_GadgetText="Dock";
- ng.ng_GadgetID=DOGAD_ID;
- ng.ng_Flags=PLACETEXT_RIGHT;
- if (!(docg=g=CreateGadget(CHECKBOX_KIND,g,&ng,
- GTCB_Checked,cb->cb_Flags&TNFLAGS_DOCK,
- GA_Disabled,dummy,
- TAG_DONE)))
- goto cge2;
-
- /* 26. gadget: CheckBox, Same Icon */
- ng.ng_LeftEdge+=g->Width+wg;
- ng.ng_GadgetText="Same Icon";
- ng.ng_GadgetID=SIGAD_ID;
- if (!(sicg=g=CreateGadget(CHECKBOX_KIND,g,&ng,
- GTCB_Checked,cb->cb_Flags&TNFLAGS_SICN,
- GA_Disabled,ndock || nicon,
- TAG_DONE)))
- goto cge2;
-
- /* 27. gadget: Cycle, Dock type */
- ng.ng_LeftEdge+=g->Width+2*wg;
- ng.ng_Width=6*fwidth+3*INTERWIDTH;
- ng.ng_GadgetText="Type ";
- ng.ng_GadgetID=DTGAD_ID;
- if (!(dtcg=g=CreateGadget(CYCLE_KIND,g,&ng,
- GTCY_Labels,IconLabelTexts,
- GTCY_Active,(cb->cb_Flags&TNFLAGS_DDOB)?1:0,
- GA_Disabled,ndock || cb->cb_Flags&TNFLAGS_SICN,
- TAG_DONE)))
- goto cge2;
-
- /* 28. gadget: Button, DockFile */
- ng.ng_LeftEdge=leftedge;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=wbg;
- ng.ng_Height=fheight+2;
- ng.ng_GadgetText=DFileKey;
- ng.ng_GadgetID=DBGAD_ID;
- ng.ng_Flags=PLACETEXT_IN;
- if (!(dfbg=g=CreateGadget(BUTTON_KIND,g,&ng,
- GA_Disabled,ndock || cb->cb_Flags&TNFLAGS_SICN,
- TAG_DONE)))
- goto cge2;
-
- /* 29. gadget: String, DockFile */
- ng.ng_LeftEdge=leftstring;
- ng.ng_Width=wsg;
- ng.ng_GadgetText=NULL;
- ng.ng_GadgetID=DFGAD_ID;
- if (!(dfsg=g=CreateGadget(STRING_KIND,g,&ng,
- GTST_String,cb->cb_DockFile,
- GTST_MaxChars,BUFLEN-1,
- GA_Disabled,ndock || cb->cb_Flags&TNFLAGS_SICN,
- TAG_DONE)))
- goto cge2;
-
- /* 30. gadget: Button, OK */
- wg=6*fwidth+INTERWIDTH;
- ng.ng_LeftEdge=pubsc->WBorLeft+INTERWIDTH;
- ng.ng_TopEdge+=fheight+INTERHEIGHT;
- ng.ng_Width=wg;
- ng.ng_GadgetText="OK";
- ng.ng_GadgetID=OKGAD_ID;
- if (!(g=CreateGadget(BUTTON_KIND,g,&ng,TAG_DONE))) goto cge2;
-
- /* 31. gadget: Button, Cancel */
- ng.ng_LeftEdge=pubsc->WBorLeft+*width-wg+INTERWIDTH;
- ng.ng_GadgetText="Cancel";
- ng.ng_GadgetID=CAGAD_ID;
- if (!(g=CreateGadget(BUTTON_KIND,g,&ng,TAG_DONE))) goto cge2;
-
- /* Calculate window height */
- wh=ng.ng_TopEdge+fheight-topborder+INTERHEIGHT;
- return(TRUE);
-
- cge2: FreeGadgets(gl);
- cge1: return(FALSE);
- }
-
- /* Set current string gadget and activate it */
- static void SetAndActivateSG(struct Gadget *g)
- {
- ActivateGadget(g,w,NULL);
- curg=g;
- }
-
- /* Open edit window */
- void OpenEditWindow(ULONG left, ULONG top, ULONG width, struct ToolNode *tn)
- {
- if (!(pubsc=LockPubScreen(WBScreenName))) /* Lock Workbench screen */
- goto oew1;
-
- if (!(vi=GetVisualInfo(pubsc,TAG_DONE))) /* Get visual information */
- goto oew2;
-
- if (!GetConfigBlock(tn)) /* Get memory for config block */
- goto oew3;
-
- if (!CreateGadgets(&width)) /* Create Gadgets */
- goto oew4;
-
- /* Open window */
- if (!(w=OpenWindowTags(&nw,
- WA_Left,left-INTERWIDTH,
- WA_Top,top+20,
- WA_InnerWidth,width+2*INTERWIDTH,
- WA_InnerHeight,wh,
- WA_RMBTrap,TRUE,
- WA_Title,WindowTitle,
- WA_PubScreen,pubsc,
- WA_AutoAdjust,TRUE,
- TAG_DONE)))
- goto oew5;
-
- wp=w->UserPort; /* Retrieve window port */
-
- /* Add gadget list to window */
- AddGList(w,gl,(UWORD) -1,(UWORD) -1,NULL);
- RefreshGList(gl,w,NULL,(UWORD) -1);
- GT_RefreshWindow(w,NULL);
- SetAndActivateSG(alsg);
-
- /* Window open! */
- UnlockPubScreen(NULL,pubsc);
- etn=tn;
- editwinsig=1L<<wp->mp_SigBit;
- globalsigs|=editwinsig;
- return;
-
- /* Something went wrong.... */
- oew5: FreeGadgets(gl);
- oew4: free(cb);
- oew3: FreeVisualInfo(vi);
- oew2: UnlockPubScreen(NULL,pubsc);
- oew1: return;
- }
-
- /* Close edit window */
- void CloseEditWindow(void)
- {
- if (editwinsig)
- {
- CloseWindow(w);
- FreeGadgets(gl);
- free(cb);
- FreeVisualInfo(vi);
- globalsigs&=~editwinsig;
- editwinsig=0;
- StatWinEndEditing();
- }
- }
-
- /* Handle old icon position */
- static void DoOldPosition(void)
- {
- if (NewPosition) /* Has the user choosen a new icon position? */
- {
- /* Yes, remove the new icon */
- if (etn->tn_AppIcon) RemoveAppIcon(etn->tn_AppIcon);
-
- /* Let the old icon re-appear */
- if (etn->tn_Flags&TNFLAGS_ICON)
- {
- /* Old position */
- etn->tn_Icon->do_CurrentX=cb->cb_IconX;
- etn->tn_Icon->do_CurrentY=cb->cb_IconY;
-
- etn->tn_AppIcon=AddAppIconA((ULONG) etn,NULL,
- (etn->tn_Flags&TNFLAGS_NNAM)?"":etn->tn_Node.ln_Name,
- MyMP,NULL,etn->tn_Icon,NULL);
- }
- }
- }
-
- /* Handle new position */
- static void DoNewPosition(void)
- {
- /* Remove the old icon */
- if (etn->tn_AppIcon) RemoveAppIcon(etn->tn_AppIcon);
-
- /* If an icon exists, move it to the new position */
- if (etn->tn_Flags&TNFLAGS_ICON)
- {
- /* Add the new icon */
- etn->tn_Icon->do_CurrentX=((struct StringInfo *) ixig->SpecialInfo)->LongInt;
- etn->tn_Icon->do_CurrentY=((struct StringInfo *) iyig->SpecialInfo)->LongInt;
-
- etn->tn_AppIcon=AddAppIconA((ULONG) etn,NULL,
- (etn->tn_Flags&TNFLAGS_NNAM)?"":etn->tn_Node.ln_Name,
- MyMP,NULL,etn->tn_Icon,NULL);
- }
-
- NewPosition=TRUE;
- }
-
- /* Read in a file/dir name and update Gadget */
- static void SetFileGadget(struct Gadget *g, char *name, int type)
- {
- char *cp=((struct StringInfo *) g->SpecialInfo)->Buffer;
- BPTR oldfl;
-
- oldfl=CurrentDir(etn->tn_DirLock);
- if (!ShowFileRequester(w,name,&cp,type))
- {
- /* Update Gadget */
- GT_SetGadgetAttrs(g,w,NULL,GTST_String,cp,TAG_DONE);
-
- free(cp); /* free buffer */
- }
- CurrentDir(oldfl);
-
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- }
-
- /* Handle edit window events */
- void HandleEditWinEvent(void)
- {
- BOOL clwin=FALSE; /* TRUE if window should be closed */
- struct IntuiMessage *msg;
-
- while ((msg=GT_GetIMsg(wp)) /* && !clwin */)
- {
- switch (msg->Class)
- {
- case IDCMP_MOUSEBUTTONS: /* User pressed a mouse button */
- /* Icon positioning in progress? */
- if (DoPositioning)
- switch(msg->Code) /* Which button? */
- {
- case MENUDOWN: /* User pressed menu button */
- /* Set new window title */
- SetWindowTitles(w,IP2WindowTitle,(UBYTE *) -1);
- break;
-
- case MENUUP: /* User released menu button */
- /* Yes --> read new coordinates and stop positioning */
- if (pubsc=LockPubScreen(WBScreenName))
- {
- WORD x,y;
- register struct Window *wbwin;
-
- /***************************************/
- /***** WARNING ugly code follows! ******/
- /***************************************/
-
- Forbid(); /* Monotasking */
- wbwin=pubsc->FirstWindow;
-
- /* Find Workbench window */
- while (wbwin)
- {
- if (wbwin->Title!=NULL)
- {
- /* Workbench window? */
- if (!strcmp(wbwin->Title,WBScreenName)) break;
- }
- else
- /* Workbench backdrop window? */
- if ((wbwin->Flags&(WFLG_BACKDROP|WFLG_BORDERLESS)==
- WFLG_BACKDROP|WFLG_BORDERLESS) &&
- !strcmp(((struct Task *) wbwin->UserPort->mp_SigTask)->
- tc_Node.ln_Name,WBScreenName))
- break;
-
- /* Next window */
- wbwin=wbwin->NextWindow;
- }
-
- /* Window found? */
- if (wbwin)
- {
- x=wbwin->GZZMouseX; /* Yes --> retreive Mouse coordinates */
- y=wbwin->GZZMouseY;
- }
-
- Permit(); /* Multitasking */
-
- /***************************************/
- /********** End of ugly code ***********/
- /***************************************/
-
- UnlockPubScreen(NULL,pubsc);
-
- /* Window found? */
- if (wbwin)
- {
- /* Yes --> Set new coordinates */
- GT_SetGadgetAttrs(ixig,w,NULL,GTIN_Number,x,TAG_DONE);
- GT_SetGadgetAttrs(iyig,w,NULL,GTIN_Number,(y<0)?0:y,TAG_DONE);
- DoNewPosition();
- }
- }
-
- /* Stop positioning */
- GT_SetGadgetAttrs(ipbg,w,NULL,GA_Disabled,FALSE,TAG_DONE);
- SetWindowTitles(w,WindowTitle,(UBYTE *) -1);
- DoPositioning=FALSE;
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
-
- }
- else
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case IDCMP_CLOSEWINDOW: /* User clicked the close gadget */
- clwin=TRUE; /* Yes, close window */
- DoOldPosition();
- break;
- case IDCMP_REFRESHWINDOW: /* Window must be refreshed */
- GT_BeginRefresh(w);
- GT_EndRefresh(w,TRUE);
- break;
- case IDCMP_GADGETUP: /* User released the gadget */
- switch(((struct Gadget *) msg->IAddress)->GadgetID)
- {
- case TOGAD_ID: /* User selected the Type gadget */
- BOOL dummy,ncli,nicon,ndock,sicon;
-
- /* Set type and status flags */
- cb->cb_Type=msg->Code;
- dummy=cb->cb_Type==TNTYPE_DUMMY; /* DUMMY tool */
- ncli=cb->cb_Type!=TNTYPE_CLI; /* No CLI tool */
- nicon=dummy || !(cb->cb_Flags&TNFLAGS_ICON); /* No icon */
- ndock=dummy || !(cb->cb_Flags&TNFLAGS_DOCK); /* No dock */
- sicon=ndock || (cb->cb_Flags&TNFLAGS_SICN); /* Same icon */
-
- /* (de)activate all other gadgets according to the tool type */
- GT_SetGadgetAttrs(otcg,w,NULL,GA_Disabled,ncli,TAG_DONE);
- GT_SetGadgetAttrs(rnbg,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(rnsg,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(wdbg,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(wdsg,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(pabg,w,NULL,GA_Disabled,ncli,TAG_DONE);
- GT_SetGadgetAttrs(pasg,w,NULL,GA_Disabled,ncli,TAG_DONE);
- GT_SetGadgetAttrs(ofbg,w,NULL,GA_Disabled,ncli,TAG_DONE);
- GT_SetGadgetAttrs(ofsg,w,NULL,GA_Disabled,ncli,TAG_DONE);
- GT_SetGadgetAttrs(stig,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(hksg,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(arcg,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(wfcg,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(iccg,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(incg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(itcg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(ifbg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(ifsg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(ixig,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(iyig,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(ipbg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(docg,w,NULL,GA_Disabled,dummy,TAG_DONE);
- GT_SetGadgetAttrs(sicg,w,NULL,GA_Disabled,ndock,TAG_DONE);
- GT_SetGadgetAttrs(dtcg,w,NULL,GA_Disabled,sicon,TAG_DONE);
- GT_SetGadgetAttrs(dfbg,w,NULL,GA_Disabled,sicon,TAG_DONE);
- GT_SetGadgetAttrs(dfsg,w,NULL,GA_Disabled,sicon,TAG_DONE);
- if (DoPositioning)
- {
- SetWindowTitles(w,WindowTitle,(UBYTE *) -1);
- DoPositioning=FALSE;
- }
-
- /* DUMMY tool? Yes -> Set standard values */
- if (dummy)
- {
- GT_SetGadgetAttrs(mncg,w,NULL,GTCB_Checked,TRUE,TAG_DONE);
- cb->cb_Flags|=TNFLAGS_MENU; /* Don't discard icon flag yet */
-
- /* Next active gadget */
- SetAndActivateSG(alsg);
- }
- else
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
-
- break;
- case OTGAD_ID: /* User selected the Output gadget */
- cb->cb_Flags^=TNFLAGS_COUT; /* Toggle output flag */
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case ALGAD_ID: /* User pressed <return> on Alias gadget */
- if (cb->cb_Type==TNTYPE_DUMMY) /* Activate next gadget */
- SetAndActivateSG(alsg);
- else
- SetAndActivateSG(rnsg);
- break;
- case RBGAD_ID: /* User selected the RealName button gadget */
- SetFileGadget(rnsg,RealKey,FREQ_FILE);
- break;
- case RNGAD_ID: /* User pressed <return> on RealName gadget */
- SetAndActivateSG(wdsg); /* Activate next gadget */
- break;
- case WBGAD_ID: /* User selected the WorkDir button gadget */
- SetFileGadget(wdsg,WDButtonText,FREQ_DIRS);
- break;
- case WDGAD_ID: /* User pressed <return> on WorkDir gadget */
- if (cb->cb_Type==TNTYPE_CLI) /* Activate next gadget */
- SetAndActivateSG(pasg);
- else
- SetAndActivateSG(stig);
- break;
- case PBGAD_ID: /* User selected the Path button gadget */
- char *buf;
-
- /* Get memory for path string */
- if (buf=malloc(BUFLEN))
- {
- char *cp=((struct StringInfo *) pasg->SpecialInfo)->Buffer,*tmp;
- BPTR oldfl;
-
- /* Copy old path string to buffer (only first path!) */
- if (tmp=strchr(cp,','))
- strncpy(buf,cp,cp-tmp);
- else
- strcpy(buf,cp);
- cp=buf;
-
- oldfl=CurrentDir(etn->tn_DirLock);
- if (!ShowFileRequester(w,PAButtonText,&cp,FREQ_DIRS))
- {
- int len=strlen(buf);
-
- /* Build new path string */
- if (len>0)
- {
- strncat(buf,",",BUFLEN-1-len); /* Buffer not empty, append "," */
- if ((BUFLEN-1-len)>0) len++;
- }
- strncat(buf,cp,BUFLEN-1-len); /* Append new name */
- free(cp); /* free FREQ buffer */
-
- /* Update Gadget */
- GT_SetGadgetAttrs(pasg,w,NULL,GTST_String,buf,TAG_DONE);
- }
- CurrentDir(oldfl);
- free(buf);
- }
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case PAGAD_ID: /* User pressed <return> on Path gadget */
- SetAndActivateSG(ofsg); /* Activate next gadget */
- break;
- case OBGAD_ID: /* User selected the OutFile button gadget */
- SetFileGadget(ofsg,OFButtonText,FREQ_FILE);
- break;
- case OFGAD_ID: /* User pressed <return> on OutFile gadget */
- /* Outfile gadget not empty? */
- if (*(((struct StringInfo *) ofsg->SpecialInfo)->Buffer)!='\0')
- {
- GT_SetGadgetAttrs(otcg,w,NULL,GTCB_Checked,TRUE,TAG_DONE);
- cb->cb_Flags|=TNFLAGS_COUT;
- }
- SetAndActivateSG(stig); /* Activate next gadget */
- break;
- case STGAD_ID: /* User pressed <return> on Stack gadget */
- SetAndActivateSG(hksg); /* Activate next gadget */
- break;
- case HKGAD_ID: /* User pressed <return> on HotKey gadget */
- if (cb->cb_Flags&TNFLAGS_ICON) /* Activate next gadget */
- SetAndActivateSG(ifsg);
- else if ((cb->cb_Flags&TNFLAGS_DOCK) && !(cb->cb_Flags&TNFLAGS_SICN))
- SetAndActivateSG(dfsg);
- else
- SetAndActivateSG(alsg);
- break;
- case MNGAD_ID: /* User selected the Menu gadget */
- cb->cb_Flags^=TNFLAGS_MENU; /* Toggle menu flag */
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case ARGAD_ID: /* User selected the Args gadget */
- cb->cb_Flags^=TNFLAGS_NARG; /* Toggle Args flag */
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case WFGAD_ID: /* User selected the WBFront gadget */
- cb->cb_Flags^=TNFLAGS_WBTF; /* Toggle WBFront flag */
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case ICGAD_ID: /* User selected the Icon gadget */
- BOOL nicon=!(iccg->Flags&SELECTED); /* No icon */
-
- cb->cb_Flags^=TNFLAGS_ICON; /* Toggle icon flag */
-
- /* (de)activate icon parameter gadets according to icon flag state */
- GT_SetGadgetAttrs(incg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(itcg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(ifbg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(ifsg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(ixig,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(iyig,w,NULL,GA_Disabled,nicon,TAG_DONE);
- GT_SetGadgetAttrs(ipbg,w,NULL,GA_Disabled,nicon,TAG_DONE);
- if (DoPositioning)
- {
- SetWindowTitles(w,WindowTitle,(UBYTE *) -1);
- DoPositioning=FALSE;
- }
-
- /* Activate next gadget */
- if (nicon)
- {
- SetAndActivateSG(alsg);
-
- /* Set Dock gadget state */
- GT_SetGadgetAttrs(sicg,w,NULL,GA_Disabled,TRUE,
- GTCB_Checked,FALSE,
- TAG_DONE);
- cb->cb_Flags&=~TNFLAGS_SICN;
- if (cb->cb_Flags&TNFLAGS_DOCK)
- {
- GT_SetGadgetAttrs(dtcg,w,NULL,GA_Disabled,FALSE,TAG_DONE);
- GT_SetGadgetAttrs(dfbg,w,NULL,GA_Disabled,FALSE,TAG_DONE);
- GT_SetGadgetAttrs(dfsg,w,NULL,GA_Disabled,FALSE,TAG_DONE);
- }
- }
- else
- {
- ActivateGadget(curg,w,NULL);
-
- /* Set Same Icon gadget state */
- if (cb->cb_Flags&TNFLAGS_DOCK)
- GT_SetGadgetAttrs(sicg,w,NULL,GA_Disabled,FALSE,TAG_DONE);
- }
- break;
- case INGAD_ID: /* User selected the Name gadget */
- cb->cb_Flags^=TNFLAGS_NNAM; /* Toggle NoName flag */
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case ITGAD_ID: /* User selected the IconType gadget */
- cb->cb_Flags^=TNFLAGS_DOBJ; /* Toggle icon type flag */
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case IBGAD_ID: /* User selected the IconFile button gadget */
- SetFileGadget(ifsg,IFileKey,FREQ_ICON);
- break;
- case IFGAD_ID: /* User pressed <return> on IconFile gadget */
- SetAndActivateSG(ixig); /* Activate next gadget */
- break;
- case IXGAD_ID: /* User pressed <return> on X Coord. gadget */
- DoNewPosition();
- SetAndActivateSG(iyig); /* Activate next gadget */
- break;
- case IYGAD_ID: /* User pressed <return> on Y Coord. gadget */
- DoNewPosition();
- /* Activate next gadget */
- if ((cb->cb_Flags&TNFLAGS_DOCK) && !(cb->cb_Flags&TNFLAGS_SICN))
- SetAndActivateSG(dfsg);
- else
- SetAndActivateSG(alsg);
- break;
- case IPGAD_ID: /* User selected the Icon Positioning gadget */
- GT_SetGadgetAttrs(ipbg,w,NULL,GA_Disabled,TRUE,TAG_DONE);
- SetWindowTitles(w,IP1WindowTitle,(UBYTE *) -1);
- DoPositioning=TRUE; /* Start positioning */
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case DOGAD_ID: /* User selected the Dock gadget */
- BOOL ndock=!(docg->Flags&SELECTED); /* No dock */
- BOOL sicon=ndock || (cb->cb_Flags&TNFLAGS_SICN);
-
- cb->cb_Flags^=TNFLAGS_DOCK; /* Toggle dock flag */
-
- /* (de)activate icon parameter gadets according to icon flag state */
- GT_SetGadgetAttrs(sicg,w,NULL,
- GA_Disabled,ndock || !(cb->cb_Flags&TNFLAGS_ICON),
- TAG_DONE);
- GT_SetGadgetAttrs(dtcg,w,NULL,GA_Disabled,sicon,TAG_DONE);
- GT_SetGadgetAttrs(dfbg,w,NULL,GA_Disabled,sicon,TAG_DONE);
- GT_SetGadgetAttrs(dfsg,w,NULL,GA_Disabled,sicon,TAG_DONE);
-
- /* Activate next gadget */
- if (ndock)
- SetAndActivateSG(alsg);
- else
- ActivateGadget(curg,w,NULL);
- break;
- case SIGAD_ID:
- BOOL sicon=sicg->Flags&SELECTED; /* Same icon */
-
- cb->cb_Flags^=TNFLAGS_SICN; /* Toggle Same Icon flag */
- GT_SetGadgetAttrs(dtcg,w,NULL,GA_Disabled,sicon,TAG_DONE);
- GT_SetGadgetAttrs(dfbg,w,NULL,GA_Disabled,sicon,TAG_DONE);
- GT_SetGadgetAttrs(dfsg,w,NULL,GA_Disabled,sicon,TAG_DONE);
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case DTGAD_ID: /* User selected the DockType gadget */
- cb->cb_Flags^=TNFLAGS_DDOB; /* Toggle icon type flag */
- ActivateGadget(curg,w,NULL); /* Reactivate old string gadget */
- break;
- case DBGAD_ID: /* User selected the DockFile button gadget */
- SetFileGadget(dfsg,DFileKey,FREQ_ICON);
- break;
- case DFGAD_ID: /* User pressed <return> on DockFile gadget */
- SetAndActivateSG(alsg); /* Activate next gadget */
- break;
- case OKGAD_ID: /* User selected the OK gadget */
- UWORD oldflags;
-
- /* Window in closing state or icon positioning in progress? */
- /* Yes --> Skip this event */
- if (clwin || DoPositioning) break;
-
- /* Copy new tool parameters */
- strcpy(cb->cb_Alias,
- ((struct StringInfo *) alsg->SpecialInfo)->Buffer);
- strcpy(cb->cb_RealName,
- ((struct StringInfo *) rnsg->SpecialInfo)->Buffer);
- strcpy(cb->cb_WorkDir,
- ((struct StringInfo *) wdsg->SpecialInfo)->Buffer);
- strcpy(cb->cb_Path,
- ((struct StringInfo *) pasg->SpecialInfo)->Buffer);
- strcpy(cb->cb_OutFile,
- ((struct StringInfo *) ofsg->SpecialInfo)->Buffer);
- cb->cb_Stack=((struct StringInfo *) stig->SpecialInfo)->LongInt;
- strcpy(cb->cb_HotKey,
- ((struct StringInfo *) hksg->SpecialInfo)->Buffer);
- strcpy(cb->cb_IconFile,
- ((struct StringInfo *) ifsg->SpecialInfo)->Buffer);
- cb->cb_IconX=((struct StringInfo *) ixig->SpecialInfo)->LongInt;
- cb->cb_IconY=((struct StringInfo *) iyig->SpecialInfo)->LongInt;
- strcpy(cb->cb_DockFile,
- ((struct StringInfo *) dfsg->SpecialInfo)->Buffer);
-
- DetachToolList(); /* Tool list will be changed */
-
- /* If the user hasn't changed it's position, the new icon will not
- appear at the choosen position if the old one is still there. */
- if (etn->tn_AppIcon)
- {
- RemoveAppIcon(etn->tn_AppIcon);
- etn->tn_AppIcon=NULL;
- }
-
- /* If the user has changed the tool type to DUMMY, we forget the
- previous state of the icon flag for real now */
- oldflags=cb->cb_Flags;
- if (cb->cb_Type==TNTYPE_DUMMY)
- cb->cb_Flags=TNFLAGS_MENU|TNFLAGS_DOBJ|TNFLAGS_DDOB;
-
- /* Build new ToolNode */
- if (AddToolNode(cb,etn->tn_DirLock))
- {
- /* New ToolNode was added at the end of list */
- struct ToolNode *tn=RemTail(&ToolList); /* Remove new node */
-
- /* Insert it after the old node */
- Insert(&ToolList,(struct Node *) tn,(struct Node *) etn);
-
- /* Update the HotKeys window */
- RefreshHotKeysWindow(etn,FALSE);
- RefreshHotKeysWindow(tn,TRUE);
-
- /* Remove old node */
- RemToolNode(etn);
-
- /* Now the new node has moved to same place in the list which was
- occupied by the old one. Therefore it appears in the same place in
- the config file. (But don't forget to save the new definition :-)
- The same should be done for the AppMenuItem, but there is no
- easy way to do this now... */
-
- clwin=TRUE; /* Close window */
- ConfigChanged=TRUE; /* Config changed */
- }
- else /* No new ToolNode created --> reactivate Alias gadget */
- {
- /* Restore old flags */
- cb->cb_Flags=oldflags;
-
- /* Let the old icon re-appear */
- if (etn->tn_Flags&TNFLAGS_ICON)
- etn->tn_AppIcon=AddAppIconA((ULONG) etn,NULL,
- (cb->cb_Flags&TNFLAGS_NNAM)?"":etn->tn_Node.ln_Name,
- MyMP,NULL,etn->tn_Icon,NULL);
-
- /* Beep the user and reactivate old string gadget */
- DisplayBeep(NULL);
- ActivateGadget(curg,w,NULL);
- }
-
- AttachToolList(); /* Tool list has changed */
- break;
- case CAGAD_ID: /* User selected the cancel gadget */
- clwin=TRUE; /* Close window */
- DoOldPosition(); /* Move icon to old position */
- break;
- }
- break;
- }
- GT_ReplyIMsg(msg);
- }
-
- if (clwin) CloseEditWindow();
- }
-