Pick plugin - quick instance selection

development
studio
plugin
instance
plugingui

#1

If you’re anything like me, you often need to find things fast, and you don’t feel like digging through the Explorer window to find it.

That’s the motive behind this plugin, which gives you a simple search box where you can enter special rules to select things quickly and precisely:

Quick UI rundown: click the Pick button to open a textbox where you can type in a rule. Hit Enter in the textbox to select any matching instances (this also closes the textbox, unless you enable the Pin UI option - useful if you have it docked). Supports Studio themes!

So, what rules can you use to find items? I have a quick guide on Pastebin, or if you want more of an explanation, see below:

Name matching


Typing the name of an instance, without spaces, will match all instances with that name (case sensitive)


Names with spaces can be escaped with quotes.

Class matching


Putting a full stop ‘.’ before a name turns it into a class name, and will match instances which inherit from the given class name. Class matching can be combined with name matching by putting the class directly after the name, e.g. Baseplate.BasePart

Tag matching


You can match usign CollectionService tags in a similar way to classes, using hashes ‘#’ instead of full stops ‘.’

Combining names, classes and tags


To match by multiple things at the same time, start with the name, then add the class name and tag name after, in either order. The standard way of doing this is Name#Tag.Class, but Name.Class#Tag also works!

Children matching


You can select direct children using the arrow operator ‘>’. In the above example, Pick first matches all instances using the rule .BasePart, then matches the children of those instances with the rule .Decal. This has the effect of selecting all decals inside of baseparts.

Wildcards


Using the wildcard ‘*’ in place of an instance name matches all instances. The above example selects all instances which are children of Workspace.

Captures


If you want to capture a certain instance in a rule, you can surround the name/class/tag with braces ‘{ }’. This will perform the usual matching, but returns a different instance. The default behaviour is to capture the last child, so captures are useful if you only want to select instances which contain certain children, for example.

In the above example, Pick will match all BaseParts, then match any Decals inside them. Pick will then select all of the BaseParts which had Decals inside of them.

Combining rules


If one rule can’t describe your selection, combine multiple rules by separating them with commas. The results from the two matches will be combined.

The plugin is a lightweight UI wrapper around my own pre-existing Pick module, which I wrote a while back. It does the actual heavy lifting and parses the text into Lua, and matches the instances. The plugin provides the UI and connects the module to the Selection service.

Hopefully this plugin can save you some time while you develop, build or design UI!
Link here: https://www.roblox.com/library/2724083983/Pick-quick-instance-selection

This is my first plugin for the public, please leave some feedback below! :smiley:


#2

That looks awesome! Thanks for sharing, this seems pretty useful :slight_smile:

If you're looking for some extra features, I might have some questionable ideas...

First idea: Give it a hotkey so we don’t need to use the mouse AT ALL! Similar to Discord’s Ctrl+K or Vivaldi’s F2 for the quick command bars.

Second idea: In line with quick command bars, maybe show some results in a drop-down that can be navigated with the arrow keys? This is for situations with multiple matches, especially when you’re writing incomplete names. Pressing tab could also autocomplete the first item in the drop-down, too.

The second seems pretty big and it’s not super important so whatever. Probably a waste of time lmao


#3

Thanks! Those ideas look pretty neat too :stuck_out_tongue:

Sounds good to me! I’m not exactly sure how plugin actions work, but I thought you had to go to Customise Shortcuts to add keyboard shortcuts. If there’s a programmatic way of doing it let me know, I’ll add it!

This could be quite interesting, I might look at doing this sometime. I could also add in a history feature where you can use the arrow keys to go through past searches, too!


#4

Unfortunately the only way of making default keybinds is by using UserInputService. Plugin actions don’t have that functionality. But, you could prompt the user to manually set a hotkey when the plugin starts with a ok/dont-show-this-again popup. It wouldn’t actually set the hotkey but at least it’ll let the users know what to do to enable it – of course this would be using the plugin action system.


#5

This seems really useful! I’ll try it out tomorrow.


#6

Seems like a cool alternative to the alt+moving the mouse til it starts selecting individual parts in a model. Only disadvantage I can see is that it’ll still take some time for people who don’t change their part/models/unions names.


#7

I mainly designed it with scripters and UI designers in mind, but this could definitely be used for builders as a quicker alt select :slight_smile:


#8

Yes!! I’ll be using this! Thank you! :smile: