2006-09-05 22:18:35 +00:00
|
|
|
/**
|
|
|
|
Preferences.m
|
|
|
|
|
2007-01-05 16:17:04 +00:00
|
|
|
Author: Matt Rice <ratmice@gmail.com>
|
2006-09-21 07:24:22 +00:00
|
|
|
Date: 2005, 2006
|
2006-09-05 22:18:35 +00:00
|
|
|
|
|
|
|
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
|
2007-07-12 06:39:22 +00:00
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
2006-09-05 22:18:35 +00:00
|
|
|
(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"
|
|
|
|
|
2008-05-09 20:21:17 +00:00
|
|
|
#ifdef NeXT_Foundation_LIBRARY
|
|
|
|
#include <Foundation/Foundation.h>
|
|
|
|
#else
|
2006-09-05 22:18:35 +00:00
|
|
|
#include <Foundation/NSInvocation.h>
|
|
|
|
#include <Foundation/NSUserDefaults.h>
|
2008-05-09 20:21:17 +00:00
|
|
|
#endif
|
2006-09-05 22:18:35 +00:00
|
|
|
|
2008-05-09 20:21:17 +00:00
|
|
|
#ifdef NeXT_GUI_LIBRARY
|
|
|
|
#include <AppKit/AppKit.h>
|
|
|
|
#else
|
2006-09-05 22:18:35 +00:00
|
|
|
#include <AppKit/NSNibLoading.h>
|
|
|
|
#include <AppKit/NSWindow.h>
|
|
|
|
#include <AppKit/NSButton.h>
|
|
|
|
#include <AppKit/NSTableView.h>
|
|
|
|
#include <AppKit/NSMatrix.h>
|
2008-05-09 20:21:17 +00:00
|
|
|
#endif
|
2006-09-05 22:18:35 +00:00
|
|
|
|
|
|
|
#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
|
|
|
|
{
|
* EOAccess/EOSQLExpression.h (deleteStatementWithQualifier:entity:)
* EOAccess/EOSQLExpressionPriv.h (_aliasForRelationshipPath:)
(_flattenRelPath:entity:, _aliasForRelatedAttribute:relationshipPath:)
* EOAccess/EOSQLExpression.m (insertStatementForRow:entity:)
(updateStatementForRow:qualifier:entity:)
(deleteStatementWithQualifier:entity:)
(selectStatementForAttributes:lock: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
|
|
|
if (_sharedPrefs == nil)
|
|
|
|
{
|
|
|
|
_sharedPrefs = [self new];
|
|
|
|
}
|
|
|
|
return _sharedPrefs;
|
2006-09-05 22:18:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (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
|
Replaced tabs with spaces throughout the DBModeler sub-project.
* DBModeler/AdaptorsPanel.m, DBModeler/AttributeCell.m,
DBModeler/ConsistencyChecker.m, DBModeler/DefaultColumnProvider.m,
DBModeler/DiagramView.m, DBModeler/EOAdditions.m, DBModeler/EntityView.m,
DBModeler/GNUmakefile, DBModeler/KVDataSource.m,
DBModeler/MainModelEditor.h, DBModeler/MainModelEditor.m,
DBModeler/ModelerAttributeEditor.m, DBModeler/ModelerEntityEditor.h,
DBModeler/ModelerEntityEditor.m,
DBModeler/ModelerTableEmbedibleEditor.h,
DBModeler/ModelerTableEmbedibleEditor.m,
DBModeler/NSView+Additions.m, DBModeler/Preferences.m,
DBModeler/SQLGenerator.m, DBModeler/Inspectors/AdvancedEntityInspector.m,
DBModeler/Inspectors/AttributeInspector.h,
DBModeler/Inspectors/AttributeInspector.m,
DBModeler/Inspectors/RelationshipInspector.h,
DBModeler/Inspectors/RelationshipInspector.m
White-space clean-up. Replaced tabs with spaces.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@26556 72102866-910b-0410-8b05-ffd578937521
2008-05-23 12:11:26 +00:00
|
|
|
setState:[ud boolForKey:DisableConsistencyCheckOnSave]
|
|
|
|
? NSOffState
|
|
|
|
: NSOnState];
|
2006-09-05 22:18:35 +00:00
|
|
|
[bundlesToLoad reloadData];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void) showPreferences:(id)sender
|
|
|
|
{
|
|
|
|
[prefsWindow makeKeyAndOrderFront:self];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void) switchButtonChanged:(id)sender
|
|
|
|
{
|
2007-01-10 12:13:37 +00:00
|
|
|
int selRow;
|
|
|
|
|
|
|
|
if ((selRow = [sender selectedRow]) != -1)
|
|
|
|
[ud setBool:([[sender selectedCell] state] == NSOffState)
|
|
|
|
forKey:_switches[selRow][0]];
|
2006-09-05 22:18:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (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
|
|
|
|
{
|
Replaced tabs with spaces throughout the DBModeler sub-project.
* DBModeler/AdaptorsPanel.m, DBModeler/AttributeCell.m,
DBModeler/ConsistencyChecker.m, DBModeler/DefaultColumnProvider.m,
DBModeler/DiagramView.m, DBModeler/EOAdditions.m, DBModeler/EntityView.m,
DBModeler/GNUmakefile, DBModeler/KVDataSource.m,
DBModeler/MainModelEditor.h, DBModeler/MainModelEditor.m,
DBModeler/ModelerAttributeEditor.m, DBModeler/ModelerEntityEditor.h,
DBModeler/ModelerEntityEditor.m,
DBModeler/ModelerTableEmbedibleEditor.h,
DBModeler/ModelerTableEmbedibleEditor.m,
DBModeler/NSView+Additions.m, DBModeler/Preferences.m,
DBModeler/SQLGenerator.m, DBModeler/Inspectors/AdvancedEntityInspector.m,
DBModeler/Inspectors/AttributeInspector.h,
DBModeler/Inspectors/AttributeInspector.m,
DBModeler/Inspectors/RelationshipInspector.h,
DBModeler/Inspectors/RelationshipInspector.m
White-space clean-up. Replaced tabs with spaces.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@26556 72102866-910b-0410-8b05-ffd578937521
2008-05-23 12:11:26 +00:00
|
|
|
return FROBKEY(DisableRelationshipCheck);
|
2006-09-05 22:18:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (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
|
Replaced tabs with spaces throughout the DBModeler sub-project.
* DBModeler/AdaptorsPanel.m, DBModeler/AttributeCell.m,
DBModeler/ConsistencyChecker.m, DBModeler/DefaultColumnProvider.m,
DBModeler/DiagramView.m, DBModeler/EOAdditions.m, DBModeler/EntityView.m,
DBModeler/GNUmakefile, DBModeler/KVDataSource.m,
DBModeler/MainModelEditor.h, DBModeler/MainModelEditor.m,
DBModeler/ModelerAttributeEditor.m, DBModeler/ModelerEntityEditor.h,
DBModeler/ModelerEntityEditor.m,
DBModeler/ModelerTableEmbedibleEditor.h,
DBModeler/ModelerTableEmbedibleEditor.m,
DBModeler/NSView+Additions.m, DBModeler/Preferences.m,
DBModeler/SQLGenerator.m, DBModeler/Inspectors/AdvancedEntityInspector.m,
DBModeler/Inspectors/AttributeInspector.h,
DBModeler/Inspectors/AttributeInspector.m,
DBModeler/Inspectors/RelationshipInspector.h,
DBModeler/Inspectors/RelationshipInspector.m
White-space clean-up. Replaced tabs with spaces.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@26556 72102866-910b-0410-8b05-ffd578937521
2008-05-23 12:11:26 +00:00
|
|
|
row:(int)rowIndex
|
2006-09-05 22:18:35 +00:00
|
|
|
{
|
|
|
|
[_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
|