LabVIEW Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
tst

Supercharge Quick Drop - Turn QD keyboard shortcuts into first class citizens

Status: New

 

tl;dr  There's a summary at the bottom if this is too long for you.

 

 

Quick Drop is pretty useful when it comes to dropping things and the fact that it also gets items from the project is great.

What I don't like about QD, however, is the keyboard shortcuts. These allow you to perform custom actions in LV and the concept itself is great, but the implementation QD uses has some issues which other similar tools like the right-click framework and LabVIEW Speak don't have, such as the items in the following list.

The problems:

  • It requires you to remember keyboard combos to call the plugins. That's great as a secondary access mechanism, but is terrible as a main one for a few reasons:
    1. It is not discoverable.
    2. It requires you to remember key combos.
    3. It doesn't work if you want a longer list of macros which perform all kinds of useful operations, because you run out of available shortcuts.
    4. Likewise, you have shortcut collisions, because people want to use the same shortcut for different plugins, so you might say "Ctrl+T", and it will mean something else to the person you're talking to.
  • Setting options on the plugins is done by pressing the Shift key or other similar magic combos instead of having a clear representation in the user interface.


So, what can we do about it?

I think a good first step would be to stop thinking of these as "keyboard shortcuts". They should be thought of as custom actions or macros and they should simply appear in the list
along with the regular items, like so:

QD0.png


There are a few things to point out in this image:

  • The actions appear in the list using their full names and they have a glyph to set them apart from the other items.
  • The actions may (or may not) have a shortcut.
  • The actions may (or may not) have a keyboard shortcut (and there's no reason in principle why regular items can't have them too). This solves the existing problem of the shortcut limit - you only assign shortcuts to actions you access regularly, just like you can already do today with menu items.
  • There's a ring on the bottom which shows just the items, just the actions, or both. Ideally, the value of this ring would also be settable by other means (e.g. open QD using Ctrl+Shift+Space and the list only shows the actions or open QD when you have a selection and the list only shows the actions).

 

 

OK, so that's step one and it solves the first issue - the actions are discoverable, accessible and not limited in number.

 

Now step two - some of you may have noticed that the image has another new thing - there's an expand button on the right side.
Clicking that button will open this panel:

QD2.png


This area shows the details of the currently selected action and allows selecting options for it.

Here's what we see in this example:

 

  • A title.
  • A description.
  • An image.
  • In the settings area, I gave the "Build array of references" action an option - you can choose to align the Build Array node to the center, the top or the bottom of the references.

 

The panel should remember its last open setting between calls and when it's open, it should work asynchronously, so that it doesn't delay the operation of QD.
For the VIs which appear in the panel, there should be a standard template for loading and saving values, for showing titles and help data and for shutting down. If the VI fails to respond to the shutdown command within N ms, Quick Drop should proceed and not wait for it.

 

 


Of course, once we have this panel, the next logical step is to also have it show the help for standard items, similar to this idea:

QD3.png



 

 


So, to sum up:

  1. Custom actions should be in the list of Quick Drop items.
  2. Shortcuts for actions and items should be fully customizable. That means that you can still use keyboard shortcuts to call the actions, just like today.
  3. There should be a panel which allows customizing options for actions and show the help for regular items.

 


___________________
Try to take over the world!
12 Comments
fabric
Active Participant

A quick note regarding shortcuts in the listbox: I think a multicolumn listbox should be considered for better readability. Shortcuts and keyboard shortcuts could possibly even have their own columns.

--
Chris Virgona
tst
Knight of NI Knight of NI
Knight of NI

I agree that in general having the shortcuts nicely aligned would be nice, but there is one potential issue with it - setting the correct width on each column. You could either do it statically, but then you would run into issues with items with long names. Or you could do it dynamically, but then you might run into performance issues. You could simply limit the actual items in the list to ~100, which will cut down on the time needed to do this, but QD is relatively very performance sensitive - some people want it to react quickly every time.

 

You reminded me another thing which my images show - I have the line separators visible and the entire row highlighted, which I believe QD doesn't. I think that both make it more usable, so if we're changing things in the UI, I would do that as well.


___________________
Try to take over the world!
garrettmarsh
Member

Brilliant idea overall.

 

Another option for the multicolumn listbox approach is to wrap the text for longer items. Of course you still run up against some performance issues there. It would make row separators all the more necessary.

 

It would be great to have a single-key shortcut to show/hide the help pane in keeping with the spirit of QD. Can't imagine that would be too hard to add.

tst
Knight of NI Knight of NI
Knight of NI

Oh, and while we're at it, it would probably be useful if the function keys could also be defined as keyboard shortcuts (maybe including Ctrl and Shift as well, to add more options).

 

I guess that maybe F1 can be linked to the expand button, although I'm not sure if that's needed, as I expect most people will keep the panel either open or closed most of the time, based on their personal preference, so toggling its state won't be a very common operation. I'm assuming that if the panel is closed, QD can be slightly faster because it won't have to run the code for it.


___________________
Try to take over the world!
tst
Knight of NI Knight of NI
Knight of NI

Norm brought up a good point - this plugin system could be built in such a way that you can invoke it from any caller which uses the API, so you could invoke the same plugins from Quick Drop or from LV Speak or from a floating panel which is always open or any other option.


___________________
Try to take over the world!
pawhan11
Active Participant

Great idea !!!

James@Work
Member

This sounds very interesting.

 

Maybe I'm misunderstanding something or just flew right by the details when reading the description.

 

How would I start entering the name of a VI I wanted to insert, select it and then also use the QD Insert action to place it on the previously selected wire(s)?

 

This same question would apply to the QD Replace action.

 

Regards,

 

James

 

Tech Advisor - Automation
LabVIEW 5.0 - 2020
tst
Knight of NI Knight of NI
Knight of NI

> How would I start entering the name of a VI I wanted to insert, select it and then also use the QD Insert action to place it on the previously selected wire(s)?

 

I can't say I thought about all the details, but here are a couple of potential options:

 

  1. Actions that require additional info will pop up another dialog to get that info. In the case of something like an insert or replace this could be an issue, because it would require you to replicate the QD autocomplete functionality, but there are other cases where you might want other functionality, like the VI Server class renaming plugin, which would autocomplete the class names, so it makes some sense to move this to the plugin itself.
  2. QD will pass to the plugin both the text that was typed into the box and how the plugin was invoked. If the insert plugin was not invoked using a shortcut, it would display a dialog explaining that in order to use it you have to type in the name of the object you want to insert and then use the shortcut. Or it would do option 1.

 

P.S. If you want something like to happen, you should vote for the idea.


___________________
Try to take over the world!
Ajayvignesh_MV
Active Participant

This is a great idea and I'm looking for the ways to use overlapping keyboard shortcuts for QD.  Is any of these feature implemented or is part of open project in github or somewhere?

--

Thanks

Ajay.

crossrulz
Knight of NI

Ajay, then you need to give the idea a kudos.  The kudos count is the first metric NI sees.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5