Start adding the ability to set a default server. This adds and
authorMichael J. Rubinsky <mrubinsk@horde.org>
Tue, 3 Feb 2009 16:53:40 +0000 (11:53 -0500)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Tue, 3 Feb 2009 16:55:37 +0000 (11:55 -0500)
hooks up some outlets and UI elements, stops autoconnected to the
first listed server, adds "None" as the first option in the popup,
but nothing is remembered (yet).

iPhoto2Ansel/AnselExportController.h
iPhoto2Ansel/AnselExportController.m
iPhoto2Ansel/English.lproj/Panel.nib/designable.nib
iPhoto2Ansel/English.lproj/Panel.nib/keyedobjects.nib

index 93da3ac..14c8852 100644 (file)
@@ -16,6 +16,7 @@
 // User defaults keys
 extern NSString * const TURAnselServersKey;
 extern NSString * const TURAnselExportSize;
+extern NSString * const TURAnselDefaultServerKey;
 
 // Server property keys
 extern NSString * const TURAnselServerNickKey;
@@ -48,6 +49,7 @@ extern NSString * const TURAnselServerPasswordKey;
     IBOutlet NSTextField *mServerSheetUsername;    
     IBOutlet NSSecureTextField *mServerSheetPassword;
     IBOutlet NSTextField *mServerSheetServerNickName;
+    IBOutlet NSButton *mMakeNewServerDefault;
     
     // Server list
     IBOutlet NSPanel *serverListPanel;
@@ -71,6 +73,10 @@ extern NSString * const TURAnselServerPasswordKey;
     TURAnsel *anselController;
     TURAnselGallery *currentGallery;
     int currentImageCount;
+    
+    // Remembers the selected server before it changes. Used to reselect the
+    // proper server if necessary when server panels are closed.
+    int mIndexOfPreviouslySelectedServer;
 }
 
 @property (readwrite, retain) TURAnselGallery *currentGallery;
@@ -93,4 +99,5 @@ extern NSString * const TURAnselServerPasswordKey;
 - (void)awakeFromNib;
 - (void)dealloc;
 
+
 @end
index 749dd35..fd61810 100644 (file)
@@ -30,6 +30,7 @@
 // User default keys
 NSString * const TURAnselServersKey = @"AnselServers";
 NSString * const TURAnselExportSize = @"AnselExportSize";
+NSString * const TURAnselDefaultServerKey = @"AnselDefaultServer";
 
 // Server property keys
 NSString * const TURAnselServerNickKey = @"nickname";
@@ -51,7 +52,12 @@ NSString * const TURAnselServerPasswordKey = @"password";
     NSMutableDictionary *defaultValues = [NSMutableDictionary dictionary];
     [defaultValues setObject: [NSNumber numberWithInt: 2]
                       forKey: TURAnselExportSize];    
+    
     [defaultValues setObject: [[NSMutableArray alloc] init] forKey: TURAnselServersKey];
+    
+    [defaultValues setObject: @""
+                      forKey: TURAnselDefaultServerKey];
+    
     NSUserDefaults *userPrefs = [NSUserDefaults standardUserDefaults];
     [userPrefs registerDefaults: defaultValues];
         
