--- np2/macosx/Attic/screenopt.cpp 2003/10/23 21:00:24 1.1 +++ np2/macosx/Attic/screenopt.cpp 2003/10/28 16:44:44 1.4 @@ -13,38 +13,22 @@ #include "iocore.h" #include "scrndraw.h" #include "palettes.h" -#include "configure.h" +#include "dialogutils.h" +#include "screenopt.h" -static WindowRef screenWin; -static void SetInitialTabState(WindowRef theWindow); -static pascal OSStatus PrefsTabEventHandlerProc( EventHandlerCallRef inCallRef, EventRef inEvent, void* inUserData ); +#define getControlValue(a,b) GetControl32BitValue(getControlRefByID(a,b,screenWin)) +#define setControlValue(a,b,c) SetControl32BitValue(getControlRefByID(a,b,screenWin),c) -enum {kTabMasterSig = 'ScrT',kTabMasterID = 1000,kTabPaneSig= 'ScTb',kMaxNumTabs= 3}; +#define kMaxNumTabs 3 +enum {kTabMasterSig = 'ScrT',kTabMasterID = 1000,kTabPaneSig= 'ScTb'}; -static void endLoop(void) { - OSStatus err; - HideSheetWindow(screenWin); - DisposeWindow(screenWin); - err=QuitAppModalLoopForWindow(screenWin); -} +static WindowRef screenWin; +static UInt16 lastPaneSelected = 1; // static, to keep track of it long term (in a more complex application + // you might store this in a data structure in the window refCon) -static void setFieldValue(UInt32 type) { - ControlRef conRef; - Str255 title; - SInt32 value; - - value = GetControl32BitValue(getControlRefByID(type, 0, screenWin)); - if (type == 'RPAd') { - value -= 31; - } - NumToString(value, title); - conRef = getControlRefByID(type, 1, screenWin); - SetControlData(conRef, kControlNoPart, kControlStaticTextTextTag, *title, title+1); - Draw1Control(conRef); -} static void setReverseStatus(void) { - if (GetControl32BitValue(getControlRefByID('LCDy', 0, screenWin))) { + if (getControlValue('LCDy', 0)) { ActivateControl(getControlRefByID('rvrs', 0, screenWin)); } else { @@ -53,26 +37,20 @@ static void setReverseStatus(void) { } static void initScreenWindow(void) { - SetControl32BitValue(getControlRefByID('LCDy', 0, screenWin), np2cfg.LCD_MODE & 1); + setControlValue('LCDy', 0, np2cfg.LCD_MODE & 1); setReverseStatus(); - SetControl32BitValue(getControlRefByID('rvrs', 0, screenWin), np2cfg.LCD_MODE & 2?1:0); - SetControl32BitValue(getControlRefByID('uskr', 0, screenWin), np2cfg.skipline); - SetControl32BitValue(getControlRefByID('rati', 0, screenWin), np2cfg.skiplight); - setFieldValue('rati'); - - SetControl32BitValue(getControlRefByID('GDCl', 0, screenWin), np2cfg.uPD72020 + 1); - SetControl32BitValue(getControlRefByID('GrCh', 0, screenWin), (np2cfg.grcg & 3) + 1); - SetControl32BitValue(getControlRefByID('16cl', 0, screenWin), np2cfg.color16); - - SetControl32BitValue(getControlRefByID('tram', 0, screenWin), np2cfg.wait[0]); - setFieldValue('tram'); - SetControl32BitValue(getControlRefByID('vram', 0, screenWin), np2cfg.wait[2]); - setFieldValue('vram'); - SetControl32BitValue(getControlRefByID('crgc', 0, screenWin), np2cfg.wait[4]); - setFieldValue('crgc'); - SetControl32BitValue(getControlRefByID('RPAd', 0, screenWin), np2cfg.realpal); - setFieldValue('RPAd'); - + setControlValue('rvrs', 0, np2cfg.LCD_MODE & 2?1:0); + setControlValue('uskr', 0, np2cfg.skipline); + setControlValue('sl/f', 0, np2cfg.skiplight); + + setControlValue('GDCl', 0, np2cfg.uPD72020 + 1); + setControlValue('GrCh', 0, (np2cfg.grcg & 3) + 1); + setControlValue('16cl', 0, np2cfg.color16); + + setControlValue('sl/f', 1, np2cfg.wait[0]); + setControlValue('sl/f', 2, np2cfg.wait[2]); + setControlValue('sl/f', 3, np2cfg.wait[4]); + setControlValue('sl/f', 4, np2cfg.realpal); } static pascal OSStatus cfWinproc(EventHandlerCallRef myHandler, EventRef event, void* userData) { @@ -91,29 +69,20 @@ static pascal OSStatus cfWinproc(EventHa case 'LCDy': setReverseStatus(); break; - - case 'rati': - case 'tram': - case 'vram': - case 'crgc': - case 'RPAd': - setFieldValue(cmd.commandID); - break; case kHICommandOK: renewal = 0; - val=GetControl32BitValue(getControlRefByID('uskr', 0, screenWin)); + val=getControlValue('uskr', 0); if (np2cfg.skipline != val) { np2cfg.skipline = val; renewal = 1; } - val=GetControl32BitValue(getControlRefByID('rati', 0, screenWin)); + val=getControlValue('sl/f', 0); if (val != np2cfg.skiplight); if (renewal) { pal_makeskiptable(); } - val=GetControl32BitValue(getControlRefByID('LCDy', 0, screenWin)) | - GetControl32BitValue(getControlRefByID('rvrs', 0, screenWin)) << 1; + val=getControlValue('LCDy', 0) | getControlValue('rvrs', 0) << 1; if (np2cfg.LCD_MODE != val) { np2cfg.LCD_MODE = val; pal_makelcdpal(); @@ -125,34 +94,34 @@ static pascal OSStatus cfWinproc(EventHa } update = 0; - val=GetControl32BitValue(getControlRefByID('GDCl', 0, screenWin))-1; + val=getControlValue('GDCl', 0)-1; if (np2cfg.uPD72020 != val) { np2cfg.uPD72020 = val; update |= SYS_UPDATECFG; gdc_restorekacmode(); gdcs.grphdisp |= GDCSCRN_ALLDRAW2; } - val=GetControl32BitValue(getControlRefByID('GrCh', 0, screenWin))-1; + val=getControlValue('GrCh', 0)-1; if (np2cfg.grcg != val) { np2cfg.grcg = val; update |= SYS_UPDATECFG; gdcs.grphdisp |= GDCSCRN_ALLDRAW2; } - val=GetControl32BitValue(getControlRefByID('16cl', 0, screenWin)); + val=getControlValue('16cl', 0); if (np2cfg.color16 != val) { np2cfg.color16 = val; update |= SYS_UPDATECFG; } - value[0]=GetControl32BitValue(getControlRefByID('tram', 0, screenWin)); + value[0]=getControlValue('sl/f', 1); if (value[0]) { value[1] = 1; } - value[2]=GetControl32BitValue(getControlRefByID('vram', 0, screenWin)); + value[2]=getControlValue('sl/f', 2); if (value[0]) { value[3] = 1; } - value[4]=GetControl32BitValue(getControlRefByID('crgc', 0, screenWin)); + value[4]=getControlValue('sl/f', 3); if (value[0]) { value[5] = 1; } @@ -162,19 +131,19 @@ static pascal OSStatus cfWinproc(EventHa update |= SYS_UPDATECFG; } } - val=GetControl32BitValue(getControlRefByID('RPAd', 0, screenWin)); + val=getControlValue('sl/f', 4); if (val != np2cfg.realpal) { np2cfg.realpal = val; update |= SYS_UPDATECFG; } sysmng_update(update); - endLoop(); + endLoop(screenWin); err=noErr; break; case kHICommandCancel: - endLoop(); + endLoop(screenWin); err=noErr; break; } @@ -185,20 +154,54 @@ static pascal OSStatus cfWinproc(EventHa return err; } +static pascal OSStatus sliderEventHandlerProc( EventHandlerCallRef inCallRef, EventRef inEvent, void* inUserData ) +{ + short base = 0; + ControlID conID; + ControlRef theControl = (ControlRef)inUserData; + if (GetControlID(theControl, &conID) == noErr) { + if (conID.signature == 'sl/f' && conID.id == 4) { + base = 31; + } + } + return( changeSlider(theControl, screenWin, base) ); +} + +static pascal OSStatus PrefsTabEventHandlerProc( EventHandlerCallRef inCallRef, EventRef inEvent, void* inUserData ) +{ + WindowRef theWindow = (WindowRef)inUserData; // get the windowRef, passed around as userData + short ret; + ret = changeTab(theWindow, lastPaneSelected); + if (ret) { + lastPaneSelected = ret; + } + return( eventNotHandledErr ); +} + static void makeNibWindow (IBNibRef nibRef) { OSStatus err; + short i; + ControlRef targetCon[5]; err = CreateWindowFromNib(nibRef, CFSTR("ScreenDialog"), &screenWin); if (err == noErr) { initScreenWindow(); - SetInitialTabState(screenWin); + SetInitialTabState(screenWin, lastPaneSelected, kMaxNumTabs); EventTypeSpec tabControlEvents[] ={ { kEventClassControl, kEventControlHit }}; InstallControlEventHandler( getControlRefByID(kTabMasterSig,kTabMasterID,screenWin), PrefsTabEventHandlerProc , GetEventTypeCount(tabControlEvents), tabControlEvents, screenWin, NULL ); - EventTypeSpec list[]={ - { kEventClassCommand, kEventCommandProcess }, + EventTypeSpec list[]={ { kEventClassCommand, kEventCommandProcess },}; + + EventTypeSpec sliderControlEvents[] ={ + { kEventClassControl, kEventControlDraw }, + { kEventClassControl, kEventControlValueFieldChanged } }; + for (i=0;i<5;i++) { + targetCon[i] = getControlRefByID('sl/f',i,screenWin); + InstallControlEventHandler( targetCon[i], sliderEventHandlerProc , GetEventTypeCount(sliderControlEvents), sliderControlEvents, (void *)targetCon[i], NULL ); + } + EventHandlerRef ref; - InstallWindowEventHandler (screenWin, NewEventHandlerUPP(cfWinproc), sizeof(list)/sizeof(EventTypeSpec), list, (void *)screenWin, &ref); + InstallWindowEventHandler (screenWin, NewEventHandlerUPP(cfWinproc), GetEventTypeCount(list), list, (void *)screenWin, &ref); ShowSheetWindow(screenWin, hWndMain); err=RunAppModalLoopForWindow(screenWin); @@ -219,36 +222,4 @@ void initScreenOpt( void ) { return; } } - -static UInt16 lastPaneSelected = 1; // static, to keep track of it long term (in a more complex application - // you might store this in a data structure in the window refCon) - -static void SetInitialTabState(WindowRef theWindow) -{ - short qq; - - for(qq=0;qq