libs-gdl2/DBModeler/Preferences.m
David Ayers ad43813eb0 * EOAccess/EOSQLExpression.h (deleteStatementWithQualifier:entity:)
* EOAccess/EOSQLExpressionPriv.h (_aliasForRelationshipPath:)
	(_flattenRelPath:entity:, _aliasForRelatedAttribute:relationshipPath:)
	* EOAccess/EOSQLExpression.m (insertStatementForRow:entity:)
	(updateStatementForRow:qualifier:entity:)
	(deleteStatementWithQualifier:entity:)
	(selectStatementForAttributes🔒fetchSpecification:entity:)
	(_aliasForRelationshipPath:)
	* EOAccess/EORelationship.h (intermediateEntity)
	(_foreignKeyForSourceRow:)
	* EOAccess/EORelationship.m (_foreignKeyForSourceRow:, _leftSideKeyMap)
	* EOAccess/EODatabaseContext.h (databaseOperationForObject:)
	(databaseOperationForGlobalID:, recordDatabaseOperation:)
	(_openChannelWithLoginPanel:)
	* EOAccess/EODatabaseContextPriv.h (primaryKeyForObject:)
	(_currentCommittedSnapshotForObject:)
	* EOAccess/EOEntityPriv.h (_keyMapForRelationshipPath:)
	(_keyMapForIdenticalKeyRelationshipPath:, _mapAttribute:)
	(_relationshipPathIsToMany: valueForSQLExpression:)
	(_parsePropertyName:, classPropertyAttributeNames)
	(classPropertyToManyRelationshipNames)
	(classPropertyToOneRelationshipNames, dbSnapshotKeys)
	* EOAccess/EOUtilities.m (rawRowsForEntityNamed:qualifierFormat:)
	(rawRowsMatchingValue:forKey:entityNamed:)
	(rawRowsMatchingValues:entityNamed:, rawRowsWithSQL:modelNamed:)
	(rawRowsWithStoredProcedureNamed:arguments:)
	(executeStoredProcedureNamed:arguments:, databaseContextForModelNamed:)
	(primaryKeyForObject:)
	(destinationKeyForSourceObject:relationshipNamed:)
	* EOAccess/EOEntity.m
	(_mapAttribute:toDestinationAttributeInLastComponentOfRelationshipPath:)
	* EOAccess/EOAdaptor.h (adaptorWithModel:,adaptorWithName:)
	* EOAccess/EOModel.h (_classDescriptionNeeded:,_entityForClass:)
	(_addEntityWithPropertyList:)
	* EOAdaptors/Postgres95/Postgres95Channel.h
	(_evaluateExpression:withAttributes:)
	* EOControl/EOMutableKnownKeyDictionary.h/m (arrayMappingForKeys:)
	(subsetMappingForSourceDictionaryInitializer:sourceKeys:destinationKeys:)
	(subsetMappingForSourceDictionaryInitializer:)
	(setObject:forKey:, removeObjectForKey:, indexForKey:, objectForKey:)
	* EOControl/EOEditingContext.m (handleErrors:,setSharedEditingContext:)
	(faultForRawRow:entityNamed:)
	* GDL2Palette/KeyWrapper.h (setKey:, _key):
	* EOModeler/EOModelerEditor.h (selectionWithinViewedObject)
	* EOModeler/EOModelerEditor.m (initWithDocument:)
	(initWithParentEditor:)
	Correct method signatures.  Add necessary forward @class declations.

	* EOInterface/EOMasterDetailAssociation.m (establishConnection):
	* DBModeler/ModelerTableEmbedibleEditor.m
	(addDefaultTableColumnsForTableView:displayGroup:)
	* DBModeler/DefaultColumnProvider.m (setupTitleForColumn:named:)
	Cast types to avoid compiler warnings.

	* EOControl/EOCheapArray.m (dealloc): Supress compiler warning.
	* EOAdaptors/Postgres95/LoginPanel/Postgres95LoginPanel.m (dealloc)
	* EOModeler/EOModelerEditor.m (dealloc):
	* DBModeler/ModelerAttributeEditor.m (dealloc): Add missing call
	to super.
	* DBModeler/Preferences.m (sharedPreferences): Fix implementation for
	new compiler semantics.
	* EOControl/EOMultiReaderLock.m (init): Correct NSConditionLock
	initialization.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@23472 72102866-910b-0410-8b05-ffd578937521
2006-09-12 19:36:24 +00:00

210 lines
5.4 KiB
Objective-C

