Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

version 2.0 major overhaul

  • Loading branch information...
commit e56bf1e72e5b2a6a7510e220ecd8895385c95353 1 parent b5453c8
@pjrobertson authored
Showing with 2,292 additions and 915 deletions.
  1. +22 −38 Info.plist
  2. +81 −86 OnePassword.xcodeproj/patrick.mode1v3
  3. +265 −502 OnePassword.xcodeproj/patrick.pbxuser
  4. +46 −58 OnePassword.xcodeproj/project.pbxproj
  5. +2 −2 OnePasswordAction.h
  6. +84 −27 OnePasswordAction.m
  7. +0 −1  OnePasswordSource.h
  8. +144 −201 OnePasswordSource.m
  9. +15 −0 README.markdown
  10. BIN  RevealIn1Pwd.scpt
  11. +1 −0  YAJL.framework/Headers
  12. +1 −0  YAJL.framework/Resources
  13. +62 −0 YAJL.framework/Versions/A/Headers/NSBundle+YAJL.h
  14. +154 −0 YAJL.framework/Versions/A/Headers/NSObject+YAJL.h
  15. +212 −0 YAJL.framework/Versions/A/Headers/YAJL.h
  16. +196 −0 YAJL.framework/Versions/A/Headers/YAJLDocument.h
  17. +171 −0 YAJL.framework/Versions/A/Headers/YAJLGen.h
  18. +181 −0 YAJL.framework/Versions/A/Headers/YAJLParser.h
  19. +85 −0 YAJL.framework/Versions/A/Headers/yajl_common.h
  20. +159 −0 YAJL.framework/Versions/A/Headers/yajl_gen.h
  21. +193 −0 YAJL.framework/Versions/A/Headers/yajl_parse.h
  22. +23 −0 YAJL.framework/Versions/A/Headers/yajl_version.h
  23. BIN  YAJL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings
  24. +22 −0 YAJL.framework/Versions/A/Resources/Info.plist
  25. BIN  YAJL.framework/Versions/A/YAJL
  26. +1 −0  YAJL.framework/Versions/Current
  27. +1 −0  YAJL.framework/YAJL
  28. +171 −0 action_save
