[TxMt] Re: Registering images for dialogs

Jacob Carlborg doob at me.com
Thu Jul 14 19:33:53 UTC 2016


On 2016-07-14 13:52, Allan Odgaard wrote:

> The idea with the image registration is that you register a dictionary
> with /name/ → /path/ pairs and in your pop-up description you use the
> symbolic names.
>
> The advantage of this is that we will only create one |NSImage| per path
> and the popup menu definition can be simpler, i.e. using |symbol|
> instead of |/Users/«name»/Library/Application
> Support/TextMate/Managed/Bundles/«some
> bundle».tmbundle/Support/symbol.pdf| for every single menu item.

I find it hard to see how that's simpler. Rather I think it's more 
complicated, because you need to:

1. Make a separate call to the dialog command. This is not documented, 
at least not in the documentation for the popup Ruby method. The tests 
don't t even do this and in general look outdated. There's also no Ruby 
interface for this, as far as I can see. Well actually, the "complete" 
method does document the ":images" option to be a hash of image names to 
paths but it doesn't use that option at all, adding even more to the 
confusion

2. Setup the mapping of a symbolic name to a path

3. There also seems to be a risk of having conflicting names between 
different bundles and possible the application itself

When it comes to efficiency the register command already caches the 
NSImage objects using NSImage.setName/imageNamed, as far as I can see. 
So if the popup command just contained the same code as the register 
command the problem would be solved :). It would also make the dialog 
command simpler because the register command could be removed.

The only reason I see why a register command would be useful is to be 
able to call it once to register the images. But it's not possible to 
automatically run a command only once, as far as I know. Commands don't 
have state (unless you want to read/write to a file) so you can't check 
if you already registered the images.

(sorry for the rant).

-- 
/Jacob Carlborg



More information about the textmate mailing list