aboutsummaryrefslogtreecommitdiffstats
path: root/Frameworks/BWToolkitFramework.framework/BWSelectableToolbarIntegration.m
diff options
context:
space:
mode:
Diffstat (limited to 'Frameworks/BWToolkitFramework.framework/BWSelectableToolbarIntegration.m')
-rw-r--r--Frameworks/BWToolkitFramework.framework/BWSelectableToolbarIntegration.m104
1 files changed, 104 insertions, 0 deletions
diff --git a/Frameworks/BWToolkitFramework.framework/BWSelectableToolbarIntegration.m b/Frameworks/BWToolkitFramework.framework/BWSelectableToolbarIntegration.m
new file mode 100644
index 00000000..3565e9f7
--- /dev/null
+++ b/Frameworks/BWToolkitFramework.framework/BWSelectableToolbarIntegration.m
@@ -0,0 +1,104 @@
+//
+// BWSelectableToolbarIntegration.m
+// BWToolkit
+//
+// Created by Brandon Walkin (www.brandonwalkin.com)
+// All code is provided under the New BSD license.
+//
+
+#import <InterfaceBuilderKit/InterfaceBuilderKit.h>
+#import "BWSelectableToolbar.h"
+#import "BWSelectableToolbarInspector.h"
+#import "BWSelectableToolbarHelper.h"
+
+@interface NSToolbar (BWSTIntPrivate)
+- (void)ibDocument:(id)fp8 willStartSimulatorWithContext:(id)fp12;
+@end
+
+@interface BWSelectableToolbar (BWSTIntPrivate)
+- (id)parentOfObject:(id)anObj;
+- (void)setDocumentToolbar:(BWSelectableToolbar *)obj;
+@end
+
+@interface IBDocument (BWSTIntPrivate)
++ (id)currentIBFrameworkVersion;
+@end
+
+@implementation BWSelectableToolbar ( BWSelectableToolbarIntegration )
+
+- (void)ibPopulateKeyPaths:(NSMutableDictionary *)keyPaths {
+ [super ibPopulateKeyPaths:keyPaths];
+ [[keyPaths objectForKey:IBAttributeKeyPaths] addObjectsFromArray:[NSArray arrayWithObjects:@"isPreferencesToolbar",nil]];
+}
+
+- (void)ibPopulateAttributeInspectorClasses:(NSMutableArray *)classes {
+ [super ibPopulateAttributeInspectorClasses:classes];
+ [classes addObject:[BWSelectableToolbarInspector class]];
+}
+
+// Display a modal warning just before the simulator is launched - this incompatibility will hopefully be fixed in a future version of this plugin
+- (void)ibDocument:(id)fp8 willStartSimulatorWithContext:(id)fp12
+{
+ [super ibDocument:fp8 willStartSimulatorWithContext:fp12];
+
+ // Simulating seems to work fine in IB 3.1.1 (672) so we won't show the alert if the user is running that version
+ if ([[IBDocument currentIBFrameworkVersion] intValue] != 672)
+ {
+ NSAlert *alert = [NSAlert alertWithMessageText:@"Toolbar not compatible with simulator" defaultButton:@"OK" alternateButton:nil otherButton:nil informativeTextWithFormat:@"The selectable toolbar is not yet compatible with the IB simulator. Quit the simulator and revert to the last saved document. Sorry for the inconvenience."];
+ [alert runModal];
+ }
+}
+
+- (void)ibDidAddToDesignableDocument:(IBDocument *)document
+{
+ [super ibDidAddToDesignableDocument:document];
+
+ [self setDocumentToolbar:self];
+
+ helper = [[BWSelectableToolbarHelper alloc] init];
+ [document addObject:helper toParent:[self parentOfObject:self]];
+}
+
+- (void)addObject:(id)object toParent:(id)parent
+{
+ IBDocument *document = [IBDocument documentForObject:parent];
+
+ [document addObject:object toParent:parent];
+}
+
+- (void)moveObject:(id)object toParent:(id)parent
+{
+ IBDocument *document = [IBDocument documentForObject:object];
+
+ [document moveObject:object toParent:parent];
+}
+
+- (void)removeObject:(id)object
+{
+ IBDocument *document = [IBDocument documentForObject:object];
+
+ [document removeObject:object];
+}
+
+- (NSArray *)objectsforDocumentObject:(id)anObj
+{
+ IBDocument *document = [IBDocument documentForObject:anObj];
+
+ return [[document objects] retain];
+}
+
+- (id)parentOfObject:(id)anObj
+{
+ IBDocument *document = [IBDocument documentForObject:anObj];
+
+ return [[document parentOfObject:anObj] retain];
+}
+
+- (NSArray *)childrenOfObject:(id)object
+{
+ IBDocument *document = [IBDocument documentForObject:object];
+
+ return [document childrenOfObject:object];
+}
+
+@end