home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * Source machine generated by GadToolsBox V2.0b
- * which is (c) Copyright 1991-1993 Jaba Development
- *
- * GUI Designed by : Gaƫl Marziou & Ph. Bastiani
- */
-
-
- #define __USE_SYSBASE
-
- #include <exec/memory.h>
- #include <exec/types.h>
- #include <intuition/intuition.h>
- #include <intuition/classes.h>
- #include <intuition/classusr.h>
- #include <intuition/imageclass.h>
- #include <intuition/gadgetclass.h>
- #include <libraries/gadtools.h>
- #include <libraries/asl.h>
- #include <workbench/workbench.h>
- #include <proto/exec.h>
- #include <proto/dos.h>
- #include <proto/intuition.h>
- #include <proto/gadtools.h>
- #include <proto/icon.h>
- #include <proto/wb.h>
- #include <proto/asl.h>
- #include <string.h>
- #include <stdlib.h>
-
- #include "code.h"
- #include "version.h"
- #include "yak.h"
- #include "hotkey_types.h"
- #include "gui.h"
- #include "filereq.h"
- #include "Requesters.h"
- #include "Settings.h"
- #include "Root_Window.h"
- #include "Root_Menus.h"
-
- #define CATCOMP_NUMBERS
- #include "locale/yak_locale_strings.h"
-
- IMPORT LONG (*HandleIDCMP)(void);
- IMPORT BOOL CreateIcons;
- IMPORT char *ProgramName;
- IMPORT char *PrefsFile;
- IMPORT struct NotifyRequest NotifyRequest;
-
- struct Window *RootWnd = NULL;
- struct Gadget *RootGList = NULL;
- struct Menu *RootMenus = NULL;
- struct Gadget *RootGadgets[Root_CNT];
- UWORD RootWidth = 600;
- UWORD RootHeight = 156;
- UBYTE *RootWdt = NULL;
- BOOL RootWdi = FALSE;
-
- struct AppWindow *RootAppWin; /* AppWindow pointer */
- IMPORT struct MsgPort *AppMsgPort;
-
- /* Online help system */
- IMPORT void ShowYakHelp(char *, char *);
- IMPORT void CloseYakHelp(void);
- IMPORT char *PrefsHelp;
-
-
- #define ROOT_TNUM 3
-
- struct IntuiText RootIText[ROOT_TNUM] =
- {
- 2,0,JAM1,0,0,NULL,NULL,NULL,
- 2,0,JAM1,0,0,NULL,NULL,NULL,
- 2,0,JAM1,0,0,NULL,NULL,NULL
- };
-
-
- VOID
- InitRootITexts(VOID)
- {
- RootIText[0].IText = getString(WINDOWS_ACTIVATE_STRING);
- RootIText[1].IText = getString(AUTOPOPTOFRONT_STRING);
- RootIText[2].IText = getString(SCREEN_ACTIVATE_STRING);
- }
-
-
-
- UWORD RootGTypes[] = {
- CHECKBOX_KIND,
- CHECKBOX_KIND,
- CHECKBOX_KIND,
- CHECKBOX_KIND,
- CHECKBOX_KIND,
- CHECKBOX_KIND,
- STRING_KIND,
- STRING_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- SLIDER_KIND
- };
-
-
- struct NewGadget RootNGad[] =
- {
- 226, 15, 26,11,NULL,NULL,GD_AutoCheck ,PLACETEXT_RIGHT,NULL,AUTOPOINT_STRING,
- 6, 15, 26,11,NULL,NULL,GD_KeyActCheck ,PLACETEXT_RIGHT,NULL,KEY_ACTIVATE_STRING,
- 6, 72, 26,11,NULL,NULL,GD_ScrActCheck ,PLACETEXT_RIGHT,NULL,SCREEN_ACTIVATE_STRING,
- 226, 72, 26,11,NULL,NULL,GD_AutoPopCheck ,PLACETEXT_RIGHT,NULL,AUTOPOPTOFRONT_STRING,
- 6, 39, 26,11,NULL,NULL,GD_RMBActCheck ,PLACETEXT_RIGHT,NULL,RMB_ACTIVATE_STRING,
- 6, 27, 26,11,NULL,NULL,GD_MMBActCheck ,PLACETEXT_RIGHT,NULL,MMB_ACTIVATE_STRING,
- 430, 27,164,14,NULL,NULL,GD_AutoPat ,PLACETEXT_LEFT ,NULL,AUTOSCREENS_STRING,
- 430, 84,164,14,NULL,NULL,GD_PopPat ,PLACETEXT_LEFT ,NULL,POPWINDOWS_STRING,
- 226,122,182,13,NULL,NULL,GD_EditHotkeys ,PLACETEXT_IN ,NULL,EDIT_HOTKEYS_STRING,
- 412,122,182,13,NULL,NULL,GD_Miscellaneous ,PLACETEXT_IN ,NULL,MISCELLANEOUS_STRING,
- 412,106,182,13,NULL,NULL,GD_Blanking ,PLACETEXT_IN ,NULL,Blanking,
- 6,140,100,13,NULL,NULL,GD_Save ,PLACETEXT_IN ,NULL,SAVE_STRING,
- 494,140,100,13,NULL,NULL,GD_Cancel0 ,PLACETEXT_IN ,NULL,CANCEL_STRING,
- 250,140,100,13,NULL,NULL,GD_Use ,PLACETEXT_IN ,NULL,USE_STRING,
- 226,106,182,13,NULL,NULL,GD_MouseCycling ,PLACETEXT_IN ,NULL,MOUSECYCLING_STRING,
- 430, 43,147,11,NULL,NULL,GD_AutoPointDelay,PLACETEXT_LEFT ,NULL,AUTOPOINT_DELAY_STRING
- };
-
-
- ULONG RootGTags[] =
- {
- (GTCB_Scaled),TRUE,(TAG_DONE),
- (GTCB_Scaled),TRUE,(TAG_DONE),
- (GTCB_Scaled),TRUE,(TAG_DONE),
- (GTCB_Scaled),TRUE,(TAG_DONE),
- (GTCB_Scaled),TRUE,(TAG_DONE),
- (GTCB_Scaled),TRUE,(TAG_DONE),
- (GTST_MaxChars),99,(TAG_DONE),
- (GTST_MaxChars),99,(TAG_DONE),
- (TAG_DONE),
- (TAG_DONE),
- (TAG_DONE),
- (TAG_DONE),
- (TAG_DONE),
- (TAG_DONE),
- (TAG_DONE),
- (GTSL_Max),5,(GTSL_MaxLevelLen),4,(GTSL_LevelFormat),(ULONG)"%1ld",(GTSL_LevelPlace),(PLACETEXT_RIGHT),(PGA_Freedom), LORIENT_HORIZ,(GA_RelVerify),TRUE,(TAG_DONE),
- };
-
-
- /* initialise gadgets */
- static void
- InitAutoPointGadgets( void )
- {
- InitWindowGadget(GDX_AutoPat, GTST_String, (LONG)patterns[YP_AUTOSCR_PAT].patstr, ROOT_WINDOW);
- InitWindowGadget(GDX_AutoPat, GA_Disabled, !autopoint, ROOT_WINDOW);
-
- InitWindowGadget(GDX_AutoPointDelay, GTSL_Level, autopoint_delay, ROOT_WINDOW);
-
- InitWindowGadget(GDX_AutoPointDelay, GA_Disabled, !autopoint, ROOT_WINDOW);
- }
-
- static void
- InitAutoPopGadgets( void)
- {
- InitWindowGadget(GDX_PopPat, GTST_String, (LONG)patterns[YP_POPWIN_PAT].patstr, ROOT_WINDOW);
- InitWindowGadget(GDX_PopPat, GA_Disabled, !autopop, ROOT_WINDOW);
- }
-
-
-
- static void
- InitRootGadgets(void)
- {
- InitToggleGadgets(ROOT_WINDOW);
-
- InitAutoPopGadgets();
-
- InitAutoPointGadgets();
- }
-
- VOID
- RootRender(void)
- {
- UWORD X,Y;
- UWORD width, height;
- UWORD cnt;
-
- ComputeFont(RootWidth,RootHeight);
-
- /* Window activation */
- X = Y = 0;
- height= ComputeY(57);
- DrawThinBevelBox(Scr, RootWnd->RPort,X+OffX, Y+OffY,
- ComputeX( RootWidth ),
- height,
- FALSE);
- RootIText[ 0 ].LeftEdge = X +5;
- RootIText[ 0 ].TopEdge = Y +3;
-
- /* Screens Activation */
- width = ComputeX(220);
- Y += height;
- height = ComputeY(138) - Y;
- DrawThinBevelBox(Scr, RootWnd->RPort,X+OffX, Y+OffY,
- width,
- height,
- FALSE);
- RootIText[ 2 ].LeftEdge = X +5;
- RootIText[ 2 ].TopEdge = Y +3;
-
- /* AutoPopToFront box */
- X = width;
- width = ComputeX(RootWidth)-width;
- height = ComputeY(103) - Y;
- DrawThinBevelBox(Scr, RootWnd->RPort,X+OffX, Y+OffY,
- width,
- height,
- FALSE);
- RootIText[ 1 ].LeftEdge = X +5;
- RootIText[ 1 ].TopEdge = Y +3;
-
- /* Buttons */
- Y += height;
- height = ComputeY(138) - Y;
- DrawThinBevelBox(Scr, RootWnd->RPort,X+OffX, Y+OffY,
- width,
- height,
- FALSE);
-
- /* SAVE / USE / CANCEL */
- Y += height;
- DrawThinBevelBox(Scr, RootWnd->RPort, OffX, Y+OffY,
- ComputeX( RootWidth ),
- ComputeY(RootHeight)-ComputeY(138),
- FALSE );
-
- /* Text */
- for ( cnt = 0; cnt < ROOT_TNUM; cnt++ )
- {
- RootIText[ cnt ].ITextFont = Font;
- PrintIText( RootWnd->RPort, &RootIText[ cnt ], OffX, OffY );
- }
- }
-
-
-
-
- int
- OpenRootWindow(void)
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- WORD wleft=WindowLeft, wtop=WindowTop;
- UWORD ww, wh;
-
- ComputeFont(RootWidth,RootHeight);
-
- ww = OffX + ComputeX(RootWidth) + Scr->WBorRight;
- wh = OffY + ComputeY(RootHeight) + Scr->WBorBottom;
-
- SetUpWindowCoordinates(ww, wh, &wleft, &wtop);
-
- if (! (g = CreateContext(&RootGList)))
- return(1L);
-
- for(lc = 0,tc = 0; lc < Root_CNT; lc++) {
-
- CopyMem((char *)&RootNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = Font;
- ng.ng_LeftEdge = OffX + ComputeX(ng.ng_LeftEdge);
- ng.ng_TopEdge = OffY + ComputeY(ng.ng_TopEdge);
- ng.ng_Width = ComputeX(ng.ng_Width);
- ng.ng_Height = ComputeY(ng.ng_Height);
-
- RootGadgets[ lc ] = g = CreateGadgetA((ULONG)RootGTypes[ lc ],g,&ng,(struct TagItem *)&RootGTags[ tc ]);
-
- while(RootGTags[ tc ]) tc += 2;
- tc++;
-
- if (NOT g)
- return(2L);
- }
-
- /**** CHANGED */
- if (! (RootMenus = CreateMenus(RootNewMenu,GTMN_NewLookMenus,
- TRUE,0L,
- TAG_DONE)))
- return(3L);
-
- LayoutMenus(RootMenus,VisualInfo,GTMN_NewLookMenus,TRUE,TAG_DONE);
-
- if (! (RootWnd = OpenWindowTags(NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww,
- WA_Height, wh,
- WA_IDCMP, BUTTONIDCMP|CHECKBOXIDCMP|STRINGIDCMP|SLIDERIDCMP|IDCMP_MENUPICK|IDCMP_REFRESHWINDOW|IDCMP_RAWKEY,
- WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
- WA_Gadgets, RootGList,
- WA_Title, RootWdt,
- WA_ScreenTitle, getString(COPYRIGHT_STRING),
- WA_AutoAdjust, TRUE,
- /**** ADDED */ WA_NewLookMenus, TRUE,
- WA_PubScreenName, PubScreenName,
- TAG_DONE)))
- return(4L);
-
- RootAppWin = AddAppWindowA(0, 0, RootWnd, AppMsgPort, NULL);
-
- SetMenuStrip(RootWnd,RootMenus);
- GT_RefreshWindow(RootWnd,NULL);
-
- RootRender();
-
- return(0L);
- }
-
- VOID
- CloseRootWindow(void)
- {
- CloseOneWindow(RootWnd,RootMenus,RootGList,RootAppWin);
- RootWnd = NULL;
- }
-
- /* show our Root window */
- BOOL
- ShowRootWindow(void)
- {
- static char title[80];
-
- if (!RootWdi)
- {
- RootWdi = TRUE;
-
- strcpy(title, getString(Prefs_Window_TITLE));
- strcat(title, " : ");
- strcat(title,VERSION_NAME);
- RootWdt = title;
-
- InitRootNewMenu ();
- InitRootITexts();
- LocalizeNGadLabels (Root_CNT, RootNGad);
- }
-
- if (!OpenRootWindow()) /* like the name says... */
- {
- InitRootGadgets();
- wndsigflag = 1 << RootWnd->UserPort->mp_SigBit;
- HandleIDCMP = HandleRootIDCMP;
- curwin = RootWnd;
- curwinID = ROOT_WINDOW;
-
- return TRUE;
- }
-
- FreeGadgets(RootGList);
- FreeMenus(RootMenus);
- CloseDownScreen();
- curwin = NULL;
- wndsigflag = 0L;
- return FALSE;
- }
-
-
-
-
- /* handle Root window events */
- LONG
- HandleRootIDCMP(void)
- {
- struct IntuiMessage *msg;
- struct Gadget *gadget;
- ULONG class;
- UWORD code;
- char *file;
- FileReqParams frp;
- BOOL close=FALSE;
- LONG ret=RET_OKAY;
-
- while (!close && (msg=GT_GetIMsg(RootWnd->UserPort)))
- {
- class = msg->Class;
- code = msg->Code;
- gadget = (struct Gadget *)msg->IAddress;
- GT_ReplyIMsg(msg);
-
- switch (class)
- {
- case GADGETUP:
- case GADGETDOWN:
- switch (gadget->GadgetID)
- {
- case GD_EditHotkeys:
- if (!SwitchFromRootWindow(HOTKEY_WINDOW))
- {
- PostError(getString(Couldnt_open_other_window_ERR));
- ret = RET_QUIT;
- }
- close = TRUE;
- break;
-
- case GD_Miscellaneous:
- if (!SwitchFromRootWindow(MISC_WINDOW))
- {
- PostError(getString(Couldnt_open_other_window_ERR));
- ret = RET_QUIT;
- }
- close = TRUE;
- break;
-
- break;
-
- case GD_Blanking:
- if (!SwitchFromRootWindow(BLANK_WINDOW))
- {
- PostError(getString(Couldnt_open_other_window_ERR));
- ret = RET_QUIT;
- }
- close = TRUE;
- break;
-
- case GD_MouseCycling:
- if (!SwitchFromRootWindow(MCYCLING_WINDOW))
- {
- PostError(getString(Couldnt_open_other_window_ERR));
- ret = RET_QUIT;
- }
- close = TRUE;
- break;
-
- case GD_AutoPat:
- NewPattern(GDX_AutoPat, &patterns[YP_AUTOSCR_PAT], gadget, ROOT_WINDOW);
- break;
-
- case GD_PopPat:
- NewPattern(GDX_PopPat, &patterns[YP_POPWIN_PAT], gadget, ROOT_WINDOW);
- break;
-
- case GD_Save:
- DisableYakInterface();
- EndNotify(&NotifyRequest);
- SaveSettings(ENVARC_CONFIG_FILE);
- CopyFile(ENVARC_CONFIG_FILE, ENV_CONFIG_FILE);
- StartNotify(&NotifyRequest);
- EnableYakInterface();
- close = TRUE;
- ret = RET_QUIT;
- break;
-
- case GD_Use:
- DisableYakInterface();
- EndNotify(&NotifyRequest);
- SaveSettings(ENV_CONFIG_FILE);
- StartNotify(&NotifyRequest);
- close = TRUE;
- ret = RET_QUIT;
- break;
-
- case GD_Cancel0:
- close = TRUE;
- ret = RET_QUIT;
- break;
-
- case GD_AutoCheck: /* toggle */
- autopoint ^= TRUE;
- InitAutoPointGadgets();
- break;
-
- case GD_AutoPopCheck: /* toggle */
- autopop ^= TRUE;
- InitAutoPopGadgets();
- break;
-
- case GD_KeyActCheck: /* toggle */
- keyactivate ^= TRUE;
- break;
-
- case GD_ScrActCheck: /* toggle */
- scractivate ^= TRUE;
- break;
-
- case GD_RMBActCheck: /* toggle */
- rmbactivate ^= TRUE;
- break;
-
- case GD_MMBActCheck: /* toggle */
- mmbactivate ^= TRUE;
- break;
-
- case GD_AutoPointDelay:
- autopoint_delay = code;
- break;
-
- } /* switch (gadget->GadgetID) */
- break;
-
- case IDCMP_MENUPICK:
- while (!close && (code != MENUNULL))
- {
- struct MenuItem *item = ItemAddress(RootMenus, code);
-
- switch((UBYTE)GTMENUITEM_USERDATA(item))
- {
- case MD_OPEN:
- frp.frp_Window = curwin;
- frp.frp_Title = getString(FILEREQ_LOAD_STRING);
- frp.frp_InitialFile = PrefsFile;
- frp.frp_Flag1 = 0L;
-
- DisableYakInterface();
- if (file=OpenFileRequester(&frp))
- {
- LoadSettings(file);
- FreeVec(PrefsFile);
- PrefsFile = file;
- InitRootGadgets();
- }
- EnableYakInterface();
- break;
-
- case MD_SAVE:
- DisableYakInterface();
- EndNotify(&NotifyRequest);
- SaveSettings(ENVARC_CONFIG_FILE);
- CopyFile(ENVARC_CONFIG_FILE, ENV_CONFIG_FILE);
- StartNotify(&NotifyRequest);
- EnableYakInterface();
- break;
-
- case MD_SAVEAS:
- frp.frp_Window = curwin;
- frp.frp_Title = getString(FILEREQ_SAVEAS_STRING);
- frp.frp_InitialFile = PrefsFile;
- frp.frp_Flag1 = FRF_DOSAVEMODE;
-
- DisableYakInterface();
- EndNotify(&NotifyRequest);
- if (file=OpenFileRequester(&frp))
- {
- SaveSettings(file);
- if (CreateIcons)
- {
- struct DiskObject *dobj;
-
- /* Get project icon */
- if (!(dobj=GetDiskObject("ENV:Sys/def_yak")))
- dobj = GetDefDiskObject(WBPROJECT);
-
- if (dobj)
- {
- /* Set values */
- dobj->do_DefaultTool = ProgramName;
- dobj->do_Type = WBPROJECT;
-
- /* Write icon */
- PutDiskObject(file, dobj);
-
- /* Free icon */
- FreeDiskObject(dobj);
- }
- }
- FreeVec(PrefsFile);
- PrefsFile = file;
- }
- StartNotify(&NotifyRequest);
- EnableYakInterface();
- break;
-
- case MD_HIDE:
- CloseYakHelp();
- HideInterface();
- close = TRUE;
- break;
-
- case MD_ABOUT:
- DisableYakInterface();
- PostError(getString(About_Yak_STRING));
- EnableYakInterface();
- break;
-
- case MD_QUIT:
- close = TRUE;
- ret = RET_QUIT;
- break;
-
- case MD_DEFAULT:
- DisableYakInterface();
- SetDefaultSettings();
- InitRootGadgets();
- EnableYakInterface();
- break;
-
- case MD_LASTSAVED:
- DisableYakInterface();
- LoadSettings(ENVARC_CONFIG_FILE);
- InitRootGadgets();
- EnableYakInterface();
- break;
-
- case MD_ACTIVE:
- DisableYakInterface();
- LoadSettings(ENV_CONFIG_FILE);
- InitRootGadgets();
- EnableYakInterface();
- break;
-
- case MD_CREATEICONS:
- CreateIcons ^= TRUE;
- break;
-
- }
- code = item->NextSelect;
-
- } /* while more menuchoices */
- break;
-
- case IDCMP_RAWKEY:
- /* Help key pressed */
- if (code == 95)
- {
- /* Display the node */
- ShowYakHelp(PrefsHelp, "MainWindow");
- }
- break;
-
- case REFRESHWINDOW:
- GT_BeginRefresh(RootWnd);
- RootRender();
- GT_EndRefresh(RootWnd, TRUE);
- break;
-
- } /* switch (class) */
-
- } /* while more messages */
-
- return ret;
- }
-
-
-
- /* switch from Root window to a sub-window */
- BOOL
- SwitchFromRootWindow(UBYTE WindowID)
- {
- CloseRootWindow();
- return ShowWindowID(WindowID);
- }
-
-