#import "ASIPithosAccount.h"
#import "ASIPithosContainer.h"
#import "ASIDownloadCache.h"
+#import "PithosAccount.h"
#import "PithosUtilities.h"
#import "PithosActivityFacility.h"
static NSImage *sharedIcon = nil;
@implementation PithosAccountNode
-@synthesize pithos, pithosAccount;
+@synthesize pithos, pithosAccount, translatedGroups;
+ (void)initialize {
if (self == [PithosAccountNode class])
}
}
+- (void)setPithosAccount:(ASIPithosAccount *)aPithosAccount {
+ if (!aPithosAccount) {
+ pithosAccount = aPithosAccount;
+ self.translatedGroups = [NSMutableDictionary dictionary];
+ } else if (![aPithosAccount isEqualTo:pithosAccount]) {
+ pithosAccount = aPithosAccount;
+ if (pithosAccountManager) {
+ NSMutableArray *UUIDs = [NSMutableArray array];
+ for (NSString *groupName in pithosAccount.groups) {
+ [UUIDs addObjectsFromArray:[pithosAccount.groups objectForKey:groupName]];
+ }
+ if (UUIDs.count) {
+ [pithosAccountManager updateUserCatalogForForDisplaynames:nil UUIDs:UUIDs];
+ }
+
+ NSMutableDictionary *newTranslatedGroups = [NSMutableDictionary dictionaryWithCapacity:pithosAccount.groups.count];
+ for (NSString *groupName in pithosAccount.groups) {
+ NSMutableArray *groupUsers = [NSMutableArray array];
+ for (NSString *UUID in [pithosAccount.groups objectForKey:groupName]) {
+ [groupUsers addObject:[pithosAccountManager displaynameForUUID:UUID safe:YES]];
+ }
+ [newTranslatedGroups setObject:groupUsers forKey:groupName];
+ }
+ self.translatedGroups = newTranslatedGroups;
+ } else {
+ self.translatedGroups = [pithosAccount.groups copy];
+ }
+ }
+}
+
- (NSString *)url {
if (url == nil)
url = [[NSString alloc] initWithFormat:@"%@%@",
- (void)applyInfo {
@synchronized(self) {
if (applyMetadataAccountRequest == nil) {
- NSMutableDictionary *groups = pithosAccount.groups;
- if ([groups count] == 0)
- groups = [NSMutableDictionary dictionaryWithObject:@"" forKey:@"group"];
- applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithos
+ NSMutableDictionary *groups = [NSMutableDictionary dictionary];
+ if (translatedGroups.count) {
+ for (NSString *groupName in translatedGroups) {
+ if (!groupName.length ||
+ [groupName rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@" -_~,;"]].location != NSNotFound) {
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert setMessageText:@"Invalid Input"];
+ [alert setInformativeText:@"Group names cannot be empty or contain ' ', '-', '_', '~', ',' or ';'."];
+ [alert addButtonWithTitle:@"OK"];
+ [alert runModal];
+ return;
+ }
+ }
+ if (pithosAccountManager) {
+ NSMutableSet *allGroupUsers = [NSMutableSet set];
+ for (NSMutableArray *groupUsers in [translatedGroups objectEnumerator]) {
+ [allGroupUsers addObjectsFromArray:groupUsers];
+ }
+ [allGroupUsers removeObject:@""];
+ [allGroupUsers removeObject:@"*"];
+ if (allGroupUsers.count) {
+ ASIPithosRequest *userCatalogRequest = [pithosAccountManager updateUserCatalogForForDisplaynames:[allGroupUsers allObjects]
+ UUIDs:nil];
+ if (userCatalogRequest.error || ((userCatalogRequest.responseStatusCode != 200) && (userCatalogRequest.responseStatusCode != 404))) {
+ return;
+ } else if (userCatalogRequest.responseStatusCode == 200) {
+ // Check if all users exist.
+ NSDictionary *displaynameCatalog = [userCatalogRequest displaynameCatalog];
+ NSMutableArray *inexistentGroupUsers = [NSMutableArray array];
+ for (NSString *groupUser in allGroupUsers) {
+ if (![displaynameCatalog objectForKey:groupUser]) {
+ [inexistentGroupUsers addObject:groupUser];
+ }
+ }
+ if (!inexistentGroupUsers.count) {
+ // create groups
+ for (NSString *groupName in translatedGroups) {
+ NSMutableArray *groupUsers = [NSMutableArray array];
+ for (NSString *groupUser in [translatedGroups objectForKey:groupName]) {
+ [groupUsers addObject:([groupUser isEqualToString:@"*"] ?
+ @"*" : [displaynameCatalog objectForKey:groupUser])];
+ }
+ [groups setObject:groupUsers forKey:groupName];
+ }
+ } else {
+ NSAlert *alert = [[NSAlert alloc] init];
+ if (inexistentGroupUsers.count == 1) {
+ [alert setMessageText:@"Invalid User"];
+ [alert setInformativeText:[NSString stringWithFormat:@"User '%@' doesn't exist.", [inexistentGroupUsers objectAtIndex:0]]];
+ } else {
+ [alert setMessageText:@"Invalid Users"];
+ [alert setInformativeText:[NSString stringWithFormat:@"Users '%@' don't exist.", [inexistentGroupUsers componentsJoinedByString:@"', '"]]];
+ }
+ [alert addButtonWithTitle:@"OK"];
+ [alert runModal];
+ return;
+ }
+ } else {
+ // 404. Since we don't translate to UUIDs, check for invalid chars.
+ BOOL valid = YES;
+ for (NSString *groupUser in allGroupUsers) {
+ if ([groupUser rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@" ~,;:"]].location != NSNotFound) {
+ valid = NO;
+ break;
+ }
+ }
+ if (valid) {
+ [groups addEntriesFromDictionary:translatedGroups];
+ } else {
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert setMessageText:@"Invalid Input"];
+ [alert setInformativeText:@"Users cannot contain ' ', '~', ',', ';' or ':'."];
+ [alert addButtonWithTitle:@"OK"];
+ [alert runModal];
+ return;
+ }
+ }
+ } else {
+ [groups setObject:[NSArray arrayWithObject:@""] forKey:@"group"];
+ }
+ } else {
+ [groups addEntriesFromDictionary:translatedGroups];
+ }
+ } else {
+ [groups setObject:[NSArray arrayWithObject:@""] forKey:@"group"];
+ }
+
+ applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithos
groups:groups
metadata:pithosAccount.metadata
update:NO];
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{118, 215}</string>
<reference key="NSSuperview" ref="475745140"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="366650902"/>
<string key="NSReuseIdentifierKey">_NS:1828</string>
<bool key="NSEnabled">YES</bool>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{118, 17}</string>
<reference key="NSSuperview" ref="316124907"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="475745140"/>
<string key="NSReuseIdentifierKey">_NS:1830</string>
<reference key="NSTableView" ref="260212452"/>
</object>
<string key="NSFrame">{{1, 17}, {118, 215}}</string>
<reference key="NSSuperview" ref="419137310"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="260212452"/>
<string key="NSReuseIdentifierKey">_NS:1826</string>
<reference key="NSDocView" ref="260212452"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
<reference key="NSSuperview" ref="419137310"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="287845150"/>
<string key="NSReuseIdentifierKey">_NS:1845</string>
<reference key="NSTarget" ref="419137310"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{1, 48.325627356767654}, {82.028970718383789, 15}}</string>
<reference key="NSSuperview" ref="419137310"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="310368570"/>
<string key="NSReuseIdentifierKey">_NS:1847</string>
<int key="NSsFlags">1</int>
</object>
<string key="NSFrame">{{1, 0}, {118, 17}}</string>
<reference key="NSSuperview" ref="419137310"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="152792208"/>
<string key="NSReuseIdentifierKey">_NS:1831</string>
<reference key="NSDocView" ref="152792208"/>
</object>
<string key="NSFrame">{{20, 47}, {120, 233}}</string>
<reference key="NSSuperview" ref="369507901"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="316124907"/>
<string key="NSReuseIdentifierKey">_NS:1824</string>
<int key="NSsFlags">133682</int>
<int key="NSvFlags">18</int>
<string key="NSFrame">{{147, 37}, {265, 249}}</string>
<reference key="NSSuperview" ref="369507901"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="646624756"/>
<string key="NSReuseIdentifierKey">_NS:608</string>
<object class="NSMutableArray" key="NSTabViewItems">
<int key="NSvFlags">268</int>
<string key="NSFrame">{{14, 183}, {41, 14}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="96425952"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="9695847">
<int key="NSvFlags">266</int>
<string key="NSFrame">{{60, 181}, {168, 19}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="571994001"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="34677607">
<int key="NSvFlags">266</int>
<string key="NSFrame">{{60, 123}, {168, 19}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1017221490"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1001750419">
<int key="NSvFlags">266</int>
<string key="NSFrame">{{60, 96}, {168, 19}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="525437489"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="350801514">
<int key="NSvFlags">266</int>
<string key="NSFrame">{{60, 69}, {168, 19}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="666198740"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="772611148">
<int key="NSvFlags">268</int>
<string key="NSFrame">{{14, 125}, {41, 14}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="287579732"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="993321662">
<int key="NSvFlags">268</int>
<string key="NSFrame">{{14, 71}, {41, 14}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="92717922"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="887494614">
<int key="NSvFlags">268</int>
<string key="NSFrame">{{14, 98}, {41, 14}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="773004803"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1037784646">
<int key="NSvFlags">268</int>
<string key="NSFrame">{{14, 150}, {86, 14}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="507142965"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="784421446">
<int key="NSvFlags">-2147483634</int>
<string key="NSFrame">{{-3, 170}, {251, 5}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="992895966"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSvFlags">268</int>
<string key="NSFrame">{{57, 45}, {63, 18}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="764785507"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="269907300">
<int key="NSvFlags">289</int>
<string key="NSFrame">{{161, 4}, {72, 28}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="950873176">
<int key="NSvFlags">289</int>
<string key="NSFrame">{{91, 4}, {72, 28}}</string>
<reference key="NSSuperview" ref="646624756"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="750494034"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="327493266">
</object>
<string key="NSFrame">{{10, 33}, {245, 203}}</string>
<reference key="NSSuperview" ref="247568729"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1055886655"/>
<string key="NSReuseIdentifierKey">_NS:610</string>
</object>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{161, 4}, {72, 28}}</string>
<reference key="NSSuperview" ref="689284120"/>
+ <reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="592322209">
<int key="NSCellFlags">-2080244224</int>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{209, 95}</string>
<reference key="NSSuperview" ref="490888020"/>
- <reference key="NSNextKeyView" ref="677192773"/>
+ <reference key="NSNextKeyView" ref="140942393"/>
<string key="NSReuseIdentifierKey">_NS:13</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="1047592526">
</object>
<string key="NSFrame">{{17, 40}, {211, 113}}</string>
<reference key="NSSuperview" ref="689284120"/>
- <reference key="NSNextKeyView" ref="490888020"/>
+ <reference key="NSNextKeyView" ref="677192773"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="140942393"/>
<int key="NSvFlags">4352</int>
<string key="NSFrameSize">{103, 116}</string>
<reference key="NSSuperview" ref="748581994"/>
- <reference key="NSNextKeyView" ref="881351662"/>
+ <reference key="NSNextKeyView" ref="613407224"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="94922151">
<reference key="NSNextResponder" ref="5455797"/>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="26"/>
+ <string key="NSPlaceholderString">Group</string>
<reference key="NSControlView" ref="199904301"/>
<reference key="NSBackgroundColor" ref="512560731"/>
<reference key="NSTextColor" ref="44104873"/>
</object>
<string key="NSFrame">{{17, 66}, {105, 134}}</string>
<reference key="NSSuperview" ref="635100516"/>
- <reference key="NSNextKeyView" ref="748581994"/>
+ <reference key="NSNextKeyView" ref="881351662"/>
<int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="881351662"/>
<reference key="NSHScroller" ref="613407224"/>
<int key="NSvFlags">4352</int>
<string key="NSFrameSize">{103, 116}</string>
<reference key="NSSuperview" ref="441382477"/>
- <reference key="NSNextKeyView" ref="176697034"/>
+ <reference key="NSNextKeyView" ref="79495429"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="459733499">
<reference key="NSNextResponder" ref="302523439"/>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="26"/>
+ <string key="NSPlaceholderString">User</string>
<reference key="NSControlView" ref="801276999"/>
<reference key="NSBackgroundColor" ref="512560731"/>
<reference key="NSTextColor" ref="44104873"/>
</object>
<string key="NSFrame">{{123, 66}, {105, 134}}</string>
<reference key="NSSuperview" ref="635100516"/>
- <reference key="NSNextKeyView" ref="441382477"/>
+ <reference key="NSNextKeyView" ref="176697034"/>
<int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="176697034"/>
<reference key="NSHScroller" ref="79495429"/>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{161, 4}, {72, 28}}</string>
<reference key="NSSuperview" ref="635100516"/>
+ <reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="683879656">
<int key="NSCellFlags">-2080244224</int>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 19}, {20, 20}}</string>
<reference key="NSSuperview" ref="369507901"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="862152318"/>
<string key="NSReuseIdentifierKey">_NS:2510</string>
<bool key="NSEnabled">YES</bool>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{39, 19}, {20, 20}}</string>
<reference key="NSSuperview" ref="369507901"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="247568729"/>
<string key="NSReuseIdentifierKey">_NS:2510</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="850026501">
</object>
<string key="NSFrameSize">{425, 300}</string>
<reference key="NSSuperview"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="419137310"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
<string key="NSInitialKey">key</string>
<string key="NSInitialValue">value</string>
</object>
- <object class="NSCustomObject" id="894212860">
- <string key="NSClassName">GroupAndGroupMemberFormatter</string>
- </object>
<object class="NSCustomObject" id="548435475">
<string key="NSClassName">NonEmptyStringFormatter</string>
</object>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">contentDictionary: selection.accountNode.pithosAccount.groups</string>
+ <string key="label">contentDictionary: selection.accountNode.translatedGroups</string>
<reference key="source" ref="980977849"/>
<reference key="destination" ref="994230656"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="980977849"/>
<reference key="NSDestination" ref="994230656"/>
- <string key="NSLabel">contentDictionary: selection.accountNode.pithosAccount.groups</string>
+ <string key="NSLabel">contentDictionary: selection.accountNode.translatedGroups</string>
<string key="NSBinding">contentDictionary</string>
- <string key="NSKeyPath">selection.accountNode.pithosAccount.groups</string>
+ <string key="NSKeyPath">selection.accountNode.translatedGroups</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">864</int>
+ <int key="connectionID">908</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<reference key="parent" ref="183740387"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">449</int>
- <reference key="object" ref="894212860"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">484</int>
<reference key="object" ref="548435475"/>
<reference key="parent" ref="0"/>
<string>338.IBPluginDependency</string>
<string>396.IBPluginDependency</string>
<string>433.IBPluginDependency</string>
- <string>449.IBPluginDependency</string>
<string>484.IBPluginDependency</string>
<string>5.IBPluginDependency</string>
<string>505.IBPluginDependency</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>
<reference ref="22221536"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
- <int key="maxID">905</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GroupAndGroupMemberFormatter</string>
- <string key="superclassName">NSFormatter</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/GroupAndGroupMemberFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NonEmptyStringFormatter</string>
- <string key="superclassName">NSFormatter</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/NonEmptyStringFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">PithosPreferencesController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>addAccount:</string>
- <string>groupsApply:</string>
- <string>groupsRevert:</string>
- <string>login:</string>
- <string>loginCancel:</string>
- <string>removeAccount:</string>
- <string>syncApply:</string>
- <string>syncCancel:</string>
- <string>syncRefresh:</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <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>addAccount:</string>
- <string>groupsApply:</string>
- <string>groupsRevert:</string>
- <string>login:</string>
- <string>loginCancel:</string>
- <string>removeAccount:</string>
- <string>syncApply:</string>
- <string>syncCancel:</string>
- <string>syncRefresh:</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBActionInfo">
- <string key="name">addAccount:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">groupsApply:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">groupsRevert:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">login:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">loginCancel:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">removeAccount:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">syncApply:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">syncCancel:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">syncRefresh:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>accountsArrayController</string>
- <string>groupsDictionaryController</string>
- <string>selectedGroupMembersDictionaryController</string>
- <string>syncAccountsOutlineView</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSArrayController</string>
- <string>NSDictionaryController</string>
- <string>NSDictionaryController</string>
- <string>NSOutlineView</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>accountsArrayController</string>
- <string>groupsDictionaryController</string>
- <string>selectedGroupMembersDictionaryController</string>
- <string>syncAccountsOutlineView</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBToOneOutletInfo">
- <string key="name">accountsArrayController</string>
- <string key="candidateClassName">NSArrayController</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">groupsDictionaryController</string>
- <string key="candidateClassName">NSDictionaryController</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">selectedGroupMembersDictionaryController</string>
- <string key="candidateClassName">NSDictionaryController</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">syncAccountsOutlineView</string>
- <string key="candidateClassName">NSOutlineView</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/PithosPreferencesController.h</string>
- </object>
- </object>
- </object>
+ <int key="maxID">909</int>
</object>
+ <object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">