home *** CD-ROM | disk | FTP | other *** search
-
- /***********************************************************************
- * *
- * COPYRIGHTS *
- * *
- * Copyright (c) 1997 Zinneberg-Soft All Rights Reserved. *
- * *
- ***********************************************************************/
-
- #include "app.h"
- #include "local.h"
- #define SCREENWUNSH "PUBSCREEN"
- #define DEF_SCREEN "Workbench"
- #define DPMS_TOOL "DPMS"
- #define DEFAULT_DPMS_SETTING "OFF"
- #define FONTNAMEWISH "FONTNAME"
- #define DEFAULT_FONTNAME "topaz.font"
- #define FONTSIZEWISH "FONTSIZE"
- #define DEFAULT_FONTSIZE "8"
- #define SCREEN_WANTED_WIDTH 320L
- #define SCREEN_WANTED_HEIGHT 200L
- #define SCREEN_WANTED_DEPTH 8L
- #define SCREEN_MIN_DEPTH 8L
- #define BLANK 1L
- #define UNBLANK 2L
- ULONG NextDepth(ULONG );
- ULONG DisplayID,Depth;
- ULONG timeout = 0L;
- ULONG blanked = 0L;
- ULONG seconds = 10L;
- ULONG SET_DPMS_GADGET = 5L;
- LONG BlankerCommand;
- char start_fontname = NULL;
- char start_fontsize = NULL;
- char *fontname_tool_type;
- char *fontsize_tool_type;
- extern struct Custom custom;
- extern struct TextAttr *mydesiredfont;
- struct Screen *cybscreenasked;
- struct Screen *CyberScreen = NULL;
- struct Gadget *secgad;
- struct Gadget *dpms_cyclegad;
- UBYTE start_on_publicscreen[MAXPUBSCREENNAME];
- int menu_number = NULL;
- int DPMS_WANTED = NULL;
-
-
- /*****************************************/
-
- VOID BlankerAction(struct CxMsg *cxm,CxObj *co);
- VOID Blank(VOID);
- VOID UnBlank(VOID);
- VOID mysetupCustomGadgets(struct Gadget **gad);
- BOOL setupBlanker(VOID)
- {
-
- char *dpms_tool_type;
- char *screen_tool_type;
- CxObj *objectlist;
-
- seconds = ArgInt( ttypes, "SECONDS", 60 );
-
-
- screen_tool_type = ArgString( ttypes,SCREENWUNSH,DEF_SCREEN);
- strcpy(start_on_publicscreen, screen_tool_type);
-
- fontname_tool_type = ArgString( ttypes,FONTNAMEWISH,DEFAULT_FONTNAME);
- fontsize_tool_type = ArgString( ttypes,FONTSIZEWISH,DEFAULT_FONTSIZE);
-
-
- dpms_tool_type = ArgString( ttypes,DPMS_TOOL,DEFAULT_DPMS_SETTING);
- if(strcmpi(dpms_tool_type,"OFF")==0)
- {
- SSET_DPMS_OFF();
- }
- if(strcmpi(dpms_tool_type,"H")==0)
- {
- SSET_DPMS_STANDBY();
- }
- if(strcmpi(dpms_tool_type,"V")==0)
- {
- SSET_DPMS_SUSPEND();
- }
-
-
- /********************************************************/
-
-
- objectlist=CxCustom( BlankerAction, 0L);
-
- if (CxObjError(objectlist))
- {
- D( printf("nocapslock: filter error %lx\n", CxObjError(objectlist) ) );
- DeleteCxObjAll(objectlist);
- return(0);
- }
-
- AttachCxObj(broker, objectlist);
- return(TRUE);
- }
- VOID BlankerAction(struct CxMsg *cxm,CxObj *co)
- {
- register struct InputEvent *ie;
-
- /* D( kprintf("BlankerAction\n") ); */
-
- /* i KNOW that all messages getting this far are CXM_IEVENT */
- ie = (struct InputEvent *) CxMsgData((CxMsg *)cxm);
-
-
- if(ie->ie_Class==IECLASS_TIMER)
- {
- /* D( printf("IECLASS_TIMER\n"); ) */
- if(! blanked)
- {
- /*D( printf("blanked=0x%lx Bump timeout=%ld\n",blanked,timeout);)*/
- if(++timeout >= ((ULONG)(seconds*10L)))
- {
- D( printf("########Blank Screen\n"); )
- /* Blank(); */
- BlankerCommand=BLANK;
- Signal(maintask,csigflag);
- blanked=TRUE;
- }
- }
- } else {
- if(ie->ie_Class!=IECLASS_TIMER)
- {
- D( printf("########UnBlank\n"); )
- /* UnBlank(); */
- BlankerCommand=UNBLANK;
- Signal(maintask,csigflag);
- timeout=0L;
- blanked=FALSE;
- }
- }
-
- }
- VOID Blank(VOID)
- {
- /* Let CyberGraphX search a display mode for us! */
-
- Depth=SCREEN_WANTED_DEPTH;
- while (Depth)
- {
- if ((DisplayID=BestCModeIDTags(CYBRBIDTG_NominalWidth, SCREEN_WANTED_WIDTH,
- CYBRBIDTG_NominalHeight,SCREEN_WANTED_HEIGHT,
- CYBRBIDTG_Depth,Depth,
- TAG_DONE))!=INVALID_ID)
- {
- /* Because older version of the "cybergraphics.library" don't handle */
- /* CYBRBIDTG_Depth properly we query the real depth of the mode. */
-
- Depth=GetCyberIDAttr(CYBRIDATTR_DEPTH,DisplayID);
- break;
- }
- /* retry with less bits per pixel */
- Depth=NextDepth(Depth);
- }
-
- if (Depth<SCREEN_MIN_DEPTH)
- {
-
- ErrorF ("Can't find a suitable Cyberscreen.");
-
- terminate();
- }
-
- /* open screen, but let Intuition choose the actual dimensions */
-
- if ((CyberScreen=OpenScreenTags(NULL,
- SA_DisplayID,DisplayID,
- SA_Depth,Depth,
- TAG_DONE))==NULL)
- {
- ErrorF ("Can't open a suitable Cyberscreen.");
- terminate();
- }
- CVideoCtrlTags (&CyberScreen->ViewPort,SETVC_DPMSLevel,DPMS_WANTED,TAG_DONE);
- }
-
- VOID UnBlank(VOID)
- {
- if(CyberScreen)
- {
- CVideoCtrlTags (&CyberScreen->ViewPort,SETVC_DPMSLevel,DPMS_ON,TAG_DONE);
- CloseScreen(CyberScreen);
- CyberScreen=NULL;
- }
- }
-
- STRPTR MonthLabels[] =
- {
- "H",
- "V",
- "H/V",
- NULL,
- };
-
- VOID mysetupCustomGadgets(struct Gadget **gad)
- {
- struct NewGadget ng;
-
- ng.ng_VisualInfo=vi;
-
- ng.ng_TopEdge = topborder+32;
- ng.ng_LeftEdge = 110;
- ng.ng_Width = 60;
- ng.ng_Height = 20;
- ng.ng_GadgetText = " ";
- ng.ng_TextAttr = mydesiredfont;
- ng.ng_GadgetID = GAD_CYCLE;
- ng.ng_Flags = NG_HIGHLABEL;
- ng.ng_VisualInfo = vi;
- dpms_cyclegad = *gad = CreateGadget(CYCLE_KIND, *gad, &ng,
- GTCY_Labels, MonthLabels,
- GTCY_Active, SET_DPMS_GADGET,
- TAG_DONE);
-
- ng.ng_TopEdge = topborder+32;
- ng.ng_LeftEdge = 10;
- ng.ng_Width = 40;
- ng.ng_Height = 20;
- ng.ng_GadgetText = "Hide";
- ng.ng_TextAttr = mydesiredfont;
- ng.ng_GadgetID = GAD_HIDE;
- ng.ng_Flags = NULL;
- ng.ng_VisualInfo = vi;
- *gad = CreateGadget(BUTTON_KIND,*gad, &ng,TAG_DONE);
-
- ng.ng_TopEdge = topborder+32;
- ng.ng_LeftEdge = 60;
- ng.ng_Width = 40;
- ng.ng_Height = 20;
- ng.ng_GadgetText = "Quit";
- ng.ng_TextAttr = mydesiredfont;
- ng.ng_GadgetID = GAD_DIE;
- ng.ng_Flags = NULL;
- ng.ng_VisualInfo = vi;
- *gad = CreateGadget(BUTTON_KIND,*gad, &ng,TAG_DONE);
-
- ng.ng_TopEdge = topborder+5;
- ng.ng_LeftEdge = 100;
- ng.ng_Width = 60;
- ng.ng_Height = 22;
- ng.ng_GadgetText = "Seconds";
- ng.ng_TextAttr = mydesiredfont;
- ng.ng_GadgetID = GAD_SECS;
- ng.ng_Flags = NULL;
- ng.ng_VisualInfo = vi;
- secgad = *gad = CreateGadget(INTEGER_KIND,*gad, &ng,GTIN_Number,seconds,GTIN_MaxChars,4,STRINGA_Justification,STRINGRIGHT,TAG_DONE);
- }
-
- VOID myHandleGadget(ULONG gad,ULONG code)
- {
- /* D( kprintf("custom: HandleGadget(%lx)\n",gad); ) */
- switch(gad)
- {
- /****************************************************************/
- case GAD_CYCLE:
-
- { while (code == 0)
- {
- DPMS_WANTED = DPMS_STANDBY;
- break;
- }
- while (code == 1)
- {
- DPMS_WANTED = DPMS_SUSPEND;
- break;
- }
- while (code == 2)
- {
- DPMS_WANTED = DPMS_OFF;
- break;
- }
-
- }
-
- default: break;
-
-
- case GAD_HIDE:
- /* D( kprintf("custom: HandleGadget() GAD_HIDE\n"); ) */
- shutdownWindow();
- break;
-
-
- case GAD_DIE:
- /* D( kprintf("custom: HandleGadget() GAD_DIE\n"); ) */
- terminate();
-
-
- case GAD_SECS:
- /* D( kprintf("custom: HandleGadget() GAD_SECS\n"); ) */
- seconds=((struct StringInfo *)secgad->SpecialInfo)->LongInt;
-
- }
- }
-
- VOID MyHandleCustomSignal(VOID)
- {
- /* D( kprintf("custom: MyHandleCustomSignal() enter\n"); ) */
- if(BlankerCommand==BLANK)
- Blank();
- else
- if(BlankerCommand==UNBLANK)
- UnBlank();
- }
-
-
- ULONG NextDepth(ULONG Depth)
- {
- switch (Depth)
- {
- case 24L: /* 24Bit not available? Try 16Bit! */
- return 16L;
- case 16L: /* 15Bit not available? Try 15Bit! */
- return 15L;
- default: /* Not even 15Bit available? Forget it! */
- return 0L;
- }
- }
-
-
-
- VOID SHOWABOUT()
- {
- EasyRequest(NULL,
- &aboutcybereasy,NULL);
- }
-
- VOID SHOWCONFIG()
- {
- EasyRequest(NULL,
- &progconfig,NULL);
- }
- /*******************************************/
- void ErrorF(char *Format,...)
-
- {
- void *Data;
-
- Data= &Format+1L;
- if (((struct Process *)FindTask(NULL))->pr_CLI)
- {
- (void)VPrintf(Format,Data);
- (void)FPutC(Output(),'\n');
- (void)Flush(Output());
- }
- else
- {
- struct EasyStruct EasyStruct;
- ULONG IDCMPFlags;
-
- EasyStruct.es_StructSize=sizeof(struct EasyStruct);
- EasyStruct.es_Flags=0L;
- EasyStruct.es_Title="CyberBlanker FatalError";
- EasyStruct.es_TextFormat=Format;
- EasyStruct.es_GadgetFormat="Ok";
-
- IDCMPFlags=0L;
- (void)EasyRequestArgs(NULL,&EasyStruct,&IDCMPFlags,Data);
- }
- }
-
-
-
- /*******************************/
- VOID SSET_DPMS_STANDBY()
- {
- SET_DPMS_GADGET = 0;
- DPMS_WANTED = DPMS_STANDBY;
- GT_SetGadgetAttrs(dpms_cyclegad, window, NULL,
- GTCY_Active, SET_DPMS_GADGET, TAG_DONE);
- }
-
- VOID SSET_DPMS_OFF()
- {
- SET_DPMS_GADGET = 2;
- DPMS_WANTED = DPMS_OFF;
- GT_SetGadgetAttrs(dpms_cyclegad, window, NULL,
- GTCY_Active, SET_DPMS_GADGET, TAG_DONE);
- }
-
-
- VOID SSET_DPMS_SUSPEND()
- {
- SET_DPMS_GADGET = 1;
- DPMS_WANTED = DPMS_SUSPEND;
- GT_SetGadgetAttrs(dpms_cyclegad, window, NULL,
- GTCY_Active, SET_DPMS_GADGET, TAG_DONE);
- }
-