|
|
| version 1.1, 2003/10/23 21:00:24 | version 1.4, 2003/10/28 16:44:44 |
|---|---|
| Line 13 | Line 13 |
| #include "iocore.h" | #include "iocore.h" |
| #include "scrndraw.h" | #include "scrndraw.h" |
| #include "palettes.h" | #include "palettes.h" |
| #include "configure.h" | #include "dialogutils.h" |
| #include "screenopt.h" | |
| static WindowRef screenWin; | #define getControlValue(a,b) GetControl32BitValue(getControlRefByID(a,b,screenWin)) |
| static void SetInitialTabState(WindowRef theWindow); | #define setControlValue(a,b,c) SetControl32BitValue(getControlRefByID(a,b,screenWin),c) |
| static pascal OSStatus PrefsTabEventHandlerProc( EventHandlerCallRef inCallRef, EventRef inEvent, void* inUserData ); | |
| enum {kTabMasterSig = 'ScrT',kTabMasterID = 1000,kTabPaneSig= 'ScTb',kMaxNumTabs= 3}; | #define kMaxNumTabs 3 |
| enum {kTabMasterSig = 'ScrT',kTabMasterID = 1000,kTabPaneSig= 'ScTb'}; | |
| static void endLoop(void) { | static WindowRef screenWin; |
| OSStatus err; | static UInt16 lastPaneSelected = 1; // static, to keep track of it long term (in a more complex application |
| HideSheetWindow(screenWin); | // you might store this in a data structure in the window refCon) |
| DisposeWindow(screenWin); | |
| err=QuitAppModalLoopForWindow(screenWin); | |
| } | |
| 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) { | static void setReverseStatus(void) { |
| if (GetControl32BitValue(getControlRefByID('LCDy', 0, screenWin))) { | if (getControlValue('LCDy', 0)) { |
| ActivateControl(getControlRefByID('rvrs', 0, screenWin)); | ActivateControl(getControlRefByID('rvrs', 0, screenWin)); |
| } | } |
| else { | else { |
| Line 53 static void setReverseStatus(void) { | Line 37 static void setReverseStatus(void) { |
| } | } |
| static void initScreenWindow(void) { | static void initScreenWindow(void) { |
| SetControl32BitValue(getControlRefByID('LCDy', 0, screenWin), np2cfg.LCD_MODE & 1); | setControlValue('LCDy', 0, np2cfg.LCD_MODE & 1); |
| setReverseStatus(); | setReverseStatus(); |
| SetControl32BitValue(getControlRefByID('rvrs', 0, screenWin), np2cfg.LCD_MODE & 2?1:0); | setControlValue('rvrs', 0, np2cfg.LCD_MODE & 2?1:0); |
| SetControl32BitValue(getControlRefByID('uskr', 0, screenWin), np2cfg.skipline); | setControlValue('uskr', 0, np2cfg.skipline); |
| SetControl32BitValue(getControlRefByID('rati', 0, screenWin), np2cfg.skiplight); | setControlValue('sl/f', 0, np2cfg.skiplight); |
| setFieldValue('rati'); | |
| setControlValue('GDCl', 0, np2cfg.uPD72020 + 1); | |
| SetControl32BitValue(getControlRefByID('GDCl', 0, screenWin), np2cfg.uPD72020 + 1); | setControlValue('GrCh', 0, (np2cfg.grcg & 3) + 1); |
| SetControl32BitValue(getControlRefByID('GrCh', 0, screenWin), (np2cfg.grcg & 3) + 1); | setControlValue('16cl', 0, np2cfg.color16); |
| SetControl32BitValue(getControlRefByID('16cl', 0, screenWin), np2cfg.color16); | |
| setControlValue('sl/f', 1, np2cfg.wait[0]); | |
| SetControl32BitValue(getControlRefByID('tram', 0, screenWin), np2cfg.wait[0]); | setControlValue('sl/f', 2, np2cfg.wait[2]); |
| setFieldValue('tram'); | setControlValue('sl/f', 3, np2cfg.wait[4]); |
| SetControl32BitValue(getControlRefByID('vram', 0, screenWin), np2cfg.wait[2]); | setControlValue('sl/f', 4, np2cfg.realpal); |
| setFieldValue('vram'); | |
| SetControl32BitValue(getControlRefByID('crgc', 0, screenWin), np2cfg.wait[4]); | |
| setFieldValue('crgc'); | |
| SetControl32BitValue(getControlRefByID('RPAd', 0, screenWin), np2cfg.realpal); | |
| setFieldValue('RPAd'); | |
| } | } |
| static pascal OSStatus cfWinproc(EventHandlerCallRef myHandler, EventRef event, void* userData) { | static pascal OSStatus cfWinproc(EventHandlerCallRef myHandler, EventRef event, void* userData) { |
| Line 91 static pascal OSStatus cfWinproc(EventHa | Line 69 static pascal OSStatus cfWinproc(EventHa |
| case 'LCDy': | case 'LCDy': |
| setReverseStatus(); | setReverseStatus(); |
| break; | break; |
| case 'rati': | |
| case 'tram': | |
| case 'vram': | |
| case 'crgc': | |
| case 'RPAd': | |
| setFieldValue(cmd.commandID); | |
| break; | |
| case kHICommandOK: | case kHICommandOK: |
| renewal = 0; | renewal = 0; |
| val=GetControl32BitValue(getControlRefByID('uskr', 0, screenWin)); | val=getControlValue('uskr', 0); |
| if (np2cfg.skipline != val) { | if (np2cfg.skipline != val) { |
| np2cfg.skipline = val; | np2cfg.skipline = val; |
| renewal = 1; | renewal = 1; |
| } | } |
| val=GetControl32BitValue(getControlRefByID('rati', 0, screenWin)); | val=getControlValue('sl/f', 0); |
| if (val != np2cfg.skiplight); | if (val != np2cfg.skiplight); |
| if (renewal) { | if (renewal) { |
| pal_makeskiptable(); | pal_makeskiptable(); |
| } | } |
| val=GetControl32BitValue(getControlRefByID('LCDy', 0, screenWin)) | | val=getControlValue('LCDy', 0) | getControlValue('rvrs', 0) << 1; |
| GetControl32BitValue(getControlRefByID('rvrs', 0, screenWin)) << 1; | |
| if (np2cfg.LCD_MODE != val) { | if (np2cfg.LCD_MODE != val) { |
| np2cfg.LCD_MODE = val; | np2cfg.LCD_MODE = val; |
| pal_makelcdpal(); | pal_makelcdpal(); |
| Line 125 static pascal OSStatus cfWinproc(EventHa | Line 94 static pascal OSStatus cfWinproc(EventHa |
| } | } |
| update = 0; | update = 0; |
| val=GetControl32BitValue(getControlRefByID('GDCl', 0, screenWin))-1; | val=getControlValue('GDCl', 0)-1; |
| if (np2cfg.uPD72020 != val) { | if (np2cfg.uPD72020 != val) { |
| np2cfg.uPD72020 = val; | np2cfg.uPD72020 = val; |
| update |= SYS_UPDATECFG; | update |= SYS_UPDATECFG; |
| gdc_restorekacmode(); | gdc_restorekacmode(); |
| gdcs.grphdisp |= GDCSCRN_ALLDRAW2; | gdcs.grphdisp |= GDCSCRN_ALLDRAW2; |
| } | } |
| val=GetControl32BitValue(getControlRefByID('GrCh', 0, screenWin))-1; | val=getControlValue('GrCh', 0)-1; |
| if (np2cfg.grcg != val) { | if (np2cfg.grcg != val) { |
| np2cfg.grcg = val; | np2cfg.grcg = val; |
| update |= SYS_UPDATECFG; | update |= SYS_UPDATECFG; |
| gdcs.grphdisp |= GDCSCRN_ALLDRAW2; | gdcs.grphdisp |= GDCSCRN_ALLDRAW2; |
| } | } |
| val=GetControl32BitValue(getControlRefByID('16cl', 0, screenWin)); | val=getControlValue('16cl', 0); |
| if (np2cfg.color16 != val) { | if (np2cfg.color16 != val) { |
| np2cfg.color16 = val; | np2cfg.color16 = val; |
| update |= SYS_UPDATECFG; | update |= SYS_UPDATECFG; |
| } | } |
| value[0]=GetControl32BitValue(getControlRefByID('tram', 0, screenWin)); | value[0]=getControlValue('sl/f', 1); |
| if (value[0]) { | if (value[0]) { |
| value[1] = 1; | value[1] = 1; |
| } | } |
| value[2]=GetControl32BitValue(getControlRefByID('vram', 0, screenWin)); | value[2]=getControlValue('sl/f', 2); |
| if (value[0]) { | if (value[0]) { |
| value[3] = 1; | value[3] = 1; |
| } | } |
| value[4]=GetControl32BitValue(getControlRefByID('crgc', 0, screenWin)); | value[4]=getControlValue('sl/f', 3); |
| if (value[0]) { | if (value[0]) { |
| value[5] = 1; | value[5] = 1; |
| } | } |
| Line 162 static pascal OSStatus cfWinproc(EventHa | Line 131 static pascal OSStatus cfWinproc(EventHa |
| update |= SYS_UPDATECFG; | update |= SYS_UPDATECFG; |
| } | } |
| } | } |
| val=GetControl32BitValue(getControlRefByID('RPAd', 0, screenWin)); | val=getControlValue('sl/f', 4); |
| if (val != np2cfg.realpal) { | if (val != np2cfg.realpal) { |
| np2cfg.realpal = val; | np2cfg.realpal = val; |
| update |= SYS_UPDATECFG; | update |= SYS_UPDATECFG; |
| } | } |
| sysmng_update(update); | sysmng_update(update); |
| endLoop(); | endLoop(screenWin); |
| err=noErr; | err=noErr; |
| break; | break; |
| case kHICommandCancel: | case kHICommandCancel: |
| endLoop(); | endLoop(screenWin); |
| err=noErr; | err=noErr; |
| break; | break; |
| } | } |
| Line 185 static pascal OSStatus cfWinproc(EventHa | Line 154 static pascal OSStatus cfWinproc(EventHa |
| return err; | 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) { | static void makeNibWindow (IBNibRef nibRef) { |
| OSStatus err; | OSStatus err; |
| short i; | |
| ControlRef targetCon[5]; | |
| err = CreateWindowFromNib(nibRef, CFSTR("ScreenDialog"), &screenWin); | err = CreateWindowFromNib(nibRef, CFSTR("ScreenDialog"), &screenWin); |
| if (err == noErr) { | if (err == noErr) { |
| initScreenWindow(); | initScreenWindow(); |
| SetInitialTabState(screenWin); | SetInitialTabState(screenWin, lastPaneSelected, kMaxNumTabs); |
| EventTypeSpec tabControlEvents[] ={ { kEventClassControl, kEventControlHit }}; | EventTypeSpec tabControlEvents[] ={ { kEventClassControl, kEventControlHit }}; |
| InstallControlEventHandler( getControlRefByID(kTabMasterSig,kTabMasterID,screenWin), PrefsTabEventHandlerProc , GetEventTypeCount(tabControlEvents), tabControlEvents, screenWin, NULL ); | InstallControlEventHandler( getControlRefByID(kTabMasterSig,kTabMasterID,screenWin), PrefsTabEventHandlerProc , GetEventTypeCount(tabControlEvents), tabControlEvents, screenWin, NULL ); |
| EventTypeSpec list[]={ | EventTypeSpec list[]={ { kEventClassCommand, kEventCommandProcess },}; |
| { 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; | 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); | ShowSheetWindow(screenWin, hWndMain); |
| err=RunAppModalLoopForWindow(screenWin); | err=RunAppModalLoopForWindow(screenWin); |
| Line 219 void initScreenOpt( void ) { | Line 222 void initScreenOpt( void ) { |
| return; | 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<kMaxNumTabs+1;qq++) | |
| SetControlVisibility( getControlRefByID( kTabPaneSig, kTabMasterID+qq, theWindow), false, true ); | |
| SetControlValue(getControlRefByID(kTabMasterSig,kTabMasterID,theWindow),lastPaneSelected ); | |
| SetControlVisibility( getControlRefByID( kTabPaneSig, kTabMasterID+lastPaneSelected, theWindow), true, true ); | |
| } | |
| static pascal OSStatus PrefsTabEventHandlerProc( EventHandlerCallRef inCallRef, EventRef inEvent, void* inUserData ) | |
| { | |
| WindowRef theWindow = (WindowRef)inUserData; // get the windowRef, passed around as userData | |
| short controlValue = 2; | |
| controlValue = GetControlValue( getControlRefByID(kTabMasterSig,kTabMasterID,theWindow) ); | |
| if ( controlValue != lastPaneSelected ) | |
| { | |
| SetControlVisibility( getControlRefByID( kTabPaneSig, kTabMasterID+lastPaneSelected, theWindow), false, true ); | |
| SetControlVisibility( getControlRefByID( kTabPaneSig, kTabMasterID+controlValue, theWindow), true, true ); | |
| Draw1Control( getControlRefByID(kTabMasterSig,kTabMasterID,theWindow) ); | |
| lastPaneSelected= controlValue; | |
| } | |
| return( eventNotHandledErr ); | |
| } | |