pref pane outlets

17 views
Skip to first unread message

Rob McBroom

unread,
Oct 4, 2014, 4:43:30 PM10/4/14
to quicksilver---development

I’m not sure when this started, but I was creating an new plug-in and can’t seem to connect the pref pane window to _window in the code.

I’m following these steps, which have always worked in the past.

http://projects.skurfer.com/QuicksilverPlug-inReference.mdown#preferences

The problem seems to have something to do with the File’s Owner class (WhateverPluginPrefPane) being a sub-class of QSPreferencePane.

If I open an existing project where this has been done before, the connection to _window is still there, but with an exclamation point. The tooltip says “RemoteHostsPrefPane does not have an outlet named _window”.

--
Rob McBroom
http://www.skurfer.com/

Patrick Robertson

unread,
Oct 5, 2014, 1:47:47 AM10/5/14
to quicksilver-...@googlegroups.com
I just added a pref .xib to the 1Password plugin, no problem.

Make sure that you’ve dragged ‘QSInterface.framework’ (from the appropriate /tmp/QS/build folder - debug if your scheme is set as Debug or Release if Release) intto the ‘Frameworks’ group in the file browser on the left, and then linked the plugin against it in the build settings.


--
You received this message because you are subscribed to the Google Groups "Quicksilver - Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quicksilver---deve...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Rob McBroom

unread,
Oct 5, 2014, 8:50:25 AM10/5/14
to quicksilver-...@googlegroups.com

On 5 Oct 2014, at 1:47, Patrick Robertson wrote:

Make sure that you’ve dragged ‘QSInterface.framework’ (from the appropriate /tmp/QS/build folder - debug if your scheme is set as Debug or Release if Release) intto the ‘Frameworks’ group in the file browser on the left, and then linked the plugin against it in the build settings.

That crossed my mind at dinner last night, but I didn’t get a chance to try it. That does the trick. Thanks! I wonder why it was never necessary before.

The good news is, adding the framework is much easier. I just added it in Xcode and it was automatically set to “Relative to Build Products” and it just referred to QSInterface.framework. So it will correctly follow the project between Debug and Release. (I used to have to open the project in TextMate to fix that because it would start as absolute, then switching it to relative would set the path to something like ../../../../../../blah.)

Speaking of the 1Password plug-in, I had to disable it because it was hanging the Catalog prefs when I tried to open them.

From the console:

2014/10/05 8:38:24.470 AM Quicksilver[94338]: *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1]
2014/10/05 8:38:24.472 AM Quicksilver[94338]: (
    0   CoreFoundation                      0x00007fff917b725c __exceptionPreprocess + 172
    1   libobjc.A.dylib                     0x00007fff8ee2ae75 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff916b6dd1 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 385
    3   CoreFoundation                      0x00007fff916ccad9 +[NSDictionary dictionaryWithObjects:forKeys:count:] + 57
    4   OnePassword                         0x000000010ae686df objc_unretainedPointer + 11117
    5   OnePassword                         0x000000010ae682e2 objc_unretainedPointer + 10096
    6   QSCore                              0x000000010ad11f7f -[QSRegistry getClassInstance:] + 330
    7   QSCore                              0x000000010ad118d0 -[QSRegistry instancesForTable:] + 348
    8   Quicksilver                         0x000000010abee7cd Quicksilver + 157645
    9   AppKit                              0x00007fff97da9b3f -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1223
    10  AppKit                              0x00007fff97e4de5c -[NSNib _instantiateNibWithExternalNameTable:] + 600
    11  AppKit                              0x00007fff97f7d482 -[NSNib instantiateNibWithOwner:topLevelObjects:] + 215
    12  QSInterface                         0x000000010ad99bb8 __32-[QSPreferencePane loadMainView]_block_invoke + 213
    13  QSInterface                         0x000000010ad99923 -[QSPreferencePane loadMainView] + 102
    14  Quicksilver                         0x000000010abee4b1 Quicksilver + 156849
    15  Quicksilver                         0x000000010abded3f Quicksilver + 93503
    16  Quicksilver                         0x000000010abdf767 Quicksilver + 96103
    17  Quicksilver                         0x000000010abdf05a Quicksilver + 94298
    18  Quicksilver                         0x000000010abdefe7 Quicksilver + 94183
    19  AppKit                              0x00007fff984f0099 -[NSToolbarButton sendAction:to:] + 75
    20  AppKit                              0x00007fff984f00e8 -[NSToolbarButton sendAction] + 65
    21  AppKit                              0x00007fff980a3f0c -[NSToolbarItemViewer mouseDown:] + 4897
    22  AppKit                              0x00007fff97fbfa58 -[NSWindow sendEvent:] + 11296
    23  QSEffects                           0x000000010acb5cf0 -[QSWindow sendEvent:] + 583
    24  AppKit                              0x00007fff97f5e5d4 -[NSApplication sendEvent:] + 2021
    25  Quicksilver                         0x000000010abeda16 Quicksilver + 154134
    26  AppKit                              0x00007fff97dae9f9 -[NSApplication run] + 646
    27  AppKit                              0x00007fff97d99783 NSApplicationMain + 940
    28  Quicksilver                         0x000000010abc9a94 Quicksilver + 6804
    29  ???                                 0x0000000000000001 0x0 + 1
)

The same *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]… can be seen in the plug-ins’s status when it tries to load.

Also, you should add my app’s bundle ID to related bundles: com.agilebits.onepassword4 (and maybe just include the icon in the project - I don’t know how you’re going to match all the possibilities otherwise).

Patrick Robertson

unread,
Oct 5, 2014, 12:32:30 PM10/5/14
to quicksilver-...@googlegroups.com
Glad you got it sorted :)

I think the problem is the fact that the Quicksilver prefix header (Quicksilver.pch) imports all the frameworks, but they’re not necessarily linked/included in the project.
Plugins probably shouldn’t use Quicksilver.pch, but we went down the *other* route (and removed all the explicit #import statements from plugin source files, remember…?!) not too long ago.
Aaah simple.

— thanks for the 1Password tip. I’ve pushed an update which hopefully fixes the problem.

On 4 Hyd 2014, at 21:43, Rob McBroom <mailin...@skurfer.com> wrote:

Rob McBroom

unread,
Oct 6, 2014, 12:04:49 AM10/6/14
to quicksilver-...@googlegroups.com

On 5 Oct 2014, at 12:32, Patrick Robertson wrote:

thanks for the 1Password tip. I’ve pushed an update which hopefully fixes the problem.

Yup. Doesn’t hang now. Thanks.

Though, I can’t use it. It can’t find my keychain and I no longer have an .agilekeychain file anywhere. The 3rd party integration creates a JSON file.

I should probably get it working for me and throw you a pull request. (Something I’ve been meaning to do for a while anyway.)

Reply all
Reply to author
Forward
0 new messages