View
60 Info.plist
@@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
- <string>1.1</string>
+ <string>2.0.0</string>
<key>CFBundleVersion</key>
- <string>11B</string>
+ <string>211</string>
<key>QSActions</key>
<dict>
<key>goAndFill</key>
@@ -33,12 +33,29 @@
<string>QS1PasswordForm</string>
</array>
<key>name</key>
- <string>Go &amp; Fill...</string>
+ <string>Go &amp; Fill</string>
<key>precedence</key>
<string>4</string>
<key>validatesObjects</key>
<false/>
</dict>
+ <key>goAndFillWith</key>
+ <dict>
+ <key>actionClass</key>
+ <string>OnePasswordAction</string>
+ <key>actionSelector</key>
+ <string>goAndFill:with:</string>
+ <key>directTypes</key>
+ <array>
+ <string>QS1PasswordForm</string>
+ </array>
+ <key>name</key>
+ <string>Go &amp; Fill With...</string>
+ <key>precedence</key>
+ <string>3</string>
+ <key>validatesObjects</key>
+ <false/>
+ </dict>
<key>viewInOnePwd</key>
<dict>
<key>actionClass</key>
@@ -71,9 +88,9 @@
<string>Applications</string>
</array>
<key>description</key>
- <string>Adds support for 1Password Go &amp; Fill</string>
+ <string>Adds support for 1Password Data to Reveal in 1Password and to Go &amp; Fill web forms</string>
<key>extendedDescription</key>
- <string>&lt;h3&gt;1Password 3 Plugin&lt;/h3&gt;
&lt;p&gt;This plugin enables you to right arrow into the 1Password application, giving you a list of all your data saved in 1Password&lt;br /&gt;
&lt;p&gt;Having selected a web login, using the action 'Go &amp; Fill...' will perform just like the Go &amp; Fill action from within 1Password&lt;/p&gt;
&lt;p&gt;The 'Go &amp; Fill...' action works with the comma trick, so you can open multiple logins at once&lt;/p&gt;
&lt;p&gt;To save you time from having to search for 1Password, then right arrow you can 'tick' the 'Web Forms' source under Catalog Preferences, and all forms will be searchable from anywhere (disbaled by default)&lt;br /&gt;
You may need to rescan manually to start with&lt;/p&gt;
&lt;p&gt;This plugin also adds support for 'Reveal in 1Password' of all data types - web forms, accounts, software, identities, wallet items and notes.&lt;br /&gt;
Just use the action 'Reveal in 1Password'&lt;/p&gt;
&lt;p&gt;This is an early test project, and any ideas or bugs should be addressed to me@patjack.co.uk&lt;/p&gt;</string>
+ <string>&lt;h3&gt;1Password 3 Plugin&lt;/h3&gt;&lt;p&gt;This plugin enables right arrowing into the 1Password application, giving access to data saved in 1Password&lt;br /&gt;&lt;p&gt;Web logins objects, have 'Go &amp; Fill' action, as well as a 'Go &amp; Fill With...' action. &lt;/p&gt;&lt;p&gt;These actions works with the comma trick, so you can open multiple logins at once, or open them in multiple browsers&lt;/p&gt;&lt;p&gt;1Password data can be indexed directly in the Quicksilver catalog by 'ticking' the 'Web Forms' source under Catalog Preferences (disbaled by default)&lt;br /&gt;
This plugin also adds support for 'Reveal in 1Password' for all data types: web forms, accounts, software, identities, wallet items and notes using the action 'Reveal in 1Password'&lt;/p&gt;&lt;p&gt;This plugin has taken a lot of development, so please consider &lt;a href="http://patjack.co.uk/donating-for-my-quicksilver-1password-plugin/"&gt;donating&lt;/a&gt;.&lt;/p&gt;</string>
<key>icon</key>
<string>ws.agile.1Password</string>
</dict>
@@ -212,38 +229,5 @@
<string>OnePasswordSource</string>
</dict>
</dict>
- <key>QSRequirementsTemplate</key>
- <dict>
- <key>bundlesTemplate</key>
- <array>
- <dict>
- <key>id</key>
- <string></string>
- <key>name</key>
- <string></string>
- <key>version</key>
- <string></string>
- </dict>
- </array>
- <key>feature</key>
- <integer>0</integer>
- <key>launchLoad</key>
- <false/>
- <key>pathsTemplate</key>
- <array>
- <string>/path/to/something</string>
- </array>
- <key>pluginsTemplate</key>
- <array>
- <dict>
- <key>id</key>
- <string></string>
- <key>name</key>
- <string></string>
- <key>version</key>
- <string></string>
- </dict>
- </array>
- </dict>
</dict>
</plist>
View
167 OnePassword.xcodeproj/patrick.mode1v3
@@ -229,6 +229,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -265,10 +267,13 @@
<array>
<string>0259C574FE90428111CA0C5A</string>
<string>32DBCF9E0370C38000C91783</string>
- <string>32DBCF9F0370C38200C91783</string>
<string>0259C582FE90428111CA0C5A</string>
<string>2E58F364FFB232C311CA0CBA</string>
<string>1C37FBAC04509CD000000102</string>
+ <string>CD3E954D13C5D265000BFB0D</string>
+ <string>CD3E957313C5D2B4000BFB0D</string>
+ <string>CD3E957013C5D29A000BFB0D</string>
+ <string>CD3E954E13C5D265000BFB0D</string>
<string>1C37FABC05509CD000000102</string>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
@@ -278,7 +283,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {267, 664}}</string>
+ <string>{{0, 0}, {267, 730}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -290,14 +295,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {284, 682}}</string>
+ <string>{{0, 0}, {284, 748}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>267</real>
</array>
<key>RubberWindowFrame</key>
- <string>81 55 1199 723 0 0 1280 778 </string>
+ <string>148 225 1377 789 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -313,7 +318,7 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>OnePassword.m</string>
+ <string>OnePasswordSource.m</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -321,43 +326,33 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
- <string>OnePassword.m</string>
+ <string>OnePasswordSource.m</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>CDD8BC5D11EE959300FF9C66</string>
+ <string>CD3E976E13C655DE000BFB0D</string>
<key>history</key>
<array>
- <string>CD79A4951102B461004ED2F3</string>
<string>CDD8746E113166F7009ED78C</string>
<string>CDD87470113166F7009ED78C</string>
<string>CDD8747611316720009ED78C</string>
<string>CD9E5CEB1158DCDF00CCCA80</string>
- <string>CD106D7A1161E21C00121C1E</string>
- <string>CD106D7C1161E21C00121C1E</string>
- <string>CD106D7E1161E21C00121C1E</string>
- <string>CD106D7F1161E21C00121C1E</string>
- <string>CD106D961161E41D00121C1E</string>
- <string>CD106DB21161E46100121C1E</string>
- <string>CD106ECB1161F82A00121C1E</string>
- <string>CD95EF901162392500967D3C</string>
<string>CD95F00711623A6000967D3C</string>
<string>CDB2D14F1163A6CD00A97A31</string>
- <string>CD1CF9B91163F198005118CC</string>
- <string>CDB9DD0F11C38B5500293EB0</string>
- <string>CD791F7D11C6A332002465AE</string>
- <string>CD791F8011C6A332002465AE</string>
- <string>CD4ECCC411D54CAC00B4FDF6</string>
- <string>CD1E8AFF11DA98A100E3C19D</string>
- <string>CD1E8B0011DA98A100E3C19D</string>
- <string>CD7B34A811DB227E00ED660A</string>
- <string>CD7B34B811DB270800ED660A</string>
- <string>CD13416F11E9586400819949</string>
- <string>CD13418911E95A7200819949</string>
- <string>CD13418A11E95A7200819949</string>
- <string>CD9B466B11EDA32D000C5DDA</string>
- <string>CDD8BC5611EE94D100FF9C66</string>
- <string>CDD8BC5711EE94D100FF9C66</string>
+ <string>CD8813BF13A3BD3E00A466F1</string>
+ <string>CD3E901213C5B146000BFB0D</string>
+ <string>CD3E90BA13C5B8AB000BFB0D</string>
+ <string>CD3E940013C5C7E2000BFB0D</string>
+ <string>CD3E940113C5C7E2000BFB0D</string>
+ <string>CD3E940413C5C7E2000BFB0D</string>
+ <string>CD3E940513C5C7E2000BFB0D</string>
+ <string>CD3E940813C5C7E2000BFB0D</string>
+ <string>CD3E94E413C5CDBB000BFB0D</string>
+ <string>CD3E94E713C5CDBB000BFB0D</string>
+ <string>CD3E969C13C5EBF5000BFB0D</string>
+ <string>CD3E975013C5F4DB000BFB0D</string>
+ <string>CD3E975113C5F4DB000BFB0D</string>
+ <string>CD3E974013C5F3DC000BFB0D</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +364,16 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {910, 408}}</string>
+ <string>{{0, 0}, {1088, 476}}</string>
<key>RubberWindowFrame</key>
- <string>81 55 1199 723 0 0 1280 778 </string>
+ <string>148 225 1377 789 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>408pt</string>
+ <string>476pt</string>
</dict>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -391,18 +384,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 413}, {910, 269}}</string>
+ <string>{{0, 481}, {1088, 267}}</string>
<key>RubberWindowFrame</key>
- <string>81 55 1199 723 0 0 1280 778 </string>
+ <string>148 225 1377 789 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
<key>Proportion</key>
- <string>269pt</string>
+ <string>267pt</string>
</dict>
</array>
<key>Proportion</key>
- <string>910pt</string>
+ <string>1088pt</string>
</dict>
</array>
<key>Name</key>
@@ -417,9 +410,9 @@
</array>
<key>TableOfContents</key>
<array>
- <string>CDD8BC2C11EE921D00FF9C66</string>
+ <string>CD3E946613C5C91D000BFB0D</string>
<string>1CE0B1FE06471DED0097A5F4</string>
- <string>CDD8BC2D11EE921D00FF9C66</string>
+ <string>CD3E946713C5C91D000BFB0D</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
@@ -557,12 +550,12 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>CDD8BC5E11EE959300FF9C66</string>
+ <string>1CD10A99069EF8BA00B06720</string>
<string>CDB5BBA7110109B50001C0D3</string>
<string>/Developer/Apps/OnePassword/1Password-Plugin/OnePassword.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>81 55 1199 723 0 0 1280 778 </string>
+ <string>148 225 1377 789 0 0 1680 1028 </string>
<key>WindowToolsV3</key>
<array>
<dict>
@@ -583,23 +576,25 @@
<key>PBXProjectModuleGUID</key>
<string>1CD0528F0623707200166675</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>OnePasswordAction.m</string>
<key>StatusBarVisibility</key>
<true/>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {1199, 216}}</string>
+ <string>{{0, 0}, {1199, 188}}</string>
<key>RubberWindowFrame</key>
- <string>81 81 1199 674 0 0 1280 778 </string>
+ <string>429 272 1199 674 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>216pt</string>
+ <string>188pt</string>
</dict>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -614,14 +609,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 221}, {1199, 412}}</string>
+ <string>{{0, 193}, {1199, 440}}</string>
<key>RubberWindowFrame</key>
- <string>81 81 1199 674 0 0 1280 778 </string>
+ <string>429 272 1199 674 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
<key>Proportion</key>
- <string>412pt</string>
+ <string>440pt</string>
</dict>
</array>
<key>Proportion</key>
@@ -639,7 +634,7 @@
<key>TableOfContents</key>
<array>
<string>CDB5BBA7110109B50001C0D3</string>
- <string>CDD8BC2E11EE921D00FF9C66</string>
+ <string>CD3E945D13C5C8F3000BFB0D</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
@@ -648,7 +643,7 @@
<key>WindowContentMinSize</key>
<string>486 300</string>
<key>WindowString</key>
- <string>81 81 1199 674 0 0 1280 778 </string>
+ <string>429 272 1199 674 0 0 1680 1028 </string>
<key>WindowToolGUID</key>
<string>CDB5BBA7110109B50001C0D3</string>
<key>WindowToolIsVisible</key>
@@ -683,8 +678,8 @@
<string>yes</string>
<key>sizes</key>
<array>
- <string>{{0, 0}, {347, 190}}</string>
- <string>{{0, 190}, {347, 191}}</string>
+ <string>{{0, 0}, {347, 197}}</string>
+ <string>{{347, 0}, {347, 197}}</string>
</array>
</dict>
<key>VerticalSplitView</key>
@@ -699,8 +694,8 @@
<string>yes</string>
<key>sizes</key>
<array>
- <string>{{0, 0}, {347, 381}}</string>
- <string>{{347, 0}, {347, 381}}</string>
+ <string>{{0, 0}, {694, 197}}</string>
+ <string>{{0, 197}, {694, 184}}</string>
</array>
</dict>
</dict>
@@ -733,12 +728,12 @@
<real>117</real>
</array>
<key>Frame</key>
- <string>{{0, 190}, {347, 191}}</string>
+ <string>{{347, 0}, {347, 197}}</string>
<key>RubberWindowFrame</key>
- <string>174 583 694 422 0 0 1680 1028 </string>
+ <string>173 582 694 422 0 0 1680 1028 </string>
</dict>
<key>RubberWindowFrame</key>
- <string>174 583 694 422 0 0 1680 1028 </string>
+ <string>173 582 694 422 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>PBXDebugSessionModule</string>
@@ -761,18 +756,18 @@
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
- <string>CD672D0E113170B7008405E5</string>
+ <string>CD3E95AD13C5D37A000BFB0D</string>
<string>1C162984064C10D400B95A72</string>
- <string>CD672D0F113170B7008405E5</string>
- <string>CD672D10113170B7008405E5</string>
- <string>CD672D11113170B7008405E5</string>
- <string>CD672D12113170B7008405E5</string>
- <string>CD672D13113170B7008405E5</string>
+ <string>CD3E95AE13C5D37A000BFB0D</string>
+ <string>CD3E95AF13C5D37A000BFB0D</string>
+ <string>CD3E95B013C5D37A000BFB0D</string>
+ <string>CD3E95B113C5D37A000BFB0D</string>
+ <string>CD3E95B213C5D37A000BFB0D</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
<key>WindowString</key>
- <string>174 583 694 422 0 0 1680 1028 </string>
+ <string>173 582 694 422 0 0 1680 1028 </string>
<key>WindowToolGUID</key>
<string>1CD10A99069EF8BA00B06720</string>
<key>WindowToolIsVisible</key>
@@ -794,14 +789,12 @@
<key>Dock</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CDD528C0622207200134675</string>
<key>PBXProjectModuleLabel</key>
- <string>OnePasswordAction.m</string>
+ <string></string>
<key>StatusBarVisibility</key>
<true/>
</dict>
@@ -810,7 +803,7 @@
<key>Frame</key>
<string>{{0, 0}, {781, 212}}</string>
<key>RubberWindowFrame</key>
- <string>102 535 781 470 0 0 1680 1028 </string>
+ <string>115 295 781 470 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -822,6 +815,8 @@
<string>212pt</string>
</dict>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -834,7 +829,7 @@
<key>Frame</key>
<string>{{0, 217}, {781, 212}}</string>
<key>RubberWindowFrame</key>
- <string>102 535 781 470 0 0 1680 1028 </string>
+ <string>115 295 781 470 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXProjectFindModule</string>
@@ -857,13 +852,13 @@
<key>TableOfContents</key>
<array>
<string>1C530D57069F1CE1000CFCEE</string>
- <string>CDB336B511BCD47900B41DE2</string>
- <string>CDB336B611BCD47900B41DE2</string>
+ <string>CD2426F01383E58A005ED0E2</string>
+ <string>CD2426F11383E58A005ED0E2</string>
<string>1CDD528C0622207200134675</string>
<string>1CD0528E0623707200166675</string>
</array>
<key>WindowString</key>
- <string>102 535 781 470 0 0 1680 1028 </string>
+ <string>115 295 781 470 0 0 1280 778 </string>
<key>WindowToolGUID</key>
<string>1C530D57069F1CE1000CFCEE</string>
<key>WindowToolIsVisible</key>
@@ -900,7 +895,7 @@
<key>Frame</key>
<string>{{0, 0}, {1000, 365}}</string>
<key>RubberWindowFrame</key>
- <string>102 540 1000 406 0 0 1680 1028 </string>
+ <string>99 326 1000 406 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
@@ -923,13 +918,13 @@
<key>TableOfContents</key>
<array>
<string>1C78EAAD065D492600B07095</string>
- <string>CDE4E77511331205003CAF99</string>
+ <string>CD78311F13AB0F4E00E88478</string>
<string>1C78EAAC065D492600B07095</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.consoleV3</string>
<key>WindowString</key>
- <string>102 540 1000 406 0 0 1680 1028 </string>
+ <string>99 326 1000 406 0 0 1280 778 </string>
<key>WindowToolGUID</key>
<string>1C78EAAD065D492600B07095</string>
<key>WindowToolIsVisible</key>
@@ -1082,6 +1077,8 @@
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -1135,7 +1132,7 @@
<real>168</real>
</array>
<key>RubberWindowFrame</key>
- <string>174 596 744 409 0 0 1680 1028 </string>
+ <string>100 356 744 409 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -1143,8 +1140,6 @@
<string>185pt</string>
</dict>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -1157,7 +1152,7 @@
<key>Frame</key>
<string>{{190, 0}, {554, 368}}</string>
<key>RubberWindowFrame</key>
- <string>174 596 744 409 0 0 1680 1028 </string>
+ <string>100 356 744 409 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -1184,17 +1179,17 @@
<true/>
<key>TableOfContents</key>
<array>
- <string>CD672D501131725A008405E5</string>
- <string>CD672D511131725A008405E5</string>
+ <string>CDEB19B713419E21005A259F</string>
+ <string>CDEB19B813419E21005A259F</string>
<string>1CE0B1FE06471DED0097A5F4</string>
<string>1CA1AED706398EBD00589147</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.breakpointsV3</string>
<key>WindowString</key>
- <string>174 596 744 409 0 0 1680 1028 </string>
+ <string>100 356 744 409 0 0 1280 778 </string>
<key>WindowToolGUID</key>
- <string>CD672D501131725A008405E5</string>
+ <string>CDEB19B713419E21005A259F</string>
<key>WindowToolIsVisible</key>
<false/>
</dict>
View
767 OnePassword.xcodeproj/patrick.pbxuser
@@ -9,10 +9,9 @@
8D1AC9600486D14A00FE50C9 /* OnePassword */,
);
breakpoints = (
- CD672D78113172A6008405E5 /* OnePasswordAction.m:32 */,
- CDE4E6F4113311D1003CAF99 /* OnePasswordAction.m:124 */,
- CDE4E770113311EB003CAF99 /* OnePasswordAction.m:129 */,
- CDB9DC5B11C3804F00293EB0 /* OnePasswordSource.m:130 */,
+ CD3ABD4F1379722F0091BB2D /* OnePasswordAction.m:31 */,
+ CD2426711383E00B005ED0E2 /* OnePasswordAction.m:44 */,
+ CD3E96DD13C5EF48000BFB0D /* OnePasswordAction.m:92 */,
);
codeSenseManager = CDB5BB8C110109170001C0D3 /* Code sense */;
perUserDictionary = {
@@ -54,12 +53,26 @@
PBXBookmarksDataSource_CommentsID,
);
};
+ PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 22,
+ 300,
+ 559,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXExecutablesDataSource_ActiveFlagID,
+ PBXExecutablesDataSource_NameID,
+ PBXExecutablesDataSource_CommentsID,
+ );
+ };
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
- PBXFileTableDataSourceColumnSortingDirectionKey = 1;
- PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Target_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 671,
+ 849,
20,
48,
43,
@@ -88,12 +101,52 @@
PBXFindDataSource_LocationID,
);
};
+ PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 16,
+ 200,
+ 50,
+ 611.20849609375,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXSymbolsDataSource_SymbolTypeIconID,
+ PBXSymbolsDataSource_SymbolNameID,
+ PBXSymbolsDataSource_SymbolTypeID,
+ PBXSymbolsDataSource_ReferenceNameID,
+ );
+ };
+ PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 20,
+ 647,
+ 20,
+ 48,
+ 43,
+ 43,
+ 20,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_SCM_ColumnID,
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ PBXFileDataSource_Target_ColumnID,
+ );
+ };
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 631,
+ 809,
60,
20,
48,
@@ -110,49 +163,31 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 300847643;
- PBXWorkspaceStateSaveDate = 300847643;
+ PBXPerProjectTemplateStateSaveDate = 331806790;
+ PBXWorkspaceStateSaveDate = 331806790;
};
perUserProjectItems = {
- CD106D7A1161E21C00121C1E = CD106D7A1161E21C00121C1E /* PBXTextBookmark */;
- CD106D7C1161E21C00121C1E = CD106D7C1161E21C00121C1E /* PBXTextBookmark */;
- CD106D7E1161E21C00121C1E = CD106D7E1161E21C00121C1E /* PBXTextBookmark */;
- CD106D7F1161E21C00121C1E = CD106D7F1161E21C00121C1E /* PBXTextBookmark */;
- CD106D961161E41D00121C1E = CD106D961161E41D00121C1E /* PBXTextBookmark */;
- CD106DB21161E46100121C1E = CD106DB21161E46100121C1E /* PBXTextBookmark */;
- CD106ECB1161F82A00121C1E = CD106ECB1161F82A00121C1E /* PBXTextBookmark */;
- CD13416F11E9586400819949 = CD13416F11E9586400819949 /* PBXTextBookmark */;
- CD13418911E95A7200819949 = CD13418911E95A7200819949 /* PBXTextBookmark */;
- CD13418A11E95A7200819949 = CD13418A11E95A7200819949 /* PBXTextBookmark */;
- CD1CF9B91163F198005118CC = CD1CF9B91163F198005118CC /* PBXTextBookmark */;
- CD1E8AFF11DA98A100E3C19D = CD1E8AFF11DA98A100E3C19D /* PBXTextBookmark */;
- CD1E8B0011DA98A100E3C19D = CD1E8B0011DA98A100E3C19D /* PBXTextBookmark */;
- CD4ECCC411D54CAC00B4FDF6 = CD4ECCC411D54CAC00B4FDF6 /* PBXTextBookmark */;
- CD791F7D11C6A332002465AE = CD791F7D11C6A332002465AE /* PlistBookmark */;
- CD791F8011C6A332002465AE = CD791F8011C6A332002465AE /* PBXTextBookmark */;
- CD79A4951102B461004ED2F3 = CD79A4951102B461004ED2F3 /* PBXTextBookmark */;
- CD7B34A811DB227E00ED660A = CD7B34A811DB227E00ED660A /* PBXTextBookmark */;
- CD7B34B811DB270800ED660A = CD7B34B811DB270800ED660A /* PBXTextBookmark */;
- CD7B34B911DB270800ED660A = CD7B34B911DB270800ED660A /* PBXTextBookmark */;
- CD8C77D611EE55B00045308E = CD8C77D611EE55B00045308E /* PBXTextBookmark */;
- CD8C77EE11EE5A600045308E = CD8C77EE11EE5A600045308E /* PBXTextBookmark */;
- CD95EF901162392500967D3C = CD95EF901162392500967D3C /* PBXTextBookmark */;
+ CD3E901213C5B146000BFB0D = CD3E901213C5B146000BFB0D /* PBXTextBookmark */;
+ CD3E90BA13C5B8AB000BFB0D = CD3E90BA13C5B8AB000BFB0D /* PBXTextBookmark */;
+ CD3E940013C5C7E2000BFB0D = CD3E940013C5C7E2000BFB0D /* PBXTextBookmark */;
+ CD3E940113C5C7E2000BFB0D = CD3E940113C5C7E2000BFB0D /* PBXTextBookmark */;
+ CD3E940413C5C7E2000BFB0D = CD3E940413C5C7E2000BFB0D /* PBXTextBookmark */;
+ CD3E940513C5C7E2000BFB0D = CD3E940513C5C7E2000BFB0D /* PBXTextBookmark */;
+ CD3E940813C5C7E2000BFB0D = CD3E940813C5C7E2000BFB0D /* PBXTextBookmark */;
+ CD3E94E413C5CDBB000BFB0D = CD3E94E413C5CDBB000BFB0D /* PBXTextBookmark */;
+ CD3E94E713C5CDBB000BFB0D = CD3E94E713C5CDBB000BFB0D /* PBXTextBookmark */;
+ CD3E969C13C5EBF5000BFB0D = CD3E969C13C5EBF5000BFB0D /* PBXTextBookmark */;
+ CD3E974013C5F3DC000BFB0D = CD3E974013C5F3DC000BFB0D /* PBXTextBookmark */;
+ CD3E975013C5F4DB000BFB0D = CD3E975013C5F4DB000BFB0D /* PBXTextBookmark */;
+ CD3E975113C5F4DB000BFB0D = CD3E975113C5F4DB000BFB0D /* PBXTextBookmark */;
+ CD3E976E13C655DE000BFB0D = CD3E976E13C655DE000BFB0D /* PBXTextBookmark */;
+ CD8813BF13A3BD3E00A466F1 = CD8813BF13A3BD3E00A466F1 /* PlistBookmark */;
CD95F00711623A6000967D3C = CD95F00711623A6000967D3C /* PBXTextBookmark */;
- CD9B466B11EDA32D000C5DDA = CD9B466B11EDA32D000C5DDA /* PlistBookmark */;
CD9E5CEB1158DCDF00CCCA80 = CD9E5CEB1158DCDF00CCCA80 /* PlistBookmark */;
CDB2D14F1163A6CD00A97A31 = CDB2D14F1163A6CD00A97A31 /* PBXTextBookmark */;
- CDB9DD0F11C38B5500293EB0 = CDB9DD0F11C38B5500293EB0 /* PBXTextBookmark */;
CDD8746E113166F7009ED78C = CDD8746E113166F7009ED78C /* PBXTextBookmark */;
CDD87470113166F7009ED78C = CDD87470113166F7009ED78C /* PBXTextBookmark */;
CDD8747611316720009ED78C = CDD8747611316720009ED78C /* PBXTextBookmark */;
- CDD8BC2B11EE921D00FF9C66 /* PBXTextBookmark */ = CDD8BC2B11EE921D00FF9C66 /* PBXTextBookmark */;
- CDD8BC3511EE928600FF9C66 /* PBXTextBookmark */ = CDD8BC3511EE928600FF9C66 /* PBXTextBookmark */;
- CDD8BC4B11EE944D00FF9C66 /* PBXTextBookmark */ = CDD8BC4B11EE944D00FF9C66 /* PBXTextBookmark */;
- CDD8BC4F11EE947100FF9C66 /* PBXTextBookmark */ = CDD8BC4F11EE947100FF9C66 /* PBXTextBookmark */;
- CDD8BC5611EE94D100FF9C66 /* PBXTextBookmark */ = CDD8BC5611EE94D100FF9C66 /* PBXTextBookmark */;
- CDD8BC5711EE94D100FF9C66 /* PBXTextBookmark */ = CDD8BC5711EE94D100FF9C66 /* PBXTextBookmark */;
- CDD8BC5811EE94D100FF9C66 /* PBXTextBookmark */ = CDD8BC5811EE94D100FF9C66 /* PBXTextBookmark */;
- CDD8BC5D11EE959300FF9C66 /* PBXTextBookmark */ = CDD8BC5D11EE959300FF9C66 /* PBXTextBookmark */;
};
sourceControlManager = CDB5BB8B110109170001C0D3 /* Source Control */;
userBuildSettings = {
@@ -160,7 +195,7 @@
};
32DBCF980370C29C00C91783 /* OnePassword_Prefix.pch */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {956, 340}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1140, 706}}";
sepNavSelRange = "{259, 0}";
sepNavVisRange = "{0, 573}";
sepNavWindowFrame = "{{81, 0}, {1199, 778}}";
@@ -171,281 +206,232 @@
};
8D1AC9730486D14A00FE50C9 /* Info.plist */ = {
uiCtxt = {
- sepNavWindowFrame = "{{81, 19}, {1199, 759}}";
+ sepNavWindowFrame = "{{864, 256}, {651, 772}}";
};
};
BBF5817A0B1D9D84003CFF55 /* OnePasswordAction.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 429}}";
- sepNavSelRange = "{456, 19}";
- sepNavVisRange = "{0, 928}";
+ sepNavIntBoundsRect = "{{0, 0}, {1027, 702}}";
+ sepNavSelRange = "{1570, 0}";
+ sepNavVisRange = "{698, 1171}";
sepNavWindowFrame = "{{81, 0}, {1599, 1028}}";
};
};
BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {859, 2223}}";
- sepNavSelRange = "{1803, 1}";
- sepNavVisRange = "{1205, 1488}";
- sepNavWindowFrame = "{{81, 0}, {1199, 778}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1138, 3120}}";
+ sepNavSelRange = "{7247, 0}";
+ sepNavVisRange = "{7035, 420}";
+ sepNavWindowFrame = "{{78, 0}, {1199, 778}}";
};
};
BBF581820B1D9DC3003CFF55 /* OnePasswordSource.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 407}}";
- sepNavSelRange = "{513, 0}";
- sepNavVisRange = "{0, 597}";
- sepNavWindowFrame = "{{863, -12}, {1199, 778}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1027, 546}}";
+ sepNavSelRange = "{944, 0}";
+ sepNavVisRange = "{213, 1124}";
+ sepNavWindowFrame = "{{481, 0}, {1199, 778}}";
};
};
BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1140, 4030}}";
- sepNavSelRange = "{2429, 0}";
- sepNavVisRange = "{1372, 2118}";
- sepNavWindowFrame = "{{81, 0}, {1199, 778}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1097, 3471}}";
+ sepNavSelRange = "{4969, 0}";
+ sepNavVisRange = "{4621, 1222}";
+ sepNavWindowFrame = "{{81, 0}, {1522, 1028}}";
};
};
- CD106D7A1161E21C00121C1E /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = CD106D7B1161E21C00121C1E /* SBJsonBase.h */;
- name = "SBJsonBase.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1587;
- vrLoc = 0;
+ CD2426711383E00B005ED0E2 /* OnePasswordAction.m:44 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
+ functionName = "-validIndirectObjectsForAction:directObject:";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 44;
+ location = OnePassword;
+ modificationTime = 331807564.342669;
+ originalNumberOfMultipleMatches = 1;
+ state = 1;
+ };
+ CD3ABD4F1379722F0091BB2D /* OnePasswordAction.m:31 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
+ functionName = "-validActionsForDirectObject:indirectObject:";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 31;
+ location = OnePassword;
+ modificationTime = 331807557.050618;
+ originalNumberOfMultipleMatches = 1;
+ state = 2;
};
- CD106D7B1161E21C00121C1E /* SBJsonBase.h */ = {
+ CD3E8FEF13C5B0E7000BFB0D /* QSObjectSource.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
- name = SBJsonBase.h;
- path = /Developer/Frameworks/JSON.framework/PrivateHeaders/SBJsonBase.h;
+ name = QSObjectSource.h;
+ path = /Users/patrick/Library/Frameworks/QSCore.framework/Headers/QSObjectSource.h;
sourceTree = "<absolute>";
};
- CD106D7C1161E21C00121C1E /* PBXTextBookmark */ = {
+ CD3E901213C5B146000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = CD106D7D1161E21C00121C1E /* JSON.h */;
- name = "JSON.h: 51";
- rLen = 0;
- rLoc = 2297;
+ fRef = CD3E8FEF13C5B0E7000BFB0D /* QSObjectSource.h */;
+ name = "QSObjectSource.h: 19";
+ rLen = 39;
+ rLoc = 637;
rType = 0;
- vrLen = 1582;
+ vrLen = 798;
vrLoc = 0;
};
- CD106D7D1161E21C00121C1E /* JSON.h */ = {
+ CD3E90AE13C5B89D000BFB0D /* QSObjectSource.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
- name = JSON.h;
- path = /Developer/Frameworks/JSON.framework/Headers/JSON.h;
+ name = QSObjectSource.h;
+ path = /tmp/QS/build/Release/QSCore.framework/Headers/QSObjectSource.h;
sourceTree = "<absolute>";
};
- CD106D7E1161E21C00121C1E /* PBXTextBookmark */ = {
+ CD3E90BA13C5B8AB000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = CD9E5D5D1158E2CD00CCCA80 /* NSString+SBJSON.h */;
- name = "NSString+SBJSON.h: 1";
- rLen = 0;
- rLoc = 0;
+ fRef = CD3E90AE13C5B89D000BFB0D /* QSObjectSource.h */;
+ name = "QSObjectSource.h: 19";
+ rLen = 39;
+ rLoc = 637;
rType = 0;
- vrLen = 1554;
+ vrLen = 1113;
vrLoc = 0;
};
- CD106D7F1161E21C00121C1E /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = CD106D801161E21C00121C1E /* NSObject+SBJSON.h */;
- name = "NSObject+SBJSON.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1551;
- vrLoc = 0;
+ CD3E931213C5C503000BFB0D /* NSObject+SBJson.m */ = {
+ isa = PBXFileReference;
+ fileEncoding = 4;
+ includeInIndex = 0;
+ lastKnownFileType = sourcecode.c.objc;
+ name = "NSObject+SBJson.m";
+ path = "/Developer/Apps/OnePassword/1Password-Plugin/SBJson/NSObject+SBJson.m";
+ sourceTree = "<absolute>";
};
- CD106D801161E21C00121C1E /* NSObject+SBJSON.h */ = {
+ CD3E931613C5C503000BFB0D /* SBJsonStreamParser.h */ = {
isa = PBXFileReference;
+ fileEncoding = 4;
lastKnownFileType = sourcecode.c.h;
- name = "NSObject+SBJSON.h";
- path = "/Developer/Frameworks/JSON.framework/PrivateHeaders/NSObject+SBJSON.h";
+ name = SBJsonStreamParser.h;
+ path = "/Developer/Apps/OnePassword/1Password-Plugin/SBJson/SBJsonStreamParser.h";
sourceTree = "<absolute>";
};
- CD106D961161E41D00121C1E /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = CD106D971161E41D00121C1E /* SBJSON.h */;
- name = "SBJSON.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1604;
- vrLoc = 0;
- };
- CD106D971161E41D00121C1E /* SBJSON.h */ = {
+ CD3E932813C5C503000BFB0D /* SBJsonWriter.h */ = {
isa = PBXFileReference;
+ fileEncoding = 4;
lastKnownFileType = sourcecode.c.h;
- name = SBJSON.h;
- path = /Developer/Frameworks/JSON.framework/PrivateHeaders/SBJSON.h;
+ name = SBJsonWriter.h;
+ path = "/Developer/Apps/OnePassword/1Password-Plugin/SBJson/SBJsonWriter.h";
sourceTree = "<absolute>";
};
- CD106DA91161E44B00121C1E /* SBJsonBase.h */ = {
+ CD3E932913C5C503000BFB0D /* SBJsonWriter.m */ = {
isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = SBJsonBase.h;
- path = /Users/patrick/Library/Frameworks/JSON.framework/Headers/SBJsonBase.h;
+ fileEncoding = 4;
+ lastKnownFileType = sourcecode.c.objc;
+ name = SBJsonWriter.m;
+ path = "/Developer/Apps/OnePassword/1Password-Plugin/SBJson/SBJsonWriter.m";
sourceTree = "<absolute>";
};
- CD106DB21161E46100121C1E /* PBXTextBookmark */ = {
+ CD3E940013C5C7E2000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = CD106DA91161E44B00121C1E /* SBJsonBase.h */;
- name = "SBJsonBase.h: 36";
+ fRef = CD3E931613C5C503000BFB0D /* SBJsonStreamParser.h */;
+ name = "SBJsonStreamParser.h: 1";
rLen = 0;
- rLoc = 1596;
+ rLoc = 0;
rType = 0;
- vrLen = 928;
- vrLoc = 897;
- };
- CD106EB01161F80000121C1E /* JSON.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 611}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{207, 1233}";
- };
- };
- CD106EB21161F80000121C1E /* NSObject+SBJSON.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 650}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 1569}";
- };
- };
- CD106EB31161F80000121C1E /* NSString+SBJSON.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 663}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 1510}";
- };
- };
- CD106EB41161F80000121C1E /* NSString+SBJSON.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 728}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{982, 1183}";
- };
- };
- CD106EB51161F80000121C1E /* SBJSON.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {956, 988}}";
- sepNavSelRange = "{747, 0}";
- sepNavVisRange = "{1554, 699}";
- };
- };
- CD106EB61161F80000121C1E /* SBJSON.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {956, 2600}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 1563}";
- };
- };
- CD106EB71161F80000121C1E /* SBJsonBase.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 1001}}";
- sepNavSelRange = "{419, 77}";
- sepNavVisRange = "{0, 1588}";
- };
- };
- CD106EBA1161F80000121C1E /* SBJsonParser.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {956, 6162}}";
- sepNavSelRange = "{2030, 0}";
- sepNavVisRange = "{1871, 643}";
- sepNavWindowFrame = "{{81, 0}, {1199, 778}}";
- };
- };
- CD106EBB1161F80000121C1E /* SBJsonWriter.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 1521}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 1577}";
- };
+ vrLen = 1379;
+ vrLoc = 0;
};
- CD106ECB1161F82A00121C1E /* PBXTextBookmark */ = {
+ CD3E940113C5C7E2000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = CD106EB61161F80000121C1E /* SBJSON.m */;
- name = "SBJSON.m: 1";
+ fRef = CD3E931213C5C503000BFB0D /* NSObject+SBJson.m */;
+ name = "NSObject+SBJson.m: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 1563;
+ vrLen = 1514;
vrLoc = 0;
};
- CD13416F11E9586400819949 /* PBXTextBookmark */ = {
+ CD3E940413C5C7E2000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = BBF581820B1D9DC3003CFF55 /* OnePasswordSource.h */;
- name = "OnePasswordSource.h: 17";
+ fRef = E1EAB047068128A800774DFF /* OnePassword.h */;
+ name = "OnePassword.h: 18";
rLen = 0;
- rLoc = 513;
+ rLoc = 655;
rType = 0;
- vrLen = 597;
+ vrLen = 972;
vrLoc = 0;
};
- CD13418911E95A7200819949 /* PBXTextBookmark */ = {
+ CD3E940513C5C7E2000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = CD106EB41161F80000121C1E /* NSString+SBJSON.m */;
- name = "NSString+SBJSON.m: 1";
+ fRef = CD3E932813C5C503000BFB0D /* SBJsonWriter.h */;
+ name = "SBJsonWriter.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 1183;
- vrLoc = 982;
+ vrLen = 1514;
+ vrLoc = 0;
};
- CD13418A11E95A7200819949 /* PBXTextBookmark */ = {
+ CD3E940813C5C7E2000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = CD106EB21161F80000121C1E /* NSObject+SBJSON.m */;
- name = "NSObject+SBJSON.m: 1";
+ fRef = CD3E932913C5C503000BFB0D /* SBJsonWriter.m */;
+ name = "SBJsonWriter.m: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 1569;
+ vrLen = 1514;
vrLoc = 0;
};
- CD1CF9B91163F198005118CC /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = CD106EB51161F80000121C1E /* SBJSON.h */;
- name = "SBJSON.h: 16";
- rLen = 0;
- rLoc = 747;
- rType = 0;
- vrLen = 699;
- vrLoc = 1554;
+ CD3E94A313C5CC75000BFB0D /* QSClangAnalyzer.h */ = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = QSClangAnalyzer.h;
+ path = /tmp/QS/build/Release/QSCore.framework/Headers/QSClangAnalyzer.h;
+ sourceTree = "<absolute>";
};
- CD1E8AFF11DA98A100E3C19D /* PBXTextBookmark */ = {
+ CD3E94E413C5CDBB000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = E1EAB047068128A800774DFF /* OnePassword.h */;
- name = "OnePassword.h: 3";
- rLen = 16;
- rLoc = 21;
+ fRef = CD3E94A313C5CC75000BFB0D /* QSClangAnalyzer.h */;
+ name = "QSClangAnalyzer.h: 11";
+ rLen = 24;
+ rLoc = 189;
rType = 0;
- vrLen = 224;
+ vrLen = 685;
vrLoc = 0;
};
- CD1E8B0011DA98A100E3C19D /* PBXTextBookmark */ = {
+ CD3E94E713C5CDBB000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = CD106EBB1161F80000121C1E /* SBJsonWriter.h */;
- name = "SBJsonWriter.h: 1";
+ fRef = E1EAB045068128A200774DFF /* OnePassword.m */;
+ name = "OnePassword.m: 25";
rLen = 0;
- rLoc = 0;
+ rLoc = 929;
rType = 0;
- vrLen = 1577;
- vrLoc = 0;
+ vrLen = 944;
+ vrLoc = 21;
};
- CD4ECCC411D54CAC00B4FDF6 /* PBXTextBookmark */ = {
+ CD3E969C13C5EBF5000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = CD106EB71161F80000121C1E /* SBJsonBase.h */;
- name = "SBJsonBase.h: 11";
- rLen = 77;
- rLoc = 419;
+ fRef = BBF5817A0B1D9D84003CFF55 /* OnePasswordAction.h */;
+ name = "OnePasswordAction.h: 44";
+ rLen = 0;
+ rLoc = 1570;
rType = 0;
- vrLen = 1588;
- vrLoc = 0;
+ vrLen = 1171;
+ vrLoc = 698;
};
- CD672D78113172A6008405E5 /* OnePasswordAction.m:32 */ = {
+ CD3E96DD13C5EF48000BFB0D /* OnePasswordAction.m:92 */ = {
isa = PBXFileBreakpoint;
actions = (
);
@@ -454,130 +440,68 @@
countType = 0;
delayBeforeContinue = 0;
fileReference = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
- functionName = "-goAndFill:";
- hitCount = 2;
+ functionName = "-goAndFill:with:";
+ hitCount = 0;
ignoreCount = 0;
- lineNumber = 32;
+ lineNumber = 92;
location = OnePassword;
- modificationTime = 288561446.243325;
+ modificationTime = 331807564.392518;
originalNumberOfMultipleMatches = 1;
state = 1;
};
- CD791F5F11C6A280002465AE /* QSCorePlugIn-Info.plist */ = {
- isa = PBXFileReference;
- lastKnownFileType = text.plist.xml;
- name = "QSCorePlugIn-Info.plist";
- path = "/Developer/Apps/QS/blacktree-alchemy/Quicksilver/PlugIns-Main/QSCorePlugIn/QSCorePlugIn-Info.plist";
- sourceTree = "<absolute>";
- };
- CD791F7B11C6A2E8002465AE /* ReleaseNotes.txt */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 407}}";
- sepNavSelRange = "{146, 1}";
- sepNavVisRange = "{0, 512}";
- sepNavWindowFrame = "{{81, 0}, {1199, 778}}";
- };
- };
- CD791F7D11C6A332002465AE /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = CD791F5F11C6A280002465AE /* QSCorePlugIn-Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- QSActions,
- FileOpenAction,
- alternateAction,
- );
- name = "/Developer/Apps/QS/blacktree-alchemy/Quicksilver/PlugIns-Main/QSCorePlugIn/QSCorePlugIn-Info.plist";
- rLen = 0;
- rLoc = 9223372036854775808;
- };
- CD791F8011C6A332002465AE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = CD106EB31161F80000121C1E /* NSString+SBJSON.h */;
- name = "NSString+SBJSON.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1510;
- vrLoc = 0;
- };
- CD79A43E1102B428004ED2F3 /* JSON.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = JSON.h;
- path = /Users/patrick/Library/Frameworks/JSON.framework/Headers/JSON.h;
- sourceTree = "<absolute>";
- };
- CD79A4951102B461004ED2F3 /* PBXTextBookmark */ = {
+ CD3E974013C5F3DC000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = CD79A43E1102B428004ED2F3 /* JSON.h */;
- name = "JSON.h: 47";
- rLen = 0;
- rLoc = 2221;
- rType = 0;
- vrLen = 1928;
- vrLoc = 340;
- };
- CD7B34A811DB227E00ED660A /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = BBF5817A0B1D9D84003CFF55 /* OnePasswordAction.h */;
- name = "OnePasswordAction.h: 17";
- rLen = 19;
- rLoc = 456;
+ fRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
+ name = "OnePasswordSource.m: 157";
+ rLen = 10;
+ rLoc = 5363;
rType = 0;
- vrLen = 928;
- vrLoc = 0;
+ vrLen = 1212;
+ vrLoc = 4763;
};
- CD7B34B811DB270800ED660A /* PBXTextBookmark */ = {
+ CD3E975013C5F4DB000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
- name = "OnePasswordAction.m: 65";
- rLen = 1;
- rLoc = 1803;
- rType = 0;
- vrLen = 1488;
- vrLoc = 1205;
- };
- CD7B34B911DB270800ED660A /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
- name = "OnePasswordSource.m: 125";
+ name = "OnePasswordAction.m: 100";
rLen = 0;
- rLoc = 4739;
+ rLoc = 3500;
rType = 0;
- vrLen = 1477;
- vrLoc = 4003;
+ vrLen = 1190;
+ vrLoc = 3105;
};
- CD8C77D611EE55B00045308E /* PBXTextBookmark */ = {
+ CD3E975113C5F4DB000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = E1EAB045068128A200774DFF /* OnePassword.m */;
- name = "OnePassword.m: 15";
+ fRef = BBF581820B1D9DC3003CFF55 /* OnePasswordSource.h */;
+ name = "OnePasswordSource.h: 24";
rLen = 0;
- rLoc = 211;
+ rLoc = 944;
rType = 0;
- vrLen = 211;
- vrLoc = 0;
+ vrLen = 1124;
+ vrLoc = 213;
};
- CD8C77EE11EE5A600045308E /* PBXTextBookmark */ = {
+ CD3E976E13C655DE000BFB0D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
- name = "OnePasswordSource.m: 129";
+ name = "OnePasswordSource.m: 152";
rLen = 0;
- rLoc = 4739;
+ rLoc = 5246;
rType = 0;
- vrLen = 1390;
- vrLoc = 4103;
+ vrLen = 1146;
+ vrLoc = 4683;
};
- CD95EF901162392500967D3C /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = CD106EBA1161F80000121C1E /* SBJsonParser.m */;
- name = "SBJsonParser.m: 47";
+ CD8813BF13A3BD3E00A466F1 /* PlistBookmark */ = {
+ isa = PlistBookmark;
+ fRef = 8D1AC9730486D14A00FE50C9 /* Info.plist */;
+ fallbackIsa = PBXBookmark;
+ isK = 0;
+ kPath = (
+ QSActions,
+ goAndFill,
+ alternateAction,
+ );
+ name = "/Developer/Apps/OnePassword/1Password-Plugin/Info.plist";
rLen = 0;
- rLoc = 2030;
- rType = 0;
- vrLen = 643;
- vrLoc = 1871;
+ rLoc = 9223372036854775808;
};
CD95EF971162392800967D3C /* QSDebug.h */ = {
isa = PBXFileReference;
@@ -596,18 +520,6 @@
vrLen = 654;
vrLoc = 0;
};
- CD9B466B11EDA32D000C5DDA /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 8D1AC9730486D14A00FE50C9 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- CFBundleShortVersionString,
- );
- name = "/Developer/Apps/OnePassword/1Password-Plugin/Info.plist";
- rLen = 0;
- rLoc = 9223372036854775808;
- };
CD9E5CEB1158DCDF00CCCA80 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = CD9E5CEC1158DCDF00CCCA80 /* ws.agile.1Password.plist */;
@@ -626,13 +538,6 @@
path = /Users/patrick/Library/Preferences/ws.agile.1Password.plist;
sourceTree = "<absolute>";
};
- CD9E5D5D1158E2CD00CCCA80 /* NSString+SBJSON.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = "NSString+SBJSON.h";
- path = "/Developer/Frameworks/JSON.framework/PrivateHeaders/NSString+SBJSON.h";
- sourceTree = "<absolute>";
- };
CDB2D14F1163A6CD00A97A31 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 32DBCF980370C29C00C91783 /* OnePassword_Prefix.pch */;
@@ -657,33 +562,6 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- CDB9DC5B11C3804F00293EB0 /* OnePasswordSource.m:130 */ = {
- isa = PBXFileBreakpoint;
- actions = (
- );
- breakpointStyle = 0;
- continueAfterActions = 0;
- countType = 0;
- delayBeforeContinue = 0;
- fileReference = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
- functionName = "-objectsForEntry:";
- hitCount = 0;
- ignoreCount = 0;
- lineNumber = 130;
- modificationTime = 298025039.8898619;
- originalNumberOfMultipleMatches = 0;
- state = 1;
- };
- CDB9DD0F11C38B5500293EB0 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = CD106EB01161F80000121C1E /* JSON.h */;
- name = "JSON.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1233;
- vrLoc = 207;
- };
CDD8746E113166F7009ED78C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = CDD8746F113166F7009ED78C /* NDSDKCompatibility.h */;
@@ -735,135 +613,20 @@
vrLen = 1268;
vrLoc = 0;
};
- CDD8BC2B11EE921D00FF9C66 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
- name = "OnePasswordSource.m: 129";
- rLen = 0;
- rLoc = 4739;
- rType = 0;
- vrLen = 1342;
- vrLoc = 4151;
- };
- CDD8BC3511EE928600FF9C66 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
- name = "OnePasswordSource.m: 125";
- rLen = 0;
- rLoc = 4739;
- rType = 0;
- vrLen = 1106;
- vrLoc = 815;
- };
- CDD8BC4B11EE944D00FF9C66 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
- name = "OnePasswordSource.m: 97";
- rLen = 0;
- rLoc = 3461;
- rType = 0;
- vrLen = 1165;
- vrLoc = 2987;
- };
- CDD8BC4F11EE947100FF9C66 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
- name = "OnePasswordSource.m: 101";
- rLen = 0;
- rLoc = 3524;
- rType = 0;
- vrLen = 1083;
- vrLoc = 2987;
- };
- CDD8BC5611EE94D100FF9C66 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
- name = "OnePasswordSource.m: 109";
- rLen = 0;
- rLoc = 3748;
- rType = 0;
- vrLen = 1045;
- vrLoc = 3284;
- };
- CDD8BC5711EE94D100FF9C66 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = E1EAB045068128A200774DFF /* OnePassword.m */;
- name = "OnePassword.m: 15";
- rLen = 0;
- rLoc = 211;
- rType = 0;
- vrLen = 211;
- vrLoc = 0;
- };
- CDD8BC5811EE94D100FF9C66 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = E1EAB045068128A200774DFF /* OnePassword.m */;
- name = "OnePassword.m: 15";
- rLen = 0;
- rLoc = 211;
- rType = 0;
- vrLen = 211;
- vrLoc = 0;
- };
- CDD8BC5D11EE959300FF9C66 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = E1EAB045068128A200774DFF /* OnePassword.m */;
- name = "OnePassword.m: 15";
- rLen = 0;
- rLoc = 211;
- rType = 0;
- vrLen = 211;
- vrLoc = 0;
- };
- CDE4E6F4113311D1003CAF99 /* OnePasswordAction.m:124 */ = {
- isa = PBXFileBreakpoint;
- actions = (
- );
- breakpointStyle = 0;
- continueAfterActions = 0;
- countType = 0;
- delayBeforeContinue = 0;
- fileReference = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
- functionName = "-writePlistAndFill:";
- hitCount = 4;
- ignoreCount = 0;
- lineNumber = 124;
- location = OnePassword;
- modificationTime = 288561553.958317;
- originalNumberOfMultipleMatches = 1;
- state = 1;
- };
- CDE4E770113311EB003CAF99 /* OnePasswordAction.m:129 */ = {
- isa = PBXFileBreakpoint;
- actions = (
- );
- breakpointStyle = 0;
- continueAfterActions = 0;
- countType = 0;
- delayBeforeContinue = 0;
- fileReference = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
- functionName = "-writePlistAndFill:";
- hitCount = 4;
- ignoreCount = 0;
- lineNumber = 129;
- location = OnePassword;
- modificationTime = 288561559.102098;
- originalNumberOfMultipleMatches = 1;
- state = 1;
- };
E1EAB045068128A200774DFF /* OnePassword.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 376}}";
- sepNavSelRange = "{211, 0}";
- sepNavVisRange = "{0, 211}";
+ sepNavIntBoundsRect = "{{0, 0}, {849, 390}}";
+ sepNavSelRange = "{929, 0}";
+ sepNavVisRange = "{21, 944}";
sepNavWindowFrame = "{{81, 19}, {1199, 759}}";
};
};
E1EAB047068128A800774DFF /* OnePassword.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {849, 421}}";
- sepNavSelRange = "{21, 16}";
- sepNavVisRange = "{0, 224}";
+ sepNavIntBoundsRect = "{{0, 0}, {1140, 956}}";
+ sepNavSelRange = "{655, 0}";
+ sepNavVisRange = "{0, 978}";
+ sepNavWindowFrame = "{{85, 0}, {1199, 1028}}";
};
};
}
View
104 OnePassword.xcodeproj/project.pbxproj
@@ -12,17 +12,24 @@
8D1AC9700486D14A00FE50C9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD92D38A0106425D02CA0E72 /* Cocoa.framework */; };
BBF5817C0B1D9D84003CFF55 /* OnePasswordAction.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */; };
BBF581840B1D9DC3003CFF55 /* OnePasswordSource.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */; };
- CD106EBD1161F80000121C1E /* NSObject+SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = CD106EB21161F80000121C1E /* NSObject+SBJSON.m */; };
- CD106EBE1161F80000121C1E /* NSString+SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = CD106EB41161F80000121C1E /* NSString+SBJSON.m */; };
- CD106EBF1161F80000121C1E /* SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = CD106EB61161F80000121C1E /* SBJSON.m */; };
- CD106EC01161F80000121C1E /* SBJsonBase.m in Sources */ = {isa = PBXBuildFile; fileRef = CD106EB81161F80000121C1E /* SBJsonBase.m */; };
- CD106EC11161F80000121C1E /* SBJsonParser.m in Sources */ = {isa = PBXBuildFile; fileRef = CD106EBA1161F80000121C1E /* SBJsonParser.m */; };
- CD106EC21161F80000121C1E /* SBJsonWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = CD106EBC1161F80000121C1E /* SBJsonWriter.m */; };
+ CD3E953D13C5D231000BFB0D /* YAJL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD3E953C13C5D231000BFB0D /* YAJL.framework */; };
+ CD3E957113C5D2B2000BFB0D /* YAJL.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = CD3E953C13C5D231000BFB0D /* YAJL.framework */; };
CD9E5D3F1158E17E00CCCA80 /* RevealIn1Pwd.scpt in CopyFiles */ = {isa = PBXBuildFile; fileRef = CDDDB3341158B11100D1674E /* RevealIn1Pwd.scpt */; };
E1EAB046068128A200774DFF /* OnePassword.m in Sources */ = {isa = PBXBuildFile; fileRef = E1EAB045068128A200774DFF /* OnePassword.m */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
+ CD3E957613C5D2B4000BFB0D /* Copy Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ CD3E957113C5D2B2000BFB0D /* YAJL.framework in Copy Frameworks */,
+ );
+ name = "Copy Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CD9E5D441158E18800CCCA80 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 12;
@@ -47,24 +54,11 @@
BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OnePasswordAction.m; sourceTree = "<group>"; };
BBF581820B1D9DC3003CFF55 /* OnePasswordSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OnePasswordSource.h; sourceTree = "<group>"; };
BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OnePasswordSource.m; sourceTree = "<group>"; };
- CD106EB01161F80000121C1E /* JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSON.h; path = "Apps/OnePassword/1Password-Plugin/JSON/JSON.h"; sourceTree = DEVELOPER_DIR; };
- CD106EB11161F80000121C1E /* NSObject+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSObject+SBJSON.h"; path = "Apps/OnePassword/1Password-Plugin/JSON/NSObject+SBJSON.h"; sourceTree = DEVELOPER_DIR; };
- CD106EB21161F80000121C1E /* NSObject+SBJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSObject+SBJSON.m"; path = "Apps/OnePassword/1Password-Plugin/JSON/NSObject+SBJSON.m"; sourceTree = DEVELOPER_DIR; };
- CD106EB31161F80000121C1E /* NSString+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSString+SBJSON.h"; path = "Apps/OnePassword/1Password-Plugin/JSON/NSString+SBJSON.h"; sourceTree = DEVELOPER_DIR; };
- CD106EB41161F80000121C1E /* NSString+SBJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSString+SBJSON.m"; path = "Apps/OnePassword/1Password-Plugin/JSON/NSString+SBJSON.m"; sourceTree = DEVELOPER_DIR; };
- CD106EB51161F80000121C1E /* SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBJSON.h; path = "Apps/OnePassword/1Password-Plugin/JSON/SBJSON.h"; sourceTree = DEVELOPER_DIR; };
- CD106EB61161F80000121C1E /* SBJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SBJSON.m; path = "Apps/OnePassword/1Password-Plugin/JSON/SBJSON.m"; sourceTree = DEVELOPER_DIR; };
- CD106EB71161F80000121C1E /* SBJsonBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBJsonBase.h; path = "Apps/OnePassword/1Password-Plugin/JSON/SBJsonBase.h"; sourceTree = DEVELOPER_DIR; };
- CD106EB81161F80000121C1E /* SBJsonBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SBJsonBase.m; path = "Apps/OnePassword/1Password-Plugin/JSON/SBJsonBase.m"; sourceTree = DEVELOPER_DIR; };
- CD106EB91161F80000121C1E /* SBJsonParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBJsonParser.h; path = "Apps/OnePassword/1Password-Plugin/JSON/SBJsonParser.h"; sourceTree = DEVELOPER_DIR; };
- CD106EBA1161F80000121C1E /* SBJsonParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SBJsonParser.m; path = "Apps/OnePassword/1Password-Plugin/JSON/SBJsonParser.m"; sourceTree = DEVELOPER_DIR; };
- CD106EBB1161F80000121C1E /* SBJsonWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBJsonWriter.h; path = "Apps/OnePassword/1Password-Plugin/JSON/SBJsonWriter.h"; sourceTree = DEVELOPER_DIR; };
- CD106EBC1161F80000121C1E /* SBJsonWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SBJsonWriter.m; path = "Apps/OnePassword/1Password-Plugin/JSON/SBJsonWriter.m"; sourceTree = DEVELOPER_DIR; };
- CD791F7B11C6A2E8002465AE /* ReleaseNotes.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ReleaseNotes.txt; path = "Apps/OnePassword/1Password-Plugin/ReleaseNotes.txt"; sourceTree = DEVELOPER_DIR; };
+ CD3E953C13C5D231000BFB0D /* YAJL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = YAJL.framework; sourceTree = "<group>"; };
CDDDB3341158B11100D1674E /* RevealIn1Pwd.scpt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.scpt; name = RevealIn1Pwd.scpt; path = "Apps/OnePassword/1Password-Plugin/RevealIn1Pwd.scpt"; sourceTree = DEVELOPER_DIR; };
DD92D38A0106425D02CA0E72 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- E1EAB045068128A200774DFF /* OnePassword.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = OnePassword.m; sourceTree = "<group>"; };
- E1EAB047068128A800774DFF /* OnePassword.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = OnePassword.h; sourceTree = "<group>"; };
+ E1EAB045068128A200774DFF /* OnePassword.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OnePassword.m; sourceTree = "<group>"; };
+ E1EAB047068128A800774DFF /* OnePassword.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OnePassword.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -75,6 +69,7 @@
8D1AC9700486D14A00FE50C9 /* Cocoa.framework in Frameworks */,
7F35FF4007F9ACD90056051D /* QSCore.framework in Frameworks */,
7F35FF4207F9ACD90056051D /* QSFoundation.framework in Frameworks */,
+ CD3E953D13C5D231000BFB0D /* YAJL.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -113,6 +108,7 @@
2E58F364FFB232C311CA0CBA /* Frameworks */ = {
isa = PBXGroup;
children = (
+ CD3E953C13C5D231000BFB0D /* YAJL.framework */,
DD92D38A0106425D02CA0E72 /* Cocoa.framework */,
7F35FF3C07F9ACD90056051D /* QSCore.framework */,
7F35FF3E07F9ACD90056051D /* QSFoundation.framework */,
@@ -125,7 +121,6 @@
32DBCF9E0370C38000C91783 /* Classes */ = {
isa = PBXGroup;
children = (
- CD106EAF1161F80000121C1E /* JSON */,
BBF5817A0B1D9D84003CFF55 /* OnePasswordAction.h */,
BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */,
E1EAB047068128A800774DFF /* OnePassword.h */,
@@ -144,28 +139,6 @@
name = "Other Sources";
sourceTree = "<group>";
};
- CD106EAF1161F80000121C1E /* JSON */ = {
- isa = PBXGroup;
- children = (
- CD791F7B11C6A2E8002465AE /* ReleaseNotes.txt */,
- CD106EB01161F80000121C1E /* JSON.h */,
- CD106EB11161F80000121C1E /* NSObject+SBJSON.h */,
- CD106EB21161F80000121C1E /* NSObject+SBJSON.m */,
- CD106EB31161F80000121C1E /* NSString+SBJSON.h */,
- CD106EB41161F80000121C1E /* NSString+SBJSON.m */,
- CD106EB51161F80000121C1E /* SBJSON.h */,
- CD106EB61161F80000121C1E /* SBJSON.m */,
- CD106EB71161F80000121C1E /* SBJsonBase.h */,
- CD106EB81161F80000121C1E /* SBJsonBase.m */,
- CD106EB91161F80000121C1E /* SBJsonParser.h */,
- CD106EBA1161F80000121C1E /* SBJsonParser.m */,
- CD106EBB1161F80000121C1E /* SBJsonWriter.h */,
- CD106EBC1161F80000121C1E /* SBJsonWriter.m */,
- );
- name = JSON;
- path = "Apps/OnePassword/1Password-Plugin/JSON";
- sourceTree = DEVELOPER_DIR;
- };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -174,6 +147,7 @@
buildConfigurationList = 7F6B3EEB085CE8DF000735A8 /* Build configuration list for PBXNativeTarget "OnePassword" */;
buildPhases = (
CD9E5D441158E18800CCCA80 /* CopyFiles */,
+ CD3E957613C5D2B4000BFB0D /* Copy Frameworks */,
8D1AC96A0486D14A00FE50C9 /* Sources */,
8D1AC96E0486D14A00FE50C9 /* Frameworks */,
E1022B2806B3475D00299BEC /* ShellScript */,
@@ -193,9 +167,19 @@
/* Begin PBXProject section */
0259C573FE90428111CA0C5A /* Project object */ = {
isa = PBXProject;
+ attributes = {
+ ORGANIZATIONNAME = "Patrick Robertson";
+ };
buildConfigurationList = 7F6B3EEF085CE8DF000735A8 /* Build configuration list for PBXProject "OnePassword" */;
compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
hasScannedForEncodings = 1;
+ knownRegions = (
+ English,
+ Japanese,
+ French,
+ German,
+ );
mainGroup = 0259C574FE90428111CA0C5A /* OnePassword */;
projectDirPath = "";
projectRoot = "";
@@ -229,12 +213,6 @@
E1EAB046068128A200774DFF /* OnePassword.m in Sources */,
BBF5817C0B1D9D84003CFF55 /* OnePasswordAction.m in Sources */,
BBF581840B1D9DC3003CFF55 /* OnePasswordSource.m in Sources */,
- CD106EBD1161F80000121C1E /* NSObject+SBJSON.m in Sources */,
- CD106EBE1161F80000121C1E /* NSString+SBJSON.m in Sources */,
- CD106EBF1161F80000121C1E /* SBJSON.m in Sources */,
- CD106EC01161F80000121C1E /* SBJsonBase.m in Sources */,
- CD106EC11161F80000121C1E /* SBJsonParser.m in Sources */,
- CD106EC21161F80000121C1E /* SBJsonWriter.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -244,16 +222,16 @@
7F6B3EEC085CE8DF000735A8 /* Development */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(QSFrameworks)",
- "\"$(DEVELOPER_DIR)/Apps/OnePassword\"",
/Users/patrick/Library/Frameworks,
"\"$(SRCROOT)\"",
"\"$(DEVELOPER_DIR)/Frameworks\"",
);
- GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_C_LANGUAGE_STANDARD = "compiler-default";
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
@@ -261,13 +239,17 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = OnePassword_Prefix.pch;
+ GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_PKGINFO_FILE = NO;
INFOPLIST_FILE = Info.plist;
- OTHER_CFLAGS = "-DDEVEL=1";
- OTHER_LDFLAGS = "-bundle";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = "";
+ PREBINDING = YES;
PRODUCT_NAME = OnePassword;
WRAPPER_EXTENSION = qsplugin;
- ZERO_LINK = YES;
};
name = Development;
};
@@ -299,8 +281,13 @@
7F6B3EF0085CE8DF000735A8 /* Development */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ GCC_C_LANGUAGE_STANDARD = ansi;
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.5;
- SDKROOT = macosx10.5;
+ PREBINDING = YES;
+ SDKROOT = macosx;
};
name = Development;
};
@@ -308,10 +295,11 @@
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ GCC_C_LANGUAGE_STANDARD = c99;
GCC_MODEL_TUNING = G5;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
MACOSX_DEPLOYMENT_TARGET = 10.5;
- SDKROOT = macosx10.5;
+ SDKROOT = macosx;
VALID_ARCHS = "i386 ppc";
};
name = Release;
View
4 OnePasswordAction.h
@@ -26,7 +26,6 @@
#import "OnePasswordAction.h"
#define kOnePasswordAction @"OnePasswordAction"
-#define kQSObjectComponents @"QSObjectComponents"
#define QS1PasswordForm @"QS1PasswordForm"
#define QS1PasswordSecureNote @"QS1PasswordSecureNote"
#define QS1PasswordIdentity @"QS1PasswordIdentity"
@@ -44,9 +43,10 @@
{
}
-- (void)writePlistAndFill:(QSObject *)dObject;
+- (void)writePlistAndFill:(QSObject *)dObject withBrowsers:(QSObject *)iObject;
- (QSObject *)viewInOnePwd:(QSObject *)dObject;
- (QSObject *)goAndFill:(QSObject *)dObject;
+- (QSObject *)goAndFill:(QSObject *)dObject with:(QSObject *)iObject;
//- (QSObject *)trashForm:(QSObject *)dObject;
@end
View
111 OnePasswordAction.m
@@ -21,45 +21,85 @@
// along with Quicksilver 1Password Module. If not, see <http://www.gnu.org/licenses/>.
//
-// 'form' means UUID
#import "OnePasswordAction.h"
-
+#import <QSCore/QSObject_FileHandling.h>
@implementation OnePasswordAction
- (NSArray *) validActionsForDirectObject:(QSObject *)dObject indirectObject:(QSObject *)iObject
{
+
// Only allow the 'View in 1Password action to appear if there's only one item (no comma trick)
- if (!([[dObject stringValue] isEqualToString:@"combined objects"]))
+ if ([dObject count] == 1)
{
return [NSArray arrayWithObject:@"viewInOnePwd"];
}
// Else don't show it
- else
- {
+ return nil;
+}
+
+// Method to only show browsers in the 3rd pane for the 'Go & Fill With...' action
+- (NSArray *)validIndirectObjectsForAction:(NSString *)action directObject:(QSObject *)dObject{
+// only for 'Go & Fill With...' action
+ if (![action isEqualToString:@"goAndFillWith"]) {
return nil;
}
+ NSArray *validBrowsers = [NSArray arrayWithObjects:@"org.mozilla.firefox",
+ @"com.apple.Safari",@"com.google.Chrome",@"org.mozilla.camino",
+ @"com.omnigroup.omniweb",@"com.ranchero.NetNewsWire",
+ @"com.fluidapp.Fluid",@"com.devon-technologies.agent",@"de.icab.iCab",@"org.webkit.nightly.WebKit",nil];
+ NSMutableArray *validIndirects = [NSMutableArray arrayWithCapacity:1];
+ NSMutableSet *set = [NSMutableSet set];
+
+ NSMutableArray *validBrowserPaths = [NSMutableArray arrayWithCapacity:1];
+ NSWorkspace *ws = [NSWorkspace sharedWorkspace];
+ for(NSString *browserID in validBrowsers) {
+ NSString *browserPath = [ws absolutePathForAppBundleWithIdentifier:browserID];
+ if (browserPath) {
+ [validBrowserPaths addObject:browserPath];
+ }
+ }
+ // Get the default app for the url
+ NSURL *appURL = nil;
+ LSGetApplicationForURL((CFURLRef)[NSURL URLWithString:@"http://"], kLSRolesAll, NULL, (CFURLRef *)&appURL);
+
+ // Set the default app to be 1st in the returned list
+ id preferred = [QSObject fileObjectWithPath:[appURL path]];
+ if (!preferred) {
+ preferred = [NSNull null];
+ }
+
+ [appURL release];
+
+ [set addObjectsFromArray:validBrowserPaths];
+ validIndirects = [[QSLibrarian sharedInstance] scoredArrayForString:nil inSet:[QSObject fileObjectsWithPathArray:[set allObjects]]];
+
+ return [NSArray arrayWithObjects:preferred, validIndirects, nil];
}
+
+
+
- (QSObject *)goAndFill:(QSObject *)dObject{
+ [self goAndFill:dObject with:nil];
+ return nil;
+}
+
+- (QSObject *)goAndFill:(QSObject *)dObject with:(QSObject *)iObject {
- //If there's multiple forms to fill
- if ([[dObject stringValue] isEqualToString:@"combined objects"])
- {
+ if ([dObject count] >1 ) {
// for each object - do exactly the same thing as for single objects
for (QSObject *goAndFillObject in [dObject objectForCache:kQSObjectComponents])
{
- [self writePlistAndFill:goAndFillObject];
- }
- // If we only have one form to fill / one object
- }
+ [self writePlistAndFill:goAndFillObject withBrowsers:iObject];
+ }
+ }
else {
- // single object -- same as for multiple objects
- [self writePlistAndFill:dObject];
+ [self writePlistAndFill:dObject withBrowsers:iObject];
}
-
+
return nil;
}
@@ -67,10 +107,10 @@ - (QSObject *)viewInOnePwd:(QSObject *)dObject {
// setup the terminal command
NSString *command = @"defaults write ws.agile.1Password findUUID ";
- command = [command stringByAppendingString:[dObject objectForMeta:@"form"]];
+ command = [command stringByAppendingString:[dObject stringValue]];
// load the script from a resource by fetching its URL from within our bundle
- NSString *path=[[NSBundle bundleForClass:[self class]]pathForResource:@"RevealIn1Pwd" ofType:@"scpt"];
+ NSString *path=[[NSBundle bundleForClass:[self class]] pathForResource:@"RevealIn1Pwd" ofType:@"scpt"];
if (path != nil)
{
NSDictionary* scptErrors = [NSDictionary dictionary];
@@ -135,26 +175,43 @@ - (QSObject *)viewInOnePwd:(QSObject *)dObject {
return nil;
}
--(void)writePlistAndFill:(QSObject *)dObject
-{
+-(void)writePlistAndFill:(QSObject *)dObject withBrowsers:(QSObject *)iObject {
// Create the path to the fill folder for the 1Pwd extension
NSString *path = [@"~/Library/Application Support/1Password/Fill" stringByExpandingTildeInPath];
path = [path stringByAppendingPathComponent:[dObject objectForMeta:@"locationKey"]];
path = [path stringByAppendingPathExtension:@"plist"];
-
- //NSLog(@"dataDict: %@",dataDict );
-
+
// Put the reqired data into a dict (for plist creation)
- NSDictionary *plistDict = [NSDictionary dictionaryWithObjectsAndKeys:[dObject objectForMeta:@"form"], @"form",
- [dObject name], @"location",
+ NSDictionary *plistDict = [NSDictionary dictionaryWithObjectsAndKeys:[dObject stringValue], @"form",
+ [dObject details], @"location",
[NSDate date], @"timestamp", nil];
// Write the plist to the Fill folder
- [plistDict writeToFile:path atomically:YES];
+ if (![plistDict writeToFile:path atomically:YES]) {
+ NSBeep();
+ NSLog(@"Error writing .plist file (Permission error?)");
+ }
- // Open the URL in the default browser
NSWorkspace *ws = [NSWorkspace sharedWorkspace];
- [ws openURL:[NSURL URLWithString:[dObject name]]];
+
+ // Open the URL in the default browser
+ if(!iObject) {
+ [ws openURL:[NSURL URLWithString:[dObject details]]];
+ }
+
+ else {
+ for(QSObject *individual in [iObject splitObjects]){
+ if([individual isApplication]) {
+ NSURL *url = [NSURL URLWithString:[dObject details]];
+ NSString *ident = [[NSBundle bundleWithPath:[individual singleFilePath]] bundleIdentifier];
+ [ws openURLs:[NSArray arrayWithObject:url] withAppBundleIdentifier:ident
+ options:0
+additionalEventParamDescriptor:nil
+ launchIdentifiers:nil];
+
+ }
+ }
+ }
}
View
1  OnePasswordSource.h
@@ -22,7 +22,6 @@
//
#import <QSCore/QSObjectSource.h>
-#import "JSON.h"
#define QS1PasswordForm @"QS1PasswordForm"
#define QS1PasswordSecureNote @"QS1PasswordSecureNote"
View
345 OnePasswordSource.m
@@ -22,16 +22,26 @@
//
#import "OnePasswordSource.h"
+#import <YAJL/YAJL.h>
+
#import <QSCore/QSObject.h>
-#import "JSON.h"
#define kItemType @"type"
@implementation OnePasswordSource
- (BOOL)indexIsValidFromDate:(NSDate *)indexDate forEntry:(NSDictionary *)theEntry{
// Check to see if keychain has been modified since last scan
- NSString *keychainPath= (NSString *)CFPreferencesCopyAppValue((CFStringRef)@"AgileKeychainLocation",(CFStringRef) @"ws.agile.1Password");
- NSDate *modDate=[[[NSFileManager defaultManager] fileAttributesAtPath:[keychainPath stringByStandardizingPath] traverseLink:YES]fileModificationDate];
+ NSString *keychainPath= [(NSString *)CFPreferencesCopyAppValue((CFStringRef)@"AgileKeychainLocation",(CFStringRef) @"ws.agile.1Password") autorelease];
+ if (!keychainPath) {
+ keychainPath = @"~/Library/Application Support/1Password/1Password.agilekeychain";
+ }
+ NSError *error = nil;
+ NSDate *modDate=[[[NSFileManager defaultManager] attributesOfItemAtPath:[keychainPath stringByStandardizingPath] error:&error]fileModificationDate];
+
+ if (error) {
+ NSLog(@"Error: %@", error);
+ return NO;
+ }
// return the difference between the keychain mod date and the last index time
return ([modDate compare:indexDate]==NSOrderedAscending);
@@ -40,14 +50,15 @@ - (BOOL)indexIsValidFromDate:(NSDate *)indexDate forEntry:(NSDictionary *)theEnt
- (BOOL)loadChildrenForObject:(QSObject *)object {
// For the children to 1Pwd, just load what's in objectsForEntry
- if([[object primaryType] isEqualToString:QS1PasswordForm] || [[object primaryType] isEqualToString:QS1PasswordIdentity]
- || [[object primaryType] isEqualToString:QS1PasswordWalletItem] || [[object primaryType] isEqualToString:QS1PasswordSoftwareLicense]
- || [[object primaryType] isEqualToString:QS1PasswordOnlineService] || [[object primaryType] isEqualToString:QS1PasswordSecureNote])
- return NO;
-
- NSArray *items = [self objectsForEntry:[NSDictionary dictionaryWithObject:@"TRUE" forKey:@"LoadingChildren"]];
- [object setChildren:items];
- return YES;
+ if([[object primaryType] isEqualToString:NSFilenamesPboardType]) {
+ NSArray *items = [self objectsForEntry:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:@"LoadingChildren"]];
+ if (!items) {
+ return NO;
+ }
+ [object setChildren:items];
+ return YES;
+ }
+ return NO;
}
// Return a unique identifier for an object (if you haven't assigned one before)
@@ -57,222 +68,154 @@ - (BOOL)loadChildrenForObject:(QSObject *)object {
- (NSArray *)objectsForEntry:(NSDictionary *)theEntry{
- // Define Filemanager
- NSFileManager *fm = [NSFileManager defaultManager];
+ NSFileManager *fm = [[NSFileManager alloc] init];
// Define the objects (Empty to start with) we're going to send back to QS
- NSMutableArray *objects=[NSMutableArray arrayWithCapacity:1];
+ NSMutableArray *objects=[[NSMutableArray alloc] init];
// Find the path to the agile keychain file **has to be agilekeychain format
- NSString *keychainPath= (NSString *)CFPreferencesCopyAppValue((CFStringRef)@"AgileKeychainLocation",(CFStringRef) @"ws.agile.1Password");
-
- // Check if keychain path is declared in the .plist (AgileKeychainLocation is set)
- if (keychainPath == nil)
- {
- // If not, set it to the default location
- keychainPath = [NSString stringWithString:@"~/Library/Application Support/1Password/1Password.agilekeychain"];
+ NSString *keychainPath= [(NSString *)CFPreferencesCopyAppValue((CFStringRef)@"AgileKeychainLocation",(CFStringRef) @"ws.agile.1Password") autorelease];
+
+ // If path not set in prefs
+ if (keychainPath == nil) {
+ keychainPath = @"~/Library/Application Support/1Password/1Password.agilekeychain";
}
// Expand the tilde !important!
keychainPath = [keychainPath stringByExpandingTildeInPath];
+
+ // If we can't find the Agile Keychain
+ if (![fm fileExistsAtPath:keychainPath]) {
+ [fm release];
+ // Tell the user and exit so as not to cause crashes
+ NSLog(@"Could not determine keychain location. Please report this to the developer");
+ return 0;
+ }
+
+ // Get into the data folder of it
+ keychainPath = [keychainPath stringByAppendingPathComponent:@"data/default/"];
+
+ // get all the files in the directory
+ NSError *dataError = nil;
+ NSArray *dataFiles = [fm contentsOfDirectoryAtPath:keychainPath error:&dataError];
+
+ [fm release];
+
+ if(dataError) {
+ NSLog(@"Error: %@",dataError);
+ return nil;
+ }
+
+ // Set this up to get only the files ending in .1pwd
+ NSPredicate *contains1Pwd = [NSPredicate predicateWithFormat:@"SELF ENDSWITH[c] '1Password'"];
- // Make sure there's actually a file where we're looking, otherwise return 0 (below)
- if ([fm fileExistsAtPath:keychainPath]) {
-
- // Get into the data folder of it
- keychainPath = [keychainPath stringByAppendingPathComponent:@"data/default/"];
-
- // Catch any errors
- NSError *dataError = nil;
-
- // get all the files in the directory
- NSArray *dataFiles = [fm contentsOfDirectoryAtPath:keychainPath error:&dataError];
+ // Set the 1Pwd bundle to access the images
+ NSBundle *OnePasswordBundle = [NSBundle bundleWithIdentifier:@"ws.agile.1Password"];
+
+
+ // For each .1pwd file in the filtered files
+ for (NSString *dataPath in [dataFiles filteredArrayUsingPredicate:contains1Pwd])
+ {
- if(!dataFiles)
- NSLog(@"Error: %@",dataError);
+ NSData *JSONData = [NSData dataWithContentsOfFile:[keychainPath stringByAppendingPathComponent:dataPath]];
+ NSDictionary *JSONDict = [JSONData yajl_JSON];
- // Set this up to get only the files ending in .1pwd
- NSPredicate *contains1Pwd = [NSPredicate predicateWithFormat:@"SELF ENDSWITH[c] '1Password'"];
+ // If there's something wrong with the JSON Dictionary
+ if(!JSONDict) {
+ NSLog(@"Error getting JSONDict");
+ continue;
+ }
+ // Don't catalog trashed items
+ if([JSONDict objectForKey:@"trashed"]) {
+ continue;
+ }
- // Put these files in a new array
- NSArray *filteredFiles = [dataFiles filteredArrayUsingPredicate:contains1Pwd];
+ NSString *type = [theEntry objectForKey:kItemType];
+ NSString *objectType = [JSONDict objectForKey:@"typeName"];
- //DLog(@"filtered files: %@", [filteredFiles objectAtIndex:0]);
+ if ([objectType isEqualToString:@"passwords.Password"]) {
+ continue;
+ }
+ // if it's a webform
- // For each .1pwd file in the filtered files
- for (NSString *dataPath in filteredFiles)
- {
- NSError *stringError = nil;
-
- // Stuff the file contents into a string
- NSString *stringFromFileAtPath = [[NSString alloc]
- initWithContentsOfFile:[keychainPath stringByAppendingPathComponent:dataPath]
- encoding:NSUTF8StringEncoding
- error:&stringError];
-
- // if there's something wrong with the string
- if(!stringFromFileAtPath)
- NSLog(@"%@", stringError);
-
- // store the JSON file in a dictionary
- NSDictionary *JSONDict = [stringFromFileAtPath JSONValue];
+ NSString *title = [JSONDict objectForKey:@"title"];
+ NSString *uuidString = [JSONDict objectForKey:@"uuid"];
+
+ QSObject *newObject;
+ newObject=[QSObject makeObjectWithIdentifier:uuidString];
+ [newObject setName:title];
+
+ if([objectType isEqualToString:@"webforms.WebForm"])
+ {
+ if ([type isEqualToString:@"WebForm"] || [[theEntry objectForKey:@"LoadingChildren"] boolValue]) {
- // If there's something wrong with the JSON Dictionary
- if(!JSONDict)
- NSLog(@"Error getting JSONDict");
-
- // Now we're gonna need to distinguish between the different types of things - web forms, passwords, identities,
+ NSString *location = [JSONDict objectForKey:@"location"];
+ [newObject setObject:uuidString forType:QS1PasswordForm];
+ [newObject setLabel:location];
+ [newObject setDetails:location];
+ [newObject setIcon:[QSResourceManager imageNamed:@"ws.agile.1Password"]];
+ [newObject setObject:[JSONDict objectForKey:@"locationKey"] forMeta:@"locationKey"];
+ [objects addObject:newObject];
+ }
+ }
+ else {
+ [newObject setDetails:title];
- // First of all make sure it hasn't been trashed. We don't want to index trashed items (that is, trashed within 1Pwd)
- if(![JSONDict objectForKey:@"trashed"])
+ // if it's an identity
+ if ([objectType isEqualToString:@"identities.Identity"])
{
- // Set the 1Pwd bundle to access the images
- NSBundle *OnePasswordBundle = [NSBundle bundleWithIdentifier:@"ws.agile.1Password"];
-
- NSString *type = [theEntry objectForKey:kItemType];
- //DLog(@"Type is: %@", type);
-
- // Start the sorting
- // if it's an identity
- if ([[JSONDict objectForKey:@"typeName"] isEqualToString:@"identities.Identity"])
- {
- if ([type isEqualToString:@"Identity"] || [[theEntry objectForKey:@"LoadingChildren"] isEqualToString:@"TRUE"]) {
-
- //NSLog(@"File: %@ is an identity", dataPath);
- QSObject *newObject;
- NSString *newObjectName = [JSONDict objectForKey:@"title"];
- newObject=[QSObject objectWithString:newObjectName];
- [newObject setObject:newObjectName forType:QS1PasswordIdentity];
- [newObject setPrimaryType:QS1PasswordIdentity];
- [newObject setLabel:newObjectName];
- //DLog(@"Image is at: %@", [[NSBundle bundleForClass:[self class]]pathForResource:@"identities" ofType:@"png"]);
- [newObject setIcon:[QSResourceManager imageNamed:@"UserIcon"]];
- [newObject setObject:[JSONDict objectForKey:@"uuid"] forMeta:@"form"];
-
- [objects addObject:newObject];
- //DLog(@"File: %@ is a secure note", dataPath);
- }
+ if ([type isEqualToString:@"Identity"] || [[theEntry objectForKey:@"LoadingChildren"] boolValue]) {
+ [newObject setObject:uuidString forType:QS1PasswordIdentity];
+ [newObject setIcon:[QSResourceManager imageNamed:@"UserIcon"]];
+ [objects addObject:newObject];
}
-
- // else if it's a wallet or sofware license (wallet items are wallet.financial, sofwtare licenses are wallet.computer)
- else if ([[JSONDict objectForKey:@"typeName"] hasPrefix:@"wallet.financial"])
- {
- if ([type isEqualToString:@"WalletItem"] || [[theEntry objectForKey:@"LoadingChildren"] isEqualToString:@"TRUE"]) {
- //NSLog(@"File: %@ is a wallet", dataPath);
- QSObject *newObject;
- NSString *newObjectName = [JSONDict objectForKey:@"title"];
- newObject=[QSObject objectWithString:newObjectName];
- [newObject setObject:newObjectName forType:QS1PasswordWalletItem];
- [newObject setPrimaryType:QS1PasswordWalletItem];
- [newObject setLabel:newObjectName];
- //DLog(@"Image is at: %@", [[NSBundle bundleForClass:[self class]]pathForResource:@"wallet-icon-128" ofType:@"png"]);
- [newObject setIcon:[[[NSImage alloc] initByReferencingFile:[OnePasswordBundle pathForResource:@"wallet-icon-128" ofType:@"png"]]autorelease]];
- [newObject setObject:[JSONDict objectForKey:@"uuid"] forMeta:@"form"];
-
- [objects addObject:newObject];
- //DLog(@"File: %@ is a secure note", dataPath);
- }
- }
-
- // else if it's a software license
- else if ([[JSONDict objectForKey:@"typeName"] hasPrefix:@"wallet.computer"])
- {
- if ([type isEqualToString:@"SoftwareLicense"] || [[theEntry objectForKey:@"LoadingChildren"] isEqualToString:@"TRUE"]) {
- //NSLog(@"File: %@ is a software license", dataPath);
- QSObject *newObject;
- NSString *newObjectName = [JSONDict objectForKey:@"title"];
- newObject=[QSObject objectWithString:newObjectName];
- [newObject setObject:newObjectName forType:QS1PasswordSoftwareLicense];
- [newObject setPrimaryType:QS1PasswordSoftwareLicense];
- [newObject setLabel:newObjectName];
- //DLog(@"Image is at: %@", [[NSBundle bundleForClass:[self class]]pathForResource:@"software" ofType:@"png"]);
- [newObject setIcon:[QSResourceManager imageNamed:@"ToolbarAppsFolderIcon"]];
- [newObject setObject:[JSONDict objectForKey:@"uuid"] forMeta:@"form"];
-
- [objects addObject:newObject];
- //DLog(@"File: %@ is a wallet item", dataPath);
- }
- }
-
- // else if it's an online service
- else if ([[JSONDict objectForKey:@"typeName"] hasPrefix:@"wallet.onlineservices"])
- {
- if ([type isEqualToString:@"OnlineService"] || [[theEntry objectForKey:@"LoadingChildren"] isEqualToString:@"TRUE"]) {
- //NSLog(@"File: %@ is an onlineservice", dataPath);
- QSObject *newObject;
- NSString *newObjectName = [JSONDict objectForKey:@"title"];
- newObject=[QSObject objectWithString:newObjectName];
- [newObject setObject:newObjectName forType:QS1PasswordOnlineService];
- [newObject setPrimaryType:QS1PasswordOnlineService];
- [newObject setLabel:newObjectName];
- //DLog(@"Image is at: %@", [[NSBundle bundleForClass:[self class]]pathForResource:@"logins-icon-128" ofType:@"png"]);
- [newObject setIcon:[[[NSImage alloc] initByReferencingFile:[OnePasswordBundle pathForResource:@"logins-icon-128" ofType:@"png"]]autorelease]];
- [newObject setObject:[JSONDict objectForKey:@"uuid"] forMeta:@"form"];
-
- [objects addObject:newObject];
- //DLog(@"File: %@ is an online service", dataPath);
- }
+ }
+
+ // else if it's a wallet or sofware license (wallet items are wallet.financial, software licenses are wallet.computer)
+ else if ([objectType hasPrefix:@"wallet.financial"])
+ {
+ if ([type isEqualToString:@"WalletItem"] || [[theEntry objectForKey:@"LoadingChildren"] boolValue]) {
+ [newObject setObject:title forType:QS1PasswordWalletItem];
+ [newObject setIcon:[[[NSImage alloc] initByReferencingFile:[OnePasswordBundle pathForResource:@"wallet-icon-128" ofType:@"png"]]autorelease]];
+ [objects addObject:newObject];
}
-
- // else if it's a secure note
- else if ([[JSONDict objectForKey:@"typeName"] isEqualToString:@"securenotes.SecureNote"])
- {
- if ([type isEqualToString:@"SecureNote"] || [[theEntry objectForKey:@"LoadingChildren"] isEqualToString:@"TRUE"]) {
-
- QSObject *newObject;
- NSString *newObjectName = [JSONDict objectForKey:@"title"];
- newObject=[QSObject objectWithString:newObjectName];
- [newObject setObject:newObjectName forType:QS1PasswordSecureNote];
- [newObject setPrimaryType:QS1PasswordSecureNote];
- [newObject setLabel:newObjectName];
- //DLog(@"Image is at: %@", [[NSBundle bundleForClass:[self class]]pathForResource:@"secure-notes-icon-128" ofType:@"png"]);
- [newObject setIcon:[[[NSImage alloc] initByReferencingFile:[OnePasswordBundle pathForResource:@"secure-notes-icon-128" ofType:@"png"]]autorelease]];
- [newObject setObject:[JSONDict objectForKey:@"uuid"] forMeta:@"form"];
-
- [objects addObject:newObject];
-
- //DLog(@"File: %@ is a secure note", dataPath);