[TxMt] tm_dialog/ib question

Allan Odgaard throw-away-1 at macromates.com
Tue Nov 14 23:22:49 UTC 2006


On 15. Nov 2006, at 00:10, Jay Soffian wrote:

> [...]
> I've almost got this working. I've setup an NSArrayController that  
> I'm populating via tm_dialog. I've bound the NSPopUpButtons's  
> contentValues to the NSArray Controller. However, whenever I edit  
> the text field it ends up updating the drop-down. Doh.

I don’t think there is any solution to that.

> Also, I want to give this window working Cancel/Okay buttons.
>
> Is this doable? Do I need to use IB Connections instead of bindings  
> to tie the pop-up to the text field?

The cancel button, you can connect to the window’s performClose: or  
similar, i.e. hold control down, click the cancel button and hold  
left mouse button down, drag the connection line to the window object  
in the instances window, now release the mouse button and select  
performClose: in the target / action tab of the inspector window.

For the Okay button, you can either do what is described here [1] or,  
if you have a recent version of the plug-in, for the Okay button bind  
the target to the NSController object with model key being  
‘controller’, then set selector to returnArgument: (the colon is  
important!).

You would then bind the argument also to the NSController, with the  
model key being that of the text being edited (or perhaps bind it to  
the array controller, and key being selected object or similar).

Note you can actually give it more than one argument, but you need to  
edit the selector name if you bind multiple arguments so that there  
is a «name»: for each argument in the name. Try open the New Project  
nib in the Xcode bundle to inspect the bindings there.

A nice thing about this approach is that one can bind many controls  
to the shared user defaults controller, then the value is stored in  
user defaults, and thus are sticky, and then bind these defaults  
values as arguments, so they will be available in the result of  
tm_dialog -- this is why the latest version of tm_dialog has an  
argument to set initial user defaults values.



[1] http://lists.macromates.com/pipermail/textmate/2006-October/ 
014364.html


More information about the textmate mailing list