/**
Preferences.m
Author: Matt Rice <ratmice@yahoo.com>
Date: Mar 2006
This file is part of DBModeler.
<license>
DBModeler is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
DBModeler is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with DBModeler; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
</license>
**/
#include "Preferences.h"
#include <Foundation/NSInvocation.h>
#include <Foundation/NSUserDefaults.h>
#include <AppKit/NSNibLoading.h>
#include <AppKit/NSWindow.h>
#include <AppKit/NSButton.h>
#include <AppKit/NSTableView.h>
#include <AppKit/NSMatrix.h>
#define DisableAttributeDetailsCheck @"DisableAttributeDetailsCheck"
#define DisableEntityStoredProcedureCheck @"DisableEntityStoredProcedureCheck"
#define DisableExternalNameCheck @"DisableExternalNameCheck"
#define DisableInheritanceCheck @"DisableInheritanceCheck"
#define DisablePrimaryKeyCheck @"DisablePrimaryKeyCheck"
#define DisableRelationshipCheck @"DisableRelationshipCheck"
#define DisableStoredProcedureCheck @"DisableStoredProcedureCheck"
static NSString *BundlesToLoad = @"BundlesToLoad";
static NSString *DisableConsistencyCheckOnSave=@"DisableConsistencyCheckOnSave";
static NSUserDefaults *ud;
static DBModelerPrefs *_sharedPrefs;
/* do it this way so i can add the switch title later instead of being
* hard coded into the .gorm */
static NSString *_switches[][2] =
{
{DisableAttributeDetailsCheck, @"Attribute details"},
{DisableExternalNameCheck, @"External name"},
{DisablePrimaryKeyCheck, @"Primary key"},
{DisableRelationshipCheck, @"Relationship"},
{DisableEntityStoredProcedureCheck, @"Entity stored procedure"},
{DisableStoredProcedureCheck, @"Stored procedure"},
{DisableInheritanceCheck, @"Inheritance"}
};
#define FROBKEY(key) [ud boolForKey:key] ? NO : YES
#define COUNT(key) sizeof(key) / sizeof(key[0])
@implementation DBModelerPrefs : NSObject
+ (DBModelerPrefs *) sharedPreferences
{
if (_sharedPrefs == nil)
{
_sharedPrefs = [self new];
}
return _sharedPrefs;
}
- (id) init
{
self = [super init];
/* setup ud before -awakeFromNib is called... */
ud = [NSUserDefaults standardUserDefaults];
_bundles = [[NSMutableArray alloc] init];
[_bundles addObjectsFromArray:[self bundlesToLoad]];
[NSBundle loadNibNamed:@"Preferences" owner:self];
return self;
}
- (void) awakeFromNib
{
int i, c = COUNT(_switches);
[check_matrix renewRows:c columns:1];
for (i = 0; i < c; i++)
{
NSButtonCell *cell = [check_matrix cellAtRow:i column:0];
BOOL flag;
flag = [ud boolForKey:_switches[i][0]];
[cell setState: (flag == NO) ? NSOnState : NSOffState];
[cell setTitle: _switches[i][1]];
}
[check_matrix sizeToCells];
[consistencyCheckOnSave
setState:[ud boolForKey:DisableConsistencyCheckOnSave]
? NSOffState
: NSOnState];
[bundlesToLoad reloadData];
}
- (void) showPreferences:(id)sender
{
[prefsWindow makeKeyAndOrderFront:self];
}
- (void) switchButtonChanged:(id)sender
{
[ud setBool:([[sender selectedCell] state] == NSOffState)
forKey:_switches[[sender selectedRow]][0]];
}
- (void) checkOnSaveChanged:(id)sender
{
[ud setBool:([sender state] == NSOffState)
forKey:DisableConsistencyCheckOnSave];
}
- (NSArray *)bundlesToLoad
{
return [ud arrayForKey:BundlesToLoad];
}
- (BOOL) consistencyCheckOnSave
{
return FROBKEY(DisableConsistencyCheckOnSave);
}
- (BOOL) attributeDetailsCheck
{
return FROBKEY(DisableAttributeDetailsCheck);
}
- (BOOL) entityStoredProcedureCheck
{
return FROBKEY(DisableEntityStoredProcedureCheck);
}
- (BOOL) externalNameCheck
{
return FROBKEY(DisableExternalNameCheck);
}
- (BOOL) inheritanceCheck
{
return FROBKEY(DisableInheritanceCheck);
}
- (BOOL) primaryKeyCheck
{
return FROBKEY(DisablePrimaryKeyCheck);
}
- (BOOL) relationshipCheck
{
return FROBKEY(DisableRelationshipCheck);
}
- (BOOL) storedProcedureCheck
{
return FROBKEY(DisableStoredProcedureCheck);
}
- (int) numberOfRowsInTableView:(NSTableView *)tv
{
int num = [_bundles count];
return num;
}
- (id) tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tc row:(int)rowIndex
{
id ov = [_bundles objectAtIndex:rowIndex];
return ov;
}
- (void) tableView:(NSTableView *)tv
setObjectValue:(id)newVal
forTableColumn:(NSTableColumn *)tc
row:(int)rowIndex
{
[_bundles replaceObjectAtIndex:rowIndex withObject:newVal];
[ud setObject:_bundles forKey:BundlesToLoad];
}
- (void) addBundle:(id)sender
{
[_bundles addObject:@""];
[bundlesToLoad reloadData];
[bundlesToLoad selectRow:[_bundles count] - 1 byExtendingSelection:NO];
[bundlesToLoad editColumn:0 row:[_bundles count] - 1 withEvent:nil select:YES];
}
- (void) removeBundle:(id)sender
{
[_bundles removeObjectAtIndex:[bundlesToLoad selectedRow]];
[bundlesToLoad reloadData];
[ud setObject:_bundles forKey:BundlesToLoad];
}
@end