User friendly data selection
Hello,
I need to make new tool. Math behind it is trivial but user interface/interaction is the challenge. I know about at least 4 different ways to do this, but I am looking for minimalistic, intuitive, elegant, ... solution as much up to date in today "iOS" world... May be someone can point me to something Igor can do and I am not aware of. Elegant and easy to use, quick and intuitive are the keywords, it seems impossible to get users read manuals...
I need to let user pick up to 10 specific data sets, let's call them sample1,.. sample5, and background1,...background5.
Data sets are represented by names of folders, so by (potentially longish) strings, so easy to put in list for pulldown menu or in text wave in listbox. The trouble is, there may be potentially hundreds of these folders (lines in the listbox or items in pulldown menu) - and this makes it complicated... I need to get these either as strings (string variables or in text wave).
What is the best way to let user select items from e.g., listbox, and place it in specific string variable or in specific location in text wave?
The most intuitive I thought about is drag-and-drop from listbox to something, but as far as I can say, Igor does not have drag-from-listbox-to-variable-or-different listbox option.
Option high on my list is listbox with right click menu and 10 options "copy to sample1", "copy to sample2", etc. This seems the most user friendly I could come up and I know how to make that one.
Other way is to add 10 popup menus (for each sample1, sample2... ), but then I have to find way for users to reduce number of items in the popup to something sensible. Can be done and I have done so, but gets complicated to use. I was just watching user doing it and it was painfully obvious that using string match or regular expressions to reduce displayed items in listbox is challenge (user with PhD and numerous publications).
I can add 10 buttons, each giving user modal data browser to pick data set from... Logical, but tedious for 10 choices.
Any other suggestion I should consider?
Sorry for being too long...
How about letting the user select folders directly inside the data browser and just have two buttons 'Load selection as background' and 'Load selection as sample', then grab the (up to) first 5 selections as string using GetBrowserSelection()? You could even create your own modal data browser for this very purpose with CreateBroswer/M, where you, for example, hide all waves, so the user has to select a folder. Read the help for CreateBrowser which contains example code you can start with. I hope that helps.
June 4, 2020 at 10:36 am - Permalink
I have some pretty well developed code for filtering listbox contents based on text matching. I don't know if that helps for your application, but I am happy with how it works. See it in action here.
May get some extra mileage by combining text filtering with sortable columns. Should be intuitive for most users.
June 4, 2020 at 10:56 am - Permalink
chozo's idea of using a modal data browser showing only data folders might work.
You might also try a 2 column list box with checkboxes in the left column that indicate that an item is selected instead of using the regular selection mechanism, which can be tricky if the number of selected items is large and they are not contiguous. Using checkboxes for selection might also make tony's ideas of filtering more feasible.
It is possible to sort of fake drag and drop in a listbox, at least within a single listbox. I believe that https://www.wavemetrics.com/project/ACL_CreateLayouts does that in the listbox on the right, allowing you to rearrange the thumbnails. You might be able to use a similar technique to fake dragging from one box to another, but it probably wouldn't be very user friendly.
Another similar approach is to have a list of possible selections on the right and list of selected objects on the right and a ">>" button that when clicked moves the selected items in the left list to the right list. That's similar to the drag and drop idea but much simpler to implement. An example of this is the Data->Rename dialog.
June 4, 2020 at 12:01 pm - Permalink
Thanks a lot! Many great suggestions to think about and play with. I'll test few options to see, which one works well and seems intuitive.
If you would know me, you would guess that I am thinking about raising to challenge and try to fake the drag-and-drop. Simply for the fun of it. Seems like well worth evening or two.
June 4, 2020 at 02:31 pm - Permalink
You can also make a listbox with all potential candiates. And allow the user to choose each element by context menu. Choosen entries are highlighted in different colors. And of course you need a legend for the colors. Requires IP8 probably.
June 4, 2020 at 03:45 pm - Permalink