diff --git a/Application/AppController.h b/Application/AppController.h
index aceb4df..695d688 100644
--- a/Application/AppController.h
+++ b/Application/AppController.h
@@ -14,6 +14,7 @@
#import "DCAPITagFormatter.h"
#import "NSString+SFHFUtils.h"
#import "NSDictionary+SFHFUtils.h"
+#import "NSArray+IndexSetAdditions.h"
#import "NSAppleScript+HandlerCalls.h"
#import "SFHFKeychainUtils.h"
#import "SFHFTableView.h"
@@ -134,6 +135,7 @@
- (void) setPostsWithArray: (NSArray *) newPosts;
- (NSMutableDictionary *) posts;
- (NSArray *) postsArray;
+- (NSArray *) selectedPostsArray;
- (NSArray *) urlsArray;
- (void) setFilteredPosts: (NSArray *) newFilteredPosts;
- (NSArray *) filteredPosts;
diff --git a/Application/AppController.m b/Application/AppController.m
index 39a77ed..3719aaf 100644
--- a/Application/AppController.m
+++ b/Application/AppController.m
@@ -536,6 +536,10 @@ - (NSArray *) postsArray {
return [[self posts] allValues];
}
+- (NSArray *) selectedPostsArray {
+ return [[self filteredPosts] subarrayWithIndexes: [postList selectedRowIndexes]];
+}
+
- (NSArray *) urlsArray {
return [[self posts] allKeys];
}
diff --git a/Delicious Client.xcodeproj/buzz.mode1 b/Delicious Client.xcodeproj/buzz.mode1
index 7e758b7..822a5d8 100644
--- a/Delicious Client.xcodeproj/buzz.mode1
+++ b/Delicious Client.xcodeproj/buzz.mode1
@@ -218,6 +218,8 @@
Layout
+ BecomeActive
+
ContentConfiguration
PBXBottomSmartGroupGIDs
@@ -281,7 +283,7 @@
225
RubberWindowFrame
- 62 202 949 592 0 0 1280 832
+ 60 202 949 592 0 0 1280 832
Module
PBXSmartGroupTreeModule
@@ -318,7 +320,7 @@
Frame
{{0, 0}, {702, 0}}
RubberWindowFrame
- 62 202 949 592 0 0 1280 832
+ 60 202 949 592 0 0 1280 832
Module
PBXNavigatorGroup
@@ -326,8 +328,6 @@
0pt
- BecomeActive
-
ContentConfiguration
PBXProjectModuleGUID
@@ -340,7 +340,7 @@
Frame
{{0, 5}, {702, 546}}
RubberWindowFrame
- 62 202 949 592 0 0 1280 832
+ 60 202 949 592 0 0 1280 832
Module
XCDetailModule
@@ -364,9 +364,9 @@
TableOfContents
- 6BFBE6F208D2C1C700C76075
+ 6B804EBC08D381F4009B9F90
1CE0B1FE06471DED0097A5F4
- 6BFBE6F308D2C1C700C76075
+ 6B804EBD08D381F4009B9F90
1CE0B20306471E060097A5F4
1CE0B20506471E060097A5F4
@@ -500,13 +500,10 @@
5
WindowOrderList
- 1C530D57069F1CE1000CFCEE
- 1C0AD2B3069F1EA900FABCE6
- 6BFBD192082EEB42009D11EB
/Users/buzz/Code/Cocoa/cocoalicious/Delicious Client.xcodeproj
WindowString
- 62 202 949 592 0 0 1280 832
+ 60 202 949 592 0 0 1280 832
WindowTools
@@ -522,8 +519,6 @@
Dock
- BecomeActive
-
ContentConfiguration
PBXProjectModuleGUID
@@ -546,10 +541,10 @@
184pt
+ BecomeActive
+
ContentConfiguration
- PBXBuildLogShowsTranscriptDefaultKey
- {{0, 152}, {853, 142}}
PBXProjectModuleGUID
XCMainBuildResultsModuleGUID
PBXProjectModuleLabel
@@ -587,7 +582,7 @@
TableOfContents
6BFBD192082EEB42009D11EB
- 6BFBE6E208D2C11000C76075
+ 6B491D3608D3621C00B6E3C4
1CD0528F0623707200166675
XCMainBuildResultsModuleGUID
@@ -947,9 +942,9 @@
TableOfContents
1C0AD2B3069F1EA900FABCE6
- 6BFBE6E608D2C11000C76075
+ 6B491D1608D3600000B6E3C4
1CD0528B0623707200166675
- 6BFBE6E708D2C11000C76075
+ 6B491D1708D3600000B6E3C4
ToolbarConfiguration
xcode.toolbar.config.run
diff --git a/Delicious Client.xcodeproj/buzz.pbxuser b/Delicious Client.xcodeproj/buzz.pbxuser
index d99a614..99ab5e2 100644
--- a/Delicious Client.xcodeproj/buzz.pbxuser
+++ b/Delicious Client.xcodeproj/buzz.pbxuser
@@ -14,7 +14,7 @@
activeExecutable = 6BAB081D06D2FF6A0058BAC1 /* Cocoal.icio.us */;
activeTarget = 8D1107260486CEB800E47090 /* Cocoal.icio.us */;
addToTargets = (
- 6B47BF5A086345A400636CB2 /* Cocoalicious Definition */,
+ 6B491C9208D35E1700B6E3C4 /* Convert Tags to Strings */,
);
breakpoints = (
);
@@ -145,7 +145,7 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 148029432;
+ PBXPerProjectTemplateStateSaveDate = 148079034;
PBXPrepackagedSmartGroups_v2 = (
{
PBXTransientLocationAtTop = bottom;
@@ -1017,7 +1017,7 @@
PBXModuleWindowStatusBarHidden = YES;
RubberWindowFrame = "465 168 745 467 0 0 1280 832 ";
};
- PBXWorkspaceStateSaveDate = 148029432;
+ PBXWorkspaceStateSaveDate = 148079034;
};
sourceControlManager = 6BF88AE705C4D57100D7EDBB /* Source Control */;
userBuildSettings = {
@@ -1252,17 +1252,17 @@
6B47BF0908633DF600636CB2 /* main.applescript */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {705, 429}}";
- sepNavSelRange = "{0, 0}";
+ sepNavSelRange = "{243, 33}";
sepNavVisRect = "{{0, 0}, {705, 429}}";
- sepNavWindowFrame = "{{15, 269}, {750, 558}}";
+ sepNavWindowFrame = "{{349, 132}, {750, 558}}";
};
};
6B47BF0C08633E0400636CB2 /* Info.plist */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {919, 966}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRect = "{{0, 440}, {919, 526}}";
- sepNavWindowFrame = "{{38, 151}, {964, 655}}";
+ sepNavSelRange = "{941, 0}";
+ sepNavVisRect = "{{0, 0}, {919, 526}}";
+ sepNavWindowFrame = "{{259, 155}, {964, 655}}";
};
};
6B47BF5A086345A400636CB2 /* Cocoalicious Definition */ = {
@@ -1270,9 +1270,9 @@
};
6B47BF5D086345C500636CB2 /* definition.plist */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {705, 3038}}";
- sepNavSelRange = "{4293, 8}";
- sepNavVisRect = "{{0, 2226}, {705, 429}}";
+ sepNavIntBoundsRect = "{{0, 0}, {705, 3052}}";
+ sepNavSelRange = "{2587, 30}";
+ sepNavVisRect = "{{0, 674}, {705, 429}}";
sepNavWindowFrame = "{{449, 155}, {750, 558}}";
};
};
@@ -1300,6 +1300,41 @@
sepNavWindowFrame = "{{61, 130}, {964, 655}}";
};
};
+ 6B491C9208D35E1700B6E3C4 /* Convert Tags to Strings */ = {
+ activeExec = 0;
+ };
+ 6B491CA008D35E5600B6E3C4 /* Info.plist */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1159, 966}}";
+ sepNavSelRange = "{289, 0}";
+ sepNavVisRect = "{{0, 0}, {1159, 583}}";
+ sepNavWindowFrame = "{{15, 115}, {1204, 712}}";
+ };
+ };
+ 6B491CA208D35E7500B6E3C4 /* main.applescript */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1159, 583}}";
+ sepNavSelRange = "{375, 0}";
+ sepNavVisRect = "{{0, 0}, {1159, 583}}";
+ sepNavWindowFrame = "{{15, 115}, {1204, 712}}";
+ };
+ };
+ 6B557A0008D34E74004D4A2A /* NSArray+IndexSetAdditions.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {806, 182}}";
+ sepNavSelRange = "{280, 4}";
+ sepNavVisRect = "{{0, 30}, {806, 152}}";
+ sepNavWindowFrame = "{{18, 97}, {1204, 712}}";
+ };
+ };
+ 6B557A0108D34E74004D4A2A /* NSArray+IndexSetAdditions.m */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1159, 583}}";
+ sepNavSelRange = "{686, 0}";
+ sepNavVisRect = "{{0, 0}, {1159, 583}}";
+ sepNavWindowFrame = "{{15, 115}, {1204, 712}}";
+ };
+ };
6B5A44BC06D1CFB6007C405C /* DCAPITagFormatter.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {711, 404}}";
@@ -1493,17 +1528,17 @@
};
6BD8187E075AFB740088A2CF /* AppController-AppleScriptExtensions.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {782, 1274}}";
- sepNavSelRange = "{1472, 0}";
- sepNavVisRect = "{{0, 715}, {705, 429}}";
- sepNavWindowFrame = "{{176, 122}, {750, 558}}";
+ sepNavIntBoundsRect = "{{0, 0}, {782, 1652}}";
+ sepNavSelRange = "{520, 0}";
+ sepNavVisRect = "{{0, 984}, {705, 429}}";
+ sepNavWindowFrame = "{{371, 126}, {750, 558}}";
};
};
6BD8187F075AFB740088A2CF /* Cocoalicious.sdef */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {711, 882}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRect = "{{0, 0}, {711, 404}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1159, 882}}";
+ sepNavSelRange = "{743, 20}";
+ sepNavVisRect = "{{0, 0}, {1159, 639}}";
sepNavWindowFrame = "{{84, 206}, {750, 558}}";
};
};
@@ -1516,9 +1551,10 @@
};
6BD818EB075AFCE50088A2CF /* DCAPIPost-AppleScriptExtensions.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {711, 489}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRect = "{{0, 0}, {711, 404}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1304, 583}}";
+ sepNavSelRange = "{932, 0}";
+ sepNavVisRect = "{{0, 0}, {1159, 583}}";
+ sepNavWindowFrame = "{{61, 73}, {1204, 712}}";
};
};
6BD818EC075AFCE50088A2CF /* DCAPITag-AppleScriptExtensions.h */ = {
@@ -1561,17 +1597,17 @@
};
6BF88AE305C4D56000D7EDBB /* AppController.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {818, 2548}}";
- sepNavSelRange = "{241, 0}";
- sepNavVisRect = "{{0, 0}, {711, 429}}";
+ sepNavIntBoundsRect = "{{0, 0}, {818, 2576}}";
+ sepNavSelRange = "{4124, 0}";
+ sepNavVisRect = "{{0, 1709}, {705, 429}}";
sepNavWindowFrame = "{{209, 239}, {750, 558}}";
};
};
6BF88AE405C4D56000D7EDBB /* AppController.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1736, 23912}}";
- sepNavSelRange = "{34508, 114}";
- sepNavVisRect = "{{0, 13609}, {806, 152}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1736, 23926}}";
+ sepNavSelRange = "{34588, 114}";
+ sepNavVisRect = "{{0, 13623}, {806, 152}}";
sepNavWindowFrame = "{{442, 274}, {750, 558}}";
};
};
diff --git a/Delicious Client.xcodeproj/project.pbxproj b/Delicious Client.xcodeproj/project.pbxproj
index 17a091f..33e7f16 100644
--- a/Delicious Client.xcodeproj/project.pbxproj
+++ b/Delicious Client.xcodeproj/project.pbxproj
@@ -17,6 +17,16 @@
isSharedContext = 0;
runOnlyForDeploymentPostprocessing = 0;
};
+ 6B491D2708D361F600B6E3C4 /* AppleScript */ = {
+ isa = PBXAppleScriptBuildPhase;
+ buildActionMask = 2147483647;
+ contextName = "";
+ files = (
+ 6B491D3008D3620200B6E3C4 /* main.applescript in AppleScript */,
+ );
+ isSharedContext = 0;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXAppleScriptBuildPhase section */
/* Begin PBXBuildFile section */
@@ -58,9 +68,16 @@
6B47BF1908633E4D00636CB2 /* main.applescript in AppleScript */ = {isa = PBXBuildFile; fileRef = 6B47BF0908633DF600636CB2 /* main.applescript */; settings = {ATTRIBUTES = (Debug, ); }; };
6B47BF1A08633E8700636CB2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
6B47BF1E08633EB700636CB2 /* Automator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B47BF1D08633EB700636CB2 /* Automator.framework */; };
- 6B47BF510863443C00636CB2 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 6B47BF4F0863443C00636CB2 /* main.nib */; };
6B47BF5E086345C500636CB2 /* definition.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6B47BF5D086345C500636CB2 /* definition.plist */; };
6B47BF61086345CF00636CB2 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6B47BF5F086345CF00636CB2 /* Localizable.strings */; };
+ 6B491D1008D35FEE00B6E3C4 /* Convert Tags to Strings.caction in CopyFiles */ = {isa = PBXBuildFile; fileRef = 6B491C9308D35E1700B6E3C4 /* Convert Tags to Strings.caction */; };
+ 6B491D1A08D361CF00B6E3C4 /* Automator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B47BF1D08633EB700636CB2 /* Automator.framework */; };
+ 6B491D1B08D361CF00B6E3C4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+ 6B491D3008D3620200B6E3C4 /* main.applescript in AppleScript */ = {isa = PBXBuildFile; fileRef = 6B491CA208D35E7500B6E3C4 /* main.applescript */; settings = {ATTRIBUTES = (Debug, ); }; };
+ 6B557A0208D34E74004D4A2A /* NSArray+IndexSetAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B557A0008D34E74004D4A2A /* NSArray+IndexSetAdditions.h */; };
+ 6B557A0308D34E74004D4A2A /* NSArray+IndexSetAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B557A0108D34E74004D4A2A /* NSArray+IndexSetAdditions.m */; };
+ 6B557A5F08D3558D004D4A2A /* Convert Posts to URLs.caction in CopyFiles */ = {isa = PBXBuildFile; fileRef = 6B47BEFA08633D0800636CB2 /* Convert Posts to URLs.caction */; };
+ 6B557A6008D35590004D4A2A /* Cocoalicious.definition in CopyFiles */ = {isa = PBXBuildFile; fileRef = 6B47BF5B086345A400636CB2 /* Cocoalicious.definition */; };
6B5A44BE06D1CFB6007C405C /* DCAPITagFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5A44BC06D1CFB6007C405C /* DCAPITagFormatter.h */; };
6B5A44BF06D1CFB6007C405C /* DCAPITagFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5A44BD06D1CFB6007C405C /* DCAPITagFormatter.m */; };
6B61ACDC0846382500A27692 /* KFTypeSelectTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B61ACDA0846382500A27692 /* KFTypeSelectTableView.m */; };
@@ -137,6 +154,30 @@
};
/* End PBXBuildStyle section */
+/* Begin PBXContainerItemProxy section */
+ 6B491CBA08D35EA700B6E3C4 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6B491C9208D35E1700B6E3C4;
+ remoteInfo = "Convert Tags to Strings";
+ };
+ 6B557A4408D35531004D4A2A /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6B47BEF908633D0800636CB2;
+ remoteInfo = "Convert Posts to URLs";
+ };
+ 6B557A4608D35536004D4A2A /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6B47BF5A086345A400636CB2;
+ remoteInfo = "Cocoalicious Definition";
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXCopyFilesBuildPhase section */
6B47BF6D0863468200636CB2 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
@@ -153,6 +194,9 @@
dstPath = Contents/Library/Automator;
dstSubfolderSpec = 1;
files = (
+ 6B491D1008D35FEE00B6E3C4 /* Convert Tags to Strings.caction in CopyFiles */,
+ 6B557A6008D35590004D4A2A /* Cocoalicious.definition in CopyFiles */,
+ 6B557A5F08D3558D004D4A2A /* Convert Posts to URLs.caction in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -207,12 +251,16 @@
6B47BF0908633DF600636CB2 /* main.applescript */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.applescript; name = main.applescript; path = "Scripting/Automator/Convert Posts To URLs/main.applescript"; sourceTree = ""; };
6B47BF0C08633E0400636CB2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; name = Info.plist; path = "Scripting/Automator/Convert Posts To URLs/Info.plist"; sourceTree = ""; };
6B47BF1D08633EB700636CB2 /* Automator.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Automator.framework; path = /System/Library/Frameworks/Automator.framework; sourceTree = ""; };
- 6B47BF500863443C00636CB2 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = "Scripting/Automator/Convert Posts To URLs/English.lproj/main.nib"; sourceTree = ""; };
6B47BF5B086345A400636CB2 /* Cocoalicious.definition */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Cocoalicious.definition; sourceTree = BUILT_PRODUCTS_DIR; };
6B47BF5D086345C500636CB2 /* definition.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; name = definition.plist; path = Scripting/Automator/Definition/definition.plist; sourceTree = ""; };
6B47BF60086345CF00636CB2 /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; };
6B47BF62086345DF00636CB2 /* version.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; name = version.plist; path = Scripting/Automator/Definition/version.plist; sourceTree = ""; };
6B47BF64086345F100636CB2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; name = Info.plist; path = Scripting/Automator/Definition/Info.plist; sourceTree = ""; };
+ 6B491C9308D35E1700B6E3C4 /* Convert Tags to Strings.caction */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Convert Tags to Strings.caction"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6B491CA008D35E5600B6E3C4 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; name = Info.plist; path = "Scripting/Automator/Convert Tags to Strings/Info.plist"; sourceTree = ""; };
+ 6B491CA208D35E7500B6E3C4 /* main.applescript */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.applescript; name = main.applescript; path = "Scripting/Automator/Convert Tags to Strings/main.applescript"; sourceTree = ""; };
+ 6B557A0008D34E74004D4A2A /* NSArray+IndexSetAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSArray+IndexSetAdditions.h"; path = "Utilities/NSArray+IndexSetAdditions.h"; sourceTree = ""; };
+ 6B557A0108D34E74004D4A2A /* NSArray+IndexSetAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSArray+IndexSetAdditions.m"; path = "Utilities/NSArray+IndexSetAdditions.m"; sourceTree = ""; };
6B5A44BC06D1CFB6007C405C /* DCAPITagFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DCAPITagFormatter.h; path = DCAPI/DCAPITagFormatter.h; sourceTree = ""; };
6B5A44BD06D1CFB6007C405C /* DCAPITagFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DCAPITagFormatter.m; path = DCAPI/DCAPITagFormatter.m; sourceTree = ""; };
6B61ACDA0846382500A27692 /* KFTypeSelectTableView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = KFTypeSelectTableView.m; path = UI/KFTypeSelectTableView.m; sourceTree = ""; };
@@ -271,6 +319,15 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 6B491C9108D35E1700B6E3C4 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6B491D1A08D361CF00B6E3C4 /* Automator.framework in Frameworks */,
+ 6B491D1B08D361CF00B6E3C4 /* Cocoa.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
8D11072E0486CEB800E47090 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -319,6 +376,7 @@
6BAB081C06D2FF6A0058BAC1 /* Cocoalicious.app */,
6B47BEFA08633D0800636CB2 /* Convert Posts to URLs.caction */,
6B47BF5B086345A400636CB2 /* Cocoalicious.definition */,
+ 6B491C9308D35E1700B6E3C4 /* Convert Tags to Strings.caction */,
);
name = Products;
sourceTree = "";
@@ -403,6 +461,7 @@
children = (
6B47BF54086344E900636CB2 /* Definition */,
6B47BEDE08633BF100636CB2 /* Convert Posts to URLs */,
+ 6B491C9F08D35E2B00B6E3C4 /* Convert Tags to Strings */,
);
name = "Automator Actions";
sourceTree = "";
@@ -410,7 +469,6 @@
6B47BEDE08633BF100636CB2 /* Convert Posts to URLs */ = {
isa = PBXGroup;
children = (
- 6B47BF4F0863443C00636CB2 /* main.nib */,
6B47BF0908633DF600636CB2 /* main.applescript */,
6B47BF0C08633E0400636CB2 /* Info.plist */,
);
@@ -428,6 +486,15 @@
name = Definition;
sourceTree = "";
};
+ 6B491C9F08D35E2B00B6E3C4 /* Convert Tags to Strings */ = {
+ isa = PBXGroup;
+ children = (
+ 6B491CA208D35E7500B6E3C4 /* main.applescript */,
+ 6B491CA008D35E5600B6E3C4 /* Info.plist */,
+ );
+ name = "Convert Tags to Strings";
+ sourceTree = "";
+ };
6BD81875075AFB510088A2CF /* AppleScript Support */ = {
isa = PBXGroup;
children = (
@@ -458,6 +525,8 @@
6B21259A071D935F0044339D /* SFHFKeychainUtils.m */,
6B4324FB08C6DD8C00C26737 /* SFHFFaviconCache.h */,
6B4324FC08C6DD8C00C26737 /* SFHFFaviconCache.m */,
+ 6B557A0008D34E74004D4A2A /* NSArray+IndexSetAdditions.h */,
+ 6B557A0108D34E74004D4A2A /* NSArray+IndexSetAdditions.m */,
);
name = Utilities;
sourceTree = "";
@@ -551,6 +620,7 @@
6B6475F30867E2F800CD0EC9 /* EBIconAndTextCell.h in Headers */,
6B6475F50867E31500CD0EC9 /* NSFileManager+ESBExtensions.h in Headers */,
6BE1ED1708C82BCD003EDABC /* SFHFFaviconCache.h in Headers */,
+ 6B557A0208D34E74004D4A2A /* NSArray+IndexSetAdditions.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -683,6 +753,70 @@
1.0
+";
+ productType = "com.apple.product-type.bundle";
+ };
+ 6B491C9208D35E1700B6E3C4 /* Convert Tags to Strings */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6B491C9908D35E1700B6E3C4 /* Build configuration list for PBXNativeTarget "Convert Tags to Strings" */;
+ buildPhases = (
+ 6B491C8F08D35E1700B6E3C4 /* Resources */,
+ 6B491C9108D35E1700B6E3C4 /* Frameworks */,
+ 6B491D2708D361F600B6E3C4 /* AppleScript */,
+ );
+ buildRules = (
+ );
+ buildSettings = {
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+ INFOPLIST_FILE = "Convert Tags to Strings-Info.plist";
+ INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+ LIBRARY_STYLE = BUNDLE;
+ OPTIMIZATION_CFLAGS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Carbon,
+ );
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "Convert Tags to Strings";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ dependencies = (
+ );
+ name = "Convert Tags to Strings";
+ productName = "Convert Tags to Strings";
+ productReference = 6B491C9308D35E1700B6E3C4 /* Convert Tags to Strings.caction */;
+ productSettingsXML = "
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ Convert Tags to Strings
+ CFBundleIdentifier
+ com.yourcompany.Convert_Tags_to_Strings
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ APPL
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ CSResourcesFileMapped
+ yes
+
+
";
productType = "com.apple.product-type.bundle";
};
@@ -724,6 +858,9 @@
WRAPPER_EXTENSION = app;
};
dependencies = (
+ 6B557A4508D35531004D4A2A /* PBXTargetDependency */,
+ 6B557A4708D35536004D4A2A /* PBXTargetDependency */,
+ 6B491CBB08D35EA700B6E3C4 /* PBXTargetDependency */,
);
name = Cocoal.icio.us;
productInstallPath = "$(HOME)/Applications";
@@ -750,6 +887,7 @@
8D1107260486CEB800E47090 /* Cocoal.icio.us */,
6B47BEF908633D0800636CB2 /* Convert Posts to URLs */,
6B47BF5A086345A400636CB2 /* Cocoalicious Definition */,
+ 6B491C9208D35E1700B6E3C4 /* Convert Tags to Strings */,
);
};
/* End PBXProject section */
@@ -759,7 +897,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 6B47BF510863443C00636CB2 /* main.nib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -773,6 +910,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 6B491C8F08D35E1700B6E3C4 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
8D1107290486CEB800E47090 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -854,11 +998,30 @@
6B6475F40867E2FB00CD0EC9 /* EBIconAndTextCell.m in Sources */,
6B6475F60867E31600CD0EC9 /* NSFileManager+ESBExtensions.m in Sources */,
6BE1ED1808C82BD0003EDABC /* SFHFFaviconCache.m in Sources */,
+ 6B557A0308D34E74004D4A2A /* NSArray+IndexSetAdditions.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ 6B491CBB08D35EA700B6E3C4 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6B491C9208D35E1700B6E3C4 /* Convert Tags to Strings */;
+ targetProxy = 6B491CBA08D35EA700B6E3C4 /* PBXContainerItemProxy */;
+ };
+ 6B557A4508D35531004D4A2A /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6B47BEF908633D0800636CB2 /* Convert Posts to URLs */;
+ targetProxy = 6B557A4408D35531004D4A2A /* PBXContainerItemProxy */;
+ };
+ 6B557A4708D35536004D4A2A /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6B47BF5A086345A400636CB2 /* Cocoalicious Definition */;
+ targetProxy = 6B557A4608D35536004D4A2A /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
@@ -876,14 +1039,6 @@
name = MainMenu.nib;
sourceTree = "";
};
- 6B47BF4F0863443C00636CB2 /* main.nib */ = {
- isa = PBXVariantGroup;
- children = (
- 6B47BF500863443C00636CB2 /* English */,
- );
- name = main.nib;
- sourceTree = "";
- };
6B47BF5F086345CF00636CB2 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
@@ -896,6 +1051,95 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
+ 6B491C9A08D35E1700B6E3C4 /* Development */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h";
+ INFOPLIST_FILE = "Scripting/Automator/Convert Tags to Strings/Info.plist";
+ INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+ LIBRARY_STYLE = STATIC;
+ OPTIMIZATION_CFLAGS = "-O0";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Cocoa,
+ );
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "Convert Tags to Strings";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ WRAPPER_EXTENSION = caction;
+ };
+ name = Development;
+ };
+ 6B491C9B08D35E1700B6E3C4 /* Deployment */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h";
+ INFOPLIST_FILE = "Scripting/Automator/Convert Tags to Strings/Info.plist";
+ INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+ LIBRARY_STYLE = STATIC;
+ OPTIMIZATION_CFLAGS = "-O0";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Cocoa,
+ );
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "Convert Tags to Strings";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ WRAPPER_EXTENSION = caction;
+ };
+ name = Deployment;
+ };
+ 6B491C9C08D35E1700B6E3C4 /* Default */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h";
+ INFOPLIST_FILE = "Scripting/Automator/Convert Tags to Strings/Info.plist";
+ INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+ LIBRARY_STYLE = STATIC;
+ OPTIMIZATION_CFLAGS = "-O0";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Cocoa,
+ );
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "Convert Tags to Strings";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ WRAPPER_EXTENSION = caction;
+ };
+ name = Default;
+ };
6BBFD3BA08AD6B1D005A088A /* Development */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -1223,6 +1467,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 6B491C9908D35E1700B6E3C4 /* Build configuration list for PBXNativeTarget "Convert Tags to Strings" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6B491C9A08D35E1700B6E3C4 /* Development */,
+ 6B491C9B08D35E1700B6E3C4 /* Deployment */,
+ 6B491C9C08D35E1700B6E3C4 /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ };
6BBFD3B908AD6B1D005A088A /* Build configuration list for PBXNativeTarget "Convert Posts to URLs" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/Scripting/AppController-AppleScriptExtensions.m b/Scripting/AppController-AppleScriptExtensions.m
index 465db6c..6f4ff90 100644
--- a/Scripting/AppController-AppleScriptExtensions.m
+++ b/Scripting/AppController-AppleScriptExtensions.m
@@ -16,7 +16,7 @@ @implementation AppController (AppleScriptExtensions)
This also should make it easier to change storage method in the future. */
- (int) countOfOrderedPosts {
- return [[self posts] count];
+ return [[self postsArray] count];
}
- (int) indexOfObjectInOrderedPosts: (id) object {
@@ -74,6 +74,31 @@ - (id) objectInOrderedTagsAtIndex: (int) index {
return [self valueInOrderedTagsAtIndex: index];
}
+
+- (int) countOfOrderedSelectedPosts {
+ return [[self selectedPostsArray] count];
+}
+
+- (int) indexOfObjectInOrderedSelectedPosts: (id) object {
+ return [[self selectedPostsArray] indexOfObject: object];
+}
+
+- (id) valueInOrderedSelectedPostsAtIndex: (int) index {
+ if (index < [self countOfOrderedSelectedPosts]) {
+ return [[self selectedPostsArray] objectAtIndex: index];
+ } else {
+ return nil;
+ }
+}
+
+- (id) objectInOrderedSelectedPostsAtIndex: (int) index {
+ return [self valueInOrderedSelectedPostsAtIndex: index];
+}
+
+- (NSArray *) orderedSelectedPosts {
+ return [self selectedPostsArray];
+}
+
#pragma mark Application Delegate Methods
- (BOOL)application:(NSApplication *)sender delegateHandlesKey:(NSString *)key {
@@ -82,6 +107,8 @@ - (BOOL)application:(NSApplication *)sender delegateHandlesKey:(NSString *)key {
return YES;
} else if ([key isEqualToString:@"orderedTags"]) {
return YES;
+ } else if ([key isEqualToString:@"orderedSelectedPosts"]) {
+ return YES;
} else {
return NO;
}
diff --git a/Scripting/Automator/Convert Posts To URLs/main.applescript b/Scripting/Automator/Convert Posts To URLs/main.applescript
index ef5e2f9..ce7b1fa 100644
--- a/Scripting/Automator/Convert Posts To URLs/main.applescript
+++ b/Scripting/Automator/Convert Posts To URLs/main.applescript
@@ -8,7 +8,9 @@ on run {input, parameters}
set output to {}
tell application "Cocoalicious"
repeat with x in input
- set end of output to url of x
+ if the class of x is post then
+ set end of output to url of x
+ end if
end repeat
end tell
return output
diff --git a/Scripting/Automator/Convert Tags to Strings/Info.plist b/Scripting/Automator/Convert Tags to Strings/Info.plist
new file mode 100644
index 0000000..d10dea6
--- /dev/null
+++ b/Scripting/Automator/Convert Tags to Strings/Info.plist
@@ -0,0 +1,68 @@
+
+
+
+
+ AMAccepts
+
+ Container
+ List
+ Optional
+
+ Types
+
+ com.scifihifi.cocoalicious.tag
+
+
+ AMApplication
+ Automator
+ AMCanShowSelectedItemsWhenRun
+
+ AMCanShowWhenRun
+
+ AMCategory
+ Converter/Filter
+ AMDefaultParameters
+
+ AMIconName
+ (* The name of the icon *)
+ AMKeywords
+
+ AMName
+ Convert Tag to String
+ AMProvides
+
+ Container
+ List
+ Types
+
+ com.apple.applescript.text-object
+
+
+ AMRequiredResources
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ Convert Tags To Strings
+ CFBundleGetInfoString
+ Convert Tags To Strings version 1.0, Copyright (c) 2005, Buzz Andersen.
+ CFBundleIconFile
+
+ CFBundleIdentifier
+ com.scifihifi.cocoalicious.converttagsaction
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ Convert Tags To Strings
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ NSPrincipalClass
+ AMAppleScriptAction
+
+
diff --git a/Scripting/Automator/Convert Tags to Strings/main.applescript b/Scripting/Automator/Convert Tags to Strings/main.applescript
new file mode 100644
index 0000000..c3ea42c
--- /dev/null
+++ b/Scripting/Automator/Convert Tags to Strings/main.applescript
@@ -0,0 +1,17 @@
+-- main.applescript
+-- Convert Posts To URLs
+
+-- Created by Buzz Andersen on 10.09.05.
+-- Copyright 2005 __MyCompanyName__. All rights reserved.
+
+on run {input, parameters}
+ set output to {}
+ tell application "Cocoalicious"
+ repeat with x in input
+ if the class of x is tag then
+ set end of output to name of x
+ end if
+ end repeat
+ end tell
+ return output
+end run
diff --git a/Scripting/Automator/Definition/definition.plist b/Scripting/Automator/Definition/definition.plist
index 8b07db5..1939dc4 100644
--- a/Scripting/Automator/Definition/definition.plist
+++ b/Scripting/Automator/Definition/definition.plist
@@ -151,8 +151,9 @@
~/Library/Automator/Cocoalicious
scripts
-
+ end run
+
find every item
on run {input, parameters}
@@ -199,7 +200,7 @@ end run
end run
-
+
diff --git a/Scripting/Cocoalicious.sdef b/Scripting/Cocoalicious.sdef
index 5faf80f..a3d923f 100644
--- a/Scripting/Cocoalicious.sdef
+++ b/Scripting/Cocoalicious.sdef
@@ -19,6 +19,11 @@
+
+
+
+
+
diff --git a/Scripting/DCAPIPost-AppleScriptExtensions.m b/Scripting/DCAPIPost-AppleScriptExtensions.m
index f6c6e17..81f9eff 100644
--- a/Scripting/DCAPIPost-AppleScriptExtensions.m
+++ b/Scripting/DCAPIPost-AppleScriptExtensions.m
@@ -25,6 +25,7 @@ - (NSScriptObjectSpecifier *) objectSpecifier {
- (void) setURLAsString: (NSString *) newURLString {
[self setURL: [NSURL URLWithString: newURLString]];
}
+
- (NSString *) URLAsString {
return [[self URL] absoluteString];
}
diff --git a/Utilities/NSArray+IndexSetAdditions.h b/Utilities/NSArray+IndexSetAdditions.h
new file mode 100644
index 0000000..04aaf1d
--- /dev/null
+++ b/Utilities/NSArray+IndexSetAdditions.h
@@ -0,0 +1,13 @@
+//
+// NSArray+IndexSetAdditions.h
+// Delicious Client
+//
+// Written by Scott Stevenson (see http://theocacao.com/document.page/66 for more information)
+//
+
+#import
+
+
+@interface NSArray (IndexSetAddition)
+- (NSArray *)subarrayWithIndexes: (NSIndexSet *)indexes;
+@end
\ No newline at end of file
diff --git a/Utilities/NSArray+IndexSetAdditions.m b/Utilities/NSArray+IndexSetAdditions.m
new file mode 100644
index 0000000..24ba955
--- /dev/null
+++ b/Utilities/NSArray+IndexSetAdditions.m
@@ -0,0 +1,31 @@
+//
+// NSArray+IndexSetAdditions.m
+// Delicious Client
+//
+// Created by Buzz Andersen on 9/10/05.
+// Copyright 2005 __MyCompanyName__. All rights reserved.
+//
+
+#import "NSArray+IndexSetAdditions.h"
+
+
+@implementation NSArray (IndexSetAddition)
+
+- (NSArray *) subarrayWithIndexes: (NSIndexSet *)indexes
+{
+ NSMutableArray *targetArray = [NSMutableArray array];
+ unsigned count = [self count];
+
+ unsigned index = [indexes firstIndex];
+ while ( index != NSNotFound )
+ {
+ if ( index < count )
+ [targetArray addObject: [self objectAtIndex: index]];
+
+ index = [indexes indexGreaterThanIndex: index];
+ }
+
+ return targetArray;
+}
+
+@end
\ No newline at end of file