Need to work on more.
}
- pre.dencco-script {
+ pre.dennco-script {
border: 1px solid gray;
background-color: #f0f0cc;
margin-left: 2em;
</style>
</head>
<body>
- <H1>DENCCO Project. Sample</H1>
+ <H1>dennco Project. Sample</H1>
<h2>Cell Code Class Definitions</h2>
- <a name="SampleScript1" class="dennco-classdef">
+ <a name='SampleScript1' class='dennco-classdef'>
<div class="style-classdef">
<dl>
<dt>Code class:</dt>
<dd>SampleScript1</dd>
<dt>API TYPE:</dt>
- <dd class="dencco-api">TKJSBasicCell</dd>
+ <dd class="dennco-api">TKJSBasicCell</dd>
</dl>
- <pre class="dencco-script">
+ <pre class="dennco-script">
function doTick(time)
{
</pre>
</div>
</a>
- <a name="SampleScript2" class="dencco-classdef">
+ <a name="SampleScript2" class="dennco-classdef">
<div class="style-classdef">
<dl>
- <dt>Code class:</dt>
+ <dt>Code class2:</dt>
<dd>SampleScript2</dd>
- <dt>API TYPE:</dt>
- <dd class="dencco-api">TKJSBasicCell</dd>
+ <dt>API TYPE2:</dt>
+ <dd class="dennco-api">TKJSBasicCell</dd>
</dl>
- <pre class="dencco-script">
+ <pre class="dennco-script">
var positiveInputs;
var negativeInputs;
<h2>Cells (Neurons)</h2>
- <a name="cell1-1" class="dencco-cell">
+ <a name="cell1-1" class="dennco-cell">
<div class="style-cell">
<dl>
<dt>Cell Name:</dt>
<dd>cell1-1</dd>
<dt>Code class:</dt>
- <dd><a href="#SampleScript1" class="dencco-script">SampleScript1</a></dd>
+ <dd><a href="#SampleScript1" class="dennco-script">SampleScript1</a></dd>
<dt>Init Script:</dt>
<dd>
- <pre class="dencco-script">
+ <pre class="dennco-script">
// init code here
</pre>
</div>
</a>
- <a name="cell1-2" class="dencco-cell">
+ <a name="cell1-2" class="dennco-cell">
<div class="style-cell">
Cell name : cell1-2 </br>
- Code class : <a href="#SampleScript1" class="dencco-script">SampleScript1</a>
- <pre class="dencco-script">
+ Code class : <a href="#SampleScript1" class="dennco-script">SampleScript1</a>
+ <pre class="dennco-script">
// init code here
</pre>
</div>
</a>
- <a name="cell1-3" class="dencco-cell">
+ <a name="cell1-3" class="dennco-cell">
<div class="style-cell">
Cell name : cell1-3 </br>
- Code class : <a href="#SampleScript1" class="dencco-script">SampleScript1</a>
- <pre class="dencco-script">
+ Code class : <a href="#SampleScript1" class="dennco-script">SampleScript1</a>
+ <pre class="dennco-script">
// init code here
</pre>
</div>
</a>
- <a name="cell2-1" class="dencco-cell">
+ <a name="cell2-1" class="dennco-cell">
<div class="style-cell">
Cell name : cell2-1 </br>
- Code class : <a href="#SampleScript2" class="dencco-script">SampleScript2</a>
- <pre class="dencco-script">
+ Code class : <a href="#SampleScript2" class="dennco-script">SampleScript2</a>
+ <pre class="dennco-script">
positiveInputs = {"cell1-1", "cell1-2"};
negativeInputs = {"cell1-3"}
</div>
</a>
- <a name="cell2-2" class="dencco-cell">
+ <a name="cell2-2" class="dennco-cell">
<div class="style-cell">
Cell name : cell2-2 </br>
- Code class : <a href="#SampleScript2" class="dencco-script">SampleScript2</a>
- <pre class="dencco-script">
+ Code class : <a href="#SampleScript2" class="dennco-script">SampleScript2</a>
+ <pre class="dennco-script">
positiveInputs = {"cell1-3"};
negativeInputs = {"cell1-1", "cell1-2"}
</div>
</a>
- <a name="cell3-1" class="dencco-cell">
+ <a name='cell3-1' class='dennco-cell'>
<div class="style-cell">
Cell name : cell3-1 </br>
- Code class : <a href="#SampleScript1" class="dencco-script">SampleScript2</a>
- <pre class="dencco-script">
+ Code class : <a href="#SampleScript1" class="dennco-script">SampleScript2</a>
+ <pre class='dennco-script'>
positiveInputs = {"cell2-1"};
negativeInputs = {"cell2-2"}
#include "DNContainerBuilder.h"
+DNContainerBuilder::DNContainerBuilder(TKContainer *container) : mContainer(container)
+{
+
+}
+
+DNContainerBuilder::~DNContainerBuilder()
+{
+
+}
-TKContainer* DNContainerBuilder::createContainerFromXHTML(const char* docRoot, TKContainer *targetContainer)
+TKContainer* DNContainerBuilder::buildContainerFromXHTML(const char* docRoot)
{
mLock.lock();
- mContainer = targetContainer;
-
DNDirectory directory(docRoot);
const DNFileList *flist = directory.getFileList("html|htm|xml");
while(flist)
mLock.unlock();
- return targetContainer;
+ return mContainer;
}
void DNContainerBuilder::parseXHTML(const char *fpath)
DNXMLElement *cellAPIElement = NULL;
DNXMLElement *cellScriptElement = NULL;
std::string cellName;
+ std::string cellCodeClassName;
while(element)
{
- std::string eclass = element->attribute("class");
+ std::string eclass = element->getAttributeValue("class");
if (eclass == "dennco-script")
{
DNXMLElement *te = element->outer;
while(te)
{
- std::string teclass = te->attribute("class");
+ std::string teclass = te->getAttributeValue("class");
if (teclass == "dennco-classdef")
{
if (classElement && classElement == te)
{
if (cellElement && cellElement == te)
{
- cellScriptElement = element;
+ std::string s = element->getAttributeValue("href");
+ if (s.length() > 0)
+ {
+ cellCodeClassName = s;
+ }
+ else
+ {
+ cellScriptElement = element;
+ }
}
else
{
}
else if (eclass == "dennco-classdef")
{
- className = element->attribute("name");
- trimString(className);
+ className = element->getAttributeValue("name");
if (className.length() > 0)
{
if (!classElement)
}
else if (eclass == "dennco-cell")
{
- cellName = element->attribute("name");
+ cellName = element->getAttributeValue("name");
trimString(cellName);
if (cellName.length() > 0)
{
if (cellElement)
{
//connection
- std::string target = element->attribute("href");
+ std::string target = element->getAttributeValue("href");
trimString(target);
if (target.length() > 0)
{
DNXMLElement *te = element->outer;
while(te)
{
- std::string teclass = te->attribute("class");
+ std::string teclass = te->getAttributeValue("class");
if (teclass == "dennco-cell")
{
if (cellElement && cellElement == te)
TKLog::printf("A syntax error is found in %s. dennco-api doesn't belong to any of dennco-cell.", fpath);
}
}
-
+
+ //go to next element
+ //
if (element->inner)
{
+ // go inside
element = element->inner;
}
else
{
- while(!element->next && element != xml->getRoot())
- {
- element = element->outer;
- }
- if (element == xml->getRoot())
- {
- element = NULL;
- }
+ // go next
+ do {
- if (classElement && element->depth == classElement->depth)
- {
- //scriptless classdef
- classElement = NULL;
- classScriptElement = NULL;
+ // the processed element was cell code class definition.
+ // define it now.
+ if (classElement && element->depth == classElement->depth)
+ {
+ TKLog::printf("TODO define code class here..class:%s", className.c_str());
+ //scriptless classdef
+ classElement = NULL;
+ classScriptElement = NULL;
+ className = "";
+ }
+
+ // the processed element was cell definition.
+ // define it now.
+ if (cellElement && element->depth == cellElement->depth)
+ {
+ TKLog::printf("TODO define cell here..cellName:%s", cellName.c_str());
+ //scriptless celldef
+ cellElement = NULL;
+ cellAPIElement = NULL;
+ cellScriptElement = NULL;
+ cellName = "";
+ cellCodeClassName = "";
+ }
- }
- if (cellElement && element->depth == cellElement->depth)
- {
- //scriptless celldef
- cellElement = NULL;
- cellAPIElement = NULL;
- cellScriptElement = NULL;
- }
+ if (!element->next)
+ {
+ element = element->outer;
+ }
+ if (!element)
+ break;
+ } while(!element->next && element != xml->getRoot());
+
+ if (!element)
+ break;
+ element = element->next;
}
}
class DNContainerBuilder
{
public:
- TKContainer *createContainerFromXHTML(const char* docRoot, TKContainer *container);
- void parseXHTML(const char *fpath);
+ DNContainerBuilder(TKContainer *container);
+ ~DNContainerBuilder();
+
+ TKContainer *buildContainerFromXHTML(const char* docRoot);
private:
+ void parseXHTML(const char *fpath);
std::map<std::string, std::string> mPendingConnection;
TKLock mLock;
TKContainer *mContainer;
#include "DNXMLElement.h"
-DNXMLElement::DNXMLElement(std::map<std::string, std::string> attributes, std::string body):
-mAttributes(attributes), mBody(body)
+DNXMLElement::DNXMLElement(std::string _name):
+name(_name),outer(NULL),inner(NULL),next(NULL),depth(0),text("")
{
}
mAttributes.clear();
}
-std::string DNXMLElement::attribute(const char *name)
+void DNXMLElement::setAttribute(const char *name, const char *value)
{
- std::map<std::string, std::string>::iterator it = mAttributes.find(name);
+ std::string _key = name;
+ std::string _value = value;
+ mAttributes.insert(std::map<std::string, std::string>::value_type( _key, _value));
+}
+
+std::string DNXMLElement::getAttributeValue(const char *name)
+{
+ std::string key = name;
+ std::map<std::string, std::string>::iterator it = mAttributes.find(key);
if (it != mAttributes.end())
{
return it->second;
class DNXMLElement
{
public:
- DNXMLElement(std::map<std::string, std::string> attributes, std::string body);
+ DNXMLElement(std::string _name);
~DNXMLElement();
- std::string attribute(const char *name);
+ void setAttribute(const char *name, const char *value);
+ std::string getAttributeValue(const char *name);
DNXMLElement *outer;
DNXMLElement *inner;
DNXMLElement *next;
+
int depth;
+ std::string name;
+ std::string text;
private:
std::map<std::string, std::string> mAttributes;
- std::string mBody;
};
#endif
#import <Foundation/Foundation.h>
#include "DNXMLImpl.h"
+#include "DNXMLElement.h"
class OSXDNXMLImpl : public DNXMLImpl
{
public:
+ OSXDNXMLImpl(NSXMLDocument *doc);
+ virtual ~OSXDNXMLImpl();
+
virtual DNXMLElement* getRoot();
- OSXDNXMLImpl(NSXMLDocument *doc);
private:
NSXMLDocument *mDocument;
+ DNXMLElement *mRootElement;
};
#endif
#include "DNXML.h"
#include "DNXMLImpl.h"
+#include "DNXMLElement.h"
#include "OSXDNXMLImpl.h"
#include "TKLog.h"
+#include "TKDebug.h"
+
+#include <map>
//static
DNXMLImpl* DNXMLImpl::createXMLFromFileImpl(const char *fpath)
TKLog::printf("Can't parse xml file %s.", fpath);
return 0;
}
-
+
return new OSXDNXMLImpl(xmlDoc);
}
OSXDNXMLImpl::OSXDNXMLImpl(NSXMLDocument *doc):
-mDocument(doc)
+mDocument(doc),mRootElement(nil)
{
}
+OSXDNXMLImpl::~OSXDNXMLImpl()
+{
+ //TODO
+ //release memory.
+}
+
+
DNXMLElement* OSXDNXMLImpl::getRoot()
{
- //TODO
- TKLog::printf("ERROR!! DNXMLImpl::getRoot not implemented!!\n");
- return 0;
+ if (mRootElement)
+ return mRootElement;
+
+ NSXMLNode *rootNode = [mDocument rootElement];
+ NSXMLNode *aNode = rootNode;
+
+ std::map<unsigned long, DNXMLElement*> elementMap;
+
+ int depth = 0;
+
+ while(aNode)
+ {
+ if ( [aNode kind] == NSXMLElementKind )
+ {
+
+ NSString *nname = [aNode name];
+ const char *cname;
+ if (nname)
+ {
+ cname = [nname UTF8String];
+ }
+ else
+ {
+ cname = "";
+ }
+ DNXMLElement *dnelement = new DNXMLElement(cname);
+ NSXMLElement *aElement = (NSXMLElement*) aNode;
+ for( NSXMLNode *attribute in [aElement attributes] ) {
+ const char *name = [[attribute name] UTF8String];
+ const char *value = [[attribute stringValue] UTF8String];
+ dnelement->setAttribute(name, value);
+ }
+
+ elementMap.insert(std::map<unsigned long, DNXMLElement*>::value_type((unsigned long)aNode,dnelement));
+
+ NSXMLNode *parent = [aNode parent];
+ if (parent)
+ {
+
+ DNXMLElement *dnparent = elementMap[(unsigned long)parent];
+
+ if (dnparent)
+ {
+ dnelement->outer = dnparent;
+ if (!dnparent->inner)
+ {
+ dnparent->inner = dnelement;
+ }
+ }
+ else
+ {
+ mRootElement = dnelement;
+ }
+ }
+ else
+ {
+ //?
+ mRootElement = dnelement;
+ }
+
+ NSXMLNode *prevSibling = [aNode previousSibling];
+ while (prevSibling)
+ {
+ if ([prevSibling kind] == NSXMLElementKind)
+ {
+ DNXMLElement *dnprev = elementMap[(unsigned long)prevSibling];
+
+ TKASSERT(dnprev);
+ dnprev->next = dnelement;
+ break;
+ }
+ prevSibling = [prevSibling previousSibling];
+ }
+
+ }
+ else if ( [aNode kind] == NSXMLTextKind )
+ {
+ NSLog(@"body:%@", [aNode stringValue]);
+ NSXMLNode *parent = [aNode parent];
+ if (parent)
+ {
+ DNXMLElement *dnparent = elementMap[(unsigned long)parent];
+ dnparent->text = [[aNode stringValue] UTF8String];
+ }
+ }
+
+ //go to next
+ if ([aNode childCount]>0)
+ {
+ depth ++;
+ aNode = [aNode childAtIndex:0];
+ }
+ else
+ {
+ while (![aNode nextSibling] && aNode != rootNode)
+ {
+ depth--;
+ aNode = [aNode parent];
+ }
+
+ if (aNode == rootNode)
+ {
+ aNode = nil;
+ }
+ else
+ {
+ aNode = [aNode nextSibling];
+ }
+ }
+ }
+ return mRootElement;
}
7FEF016714A879EA00051DED /* dennco */ = {
isa = PBXGroup;
children = (
- 7FEF017314A879EB00051DED /* AppDelegate.h */,
7FEF017414A879EB00051DED /* AppDelegate.mm */,
+ 7FEF017314A879EB00051DED /* AppDelegate.h */,
7FEF017614A879EB00051DED /* MainMenu.xib */,
7FEF016814A879EB00051DED /* Supporting Files */,
);
// Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//
+#include "TKContainer.h"
+#include "TKConsole.h"
+
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
-
+{
+ IBOutlet NSPathControl *uiPathControl;
+ TKContainer *container;
+ TKConsole *console;
+}
@property (assign) IBOutlet NSWindow *window;
+-(IBAction)pathChanged:(id)sender;
+-(IBAction)doInit:(id)sender;
+-(IBAction)doStart:(id)sender;
+-(IBAction)doStop:(id)sender;
+
@end
// Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//
+#include "TKJSContainer.h"
+#include "DNContainerBuilder.h"
+#include "DNDirectory.h"
+#include "DNFileList.h"
+#include "TKLog.h"
+
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
-#include "DNDirectory.h"
-#include "DNFileList.h"
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
+ console = new TKConsole();
+ TKLog::setDestination(console);
+
// Insert code here to initialize your application
+ NSURL *path = [[NSURL alloc]initWithString:NSHomeDirectory()];
+ [uiPathControl setURL:path];
}
+-(IBAction)pathChanged:(id)sender
+{
+ NSURL *newURL = [uiPathControl URL];
+}
+
+-(IBAction)doInit:(id)sender
+{
+
+ if (container)
+ {
+ delete container;
+ }
+ container = new TKJSContainer();
+
+ DNContainerBuilder builder(container);
+
+ const char *path = [[[uiPathControl URL]path] UTF8String];
+ builder.buildContainerFromXHTML(path);
+
+
+}
+
+-(IBAction)doStart:(id)sender
+{
+
+}
+
+-(IBAction)doStop:(id)sender
+{
+
+}
+
+
@end
<object class="NSButton" id="660916202">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{14, 216}, {70, 32}}</string>
+ <string key="NSFrame">{{82, 216}, {70, 32}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="857388369"/>
<object class="NSButton" id="857388369">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{84, 216}, {68, 32}}</string>
+ <string key="NSFrame">{{148, 216}, {70, 32}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="139727149"/>
</object>
<object class="NSScrollView" id="263819838">
<reference key="NSNextResponder" ref="439893737"/>
- <int key="NSvFlags">256</int>
+ <int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSClipView" id="930991141">
<reference key="NSNextResponder" ref="263819838"/>
<string key="NSFrame">{{17, 273}, {115, 17}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="350940437"/>
+ <reference key="NSNextKeyView" ref="176231758"/>
<string key="NSReuseIdentifierKey">_NS:3944</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="884169963">
</object>
</object>
</object>
+ <object class="NSButton" id="176231758">
+ <reference key="NSNextResponder" ref="439893737"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{14, 216}, {70, 32}}</string>
+ <reference key="NSSuperview" ref="439893737"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="350940437"/>
+ <string key="NSReuseIdentifierKey">_NS:687</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="680091126">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Init</string>
+ <reference key="NSSupport" ref="207027162"/>
+ <string key="NSCellIdentifier">_NS:687</string>
+ <reference key="NSControlView" ref="176231758"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">129</int>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
</array>
<string key="NSFrameSize">{480, 360}</string>
<reference key="NSSuperview"/>
</object>
<int key="connectionID">532</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">uiPathControl</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="732858516"/>
+ </object>
+ <int key="connectionID">593</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pathChanged:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="732858516"/>
+ </object>
+ <int key="connectionID">594</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">doInit:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="176231758"/>
+ </object>
+ <int key="connectionID">597</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">doStart:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="660916202"/>
+ </object>
+ <int key="connectionID">598</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">doStop:</string>
+ <reference key="source" ref="976324537"/>
+ <reference key="destination" ref="857388369"/>
+ </object>
+ <int key="connectionID">599</int>
+ </object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<reference ref="122567520"/>
<reference ref="45658607"/>
<reference ref="174391018"/>
- <reference ref="660916202"/>
- <reference ref="857388369"/>
<reference ref="139727149"/>
<reference ref="537744523"/>
<reference ref="350940437"/>
<reference ref="801112629"/>
+ <reference ref="857388369"/>
+ <reference ref="660916202"/>
+ <reference ref="176231758"/>
</array>
<reference key="parent" ref="972006081"/>
</object>
<reference key="object" ref="424617530"/>
<reference key="parent" ref="801112629"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">595</int>
+ <reference key="object" ref="176231758"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="680091126"/>
+ </array>
+ <reference key="parent" ref="439893737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">596</int>
+ <reference key="object" ref="680091126"/>
+ <reference key="parent" ref="176231758"/>
+ </object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="588.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="591.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="592.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="595.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="596.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="72.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="73.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="74.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
- <int key="maxID">592</int>
+ <int key="maxID">599</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">AppDelegate</string>
<string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">window</string>
- <string key="NS.object.0">NSWindow</string>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <string key="NS.key.0">window</string>
- <object class="IBToOneOutletInfo" key="NS.object.0">
+ <dictionary class="NSMutableDictionary" key="actions">
+ <string key="doInit:">id</string>
+ <string key="doStart:">id</string>
+ <string key="doStop:">id</string>
+ <string key="pathChanged:">id</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="actionInfosByName">
+ <object class="IBActionInfo" key="doInit:">
+ <string key="name">doInit:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="doStart:">
+ <string key="name">doStart:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="doStop:">
+ <string key="name">doStop:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="pathChanged:">
+ <string key="name">pathChanged:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="outlets">
+ <string key="uiPathControl">NSPathControl</string>
+ <string key="window">NSWindow</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <object class="IBToOneOutletInfo" key="uiPathControl">
+ <string key="name">uiPathControl</string>
+ <string key="candidateClassName">NSPathControl</string>
+ </object>
+ <object class="IBToOneOutletInfo" key="window">
<string key="name">window</string>
<string key="candidateClassName">NSWindow</string>
</object>
- </object>
+ </dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/AppDelegate.h</string>