@@ -129,7 +135,10 @@ NSString * const TURAnselServerPasswordKey = @"password";
 // Action sent by the server pop up menu
 - (IBAction)clickServer: (id)sender
 {
-    if ([mServersPopUp indexOfSelectedItem] == [mServersPopUp numberOfItems] - 1) {
+    // Are we set to "none" now?
+    if ([mServersPopUp indexOfSelectedItem] == 0) {
+        [self disconnect];
+    } else if ([mServersPopUp indexOfSelectedItem] == [mServersPopUp numberOfItems] - 1) {
         // Server list
         [self showServerListPanel];
     } else if ([mServersPopUp indexOfSelectedItem] == [mServersPopUp numberOfItems] - 2) {
@@ -166,9 +175,10 @@ NSString * const TURAnselServerPasswordKey = @"password";
     [anselServers addObject: newServer];
     [NSApp endSheet: newServerSheet];
     [newServerSheet orderOut: nil];
-    
     currentServer = [newServer retain];
     [self doConnect];
+    int butState = [mMakeNewServerDefault state];
+    // Make the new server the default?
     
     // Save it to the userdefaults
     NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
@@ -350,6 +360,7 @@ NSString * const TURAnselServerPasswordKey = @"password";
 - (void)updateServersPopupMenu
 {
     [mServersPopUp removeAllItems];
+    [mServersPopUp addItemWithTitle:@"(None)"];
     for (NSDictionary *server in anselServers) {
         NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle: [server objectForKey: TURAnselServerNickKey]
                                                           action: nil
@@ -357,9 +368,6 @@ NSString * const TURAnselServerPasswordKey = @"password";
         [menuItem setRepresentedObject: server];
         [[mServersPopUp menu] addItem: menuItem];
     }
-    if ([anselServers count] == 0) {
-        [mServersPopUp addItemWithTitle:@"(None)"];
-    }
     
     // add separator
     [[mServersPopUp menu] addItem:[NSMenuItem separatorItem]];
@@ -623,29 +631,17 @@ NSString * const TURAnselServerPasswordKey = @"password";
 }
 
 #pragma mark comboBoxDelegate
-// Probably should have a seperate controller for each combobox, but this is
-// pretty small stuff...
 - (void)comboBoxSelectionDidChange:(NSNotification *)notification
 {    
-    // Yes, I'm comparing the pointers here on purpose
-    //if ([notification object] == galleryCombo) {
-        int row = [galleryCombo indexOfSelectedItem];
-        [currentGallery setDelegate:nil];
-        [currentGallery autorelease];
-        currentGallery = [[anselController getGalleryByIndex:row] retain];
-        [currentGallery setDelegate: self];
-        NSImage *theImage = [[NSImage alloc] initWithContentsOfURL: [currentGallery galleryDefaultImageURL]];
-        [defaultImageView setImage: theImage];
-        [theImage release];
-        [self canExport];
-    //}
-}
-
-
-#pragma mark NSTableView Notifications
-- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
-{
-    NSLog(@"%@", aNotification);
+    int row = [galleryCombo indexOfSelectedItem];
+    [currentGallery setDelegate:nil];
+    [currentGallery autorelease];
+    currentGallery = [[anselController getGalleryByIndex:row] retain];
+    [currentGallery setDelegate: self];
+    NSImage *theImage = [[NSImage alloc] initWithContentsOfURL: [currentGallery galleryDefaultImageURL]];
+    [defaultImageView setImage: theImage];
+    [theImage release];
+    [self canExport];
 }
 
 #pragma mark TURAnselGalleryPanel Notifications
@@ -664,13 +660,20 @@ NSString * const TURAnselServerPasswordKey = @"password";
                                                     name: NSWindowDidBecomeKeyNotification 
                                                   object: nil];
     [self updateServersPopupMenu];
+    
+    // Register for notifications
+    [[NSNotificationCenter defaultCenter] addObserver: self
+                                             selector: @selector(NSPopUpWillPopUp:)
+                                                 name:@"NSPopUpButtonWillPopUpNotification"
+                                               object: nil];
+    
     if ([anselServers count] == 0) {
         [self showNewServerSheet];
     } else {
         // Autoconnect to default server. For now, just make it the first one.
         // TODO: Fix this so it uses a default pref, not just the first in the list
-        currentServer = [[mServersPopUp selectedItem] representedObject];
-        [self doConnect];
+        //currentServer = [[mServersPopUp selectedItem] representedObject];
+        //[self doConnect];
     }
 }
 - (void)sizeChoiceWillChange: (NSNotification *)notification
@@ -681,6 +684,15 @@ NSString * const TURAnselServerPasswordKey = @"password";
     [userPrefs synchronize];
 }
 
