home *** CD-ROM | disk | FTP | other *** search
- #include <exec/memory.h>
- #include <dos/dostags.h>
- #include <libraries/mui.h>
- #include <string.h>
-
- #include <clib/muimaster_protos.h>
- #include <pragmas/muimaster_pragmas.h>
-
- #include <clib/wb_protos.h>
- #include <pragmas/wb_pragmas.h>
-
- #include "interface.h"
- #include "/includes.h"
- #include "/libraries.h"
- #include "/protos/protos.h"
-
- #define MAKE_ID(a,b,c,d)\
- ((ULONG)(a)<<24|(ULONG)(b)<<16|(ULONG)(c)<<8|(ULONG)(d))
-
- Object *BlankersLvw, *PrefsBtn, *InfoBtn, *ToggleBtn, *HideBtn;
- Object *SettingsBtn, *QuitBtn, *BlankWnd, *BlankApp;
- struct Library *MUIMasterBase = 0L;
- ULONG MUI_Sigs = 0L;
- BYTE Title[128];
-
- STRPTR SettingsFmt = "BLANKKEY=%s\nPOPKEY=%s\nTIMEOUT=%ld\nREPLACE=%s\n"
- "RANDTIMEOUT=%ld\nBLANKCORNER=%s\nDONTCORNER=%s";
-
- __saveds __asm APTR EntryConsFunc( register __a0 struct Hook *Hook,
- register __a1 BlankerEntry *Entry )
- {
- return Entry;
- }
- struct Hook EntryConsHook = {{ 0L, 0L }, ( APTR )EntryConsFunc, 0L, 0L };
-
- __saveds __asm VOID EntryDestFunc( register __a0 struct Hook *Hook,
- register __a1 BlankerEntry *Entry )
- {
- }
- struct Hook EntryDestHook = {{ 0L, 0L }, ( APTR )EntryDestFunc, 0L, 0L };
-
- __saveds __asm LONG EntryDispFunc( register __a0 struct Hook *Hook,
- register __a1 BlankerEntry *Entry, register __a2 BYTE **Array )
- {
- static BYTE Buffer[64];
-
- if( Entry->be_Disabled )
- {
- strcpy( Buffer, "(" );
- strcat( Buffer, Entry->be_Name );
- strcat( Buffer, ")" );
- }
- else
- strcpy( Buffer, Entry->be_Name );
-
- *Array = Buffer;
-
- return 0L;
- }
- struct Hook EntryDispHook = {{ 0L, 0L }, ( APTR )EntryDispFunc, 0L, 0L };
-
- ULONG ISigs( VOID )
- {
- return MUI_Sigs;
- }
-
- LONG OpenInterface( VOID )
- {
- if( MUIMasterBase )
- return OK;
-
- if(!( MUIMasterBase = OpenLibrary( MUIMASTER_NAME, MUIMASTER_VMIN )))
- return QUIT;
-
- strcpy( Title, "Garshneblanker ( PopKey=" );
- strcat( Title, Prefs->bp_PopKey );
- strcat( Title, ", BlankKey=" );
- strcat( Title, Prefs->bp_BlankKey );
- strcat( Title, " )" );
-
- BlankWnd = WindowObject,
- MUIA_Window_ID, MAKE_ID( 'M', 'A', 'I', 'N' ),
- MUIA_Window_ScreenTitle, Title,
- MUIA_Window_Title, FilePart( ProgName ),
- MUIA_Window_RootObject, VGroup,
- Child,
- BlankersLvw = ListviewObject,
- MUIA_Listview_List, ListObject,
- MUIA_Frame, MUIV_Frame_InputList,
- MUIA_List_ConstructHook, &EntryConsHook,
- MUIA_List_DestructHook, &EntryDestHook,
- MUIA_List_DisplayHook, &EntryDispHook,
- End,
- End,
- Child,
- HGroup,
- Child, PrefsBtn = KeyButton( "Prefs", 'p' ),
- Child, InfoBtn = KeyButton( "Info", 'i' ),
- Child, ToggleBtn = KeyButton( "Toggle", 't' ),
- End,
- Child,
- HGroup,
- Child, HideBtn = KeyButton( "Hide", 'h' ),
- Child, SettingsBtn = KeyButton( "Settings", 's' ),
- Child, QuitBtn = KeyButton( "Quit", 'q' ),
- End,
- End,
- End;
-
- BlankApp = ApplicationObject,
- MUIA_Application_Title, "Garshneblanker",
- MUIA_Application_Version, VERS,
- MUIA_Application_Copyright, "Free Software",
- MUIA_Application_Author, "Michael D. Bayne",
- MUIA_Application_Description, "Screen blanker",
- MUIA_Application_Base, "GBLANKER",
- MUIA_Application_Window, BlankWnd,
- End;
-
- if( BlankApp )
- {
- BlankerEntry *Tmp;
- LONG i, Selected, Rand;
-
- #ifdef FUNKY_MUI
- DoMethod( BlankApp, MUIM_Application_Load,
- MUIV_Application_Load_ENVARC );
- #endif
- DoMethod( BlankWnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
- BlankApp, 2, MUIM_Application_ReturnID, ID_HIDE );
- DoMethod( BlankersLvw, MUIM_Notify, MUIA_List_Active, MUIV_EveryTime,
- BlankApp, 2, MUIM_Application_ReturnID, ID_BLANKERS );
- DoMethod( BlankersLvw, MUIM_Notify, MUIA_Listview_DoubleClick, TRUE,
- BlankApp, 2, MUIM_Application_ReturnID, ID_PREFS );
- DoMethod( PrefsBtn, MUIM_Notify, MUIA_Pressed, FALSE, BlankApp, 2,
- MUIM_Application_ReturnID, ID_PREFS );
- DoMethod( InfoBtn, MUIM_Notify, MUIA_Pressed, FALSE, BlankApp, 2,
- MUIM_Application_ReturnID, ID_INFO );
- DoMethod( ToggleBtn, MUIM_Notify, MUIA_Pressed, FALSE, BlankApp, 2,
- MUIM_Application_ReturnID, ID_TOGGLE );
- DoMethod( HideBtn, MUIM_Notify, MUIA_Pressed, FALSE, BlankApp, 2,
- MUIM_Application_ReturnID, ID_HIDE );
- DoMethod( SettingsBtn, MUIM_Notify, MUIA_Pressed, FALSE, BlankApp, 2,
- MUIM_Application_ReturnID, ID_SET );
- DoMethod( QuitBtn, MUIM_Notify, MUIA_Pressed, FALSE, BlankApp, 2,
- MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit );
- DoMethod( BlankWnd, MUIM_Window_SetCycleChain, BlankersLvw, PrefsBtn,
- InfoBtn, ToggleBtn, HideBtn, SettingsBtn, QuitBtn, 0L );
- for( i = 0, Tmp = ( BlankerEntry * )BlankerEntries->lh_Head;
- Tmp->be_Node.ln_Succ;
- i++, Tmp = ( BlankerEntry * )Tmp->be_Node.ln_Succ )
- {
- if( !Stricmp( Tmp->be_Name, Prefs->bp_Blanker ))
- Selected = i;
- DoMethod( BlankersLvw, MUIM_List_InsertSingle, Tmp,
- MUIV_List_Insert_Bottom );
- }
- SetAttrs( BlankersLvw, MUIA_List_Active, Selected, TAG_DONE );
- Rand = !Stricmp( Prefs->bp_Blanker, "Random" );
- SetAttrs( PrefsBtn, MUIA_Disabled, Rand, TAG_END );
- SetAttrs( ToggleBtn, MUIA_Disabled, Rand, TAG_END );
- SetAttrs( BlankWnd, MUIA_Window_Open, TRUE, TAG_DONE );
- DoMethod( BlankersLvw, MUIM_List_Jump, Selected );
-
- return HandleInterface();
- }
-
- if( MUIMasterBase )
- CloseLibrary( MUIMasterBase );
-
- return QUIT;
- }
-
- VOID CloseInterface( VOID )
- {
- #ifdef FUNKY_MUI
- DoMethod( BlankApp, MUIM_Application_Save,
- MUIV_Application_Save_ENVARC );
- #endif
- MUI_Sigs = 0L;
- DisposeObject( BlankApp );
- BlankApp = 0L;
- CloseLibrary( MUIMasterBase );
- MUIMasterBase = 0L;
- }
-
- LONG HandleInterface( VOID )
- {
- BlankerEntry *Entry;
- LONG Rand, RetVal = OK;
-
- if( !MUIMasterBase )
- return OK;
-
- do
- {
- switch( DoMethod( BlankApp, MUIM_Application_Input, &MUI_Sigs ))
- {
- case MUIV_Application_ReturnID_Quit:
- RetVal = QUIT;
- break;
- case ID_HIDE:
- RetVal = CLOSEWIN;
- break;
- case ID_SET:
- if( WBenchMsg )
- {
- struct Library *WorkbenchBase;
-
- if( WorkbenchBase = OpenLibrary( "workbench.library", 39L ))
- {
- struct Screen *PubScr;
-
- if( PubScr = LockPubScreen( 0L ))
- {
- WBInfo( WBenchMsg->sm_ArgList->wa_Lock,
- WBenchMsg->sm_ArgList->wa_Name, PubScr );
- UnlockPubScreen( 0L, PubScr );
- RetVal = RESTART;
- }
- CloseLibrary( WorkbenchBase );
- }
- }
- break;
- case ID_TOGGLE:
- DoMethod( BlankersLvw, MUIM_List_GetEntry,
- MUIV_List_GetEntry_Active, &Entry );
- ToggleModuleDisabled( Prefs );
- Entry->be_Disabled = !Entry->be_Disabled;
- DoMethod( BlankersLvw, MUIM_List_Redraw, MUIV_List_Redraw_Active );
- break;
- case ID_PREFS:
- if( Stricmp( Prefs->bp_Blanker, "Random" ))
- ExecSubProc( "PrefInterp", "" );
- break;
- case ID_INFO:
- ExecSubProc( "ShowInfo", ".txt" );
- break;
- case ID_BLANKERS:
- MessageModule( "GarshneClient", BM_DOQUIT );
- MessageModule( "GarshnePrefs", BM_DOQUIT );
- DoMethod( BlankersLvw, MUIM_List_GetEntry,
- MUIV_List_GetEntry_Active, &Entry );
- strcpy( Prefs->bp_Blanker, Entry->be_Name );
- if( Stricmp( Prefs->bp_Blanker, "Random" ))
- LoadModule( Prefs->bp_Dir, Prefs->bp_Blanker );
- BlankerToEnv( Prefs );
- Rand = !Stricmp( Prefs->bp_Blanker, "Random" );
- SetAttrs( PrefsBtn, MUIA_Disabled, Rand, TAG_END );
- SetAttrs( ToggleBtn, MUIA_Disabled, Rand, TAG_END );
- break;
- default:
- break;
- }
- }
- while(( RetVal == OK )&& !MUI_Sigs );
-
- return RetVal;
- }
-