summaryrefslogtreecommitdiff
path: root/cocoa
diff options
context:
space:
mode:
Diffstat (limited to 'cocoa')
-rw-r--r--cocoa/NetSurf.xcodeproj/project.pbxproj12
-rw-r--r--cocoa/ScrollableView.h29
-rw-r--r--cocoa/ScrollableView.m69
-rw-r--r--cocoa/TreeView.h31
-rw-r--r--cocoa/TreeView.m131
-rw-r--r--cocoa/res/MainMenu.xib219
6 files changed, 485 insertions, 6 deletions
diff --git a/cocoa/NetSurf.xcodeproj/project.pbxproj b/cocoa/NetSurf.xcodeproj/project.pbxproj
index e82c0dd0a..af16babf1 100644
--- a/cocoa/NetSurf.xcodeproj/project.pbxproj
+++ b/cocoa/NetSurf.xcodeproj/project.pbxproj
@@ -87,6 +87,7 @@
2612265C12D7ACB500E10F91 /* quirks.css in Resources */ = {isa = PBXBuildFile; fileRef = 2612265912D7ACB500E10F91 /* quirks.css */; };
2612266D12D7AD6800E10F91 /* adblock.css in Resources */ = {isa = PBXBuildFile; fileRef = 2612265D12D7AD6800E10F91 /* adblock.css */; };
2612269112D7AE4100E10F91 /* Messages in Resources */ = {isa = PBXBuildFile; fileRef = 2612268F12D7AE4100E10F91 /* Messages */; };
+ 2622F1D712DCD84600CD5A62 /* TreeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2622F1D612DCD84600CD5A62 /* TreeView.m */; };
265F311A12D663F50048B600 /* gui.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F311912D663F50048B600 /* gui.m */; };
265F314812D666660048B600 /* plotter.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F314712D666660048B600 /* plotter.m */; };
265F315212D667060048B600 /* history.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F315112D667060048B600 /* history.m */; };
@@ -110,6 +111,7 @@
265F321412D66CD90048B600 /* utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F321312D66CD90048B600 /* utils.m */; };
265F321F12D66D510048B600 /* font.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F321E12D66D510048B600 /* font.m */; };
26AFE63F12DDEB0A005AD082 /* NetSurf.icns in Resources */ = {isa = PBXBuildFile; fileRef = 26AFE63E12DDEB0A005AD082 /* NetSurf.icns */; };
+ 26AFE8E412DF4200005AD082 /* ScrollableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 26AFE8E312DF4200005AD082 /* ScrollableView.m */; };
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
/* End PBXBuildFile section */
@@ -281,6 +283,8 @@
2612269412D7AEA800E10F91 /* en */ = {isa = PBXFileReference; lastKnownFileType = text; name = en; path = en.lproj/Messages; sourceTree = "<group>"; };
2612269512D7AEB500E10F91 /* it */ = {isa = PBXFileReference; lastKnownFileType = text; name = it; path = it.lproj/Messages; sourceTree = "<group>"; };
2612269612D7AEBE00E10F91 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text; name = fr; path = fr.lproj/Messages; sourceTree = "<group>"; };
+ 2622F1D512DCD84600CD5A62 /* TreeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreeView.h; sourceTree = "<group>"; };
+ 2622F1D612DCD84600CD5A62 /* TreeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreeView.m; sourceTree = "<group>"; };
262711B212DDDCB800B2FA62 /* debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = debug.xcconfig; sourceTree = "<group>"; };
262711B412DDDCB800B2FA62 /* local.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = local.xcconfig; sourceTree = "<group>"; };
262711BE12DDDD1500B2FA62 /* release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = release.xcconfig; sourceTree = "<group>"; };
@@ -322,6 +326,8 @@
265F321312D66CD90048B600 /* utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = utils.m; sourceTree = "<group>"; };
265F321E12D66D510048B600 /* font.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = font.m; sourceTree = "<group>"; };
26AFE63E12DDEB0A005AD082 /* NetSurf.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = NetSurf.icns; sourceTree = "<group>"; };
+ 26AFE8E212DF4200005AD082 /* ScrollableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollableView.h; sourceTree = "<group>"; };
+ 26AFE8E312DF4200005AD082 /* ScrollableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScrollableView.m; sourceTree = "<group>"; };
8D1107320486CEB800E47090 /* NetSurf.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetSurf.app; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
@@ -595,6 +601,10 @@
26121E3E12D70A1A00E10F91 /* BrowserWindow.m */,
26121EFB12D7132100E10F91 /* BrowserView.h */,
26121EFC12D7132100E10F91 /* BrowserView.m */,
+ 2622F1D512DCD84600CD5A62 /* TreeView.h */,
+ 2622F1D612DCD84600CD5A62 /* TreeView.m */,
+ 26AFE8E212DF4200005AD082 /* ScrollableView.h */,
+ 26AFE8E312DF4200005AD082 /* ScrollableView.m */,
);
name = cocoa;
sourceTree = "<group>";
@@ -839,6 +849,8 @@
26121DD912D703F400E10F91 /* NetSurfApp.m in Sources */,
26121E3F12D70A1A00E10F91 /* BrowserWindow.m in Sources */,
26121EFD12D7132100E10F91 /* BrowserView.m in Sources */,
+ 2622F1D712DCD84600CD5A62 /* TreeView.m in Sources */,
+ 26AFE8E412DF4200005AD082 /* ScrollableView.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/cocoa/ScrollableView.h b/cocoa/ScrollableView.h
new file mode 100644
index 000000000..1850fe58d
--- /dev/null
+++ b/cocoa/ScrollableView.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf 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; version 2 of the License.
+ *
+ * NetSurf 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+
+@interface ScrollableView : NSView {
+ NSSize minimumSize;
+ NSView *observedSuperview;
+}
+
+@property (readwrite, assign, nonatomic) NSSize minimumSize;
+
+@end
diff --git a/cocoa/ScrollableView.m b/cocoa/ScrollableView.m
new file mode 100644
index 000000000..d50ce5a15
--- /dev/null
+++ b/cocoa/ScrollableView.m
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf 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; version 2 of the License.
+ *
+ * NetSurf 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#import "ScrollableView.h"
+
+@interface ScrollableView ()
+
+- (void) adjustFrame;
+- (void) frameChangeNotification: (NSNotification *) note;
+
+@end
+
+@implementation ScrollableView
+@synthesize minimumSize;
+
+- (void) setMinimumSize: (NSSize)newSize;
+{
+ minimumSize = newSize;
+ [self adjustFrame];
+}
+
+- (void) adjustFrame;
+{
+ NSSize frameSize = [[self superview] frame].size;
+ [self setFrameSize: NSMakeSize( MAX( minimumSize.width, frameSize.width ),
+ MAX( minimumSize.height, frameSize.height ) )];
+}
+
+- (void) frameChangeNotification: (NSNotification *) note;
+{
+ [self adjustFrame];
+}
+
+- (void) viewDidMoveToSuperview;
+{
+ if (observedSuperview) {
+ [[NSNotificationCenter defaultCenter] removeObserver: self
+ name: NSViewFrameDidChangeNotification
+ object: observedSuperview];
+ observedSuperview = nil;
+ }
+
+ NSView *newSuperView = [self superview];
+
+ if (nil != newSuperView) {
+ observedSuperview = newSuperView;
+ [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(frameChangeNotification:)
+ name: NSViewFrameDidChangeNotification
+ object: observedSuperview];
+ [observedSuperview setPostsFrameChangedNotifications: YES];
+ }
+}
+
+@end
diff --git a/cocoa/TreeView.h b/cocoa/TreeView.h
new file mode 100644
index 000000000..aee45bb3d
--- /dev/null
+++ b/cocoa/TreeView.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf 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; version 2 of the License.
+ *
+ * NetSurf 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+#import "ScrollableView.h"
+
+@interface TreeView : ScrollableView {
+ struct tree *treeHandle;
+
+ BOOL isDragging;
+ NSPoint dragStart;
+
+}
+
+@end
diff --git a/cocoa/TreeView.m b/cocoa/TreeView.m
new file mode 100644
index 000000000..00fb4808c
--- /dev/null
+++ b/cocoa/TreeView.m
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf 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; version 2 of the License.
+ *
+ * NetSurf 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#import "TreeView.h"
+
+#import "desktop/tree.h"
+#import "desktop/plotters.h"
+#import "desktop/history_global_core.h"
+
+#define UNIMPL() NSLog( @"Function '%s' unimplemented", __func__ )
+
+@implementation TreeView
+
+static void tree_redraw_request( int x, int y, int w, int h, void *data );
+static void tree_resized( struct tree *tree, int w, int h, void *data );
+static void tree_scroll_visible( int y, int height, void *data );
+static void tree_get_window_dimensions( int *width, int *height, void *data );
+
+static const struct treeview_table cocoa_tree_callbacks = {
+ .redraw_request = tree_redraw_request,
+ .resized = tree_resized,
+ .scroll_visible = tree_scroll_visible,
+ .get_window_dimensions = tree_get_window_dimensions
+};
+
+- (id)initWithFrame:(NSRect)frame
+{
+ if ((self = [super initWithFrame:frame]) == nil) return nil;
+
+ treeHandle = tree_create( history_global_get_tree_flags(), &cocoa_tree_callbacks, self );
+ if (NULL == treeHandle) {
+ [self release];
+ self = nil;
+ }
+ history_global_initialise( treeHandle, "" );
+ return self;
+}
+
+- (void) dealloc;
+{
+ tree_delete( treeHandle );
+
+ [super dealloc];
+}
+
+- (void)drawRect:(NSRect)dirtyRect
+{
+ tree_set_redraw( treeHandle, true );
+ tree_draw( treeHandle, 0, 0, NSMinX( dirtyRect ), NSMinY( dirtyRect ), NSWidth( dirtyRect ), NSHeight( dirtyRect ) );
+}
+
+- (BOOL) isFlipped;
+{
+ return YES;
+}
+
+- (void) mouseDown: (NSEvent *)theEvent;
+{
+ NSPoint point = [self convertPoint: [theEvent locationInWindow] fromView: nil];
+ dragStart = point;
+
+ tree_mouse_action( treeHandle, BROWSER_MOUSE_PRESS_1, point.x, point.y );
+}
+
+- (void) mouseUp: (NSEvent *)theEvent;
+{
+ NSPoint point = [self convertPoint: [theEvent locationInWindow] fromView: nil];
+ if (isDragging) {
+ tree_drag_end( treeHandle, BROWSER_MOUSE_DRAG_1, dragStart.x, dragStart.y, point.x, point.y );
+ isDragging = NO;
+ } else {
+ tree_mouse_action( treeHandle, BROWSER_MOUSE_CLICK_1, point.x, point.y );
+ }
+}
+
+
+#define squared(x) ((x)*(x))
+#define MinDragDistance (5.0)
+
+- (void) mouseDragged: (NSEvent *)theEvent;
+{
+ NSPoint point = [self convertPoint: [theEvent locationInWindow] fromView: nil];
+
+ if (!isDragging) {
+ const CGFloat distance = squared( dragStart.x - point.x ) + squared( dragStart.y - point.y );
+ if (distance >= squared( MinDragDistance)) isDragging = YES;
+ }
+
+ if (isDragging) {
+ tree_mouse_action( treeHandle, BROWSER_MOUSE_DRAG_1, point.x, point.y );
+ }
+}
+
+static void tree_redraw_request( int x, int y, int w, int h, void *data )
+{
+ [(TreeView *)data setNeedsDisplayInRect: NSMakeRect( x, y, w, h )];
+}
+
+static void tree_resized( struct tree *tree, int w, int h, void *data )
+{
+ [(TreeView *)data setMinimumSize: NSMakeSize( w, h )];
+}
+
+static void tree_scroll_visible( int y, int height, void *data )
+{
+ [(TreeView *)data scrollPoint: NSMakePoint( 0, y )];
+}
+
+static void tree_get_window_dimensions( int *width, int *height, void *data )
+{
+ NSSize size = [(TreeView *)data frame].size;
+ *width = size.width;
+ *height = size.height;
+}
+
+@end
diff --git a/cocoa/res/MainMenu.xib b/cocoa/res/MainMenu.xib
index 01b7d134b..fae4184cc 100644
--- a/cocoa/res/MainMenu.xib
+++ b/cocoa/res/MainMenu.xib
@@ -12,7 +12,8 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="106"/>
+ <integer value="24"/>
+ <integer value="811"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -527,6 +528,24 @@
<reference key="NSOnImage" ref="756751024"/>
<reference key="NSMixedImage" ref="908425081"/>
</object>
+ <object class="NSMenuItem" id="971013910">
+ <reference key="NSMenu" ref="835318025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="756751024"/>
+ <reference key="NSMixedImage" ref="908425081"/>
+ </object>
+ <object class="NSMenuItem" id="532573582">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">History</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="756751024"/>
+ <reference key="NSMixedImage" ref="908425081"/>
+ </object>
<object class="NSMenuItem" id="299356726">
<reference key="NSMenu" ref="835318025"/>
<bool key="NSIsDisabled">YES</bool>
@@ -577,6 +596,88 @@
</object>
<string key="NSName">_NSMainMenu</string>
</object>
+ <object class="NSWindowTemplate" id="346681284">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{196, 123}, {300, 387}}</string>
+ <int key="NSWTFlags">1685585920</int>
+ <string key="NSWindowTitle">History</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <object class="NSView" key="NSWindowView" id="75583718">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSScrollView" id="429678852">
+ <reference key="NSNextResponder" ref="75583718"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="862897293">
+ <reference key="NSNextResponder" ref="429678852"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="363409241">
+ <reference key="NSNextResponder" ref="862897293"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrameSize">{300, 387}</string>
+ <reference key="NSSuperview" ref="862897293"/>
+ <string key="NSClassName">TreeView</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 1}, {300, 387}}</string>
+ <reference key="NSSuperview" ref="429678852"/>
+ <reference key="NSNextKeyView" ref="363409241"/>
+ <reference key="NSDocView" ref="363409241"/>
+ <object class="NSColor" key="NSBGColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ </object>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="1030123989">
+ <reference key="NSNextResponder" ref="429678852"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{319, 1}, {15, 371}}</string>
+ <reference key="NSSuperview" ref="429678852"/>
+ <reference key="NSTarget" ref="429678852"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">0.99741602067183466</double>
+ </object>
+ <object class="NSScroller" id="523968414">
+ <reference key="NSNextResponder" ref="429678852"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{1, 373}, {500, 15}}</string>
+ <reference key="NSSuperview" ref="429678852"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="429678852"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">1</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{-1, -1}, {302, 389}}</string>
+ <reference key="NSSuperview" ref="75583718"/>
+ <reference key="NSNextKeyView" ref="862897293"/>
+ <int key="NSsFlags">562</int>
+ <reference key="NSVScroller" ref="1030123989"/>
+ <reference key="NSHScroller" ref="523968414"/>
+ <reference key="NSContentView" ref="862897293"/>
+ </object>
+ </object>
+ <string key="NSFrameSize">{300, 387}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ </object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
@@ -829,6 +930,14 @@
</object>
<int key="connectionID">775</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeKeyAndOrderFront:</string>
+ <reference key="source" ref="346681284"/>
+ <reference key="destination" ref="532573582"/>
+ </object>
+ <int key="connectionID">819</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -1078,6 +1187,8 @@
<reference ref="625202149"/>
<reference ref="575023229"/>
<reference ref="1011231497"/>
+ <reference ref="971013910"/>
+ <reference ref="532573582"/>
</object>
<reference key="parent" ref="713487014"/>
</object>
@@ -1284,6 +1395,60 @@
<reference key="object" ref="548069040"/>
<reference key="parent" ref="930654435"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">811</int>
+ <reference key="object" ref="346681284"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="75583718"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">812</int>
+ <reference key="object" ref="75583718"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="429678852"/>
+ </object>
+ <reference key="parent" ref="346681284"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">813</int>
+ <reference key="object" ref="429678852"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1030123989"/>
+ <reference ref="523968414"/>
+ <reference ref="363409241"/>
+ </object>
+ <reference key="parent" ref="75583718"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">814</int>
+ <reference key="object" ref="1030123989"/>
+ <reference key="parent" ref="429678852"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">815</int>
+ <reference key="object" ref="523968414"/>
+ <reference key="parent" ref="429678852"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">816</int>
+ <reference key="object" ref="363409241"/>
+ <reference key="parent" ref="429678852"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">817</int>
+ <reference key="object" ref="971013910"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">818</int>
+ <reference key="object" ref="532573582"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -1401,6 +1566,17 @@
<string>81.IBPluginDependency</string>
<string>81.ImportedFromIB2</string>
<string>81.editorWindowContentRectSynchronizationRect</string>
+ <string>811.IBEditorWindowLastContentRect</string>
+ <string>811.IBPluginDependency</string>
+ <string>811.IBWindowTemplateEditedContentRect</string>
+ <string>811.NSWindowTemplate.visibleAtLaunch</string>
+ <string>812.IBPluginDependency</string>
+ <string>813.IBPluginDependency</string>
+ <string>814.IBPluginDependency</string>
+ <string>815.IBPluginDependency</string>
+ <string>816.IBPluginDependency</string>
+ <string>817.IBPluginDependency</string>
+ <string>818.IBPluginDependency</string>
<string>82.IBPluginDependency</string>
<string>82.ImportedFromIB2</string>
<string>83.IBPluginDependency</string>
@@ -1413,7 +1589,7 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{533, 633}, {157, 23}}</string>
+ <string>{{881, 774}, {157, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{596, 852}, {216, 23}}</string>
@@ -1451,11 +1627,11 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{462, 583}, {194, 73}}</string>
+ <string>{{810, 694}, {194, 103}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{525, 802}, {197, 73}}</string>
- <string>{{242, 656}, {352, 20}}</string>
+ <string>{{590, 797}, {352, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{74, 862}</string>
@@ -1521,6 +1697,17 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{323, 672}, {199, 203}}</string>
+ <string>{{331, 320}, {300, 387}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{331, 320}, {300, 387}}</string>
+ <boolean value="NO"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1545,9 +1732,29 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">810</int>
+ <int key="maxID">819</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">ScrollableView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">ScrollableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">TreeView</string>
+ <string key="superclassName">ScrollableView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">TreeView.h</string>
+ </object>
+ </object>
+ </object>
</object>
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">