This is PrefPanel.m in view mode; [Download] [Up]
/***(PrefPanel.m)**************************************************************
*H* VDT's preference Panel class implmentation V0.1, 19-MAY-92 *
*C* V0.4 19-MAY-92 Correct Current Preferences actions --MDM *
*C* V0.1 26-APR-92 Initial version --MDM *
******************************************************************************/
#import <defaults.h>
#import <appkit/Button.h>
#import <appkit/Form.h>
#import <appkit/FormCell.h>
#import <appkit/Matrix.h>
#import "PrefPanel.h"
#import "VdtApplication.h"
#import "VdtWindow.h"
#import "VdtView.h"
@implementation PrefPanel
/******************************************************************************
* CLASS METHOD:- init *
* This method creates an instance of a PrefPanel object and then loads the *
* NIB module for the Info panel. *
******************************************************************************/
- init
{/* BEGIN- init */
/* Create the parent object */
[super init];
/* Load the NIB hierarchy: this also sets the outlet variable IVinfoPanel */
[NXApp loadNibSection:"PrefPanel.nib" owner:self];
/* Set the Preferences panel objects to the default settings */
[self displayCurrentPrefs:self];
return(self);
}/* END- init */
/******************************************************************************
* CLASS METHOD:- currentDefaults: *
* This method replaces certain preference panel fields according to the *
* state of the VDT window.
******************************************************************************/
- currentDefaults:sender
{ /* Local Variables */
const char *appName; /* String pointer application name */
NXRect conFrame; /* Frame rectangle of VdtWindow content view */
char defStr[32]; /* String space to set default value */
NXSize screenSize; /* Size of physical display screen */
float vdtScale; /* Current VDT view scalling factor */
id vdtWindow; /* ID of VdtWindow object */
id vdtView; /* ID of VdtView object */
NXRect viewRect; /* Rectangle of VdtView */
NXRect winFrame; /* Frame rectangle of VdtWindow */
/* BEGIN-currentDefaults: */
/* Get the name of the application for setting defaults */
appName = [NXApp appName];
/* Get current X,Y location of VDT window, set PrefPanel fields */
vdtWindow = [NXApp getVdtWindow];
[vdtWindow getFrame:&winFrame];
[[vdtWindow contentView] getFrame:&conFrame];
sprintf(defStr,"%0.1f", winFrame.origin.x +conFrame.origin.x);
NXSetDefault(appName, VdtKdefNamWinLocX, defStr);
sprintf(defStr,"%0.1f", winFrame.origin.y + conFrame.origin.y);
NXSetDefault(appName, VdtKdefNamWinLocY, defStr);
/* Get the size of the current VDT view in nearest screen sizes */
vdtView = [NXApp getVdtView];
[vdtView getFrame:&viewRect];
[NXApp getDefaultScale:&vdtScale];
[NXApp getScreenSize:&screenSize];
sprintf(defStr,"%d %d",
(int)(viewRect.size.width*vdtScale/screenSize.width),
(int)(viewRect.size.height*vdtScale/screenSize.height));
NXSetDefault(appName, VdtKdefNamSize, defStr);
#ifdef DEBUG
printf("vdtView(w,h): %f %f\n", viewRect.size.width, viewRect.size.height);
printf("vdtScale: %f\n", vdtScale);
#endif
/* Reset all the PrefPanel objects to the current defaults table */
[self displayCurrentPrefs:self];
return(self);
}/* END-currentDefaults: */
/******************************************************************************
* CLASS METHOD:- displayCurrentPrefs: *
* This method sets the various Preference panel fields to the current App *
* default values. *
******************************************************************************/
- displayCurrentPrefs:sender
{ /* Local Variables */
int defIntVal1;
int defIntVal2;
float defFloatVal;
/* BEGIN-displayCurrentPrefs: */
/* Set BorderGray Text Field to the current default */
[NXApp getDefaultBorderGray:&defFloatVal];
[IVborderGrayFCell setFloatValue:defFloatVal];
/* Set DockHandling radio box to the current default */
[NXApp getDefaultDockHandling:&defIntVal1];
[IVdhRadioBox selectCellAt:defIntVal1 :0];
/* Set Icon Gravity radio box to the current default */
[NXApp getDefaultIconGravity:&defIntVal1];
[IVigRadioBox selectCellAt:defIntVal1 :0];
/* Set Immobile switch to the current default */
[NXApp getDefaultImmobile:&defIntVal1];
[IVimmobileSwitch setState:defIntVal1];
/* Set View Port Origin X,Y fields to the current default */
[NXApp getDefaultOrigin:&defIntVal1 :&defIntVal2];
[IVxOriginFCell setIntValue:defIntVal1];
[IVyOriginFCell setIntValue:defIntVal2];
/* Set Pan Delta field to the current default */
[NXApp getDefaultPanDelta:&defIntVal1];
[IVpanDeltaFCell setIntValue:defIntVal1];
/* Set Pan Grid field to the current default */
[NXApp getDefaultPanGrid:&defIntVal1];
[IVpanGridFCell setIntValue:defIntVal1];
/* Set Pan Jump switch to the current default */
[NXApp getDefaultPanJump:&defIntVal1];
[IVpanJumpSwitch setState:defIntVal1];
/* Set Resize Bar switch to the current default */
[NXApp getDefaultResizeBar:&defIntVal1];
[IVresizeBarSwitch setState:defIntVal1];
/* Set VDT Scale Factor field to the current default */
[NXApp getDefaultScale:&defFloatVal];
[IVscaleFCell setFloatValue:defFloatVal];
/* Set the VDT Size width and height fields to the current default */
[NXApp getDefaultSize:&defIntVal1 :&defIntVal2];
[IVwidthFCell setIntValue:defIntVal1];
[IVheightFCell setIntValue:defIntVal2];
/* Set VDT Window radio box to the current default */
[NXApp getDefaultWindowLevel:&defIntVal1];
[IVwlRadioBox selectCellAt:defIntVal1 :0];
/* Set the Window Motion radio box to the current default */
[NXApp getDefaultWindowMotion:&defIntVal1];
[IVwmRadioBox selectCellAt:defIntVal1 :0];
/* Set VDT Window X,Y startup location fields to the current default */
[NXApp getDefaultWinLoc:&defIntVal1 :&defIntVal2];
[IVxWinLocFCell setIntValue:defIntVal1];
[IVyWinLocFCell setIntValue:defIntVal2];
return(self);
}/* END-displayCurrentPrefs: */
/******************************************************************************
* INSTANCE METHOD:- ExposeAndFocus *
* This method displays the InfoPanel on the top of the window stack and *
* gives it the keyboard focus. *
******************************************************************************/
- ExposeAndFocus:sender
{/* BEGIN- ExposeAndFocus */
[IVprefPanel makeKeyAndOrderFront:self];
return(self);
}/* END- ExposeAndFocus */
/******************************************************************************
* INSTANCE METHOD:- revertDefaults: *
* This method replaces all the preference settings with the last saved *
* values. *
******************************************************************************/
- revertDefaults:sender
{ /* Local Variables */
const char *appName; /* String pointer to application name */
int defaultIndex;
char *defaultNames[15] =
{ VdtKdefNamBorderGray, VdtKdefNamDockHandling,
VdtKdefNamIconGravity, VdtKdefNamImmobile,
VdtKdefNamOrigin, VdtKdefNamPanDelta,
VdtKdefNamPanGrid, VdtKdefNamPanJump,
VdtKdefNamResizeBar, VdtKdefNamScale,
VdtKdefNamSize, VdtKdefNamWindowLevel,
VdtKdefNamWindowMotion, VdtKdefNamWinLocX,
VdtKdefNamWinLocY };
const char *defStr;
/* BEGIN- revertDefaults: */
#ifdef DEBUG
printf("PrefPanel- revertDefaults:\n");
#endif
appName = [NXApp appName];
for (defaultIndex = 0; defaultIndex < 15; defaultIndex++)
{
defStr = NXReadDefault(appName, defaultNames[defaultIndex]);
if ( defStr )
NXSetDefault(appName, defaultNames[defaultIndex], defStr);
}
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
return(self);
}/* END- revertDefaults: */
/******************************************************************************
* INSTANCE METHOD:- saveDefaults: *
* This method writes all the current preference settings to the defaults *
* data base. *
******************************************************************************/
- saveDefaults:sender
{ /* Local Variables */
int defaultIndex;
char *defaultNames[15] =
{ VdtKdefNamBorderGray, VdtKdefNamDockHandling,
VdtKdefNamIconGravity, VdtKdefNamImmobile,
VdtKdefNamOrigin, VdtKdefNamPanDelta,
VdtKdefNamPanGrid, VdtKdefNamPanJump,
VdtKdefNamResizeBar, VdtKdefNamScale,
VdtKdefNamSize, VdtKdefNamWindowLevel,
VdtKdefNamWindowMotion, VdtKdefNamWinLocX,
VdtKdefNamWinLocY };
const char *defStr;
const char *appName;
/* BEGIN- saveDefaults: */
#ifdef DEBUG
printf("PrefPanel- saveDefaults:\n");
#endif
appName = [NXApp appName];
for (defaultIndex = 0; defaultIndex < 15; defaultIndex++)
{
defStr = NXGetDefaultValue(appName, defaultNames[defaultIndex]);
NXWriteDefault(appName, defaultNames[defaultIndex], defStr);
}
return(self);
}/* END- saveDefaults: */
/******************************************************************************
* INSTANCE METHOD:- setBorderGray: *
* This method handles changing the Border Gray Runtime Default. *
******************************************************************************/
- setBorderGray:sender
{ /* Local Variables */
float gray;
static char grayDefault[32];
/* BEGIN- setBorderGray: */
gray = [sender floatValueAt:0];
sprintf(grayDefault, "%0.4f", gray);
NXSetDefault([NXApp appName], VdtKdefNamBorderGray, grayDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
[NXApp getDefaultBorderGray:&gray];
[[NXApp getVdtWindow] setVdtBorderGray:gray];
return(self);
}/* END- setBorderGray: */
/******************************************************************************
* INSTANCE METHOD:- setDockHandling: *
* This method handles changing the DockHandling Runtime Default. *
******************************************************************************/
- setDockHandling:sender
{ /* Local Variables */
int dockHandling;
/* BEGIN- setDockHandling: */
dockHandling = [sender selectedTag];
if ( dockHandling == 0 )
/* Set DockHandling to "Sticky" */
NXSetDefault([NXApp appName], VdtKdefNamDockHandling, VdtKdefSetSticky);
else
/* Set DockHandling to "Slippery" */
NXSetDefault([NXApp appName], VdtKdefNamDockHandling, VdtKdefSetSlippery);
[[NXApp getVdtView] setViewDockHandling:dockHandling];
return(self);
}/* END- setDockHandling: */
/******************************************************************************
* INSTANCE METHOD:- setIconGravity: *
* This method handles changing the Icon Gravity Runtime Default. *
******************************************************************************/
- setIconGravity:sender
{ /* Local Variables */
const char *defValue;
int gravity;
/* BEGIN- setIconGravity: */
gravity = [sender selectedTag];
if ( gravity == 0 )
/* Set IconGravity to "TopLeft" */
defValue = VdtKdefSetTopLeft;
else if ( gravity == 1 )
/* Set IconGravity to "TopRight" */
defValue = VdtKdefSetTopRight;
else if ( gravity == 2 )
/* Set IconGravity to "BottomLeft" */
defValue = VdtKdefSetBottomLeft;
else if ( gravity == 3 )
/* Set IconGravity to "BottomRight" */
defValue = VdtKdefSetBottomRight;
else
/* Set icon gravity to registered default value */
defValue = VdtKdefValIconGravity;
NXSetDefault([NXApp appName], VdtKdefNamIconGravity, defValue);
return(self);
}/* END- setIconGravity: */
/******************************************************************************
* INSTANCE METHOD:- setImmobile: *
* This method handles changing the Immobile Startup Default. *
******************************************************************************/
- setImmobile:sender
{ /* Local Variables */
int state;
/* BEGIN- setImmobile: */
state = [sender state];
if ( state )
/* The Immobile default has been toggled to "Yes" */
NXSetDefault([NXApp appName], VdtKdefNamImmobile, VdtKdefSetYes);
else
/* The Immobile default has been toggled to "No" */
NXSetDefault([NXApp appName], VdtKdefNamImmobile, VdtKdefSetNo);
return(self);
}/* END- setImmobile: */
/******************************************************************************
* INSTANCE METHOD:- setOriginX: *
* This method handles the new entries in the Origin X Form Cell. *
******************************************************************************/
- setOriginX:sender
{ /* Local Variables */
static char originDefault[32];
int originX;
int originY;
/* BEGIN- setOriginX: */
[NXApp getDefaultOrigin:&originX :&originY];
originX = [sender intValueAt:0];
sprintf(originDefault, "%d %d", originX, originY);
NXSetDefault([NXApp appName], VdtKdefNamOrigin, originDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
return(self);
}/* END- setOriginX: */
/******************************************************************************
* INSTANCE METHOD:- setOriginY: *
* This method handles the new entries in the Origin Y Form Cell. *
******************************************************************************/
- setOriginY:sender
{ /* Local Variables */
static char originDefault[32];
int originX;
int originY;
/* BEGIN- setOriginY: */
[NXApp getDefaultOrigin:&originX :&originY];
originY = [sender intValueAt:0];
sprintf(originDefault, "%d %d", originX, originY);
NXSetDefault([NXApp appName], VdtKdefNamOrigin, originDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
return(self);
}/* END- setOriginY: */
/******************************************************************************
* INSTANCE METHOD:- setPanDelta: *
* This method handles changes to the Pan Delta Form Cell. *
******************************************************************************/
- setPanDelta:sender
{ /* Local Variables */
static char panDefault[32];
int panDelta;
/* BEGIN- setPanDelta: */
panDelta = [sender intValueAt:0];
sprintf(panDefault, "%d", panDelta);
NXSetDefault([NXApp appName], VdtKdefNamPanDelta, panDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
[NXApp getDefaultPanDelta:&panDelta];
[[NXApp getVdtWindow] setVdtPanDelta:panDelta];
return(self);
}/* END- setPanDelta: */
/******************************************************************************
* INSTANCE METHOD:- setPanGrid: *
* This method handles changes to the Pan Grid Form Cell. *
******************************************************************************/
- setPanGrid:sender
{ /* Local Variables */
static char panDefault[32];
int panGrid;
/* BEGIN- setPanGrid: */
panGrid = [sender intValueAt:0];
sprintf(panDefault, "%d", panGrid);
NXSetDefault([NXApp appName], VdtKdefNamPanGrid, panDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
[NXApp getDefaultPanGrid:&panGrid];
[[NXApp getVdtView] setVdtPanGrid:panGrid];
return(self);
}/* END- setPanGrid: */
/******************************************************************************
* INSTANCE METHOD:- setPanJump: *
* This method handles changes to the Pan Jump toggle switch. *
******************************************************************************/
- setPanJump:sender
{ /* Local Variables */
int state;
/* BEGIN- setPanJump: */
state = [sender state];
if ( state )
/* The PanJump default has been toggled to "Yes" */
NXSetDefault([NXApp appName], VdtKdefNamPanJump, VdtKdefSetYes);
else
/* The ResizeBar default has been toggled to "No" */
NXSetDefault([NXApp appName], VdtKdefNamPanJump, VdtKdefSetNo);
[[NXApp getVdtView] setVdtPanJump:state];
return(self);
}/* END- setPanJump: */
/******************************************************************************
* INSTANCE METHOD:- setResizeBar: *
* This method handles changes to the Resize Bar toggle button. *
******************************************************************************/
- setResizeBar:sender
{ /* Local Variables */
int state;
/* BEGIN- setResizeBar: */
state = [sender state];
if ( state )
/* The ResizeBar default has been toggled to "Yes" */
NXSetDefault([NXApp appName], VdtKdefNamResizeBar, VdtKdefSetYes);
else
/* The ResizeBar default has been toggled to "No" */
NXSetDefault([NXApp appName], VdtKdefNamResizeBar, VdtKdefSetNo);
return(self);
}/* END- setResizeBar: */
/******************************************************************************
* INSTANCE METHOD:- setScale: *
* This method handles changes to the Scale Startup Default setting. *
******************************************************************************/
- setScale:sender
{ /* Local Variables */
float scale;
static char scaleDefault[32];
/* BEGIN- setScale: */
scale = [sender floatValueAt:0];
sprintf(scaleDefault, "%0.2f", scale);
NXSetDefault([NXApp appName], VdtKdefNamScale, scaleDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
return(self);
}/* END- setScale: */
/******************************************************************************
* INSTANCE METHOD:- setSizeHeight: *
* This method
******************************************************************************/
- setSizeHeight:sender
{ /* Local Variables */
static char sizeDefault[32];
int sizeHeight;
int sizeWidth;
/* BEGIN- setSizeHeight: */
[NXApp getDefaultSize:&sizeWidth :&sizeHeight];
sizeHeight = [sender intValueAt:0];
sprintf(sizeDefault, "%d %d", sizeWidth, sizeHeight);
NXSetDefault([NXApp appName], VdtKdefNamSize, sizeDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
return(self);
}/* END- setSizeHeight: */
/******************************************************************************
* INSTANCE METHOD:- setSizeWidth: *
* This method
******************************************************************************/
- setSizeWidth:sender
{ /* Local Variables */
static char sizeDefault[32];
int sizeHeight;
int sizeWidth;
/* BEGIN- setSizeWidth: */
[NXApp getDefaultSize:&sizeWidth :&sizeHeight];
sizeWidth = [sender intValueAt:0];
sprintf(sizeDefault, "%d %d", sizeWidth, sizeHeight);
NXSetDefault([NXApp appName], VdtKdefNamSize, sizeDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
return(self);
}/* END- setSizeWidth: */
/******************************************************************************
* INSTANCE METHOD:- setWindowLevel: *
* This method changes the window tier of the VDT Window.
******************************************************************************/
- setWindowLevel:sender
{ /* Local Variables */
char *defVal;
int windowLevel;
/* BEGIN- setWindowLevel: */
windowLevel = [sender selectedTag];
if ( windowLevel == 0 )
defVal = VdtKdefSetNormal;
else if ( windowLevel == 1 )
defVal = VdtKdefSetFloating;
else if ( windowLevel == 2 )
defVal = VdtKdefSetDock;
else if ( windowLevel == 3 )
defVal = VdtKdefSetSubMenu;
else if ( windowLevel == 4 )
defVal = VdtKdefSetMainMenu;
else
defVal = VdtKdefValWindowLevel;
NXSetDefault([NXApp appName], VdtKdefNamWindowLevel, defVal);
[[NXApp getVdtWindow] setVdtWindowLevel:sender];
return(self);
}/* END- setWindowLevel: */
/******************************************************************************
* INSTANCE METHOD:- setWindowMotion: *
* This method
******************************************************************************/
- setWindowMotion:sender
{ /* Local Variables */
const char *defVal;
int windowMotion;
/* BEGIN- setWindowMotion: */
windowMotion = [sender selectedTag];
if ( windowMotion == 0 )
defVal = VdtKdefSetDeferred;
else if ( windowMotion == 1 )
defVal = VdtKdefSetImmediate;
else
defVal = VdtKdefValWindowMotion;
NXSetDefault([NXApp appName], VdtKdefNamWindowMotion, defVal);
[[NXApp getVdtView] setViewWindowMotion:windowMotion];
return(self);
}/* END- setWindowMotion: */
/******************************************************************************
* INSTANCE METHOD:- setWinLocX: *
* This method
******************************************************************************/
- setWinLocX:sender
{ /* Local Variables */
static char xLocDefault[32];
int winLocX;
/* BEGIN-setWinLocX: */
winLocX = [sender intValueAt:0];
sprintf(xLocDefault, "%d", winLocX);
NXSetDefault([NXApp appName], VdtKdefNamWinLocX, xLocDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
return(self);
}/* END-setWinLocX: */
/******************************************************************************
* INSTANCE METHOD:- setWinLocY: *
* This method
******************************************************************************/
- setWinLocY:sender
{ /* Local Variables */
static char yLocDefault[32];
int winLocY;
/* BEGIN-setWinLocY: */
winLocY = [sender intValueAt:0];
sprintf(yLocDefault, "%d", winLocY);
NXSetDefault([NXApp appName], VdtKdefNamWinLocY, yLocDefault);
[NXApp validateAppDefaults];
[self displayCurrentPrefs:self];
return(self);
}/* END- setWinLocY: */
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.