+#pragma mark NSPopUpButton Notification Handlers
+- (void) NSPopUpWillPopUp:(id)theButton
+{
+    // Remember the previous selection before it changes.
+    // The 'clickServer' action will handle what to do with the selection.
+    mIndexOfPreviouslySelectedServer = [mServersPopUp indexOfSelectedItem];
+}
+
+
 #pragma mark NSTableView Datasource
 - (int)numberOfRowsInTableView:(NSTableView *)aTableView
 {
index 6ca2fb9..d0c4a59 100644 (file)
@@ -8,8 +8,8 @@
                <string key="IBDocument.HIToolboxVersion">353.00</string>
                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
                        <bool key="EncodedWithXMLCoder">YES</bool>
-                       <integer value="495"/>
-                       <integer value="502"/>
+                       <integer value="387"/>
+                       <integer value="137"/>
                </object>
                <object class="NSArray" key="IBDocument.PluginDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                                <nil key="NSViewClass"/>
                                <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
                                <object class="NSView" key="NSWindowView" id="345710193">
-                                       <nil key="NSNextResponder"/>
+                                       <reference key="NSNextResponder"/>
                                        <int key="NSvFlags">256</int>
                                        <object class="NSMutableArray" key="NSSubviews">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <reference key="NSSuperview" ref="345710193"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSButtonCell" key="NSCell" id="754494626">
-                                                               <int key="NSCellFlags">-2080244224</int>
+                                                               <int key="NSCellFlags">67239424</int>
                                                                <int key="NSCellFlags2">0</int>
-                                                               <string key="NSContents">Default Server</string>
+                                                               <string key="NSContents">Make Default</string>
                                                                <reference key="NSSupport" ref="1065031457"/>
                                                                <reference key="NSControlView" ref="381272541"/>
                                                                <int key="NSButtonFlags">1211912703</int>
                                                </object>
                                        </object>
                                        <string key="NSFrameSize">{455, 195}</string>
+                                       <reference key="NSSuperview"/>
                                </object>
                                <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
                                <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
                                <nil key="NSViewClass"/>
                                <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
                                <object class="NSView" key="NSWindowView" id="1015540943">
-                                       <reference key="NSNextResponder"/>
+                                       <nil key="NSNextResponder"/>
                                        <int key="NSvFlags">256</int>
                                        <object class="NSMutableArray" key="NSSubviews">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <object class="NSButton" id="173168675">
                                                        <reference key="NSNextResponder" ref="1015540943"/>
                                                        <int key="NSvFlags">268</int>
-                                                       <string key="NSFrame">{{569, 12}, {96, 32}}</string>
+                                                       <string key="NSFrame">{{568, 28}, {96, 28}}</string>
                                                        <reference key="NSSuperview" ref="1015540943"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSButtonCell" key="NSCell" id="1051407572">
                                                                <int key="NSCellFlags">67239424</int>
-                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <int key="NSCellFlags2">134348800</int>
                                                                <string key="NSContents">Done</string>
-                                                               <reference key="NSSupport" ref="1065031457"/>
+                                                               <reference key="NSSupport" ref="26"/>
                                                                <reference key="NSControlView" ref="173168675"/>
                                                                <int key="NSButtonFlags">-2038284033</int>
                                                                <int key="NSButtonFlags2">129</int>
                                                <object class="NSButton" id="887276643">
                                                        <reference key="NSNextResponder" ref="1015540943"/>
                                                        <int key="NSvFlags">268</int>
-                                                       <string key="NSFrame">{{14, 12}, {96, 32}}</string>
+                                                       <string key="NSFrame">{{15, 28}, {96, 28}}</string>
                                                        <reference key="NSSuperview" ref="1015540943"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSButtonCell" key="NSCell" id="857791556">
                                                                <int key="NSCellFlags">67239424</int>
-                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <int key="NSCellFlags2">134348800</int>
                                                                <string key="NSContents">Remove</string>
-                                                               <reference key="NSSupport" ref="1065031457"/>
+                                                               <reference key="NSSupport" ref="26"/>
                                                                <reference key="NSControlView" ref="887276643"/>
                                                                <int key="NSButtonFlags">-2038284033</int>
                                                                <int key="NSButtonFlags2">129</int>
                                                                <int key="NSPeriodicInterval">25</int>
                                                        </object>
                                                </object>
+                                               <object class="NSButton" id="261477617">
+                                                       <reference key="NSNextResponder" ref="1015540943"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{109, 28}, {123, 28}}</string>
+                                                       <reference key="NSSuperview" ref="1015540943"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="574730139">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">134348800</int>
+                                                               <string key="NSContents">Make Default</string>
+                                                               <reference key="NSSupport" ref="26"/>
+                                                               <reference key="NSControlView" ref="261477617"/>
+                                                               <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>
                                        </object>
                                        <string key="NSFrameSize">{679, 358}</string>
-                                       <reference key="NSSuperview"/>
                                </object>
                                <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
                                <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
                                        </object>
                                        <int key="connectionID">526</int>
                                </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">mMakeNewServerDefault</string>
+                                               <reference key="source" ref="685567789"/>
+                                               <reference key="destination" ref="381272541"/>
+                                       </object>
+                                       <int key="connectionID">529</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">mServerSheetServerNickName</string>
+                                               <reference key="source" ref="685567789"/>
+                                               <reference key="destination" ref="536650280"/>
+                                       </object>
+                                       <int key="connectionID">530</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">mServerSheetHostURL</string>
+                                               <reference key="source" ref="685567789"/>
+                                               <reference key="destination" ref="143194876"/>
+                                       </object>
+                                       <int key="connectionID">531</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">mServerSheetUsername</string>
+                                               <reference key="source" ref="685567789"/>
+                                               <reference key="destination" ref="943485916"/>
+                                       </object>
+                                       <int key="connectionID">532</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">mServerSheetPassword</string>
+                                               <reference key="source" ref="685567789"/>
+                                               <reference key="destination" ref="407883474"/>
+                                       </object>
+                                       <int key="connectionID">533</int>
+                               </object>
                        </object>
                        <object class="IBMutableOrderedSet" key="objectRecords">
                                <object class="NSArray" key="orderedObjects">
                                                <reference key="object" ref="1015540943"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="173168675"/>
                                                        <reference ref="190463150"/>
