[dasher] MacOSX: input filter module settings! (Click options / double-click list)
- From: Patrick Welche <pwelche src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dasher] MacOSX: input filter module settings! (Click options / double-click list)
- Date: Tue, 18 Jan 2011 17:16:30 +0000 (UTC)
commit b791349e0b3ba1c297f9dfd1ee7959090c32ee7c
Author: Alan Lawrence <acl33 inf phy cam ac uk>
Date: Wed Nov 17 14:26:19 2010 +0000
MacOSX: input filter module settings! (Click options / double-click list)
Also try harder to make input filter list non-editable.
Src/MacOSX/Dasher.xcodeproj/project.pbxproj | 8 +
.../English.lproj/Preferences.nib/designable.nib | 186 ++++++++++++++++++--
.../English.lproj/Preferences.nib/keyedobjects.nib | Bin 50726 -> 51984 bytes
Src/MacOSX/ModuleSettingsController.h | 24 +++
Src/MacOSX/ModuleSettingsController.mm | 144 +++++++++++++++
Src/MacOSX/PreferencesController.h | 1 +
Src/MacOSX/PreferencesController.mm | 11 ++
7 files changed, 359 insertions(+), 15 deletions(-)
---
diff --git a/Src/MacOSX/Dasher.xcodeproj/project.pbxproj b/Src/MacOSX/Dasher.xcodeproj/project.pbxproj
index e09fb7f..2c084b6 100755
--- a/Src/MacOSX/Dasher.xcodeproj/project.pbxproj
+++ b/Src/MacOSX/Dasher.xcodeproj/project.pbxproj
@@ -349,6 +349,8 @@
3306E1F80FFE6CAD0017324C /* Trainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3306E1F60FFE6CAD0017324C /* Trainer.h */; };
3306E33D0FFFB9880017324C /* MandarinAlphMgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3306E33B0FFFB9880017324C /* MandarinAlphMgr.cpp */; };
3306E33E0FFFB9880017324C /* MandarinAlphMgr.h in Headers */ = {isa = PBXBuildFile; fileRef = 3306E33C0FFFB9880017324C /* MandarinAlphMgr.h */; };
+ 330B91621292FE520022831C /* ModuleSettingsController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 330B91611292FE510022831C /* ModuleSettingsController.mm */; };
+ 330B91641292FE700022831C /* ModuleSettingsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 330B91631292FE700022831C /* ModuleSettingsController.h */; };
33135351102C6D8E00E28220 /* AlternatingDirectMode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33135349102C6D8E00E28220 /* AlternatingDirectMode.cpp */; };
33135352102C6D8E00E28220 /* AlternatingDirectMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3313534A102C6D8E00E28220 /* AlternatingDirectMode.h */; };
33135353102C6D8E00E28220 /* CompassMode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3313534B102C6D8E00E28220 /* CompassMode.cpp */; };
@@ -764,6 +766,8 @@
3306E1F60FFE6CAD0017324C /* Trainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Trainer.h; sourceTree = "<group>"; };
3306E33B0FFFB9880017324C /* MandarinAlphMgr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MandarinAlphMgr.cpp; sourceTree = "<group>"; };
3306E33C0FFFB9880017324C /* MandarinAlphMgr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MandarinAlphMgr.h; sourceTree = "<group>"; };
+ 330B91611292FE510022831C /* ModuleSettingsController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ModuleSettingsController.mm; sourceTree = "<group>"; };
+ 330B91631292FE700022831C /* ModuleSettingsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModuleSettingsController.h; sourceTree = "<group>"; };
33135349102C6D8E00E28220 /* AlternatingDirectMode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AlternatingDirectMode.cpp; sourceTree = "<group>"; };
3313534A102C6D8E00E28220 /* AlternatingDirectMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlternatingDirectMode.h; sourceTree = "<group>"; };
3313534B102C6D8E00E28220 /* CompassMode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompassMode.cpp; sourceTree = "<group>"; };
@@ -853,6 +857,8 @@
199DCCD70450B94C0000000A /* DasherViewOpenGL.mm */,
196874000C2BDC2E00D63879 /* AlphabetLetter.h */,
196874010C2BDC2E00D63879 /* AlphabetLetter.mm */,
+ 330B91631292FE700022831C /* ModuleSettingsController.h */,
+ 330B91611292FE510022831C /* ModuleSettingsController.mm */,
196874040C2BDC2E00D63879 /* GLUtils.h */,
196874050C2BDC2E00D63879 /* GLUtils.mm */,
19D4423C04546C410000000A /* PreferencesController.h */,
@@ -1494,6 +1500,7 @@
339055E81195FBD0001BE240 /* Queue.h in Headers */,
33008360120CB7F900C41FAA /* ConvertingAlphMgr.h in Headers */,
339794D5120F2A9600CEA168 /* AlphInfo.h in Headers */,
+ 330B91641292FE700022831C /* ModuleSettingsController.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1842,6 +1849,7 @@
339055E91195FBD0001BE240 /* Queue.m in Sources */,
33008361120CB7F900C41FAA /* ConvertingAlphMgr.cpp in Sources */,
339794D4120F2A9600CEA168 /* AlphInfo.cpp in Sources */,
+ 330B91621292FE520022831C /* ModuleSettingsController.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/Src/MacOSX/English.lproj/Preferences.nib/designable.nib b/Src/MacOSX/English.lproj/Preferences.nib/designable.nib
index 33a74e6..ebf8757 100644
--- a/Src/MacOSX/English.lproj/Preferences.nib/designable.nib
+++ b/Src/MacOSX/English.lproj/Preferences.nib/designable.nib
@@ -2,17 +2,17 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10D575</string>
- <string key="IBDocument.InterfaceBuilderVersion">762</string>
+ <string key="IBDocument.SystemVersion">10F569</string>
+ <string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.AppKitVersion">1038.29</string>
- <string key="IBDocument.HIToolboxVersion">460.00</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">762</string>
+ <string key="NS.object.0">788</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="42"/>
+ <integer value="14"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -542,7 +542,7 @@
</object>
<object class="NSTabViewItem" id="213339562">
<object class="NSView" key="NSView" id="507754464">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder" ref="703582030"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -870,7 +870,7 @@
<reference key="NSTextColor" ref="1004625332"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="84708913">
- <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags">67239488</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="387582086"/>
<reference key="NSControlView" ref="827531153"/>
@@ -879,7 +879,6 @@
</object>
<int key="NSResizingMask">3</int>
<bool key="NSIsResizeable">YES</bool>
- <bool key="NSIsEditable">YES</bool>
<reference key="NSTableView" ref="827531153"/>
</object>
</object>
@@ -984,6 +983,7 @@
</object>
</object>
<string key="NSFrame">{{10, 33}, {565, 378}}</string>
+ <reference key="NSSuperview" ref="703582030"/>
</object>
<string key="NSLabel">Control</string>
<reference key="NSColor" ref="409290091"/>
@@ -1629,7 +1629,7 @@ AAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIENvbXB1dGVyLCBJbmMuLCAyMDA1AAAAAA</
</object>
<object class="NSTabViewItem" id="430082267">
<object class="NSView" key="NSView" id="290018728">
- <reference key="NSNextResponder" ref="703582030"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -1789,21 +1789,20 @@ AAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIENvbXB1dGVyLCBJbmMuLCAyMDA1AAAAAA</
</object>
</object>
<string key="NSFrame">{{10, 33}, {565, 378}}</string>
- <reference key="NSSuperview" ref="703582030"/>
</object>
<string key="NSLabel">Application</string>
<reference key="NSColor" ref="409290091"/>
<reference key="NSTabView" ref="703582030"/>
</object>
</object>
- <reference key="NSSelectedTabViewItem" ref="430082267"/>
+ <reference key="NSSelectedTabViewItem" ref="213339562"/>
<reference key="NSFont" ref="387582086"/>
<int key="NSTvFlags">0</int>
<bool key="NSAllowTruncatedLabels">YES</bool>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="290018728"/>
+ <reference ref="507754464"/>
</object>
</object>
</object>
@@ -2960,6 +2959,128 @@ AAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIENvbXB1dGVyLCBJbmMuLCAyMDA1AAAAAA</
</object>
<int key="connectionID">835</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">doubleClickArgument: selectedObjects</string>
+ <reference key="source" ref="827531153"/>
+ <reference key="destination" ref="335269801"/>
+ <object class="NSNibBindingConnector" key="connector" id="250500462">
+ <reference key="NSSource" ref="827531153"/>
+ <reference key="NSDestination" ref="335269801"/>
+ <string key="NSLabel">doubleClickArgument: selectedObjects</string>
+ <string key="NSBinding">doubleClickArgument</string>
+ <string key="NSKeyPath">selectedObjects</string>
+ <object class="NSDictionary" key="NSOptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSConditionallySetsEnabled</string>
+ <string>NSInvokesSeparatelyWithArrayObjects</string>
+ <string>NSSelectorName</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <boolean value="NO"/>
+ <boolean value="YES"/>
+ <string>inputFilterSettings:</string>
+ </object>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">864</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">doubleClickTarget: self</string>
+ <reference key="source" ref="827531153"/>
+ <reference key="destination" ref="406668079"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="827531153"/>
+ <reference key="NSDestination" ref="406668079"/>
+ <string key="NSLabel">doubleClickTarget: self</string>
+ <string key="NSBinding">doubleClickTarget</string>
+ <string key="NSKeyPath">self</string>
+ <object class="NSDictionary" key="NSOptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSConditionallySetsEnabled</string>
+ <string>NSSelectorName</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <boolean value="NO"/>
+ <string>inputFilterSettings:</string>
+ </object>
+ </object>
+ <reference key="NSPreviousConnector" ref="250500462"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">865</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">argument: selectedObjects</string>
+ <reference key="source" ref="643262560"/>
+ <reference key="destination" ref="335269801"/>
+ <object class="NSNibBindingConnector" key="connector" id="891823427">
+ <reference key="NSSource" ref="643262560"/>
+ <reference key="NSDestination" ref="335269801"/>
+ <string key="NSLabel">argument: selectedObjects</string>
+ <string key="NSBinding">argument</string>
+ <string key="NSKeyPath">selectedObjects</string>
+ <object class="NSDictionary" key="NSOptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSConditionallySetsEnabled</string>
+ <string>NSInvokesSeparatelyWithArrayObjects</string>
+ <string>NSSelectorName</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <boolean value="NO"/>
+ <boolean value="YES"/>
+ <string>inputFilterSettings:</string>
+ </object>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">866</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">target: self</string>
+ <reference key="source" ref="643262560"/>
+ <reference key="destination" ref="406668079"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="643262560"/>
+ <reference key="NSDestination" ref="406668079"/>
+ <string key="NSLabel">target: self</string>
+ <string key="NSBinding">target</string>
+ <string key="NSKeyPath">self</string>
+ <object class="NSDictionary" key="NSOptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSConditionallySetsEnabled</string>
+ <string>NSSelectorName</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <boolean value="NO"/>
+ <string>inputFilterSettings:</string>
+ </object>
+ </object>
+ <reference key="NSPreviousConnector" ref="891823427"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">867</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -4451,7 +4572,7 @@ AAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIENvbXB1dGVyLCBJbmMuLCAyMDA1AAAAAA</
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">835</int>
+ <int key="maxID">867</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -4468,13 +4589,48 @@ AAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIENvbXB1dGVyLCBJbmMuLCAyMDA1AAAAAA</
<string key="className">PreferencesController</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">makeKeyAndOrderFront:</string>
- <string key="NS.object.0">id</string>
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>inputFilterSettings:</string>
+ <string>makeKeyAndOrderFront:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>inputFilterSettings:</string>
+ <string>makeKeyAndOrderFront:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">inputFilterSettings:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">makeKeyAndOrderFront:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
</object>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">panel</string>
<string key="NS.object.0">NSPanel</string>
</object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">panel</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">panel</string>
+ <string key="candidateClassName">NSPanel</string>
+ </object>
+ </object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">PreferencesController.h</string>
diff --git a/Src/MacOSX/English.lproj/Preferences.nib/keyedobjects.nib b/Src/MacOSX/English.lproj/Preferences.nib/keyedobjects.nib
index f51a3c0..5e15696 100644
Binary files a/Src/MacOSX/English.lproj/Preferences.nib/keyedobjects.nib and b/Src/MacOSX/English.lproj/Preferences.nib/keyedobjects.nib differ
diff --git a/Src/MacOSX/ModuleSettingsController.h b/Src/MacOSX/ModuleSettingsController.h
new file mode 100644
index 0000000..46177a7
--- /dev/null
+++ b/Src/MacOSX/ModuleSettingsController.h
@@ -0,0 +1,24 @@
+//
+// ModuleSettingsController.h
+// Dasher
+//
+// Created by Alan Lawrence on 10/02/2010.
+// Copyright 2010 Cavendish Laboratory. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "COSXDasherControl.h"
+
+ interface ModuleSettingsController : NSWindowController {
+ CDasherInterfaceBase *intf;
+ SModuleSettings *settings;
+ int count;
+}
+
+///Create a parameters controller whose window has the specified title and allows to adjust the provided settings.
+-(id)initWithTitle:(NSString *)title Interface:(CDasherInterfaceBase *)intf Settings:(SModuleSettings *)settings Count:(int)count;
+
+///Show the window modally. (blocks until window dismissed)
+-(void)showModal;
+
+ end
diff --git a/Src/MacOSX/ModuleSettingsController.mm b/Src/MacOSX/ModuleSettingsController.mm
new file mode 100644
index 0000000..03f6cc6
--- /dev/null
+++ b/Src/MacOSX/ModuleSettingsController.mm
@@ -0,0 +1,144 @@
+//
+// ModuleSettingsController.mm
+// Dasher
+//
+// Created by Alan Lawrence on 10/02/2010.
+// Copyright 2010 Cavendish Laboratory. All rights reserved.
+//
+
+#import "ModuleSettingsController.h"
+#import "DasherUtil.h"
+
+using namespace Dasher;
+
+//private methods we actually need to call directly
+ interface ModuleSettingsController ()
+-(void)updateBoxTitle:(NSSlider *)slider;
+ end
+
+ implementation ModuleSettingsController
+
+-(id)initWithTitle:(NSString *)title Interface:(CDasherInterfaceBase *)_intf Settings:(SModuleSettings *)_settings Count:(int)_count {
+ int height=0;
+ for (int i=0; i<_count; i++)
+ if (_settings[i].iType == T_BOOL) height+=25;
+ else if (_settings[i].iType == T_LONG) height+=57;
+
+ NSWindow *window = [[[NSPanel alloc] initWithContentRect:NSMakeRect(200.0f, 100.0f, 400.0f, height)
+ styleMask:( NSClosableWindowMask | NSTitledWindowMask)
+ backing:NSBackingStoreBuffered defer:YES] autorelease];
+ if (self = [super initWithWindow:window]) {
+ settings = _settings;
+ count = _count;
+ intf=_intf;
+ [window setTitle:title];
+ NSUserDefaultsController *udc = [NSUserDefaultsController sharedUserDefaultsController];
+ for (int i=0, y=0; i<_count; i++) {
+ id ctrl; //either an NSButton, for bool parameters, or an NSSlider, for long params.
+ if (settings[i].iType == T_BOOL) {
+ NSButton *b = [[[NSButton alloc] initWithFrame:NSMakeRect(5.0, y+5, 390.0, 15.0)] autorelease];
+ [b setButtonType:NSSwitchButton];
+ [b setTitle:NSStringFromStdString(settings[i].szDescription)];
+ [[window contentView] addSubview:b];
+ [b setState:(intf->GetBoolParameter(settings[i].iParameter) ? NSOnState : NSOffState)];
+ [b setTag:settings[i].iParameter];
+ [b setTarget:self];
+ [b setAction:@selector(boolParamChanged:)];
+ ctrl = b;
+ y += 25;
+ } else if (settings[i].iType == T_LONG) {
+ NSBox *box = [[[NSBox alloc] initWithFrame:NSMakeRect(5.0, y+5, 390.0, 50.0)] autorelease];
+ //NSRect r=[[box contentView] bounds];
+ NSSlider *slider = [[[NSSlider alloc] initWithFrame:NSMakeRect(5.0, 2.0, 380.0, 20.0)] autorelease];
+ [slider setTag:i];
+ [slider setMinValue:settings[i].iMin]; [slider setMaxValue:settings[i].iMax];
+ //[slider setNumberOfTickMarks:(settings[i].iMax-settings[i].iMin)/settings[i].iDivisor+1];
+ //[slider setAllowsTickMarkValuesOnly:YES];
+ [slider setIntegerValue:intf->GetLongParameter(settings[i].iParameter)];
+ [slider setTarget:self];
+ [slider setAction:@selector(longParamChanged:)];
+ [[box contentView] addSubview:slider];
+ [self updateBoxTitle:slider];
+ [[window contentView] addSubview:box];
+ ctrl = slider;
+ y += 57;
+ }
+ NSString *paramName = NSStringFromStdString(intf->GetSettingsStore()->GetParameterName(settings[i].iParameter));
+ [udc addObserver:self forKeyPath:[NSString stringWithFormat:@"values.%@", paramName] options:0 context:ctrl];
+ }
+ } //else, window was autoreleased.
+ return self;
+}
+
+-(void)showModal {
+ NSWindow *window = [self window];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowWillClose:) name:NSWindowWillCloseNotification object:window];
+ [[NSApplication sharedApplication] runModalForWindow:window];
+}
+
+-(void)windowWillClose:(NSNotification *)notification {
+ //This gets invoked only when we've registered with the NSNotificationCenter,
+ // which we do only when we're about to show the window modally.
+ [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowWillCloseNotification object:[self window]];
+ NSUserDefaultsController *udc = [NSUserDefaultsController sharedUserDefaultsController];
+ for (int i=0; i<count; i++) {
+ NSString *paramName = NSStringFromStdString(intf->GetSettingsStore()->GetParameterName(settings[i].iParameter));
+ [udc removeObserver:self forKeyPath:[NSString stringWithFormat:@"values.%@",paramName]];
+ }
+ [[NSApplication sharedApplication] stopModal];
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
+ id ctx = (id)context;
+ if ([ctx isKindOfClass:[NSButton class]]) {
+ //boolean param
+ NSButton *btn = (NSButton *)ctx;
+ int iParameter = btn.tag;
+ [btn setState:(intf->GetBoolParameter(iParameter) ? NSOnState : NSOffState)];
+ } else if ([ctx isKindOfClass:[NSSlider class]]) {
+ //long param
+ NSSlider *slider = (NSSlider *)ctx;
+ int iParameter=settings[slider.tag].iParameter;
+ [slider setIntegerValue:intf->GetLongParameter(iParameter)];
+ [self updateBoxTitle:slider];
+ } else DASHER_ASSERT(false);
+}
+
+-(void)boolParamChanged:(id)nsbutton {
+ NSButton *b = (NSButton *)nsbutton;
+ intf->SetBoolParameter(b.tag, b.state==NSOnState);
+}
+
+-(void)longParamChanged:(id)nsslider {
+ NSSlider *slider = (NSSlider *)nsslider;
+ long val = [slider integerValue];
+ SModuleSettings *setting = &settings[slider.tag];
+ if (val != intf->GetLongParameter(setting->iParameter)) {
+ intf->SetLongParameter(setting->iParameter, val);
+ [self updateBoxTitle:slider];
+ }
+}
+
+-(void)updateBoxTitle:(NSSlider *)slider {
+ NSBox *box;
+ for (NSView *s = slider; ;) {
+ s = [s superview];
+ if ([s isKindOfClass:[NSBox class]]) {
+ box = (NSBox *)s;
+ break;
+ }
+ }
+ SModuleSettings *setting = &settings[slider.tag];
+
+ int iPlaces=0, iDivisor(setting->iDivisor);
+ while (iDivisor > 1) {
+ iPlaces++;
+ iDivisor/=10;
+ }
+ NSString *format =[@"%@: %." stringByAppendingFormat:@"%df",iPlaces];
+ box.title = [NSString stringWithFormat:format,NSStringFromStdString(setting->szDescription),(intf->GetLongParameter(setting->iParameter) / (float)setting->iDivisor)];
+}
+
+
+
+ end
diff --git a/Src/MacOSX/PreferencesController.h b/Src/MacOSX/PreferencesController.h
index 9752344..fe08719 100644
--- a/Src/MacOSX/PreferencesController.h
+++ b/Src/MacOSX/PreferencesController.h
@@ -27,6 +27,7 @@
+ (id)preferencesController;
- (id)init;
- (void)makeKeyAndOrderFront:(id)sender;
+-(void)inputFilterSettings:(id)sender;
//- (void)displayFontPanel;
//- (IBAction)changeFont:(id)sender;
//- (void)changeDasherFont:(id)sender;
diff --git a/Src/MacOSX/PreferencesController.mm b/Src/MacOSX/PreferencesController.mm
index f9e605d..f7568e4 100644
--- a/Src/MacOSX/PreferencesController.mm
+++ b/Src/MacOSX/PreferencesController.mm
@@ -7,6 +7,7 @@
//
#import "PreferencesController.h"
+#import "ModuleSettingsController.h"
#import "DasherApp.h"
#import "DasherUtil.h"
@@ -79,6 +80,16 @@ static PreferencesController *preferencesController = nil;
[panel makeKeyAndOrderFront:self];
}
+-(void)inputFilterSettings:(NSString *)selectedObject {
+ SModuleSettings *pSettings; int iCount;
+ COSXDasherControl *intf = [dasherApp aquaDasherControl];
+ CDasherModule *inputFilter(intf->GetModuleByName(StdStringFromNSString(selectedObject)));
+ if (inputFilter && inputFilter->GetSettings(&pSettings, &iCount)) {
+ [[[[ModuleSettingsController alloc] initWithTitle:NSStringFromStdString(inputFilter->GetName()) Interface:intf Settings:pSettings Count:iCount] autorelease] showModal];
+ }
+
+}
+
- (NSArray *)permittedValuesForAlphabetID {
return [dasherApp permittedValuesForParameter:SP_ALPHABET_ID];
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]