home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- ********************** BGUI MISCELLANEOUS 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 "hotkey_types.h"
- #include "gui.h"
- #include "Misc_Window.h"
- #include "Settings.h"
- #include "yak_locale_strings.h"
-
- /************************************************************************
- ***************************** REFERENCES ******************************
- ************************************************************************/
-
- IMPORT LONG (*HandleReturnID)(LONG ID);
-
- IMPORT char *PrefsHelp;
-
- /************************************************************************
- ***************************** LOCAL DATA ******************************
- ************************************************************************/
-
- struct Window *MiscWnd = NULL;
- Object *MiscWndObj = NULL;
- Object *MiscObjects[Misc_CNT];
- struct IBox MiscBox;
- BOOL MiscBoxValid = FALSE;
-
- /************************************************************************
- ************************* CREATEMISCWINDOW() **************************
- *************************************************************************
- * Create the misc window object tree. Returns the window object ptr or
- * NULL if create failed. Gadgets are initialised with default values,
- * InitMiscGadgets must be called after window opened to reflect current
- * settings.
- *
- *************************************************************************/
-
- APTR CreateMiscWindow(void)
- {
- Object *obj,*indicobj;
-
- /* maplist: converts slider level tag to indicator level tag */
- static struct TagItem SliderToIndicMap[] = {
- SLIDER_Level, INDIC_Level, TAG_DONE
- };
-
- obj = WindowObject,
- WINDOW_PubScreenName, PubScreenName,
- WINDOW_Title, getString(MISCELLANEOUS_STRING),
- 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 */
- (MiscBoxValid ? WINDOW_Bounds : TAG_IGNORE), &MiscBox,
- WINDOW_Position, POS_CENTERMOUSE,
- 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, "Miscellaneous",
- WINDOW_MasterGroup,
- VGroupObject, Spacing(4), HOffset(4), VOffset(4),
- StartMember,
- HGroupObject, Spacing(24), EqualWidth,
- StartMember,
- VGroupObject, Spacing(2),
- StartMember,
- CH_WildStar = CheckBoxObject,
- LAB_Label, getString(WILD_STAR_STRING),
- LAB_Place, PLACE_RIGHT,
- GA_ID, GD_WildStarCheck,
- ButtonFrame,
- FRM_Flags, FRF_EDGES_ONLY,
- EndObject, FixMinWidth,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- CH_NoClick = CheckBoxObject,
- LAB_Label, getString(NOCLICK_STRING),
- LAB_Place, PLACE_RIGHT,
- GA_ID, GD_NoClickCheck,
- ButtonFrame,
- FRM_Flags, FRF_EDGES_ONLY,
- EndObject, FixMinWidth,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- CH_MMBShift = CheckBoxObject,
- LAB_Label, getString(MMB_SHIFT_STRING),
- LAB_Place, PLACE_RIGHT,
- GA_ID, GD_MMBShiftCheck,
- ButtonFrame,
- FRM_Flags, FRF_EDGES_ONLY,
- EndObject, FixMinWidth,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- CH_FullWorkbench = CheckBoxObject,
- LAB_Label, getString(FULL_WORKBENCH_STRING),
- LAB_Place, PLACE_RIGHT,
- GA_ID, GD_FullWorkbenchCheck,
- ButtonFrame,
- FRM_Flags, FRF_EDGES_ONLY,
- EndObject, FixMinWidth,
- EndMember,
- EndObject,
- EndMember,
- StartMember,
- VGroupObject, Spacing(2),
- StartMember,
- CH_BlackBorder = CheckBoxObject,
- LAB_Label, getString(BLACK_BORDER),
- LAB_Place, PLACE_RIGHT,
- GA_ID, GD_BlackBorderCheck,
- ButtonFrame,
- FRM_Flags, FRF_EDGES_ONLY,
- EndObject, FixMinWidth,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- CH_CapShift = CheckBoxObject,
- LAB_Label, getString(CAPSHIFT_STRING),
- LAB_Place, PLACE_RIGHT,
- GA_ID, GD_CapShiftCheck,
- ButtonFrame,
- FRM_Flags, FRF_EDGES_ONLY,
- EndObject, FixMinWidth,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- CH_UnixDirs = CheckBoxObject,
- LAB_Label, getString(UNIXDIRS_STRING),
- LAB_Place, PLACE_RIGHT,
- GA_ID, GD_UnixDirsCheck,
- ButtonFrame,
- FRM_Flags, FRF_EDGES_ONLY,
- EndObject, FixMinWidth,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- CH_SlashDir = CheckBoxObject,
- LAB_Label, getString(SLASHDIR_STRING),
- LAB_Place, PLACE_RIGHT,
- GA_ID, GD_SlashDirCheck,
- ButtonFrame,
- FRM_Flags, FRF_EDGES_ONLY,
- EndObject, FixMinWidth,
- EndMember,
- EndObject,
- EndMember,
- EndObject, Weight(DEFAULT_WEIGHT*4),
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- HGroupObject, Spacing(2),
- StartMember,
- SL_ClickVol = SliderObject,
- LAB_Label, getString(CLICKVOLUME_STRING),
- SLIDER_Min, 0,
- SLIDER_Max, 64,
- SLIDER_Level, 0,
- GA_ID, GD_ClickVol,
- EndObject,
- EndMember,
- StartMember,
- indicobj = IndicatorObject,
- INDIC_Min, 0,
- INDIC_Max, 64,
- INDIC_Level, 0,
- INDIC_FormatString,"%2lu",
- INDIC_Justification,IDJ_CENTER,
- EndObject, Weight(DEFAULT_WEIGHT/10),
- EndMember,
- EndObject, NoAlign,
- EndMember,
- VarSpace(DEFAULT_WEIGHT/10),
- StartMember,
- HorizSeparator,
- EndMember,
- StartMember,
- HGroupObject, Spacing(2),
- VarSpace(DEFAULT_WEIGHT),
- StartMember,
- BT_Return2 = Button(getString(OK_STRING),GD_Return2),
- EndMember,
- VarSpace(DEFAULT_WEIGHT),
- EndObject,
- EndMember,
- EndObject,
- EndObject;
-
- if (obj)
- {
- /* add map from slider to its level indicator */
- AddMap(SL_ClickVol,indicobj,SliderToIndicMap);
-
- /* add conditional map: disables CH_SlashDir */
- /* when CH_UnixDirs is unchecked */
- AddCondit(CH_UnixDirs,CH_SlashDir,GA_Selected,TRUE,
- GA_Disabled,FALSE,GA_Disabled,TRUE);
- }
-
- return(obj);
- }
-
- /************************************************************************
- ************************** CLOSEMISCWINDOW() **************************
- *************************************************************************
- * Close the misc window, disposing of the window object.
- *
- *************************************************************************/
-
- void CloseMiscWindow(void)
- {
- if (MiscWnd)
- {
- GetAttr(WINDOW_Bounds,MiscWndObj,(ULONG *) &MiscBox);
- MiscBoxValid = TRUE;
- }
-
- DisposeObject(MiscWndObj);
- MiscWndObj = NULL;
- MiscWnd = NULL;
- }
-
- /************************************************************************
- ************************* INITMISCGADGETS() ***************************
- *************************************************************************
- * Initialize the misc window gadgets to reflect current settings.
- *
- *************************************************************************/
-
- static void InitMiscGadgets(void)
- {
- InitToggleGadgets(MISC_WINDOW);
- InitWindowGadget(GDX_SlashDirCheck, GA_Disabled, !unixdirs, MISC_WINDOW);
- InitWindowGadget(GDX_ClickVol, SLIDER_Level, click_volume, MISC_WINDOW);
- }
-
- /************************************************************************
- ************************ HANDLEMISCRETURNID() *************************
- *************************************************************************
- * Handle msgs arriving at misc window - supply the ID returned by BGUI.
- * Returns either RET_OKAY or RET_QUIT.
- *
- *************************************************************************/
-
- LONG HandleMiscReturnID(LONG id)
- {
- LONG ret;
- LONG num;
-
- ret = RET_OKAY;
-
- switch(id)
- {
- case GD_Return2:
- CloseMiscWindow();
- if (!ShowWindowID(ROOT_WINDOW))
- ret= RET_QUIT;
- break;
-
- case GD_ClickVol:
- GetAttr(SLIDER_Level,SL_ClickVol,(ULONG *)&num);
- click_volume = num;
- break;
-
- case GD_BlackBorderCheck:
- blackborder ^= TRUE;
- break;
-
- case GD_WildStarCheck: /* toggle */
- wildstar ^= TRUE;
- break;
-
- case GD_NoClickCheck: /* toggle */
- noclick ^= TRUE;
- break;
-
- case GD_UnixDirsCheck: /* toggle */
- unixdirs ^= TRUE;
- break;
-
- case GD_MMBShiftCheck: /* toggle */
- mmbshift ^= TRUE;
- break;
-
- case GD_SlashDirCheck: /* toggle */
- slashdir ^= TRUE;
- break;
-
- case GD_FullWorkbenchCheck: /* toggle */
- fullworkbench ^= TRUE;
- break;
-
- case GD_CapShiftCheck: /* toggle */
- capshift ^= TRUE;
- break;
-
- default:
- break;
- }
-
- return(ret);
- }
-
- /************************************************************************
- ************************** SHOWMISCWINDOW() ***************************
- *************************************************************************
- * Create and open the misc 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 ShowMiscWindow(void)
- {
- if (MiscWndObj = (Object *)CreateMiscWindow())
- {
- if (MiscWnd = WindowOpen(MiscWndObj))
- {
- InitMiscGadgets();
- HandleReturnID = HandleMiscReturnID;
- curwin = MiscWnd;
- curwinobj = MiscWndObj;
- curwinID = MISC_WINDOW;
- return(TRUE);
- }
- }
-
- CloseMiscWindow();
- curwin = NULL;
- curwinobj = NULL;
- wndsigflag = 0L;
- appwinsigflag = 0L;
- return(FALSE);
- }
-
-