+                                                       <reference ref="173168675"/>
                                                        <reference ref="887276643"/>
+                                                       <reference ref="261477617"/>
                                                </object>
                                                <reference key="parent" ref="114974401"/>
                                        </object>
                                                <reference key="object" ref="857791556"/>
                                                <reference key="parent" ref="887276643"/>
                                        </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">527</int>
+                                               <reference key="object" ref="261477617"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="574730139"/>
+                                               </object>
+                                               <reference key="parent" ref="1015540943"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">528</int>
+                                               <reference key="object" ref="574730139"/>
+                                               <reference key="parent" ref="261477617"/>
+                                       </object>
                                </object>
                        </object>
                        <object class="NSMutableDictionary" key="flattenedProperties">
                                        <string>515.IBPluginDependency</string>
                                        <string>521.IBPluginDependency</string>
                                        <string>522.IBPluginDependency</string>
+                                       <string>527.IBPluginDependency</string>
+                                       <string>528.IBPluginDependency</string>
                                        <string>6.IBPluginDependency</string>
                                        <string>6.ImportedFromIB2</string>
                                        <string>7.CustomClassName</string>
                                        <reference ref="5"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="5"/>
-                                       <string>{{42, 910}, {455, 195}}</string>
+                                       <string>{{419, 246}, {455, 195}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{42, 910}, {455, 195}}</string>
+                                       <string>{{419, 246}, {455, 195}}</string>
                                        <reference ref="5"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="5"/>
                                        <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>
                                        <reference ref="5"/>
                                        <string>AnselExportPluginBox</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                </object>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">526</int>
+                       <int key="maxID">533</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes">
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <object class="NSMutableArray" key="dict.sortedKeys">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>anselHostURL</string>
                                                        <string>defaultImageView</string>
                                                        <string>firstView</string>
                                                        <string>galleryCombo</string>
                                                        <string>mCancelConnect</string>
                                                        <string>mExportMgr</string>
+                                                       <string>mMakeNewServerDefault</string>
+                                                       <string>mNewGalleryButton</string>
+                                                       <string>mServerSheetHostURL</string>
+                                                       <string>mServerSheetPassword</string>
+                                                       <string>mServerSheetServerNickName</string>
+                                                       <string>mServerSheetUsername</string>
                                                        <string>mServersPopUp</string>
                                                        <string>mSettingsBox</string>
                                                        <string>mSizePopUp</string>
-                                                       <string>newGalleryButton</string>
                                                        <string>newServerSheet</string>
-                                                       <string>password</string>
                                                        <string>serverListPanel</string>
-                                                       <string>serverNickName</string>
                                                        <string>serverTable</string>
                                                        <string>spinner</string>
                                                        <string>statusLabel</string>
-                                                       <string>username</string>
                                                </object>
                                                <object class="NSMutableArray" key="dict.values">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>NSTextField</string>
                                                        <string>NSImageView</string>
                                                        <string>NSControl</string>
                                                        <string>NSComboBox</string>
                                                        <string>NSButton</string>
                                                        <string>id</string>
+                                                       <string>NSButton</string>
+                                                       <string>NSButton</string>
+                                                       <string>NSTextField</string>
+                                                       <string>NSSecureTextField</string>
+                                                       <string>NSTextField</string>
+                                                       <string>NSTextField</string>
                                                        <string>NSPopUpButton</string>
                                                        <string>NSBox</string>
                                                        <string>NSPopUpButton</string>
-                                                       <string>NSButton</string>
                                                        <string>NSWindow</string>
-                                                       <string>NSSecureTextField</string>
                                                        <string>NSPanel</string>
-                                                       <string>NSTextField</string>
                                                        <string>NSTableView</string>
                                                        <string>NSProgressIndicator</string>
                                                        <string>NSTextField</string>
-                                                       <string>NSTextField</string>
                                                </object>
                                        </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
index 48c9560..dddf7b5 100644 (file)
Binary files a/iPhoto2Ansel/English.lproj/Panel.nib/keyedobjects.nib and b/iPhoto2Ansel/English.lproj/Panel.nib/keyedobjects.nib differ