home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- ************************* BGUI BLANKER WINDOW *************************
- *************************************************************************/
-
- #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 <intuition/intuitionbase.h>
- #include <libraries/bgui.h>
- #include <libraries/bgui_macros.h>
- #include <proto/exec.h>
- #include <proto/intuition.h>
- #include <proto/bgui.h>
- #include <proto/wb.h>
- #include <clib/alib_protos.h>
- #include <string.h>
-
- #include "yak.h"
- #include "version.h"
- #include "gui.h"
- #include "Blank_Window.h"
- #include "Settings.h"
- #include "yak_locale_strings.h"
-
- /************************************************************************
- ***************************** REFERENCES ******************************
- ************************************************************************/
-
- IMPORT LONG (*HandleReturnID)(LONG ID);
- IMPORT char *PrefsHelp;
-
- /************************************************************************
- ***************************** LOCAL DATA ******************************
- ************************************************************************/
-
- struct Window *BlankWnd = NULL;
- Object *BlankWndObj = NULL;
- Object *BlankObjects[Blank_CNT];
- struct IBox BlankBox;
- BOOL BlankBoxValid = FALSE;
-
- UBYTE *MBMethod0Labels[4];
- UBYTE *ScrBlMethod0Labels[4];
-
- /************************************************************************
- ************************* CREATEBLANKWINDOW() *************************
- *************************************************************************
- * Create the blanker window object tree. Returns the window object ptr or
- * NULL if create failed. Gadgets are initialised with default values,
- * InitBlankGadgets must be called after window opened to reflect current
- * settings.
- *
- *************************************************************************/
-
- APTR CreateBlankWindow(void)
- {
- Object *obj;
-
- /* put localised strings into mouseblankmethod cycle gadget labels */
- MBMethod0Labels[0] = getString(NONE_STRING);
- MBMethod0Labels[1] = getString(SPRITES_STRING);
- MBMethod0Labels[2] = getString(COPPER_STRING);
- MBMethod0Labels[3] = NULL;
-
- /* put localised strings into screenblankmethod cycle gadget labels */
- ScrBlMethod0Labels[0] = getString(NONE_STRING);
- ScrBlMethod0Labels[1] = getString(BLACKSCREEN_STRING);
- ScrBlMethod0Labels[2] = getString(DMA_STRING);
- ScrBlMethod0Labels[3] = NULL;
-
- obj = WindowObject,
- WINDOW_PubScreenName, PubScreenName,
- WINDOW_Title, getString(Blanking),
- WINDOW_ScreenTitle, getString(COPYRIGHT_STRING),
- WINDOW_SmartRefresh, TRUE,
- WINDOW_SizeBottom, FALSE, /* put size gadget in right border */
- WINDOW_SizeRight, TRUE,
- WINDOW_AutoAspect, TRUE, /* automatic edges pixel width */
- WINDOW_Position, POS_CENTERMOUSE,
- (BlankBoxValid ? WINDOW_Bounds : TAG_IGNORE), &BlankBox,
- WINDOW_AppWindow, TRUE, /* make it an appwindow */
- WINDOW_RMBTrap, TRUE, /* trap rmb - no menu */
- WINDOW_CloseGadget, FALSE, /* no windowclose gadget please */
- (TextFont ? WINDOW_Font : TAG_IGNORE), &Attr, /* use font if specified */
- WINDOW_HelpFile, PrefsHelp, /* online help system */
- WINDOW_HelpNode, "Blanking",
- WINDOW_MasterGroup,
- VGroupObject, Spacing(4), HOffset(4), VOffset(4),
- StartMember,
- /* Mouse Blank group */
- VGroupObject, Spacing(4), HOffset(6), VOffset(4),
- /* add frame & title to group */
- NeXTFrame,
- FRM_Title, getString(Blanking),
- FRM_Flags, FRF_EDGES_ONLY|FRF_CENTER_TITLE|FRF_HIGHLIGHT_TITLE,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- CYC_SBMethod = CycleObject,
- LAB_Label, getString(SCREENBLANK_METHOD_STRING),
- GA_ID, GD_ScrBlMethod,
- ButtonFrame,
- CYC_Labels, ScrBlMethod0Labels,
- CYC_Popup, TRUE, /* "drop-down" menu */
- EndObject,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- CYC_MBMethod = CycleObject,
- LAB_Label, getString(MOUSEBLANK_METHOD_STRING),
- GA_ID, GD_MBMethod,
- ButtonFrame,
- CYC_Labels, MBMethod0Labels,
- CYC_Popup, TRUE, /* "drop-down" menu */
- EndObject,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- CH_BlankMKey = CheckBoxObject,
- LAB_Label, getString(BlankMouseOnKey_STRING),
- LAB_Place, PLACE_RIGHT,
- GA_ID, GD_BlankMouseOnKey,
- ButtonFrame,
- FRM_Flags, FRF_EDGES_ONLY,
- EndObject, FixMinWidth, NoAlign,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- EndObject, Weight(DEFAULT_WEIGHT*3),
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- /* Blank Timeout group */
- HGroupObject, VOffset(4),
- /* add frame & title to group */
- NeXTFrame,
- FRM_Title, getString(TIMEOUT_STRING),
- FRM_Flags, FRF_EDGES_ONLY|FRF_CENTER_TITLE|FRF_HIGHLIGHT_TITLE,
- VarSpace(DEFAULT_WEIGHT),
- StartMember,
- VGroupObject, Spacing(2), HOffset(4),
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- INT_ScrTimeout = StringObject,
- LAB_Label, getString(SCREENTIMEOUT_STRING),
- RidgeFrame,
- STRINGA_LongVal,0,
- STRINGA_MaxChars,4,
- STRINGA_MinCharsVisible,6,
- STRINGA_Justification,STRINGRIGHT,
- GA_ID, GD_ScrTONum,
- GA_TabCycle, TRUE,
- EndObject,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- INT_MouseTimeout = StringObject,
- LAB_Label, getString(MOUSETIMEOUT_STRING),
- RidgeFrame,
- STRINGA_LongVal,0,
- STRINGA_MaxChars,4,
- STRINGA_MinCharsVisible,6,
- STRINGA_Justification,STRINGRIGHT,
- GA_ID, GD_MouseTONum,
- GA_TabCycle, TRUE,
- EndObject,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- EndObject, FixMinWidth,
- EndMember,
- VarSpace(DEFAULT_WEIGHT),
- EndObject, Weight(DEFAULT_WEIGHT*2),
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- HorizSeparator,
- EndMember,
- StartMember,
- HGroupObject, Spacing(2),
- VarSpace(DEFAULT_WEIGHT),
- StartMember,
- BT_Return3 = Button(getString(OK_STRING),GD_Return3),
- EndMember,
- VarSpace(DEFAULT_WEIGHT),
- EndObject,
- EndMember,
- EndObject,
- EndObject;
-
- if (obj)
- {
- /* set tab cycle order between string gadgets */
- DoMethod(obj,WM_TABCYCLE_ORDER,INT_ScrTimeout,INT_MouseTimeout,NULL);
- }
-
- return(obj);
- }
-
- /************************************************************************
- ************************** CLOSEBLANKWINDOW() *************************
- *************************************************************************
- * Close the blanker window, disposing of the window object.
- *
- *************************************************************************/
-
- void CloseBlankWindow(void)
- {
- if (BlankWnd)
- {
- GetAttr(WINDOW_Bounds,BlankWndObj,(ULONG *) &BlankBox);
- BlankBoxValid = TRUE;
- }
-
- DisposeObject(BlankWndObj);
- BlankWndObj = NULL;
- BlankWnd = NULL;
- }
-
- /************************************************************************
- ************************* INITBLANKGADGETS() **************************
- *************************************************************************
- * Initialize the blank window gadgets to reflect current settings.
- *
- *************************************************************************/
-
- static void InitBlankGadgets(void)
- {
- InitToggleGadgets(BLANK_WINDOW);
- InitWindowGadget(GDX_ScrTONum, STRINGA_LongVal, blanksecs, BLANK_WINDOW);
- InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
- InitWindowGadget(GDX_MouseTONum, STRINGA_LongVal, mblanksecs, BLANK_WINDOW);
- InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
- InitWindowGadget(GDX_MBMethod, CYC_Active, mouseblank, BLANK_WINDOW);
- InitWindowGadget(GDX_ScrBlMethod, CYC_Active, screenblank, BLANK_WINDOW);
- }
-
- /************************************************************************
- ************************ HANDLEBLANKRETURNID() ************************
- *************************************************************************
- * Handle msgs arriving at blank window - supply the ID returned by BGUI.
- * Returns either RET_OKAY or RET_QUIT.
- *
- *************************************************************************/
-
- LONG HandleBlankReturnID(LONG id)
- {
- LONG ret,num;
-
- ret = RET_OKAY;
-
- switch(id)
- {
- case GD_Return3:
- CloseBlankWindow();
- if (!ShowWindowID(ROOT_WINDOW))
- ret= RET_QUIT;
- break;
-
- case GD_ScrTONum:
- GetAttr(STRINGA_LongVal,INT_ScrTimeout,(ULONG *)&num);
- if (num >= 0)
- blanksecs = num;
- else
- {
- DisplayBeep(BlankWnd->WScreen);
- InitWindowGadget(GDX_ScrTONum, STRINGA_LongVal, blanksecs, BLANK_WINDOW);
- }
- break;
-
- case GD_MouseTONum:
- GetAttr(STRINGA_LongVal,INT_MouseTimeout,(ULONG *)&num);
- if (num >= 0)
- mblanksecs = num;
- else
- {
- DisplayBeep(BlankWnd->WScreen);
- InitWindowGadget(GDX_MouseTONum, STRINGA_LongVal, mblanksecs, BLANK_WINDOW);
- }
- break;
-
- case GD_BlankMouseOnKey:
- blankmouseonkey ^= TRUE;
- break;
-
- case GD_MBMethod:
- GetAttr(CYC_Active,CYC_MBMethod,(ULONG *)&num);
- mouseblank = num;
- InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
- break;
-
- case GD_ScrBlMethod:
- GetAttr(CYC_Active,CYC_SBMethod,(ULONG *)&num);
- screenblank = num;
- InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
- break;
-
- default:
- break;
- }
-
- return(ret);
- }
-
- /************************************************************************
- ************************** SHOWBLANKWINDOW() **************************
- *************************************************************************
- * Create and open the blank window and initialize the gadgets to reflect
- * current settings. Sets up HandleReturnID function, curwin, curwinobj
- * and curwinID. Returns TRUE or FALSE to indicate success.
- *
- *************************************************************************/
-
- BOOL ShowBlankWindow(void)
- {
- if (BlankWndObj = (Object *)CreateBlankWindow())
- {
- if (BlankWnd = WindowOpen(BlankWndObj))
- {
- InitBlankGadgets();
- HandleReturnID = HandleBlankReturnID;
- curwin = BlankWnd;
- curwinobj = BlankWndObj;
- curwinID = BLANK_WINDOW;
- return(TRUE);
- }
- }
-
- CloseBlankWindow();
- curwin = NULL;
- curwinobj = NULL;
- wndsigflag = 0L;
- appwinsigflag = 0L;
- return(FALSE);
- }
-
-
-