├── .gitignore
├── .gitmodules
├── Documentation.mdown
├── Info.plist
├── LICENSE
├── OnePassword.xcodeproj
├── alcor.mode1
├── alcor.pbxuser
├── patrick.mode1v3
├── patrick.pbxuser
├── project.pbxproj
└── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcuserdata
│ └── patrick.xcuserdatad
│ └── WorkspaceSettings.xcsettings
├── OnePasswordAction.h
├── OnePasswordAction.m
├── OnePasswordDefines.h
├── OnePasswordSource.h
├── OnePasswordSource.m
├── OnePassword_Prefix.pch
├── README.markdown
└── YAJL.framework
├── Headers
├── Resources
├── Versions
├── A
│ ├── Headers
│ │ ├── NSBundle+YAJL.h
│ │ ├── NSObject+YAJL.h
│ │ ├── YAJL.h
│ │ ├── YAJLDocument.h
│ │ ├── YAJLGen.h
│ │ ├── YAJLParser.h
│ │ ├── yajl_common.h
│ │ ├── yajl_gen.h
│ │ ├── yajl_parse.h
│ │ └── yajl_version.h
│ ├── Resources
│ │ ├── English.lproj
│ │ │ └── InfoPlist.strings
│ │ └── Info.plist
│ └── YAJL
└── Current
└── YAJL
/.gitignore:
--------------------------------------------------------------------------------
1 | .svn
2 | .DS_Store
3 | ._.*
4 | *.o
5 | build
6 | Makefile
7 | autom4te.cache
8 | *~
9 | *.pbxuser
10 | *.perspectivev3
11 | *.mode1v3
12 | *.mode2v3
13 | *.pbxuser
14 | *.tm_build_errors
15 | *.tmproj
16 | Developer.xcconfig
17 | *.xcworkspace
18 | *.xcuserdatad
19 | *.xcuserdatad/*
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "JSONKit"]
2 | path = JSONKit
3 | url = git://github.com/johnezang/JSONKit.git
4 |
--------------------------------------------------------------------------------
/Documentation.mdown:
--------------------------------------------------------------------------------
1 | ## 1Password Plugin
2 |
3 | This plugin gives you the ability to quickly find 1Password items using Quicksilver.
4 |
5 | With any item from 1Password selected, you can:
6 |
7 | * View the item in 1Password
8 | * Quick Look the item
9 |
10 | ### Login Items
11 |
12 | Login items have some special features. By default, opening a Login item will trigger the “Open & Fill” behavior using the first URL associated with the item. To view the item in 1Password instead, hold the Shift key while opening it. (This behavior is part of 1Password, not Quicksilver.)
13 |
14 | All of the URLs associated with a Login are accesible by selecting the item and hitting → or /. Use this feature when you want to Open & Fill one of its other URLs.
15 |
16 | ### Requirements
17 |
18 | For Quicksilver to index items from 1Password, you will need to enable [integration with 3rd party](https://support.1password.com/integration-mac/) apps in the “Advanced” section of 1Password’s preferences.
19 |
20 | ### Catalog
21 |
22 | The 1Password catalog presets allow Quicksilver to index your 1Password items. (Only basic information like title and URL is available. 1Password does not expose sensitive data to 3rd party applications.)
23 |
24 | Go to Preferences → [Catalog](qs://preferences#QSCatalogPrefPane) → Plugins and look for the 1Password group. By expanding this group, you can select which categories from 1Password you would like indexed by Quicksilver.
25 |
26 | You can access all these items by right arrowing (→) into the 1Password application in Quicksilver’s first pane.
27 |
28 | ### Actions
29 |
30 | Open & Fill
31 | : The Open & Fill action is available for individual website URLs associated with Login items. When run, 1Password opens the URL in your browser and fills the login form.
32 |
33 | -----
34 |
35 | This plugin has taken a lot of development time. If you enjoy using it, please consider [donating](http://patjack.co.uk/donating-for-my-quicksilver-1password-plugin/).
36 |
--------------------------------------------------------------------------------
/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleDisplayName
8 | 1Password Plugin
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | com.robertson.Quicksilver.OnePassword
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | 1Password Plugin
17 | CFBundlePackageType
18 | BNDL
19 | CFBundleShortVersionString
20 | 4.2.0
21 | CFBundleVersion
22 | 3B6
23 | QSActions
24 |
25 | openAndFill
26 |
27 | actionClass
28 | OnePasswordAction
29 | actionSelector
30 | openAndFill:
31 | directTypes
32 |
33 | QS1PasswordURLType
34 |
35 | name
36 | Open & Fill
37 | precedence
38 | 4
39 |
40 |
41 | QSDefaults
42 |
43 | QS1PasswordKeychainPath
44 | ~/Library/Application Support/1Password 4/3rd Party Integration/bookmarks-default.json
45 |
46 | QSPlugIn
47 |
48 | author
49 | Patrick Robertson
50 | categories
51 |
52 | Applications
53 |
54 | description
55 | Quickly find and use 1Password items
56 | extendedDescription
57 | <h2>1Password Plugin</h2>
58 | <p>This plugin gives you the ability to quickly find 1Password items using Quicksilver.</p>
59 | <p>With any item from 1Password selected, you can:</p>
60 | <ul>
61 | <li>View the item in 1Password</li>
62 | <li>Quick Look the item</li>
63 | </ul>
64 | <h3>Login Items</h3>
65 | <p>Login items have some special features. By default, opening a Login item will trigger the “Open & Fill” behavior using the first URL associated with the item. To view the item in 1Password instead, hold the Shift key while opening it. (This behavior is part of 1Password, not Quicksilver.)</p>
66 | <p>All of the URLs associated with a Login are accesible by selecting the item and hitting <kbd>→</kbd> or <kbd>/</kbd>. Use this feature when you want to Open & Fill one of its other URLs.</p>
67 | <h3>Requirements</h3>
68 | <p>For Quicksilver to index items from 1Password, you will need to enable <a href="https://support.1password.com/integration-mac/">integration with 3rd party</a> apps in the “Advanced” section of 1Password’s preferences.</p>
69 | <h3>Catalog</h3>
70 | <p>The 1Password catalog presets allow Quicksilver to index your 1Password items. (Only basic information like title and URL is available. 1Password does not expose sensitive data to 3rd party applications.)</p>
71 | <p>Go to Preferences → <a href="qs://preferences#QSCatalogPrefPane">Catalog</a> → Plugins and look for the 1Password group. By expanding this group, you can select which categories from 1Password you would like indexed by Quicksilver.</p>
72 | <p>You can access all these items by right arrowing (→) into the 1Password application in Quicksilver’s first pane.</p>
73 | <h3>Actions</h3>
74 | <dl>
75 | <dt>Open & Fill</dt>
76 | <dd>The Open & Fill action is available for individual website URLs associated with Login items. When run, 1Password opens the URL in your browser and fills the login form.</dd>
77 | </dl>
78 | <hr>
79 | <p>This plugin has taken a lot of development time. If you enjoy using it, please consider <a href="http://patjack.co.uk/donating-for-my-quicksilver-1password-plugin/">donating</a>.</p>
80 | icon
81 | QS1PasswordIcon
82 | relatedBundles
83 |
84 | com.agilebits.onepassword7
85 |
86 |
87 | QSPresetAdditions
88 |
89 |
90 | ID
91 | QSPreset1PasswordGroup
92 | children
93 |
94 |
95 | ID
96 | QSPreset1PasswordLogins
97 | enabled
98 |
99 | icon
100 | QS1PasswordVaultIcon
101 | name
102 | Logins
103 | settings
104 |
105 | categoryUUID
106 | 001
107 |
108 | source
109 | OnePasswordSource
110 |
111 |
112 | ID
113 | QSPreset1PasswordCreditCards
114 | enabled
115 |
116 | icon
117 | QS1PasswordVaultIcon
118 | name
119 | Credit Cards
120 | settings
121 |
122 | categoryUUID
123 | 002
124 |
125 | source
126 | OnePasswordSource
127 |
128 |
129 | ID
130 | QSPreset1PasswordNotes
131 | enabled
132 |
133 | icon
134 | QS1PasswordVaultIcon
135 | name
136 | Secure Notes
137 | settings
138 |
139 | categoryUUID
140 | 003
141 |
142 | source
143 | OnePasswordSource
144 |
145 |
146 | ID
147 | QSPreset1PasswordIdentities
148 | enabled
149 |
150 | icon
151 | QS1PasswordVaultIcon
152 | name
153 | Identities
154 | settings
155 |
156 | categoryUUID
157 | 004
158 |
159 | source
160 | OnePasswordSource
161 |
162 |
163 | ID
164 | QSPreset1PasswordPasswords
165 | enabled
166 |
167 | icon
168 | QS1PasswordVaultIcon
169 | name
170 | Generated Passwords
171 | settings
172 |
173 | categoryUUID
174 | 005
175 |
176 | source
177 | OnePasswordSource
178 |
179 |
180 | ID
181 | QSPreset1PasswordDocuments
182 | enabled
183 |
184 | icon
185 | QS1PasswordVaultIcon
186 | name
187 | Documents
188 | settings
189 |
190 | categoryUUID
191 | 006
192 |
193 | source
194 | OnePasswordSource
195 |
196 |
197 | ID
198 | QSPreset1PasswordLicenses
199 | enabled
200 |
201 | icon
202 | QS1PasswordVaultIcon
203 | name
204 | Software Licenses
205 | settings
206 |
207 | categoryUUID
208 | 100
209 |
210 | source
211 | OnePasswordSource
212 |
213 |
214 | ID
215 | QSPreset1PasswordBankAccounts
216 | enabled
217 |
218 | icon
219 | QS1PasswordVaultIcon
220 | name
221 | Bank Accounts
222 | settings
223 |
224 | categoryUUID
225 | 101
226 |
227 | source
228 | OnePasswordSource
229 |
230 |
231 | ID
232 | QSPreset1PasswordDatabases
233 | enabled
234 |
235 | icon
236 | QS1PasswordVaultIcon
237 | name
238 | Databases
239 | settings
240 |
241 | categoryUUID
242 | 102
243 |
244 | source
245 | OnePasswordSource
246 |
247 |
248 | ID
249 | QSPreset1PasswordDriverLicenses
250 | enabled
251 |
252 | icon
253 | QS1PasswordVaultIcon
254 | name
255 | Driver Licenses
256 | settings
257 |
258 | categoryUUID
259 | 103
260 |
261 | source
262 | OnePasswordSource
263 |
264 |
265 | ID
266 | QSPreset1PasswordOutdoorLicenses
267 | enabled
268 |
269 | icon
270 | QS1PasswordVaultIcon
271 | name
272 | Outdoor Licenses
273 | settings
274 |
275 | categoryUUID
276 | 104
277 |
278 | source
279 | OnePasswordSource
280 |
281 |
282 | ID
283 | QSPreset1PasswordMemberships
284 | enabled
285 |
286 | icon
287 | QS1PasswordVaultIcon
288 | name
289 | Memberships
290 | settings
291 |
292 | categoryUUID
293 | 105
294 |
295 | source
296 | OnePasswordSource
297 |
298 |
299 | ID
300 | QSPreset1PasswordPassports
301 | enabled
302 |
303 | icon
304 | QS1PasswordVaultIcon
305 | name
306 | Passports
307 | settings
308 |
309 | categoryUUID
310 | 106
311 |
312 | source
313 | OnePasswordSource
314 |
315 |
316 | ID
317 | QSPreset1PasswordRewardPrograms
318 | enabled
319 |
320 | icon
321 | QS1PasswordVaultIcon
322 | name
323 | Reward Programs
324 | settings
325 |
326 | categoryUUID
327 | 107
328 |
329 | source
330 | OnePasswordSource
331 |
332 |
333 | ID
334 | QSPreset1PasswordSSNs
335 | enabled
336 |
337 | icon
338 | QS1PasswordVaultIcon
339 | name
340 | Social Security Numbers
341 | settings
342 |
343 | categoryUUID
344 | 108
345 |
346 | source
347 | OnePasswordSource
348 |
349 |
350 | ID
351 | QSPreset1PasswordWirelessRouters
352 | enabled
353 |
354 | icon
355 | QS1PasswordVaultIcon
356 | name
357 | Wireless Routers
358 | settings
359 |
360 | categoryUUID
361 | 109
362 |
363 | source
364 | OnePasswordSource
365 |
366 |
367 | ID
368 | QSPreset1PasswordServers
369 | enabled
370 |
371 | icon
372 | QS1PasswordVaultIcon
373 | name
374 | Servers
375 | settings
376 |
377 | categoryUUID
378 | 110
379 |
380 | source
381 | OnePasswordSource
382 |
383 |
384 | ID
385 | QSPreset1PasswordEmailAccounts
386 | enabled
387 |
388 | icon
389 | QS1PasswordVaultIcon
390 | name
391 | Email Accounts
392 | settings
393 |
394 | categoryUUID
395 | 111
396 |
397 | source
398 | OnePasswordSource
399 |
400 |
401 | enabled
402 |
403 | icon
404 | QS1PasswordIcon
405 | name
406 | 1Password
407 | source
408 | QSGroupObjectSource
409 |
410 |
411 | QSRegistration
412 |
413 | QSActionProviders
414 |
415 | OnePasswordAction
416 | OnePasswordAction
417 |
418 | QSBundleChildHandlers
419 |
420 | com.agilebits.onepassword7
421 | OnePasswordSource
422 |
423 | QSObjectHandlers
424 |
425 | QS1PasswordItemType
426 | OnePasswordSource
427 |
428 | QSObjectSources
429 |
430 | OnePasswordSource
431 | OnePasswordSource
432 |
433 | QSTypeDefinitions
434 |
435 | QS1PasswordItemType
436 |
437 | icon
438 | QS1PasswordIcon
439 | name
440 | 1Password Items
441 | smartspace
442 | 6
443 |
444 | QS1PasswordURLType
445 |
446 | icon
447 | QS1PasswordIcon
448 | name
449 | URLs from 1Password
450 |
451 |
452 |
453 | QSRequirements
454 |
455 | bundles
456 |
457 |
458 | id
459 | com.agilebits.onepassword7
460 | name
461 | 1Password 7
462 | version
463 | 7.0.0
464 |
465 |
466 | minHostVersion
467 | 4012
468 | osRequired
469 | 10.12
470 |
471 | QSResourceAdditions
472 |
473 | QS1PasswordIcon
474 |
475 |
476 | bundle
477 | com.agilebits.onepassword7
478 | resource
479 | AppIcon.icns
480 |
481 |
482 | QS1PasswordVaultIcon
483 |
484 |
485 | bundle
486 | com.agilebits.onepassword7
487 | resource
488 | opvault.icns
489 |
490 |
491 |
492 |
493 |
494 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/OnePassword.xcodeproj/alcor.mode1:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ActivePerspectiveName
6 | Project
7 | AllowedModules
8 |
9 |
10 | BundleLoadPath
11 |
12 | MaxInstances
13 | n
14 | Module
15 | PBXSmartGroupTreeModule
16 | Name
17 | Groups and Files Outline View
18 |
19 |
20 | BundleLoadPath
21 |
22 | MaxInstances
23 | n
24 | Module
25 | PBXNavigatorGroup
26 | Name
27 | Editor
28 |
29 |
30 | BundleLoadPath
31 |
32 | MaxInstances
33 | n
34 | Module
35 | XCTaskListModule
36 | Name
37 | Task List
38 |
39 |
40 | BundleLoadPath
41 |
42 | MaxInstances
43 | n
44 | Module
45 | XCDetailModule
46 | Name
47 | File and Smart Group Detail Viewer
48 |
49 |
50 | BundleLoadPath
51 |
52 | MaxInstances
53 | 1
54 | Module
55 | PBXBuildResultsModule
56 | Name
57 | Detailed Build Results Viewer
58 |
59 |
60 | BundleLoadPath
61 |
62 | MaxInstances
63 | 1
64 | Module
65 | PBXProjectFindModule
66 | Name
67 | Project Batch Find Tool
68 |
69 |
70 | BundleLoadPath
71 |
72 | MaxInstances
73 | n
74 | Module
75 | PBXRunSessionModule
76 | Name
77 | Run Log
78 |
79 |
80 | BundleLoadPath
81 |
82 | MaxInstances
83 | n
84 | Module
85 | PBXBookmarksModule
86 | Name
87 | Bookmarks Tool
88 |
89 |
90 | BundleLoadPath
91 |
92 | MaxInstances
93 | n
94 | Module
95 | PBXClassBrowserModule
96 | Name
97 | Class Browser
98 |
99 |
100 | BundleLoadPath
101 |
102 | MaxInstances
103 | n
104 | Module
105 | PBXCVSModule
106 | Name
107 | Source Code Control Tool
108 |
109 |
110 | BundleLoadPath
111 |
112 | MaxInstances
113 | n
114 | Module
115 | PBXDebugBreakpointsModule
116 | Name
117 | Debug Breakpoints Tool
118 |
119 |
120 | BundleLoadPath
121 |
122 | MaxInstances
123 | n
124 | Module
125 | XCDockableInspector
126 | Name
127 | Inspector
128 |
129 |
130 | BundleLoadPath
131 |
132 | MaxInstances
133 | n
134 | Module
135 | PBXOpenQuicklyModule
136 | Name
137 | Open Quickly Tool
138 |
139 |
140 | BundleLoadPath
141 |
142 | MaxInstances
143 | 1
144 | Module
145 | PBXDebugSessionModule
146 | Name
147 | Debugger
148 |
149 |
150 | BundleLoadPath
151 |
152 | MaxInstances
153 | 1
154 | Module
155 | PBXDebugCLIModule
156 | Name
157 | Debug Console
158 |
159 |
160 | Description
161 | DefaultDescriptionKey
162 | DockingSystemVisible
163 |
164 | Extension
165 | mode1
166 | FavBarConfig
167 |
168 | PBXProjectModuleGUID
169 | 7FFA8ED70816CE0200A858CD
170 | XCBarModuleItemNames
171 |
172 | XCBarModuleItems
173 |
174 |
175 | FirstTimeWindowDisplayed
176 |
177 | Identifier
178 | com.apple.perspectives.project.mode1
179 | MajorVersion
180 | 31
181 | MinorVersion
182 | 1
183 | Name
184 | Default
185 | Notifications
186 |
187 | OpenEditors
188 |
189 | PerspectiveWidths
190 |
191 | -1
192 | -1
193 |
194 | Perspectives
195 |
196 |
197 | ChosenToolbarItems
198 |
199 | active-target-popup
200 | active-buildstyle-popup
201 | active-executable-popup
202 | action
203 | NSToolbarFlexibleSpaceItem
204 | buildOrClean
205 | build-and-runOrDebug
206 | com.apple.ide.PBXToolbarStopButton
207 | get-info
208 | toggle-editor
209 | NSToolbarFlexibleSpaceItem
210 | com.apple.pbx.toolbar.searchfield
211 |
212 | ControllerClassBaseName
213 |
214 | IconName
215 | WindowOfProjectWithEditor
216 | Identifier
217 | perspective.project
218 | IsVertical
219 |
220 | Layout
221 |
222 |
223 | ContentConfiguration
224 |
225 | PBXBottomSmartGroupGIDs
226 |
227 | 1C37FBAC04509CD000000102
228 | 1C37FAAC04509CD000000102
229 | 1C08E77C0454961000C914BD
230 | 1C37FABC05509CD000000102
231 | 1C37FABC05539CD112110102
232 | E2644B35053B69B200211256
233 | 1C37FABC04509CD000100104
234 | 1CC0EA4004350EF90044410B
235 | 1CC0EA4004350EF90041110B
236 |
237 | PBXProjectModuleGUID
238 | 1CE0B1FE06471DED0097A5F4
239 | PBXProjectModuleLabel
240 | Files
241 | PBXProjectStructureProvided
242 | yes
243 | PBXSmartGroupTreeModuleColumnData
244 |
245 | PBXSmartGroupTreeModuleColumnWidthsKey
246 |
247 | 186
248 |
249 | PBXSmartGroupTreeModuleColumnsKey_v4
250 |
251 | MainColumn
252 |
253 |
254 | PBXSmartGroupTreeModuleOutlineStateKey_v7
255 |
256 | PBXSmartGroupTreeModuleOutlineStateExpansionKey
257 |
258 | 0259C574FE90428111CA0C5A
259 | 1C37FBAC04509CD000000102
260 | 1C37FAAC04509CD000000102
261 | 1C37FABC05509CD000000102
262 |
263 | PBXSmartGroupTreeModuleOutlineStateSelectionKey
264 |
265 |
266 | 0
267 |
268 |
269 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
270 | {{0, 0}, {186, 338}}
271 |
272 | PBXTopSmartGroupGIDs
273 |
274 | XCIncludePerspectivesSwitch
275 |
276 | XCSharingToken
277 | com.apple.Xcode.GFSharingToken
278 |
279 | GeometryConfiguration
280 |
281 | Frame
282 | {{0, 0}, {203, 356}}
283 | GroupTreeTableConfiguration
284 |
285 | MainColumn
286 | 186
287 |
288 | RubberWindowFrame
289 | 188 314 690 397 0 0 1024 746
290 |
291 | Module
292 | PBXSmartGroupTreeModule
293 | Proportion
294 | 203pt
295 |
296 |
297 | Dock
298 |
299 |
300 | ContentConfiguration
301 |
302 | PBXProjectModuleGUID
303 | 1CE0B20306471E060097A5F4
304 | PBXProjectModuleLabel
305 | MyNewFile14.java
306 | PBXSplitModuleInNavigatorKey
307 |
308 | Split0
309 |
310 | PBXProjectModuleGUID
311 | 1CE0B20406471E060097A5F4
312 | PBXProjectModuleLabel
313 | MyNewFile14.java
314 |
315 | SplitCount
316 | 1
317 |
318 | StatusBarVisibility
319 |
320 |
321 | GeometryConfiguration
322 |
323 | Frame
324 | {{0, 0}, {482, 0}}
325 | RubberWindowFrame
326 | 188 314 690 397 0 0 1024 746
327 |
328 | Module
329 | PBXNavigatorGroup
330 | Proportion
331 | 0pt
332 |
333 |
334 | BecomeActive
335 |
336 | ContentConfiguration
337 |
338 | PBXProjectModuleGUID
339 | 1CE0B20506471E060097A5F4
340 | PBXProjectModuleLabel
341 | Detail
342 |
343 | GeometryConfiguration
344 |
345 | Frame
346 | {{0, 5}, {482, 351}}
347 | RubberWindowFrame
348 | 188 314 690 397 0 0 1024 746
349 |
350 | Module
351 | XCDetailModule
352 | Proportion
353 | 351pt
354 |
355 |
356 | Proportion
357 | 482pt
358 |
359 |
360 | Name
361 | Project
362 | ServiceClasses
363 |
364 | XCModuleDock
365 | PBXSmartGroupTreeModule
366 | XCModuleDock
367 | PBXNavigatorGroup
368 | XCDetailModule
369 |
370 | TableOfContents
371 |
372 | 7F38C84B09637A34004E375B
373 | 1CE0B1FE06471DED0097A5F4
374 | 7F38C84C09637A34004E375B
375 | 1CE0B20306471E060097A5F4
376 | 1CE0B20506471E060097A5F4
377 |
378 | ToolbarConfiguration
379 | xcode.toolbar.config.default
380 |
381 |
382 | ControllerClassBaseName
383 |
384 | IconName
385 | WindowOfProject
386 | Identifier
387 | perspective.morph
388 | IsVertical
389 | 0
390 | Layout
391 |
392 |
393 | BecomeActive
394 | 1
395 | ContentConfiguration
396 |
397 | PBXBottomSmartGroupGIDs
398 |
399 | 1C37FBAC04509CD000000102
400 | 1C37FAAC04509CD000000102
401 | 1C08E77C0454961000C914BD
402 | 1C37FABC05509CD000000102
403 | 1C37FABC05539CD112110102
404 | E2644B35053B69B200211256
405 | 1C37FABC04509CD000100104
406 | 1CC0EA4004350EF90044410B
407 | 1CC0EA4004350EF90041110B
408 |
409 | PBXProjectModuleGUID
410 | 11E0B1FE06471DED0097A5F4
411 | PBXProjectModuleLabel
412 | Files
413 | PBXProjectStructureProvided
414 | yes
415 | PBXSmartGroupTreeModuleColumnData
416 |
417 | PBXSmartGroupTreeModuleColumnWidthsKey
418 |
419 | 186
420 |
421 | PBXSmartGroupTreeModuleColumnsKey_v4
422 |
423 | MainColumn
424 |
425 |
426 | PBXSmartGroupTreeModuleOutlineStateKey_v7
427 |
428 | PBXSmartGroupTreeModuleOutlineStateExpansionKey
429 |
430 | 29B97314FDCFA39411CA2CEA
431 | 1C37FABC05509CD000000102
432 |
433 | PBXSmartGroupTreeModuleOutlineStateSelectionKey
434 |
435 |
436 | 0
437 |
438 |
439 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
440 | {{0, 0}, {186, 337}}
441 |
442 | PBXTopSmartGroupGIDs
443 |
444 | XCIncludePerspectivesSwitch
445 | 1
446 | XCSharingToken
447 | com.apple.Xcode.GFSharingToken
448 |
449 | GeometryConfiguration
450 |
451 | Frame
452 | {{0, 0}, {203, 355}}
453 | GroupTreeTableConfiguration
454 |
455 | MainColumn
456 | 186
457 |
458 | RubberWindowFrame
459 | 373 269 690 397 0 0 1440 878
460 |
461 | Module
462 | PBXSmartGroupTreeModule
463 | Proportion
464 | 100%
465 |
466 |
467 | Name
468 | Morph
469 | PreferredWidth
470 | 300
471 | ServiceClasses
472 |
473 | XCModuleDock
474 | PBXSmartGroupTreeModule
475 |
476 | TableOfContents
477 |
478 | 11E0B1FE06471DED0097A5F4
479 |
480 | ToolbarConfiguration
481 | xcode.toolbar.config.default.short
482 |
483 |
484 | PerspectivesBarVisible
485 |
486 | ShelfIsVisible
487 |
488 | SourceDescription
489 | file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec'
490 | StatusbarIsVisible
491 |
492 | TimeStamp
493 | 0.0
494 | ToolbarDisplayMode
495 | 2
496 | ToolbarIsVisible
497 |
498 | ToolbarSizeMode
499 | 2
500 | Type
501 | Perspectives
502 | UpdateMessage
503 | The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?
504 | WindowJustification
505 | 5
506 | WindowOrderList
507 |
508 | /Volumes/Lore/Library/Application Support/Apple/Developer Tools/Project Templates/Quicksilver Plug-in/Quicksilver Plug-in.pbproj
509 |
510 | WindowString
511 | 188 314 690 397 0 0 1024 746
512 | WindowTools
513 |
514 |
515 | Identifier
516 | windowTool.build
517 | Layout
518 |
519 |
520 | Dock
521 |
522 |
523 | ContentConfiguration
524 |
525 | PBXProjectModuleGUID
526 | 1CD0528F0623707200166675
527 | PBXProjectModuleLabel
528 | <No Editor>
529 | PBXSplitModuleInNavigatorKey
530 |
531 | Split0
532 |
533 | PBXProjectModuleGUID
534 | 1CD052900623707200166675
535 |
536 | SplitCount
537 | 1
538 |
539 | StatusBarVisibility
540 | 1
541 |
542 | GeometryConfiguration
543 |
544 | Frame
545 | {{0, 0}, {500, 215}}
546 | RubberWindowFrame
547 | 192 257 500 500 0 0 1280 1002
548 |
549 | Module
550 | PBXNavigatorGroup
551 | Proportion
552 | 218pt
553 |
554 |
555 | BecomeActive
556 | 1
557 | ContentConfiguration
558 |
559 | PBXProjectModuleGUID
560 | XCMainBuildResultsModuleGUID
561 | PBXProjectModuleLabel
562 | Build
563 |
564 | GeometryConfiguration
565 |
566 | Frame
567 | {{0, 222}, {500, 236}}
568 | RubberWindowFrame
569 | 192 257 500 500 0 0 1280 1002
570 |
571 | Module
572 | PBXBuildResultsModule
573 | Proportion
574 | 236pt
575 |
576 |
577 | Proportion
578 | 458pt
579 |
580 |
581 | Name
582 | Build Results
583 | ServiceClasses
584 |
585 | PBXBuildResultsModule
586 |
587 | StatusbarIsVisible
588 | 1
589 | TableOfContents
590 |
591 | 1C78EAA5065D492600B07095
592 | 1C78EAA6065D492600B07095
593 | 1CD0528F0623707200166675
594 | XCMainBuildResultsModuleGUID
595 |
596 | ToolbarConfiguration
597 | xcode.toolbar.config.build
598 | WindowString
599 | 192 257 500 500 0 0 1280 1002
600 |
601 |
602 | Identifier
603 | windowTool.debugger
604 | Layout
605 |
606 |
607 | Dock
608 |
609 |
610 | ContentConfiguration
611 |
612 | Debugger
613 |
614 | HorizontalSplitView
615 |
616 | _collapsingFrameDimension
617 | 0.0
618 | _indexOfCollapsedView
619 | 0
620 | _percentageOfCollapsedView
621 | 0.0
622 | isCollapsed
623 | yes
624 | sizes
625 |
626 | {{0, 0}, {317, 164}}
627 | {{317, 0}, {377, 164}}
628 |
629 |
630 | VerticalSplitView
631 |
632 | _collapsingFrameDimension
633 | 0.0
634 | _indexOfCollapsedView
635 | 0
636 | _percentageOfCollapsedView
637 | 0.0
638 | isCollapsed
639 | yes
640 | sizes
641 |
642 | {{0, 0}, {694, 164}}
643 | {{0, 164}, {694, 216}}
644 |
645 |
646 |
647 | LauncherConfigVersion
648 | 8
649 | PBXProjectModuleGUID
650 | 1C162984064C10D400B95A72
651 | PBXProjectModuleLabel
652 | Debug - GLUTExamples (Underwater)
653 |
654 | GeometryConfiguration
655 |
656 | DebugConsoleDrawerSize
657 | {100, 120}
658 | DebugConsoleVisible
659 | None
660 | DebugConsoleWindowFrame
661 | {{200, 200}, {500, 300}}
662 | DebugSTDIOWindowFrame
663 | {{200, 200}, {500, 300}}
664 | Frame
665 | {{0, 0}, {694, 380}}
666 | RubberWindowFrame
667 | 321 238 694 422 0 0 1440 878
668 |
669 | Module
670 | PBXDebugSessionModule
671 | Proportion
672 | 100%
673 |
674 |
675 | Proportion
676 | 100%
677 |
678 |
679 | Name
680 | Debugger
681 | ServiceClasses
682 |
683 | PBXDebugSessionModule
684 |
685 | StatusbarIsVisible
686 | 1
687 | TableOfContents
688 |
689 | 1CD10A99069EF8BA00B06720
690 | 1C0AD2AB069F1E9B00FABCE6
691 | 1C162984064C10D400B95A72
692 | 1C0AD2AC069F1E9B00FABCE6
693 |
694 | ToolbarConfiguration
695 | xcode.toolbar.config.debug
696 | WindowString
697 | 321 238 694 422 0 0 1440 878
698 | WindowToolGUID
699 | 1CD10A99069EF8BA00B06720
700 | WindowToolIsVisible
701 | 0
702 |
703 |
704 | Identifier
705 | windowTool.find
706 | Layout
707 |
708 |
709 | Dock
710 |
711 |
712 | Dock
713 |
714 |
715 | ContentConfiguration
716 |
717 | PBXProjectModuleGUID
718 | 1CDD528C0622207200134675
719 | PBXProjectModuleLabel
720 | <No Editor>
721 | PBXSplitModuleInNavigatorKey
722 |
723 | Split0
724 |
725 | PBXProjectModuleGUID
726 | 1CD0528D0623707200166675
727 |
728 | SplitCount
729 | 1
730 |
731 | StatusBarVisibility
732 | 1
733 |
734 | GeometryConfiguration
735 |
736 | Frame
737 | {{0, 0}, {781, 167}}
738 | RubberWindowFrame
739 | 62 385 781 470 0 0 1440 878
740 |
741 | Module
742 | PBXNavigatorGroup
743 | Proportion
744 | 781pt
745 |
746 |
747 | Proportion
748 | 50%
749 |
750 |
751 | BecomeActive
752 | 1
753 | ContentConfiguration
754 |
755 | PBXProjectModuleGUID
756 | 1CD0528E0623707200166675
757 | PBXProjectModuleLabel
758 | Project Find
759 |
760 | GeometryConfiguration
761 |
762 | Frame
763 | {{8, 0}, {773, 254}}
764 | RubberWindowFrame
765 | 62 385 781 470 0 0 1440 878
766 |
767 | Module
768 | PBXProjectFindModule
769 | Proportion
770 | 50%
771 |
772 |
773 | Proportion
774 | 428pt
775 |
776 |
777 | Name
778 | Project Find
779 | ServiceClasses
780 |
781 | PBXProjectFindModule
782 |
783 | StatusbarIsVisible
784 | 1
785 | TableOfContents
786 |
787 | 1C530D57069F1CE1000CFCEE
788 | 1C530D58069F1CE1000CFCEE
789 | 1C530D59069F1CE1000CFCEE
790 | 1CDD528C0622207200134675
791 | 1C530D5A069F1CE1000CFCEE
792 | 1CE0B1FE06471DED0097A5F4
793 | 1CD0528E0623707200166675
794 |
795 | WindowString
796 | 62 385 781 470 0 0 1440 878
797 | WindowToolGUID
798 | 1C530D57069F1CE1000CFCEE
799 | WindowToolIsVisible
800 | 0
801 |
802 |
803 | Identifier
804 | MENUSEPARATOR
805 |
806 |
807 | Identifier
808 | windowTool.debuggerConsole
809 | Layout
810 |
811 |
812 | Dock
813 |
814 |
815 | BecomeActive
816 | 1
817 | ContentConfiguration
818 |
819 | PBXProjectModuleGUID
820 | 1C78EAAC065D492600B07095
821 | PBXProjectModuleLabel
822 | Debugger Console
823 |
824 | GeometryConfiguration
825 |
826 | Frame
827 | {{0, 0}, {440, 358}}
828 | RubberWindowFrame
829 | 650 41 440 400 0 0 1280 1002
830 |
831 | Module
832 | PBXDebugCLIModule
833 | Proportion
834 | 358pt
835 |
836 |
837 | Proportion
838 | 358pt
839 |
840 |
841 | Name
842 | Debugger Console
843 | ServiceClasses
844 |
845 | PBXDebugCLIModule
846 |
847 | StatusbarIsVisible
848 | 1
849 | TableOfContents
850 |
851 | 1C78EAAD065D492600B07095
852 | 1C78EAAE065D492600B07095
853 | 1C78EAAC065D492600B07095
854 |
855 | WindowString
856 | 650 41 440 400 0 0 1280 1002
857 |
858 |
859 | Identifier
860 | windowTool.run
861 | Layout
862 |
863 |
864 | Dock
865 |
866 |
867 | ContentConfiguration
868 |
869 | LauncherConfigVersion
870 | 3
871 | PBXProjectModuleGUID
872 | 1CD0528B0623707200166675
873 | PBXProjectModuleLabel
874 | Run
875 | Runner
876 |
877 | HorizontalSplitView
878 |
879 | _collapsingFrameDimension
880 | 0.0
881 | _indexOfCollapsedView
882 | 0
883 | _percentageOfCollapsedView
884 | 0.0
885 | isCollapsed
886 | yes
887 | sizes
888 |
889 | {{0, 0}, {493, 167}}
890 | {{0, 176}, {493, 267}}
891 |
892 |
893 | VerticalSplitView
894 |
895 | _collapsingFrameDimension
896 | 0.0
897 | _indexOfCollapsedView
898 | 0
899 | _percentageOfCollapsedView
900 | 0.0
901 | isCollapsed
902 | yes
903 | sizes
904 |
905 | {{0, 0}, {405, 443}}
906 | {{414, 0}, {514, 443}}
907 |
908 |
909 |
910 |
911 | GeometryConfiguration
912 |
913 | Frame
914 | {{0, 0}, {460, 159}}
915 | RubberWindowFrame
916 | 316 696 459 200 0 0 1280 1002
917 |
918 | Module
919 | PBXRunSessionModule
920 | Proportion
921 | 159pt
922 |
923 |
924 | Proportion
925 | 159pt
926 |
927 |
928 | Name
929 | Run Log
930 | ServiceClasses
931 |
932 | PBXRunSessionModule
933 |
934 | StatusbarIsVisible
935 | 1
936 | TableOfContents
937 |
938 | 1C0AD2B3069F1EA900FABCE6
939 | 1C0AD2B4069F1EA900FABCE6
940 | 1CD0528B0623707200166675
941 | 1C0AD2B5069F1EA900FABCE6
942 |
943 | ToolbarConfiguration
944 | xcode.toolbar.config.run
945 | WindowString
946 | 316 696 459 200 0 0 1280 1002
947 | WindowToolGUID
948 | 1C0AD2B3069F1EA900FABCE6
949 | WindowToolIsVisible
950 | 0
951 |
952 |
953 | Identifier
954 | windowTool.scm
955 | Layout
956 |
957 |
958 | Dock
959 |
960 |
961 | ContentConfiguration
962 |
963 | PBXProjectModuleGUID
964 | 1C78EAB2065D492600B07095
965 | PBXProjectModuleLabel
966 | <No Editor>
967 | PBXSplitModuleInNavigatorKey
968 |
969 | Split0
970 |
971 | PBXProjectModuleGUID
972 | 1C78EAB3065D492600B07095
973 |
974 | SplitCount
975 | 1
976 |
977 | StatusBarVisibility
978 | 1
979 |
980 | GeometryConfiguration
981 |
982 | Frame
983 | {{0, 0}, {452, 0}}
984 | RubberWindowFrame
985 | 743 379 452 308 0 0 1280 1002
986 |
987 | Module
988 | PBXNavigatorGroup
989 | Proportion
990 | 0pt
991 |
992 |
993 | BecomeActive
994 | 1
995 | ContentConfiguration
996 |
997 | PBXProjectModuleGUID
998 | 1CD052920623707200166675
999 | PBXProjectModuleLabel
1000 | SCM
1001 |
1002 | GeometryConfiguration
1003 |
1004 | ConsoleFrame
1005 | {{0, 259}, {452, 0}}
1006 | Frame
1007 | {{0, 7}, {452, 259}}
1008 | RubberWindowFrame
1009 | 743 379 452 308 0 0 1280 1002
1010 | TableConfiguration
1011 |
1012 | Status
1013 | 30
1014 | FileName
1015 | 199
1016 | Path
1017 | 197.09500122070312
1018 |
1019 | TableFrame
1020 | {{0, 0}, {452, 250}}
1021 |
1022 | Module
1023 | PBXCVSModule
1024 | Proportion
1025 | 262pt
1026 |
1027 |
1028 | Proportion
1029 | 266pt
1030 |
1031 |
1032 | Name
1033 | SCM
1034 | ServiceClasses
1035 |
1036 | PBXCVSModule
1037 |
1038 | StatusbarIsVisible
1039 | 1
1040 | TableOfContents
1041 |
1042 | 1C78EAB4065D492600B07095
1043 | 1C78EAB5065D492600B07095
1044 | 1C78EAB2065D492600B07095
1045 | 1CD052920623707200166675
1046 |
1047 | ToolbarConfiguration
1048 | xcode.toolbar.config.scm
1049 | WindowString
1050 | 743 379 452 308 0 0 1280 1002
1051 |
1052 |
1053 | Identifier
1054 | windowTool.breakpoints
1055 | IsVertical
1056 |
1057 | Layout
1058 |
1059 |
1060 | Dock
1061 |
1062 |
1063 | BecomeActive
1064 |
1065 | ContentConfiguration
1066 |
1067 | PBXBottomSmartGroupGIDs
1068 |
1069 | 1C77FABC04509CD000000102
1070 |
1071 | PBXProjectModuleGUID
1072 | 1CE0B1FE06471DED0097A5F4
1073 | PBXProjectModuleLabel
1074 | Files
1075 | PBXProjectStructureProvided
1076 | no
1077 | PBXSmartGroupTreeModuleColumnData
1078 |
1079 | PBXSmartGroupTreeModuleColumnWidthsKey
1080 |
1081 | 168
1082 |
1083 | PBXSmartGroupTreeModuleColumnsKey_v4
1084 |
1085 | MainColumn
1086 |
1087 |
1088 | PBXSmartGroupTreeModuleOutlineStateKey_v7
1089 |
1090 | PBXSmartGroupTreeModuleOutlineStateExpansionKey
1091 |
1092 | 1C77FABC04509CD000000102
1093 |
1094 | PBXSmartGroupTreeModuleOutlineStateSelectionKey
1095 |
1096 |
1097 | 0
1098 |
1099 |
1100 | PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
1101 | {{0, 0}, {168, 350}}
1102 |
1103 | PBXTopSmartGroupGIDs
1104 |
1105 | XCIncludePerspectivesSwitch
1106 |
1107 |
1108 | GeometryConfiguration
1109 |
1110 | Frame
1111 | {{0, 0}, {185, 368}}
1112 | GroupTreeTableConfiguration
1113 |
1114 | MainColumn
1115 | 168
1116 |
1117 | RubberWindowFrame
1118 | 315 424 744 409 0 0 1440 878
1119 |
1120 | Module
1121 | PBXSmartGroupTreeModule
1122 | Proportion
1123 | 185pt
1124 |
1125 |
1126 | ContentConfiguration
1127 |
1128 | PBXProjectModuleGUID
1129 | 1CA1AED706398EBD00589147
1130 | PBXProjectModuleLabel
1131 | Detail
1132 |
1133 | GeometryConfiguration
1134 |
1135 | Frame
1136 | {{190, 0}, {554, 368}}
1137 | RubberWindowFrame
1138 | 315 424 744 409 0 0 1440 878
1139 |
1140 | Module
1141 | XCDetailModule
1142 | Proportion
1143 | 554pt
1144 |
1145 |
1146 | Proportion
1147 | 368pt
1148 |
1149 |
1150 | MajorVersion
1151 | 2
1152 | MinorVersion
1153 | 0
1154 | Name
1155 | Breakpoints
1156 | ServiceClasses
1157 |
1158 | PBXSmartGroupTreeModule
1159 | XCDetailModule
1160 |
1161 | StatusbarIsVisible
1162 |
1163 | TableOfContents
1164 |
1165 | 1CDDB66807F98D9800BB5817
1166 | 1CDDB66907F98D9800BB5817
1167 | 1CE0B1FE06471DED0097A5F4
1168 | 1CA1AED706398EBD00589147
1169 |
1170 | ToolbarConfiguration
1171 | xcode.toolbar.config.breakpoints
1172 | WindowString
1173 | 315 424 744 409 0 0 1440 878
1174 | WindowToolGUID
1175 | 1CDDB66807F98D9800BB5817
1176 | WindowToolIsVisible
1177 |
1178 |
1179 |
1180 | Identifier
1181 | windowTool.debugAnimator
1182 | Layout
1183 |
1184 |
1185 | Dock
1186 |
1187 |
1188 | Module
1189 | PBXNavigatorGroup
1190 | Proportion
1191 | 100%
1192 |
1193 |
1194 | Proportion
1195 | 100%
1196 |
1197 |
1198 | Name
1199 | Debug Visualizer
1200 | ServiceClasses
1201 |
1202 | PBXNavigatorGroup
1203 |
1204 | StatusbarIsVisible
1205 |
1206 | ToolbarConfiguration
1207 | xcode.toolbar.config.debugAnimator
1208 | WindowString
1209 | 100 100 700 500 0 0 1280 1002
1210 |
1211 |
1212 | Identifier
1213 | windowTool.bookmarks
1214 | Layout
1215 |
1216 |
1217 | Dock
1218 |
1219 |
1220 | Module
1221 | PBXBookmarksModule
1222 | Proportion
1223 | 100%
1224 |
1225 |
1226 | Proportion
1227 | 100%
1228 |
1229 |
1230 | Name
1231 | Bookmarks
1232 | ServiceClasses
1233 |
1234 | PBXBookmarksModule
1235 |
1236 | StatusbarIsVisible
1237 | 0
1238 | WindowString
1239 | 538 42 401 187 0 0 1280 1002
1240 |
1241 |
1242 | Identifier
1243 | windowTool.classBrowser
1244 | Layout
1245 |
1246 |
1247 | Dock
1248 |
1249 |
1250 | BecomeActive
1251 | 1
1252 | ContentConfiguration
1253 |
1254 | OptionsSetName
1255 | Hierarchy, all classes
1256 | PBXProjectModuleGUID
1257 | 1CA6456E063B45B4001379D8
1258 | PBXProjectModuleLabel
1259 | Class Browser - NSObject
1260 |
1261 | GeometryConfiguration
1262 |
1263 | ClassesFrame
1264 | {{0, 0}, {374, 96}}
1265 | ClassesTreeTableConfiguration
1266 |
1267 | PBXClassNameColumnIdentifier
1268 | 208
1269 | PBXClassBookColumnIdentifier
1270 | 22
1271 |
1272 | Frame
1273 | {{0, 0}, {630, 331}}
1274 | MembersFrame
1275 | {{0, 105}, {374, 395}}
1276 | MembersTreeTableConfiguration
1277 |
1278 | PBXMemberTypeIconColumnIdentifier
1279 | 22
1280 | PBXMemberNameColumnIdentifier
1281 | 216
1282 | PBXMemberTypeColumnIdentifier
1283 | 97
1284 | PBXMemberBookColumnIdentifier
1285 | 22
1286 |
1287 | PBXModuleWindowStatusBarHidden2
1288 | 1
1289 | RubberWindowFrame
1290 | 385 179 630 352 0 0 1440 878
1291 |
1292 | Module
1293 | PBXClassBrowserModule
1294 | Proportion
1295 | 332pt
1296 |
1297 |
1298 | Proportion
1299 | 332pt
1300 |
1301 |
1302 | Name
1303 | Class Browser
1304 | ServiceClasses
1305 |
1306 | PBXClassBrowserModule
1307 |
1308 | StatusbarIsVisible
1309 | 0
1310 | TableOfContents
1311 |
1312 | 1C0AD2AF069F1E9B00FABCE6
1313 | 1C0AD2B0069F1E9B00FABCE6
1314 | 1CA6456E063B45B4001379D8
1315 |
1316 | ToolbarConfiguration
1317 | xcode.toolbar.config.classbrowser
1318 | WindowString
1319 | 385 179 630 352 0 0 1440 878
1320 | WindowToolGUID
1321 | 1C0AD2AF069F1E9B00FABCE6
1322 | WindowToolIsVisible
1323 | 0
1324 |
1325 |
1326 |
1327 |
1328 |
--------------------------------------------------------------------------------
/OnePassword.xcodeproj/alcor.pbxuser:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | 0259C573FE90428111CA0C5A /* Project object */ = {
4 | activeBuildConfigurationName = Release;
5 | activeBuildStyle = 2E58F360FFB2326E11CA0CBA /* Development */;
6 | activeExecutable = 7FFA8ECD0816CDED00A858CD /* Quicksilver */;
7 | activeTarget = 8D1AC9600486D14A00FE50C9 /* «PROJECTNAME» */;
8 | codeSenseManager = 7FFA8ED90816CE0200A858CD /* Code sense */;
9 | executables = (
10 | 7FFA8ECD0816CDED00A858CD /* Quicksilver */,
11 | );
12 | perUserDictionary = {
13 | PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
14 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
15 | PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
16 | PBXFileTableDataSourceColumnWidthsKey = (
17 | 22,
18 | 300,
19 | 130,
20 | );
21 | PBXFileTableDataSourceColumnsKey = (
22 | PBXExecutablesDataSource_ActiveFlagID,
23 | PBXExecutablesDataSource_NameID,
24 | PBXExecutablesDataSource_CommentsID,
25 | );
26 | };
27 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
28 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
29 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
30 | PBXFileTableDataSourceColumnWidthsKey = (
31 | 20,
32 | 243,
33 | 20,
34 | 48,
35 | 43,
36 | 43,
37 | 20,
38 | );
39 | PBXFileTableDataSourceColumnsKey = (
40 | PBXFileDataSource_FiletypeID,
41 | PBXFileDataSource_Filename_ColumnID,
42 | PBXFileDataSource_Built_ColumnID,
43 | PBXFileDataSource_ObjectSize_ColumnID,
44 | PBXFileDataSource_Errors_ColumnID,
45 | PBXFileDataSource_Warnings_ColumnID,
46 | PBXFileDataSource_Target_ColumnID,
47 | );
48 | };
49 | PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
50 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
51 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
52 | PBXFileTableDataSourceColumnWidthsKey = (
53 | 20,
54 | 200,
55 | 63,
56 | 20,
57 | 48,
58 | 43,
59 | 43,
60 | );
61 | PBXFileTableDataSourceColumnsKey = (
62 | PBXFileDataSource_FiletypeID,
63 | PBXFileDataSource_Filename_ColumnID,
64 | PBXTargetDataSource_PrimaryAttribute,
65 | PBXFileDataSource_Built_ColumnID,
66 | PBXFileDataSource_ObjectSize_ColumnID,
67 | PBXFileDataSource_Errors_ColumnID,
68 | PBXFileDataSource_Warnings_ColumnID,
69 | );
70 | };
71 | PBXPerProjectTemplateStateSaveDate = 157514286;
72 | PBXWorkspaceStateSaveDate = 157514286;
73 | };
74 | sourceControlManager = 7FFA8ED80816CE0200A858CD /* Source Control */;
75 | userBuildSettings = {
76 | };
77 | };
78 | 7FFA8ECD0816CDED00A858CD /* Quicksilver */ = {
79 | isa = PBXExecutable;
80 | activeArgIndex = 2147483647;
81 | activeArgIndices = (
82 | );
83 | argumentStrings = (
84 | );
85 | autoAttachOnCrash = 1;
86 | configStateDict = {
87 | };
88 | customDataFormattersEnabled = 1;
89 | debuggerPlugin = GDBDebugging;
90 | disassemblyDisplayState = 0;
91 | dylibVariantSuffix = "";
92 | enableDebugStr = 1;
93 | environmentEntries = (
94 | {
95 | active = YES;
96 | name = NSDebugEnabled;
97 | value = YES;
98 | },
99 | );
100 | executableSystemSymbolLevel = 0;
101 | executableUserSymbolLevel = 0;
102 | launchableReference = 7FFA8ECE0816CDED00A858CD /* Quicksilver.app */;
103 | libgmallocEnabled = 0;
104 | name = Quicksilver;
105 | sourceDirectories = (
106 | );
107 | };
108 | 7FFA8ECE0816CDED00A858CD /* Quicksilver.app */ = {
109 | isa = PBXFileReference;
110 | lastKnownFileType = wrapper.application;
111 | name = Quicksilver.app;
112 | path = /Applications/Quicksilver.app;
113 | sourceTree = "";
114 | };
115 | 7FFA8ED80816CE0200A858CD /* Source Control */ = {
116 | isa = PBXSourceControlManager;
117 | fallbackIsa = XCSourceControlManager;
118 | isSCMEnabled = 0;
119 | scmConfiguration = {
120 | };
121 | scmType = "";
122 | };
123 | 7FFA8ED90816CE0200A858CD /* Code sense */ = {
124 | isa = PBXCodeSenseManager;
125 | indexTemplatePath = "";
126 | };
127 | 8D1AC9600486D14A00FE50C9 /* «PROJECTNAME» */ = {
128 | activeExec = 0;
129 | };
130 | }
131 |
--------------------------------------------------------------------------------
/OnePassword.xcodeproj/patrick.pbxuser:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | 0259C573FE90428111CA0C5A /* Project object */ = {
4 | activeArchitecturePreference = i386;
5 | activeBuildConfigurationName = Release;
6 | activeSDKPreference = macosx10.5;
7 | activeTarget = 8D1AC9600486D14A00FE50C9 /* OnePassword */;
8 | addToTargets = (
9 | 8D1AC9600486D14A00FE50C9 /* OnePassword */,
10 | );
11 | breakpoints = (
12 | CD3ABD4F1379722F0091BB2D /* OnePasswordAction.m:31 */,
13 | CD2426711383E00B005ED0E2 /* OnePasswordAction.m:44 */,
14 | CD3E96DD13C5EF48000BFB0D /* OnePasswordAction.m:93 */,
15 | CD453BA213CAE06B004B5319 /* OnePasswordAction.m:125 */,
16 | );
17 | codeSenseManager = CDB5BB8C110109170001C0D3 /* Code sense */;
18 | perUserDictionary = {
19 | "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = {
20 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
21 | PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID;
22 | PBXFileTableDataSourceColumnWidthsKey = (
23 | 20,
24 | 20,
25 | 198,
26 | 20,
27 | 99,
28 | 99,
29 | 29,
30 | 20,
31 | );
32 | PBXFileTableDataSourceColumnsKey = (
33 | PBXBreakpointsDataSource_ActionID,
34 | PBXBreakpointsDataSource_TypeID,
35 | PBXBreakpointsDataSource_BreakpointID,
36 | PBXBreakpointsDataSource_UseID,
37 | PBXBreakpointsDataSource_LocationID,
38 | PBXBreakpointsDataSource_ConditionID,
39 | PBXBreakpointsDataSource_IgnoreCountID,
40 | PBXBreakpointsDataSource_ContinueID,
41 | );
42 | };
43 | PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = {
44 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
45 | PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID;
46 | PBXFileTableDataSourceColumnWidthsKey = (
47 | 200,
48 | 200,
49 | 588,
50 | );
51 | PBXFileTableDataSourceColumnsKey = (
52 | PBXBookmarksDataSource_LocationID,
53 | PBXBookmarksDataSource_NameID,
54 | PBXBookmarksDataSource_CommentsID,
55 | );
56 | };
57 | PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
58 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
59 | PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
60 | PBXFileTableDataSourceColumnWidthsKey = (
61 | 22,
62 | 300,
63 | 559,
64 | );
65 | PBXFileTableDataSourceColumnsKey = (
66 | PBXExecutablesDataSource_ActiveFlagID,
67 | PBXExecutablesDataSource_NameID,
68 | PBXExecutablesDataSource_CommentsID,
69 | );
70 | };
71 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
72 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
73 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Target_ColumnID;
74 | PBXFileTableDataSourceColumnWidthsKey = (
75 | 20,
76 | 685,
77 | 20,
78 | 48,
79 | 43,
80 | 43,
81 | 20,
82 | );
83 | PBXFileTableDataSourceColumnsKey = (
84 | PBXFileDataSource_FiletypeID,
85 | PBXFileDataSource_Filename_ColumnID,
86 | PBXFileDataSource_Built_ColumnID,
87 | PBXFileDataSource_ObjectSize_ColumnID,
88 | PBXFileDataSource_Errors_ColumnID,
89 | PBXFileDataSource_Warnings_ColumnID,
90 | PBXFileDataSource_Target_ColumnID,
91 | );
92 | };
93 | PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = {
94 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
95 | PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
96 | PBXFileTableDataSourceColumnWidthsKey = (
97 | 200,
98 | 1051,
99 | );
100 | PBXFileTableDataSourceColumnsKey = (
101 | PBXFindDataSource_MessageID,
102 | PBXFindDataSource_LocationID,
103 | );
104 | };
105 | PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = {
106 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
107 | PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID;
108 | PBXFileTableDataSourceColumnWidthsKey = (
109 | 16,
110 | 200,
111 | 50,
112 | 611.20849609375,
113 | );
114 | PBXFileTableDataSourceColumnsKey = (
115 | PBXSymbolsDataSource_SymbolTypeIconID,
116 | PBXSymbolsDataSource_SymbolNameID,
117 | PBXSymbolsDataSource_SymbolTypeID,
118 | PBXSymbolsDataSource_ReferenceNameID,
119 | );
120 | };
121 | PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = {
122 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
123 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
124 | PBXFileTableDataSourceColumnWidthsKey = (
125 | 20,
126 | 20,
127 | 647,
128 | 20,
129 | 48,
130 | 43,
131 | 43,
132 | 20,
133 | );
134 | PBXFileTableDataSourceColumnsKey = (
135 | PBXFileDataSource_SCM_ColumnID,
136 | PBXFileDataSource_FiletypeID,
137 | PBXFileDataSource_Filename_ColumnID,
138 | PBXFileDataSource_Built_ColumnID,
139 | PBXFileDataSource_ObjectSize_ColumnID,
140 | PBXFileDataSource_Errors_ColumnID,
141 | PBXFileDataSource_Warnings_ColumnID,
142 | PBXFileDataSource_Target_ColumnID,
143 | );
144 | };
145 | PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
146 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
147 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
148 | PBXFileTableDataSourceColumnWidthsKey = (
149 | 20,
150 | 645,
151 | 60,
152 | 20,
153 | 48,
154 | 43,
155 | 43,
156 | );
157 | PBXFileTableDataSourceColumnsKey = (
158 | PBXFileDataSource_FiletypeID,
159 | PBXFileDataSource_Filename_ColumnID,
160 | PBXTargetDataSource_PrimaryAttribute,
161 | PBXFileDataSource_Built_ColumnID,
162 | PBXFileDataSource_ObjectSize_ColumnID,
163 | PBXFileDataSource_Errors_ColumnID,
164 | PBXFileDataSource_Warnings_ColumnID,
165 | );
166 | };
167 | PBXPerProjectTemplateStateSaveDate = 339881793;
168 | PBXWorkspaceStateSaveDate = 339881793;
169 | };
170 | perUserProjectItems = {
171 | CD3E901213C5B146000BFB0D = CD3E901213C5B146000BFB0D /* PBXTextBookmark */;
172 | CD95F00711623A6000967D3C = CD95F00711623A6000967D3C /* PBXTextBookmark */;
173 | CD9E5CEB1158DCDF00CCCA80 = CD9E5CEB1158DCDF00CCCA80 /* PlistBookmark */;
174 | CDA8A1AD13F050F400EE351E = CDA8A1AD13F050F400EE351E /* PlistBookmark */;
175 | CDA8A1AE13F050F400EE351E = CDA8A1AE13F050F400EE351E /* PBXTextBookmark */;
176 | CDA8A1AF13F050F400EE351E = CDA8A1AF13F050F400EE351E /* PBXTextBookmark */;
177 | CDA8A1B113F050F400EE351E = CDA8A1B113F050F400EE351E /* PBXTextBookmark */;
178 | CDA8A1B213F050F400EE351E = CDA8A1B213F050F400EE351E /* PBXTextBookmark */;
179 | CDA8A1DB13F0515A00EE351E = CDA8A1DB13F0515A00EE351E /* PBXTextBookmark */;
180 | CDA8A1E613F0553D00EE351E = CDA8A1E613F0553D00EE351E /* PBXTextBookmark */;
181 | CDA8A1F513F055B100EE351E = CDA8A1F513F055B100EE351E /* PBXTextBookmark */;
182 | CDD8746E113166F7009ED78C = CDD8746E113166F7009ED78C /* PBXTextBookmark */;
183 | CDD87470113166F7009ED78C = CDD87470113166F7009ED78C /* PBXTextBookmark */;
184 | CDD8747611316720009ED78C = CDD8747611316720009ED78C /* PBXTextBookmark */;
185 | };
186 | sourceControlManager = CDB5BB8B110109170001C0D3 /* Source Control */;
187 | userBuildSettings = {
188 | };
189 | };
190 | 32DBCF980370C29C00C91783 /* OnePassword_Prefix.pch */ = {
191 | uiCtxt = {
192 | sepNavIntBoundsRect = "{{0, 0}, {863, 273}}";
193 | sepNavSelRange = "{259, 0}";
194 | sepNavVisRange = "{0, 573}";
195 | sepNavWindowFrame = "{{81, 0}, {1199, 778}}";
196 | };
197 | };
198 | 8D1AC9600486D14A00FE50C9 /* OnePassword */ = {
199 | activeExec = 0;
200 | };
201 | 8D1AC9730486D14A00FE50C9 /* Info.plist */ = {
202 | uiCtxt = {
203 | sepNavWindowFrame = "{{346, 59}, {970, 778}}";
204 | };
205 | };
206 | BBF5817A0B1D9D84003CFF55 /* OnePasswordAction.h */ = {
207 | uiCtxt = {
208 | sepNavIntBoundsRect = "{{0, 0}, {1540, 956}}";
209 | sepNavSelRange = "{1570, 0}";
210 | sepNavVisRange = "{0, 1869}";
211 | sepNavWindowFrame = "{{81, 0}, {1599, 1028}}";
212 | };
213 | };
214 | BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */ = {
215 | uiCtxt = {
216 | sepNavIntBoundsRect = "{{0, 0}, {1140, 3042}}";
217 | sepNavSelRange = "{3358, 15}";
218 | sepNavVisRange = "{4660, 1886}";
219 | sepNavWindowFrame = "{{131, 250}, {1199, 778}}";
220 | };
221 | };
222 | BBF581820B1D9DC3003CFF55 /* OnePasswordSource.h */ = {
223 | uiCtxt = {
224 | sepNavIntBoundsRect = "{{0, 0}, {863, 546}}";
225 | sepNavSelRange = "{944, 0}";
226 | sepNavVisRange = "{442, 838}";
227 | sepNavWindowFrame = "{{81, 0}, {1199, 778}}";
228 | };
229 | };
230 | BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */ = {
231 | uiCtxt = {
232 | sepNavIntBoundsRect = "{{0, 0}, {1151, 3445}}";
233 | sepNavSelRange = "{5343, 0}";
234 | sepNavVisRange = "{4683, 2172}";
235 | sepNavWindowFrame = "{{70, 0}, {1210, 778}}";
236 | };
237 | };
238 | CD2426711383E00B005ED0E2 /* OnePasswordAction.m:44 */ = {
239 | isa = PBXFileBreakpoint;
240 | actions = (
241 | );
242 | breakpointStyle = 0;
243 | continueAfterActions = 0;
244 | countType = 0;
245 | delayBeforeContinue = 0;
246 | fileReference = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
247 | functionName = "-validIndirectObjectsForAction:directObject:";
248 | hitCount = 0;
249 | ignoreCount = 0;
250 | lineNumber = 44;
251 | modificationTime = 338830911.6720031;
252 | originalNumberOfMultipleMatches = 1;
253 | state = 0;
254 | };
255 | CD3ABD4F1379722F0091BB2D /* OnePasswordAction.m:31 */ = {
256 | isa = PBXFileBreakpoint;
257 | actions = (
258 | );
259 | breakpointStyle = 0;
260 | continueAfterActions = 0;
261 | countType = 0;
262 | delayBeforeContinue = 0;
263 | fileReference = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
264 | functionName = "-validActionsForDirectObject:indirectObject:";
265 | hitCount = 0;
266 | ignoreCount = 0;
267 | lineNumber = 31;
268 | location = OnePassword;
269 | modificationTime = 338830911.671972;
270 | originalNumberOfMultipleMatches = 1;
271 | state = 2;
272 | };
273 | CD3E8FEF13C5B0E7000BFB0D /* QSObjectSource.h */ = {
274 | isa = PBXFileReference;
275 | lastKnownFileType = sourcecode.c.h;
276 | name = QSObjectSource.h;
277 | path = /Users/patrick/Library/Frameworks/QSCore.framework/Headers/QSObjectSource.h;
278 | sourceTree = "";
279 | };
280 | CD3E901213C5B146000BFB0D /* PBXTextBookmark */ = {
281 | isa = PBXTextBookmark;
282 | fRef = CD3E8FEF13C5B0E7000BFB0D /* QSObjectSource.h */;
283 | name = "QSObjectSource.h: 19";
284 | rLen = 39;
285 | rLoc = 637;
286 | rType = 0;
287 | vrLen = 798;
288 | vrLoc = 0;
289 | };
290 | CD3E96DD13C5EF48000BFB0D /* OnePasswordAction.m:93 */ = {
291 | isa = PBXFileBreakpoint;
292 | actions = (
293 | );
294 | breakpointStyle = 0;
295 | continueAfterActions = 0;
296 | countType = 0;
297 | delayBeforeContinue = 0;
298 | fileReference = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
299 | functionName = "-goAndFill:with:";
300 | hitCount = 0;
301 | ignoreCount = 0;
302 | lineNumber = 93;
303 | modificationTime = 338830911.67203;
304 | originalNumberOfMultipleMatches = 1;
305 | state = 0;
306 | };
307 | CD453BA213CAE06B004B5319 /* OnePasswordAction.m:125 */ = {
308 | isa = PBXFileBreakpoint;
309 | actions = (
310 | );
311 | breakpointStyle = 0;
312 | continueAfterActions = 0;
313 | countType = 0;
314 | delayBeforeContinue = 0;
315 | fileReference = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
316 | functionName = "-viewInOnePwd:";
317 | hitCount = 0;
318 | ignoreCount = 0;
319 | lineNumber = 125;
320 | modificationTime = 338830911.672057;
321 | originalNumberOfMultipleMatches = 1;
322 | state = 0;
323 | };
324 | CD95EF971162392800967D3C /* QSDebug.h */ = {
325 | isa = PBXFileReference;
326 | lastKnownFileType = sourcecode.c.h;
327 | name = QSDebug.h;
328 | path = /Applications/Quicksilver.app/Contents/Frameworks/QSCore.framework/Headers/QSDebug.h;
329 | sourceTree = "";
330 | };
331 | CD95F00711623A6000967D3C /* PBXTextBookmark */ = {
332 | isa = PBXTextBookmark;
333 | fRef = CD95EF971162392800967D3C /* QSDebug.h */;
334 | name = "QSDebug.h: 11";
335 | rLen = 0;
336 | rLoc = 175;
337 | rType = 0;
338 | vrLen = 654;
339 | vrLoc = 0;
340 | };
341 | CD9E5CEB1158DCDF00CCCA80 /* PlistBookmark */ = {
342 | isa = PlistBookmark;
343 | fRef = CD9E5CEC1158DCDF00CCCA80 /* ws.agile.1Password.plist */;
344 | fallbackIsa = PBXBookmark;
345 | isK = 0;
346 | kPath = (
347 | );
348 | name = /Users/patrick/Library/Preferences/ws.agile.1Password.plist;
349 | rLen = 0;
350 | rLoc = 9223372036854775808;
351 | };
352 | CD9E5CEC1158DCDF00CCCA80 /* ws.agile.1Password.plist */ = {
353 | isa = PBXFileReference;
354 | lastKnownFileType = file.bplist;
355 | name = ws.agile.1Password.plist;
356 | path = /Users/patrick/Library/Preferences/ws.agile.1Password.plist;
357 | sourceTree = "";
358 | };
359 | CDA8A1AD13F050F400EE351E /* PlistBookmark */ = {
360 | isa = PlistBookmark;
361 | fRef = 8D1AC9730486D14A00FE50C9 /* Info.plist */;
362 | fallbackIsa = PBXBookmark;
363 | isK = 0;
364 | kPath = (
365 | QSActions,
366 | goAndFill,
367 | actionClass,
368 | );
369 | name = "/Users/patrick/Developer/Apps/OnePassword/1Password-Plugin/Info.plist";
370 | rLen = 0;
371 | rLoc = 9223372036854775808;
372 | };
373 | CDA8A1AE13F050F400EE351E /* PBXTextBookmark */ = {
374 | isa = PBXTextBookmark;
375 | fRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */;
376 | name = "OnePasswordSource.m: 155";
377 | rLen = 0;
378 | rLoc = 5343;
379 | rType = 0;
380 | vrLen = 852;
381 | vrLoc = 4925;
382 | };
383 | CDA8A1AF13F050F400EE351E /* PBXTextBookmark */ = {
384 | isa = PBXTextBookmark;
385 | fRef = BBF581820B1D9DC3003CFF55 /* OnePasswordSource.h */;
386 | name = "OnePasswordSource.h: 24";
387 | rLen = 0;
388 | rLoc = 944;
389 | rType = 0;
390 | vrLen = 838;
391 | vrLoc = 442;
392 | };
393 | CDA8A1B113F050F400EE351E /* PBXTextBookmark */ = {
394 | isa = PBXTextBookmark;
395 | fRef = E1EAB047068128A800774DFF /* OnePassword.h */;
396 | name = "OnePassword.h: 18";
397 | rLen = 0;
398 | rLoc = 655;
399 | rType = 0;
400 | vrLen = 904;
401 | vrLoc = 0;
402 | };
403 | CDA8A1B213F050F400EE351E /* PBXTextBookmark */ = {
404 | isa = PBXTextBookmark;
405 | fRef = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */;
406 | name = "OnePasswordAction.m: 110";
407 | rLen = 0;
408 | rLoc = 3687;
409 | rType = 0;
410 | vrLen = 600;
411 | vrLoc = 2730;
412 | };
413 | CDA8A1DB13F0515A00EE351E /* PBXTextBookmark */ = {
414 | isa = PBXTextBookmark;
415 | fRef = BBF5817A0B1D9D84003CFF55 /* OnePasswordAction.h */;
416 | name = "OnePasswordAction.h: 44";
417 | rLen = 0;
418 | rLoc = 1570;
419 | rType = 0;
420 | vrLen = 907;
421 | vrLoc = 3;
422 | };
423 | CDA8A1E613F0553D00EE351E /* PBXTextBookmark */ = {
424 | isa = PBXTextBookmark;
425 | fRef = E1EAB045068128A200774DFF /* OnePassword.m */;
426 | name = "OnePassword.m: 25";
427 | rLen = 0;
428 | rLoc = 929;
429 | rType = 0;
430 | vrLen = 758;
431 | vrLoc = 207;
432 | };
433 | CDA8A1F513F055B100EE351E /* PBXTextBookmark */ = {
434 | isa = PBXTextBookmark;
435 | fRef = 32DBCF980370C29C00C91783 /* OnePassword_Prefix.pch */;
436 | name = "OnePassword_Prefix.pch: 13";
437 | rLen = 0;
438 | rLoc = 259;
439 | rType = 0;
440 | vrLen = 573;
441 | vrLoc = 0;
442 | };
443 | CDB5BB8B110109170001C0D3 /* Source Control */ = {
444 | isa = PBXSourceControlManager;
445 | fallbackIsa = XCSourceControlManager;
446 | isSCMEnabled = 0;
447 | scmConfiguration = {
448 | repositoryNamesForRoots = {
449 | "" = "";
450 | };
451 | };
452 | };
453 | CDB5BB8C110109170001C0D3 /* Code sense */ = {
454 | isa = PBXCodeSenseManager;
455 | indexTemplatePath = "";
456 | };
457 | CDD8746E113166F7009ED78C /* PBXTextBookmark */ = {
458 | isa = PBXTextBookmark;
459 | fRef = CDD8746F113166F7009ED78C /* NDSDKCompatibility.h */;
460 | name = "NDSDKCompatibility.h: 1";
461 | rLen = 0;
462 | rLoc = 0;
463 | rType = 0;
464 | vrLen = 705;
465 | vrLoc = 0;
466 | };
467 | CDD8746F113166F7009ED78C /* NDSDKCompatibility.h */ = {
468 | isa = PBXFileReference;
469 | lastKnownFileType = sourcecode.c.h;
470 | name = NDSDKCompatibility.h;
471 | path = /Applications/Quicksilver.app/Contents/Frameworks/QSFoundation.framework/Headers/NDSDKCompatibility.h;
472 | sourceTree = "";
473 | };
474 | CDD87470113166F7009ED78C /* PBXTextBookmark */ = {
475 | isa = PBXTextBookmark;
476 | fRef = CDD87471113166F7009ED78C /* NDHotKeyEvent.h */;
477 | name = "NDHotKeyEvent.h: 21";
478 | rLen = 1;
479 | rLoc = 1565;
480 | rType = 0;
481 | vrLen = 2222;
482 | vrLoc = 0;
483 | };
484 | CDD87471113166F7009ED78C /* NDHotKeyEvent.h */ = {
485 | isa = PBXFileReference;
486 | lastKnownFileType = sourcecode.c.h;
487 | name = NDHotKeyEvent.h;
488 | path = /Applications/Quicksilver.app/Contents/Frameworks/QSFoundation.framework/Headers/NDHotKeyEvent.h;
489 | sourceTree = "";
490 | };
491 | CDD87473113166F7009ED78C /* NDProcess.h */ = {
492 | isa = PBXFileReference;
493 | lastKnownFileType = sourcecode.c.h;
494 | name = NDProcess.h;
495 | path = /Applications/Quicksilver.app/Contents/Frameworks/QSFoundation.framework/Headers/NDProcess.h;
496 | sourceTree = "";
497 | };
498 | CDD8747611316720009ED78C /* PBXTextBookmark */ = {
499 | isa = PBXTextBookmark;
500 | fRef = CDD87473113166F7009ED78C /* NDProcess.h */;
501 | name = "NDProcess.h: 5";
502 | rLen = 0;
503 | rLoc = 204;
504 | rType = 0;
505 | vrLen = 1268;
506 | vrLoc = 0;
507 | };
508 | E1EAB045068128A200774DFF /* OnePassword.m */ = {
509 | uiCtxt = {
510 | sepNavIntBoundsRect = "{{0, 0}, {863, 390}}";
511 | sepNavSelRange = "{929, 0}";
512 | sepNavVisRange = "{207, 758}";
513 | sepNavWindowFrame = "{{81, 19}, {1199, 759}}";
514 | };
515 | };
516 | E1EAB047068128A800774DFF /* OnePassword.h */ = {
517 | uiCtxt = {
518 | sepNavIntBoundsRect = "{{0, 0}, {863, 403}}";
519 | sepNavSelRange = "{655, 0}";
520 | sepNavVisRange = "{0, 904}";
521 | sepNavWindowFrame = "{{85, 0}, {1199, 1028}}";
522 | };
523 | };
524 | }
525 |
--------------------------------------------------------------------------------
/OnePassword.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 7F35FF4007F9ACD90056051D /* QSCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F35FF3C07F9ACD90056051D /* QSCore.framework */; };
11 | 7F35FF4207F9ACD90056051D /* QSFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F35FF3E07F9ACD90056051D /* QSFoundation.framework */; };
12 | 8D1AC9700486D14A00FE50C9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD92D38A0106425D02CA0E72 /* Cocoa.framework */; };
13 | BBF5817C0B1D9D84003CFF55 /* OnePasswordAction.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */; };
14 | BBF581840B1D9DC3003CFF55 /* OnePasswordSource.m in Sources */ = {isa = PBXBuildFile; fileRef = BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */; };
15 | CD0117CC13CCBDDF00409D70 /* YAJL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD0117CB13CCBDDF00409D70 /* YAJL.framework */; };
16 | CD0117DA13CCBDEA00409D70 /* YAJL.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = CD0117CB13CCBDDF00409D70 /* YAJL.framework */; };
17 | CD53B37B19DB19F200795282 /* QSInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FFA8E9D0816CCCA00A858CD /* QSInterface.framework */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXCopyFilesBuildPhase section */
21 | CD3E957613C5D2B4000BFB0D /* Copy Frameworks */ = {
22 | isa = PBXCopyFilesBuildPhase;
23 | buildActionMask = 2147483647;
24 | dstPath = "";
25 | dstSubfolderSpec = 10;
26 | files = (
27 | CD0117DA13CCBDEA00409D70 /* YAJL.framework in Copy Frameworks */,
28 | );
29 | name = "Copy Frameworks";
30 | runOnlyForDeploymentPostprocessing = 0;
31 | };
32 | /* End PBXCopyFilesBuildPhase section */
33 |
34 | /* Begin PBXFileReference section */
35 | 32DBCF980370C29C00C91783 /* OnePassword_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OnePassword_Prefix.pch; sourceTree = ""; };
36 | 7F35FF3C07F9ACD90056051D /* QSCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = QSCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
37 | 7F35FF3E07F9ACD90056051D /* QSFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = QSFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
38 | 7FFA8E9C0816CCCA00A858CD /* QSEffects.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = QSEffects.framework; sourceTree = BUILT_PRODUCTS_DIR; };
39 | 7FFA8E9D0816CCCA00A858CD /* QSInterface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = QSInterface.framework; sourceTree = BUILT_PRODUCTS_DIR; };
40 | 8D1AC9730486D14A00FE50C9 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
41 | 8D1AC9740486D14A00FE50C9 /* OnePassword.qsplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OnePassword.qsplugin; sourceTree = BUILT_PRODUCTS_DIR; };
42 | BBF5817A0B1D9D84003CFF55 /* OnePasswordAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OnePasswordAction.h; sourceTree = ""; };
43 | BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OnePasswordAction.m; sourceTree = ""; };
44 | BBF581820B1D9DC3003CFF55 /* OnePasswordSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OnePasswordSource.h; sourceTree = ""; };
45 | BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OnePasswordSource.m; sourceTree = ""; };
46 | CD0117CB13CCBDDF00409D70 /* YAJL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = YAJL.framework; sourceTree = ""; };
47 | CD5013EF14938D1B0022F5E1 /* Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Common.xcconfig; sourceTree = ""; };
48 | CD5013F014938D1B0022F5E1 /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; };
49 | CD5013F114938D1B0022F5E1 /* Developer.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Developer.xcconfig; sourceTree = ""; };
50 | CD5013F214938D1B0022F5E1 /* QSPlugIn.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = QSPlugIn.xcconfig; sourceTree = ""; };
51 | CD5013F514938D1B0022F5E1 /* Quicksilver.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Quicksilver.pch; sourceTree = ""; };
52 | CD5013F614938D1B0022F5E1 /* Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; };
53 | CDF8E28714928A4F005B1E49 /* OnePasswordDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OnePasswordDefines.h; sourceTree = ""; };
54 | DD92D38A0106425D02CA0E72 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; };
55 | /* End PBXFileReference section */
56 |
57 | /* Begin PBXFrameworksBuildPhase section */
58 | 8D1AC96E0486D14A00FE50C9 /* Frameworks */ = {
59 | isa = PBXFrameworksBuildPhase;
60 | buildActionMask = 2147483647;
61 | files = (
62 | 8D1AC9700486D14A00FE50C9 /* Cocoa.framework in Frameworks */,
63 | 7F35FF4007F9ACD90056051D /* QSCore.framework in Frameworks */,
64 | 7F35FF4207F9ACD90056051D /* QSFoundation.framework in Frameworks */,
65 | CD53B37B19DB19F200795282 /* QSInterface.framework in Frameworks */,
66 | CD0117CC13CCBDDF00409D70 /* YAJL.framework in Frameworks */,
67 | );
68 | runOnlyForDeploymentPostprocessing = 0;
69 | };
70 | /* End PBXFrameworksBuildPhase section */
71 |
72 | /* Begin PBXGroup section */
73 | 0259C574FE90428111CA0C5A /* OnePassword */ = {
74 | isa = PBXGroup;
75 | children = (
76 | CD5013EE14938D1B0022F5E1 /* Configuration */,
77 | 32DBCF9E0370C38000C91783 /* Classes */,
78 | 32DBCF9F0370C38200C91783 /* Other Sources */,
79 | 0259C582FE90428111CA0C5A /* Resources */,
80 | 1ED78706FE9D4A0611CA0C5A /* Products */,
81 | 2E58F364FFB232C311CA0CBA /* Frameworks */,
82 | );
83 | name = OnePassword;
84 | sourceTree = "";
85 | };
86 | 0259C582FE90428111CA0C5A /* Resources */ = {
87 | isa = PBXGroup;
88 | children = (
89 | 8D1AC9730486D14A00FE50C9 /* Info.plist */,
90 | );
91 | name = Resources;
92 | sourceTree = "";
93 | };
94 | 1ED78706FE9D4A0611CA0C5A /* Products */ = {
95 | isa = PBXGroup;
96 | children = (
97 | 8D1AC9740486D14A00FE50C9 /* OnePassword.qsplugin */,
98 | );
99 | name = Products;
100 | sourceTree = "";
101 | };
102 | 2E58F364FFB232C311CA0CBA /* Frameworks */ = {
103 | isa = PBXGroup;
104 | children = (
105 | CD0117CB13CCBDDF00409D70 /* YAJL.framework */,
106 | DD92D38A0106425D02CA0E72 /* Cocoa.framework */,
107 | 7F35FF3C07F9ACD90056051D /* QSCore.framework */,
108 | 7F35FF3E07F9ACD90056051D /* QSFoundation.framework */,
109 | 7FFA8E9C0816CCCA00A858CD /* QSEffects.framework */,
110 | 7FFA8E9D0816CCCA00A858CD /* QSInterface.framework */,
111 | );
112 | name = Frameworks;
113 | sourceTree = "";
114 | };
115 | 32DBCF9E0370C38000C91783 /* Classes */ = {
116 | isa = PBXGroup;
117 | children = (
118 | CDF8E28714928A4F005B1E49 /* OnePasswordDefines.h */,
119 | BBF5817A0B1D9D84003CFF55 /* OnePasswordAction.h */,
120 | BBF5817B0B1D9D84003CFF55 /* OnePasswordAction.m */,
121 | BBF581820B1D9DC3003CFF55 /* OnePasswordSource.h */,
122 | BBF581830B1D9DC3003CFF55 /* OnePasswordSource.m */,
123 | );
124 | name = Classes;
125 | sourceTree = "";
126 | };
127 | 32DBCF9F0370C38200C91783 /* Other Sources */ = {
128 | isa = PBXGroup;
129 | children = (
130 | 32DBCF980370C29C00C91783 /* OnePassword_Prefix.pch */,
131 | );
132 | name = "Other Sources";
133 | sourceTree = "";
134 | };
135 | CD5013EE14938D1B0022F5E1 /* Configuration */ = {
136 | isa = PBXGroup;
137 | children = (
138 | CD5013EF14938D1B0022F5E1 /* Common.xcconfig */,
139 | CD5013F014938D1B0022F5E1 /* Debug.xcconfig */,
140 | CD5013F114938D1B0022F5E1 /* Developer.xcconfig */,
141 | CD5013F214938D1B0022F5E1 /* QSPlugIn.xcconfig */,
142 | CD5013F514938D1B0022F5E1 /* Quicksilver.pch */,
143 | CD5013F614938D1B0022F5E1 /* Release.xcconfig */,
144 | );
145 | name = Configuration;
146 | path = /private/tmp/QS/Configuration;
147 | sourceTree = "";
148 | };
149 | /* End PBXGroup section */
150 |
151 | /* Begin PBXNativeTarget section */
152 | 8D1AC9600486D14A00FE50C9 /* OnePassword */ = {
153 | isa = PBXNativeTarget;
154 | buildConfigurationList = 7F6B3EEB085CE8DF000735A8 /* Build configuration list for PBXNativeTarget "OnePassword" */;
155 | buildPhases = (
156 | E1022B2806B3475D00299BEC /* Update Version and Documentation */,
157 | CD3E957613C5D2B4000BFB0D /* Copy Frameworks */,
158 | CD9EB80219DB1BAD0008B37B /* Resources */,
159 | 8D1AC96A0486D14A00FE50C9 /* Sources */,
160 | 8D1AC96E0486D14A00FE50C9 /* Frameworks */,
161 | );
162 | buildRules = (
163 | );
164 | dependencies = (
165 | );
166 | name = OnePassword;
167 | productInstallPath = "$(HOME)/Developer/Palettes";
168 | productName = OnePassword;
169 | productReference = 8D1AC9740486D14A00FE50C9 /* OnePassword.qsplugin */;
170 | productType = "com.apple.product-type.bundle";
171 | };
172 | /* End PBXNativeTarget section */
173 |
174 | /* Begin PBXProject section */
175 | 0259C573FE90428111CA0C5A /* Project object */ = {
176 | isa = PBXProject;
177 | attributes = {
178 | LastUpgradeCheck = 0450;
179 | ORGANIZATIONNAME = "Patrick Robertson";
180 | };
181 | buildConfigurationList = 7F6B3EEF085CE8DF000735A8 /* Build configuration list for PBXProject "OnePassword" */;
182 | compatibilityVersion = "Xcode 3.2";
183 | developmentRegion = English;
184 | hasScannedForEncodings = 1;
185 | knownRegions = (
186 | English,
187 | Japanese,
188 | French,
189 | German,
190 | );
191 | mainGroup = 0259C574FE90428111CA0C5A /* OnePassword */;
192 | projectDirPath = "";
193 | projectRoot = "";
194 | targets = (
195 | 8D1AC9600486D14A00FE50C9 /* OnePassword */,
196 | );
197 | };
198 | /* End PBXProject section */
199 |
200 | /* Begin PBXResourcesBuildPhase section */
201 | CD9EB80219DB1BAD0008B37B /* Resources */ = {
202 | isa = PBXResourcesBuildPhase;
203 | buildActionMask = 2147483647;
204 | files = (
205 | );
206 | runOnlyForDeploymentPostprocessing = 0;
207 | };
208 | /* End PBXResourcesBuildPhase section */
209 |
210 | /* Begin PBXShellScriptBuildPhase section */
211 | E1022B2806B3475D00299BEC /* Update Version and Documentation */ = {
212 | isa = PBXShellScriptBuildPhase;
213 | buildActionMask = 8;
214 | files = (
215 | );
216 | inputPaths = (
217 | );
218 | name = "Update Version and Documentation";
219 | outputPaths = (
220 | );
221 | runOnlyForDeploymentPostprocessing = 1;
222 | shellPath = /bin/sh;
223 | shellScript = "\"$QS_BUILD_ROOT/Tools/bltrversion\"";
224 | };
225 | /* End PBXShellScriptBuildPhase section */
226 |
227 | /* Begin PBXSourcesBuildPhase section */
228 | 8D1AC96A0486D14A00FE50C9 /* Sources */ = {
229 | isa = PBXSourcesBuildPhase;
230 | buildActionMask = 2147483647;
231 | files = (
232 | BBF5817C0B1D9D84003CFF55 /* OnePasswordAction.m in Sources */,
233 | BBF581840B1D9DC3003CFF55 /* OnePasswordSource.m in Sources */,
234 | );
235 | runOnlyForDeploymentPostprocessing = 0;
236 | };
237 | /* End PBXSourcesBuildPhase section */
238 |
239 | /* Begin XCBuildConfiguration section */
240 | 7F6B3EEC085CE8DF000735A8 /* Debug */ = {
241 | isa = XCBuildConfiguration;
242 | baseConfigurationReference = CD5013F214938D1B0022F5E1 /* QSPlugIn.xcconfig */;
243 | buildSettings = {
244 | CLANG_ENABLE_OBJC_ARC = YES;
245 | GCC_PREFIX_HEADER = OnePassword_Prefix.pch;
246 | GCC_PREPROCESSOR_DEFINITIONS = NS_BLOCK_ASSERTIONS;
247 | INFOPLIST_FILE = Info.plist;
248 | OTHER_LDFLAGS = "";
249 | };
250 | name = Debug;
251 | };
252 | 7F6B3EED085CE8DF000735A8 /* Release */ = {
253 | isa = XCBuildConfiguration;
254 | baseConfigurationReference = CD5013F214938D1B0022F5E1 /* QSPlugIn.xcconfig */;
255 | buildSettings = {
256 | CLANG_ENABLE_OBJC_ARC = YES;
257 | GCC_PREFIX_HEADER = OnePassword_Prefix.pch;
258 | GCC_PREPROCESSOR_DEFINITIONS = NS_BLOCK_ASSERTIONS;
259 | INFOPLIST_FILE = Info.plist;
260 | OTHER_LDFLAGS = "-bundle";
261 | };
262 | name = Release;
263 | };
264 | 7F6B3EF0085CE8DF000735A8 /* Debug */ = {
265 | isa = XCBuildConfiguration;
266 | baseConfigurationReference = CD5013F014938D1B0022F5E1 /* Debug.xcconfig */;
267 | buildSettings = {
268 | FRAMEWORK_SEARCH_PATHS = (
269 | $SRCROOT,
270 | /tmp/QS/build/Release,
271 | );
272 | GCC_C_LANGUAGE_STANDARD = c99;
273 | LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
274 | };
275 | name = Debug;
276 | };
277 | 7F6B3EF1085CE8DF000735A8 /* Release */ = {
278 | isa = XCBuildConfiguration;
279 | baseConfigurationReference = CD5013F614938D1B0022F5E1 /* Release.xcconfig */;
280 | buildSettings = {
281 | FRAMEWORK_SEARCH_PATHS = (
282 | $SRCROOT,
283 | /tmp/QS/build/Release,
284 | );
285 | GCC_C_LANGUAGE_STANDARD = c99;
286 | LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
287 | };
288 | name = Release;
289 | };
290 | /* End XCBuildConfiguration section */
291 |
292 | /* Begin XCConfigurationList section */
293 | 7F6B3EEB085CE8DF000735A8 /* Build configuration list for PBXNativeTarget "OnePassword" */ = {
294 | isa = XCConfigurationList;
295 | buildConfigurations = (
296 | 7F6B3EEC085CE8DF000735A8 /* Debug */,
297 | 7F6B3EED085CE8DF000735A8 /* Release */,
298 | );
299 | defaultConfigurationIsVisible = 0;
300 | defaultConfigurationName = Release;
301 | };
302 | 7F6B3EEF085CE8DF000735A8 /* Build configuration list for PBXProject "OnePassword" */ = {
303 | isa = XCConfigurationList;
304 | buildConfigurations = (
305 | 7F6B3EF0085CE8DF000735A8 /* Debug */,
306 | 7F6B3EF1085CE8DF000735A8 /* Release */,
307 | );
308 | defaultConfigurationIsVisible = 0;
309 | defaultConfigurationName = Release;
310 | };
311 | /* End XCConfigurationList section */
312 | };
313 | rootObject = 0259C573FE90428111CA0C5A /* Project object */;
314 | }
315 |
--------------------------------------------------------------------------------
/OnePassword.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/OnePassword.xcodeproj/project.xcworkspace/xcuserdata/patrick.xcuserdatad/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildLocationStyle
6 | UseTargetSettings
7 | CustomBuildLocationType
8 | RelativeToDerivedData
9 | DerivedDataLocationStyle
10 | Default
11 | HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges
12 |
13 | IDEWorkspaceUserSettings_HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges
14 |
15 | IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges
16 |
17 | IssueFilterStyle
18 | ShowActiveSchemeOnly
19 | LiveSourceIssuesEnabled
20 |
21 | SnapshotAutomaticallyBeforeSignificantChanges
22 |
23 | SnapshotLocationStyle
24 | Default
25 |
26 |
27 |
--------------------------------------------------------------------------------
/OnePasswordAction.h:
--------------------------------------------------------------------------------
1 | //
2 | // OnePasswordAction.h
3 | // OnePassword
4 | //
5 | // Created by Patrick Robertson on 15/01/2010.
6 | // Copyright Patrick Roberston 2010. All rights reserved.
7 | //
8 | // This file is part of Quicksilver 1Password Module.
9 | //
10 | // Quicksilver 1Password Module is free software: you can redistribute it and/or modify
11 | // it under the terms of the GNU General Public License as published by
12 | // the Free Software Foundation, either version 3 of the License, or
13 | // (at your option) any later version.
14 | //
15 | // Quicksilver 1Password Module is distributed in the hope that it will be useful,
16 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | // GNU General Public License for more details.
19 | //
20 | // You should have received a copy of the GNU General Public License
21 | // along with Quicksilver 1Password Module. If not, see .
22 | //
23 |
24 | #import "OnePasswordAction.h"
25 |
26 | @interface OnePasswordAction : QSActionProvider
27 | {
28 | NSString *bundleID;
29 | }
30 | @end
31 |
32 |
--------------------------------------------------------------------------------
/OnePasswordAction.m:
--------------------------------------------------------------------------------
1 | //
2 | // OnePasswordAction.m
3 | // OnePassword
4 | //
5 | // Created by Patrick Robertson on 15/01/2010.
6 | // Copyright Patrick Roberston 2010. All rights reserved.
7 | //
8 | // This file is part of Quicksilver 1Password Module.
9 | //
10 | // Quicksilver 1Password Module is free software: you can redistribute it and/or modify
11 | // it under the terms of the GNU General Public License as published by
12 | // the Free Software Foundation, either version 3 of the License, or
13 | // (at your option) any later version.
14 | //
15 | // Quicksilver 1Password Module is distributed in the hope that it will be useful,
16 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | // GNU General Public License for more details.
19 | //
20 | // You should have received a copy of the GNU General Public License
21 | // along with Quicksilver 1Password Module. If not, see .
22 | //
23 |
24 |
25 | #import "OnePasswordAction.h"
26 | #import "OnePasswordSource.h"
27 | #import "OnePasswordDefines.h"
28 | #import
29 |
30 | NSString *sha256Hash(NSString* input) {
31 | const char* original = [input UTF8String];
32 | unsigned char result[CC_SHA256_DIGEST_LENGTH];
33 | CC_SHA256(original, (unsigned int)strlen(original), result);
34 | NSMutableString *sha256hash = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH*2];
35 | for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {
36 | [sha256hash appendFormat:@"%02x", result[i]];
37 | }
38 | return sha256hash;
39 | }
40 |
41 | NSURL *openAndFillURL(NSString *targetURL, QSObject *onePasswordItem) {
42 | // onepassword7://open_and_fill/profileUUID/UUID/sha256_of_url
43 | NSString *onePasswordURLFormat = @"onepassword7://open_and_fill/%@/%@/%@";
44 | NSString *vault = [onePasswordItem objectForMeta:kOnePasswordVaultIdentifier];
45 | NSString *uuid = [onePasswordItem objectForType:QS1PasswordItemType];
46 | NSString *stringURL = [NSString stringWithFormat:onePasswordURLFormat, vault, uuid, sha256Hash(targetURL)];
47 | return [[NSURL alloc] initWithString:stringURL];
48 | }
49 |
50 | @implementation OnePasswordAction
51 |
52 | - (QSObject *)openAndFill:(QSObject *)dObject
53 | {
54 | // see https://support.1password.com/integration-mac/#open-a-url
55 | QSObject *onePasswordItem = [dObject parent];
56 | NSString *targetURL = [dObject objectForType:QSURLType];
57 | if (onePasswordItem && targetURL) {
58 | NSURL *computedURL = openAndFillURL(targetURL, onePasswordItem);
59 | [[NSWorkspace sharedWorkspace] openURL:computedURL];
60 | }
61 | return nil;
62 | }
63 | @end
64 |
--------------------------------------------------------------------------------
/OnePasswordDefines.h:
--------------------------------------------------------------------------------
1 | // Keychain location defines
2 | #define kOldKeychainLocation @"~/Library/Application Support/1Password/1Password.agilekeychain"
3 | #define kNewMASKeychainLocation @"~/Library/Containers/com.agilebits.onepassword-osx-helper/Data/Documents/1Password.agilekeychain"
4 | #define kDropboxLocation @"~/Dropbox/1Password/1Password.agilekeychain"
5 | #define kOldDropboxLocation @"~/Dropbox/1Password.agilekeychain"
6 |
7 | #define kKeychainPathArray [NSArray arrayWithObjects:kOldKeychainLocation,kNewMASKeychainLocation,kDropboxLocation,kOldDropboxLocation,nil]
8 |
9 | // QSObject type defines
10 | #define QS1PasswordItemType @"QS1PasswordItemType"
11 | #define QS1PasswordURLType @"QS1PasswordURLType" // URLs found in Logins
12 | #define kOnePasswordAction @"OnePasswordAction"
13 | #define kOnePasswordItemDetails @"details-1password"
14 | #define kOnePasswordItemURLs @"kOnePasswordItemURLs"
15 | #define kOnePasswordItemCategory @"categoryUUID"
16 | // see https://support.1password.com/integration-mac/#appendix-categories
17 | #define kOnePasswordCategoryLogin @"001"
18 | #define kOnePasswordVaultIdentifier @"vault-1password"
19 |
20 | // Some things from Carbon
21 | #define kASAppleScriptSuite 'ascr'
22 | #define kASSubroutineEvent 'psbr'
23 | #define keyASSubroutineName 'snam'
24 |
25 | // JSON defines
26 | #define kItemType @"type"
27 |
28 | // OnePassword Bundle IDs
29 | #define kNonMASBundleID @"com.agilebits.onepassword4"
30 | #define kMASBundleID @"com.agilebits.onepassword-osx"
31 | #define kVersion7BundleID @"com.agilebits.onepassword7"
32 | #define kOnePasswordBundleIDs @[kVersion7BundleID, kMASBundleID, @"ws.agile.1Password", kNonMASBundleID]
33 | #define kOnePasswordPrefs @[kNonMASBundleID, [[@"~/Library/Containers/com.agilebits.onepassword-osx/Data/Library/Preferences/" stringByStandardizingPath] stringByAppendingPathComponent:kMASBundleID]]
34 |
35 | // Key for storing the keychain path in the prefs
36 | #define k1PPath @"QS1PasswordKeychainPath"
37 |
38 | #define kQS1PasswordIcon @"QS1PasswordIcon"
39 |
40 | #define kMAS1Password3rdPartyFile @"~/Library/Containers/2BUA8C4S2C.com.agilebits.onepassword-osx-helper/Data/Library/3rd Party Integration/bookmarks-default.json"
41 | #define kNonMAS1Password3rdPartyFile @"~/Library/Application Support/1Password 4/3rd Party Integration/bookmarks-default.json"
42 | #define k1Password3rdPartyItemsPath @"~/Library/Containers/com.agilebits.onepassword7/Data/Library/Caches/Metadata/1Password"
43 |
--------------------------------------------------------------------------------
/OnePasswordSource.h:
--------------------------------------------------------------------------------
1 | //
2 | // OnePasswordSource.h
3 | // OnePassword
4 | //
5 | // Created by Patrick Robertson on 15/01/2010.
6 | // Copyright Patrick Roberston 2010. All rights reserved.
7 | //
8 | // This file is part of Quicksilver 1Password Module.
9 | //
10 | // Quicksilver 1Password Module is free software: you can redistribute it and/or modify
11 | // it under the terms of the GNU General Public License as published by
12 | // the Free Software Foundation, either version 3 of the License, or
13 | // (at your option) any later version.
14 | //
15 | // Quicksilver 1Password Module is distributed in the hope that it will be useful,
16 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | // GNU General Public License for more details.
19 | //
20 | // You should have received a copy of the GNU General Public License
21 | // along with Quicksilver 1Password Module. If not, see .
22 | //
23 |
24 |
25 | @interface OnePasswordSource : QSObjectSource
26 |
27 | @property (retain) NSString *bundleID;
28 | + (id)sharedInstance;
29 |
30 | @end
31 |
32 |
--------------------------------------------------------------------------------
/OnePasswordSource.m:
--------------------------------------------------------------------------------
1 |
2 | //
3 | // OnePasswordSource.m
4 | // OnePassword
5 | //
6 | // Created by Patrick Robertson on 15/01/2010.
7 | // Copyright Patrick Roberston 2010. All rights reserved.
8 | //
9 | // This file is part of Quicksilver 1Password Module.
10 | //
11 | // Quicksilver 1Password Module is free software: you can redistribute it and/or modify
12 | // it under the terms of the GNU General Public License as published by
13 | // the Free Software Foundation, either version 3 of the License, or
14 | // (at your option) any later version.
15 | //
16 | // Quicksilver 1Password Module is distributed in the hope that it will be useful,
17 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 | // GNU General Public License for more details.
20 | //
21 | // You should have received a copy of the GNU General Public License
22 | // along with Quicksilver 1Password Module. If not, see .
23 | //
24 |
25 | // See https://support.1password.com/integration-mac/
26 |
27 | #import "OnePasswordSource.h"
28 | #import "OnePasswordDefines.h"
29 | #import
30 |
31 | QSObject *onePasswordURLObject(NSString *itemURL, QSObject *parentObject) {
32 | NSString *ident = [NSString stringWithFormat:@"1PasswordURL:%@", itemURL];
33 | NSString *name = [NSString stringWithFormat:@"Website for %@", [parentObject displayName]];
34 | QSObject *newObject = [QSObject makeObjectWithIdentifier:ident];
35 | [newObject setName:name];
36 | [newObject setDetails:itemURL];
37 | [newObject setObject:itemURL forType:QSURLType];
38 | [newObject setObject:itemURL forType:QS1PasswordURLType];
39 | [newObject setPrimaryType:QS1PasswordURLType];
40 | [newObject setParentID:[parentObject identifier]];
41 | return newObject;
42 | }
43 |
44 | @implementation OnePasswordSource
45 |
46 | - (void)dealloc
47 | {
48 | self.bundleID = nil;
49 | }
50 |
51 | static id _sharedInstance;
52 |
53 | + (id)sharedInstance {
54 | if (!_sharedInstance) _sharedInstance = [[[self class] alloc] init];
55 | return _sharedInstance;
56 | }
57 |
58 | -(id)init {
59 | if (self = [super init]) {
60 | self.bundleID = kVersion7BundleID;
61 | // QSDefaults probably won't be read until after this, so maybe pointless
62 | NSString *location = [k1Password3rdPartyItemsPath stringByStandardizingPath];
63 | NSFileManager *fm = [[NSFileManager alloc] init];
64 | // valid location exists
65 | BOOL valid = location && [fm fileExistsAtPath:location];
66 | if (!valid) {
67 | NSImage *icon = [QSResourceManager imageNamed:kQS1PasswordIcon];
68 | QSShowNotifierWithAttributes(@{
69 | QSNotifierType: @"OnePasswordNotifType",
70 | QSNotifierIcon: icon ? icon : [QSResourceManager imageNamed:@"com.blacktree.Quicksilver"],
71 | QSNotifierTitle : @"Unable to locate 1Password items",
72 | QSNotifierText : @"Please enable 3rd Party integration in 1Password to use the 1Password Plugin"
73 | });
74 | }
75 | }
76 | return self;
77 | }
78 |
79 | - (NSString *)keychainPath {
80 | return [k1Password3rdPartyItemsPath stringByStandardizingPath];
81 | }
82 |
83 | - (BOOL)indexIsValidFromDate:(NSDate *)indexDate forEntry:(NSDictionary *)theEntry{
84 |
85 | // Check to see if keychain has been modified since last scan
86 |
87 | NSError *error = nil;
88 | NSFileManager *fm = [[NSFileManager alloc] init];
89 | NSDate *modDate=[[fm attributesOfItemAtPath:[self keychainPath] error:&error] fileModificationDate];
90 |
91 | if (error) {
92 | NSLog(@"Error: %@", error);
93 | return NO;
94 | }
95 |
96 | // return the difference between the keychain mod date and the last index time
97 | return ([modDate compare:indexDate]==NSOrderedAscending);
98 | }
99 |
100 | - (NSString *)detailsOfObject:(QSObject *)object
101 | {
102 | if ([[object primaryType] isEqualToString:QS1PasswordItemType]) {
103 | return [object objectForMeta:kOnePasswordItemDetails];
104 | }
105 | return nil;
106 | }
107 |
108 | - (BOOL)objectHasChildren:(QSObject *)object
109 | {
110 | if ([[object primaryType] isEqualToString:QS1PasswordItemType]) {
111 | if ([[object objectForMeta:kOnePasswordItemURLs] count]) {
112 | return YES;
113 | }
114 | }
115 | return NO;
116 | }
117 |
118 | - (BOOL)loadChildrenForObject:(QSObject *)object
119 | {
120 | if ([[object primaryType] isEqualToString:QS1PasswordItemType]) {
121 | NSArray *URLs = [object objectForMeta:kOnePasswordItemURLs];
122 | NSMutableArray *urlObjects = [NSMutableArray arrayWithCapacity:[URLs count]];
123 | QSObject *newObject;
124 | NSString *name;
125 | NSInteger URLCount = 1;
126 | for (NSString *itemURL in URLs) {
127 | newObject = onePasswordURLObject(itemURL, object);
128 | if (URLCount > 1) {
129 | name = [NSString stringWithFormat:@"Website %lu for %@", (long)URLCount, [object displayName]];
130 | [newObject setName:name];
131 | }
132 | [urlObjects addObject:newObject];
133 | URLCount += 1;
134 | }
135 | [object setChildren:urlObjects];
136 | } else {
137 | // For the children to 1Pwd, just load items from the catalog
138 | NSMutableArray *children = [[QSLib scoredArrayForType:QS1PasswordItemType] mutableCopy];
139 | [object setChildren:children];
140 | }
141 | return YES;
142 | }
143 |
144 | - (NSArray *)objectsForEntry:(QSCatalogEntry *)theEntry
145 | {
146 | NSDictionary *settings = [theEntry sourceSettings];
147 | NSString *scanCategory = [settings objectForKey:kOnePasswordItemCategory];
148 | // Define the objects (Empty to start with) we're going to send back to QS
149 | NSMutableArray *objects = [NSMutableArray array];
150 | QSObject *newObject;
151 | NSString *location = [self keychainPath];
152 | NSSet *searchLocations = [NSSet setWithObject:location];
153 | NSMetadataQuery *passwordSearch = [[NSMetadataQuery alloc] init];
154 | NSArray *OPItems = [passwordSearch resultsForSearchString:@"kMDItemContentType == 'com.agilebits.itemmetadata'" inFolders:searchLocations];
155 | for (NSMetadataItem *item in OPItems) {
156 | NSDictionary *metadata = [item valuesForAttributes:@[(NSString *)kMDItemPath]];
157 | NSString *itemPath = metadata[(NSString *)kMDItemPath];
158 | NSData *JSONData = [NSData dataWithContentsOfFile:itemPath];
159 | NSDictionary *OPItem = [JSONData yajl_JSON];
160 | NSString *category = OPItem[kOnePasswordItemCategory];
161 | if (![category isEqualToString:scanCategory]) {
162 | continue;
163 | }
164 | NSString *uuid = OPItem[@"uuid"];
165 | NSString *title = OPItem[@"itemTitle"];
166 | NSArray *urls = OPItem[@"websiteURLs"];
167 | NSString *details = OPItem[@"itemDescription"];
168 | NSString *vault = OPItem[@"profileUUID"];
169 | newObject = [QSObject makeObjectWithIdentifier:[NSString stringWithFormat:@"1PasswordItem:%@", uuid]];
170 | [newObject setName:title];
171 | [newObject setObject:itemPath forType:QSFilePathType];
172 | [newObject setObject:category forMeta:kOnePasswordItemCategory];
173 | [newObject setObject:details forMeta:kOnePasswordItemDetails];
174 | [newObject setObject:vault forMeta:kOnePasswordVaultIdentifier];
175 | if (urls) {
176 | NSString *firstURL = urls[0];
177 | [newObject setObject:firstURL forType:QSURLType];
178 | [newObject setObject:urls forMeta:kOnePasswordItemURLs];
179 | }
180 | [newObject setObject:uuid forType:QS1PasswordItemType];
181 | [newObject setPrimaryType:QS1PasswordItemType];
182 | [newObject setIcon:[QSResourceManager imageNamed:self.bundleID]];
183 | [objects addObject:newObject];
184 | }
185 | return objects;
186 | }
187 |
188 | // Object Handler Methods
189 | // An icon that is either already in memory or easy to load
190 | - (void)setQuickIconForObject:(QSObject *)object{
191 | if ([[object primaryType] isEqualToString:QS1PasswordItemType])
192 | {
193 | [object setIcon:[QSResourceManager imageNamed:self.bundleID]];
194 | }
195 | }
196 | @end
197 |
--------------------------------------------------------------------------------
/OnePassword_Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'OnePassword' target in the 'OnePassword' project
3 | //
4 |
5 | #ifdef __OBJC__
6 | #import
7 | #import
8 | #import
9 | #endif
10 |
11 |
12 | #define kOnePasswordType @"OnePasswordType"
13 |
14 | #ifdef DEVEL
15 | # define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
16 | #else
17 | # define DLog(...)
18 | #endif
19 |
20 | // ALog always displays output regardless of the DEBUG setting
21 | #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
--------------------------------------------------------------------------------
/README.markdown:
--------------------------------------------------------------------------------
1 | # 1Password 3 Plugin
2 |
3 | ## What does it do?
4 |
5 | This plugin enables you to right arrow into the 1Password application, giving you a list of all your data saved in 1Password.
6 |
7 | Requirements: **Mac OS X Leopard or higher (10.5+)**, **1Password 3+** and **Quicksilver ß60+**.
8 |
9 | You can download the latest version from the [Plugins preference pane in Quicksilver](http://qs.qsapp.com/plugins)
10 |
11 | ### Actions
12 |
13 | The plugin enables 2 actions for 1Password objects.
14 |
15 | The 'Go & Fill' action will work just like the Go & Fill command from within 1Password; it will launch your default browser and automatically log you in.
16 |
17 | The 'Go & Fill With...' action enabled you to open logins in your non-default browser(s).
18 |
19 | Both the 'Go & Fill' and 'Go & Fill With...' actions work with the comma trick, so you can open multiple logins at once, or open logins in multiple browsers.
20 |
21 | 
22 |
23 | --------
24 |
25 | Previously, the plugin also added the following action to Quicksilver, but it no longer works with recent versions of 1Password.
26 |
27 | The final action, which works on all 1Password objects is 'Reveal in 1Password'. This action will launch 1Password and bring the selected login item to the front for you to view/edit it.
28 |
29 | 
30 |
31 |
32 | ### Adding to the Catalog
33 |
34 | To save you from having to search for 1Password in the first pane then right arrowing into it, you can **tick** any of the 1Password data types (logins, identities, secure notes etc.) in the Quicksilver Catalog Preferences Pane (under Modules). This will mean that the 1Password types enabled will be searchable directly from the first pane in Quicksilver. This feature is disabled by default.
35 |
36 | 
37 |
38 | -----------
39 |
40 | ## Getting Started
41 |
42 | First, make sure you're using the **Agile Keychain** or **opvault** keychain. You will also need to go into the 1Password settings and click 'Advanced' then 'Enable 3rd party app integrations'.
43 |
44 | You may need to rescan manually to start with to get your logins to show up.
45 | If the plugin doesn't seem to work, try re-downloading and installing it. Quicksilver will pop up a message saying 'Install Complete'.
46 | Click 'Relaunch' and it should hopefully fix any of your problems.
47 |
48 | 
49 |
50 | ## Thanks
51 |
52 | Thanks goes to Rob McBroom for his excellent work on writing documentation detailing [QS Plugin Development]((http://github.com/tiennou/blacktree-elements/blob/master/PluginDevelopmentReference/QuicksilverPlug-inReference.mdown)http://projects.skurfer.com/QuicksilverPlug-inReference.mdown).
53 | Thanks also to Jamie of the 1Password development team for his [excellent advice](http://support.agilewebsolutions.com/showthread.php?21959-Developing-a-Quicksilver-Plugin-for-1Password) and insights into how 1Password works.
54 |
55 | ## Changelog
56 |
57 | ### 2.0.0
58 | **Plugin overhaul and tidy up**
59 |
60 | * Now Quicksilver versions ß60+ only
61 | * Fixed object identifiers. Can now set abbreviations and increase/decrease score for 1Password objects
62 | * Added new 'Go and Fill With...' action to allow you to log in with different browsers
63 | * Many memory leak fixes
64 | * More robust error logging
65 | * Fixed a fatal crash that could be caused with multiple 1Password entries with the same name
66 | * Changed to YAJL for JSON parsing. Maintains 10.5 support and faster than SBJSON
67 | * Code optimisations and reduction of duplicate code
68 | * More efficient storing of data in QSObjects
69 | * Source code tidy up and fixed references in .xcodeproj
70 | * Other small bug fixes
71 |
72 | ### 1.2
73 | **Interface clean up. Things look much better :)**
74 |
75 | * Cleaned up the interface. The plugin now displays the names of Web Forms, and it's these names that are searchable. This greatly cleans the UI.
76 | * Fixed a bug that would cause Quicksilver to hang (re-cataloguing everything) when trying to right arrow into a 1Password Object in Quicksilver.
77 |
78 | ### 1.0
79 | **Reached the 1.0 milestone!**
80 |
81 | * Fixed a bug that had cropped into the 0.9 release stopping some users from indexing their 1Password entries
82 |
83 | ### 0.9
84 | **This is quite a major update to the 1Password Plugin!**
85 |
86 | * Added alternate action to go and fill - hold CMD to 'reveal in 1Pwd'
87 | * Action 'Open in 1Password' renamed to 'Reveal in 1Password' - more Mac like
88 | * Added scanning of identities, accounts, software and secure notes
89 | * Added separate entries in the catalog preference pane to chose which sources to scan
90 | * Better crash resilience - won't crash if there's a problem finding the keychain or indexing the catalog
91 | * Fixed a (fairly) bug for users when their keychain was in the default ~/Library/Application Support/1Password folder
92 | * Added nice new icons for each type of 1Password data
93 |
94 | ### 0.8
95 | * Fixed bug when 'Opening in 1Password' after having searched using the 1Password search field
96 |
97 | ### 0.7
98 | * Changed the precedence of the Actions
99 |
100 | ### 0.6
101 | * Fixed another applescript problem by using Apple's NSApplescript approach as opposed to Alcor's
102 | * *Hopefully* fixed most people's bugs
103 |
104 | ### 0.5
105 | * Fixed problem where keychain location wasn't being picked up properly for some due to the '~' (tilde) in the file name
106 |
107 | ### 0.4
108 | * Updated to JSON framework 2.2.3 (Released: 07/03/10)
109 | * Set project to build JSON framework from scratch to avoid linking problems
110 |
111 | ### 0.3
112 | * Fixed: 'Open in 1Password' action for some (make sure using latest QS β58+)
113 |
114 | ### 0.2
115 | * Added 'Open in 1Password' action
116 |
117 | ### 0.1
118 | * Initial Release
119 |
--------------------------------------------------------------------------------
/YAJL.framework/Headers:
--------------------------------------------------------------------------------
1 | Versions/Current/Headers
--------------------------------------------------------------------------------
/YAJL.framework/Resources:
--------------------------------------------------------------------------------
1 | Versions/Current/Resources
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/NSBundle+YAJL.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSBundle+YAJL.h
3 | // YAJL
4 | //
5 | // Created by Gabriel Handford on 7/23/09.
6 | // Copyright 2009. All rights reserved.
7 | //
8 | // Permission is hereby granted, free of charge, to any person
9 | // obtaining a copy of this software and associated documentation
10 | // files (the "Software"), to deal in the Software without
11 | // restriction, including without limitation the rights to use,
12 | // copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | // copies of the Software, and to permit persons to whom the
14 | // Software is furnished to do so, subject to the following
15 | // conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be
18 | // included in all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 | // OTHER DEALINGS IN THE SOFTWARE.
28 | //
29 |
30 | #import "YAJLParser.h"
31 |
32 | /*!
33 | Utilities for loading JSON from resource bundles.
34 |
35 | @code
36 | id JSONValue = [[NSBundle mainBundle] yajl_JSONFromResource:@"kegs.json"];
37 | @endcode
38 | */
39 | @interface NSBundle(YAJL)
40 |
41 | /*!
42 | Load JSON from bundle.
43 | @param resource Resource name with extension, for example, file.json
44 | @throws YAJLParserException On parse error
45 | */
46 | - (id)yajl_JSONFromResource:(NSString *)resource;
47 |
48 | /*!
49 | Load JSON from bundle.
50 | @param resource Resource name with extension, for example, file.json
51 | @param options Parser options
52 | - YAJLParserOptionsNone: No options
53 | - YAJLParserOptionsAllowComments: Javascript style comments will be allowed in the input (both /&asterisk; &asterisk;/ and //)
54 | - YAJLParserOptionsCheckUTF8: Invalid UTF8 strings will cause a parse error
55 | - YAJLParserOptionsStrictPrecision: If YES will force strict precision and return integer overflow error
56 |
57 | @param error Out error
58 | @result JSON value (NSArray, NSDictionary) or nil if errored
59 | */
60 | - (id)yajl_JSONFromResource:(NSString *)resource options:(YAJLParserOptions)options error:(NSError **)error;
61 |
62 | @end
63 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/NSObject+YAJL.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+YAJL.h
3 | // YAJL
4 | //
5 | // Created by Gabriel Handford on 7/23/09.
6 | // Copyright 2009. All rights reserved.
7 | //
8 | // Permission is hereby granted, free of charge, to any person
9 | // obtaining a copy of this software and associated documentation
10 | // files (the "Software"), to deal in the Software without
11 | // restriction, including without limitation the rights to use,
12 | // copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | // copies of the Software, and to permit persons to whom the
14 | // Software is furnished to do so, subject to the following
15 | // conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be
18 | // included in all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 | // OTHER DEALINGS IN THE SOFTWARE.
28 | //
29 |
30 | #import "YAJLGen.h"
31 | #import "YAJLParser.h"
32 |
33 | /*!
34 | Generate JSON string from NSArray, NSDictionary or custom object or parse JSON from NSString or custom object.
35 |
36 | Parse JSON:
37 | @code
38 | NSData *JSONData = [NSData dataWithContentsOfFile:@"example.json"];
39 | NSArray *arrayFromData = [JSONData yajl_JSON];
40 |
41 | NSString *JSONString = @"[\"Test\"]";
42 | NSArray *arrayFromString = [JSONString yajl_JSON];
43 |
44 | // With options and out error
45 | NSError *error = nil;
46 | NSArray *arrayFromString = [JSONString yajl_JSONWithOptions:YAJLParserOptionsAllowComments error:&error];
47 | @endcode
48 |
49 | Generate JSON:
50 | @code
51 | NSDictionary *dict = [NSDictionary dictionaryWithObject:@"value" forKey:@"key"];
52 | NSString *JSONString = [dict yajl_JSONString];
53 |
54 | // Beautified with custon indent string
55 | NSArray *array = [NSArray arrayWithObjects:@"value1", @"value2", nil];
56 | NSString *JSONString = [dict yajl_JSONStringWithOptions:YAJLGenOptionsBeautify indentString:@" "];
57 | @endcode
58 | */
59 | @interface NSObject(YAJL)
60 |
61 | #pragma mark Gen
62 |
63 | /*!
64 | Create JSON string from object.
65 | Supported objects include: NSArray, NSDictionary, NSNumber, NSString, NSNull
66 | To override JSON value to encode (or support custom objects), implement (id)JSON; See YAJLCoding in YAJLGen.h
67 | @throws YAJLGenInvalidObjectException If object is invalid
68 | @result JSON String
69 | */
70 | - (NSString *)yajl_JSONString;
71 |
72 | /*!
73 | Create JSON string from object.
74 | Supported objects include: NSArray, NSDictionary, NSNumber, NSString, NSNull
75 | To override JSON value to encode (or support custom objects), implement (id)JSON; See YAJLCoding in YAJLGen.h
76 | @throws YAJLGenInvalidObjectException If object is invalid
77 | @param options
78 | - YAJLGenOptionsNone: No options
79 | - YAJLGenOptionsBeautify: Beautifiy JSON output
80 | - YAJLGenOptionsIgnoreUnknownTypes: Ignore unknown types (will use null value)
81 | - YAJLGenOptionsIncludeUnsupportedTypes: Handle non-JSON types (including NSDate, NSData, NSURL)
82 |
83 | @param indentString
84 | @result JSON String
85 | */
86 | - (NSString *)yajl_JSONStringWithOptions:(YAJLGenOptions)options indentString:(NSString *)indentString;
87 |
88 |
89 | #pragma mark Parsing
90 |
91 | /*!
92 | Parse JSON (NSString or NSData or dataUsingEncoding:).
93 | @result JSON object
94 | @throws YAJLParserException If a parse error occured
95 | @throws YAJLParsingUnsupportedException If not NSData or doesn't respond to dataUsingEncoding:
96 |
97 | @code
98 | NSString *JSONString = @"{'foo':['bar', true]}";
99 | id JSONValue = [JSONString yajl_JSON];
100 |
101 | NSData *JSONData = ...;
102 | id JSONValue = [JSONData yajl_JSON];
103 | @endcode
104 | */
105 | - (id)yajl_JSON;
106 |
107 | /*!
108 | Parse JSON (NSString or NSData or dataUsingEncoding:) with out error.
109 |
110 | If an error occurs, the returned object will be the current state of the object when
111 | the error occurred.
112 |
113 | @param error Error to set if we failed to parse
114 | @result JSON object
115 | @throws YAJLParserException If a parse error occured
116 | @throws YAJLParsingUnsupportedException If not NSData or doesn't respond to dataUsingEncoding:
117 |
118 | @code
119 | NSString *JSONString = @"{'foo':['bar', true]}";
120 | NSError *error = nil;
121 | [JSONString yajl_JSON:error];
122 | if (error) ...;
123 | @endcode
124 | */
125 | - (id)yajl_JSON:(NSError **)error;
126 |
127 | /*!
128 | Parse JSON (NSString or NSData or dataUsingEncoding:) with options and out error.
129 |
130 | If an error occurs, the returned object will be the current state of the object when
131 | the error occurred.
132 |
133 | @param options Parse options
134 | - YAJLParserOptionsNone: No options
135 | - YAJLParserOptionsAllowComments: Javascript style comments will be allowed in the input (both /&asterisk; &asterisk;/ and //)
136 | - YAJLParserOptionsCheckUTF8: Invalid UTF8 strings will cause a parse error
137 | - YAJLParserOptionsStrictPrecision: If YES will force strict precision and return integer overflow error
138 |
139 | @param error Error to set if we failed to parse
140 | @result JSON object
141 | @throws YAJLParserException If a parse error occured
142 | @throws YAJLParsingUnsupportedException If not NSData or doesn't respond to dataUsingEncoding:
143 |
144 | @code
145 | NSString *JSONString = @"{'foo':['bar', true]} // comment";
146 | NSError *error = nil;
147 | [JSONString yajl_JSONWithOptions:YAJLParserOptionsAllowComments error:error];
148 | if (error) ...;
149 | @endcode
150 | */
151 | - (id)yajl_JSONWithOptions:(YAJLParserOptions)options error:(NSError **)error;
152 |
153 | @end
154 |
155 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/YAJL.h:
--------------------------------------------------------------------------------
1 | //
2 | // YAJL.h
3 | // YAJL
4 | //
5 | // Created by Gabriel Handford on 7/23/09.
6 | // Copyright 2009. All rights reserved.
7 | //
8 | // Permission is hereby granted, free of charge, to any person
9 | // obtaining a copy of this software and associated documentation
10 | // files (the "Software"), to deal in the Software without
11 | // restriction, including without limitation the rights to use,
12 | // copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | // copies of the Software, and to permit persons to whom the
14 | // Software is furnished to do so, subject to the following
15 | // conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be
18 | // included in all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 | // OTHER DEALINGS IN THE SOFTWARE.
28 | //
29 |
30 | #import "YAJLParser.h"
31 | #import "YAJLDocument.h"
32 | #import "YAJLGen.h"
33 | #import "NSObject+YAJL.h"
34 | #import "NSBundle+YAJL.h"
35 |
36 | /*!
37 | @mainpage YAJL
38 |
39 | The YAJL framework is an Objective-C wrapper around the http://lloyd.github.com/yajl/ SAX-style JSON parser.
40 |
41 | @section Links
42 |
43 | Source: http://github.com/gabriel/yajl-objc
44 |
45 | View docs online: http://gabriel.github.com/yajl-objc/
46 |
47 | YAJL C docs: http://lloyd.github.com/yajl/
48 |
49 | @section Usage Usage
50 |
51 | To use the framework (for Mac OS X or iOS):
52 |
53 | @code
54 | // For Mac OS X
55 | #import
56 | // For iOS
57 | #import
58 | @endcode
59 |
60 | @section Examples Examples
61 |
62 | @subsection Example1 To parse JSON from NSData
63 |
64 | @code
65 | NSData *JSONData = [NSData dataWithContentsOfFile:@"example.json"];
66 | NSArray *arrayFromData = [JSONData yajl_JSON];
67 | @endcode
68 |
69 | @subsection Example2 To parse JSON from NSString
70 |
71 | @code
72 | NSString *JSONString = @"[1, 2, 3]";
73 | NSArray *arrayFromString = [JSONString yajl_JSON];
74 | @endcode
75 |
76 | @subsection Example2 To parse JSON from NSString with error and comments
77 |
78 | @code
79 | // With options and out error
80 | NSString *JSONString = @"[1, 2, 3] // Allow comments";
81 | NSError *error = nil;
82 | NSArray *arrayFromString = [JSONString yajl_JSONWithOptions:YAJLParserOptionsAllowComments error:&error];
83 | @endcode
84 |
85 | @subsection Example3 To generate JSON from an object, NSArray, NSDictionary, etc.
86 |
87 | @code
88 | NSDictionary *dict = [NSDictionary dictionaryWithObject:@"value" forKey:@"key"];
89 | NSString *JSONString = [dict yajl_JSONString];
90 | @endcode
91 |
92 | @subsection Example4 To generate JSON from an object, beautified with custom indent
93 |
94 | @code
95 | // Beautified with custon indent string
96 | NSArray *array = [NSArray arrayWithObjects:@"value1", @"value2", nil];
97 | NSString *JSONString = [dict yajl_JSONStringWithOptions:YAJLGenOptionsBeautify indentString:@" "];
98 | @endcode
99 |
100 | @subsection Example5 To use the streaming (or SAX style) parser, use YAJLParser
101 |
102 | @code
103 | NSData *data = [NSData dataWithContentsOfFile:@"example.json"];
104 |
105 | YAJLParser *parser = [[YAJLParser alloc] initWithParserOptions:YAJLParserOptionsAllowComments];
106 | parser.delegate = self;
107 | [parser parse:data];
108 | if (parser.parserError)
109 | NSLog(@"Error:\n%@", parser.parserError);
110 |
111 | parser.delegate = nil;
112 | [parser release];
113 |
114 | // Include delegate methods from YAJLParserDelegate
115 | - (void)parserDidStartDictionary:(YAJLParser *)parser { }
116 | - (void)parserDidEndDictionary:(YAJLParser *)parser { }
117 |
118 | - (void)parserDidStartArray:(YAJLParser *)parser { }
119 | - (void)parserDidEndArray:(YAJLParser *)parser { }
120 |
121 | - (void)parser:(YAJLParser *)parser didMapKey:(NSString *)key { }
122 | - (void)parser:(YAJLParser *)parser didAdd:(id)value { }
123 | @endcode
124 |
125 | @subsection ParserOptions Parser Options
126 |
127 | There are options when parsing that can be specified with YAJLParser#initWithParserOptions:.
128 |
129 | - YAJLParserOptionsAllowComments: Allows comments in JSON
130 | - YAJLParserOptionsCheckUTF8: Will verify UTF-8
131 | - YAJLParserOptionsStrictPrecision: Will force strict precision and return integer overflow error, if number is greater than long long.
132 |
133 | @subsection Example6 Parsing as data becomes available
134 |
135 | @code
136 | YAJLParser *parser = [[[YAJLParser alloc] init] autorelease];
137 | parser.delegate = self;
138 |
139 | // A chunk of data comes...
140 | YAJLParserStatus status = [parser parse:chunk1];
141 | // 'status' should be YAJLParserStatusInsufficientData, if its not finished
142 | if (parser.parserError)
143 | NSLog(@"Error:\n%@", parser.parserError);
144 |
145 | // Another chunk of data comes...
146 | YAJLParserStatus status = [parser parse:chunk2];
147 | // 'status' should be YAJLParserStatusOK if its finished
148 | if (parser.parserError)
149 | NSLog(@"Error:\n%@", parser.parserError);
150 | @endcode
151 |
152 | @subsection Example7 Document style parsing
153 |
154 | To use the document style, use YAJLDocument. Usage should be very similar to NSXMLDocument.
155 |
156 | @code
157 | NSData *data = [NSData dataWithContentsOfFile:@"example.json"];
158 | NSError *error = nil;
159 | YAJLDocument *document = [[YAJLDocument alloc] initWithData:data parserOptions:YAJLParserOptionsNone error:&error];
160 | // Access root element at document.root
161 | NSLog(@"Root: %@", document.root);
162 | [document release];
163 | @endcode
164 |
165 | @subsection Example8 Document style parsing as data becomes available
166 |
167 | @code
168 | YAJLDocument *document = [[YAJLDocument alloc] init];
169 | document.delegate = self;
170 |
171 | NSError *error = nil;
172 | [document parse:chunk1 error:error];
173 | [document parse:chunk2 error:error];
174 |
175 | // You can access root element at document.root
176 | NSLog(@"Root: %@", document.root);
177 | [document release];
178 |
179 | // Or via the YAJLDocumentDelegate delegate methods
180 |
181 | - (void)document:(YAJLDocument *)document didAddDictionary:(NSDictionary *)dict { }
182 | - (void)document:(YAJLDocument *)document didAddArray:(NSArray *)array { }
183 | - (void)document:(YAJLDocument *)document didAddObject:(id)object toArray:(NSArray *)array { }
184 | - (void)document:(YAJLDocument *)document didSetObject:(id)object forKey:(id)key inDictionary:(NSDictionary *)dict { }
185 | @endcode
186 |
187 | @subsection Example9 Load JSON from Bundle
188 |
189 | @code
190 | id JSONValue = [[NSBundle mainBundle] yajl_JSONFromResource:@"kegs.json"];
191 | @endcode
192 |
193 | @section CustomizedEncoding Customized Encoding
194 |
195 | To implement JSON encodable value for custom objects or override for existing objects, implement - (id)JSON;
196 |
197 | For example:
198 |
199 | @code
200 | @interface CustomObject : NSObject
201 | @end
202 |
203 | @implementation CustomObject
204 |
205 | - (id)JSON {
206 | return [NSArray arrayWithObject:[NSNumber numberWithInteger:1]];
207 | }
208 |
209 | @end
210 | @endcode
211 |
212 | */
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/YAJLDocument.h:
--------------------------------------------------------------------------------
1 | //
2 | // YAJLDecoder.h
3 | // YAJL
4 | //
5 | // Created by Gabriel Handford on 3/1/09.
6 | // Copyright 2009. All rights reserved.
7 | //
8 | // Permission is hereby granted, free of charge, to any person
9 | // obtaining a copy of this software and associated documentation
10 | // files (the "Software"), to deal in the Software without
11 | // restriction, including without limitation the rights to use,
12 | // copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | // copies of the Software, and to permit persons to whom the
14 | // Software is furnished to do so, subject to the following
15 | // conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be
18 | // included in all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 | // OTHER DEALINGS IN THE SOFTWARE.
28 | //
29 |
30 |
31 | #include "YAJLParser.h"
32 |
33 | typedef enum {
34 | YAJLDecoderCurrentTypeNone,
35 | YAJLDecoderCurrentTypeArray,
36 | YAJLDecoderCurrentTypeDict
37 | } YAJLDecoderCurrentType;
38 |
39 | extern NSInteger YAJLDocumentStackCapacity;
40 |
41 | @class YAJLDocument;
42 |
43 | /*!
44 | YAJLDocument delegate notified when objects are added.
45 | */
46 | @protocol YAJLDocumentDelegate
47 | @optional
48 | /*!
49 | Did add dictionary.
50 | @param document Sender
51 | @param dict Dictionary that was added
52 | */
53 | - (void)document:(YAJLDocument *)document didAddDictionary:(NSDictionary *)dict;
54 |
55 | /*!
56 | Did add array.
57 | @param document Sender
58 | @param array Array that was added
59 | */
60 | - (void)document:(YAJLDocument *)document didAddArray:(NSArray *)array;
61 |
62 | /*!
63 | Did add object to array.
64 | @param document Sender
65 | @param object Object added
66 | @param array Array objct was added to
67 | */
68 | - (void)document:(YAJLDocument *)document didAddObject:(id)object toArray:(NSArray *)array;
69 |
70 | /*!
71 | Did set object for key on dictionary.
72 | @param document Sender
73 | @param object Object that was set
74 | @param key Key
75 | @param dict Dictionary object was set for key on
76 | */
77 | - (void)document:(YAJLDocument *)document didSetObject:(id)object forKey:(id)key inDictionary:(NSDictionary *)dict;
78 | @end
79 |
80 | /*!
81 | JSON document interface.
82 |
83 | @code
84 | NSData *data = [NSData dataWithContentsOfFile:@"example.json"];
85 | NSError *error = nil;
86 | YAJLDocument *document = [[YAJLDocument alloc] initWithData:data parserOptions:YAJLParserOptionsNone error:&error];
87 | // Access root element at document.root
88 | NSLog(@"Root: %@", document.root);
89 | [document release];
90 | @endcode
91 |
92 | Example for streaming:
93 | @code
94 | YAJLDocument *document = [[YAJLDocument alloc] init];
95 | document.delegate = self;
96 |
97 | NSError *error = nil;
98 | [document parse:chunk1 error:error];
99 | [document parse:chunk2 error:error];
100 |
101 | // You can access root element at document.root
102 | NSLog(@"Root: %@", document.root);
103 | [document release];
104 |
105 | // Or via the YAJLDocumentDelegate delegate methods
106 |
107 | - (void)document:(YAJLDocument *)document didAddDictionary:(NSDictionary *)dict { }
108 | - (void)document:(YAJLDocument *)document didAddArray:(NSArray *)array { }
109 | - (void)document:(YAJLDocument *)document didAddObject:(id)object toArray:(NSArray *)array { }
110 | - (void)document:(YAJLDocument *)document didSetObject:(id)object forKey:(id)key inDictionary:(NSDictionary *)dict { }
111 | @endcode
112 | */
113 | @interface YAJLDocument : NSObject {
114 |
115 | id root_; // NSArray or NSDictionary
116 | YAJLParser *parser_;
117 |
118 | // TODO(gabe): This should be __weak
119 | id delegate_;
120 |
121 | __weak NSMutableDictionary *dict_; // weak; if map in progress, points to the current map
122 | __weak NSMutableArray *array_; // weak; If array in progress, points the current array
123 | __weak NSString *key_; // weak; If map in progress, points to current key
124 |
125 | NSMutableArray *stack_;
126 | NSMutableArray *keyStack_;
127 |
128 | YAJLDecoderCurrentType currentType_;
129 |
130 | YAJLParserStatus parserStatus_;
131 |
132 | }
133 |
134 | @property (readonly, nonatomic) id root; //! The root element of the document, either NSArray or NSDictionary
135 | @property (readonly, nonatomic) YAJLParserStatus parserStatus; //! The current status of parsing
136 | @property (assign, nonatomic) id delegate; //! Delegate
137 |
138 | /*!
139 | Create document from data.
140 | @param data Data to parse
141 | @param parserOptions Parse options
142 | - YAJLParserOptionsNone: No options
143 | - YAJLParserOptionsAllowComments: Javascript style comments will be allowed in the input (both /&asterisk; &asterisk;/ and //)
144 | - YAJLParserOptionsCheckUTF8: Invalid UTF8 strings will cause a parse error
145 | - YAJLParserOptionsStrictPrecision: If YES will force strict precision and return integer overflow error
146 | @param error Error to set on failure
147 | */
148 | - (id)initWithData:(NSData *)data parserOptions:(YAJLParserOptions)parserOptions error:(NSError **)error;
149 |
150 | /*!
151 | Create document from data.
152 | @param data Data to parse
153 | @param parserOptions Parse options
154 | - YAJLParserOptionsNone: No options
155 | - YAJLParserOptionsAllowComments: Javascript style comments will be allowed in the input (both /&asterisk; &asterisk;/ and //)
156 | - YAJLParserOptionsCheckUTF8: Invalid UTF8 strings will cause a parse error
157 | - YAJLParserOptionsStrictPrecision: If YES will force strict precision and return integer overflow error
158 | @param capacity Initial capacity for NSArray and NSDictionary objects (Defaults to 20)
159 | @param error Error to set on failure
160 | */
161 | - (id)initWithData:(NSData *)data parserOptions:(YAJLParserOptions)parserOptions capacity:(NSInteger)capacity error:(NSError **)error;
162 |
163 | /*!
164 | Create empty document with parser options.
165 | @param parserOptions Parse options
166 | - YAJLParserOptionsNone: No options
167 | - YAJLParserOptionsAllowComments: Javascript style comments will be allowed in the input (both /&asterisk; &asterisk;/ and //)
168 | - YAJLParserOptionsCheckUTF8: Invalid UTF8 strings will cause a parse error
169 | - YAJLParserOptionsStrictPrecision: If YES will force strict precision and return integer overflow error
170 | */
171 | - (id)initWithParserOptions:(YAJLParserOptions)parserOptions;
172 |
173 | /*!
174 | Create empty document with parser options.
175 | @param parserOptions Parse options
176 | - YAJLParserOptionsNone: No options
177 | - YAJLParserOptionsAllowComments: Javascript style comments will be allowed in the input (both /&asterisk; &asterisk;/ and //)
178 | - YAJLParserOptionsCheckUTF8: Invalid UTF8 strings will cause a parse error
179 | - YAJLParserOptionsStrictPrecision: If YES will force strict precision and return integer overflow error
180 | @param capacity Initial capacity for NSArray and NSDictionary objects (Defaults to 20)
181 | */
182 | - (id)initWithParserOptions:(YAJLParserOptions)parserOptions capacity:(NSInteger)capacity;
183 |
184 | /*!
185 | Parse data.
186 | @param data Data to parse
187 | @param error Out error to set on failure
188 | @result Parser status
189 | - YAJLParserStatusNone: No status
190 | - YAJLParserStatusOK: Parsed OK
191 | - YAJLParserStatusInsufficientData: There was insufficient data
192 | - YAJLParserStatusError: Parser errored
193 | */
194 | - (YAJLParserStatus)parse:(NSData *)data error:(NSError **)error;
195 |
196 | @end
197 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/YAJLGen.h:
--------------------------------------------------------------------------------
1 | //
2 | // YAJLGen.h
3 | // YAJL
4 | //
5 | // Created by Gabriel Handford on 7/19/09.
6 | // Copyright 2009. All rights reserved.
7 | //
8 | // Permission is hereby granted, free of charge, to any person
9 | // obtaining a copy of this software and associated documentation
10 | // files (the "Software"), to deal in the Software without
11 | // restriction, including without limitation the rights to use,
12 | // copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | // copies of the Software, and to permit persons to whom the
14 | // Software is furnished to do so, subject to the following
15 | // conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be
18 | // included in all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 | // OTHER DEALINGS IN THE SOFTWARE.
28 | //
29 |
30 | #include "yajl_gen.h"
31 |
32 |
33 | extern NSString *const YAJLGenInvalidObjectException; //! Exception type if we encounter invalid object
34 |
35 | //! JSON generate options
36 | enum YAJLGenOptions {
37 | YAJLGenOptionsNone = 0, //!< No options
38 | YAJLGenOptionsBeautify = 1 << 0, //!< Beautifiy JSON output
39 | YAJLGenOptionsIgnoreUnknownTypes = 1 << 1, //!< Ignore unknown types (will use null value)
40 | YAJLGenOptionsIncludeUnsupportedTypes = 1 << 2, //!< Handle non-JSON types (including NSDate, NSData, NSURL)
41 | };
42 | typedef NSUInteger YAJLGenOptions;
43 |
44 | /*!
45 | YAJL JSON string generator.
46 | Supports the following types:
47 | - NSArray
48 | - NSDictionary
49 | - NSString
50 | - NSNumber
51 | - NSNull
52 |
53 | We also support the following types (if using YAJLGenOptionsIncludeUnsupportedTypes option),
54 | by converting to JSON supported types:
55 | - NSDate: number representing number of milliseconds since (1970) epoch
56 | - NSData: Base64 encoded string
57 | - NSURL: URL (absolute) string
58 | */
59 | @interface YAJLGen : NSObject {
60 | yajl_gen gen_;
61 |
62 | YAJLGenOptions genOptions_;
63 | }
64 |
65 | /*!
66 | JSON generator with options.
67 | @param genOptions Generate options
68 | - YAJLGenOptionsNone: No options
69 | - YAJLGenOptionsBeautify: Beautifiy JSON output
70 | - YAJLGenOptionsIgnoreUnknownTypes: Ignore unknown types (will use null value)
71 | - YAJLGenOptionsIncludeUnsupportedTypes: Handle non-JSON types (including NSDate, NSData, NSURL)
72 |
73 | @param indentString String for indentation
74 | */
75 | - (id)initWithGenOptions:(YAJLGenOptions)genOptions indentString:(NSString *)indentString;
76 |
77 | /*!
78 | Write JSON for object to buffer.
79 | @param obj Supported or custom object
80 | */
81 | - (void)object:(id)obj;
82 |
83 | /*!
84 | Write null value to buffer.
85 | */
86 | - (void)null;
87 |
88 | /*!
89 | Write bool value to buffer.
90 | @param b Output true or false
91 | */
92 | - (void)bool:(BOOL)b;
93 |
94 | /*!
95 | Write numeric value to buffer.
96 | @param number Numeric value
97 | */
98 | - (void)number:(NSNumber *)number;
99 |
100 | /*!
101 | Write string value to buffer.
102 | @param s String value
103 | */
104 | - (void)string:(NSString *)s;
105 |
106 | /*!
107 | Write dictionary start ('{') to buffer.
108 | */
109 | - (void)startDictionary;
110 |
111 | /*!
112 | Write dictionary end ('}') to buffer.
113 | */
114 | - (void)endDictionary;
115 |
116 | /*!
117 | Write array start ('[') to buffer.
118 | */
119 | - (void)startArray;
120 |
121 | /*!
122 | Write array end (']') to buffer.
123 | */
124 | - (void)endArray;
125 |
126 | /*!
127 | Clear JSON buffer.
128 | */
129 | - (void)clear;
130 |
131 | /*!
132 | Get current JSON buffer.
133 | */
134 | - (NSString *)buffer;
135 |
136 | @end
137 |
138 |
139 | /*!
140 | Custom objects can support manual JSON encoding.
141 |
142 | @code
143 | @interface CustomObject : NSObject
144 | @end
145 |
146 | @implementation CustomObject
147 |
148 | - (id)JSON {
149 | return [NSArray arrayWithObject:[NSNumber numberWithInteger:1]];
150 | }
151 |
152 | @end
153 | @endcode
154 |
155 | And then:
156 |
157 | @code
158 | CustomObject *customObject = [[CustomObject alloc] init];
159 | NSString *JSONString = [customObject yajl_JSON];
160 | // JSONString == "[1]";
161 | @endcode
162 | */
163 | @protocol YAJLCoding
164 |
165 | /*!
166 | Provide custom and/or encodable object to parse to JSON string.
167 | @result Object encodable as JSON such as NSDictionary, NSArray, etc
168 | */
169 | - (id)JSON;
170 |
171 | @end
172 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/YAJLParser.h:
--------------------------------------------------------------------------------
1 | //
2 | // YAJLParser.h
3 | // YAJL
4 | //
5 | // Created by Gabriel Handford on 6/14/09.
6 | // Copyright 2009. All rights reserved.
7 | //
8 | // Permission is hereby granted, free of charge, to any person
9 | // obtaining a copy of this software and associated documentation
10 | // files (the "Software"), to deal in the Software without
11 | // restriction, including without limitation the rights to use,
12 | // copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | // copies of the Software, and to permit persons to whom the
14 | // Software is furnished to do so, subject to the following
15 | // conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be
18 | // included in all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22 | // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25 | // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 | // OTHER DEALINGS IN THE SOFTWARE.
28 | //
29 |
30 |
31 | #include "yajl_parse.h"
32 |
33 |
34 | extern NSString *const YAJLErrorDomain; //! Error domain for YAJL
35 | extern NSString *const YAJLParserException; //! Generic parse exception
36 | extern NSString *const YAJLParsingUnsupportedException; //! Parsing unsupported exception
37 |
38 | extern NSString *const YAJLParserValueKey; //! Key in NSError userInfo for value we errored on
39 |
40 | //! Parser error codes
41 | enum YAJLParserErrorCode {
42 | YAJLParserErrorCodeAllocError = -1000, //!< Alloc error
43 | YAJLParserErrorCodeDoubleOverflow = -1001, //!< Double overflow
44 | YAJLParserErrorCodeIntegerOverflow = -1002 //!< Integer overflow
45 | };
46 | typedef NSInteger YAJLParserErrorCode; //! Parser error codes
47 |
48 | //! Parser options
49 | enum YAJLParserOptions {
50 | YAJLParserOptionsNone = 0, //!< No options
51 | YAJLParserOptionsAllowComments = 1 << 0, //!< Javascript style comments will be allowed in the input (both /&asterisk; &asterisk;/ and //)
52 | YAJLParserOptionsCheckUTF8 = 1 << 1, //!< Invalid UTF8 strings will cause a parse error
53 | YAJLParserOptionsStrictPrecision = 1 << 2, //!< If YES will force strict precision and return integer overflow error
54 | };
55 | typedef NSUInteger YAJLParserOptions; //! Parser options
56 |
57 | //! Parser status
58 | enum {
59 | YAJLParserStatusNone = 0, //!< No status
60 | YAJLParserStatusOK = 1, //!< Parsed OK
61 | YAJLParserStatusInsufficientData = 2, //!< There was insufficient data
62 | YAJLParserStatusError = 3 //!< Parser errored
63 | };
64 | typedef NSUInteger YAJLParserStatus; //!< Status of the last parse event
65 |
66 |
67 | @class YAJLParser;
68 |
69 | /*!
70 | Delegate for YAJL JSON parser.
71 | */
72 | @protocol YAJLParserDelegate
73 |
74 | /*!
75 | Parser did start dictionary.
76 | @param parser Sender
77 | */
78 | - (void)parserDidStartDictionary:(YAJLParser *)parser;
79 |
80 | /*!
81 | Parser did end dictionary.
82 | @param parser Sender
83 | */
84 | - (void)parserDidEndDictionary:(YAJLParser *)parser;
85 |
86 | /*!
87 | Parser did start array.
88 | @param parser Sender
89 | */
90 | - (void)parserDidStartArray:(YAJLParser *)parser;
91 |
92 | /*!
93 | Parser did end array.
94 | @param parser Sender
95 | */
96 | - (void)parserDidEndArray:(YAJLParser *)parser;
97 |
98 | /*!
99 | Parser did map key.
100 | @param parser Sender
101 | @param key Key that was mapped
102 | */
103 | - (void)parser:(YAJLParser *)parser didMapKey:(NSString *)key;
104 |
105 | /*!
106 | Did add value.
107 | @param parser Sender
108 | @param value Value of type NSNull, NSString or NSNumber
109 | */
110 | - (void)parser:(YAJLParser *)parser didAdd:(id)value;
111 |
112 | @end
113 |
114 | /*!
115 | JSON parser.
116 |
117 | @code
118 | NSData *data = [NSData dataWithContentsOfFile:@"example.json"];
119 |
120 | YAJLParser *parser = [[YAJLParser alloc] initWithParserOptions:YAJLParserOptionsAllowComments];
121 | parser.delegate = self;
122 | [parser parse:data];
123 | if (parser.parserError) {
124 | NSLog(@"Error:\n%@", parser.parserError);
125 | }
126 |
127 | parser.delegate = nil;
128 | [parser release];
129 |
130 | // Include delegate methods from YAJLParserDelegate
131 | - (void)parserDidStartDictionary:(YAJLParser *)parser { }
132 | - (void)parserDidEndDictionary:(YAJLParser *)parser { }
133 |
134 | - (void)parserDidStartArray:(YAJLParser *)parser { }
135 | - (void)parserDidEndArray:(YAJLParser *)parser { }
136 |
137 | - (void)parser:(YAJLParser *)parser didMapKey:(NSString *)key { }
138 | - (void)parser:(YAJLParser *)parser didAdd:(id)value { }
139 | @endcode
140 | */
141 | @interface YAJLParser : NSObject {
142 |
143 | yajl_handle handle_;
144 |
145 | __weak id delegate_; // weak
146 |
147 | YAJLParserOptions parserOptions_;
148 |
149 | NSError *parserError_;
150 | }
151 |
152 | @property (weak, nonatomic) id delegate;
153 | @property (readonly, retain, nonatomic) NSError *parserError;
154 | @property (readonly, nonatomic) YAJLParserOptions parserOptions;
155 |
156 | /*!
157 | Create parser with data and options.
158 | @param parserOptions Parser options
159 | - YAJLParserOptionsNone: No options
160 | - YAJLParserOptionsAllowComments: Javascript style comments will be allowed in the input (both /&asterisk; &asterisk;/ and //)
161 | - YAJLParserOptionsCheckUTF8: Invalid UTF8 strings will cause a parse error
162 | - YAJLParserOptionsStrictPrecision: If YES will force strict precision and return integer overflow error
163 | */
164 | - (id)initWithParserOptions:(YAJLParserOptions)parserOptions;
165 |
166 | /*!
167 | Parse data.
168 |
169 | If streaming, you can call parse multiple times as long as
170 | previous calls return YAJLParserStatusInsufficientData.
171 |
172 | @param data
173 | @result Parser status
174 | - YAJLParserStatusNone: No status
175 | - YAJLParserStatusOK: Parsed OK
176 | - YAJLParserStatusInsufficientData: There was insufficient data
177 | - YAJLParserStatusError: Parser errored
178 | */
179 | - (YAJLParserStatus)parse:(NSData *)data;
180 |
181 | @end
182 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/yajl_common.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010, Lloyd Hilaiel.
3 | *
4 | * Redistribution and use in source and binary forms, with or without
5 | * modification, are permitted provided that the following conditions are
6 | * met:
7 | *
8 | * 1. Redistributions of source code must retain the above copyright
9 | * notice, this list of conditions and the following disclaimer.
10 | *
11 | * 2. Redistributions in binary form must reproduce the above copyright
12 | * notice, this list of conditions and the following disclaimer in
13 | * the documentation and/or other materials provided with the
14 | * distribution.
15 | *
16 | * 3. Neither the name of Lloyd Hilaiel nor the names of its
17 | * contributors may be used to endorse or promote products derived
18 | * from this software without specific prior written permission.
19 | *
20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
24 | * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 | * POSSIBILITY OF SUCH DAMAGE.
31 | */
32 |
33 | #ifndef __YAJL_COMMON_H__
34 | #define __YAJL_COMMON_H__
35 |
36 | #ifdef __cplusplus
37 | extern "C" {
38 | #endif
39 |
40 | #define YAJL_MAX_DEPTH 128
41 |
42 | /* msft dll export gunk. To build a DLL on windows, you
43 | * must define WIN32, YAJL_SHARED, and YAJL_BUILD. To use a shared
44 | * DLL, you must define YAJL_SHARED and WIN32 */
45 | #if defined(WIN32) && defined(YAJL_SHARED)
46 | # ifdef YAJL_BUILD
47 | # define YAJL_API __declspec(dllexport)
48 | # else
49 | # define YAJL_API __declspec(dllimport)
50 | # endif
51 | #else
52 | # define YAJL_API
53 | #endif
54 |
55 | /** pointer to a malloc function, supporting client overriding memory
56 | * allocation routines */
57 | typedef void * (*yajl_malloc_func)(void *ctx, unsigned int sz);
58 |
59 | /** pointer to a free function, supporting client overriding memory
60 | * allocation routines */
61 | typedef void (*yajl_free_func)(void *ctx, void * ptr);
62 |
63 | /** pointer to a realloc function which can resize an allocation. */
64 | typedef void * (*yajl_realloc_func)(void *ctx, void * ptr, unsigned int sz);
65 |
66 | /** A structure which can be passed to yajl_*_alloc routines to allow the
67 | * client to specify memory allocation functions to be used. */
68 | typedef struct
69 | {
70 | /** pointer to a function that can allocate uninitialized memory */
71 | yajl_malloc_func malloc;
72 | /** pointer to a function that can resize memory allocations */
73 | yajl_realloc_func realloc;
74 | /** pointer to a function that can free memory allocated using
75 | * reallocFunction or mallocFunction */
76 | yajl_free_func free;
77 | /** a context pointer that will be passed to above allocation routines */
78 | void * ctx;
79 | } yajl_alloc_funcs;
80 |
81 | #ifdef __cplusplus
82 | }
83 | #endif
84 |
85 | #endif
86 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/yajl_gen.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010, Lloyd Hilaiel.
3 | *
4 | * Redistribution and use in source and binary forms, with or without
5 | * modification, are permitted provided that the following conditions are
6 | * met:
7 | *
8 | * 1. Redistributions of source code must retain the above copyright
9 | * notice, this list of conditions and the following disclaimer.
10 | *
11 | * 2. Redistributions in binary form must reproduce the above copyright
12 | * notice, this list of conditions and the following disclaimer in
13 | * the documentation and/or other materials provided with the
14 | * distribution.
15 | *
16 | * 3. Neither the name of Lloyd Hilaiel nor the names of its
17 | * contributors may be used to endorse or promote products derived
18 | * from this software without specific prior written permission.
19 | *
20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
24 | * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 | * POSSIBILITY OF SUCH DAMAGE.
31 | */
32 |
33 | /**
34 | * \file yajl_gen.h
35 | * Interface to YAJL's JSON generation facilities.
36 | */
37 |
38 | #include
39 |
40 | #ifndef __YAJL_GEN_H__
41 | #define __YAJL_GEN_H__
42 |
43 | #ifdef __cplusplus
44 | extern "C" {
45 | #endif
46 | /** generator status codes */
47 | typedef enum {
48 | /** no error */
49 | yajl_gen_status_ok = 0,
50 | /** at a point where a map key is generated, a function other than
51 | * yajl_gen_string was called */
52 | yajl_gen_keys_must_be_strings,
53 | /** YAJL's maximum generation depth was exceeded. see
54 | * YAJL_MAX_DEPTH */
55 | yajl_max_depth_exceeded,
56 | /** A generator function (yajl_gen_XXX) was called while in an error
57 | * state */
58 | yajl_gen_in_error_state,
59 | /** A complete JSON document has been generated */
60 | yajl_gen_generation_complete,
61 | /** yajl_gen_double was passed an invalid floating point value
62 | * (infinity or NaN). */
63 | yajl_gen_invalid_number,
64 | /** A print callback was passed in, so there is no internal
65 | * buffer to get from */
66 | yajl_gen_no_buf
67 | } yajl_gen_status;
68 |
69 | /** an opaque handle to a generator */
70 | typedef struct yajl_gen_t * yajl_gen;
71 |
72 | /** a callback used for "printing" the results. */
73 | typedef void (*yajl_print_t)(void * ctx,
74 | const char * str,
75 | unsigned int len);
76 |
77 | /** configuration structure for the generator */
78 | typedef struct {
79 | /** generate indented (beautiful) output */
80 | unsigned int beautify;
81 | /** an opportunity to define an indent string. such as \\t or
82 | * some number of spaces. default is four spaces ' '. This
83 | * member is only relevant when beautify is true */
84 | const char * indentString;
85 | } yajl_gen_config;
86 |
87 | /** allocate a generator handle
88 | * \param config a pointer to a structure containing parameters which
89 | * configure the behavior of the json generator
90 | * \param allocFuncs an optional pointer to a structure which allows
91 | * the client to overide the memory allocation
92 | * used by yajl. May be NULL, in which case
93 | * malloc/free/realloc will be used.
94 | *
95 | * \returns an allocated handle on success, NULL on failure (bad params)
96 | */
97 | YAJL_API yajl_gen yajl_gen_alloc(const yajl_gen_config * config,
98 | const yajl_alloc_funcs * allocFuncs);
99 |
100 | /** allocate a generator handle that will print to the specified
101 | * callback rather than storing the results in an internal buffer.
102 | * \param callback a pointer to a printer function. May be NULL
103 | * in which case, the results will be store in an
104 | * internal buffer.
105 | * \param config a pointer to a structure containing parameters
106 | * which configure the behavior of the json
107 | * generator.
108 | * \param allocFuncs an optional pointer to a structure which allows
109 | * the client to overide the memory allocation
110 | * used by yajl. May be NULL, in which case
111 | * malloc/free/realloc will be used.
112 | * \param ctx a context pointer that will be passed to the
113 | * printer callback.
114 | *
115 | * \returns an allocated handle on success, NULL on failure (bad params)
116 | */
117 | YAJL_API yajl_gen yajl_gen_alloc2(const yajl_print_t callback,
118 | const yajl_gen_config * config,
119 | const yajl_alloc_funcs * allocFuncs,
120 | void * ctx);
121 |
122 | /** free a generator handle */
123 | YAJL_API void yajl_gen_free(yajl_gen handle);
124 |
125 | YAJL_API yajl_gen_status yajl_gen_integer(yajl_gen hand, long int number);
126 | /** generate a floating point number. number may not be infinity or
127 | * NaN, as these have no representation in JSON. In these cases the
128 | * generator will return 'yajl_gen_invalid_number' */
129 | YAJL_API yajl_gen_status yajl_gen_double(yajl_gen hand, double number);
130 | YAJL_API yajl_gen_status yajl_gen_number(yajl_gen hand,
131 | const char * num,
132 | unsigned int len);
133 | YAJL_API yajl_gen_status yajl_gen_string(yajl_gen hand,
134 | const unsigned char * str,
135 | unsigned int len);
136 | YAJL_API yajl_gen_status yajl_gen_null(yajl_gen hand);
137 | YAJL_API yajl_gen_status yajl_gen_bool(yajl_gen hand, int boolean);
138 | YAJL_API yajl_gen_status yajl_gen_map_open(yajl_gen hand);
139 | YAJL_API yajl_gen_status yajl_gen_map_close(yajl_gen hand);
140 | YAJL_API yajl_gen_status yajl_gen_array_open(yajl_gen hand);
141 | YAJL_API yajl_gen_status yajl_gen_array_close(yajl_gen hand);
142 |
143 | /** access the null terminated generator buffer. If incrementally
144 | * outputing JSON, one should call yajl_gen_clear to clear the
145 | * buffer. This allows stream generation. */
146 | YAJL_API yajl_gen_status yajl_gen_get_buf(yajl_gen hand,
147 | const unsigned char ** buf,
148 | unsigned int * len);
149 |
150 | /** clear yajl's output buffer, but maintain all internal generation
151 | * state. This function will not "reset" the generator state, and is
152 | * intended to enable incremental JSON outputing. */
153 | YAJL_API void yajl_gen_clear(yajl_gen hand);
154 |
155 | #ifdef __cplusplus
156 | }
157 | #endif
158 |
159 | #endif
160 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/yajl_parse.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010, Lloyd Hilaiel.
3 | *
4 | * Redistribution and use in source and binary forms, with or without
5 | * modification, are permitted provided that the following conditions are
6 | * met:
7 | *
8 | * 1. Redistributions of source code must retain the above copyright
9 | * notice, this list of conditions and the following disclaimer.
10 | *
11 | * 2. Redistributions in binary form must reproduce the above copyright
12 | * notice, this list of conditions and the following disclaimer in
13 | * the documentation and/or other materials provided with the
14 | * distribution.
15 | *
16 | * 3. Neither the name of Lloyd Hilaiel nor the names of its
17 | * contributors may be used to endorse or promote products derived
18 | * from this software without specific prior written permission.
19 | *
20 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
24 | * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 | * POSSIBILITY OF SUCH DAMAGE.
31 | */
32 |
33 | /**
34 | * \file yajl_parse.h
35 | * Interface to YAJL's JSON parsing facilities.
36 | */
37 |
38 | #include
39 |
40 | #ifndef __YAJL_PARSE_H__
41 | #define __YAJL_PARSE_H__
42 |
43 | #ifdef __cplusplus
44 | extern "C" {
45 | #endif
46 | /** error codes returned from this interface */
47 | typedef enum {
48 | /** no error was encountered */
49 | yajl_status_ok,
50 | /** a client callback returned zero, stopping the parse */
51 | yajl_status_client_canceled,
52 | /** The parse cannot yet complete because more json input text
53 | * is required, call yajl_parse with the next buffer of input text.
54 | * (pertinent only when stream parsing) */
55 | yajl_status_insufficient_data,
56 | /** An error occured during the parse. Call yajl_get_error for
57 | * more information about the encountered error */
58 | yajl_status_error
59 | } yajl_status;
60 |
61 | /** attain a human readable, english, string for an error */
62 | YAJL_API const char * yajl_status_to_string(yajl_status code);
63 |
64 | /** an opaque handle to a parser */
65 | typedef struct yajl_handle_t * yajl_handle;
66 |
67 | /** yajl is an event driven parser. this means as json elements are
68 | * parsed, you are called back to do something with the data. The
69 | * functions in this table indicate the various events for which
70 | * you will be called back. Each callback accepts a "context"
71 | * pointer, this is a void * that is passed into the yajl_parse
72 | * function which the client code may use to pass around context.
73 | *
74 | * All callbacks return an integer. If non-zero, the parse will
75 | * continue. If zero, the parse will be canceled and
76 | * yajl_status_client_canceled will be returned from the parse.
77 | *
78 | * Note about handling of numbers:
79 | * yajl will only convert numbers that can be represented in a double
80 | * or a long int. All other numbers will be passed to the client
81 | * in string form using the yajl_number callback. Furthermore, if
82 | * yajl_number is not NULL, it will always be used to return numbers,
83 | * that is yajl_integer and yajl_double will be ignored. If
84 | * yajl_number is NULL but one of yajl_integer or yajl_double are
85 | * defined, parsing of a number larger than is representable
86 | * in a double or long int will result in a parse error.
87 | */
88 | typedef struct {
89 | int (* yajl_null)(void * ctx);
90 | int (* yajl_boolean)(void * ctx, int boolVal);
91 | int (* yajl_integer)(void * ctx, long integerVal);
92 | int (* yajl_double)(void * ctx, double doubleVal);
93 | /** A callback which passes the string representation of the number
94 | * back to the client. Will be used for all numbers when present */
95 | int (* yajl_number)(void * ctx, const char * numberVal,
96 | unsigned int numberLen);
97 |
98 | /** strings are returned as pointers into the JSON text when,
99 | * possible, as a result, they are _not_ null padded */
100 | int (* yajl_string)(void * ctx, const unsigned char * stringVal,
101 | unsigned int stringLen);
102 |
103 | int (* yajl_start_map)(void * ctx);
104 | int (* yajl_map_key)(void * ctx, const unsigned char * key,
105 | unsigned int stringLen);
106 | int (* yajl_end_map)(void * ctx);
107 |
108 | int (* yajl_start_array)(void * ctx);
109 | int (* yajl_end_array)(void * ctx);
110 | } yajl_callbacks;
111 |
112 | /** configuration structure for the generator */
113 | typedef struct {
114 | /** if nonzero, javascript style comments will be allowed in
115 | * the json input, both slash star and slash slash */
116 | unsigned int allowComments;
117 | /** if nonzero, invalid UTF8 strings will cause a parse
118 | * error */
119 | unsigned int checkUTF8;
120 | } yajl_parser_config;
121 |
122 | /** allocate a parser handle
123 | * \param callbacks a yajl callbacks structure specifying the
124 | * functions to call when different JSON entities
125 | * are encountered in the input text. May be NULL,
126 | * which is only useful for validation.
127 | * \param config configuration parameters for the parse.
128 | * \param ctx a context pointer that will be passed to callbacks.
129 | */
130 | YAJL_API yajl_handle yajl_alloc(const yajl_callbacks * callbacks,
131 | const yajl_parser_config * config,
132 | const yajl_alloc_funcs * allocFuncs,
133 | void * ctx);
134 |
135 | /** free a parser handle */
136 | YAJL_API void yajl_free(yajl_handle handle);
137 |
138 | /** Parse some json!
139 | * \param hand - a handle to the json parser allocated with yajl_alloc
140 | * \param jsonText - a pointer to the UTF8 json text to be parsed
141 | * \param jsonTextLength - the length, in bytes, of input text
142 | */
143 | YAJL_API yajl_status yajl_parse(yajl_handle hand,
144 | const unsigned char * jsonText,
145 | unsigned int jsonTextLength);
146 |
147 | /** Parse any remaining buffered json.
148 | * Since yajl is a stream-based parser, without an explicit end of
149 | * input, yajl sometimes can't decide if content at the end of the
150 | * stream is valid or not. For example, if "1" has been fed in,
151 | * yajl can't know whether another digit is next or some character
152 | * that would terminate the integer token.
153 | *
154 | * \param hand - a handle to the json parser allocated with yajl_alloc
155 | */
156 | YAJL_API yajl_status yajl_parse_complete(yajl_handle hand);
157 |
158 | /** get an error string describing the state of the
159 | * parse.
160 | *
161 | * If verbose is non-zero, the message will include the JSON
162 | * text where the error occured, along with an arrow pointing to
163 | * the specific char.
164 | *
165 | * \returns A dynamically allocated string will be returned which should
166 | * be freed with yajl_free_error
167 | */
168 | YAJL_API unsigned char * yajl_get_error(yajl_handle hand, int verbose,
169 | const unsigned char * jsonText,
170 | unsigned int jsonTextLength);
171 |
172 | /**
173 | * get the amount of data consumed from the last chunk passed to YAJL.
174 | *
175 | * In the case of a successful parse this can help you understand if
176 | * the entire buffer was consumed (which will allow you to handle
177 | * "junk at end of input".
178 | *
179 | * In the event an error is encountered during parsing, this function
180 | * affords the client a way to get the offset into the most recent
181 | * chunk where the error occured. 0 will be returned if no error
182 | * was encountered.
183 | */
184 | YAJL_API unsigned int yajl_get_bytes_consumed(yajl_handle hand);
185 |
186 | /** free an error returned from yajl_get_error */
187 | YAJL_API void yajl_free_error(yajl_handle hand, unsigned char * str);
188 |
189 | #ifdef __cplusplus
190 | }
191 | #endif
192 |
193 | #endif
194 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Headers/yajl_version.h:
--------------------------------------------------------------------------------
1 | #ifndef YAJL_VERSION_H_
2 | #define YAJL_VERSION_H_
3 |
4 | #include
5 |
6 | #define YAJL_MAJOR 1
7 | #define YAJL_MINOR 0
8 | #define YAJL_MICRO 11
9 |
10 | #define YAJL_VERSION ((YAJL_MAJOR * 10000) + (YAJL_MINOR * 100) + YAJL_MICRO)
11 |
12 | #ifdef __cplusplus
13 | extern "C" {
14 | #endif
15 |
16 | extern int YAJL_API yajl_version(void);
17 |
18 | #ifdef __cplusplus
19 | }
20 | #endif
21 |
22 | #endif /* YAJL_VERSION_H_ */
23 |
24 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quicksilver/1Password-Plugin/1473098683bd7987f5cd42f2255f6787c54b88ee/YAJL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | YAJL
9 | CFBundleIdentifier
10 | me.rel.YAJL
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | YAJL
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleSignature
18 | GABE
19 | CFBundleVersion
20 | 0.2.26
21 |
22 |
23 |
--------------------------------------------------------------------------------
/YAJL.framework/Versions/A/YAJL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quicksilver/1Password-Plugin/1473098683bd7987f5cd42f2255f6787c54b88ee/YAJL.framework/Versions/A/YAJL
--------------------------------------------------------------------------------
/YAJL.framework/Versions/Current:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/YAJL.framework/YAJL:
--------------------------------------------------------------------------------
1 | Versions/Current/YAJL
--------------------------------------------------------------------------------