Multiselect from different groups returns only selections from one group
✈ Pre-Flight checks
- [X] I don't have SentinelOne antivirus installed (see above for the solution)
- [X] I have searched in the issues (open and closed) but couldn't find a similar issue
- [X] I have searched in the pyRevit Forum for similar issues
- [X] I already followed the installation troubleshooting guide thoroughly
- [X] I am using the latest pyRevit Version
🐞 Describe the bug
Unsure if this is a bug or intended -- so apologies if this is in the wrong place. I think it could be improved regardless.
When using forms.SelectFromList with a dict() input and setting multiselect=True, the user can make multiple selections from different groups, but only items in the group currently open when clicking the button will be output.
⌨ Error/Debug Message
Behavior is unexpected but no error / exception is raised.
♻️ To Reproduce
pseudocode to reproduce:
categories = { "one", ['a', 'b', 'c'], "two", ['d', 'e', 'f']} selected = forms.SelectFromList.show(categories, multiselect=True) --- running code : user checks 'a' from "one", changes categories and selects 'd' from "two", then submits output: selected = ['d'] # selection of 'a' is missing, even though it was checked when form was closed
⏲️ Expected behavior
The expected behavior from the above example would be to return ['a', 'd']
🖥️ Hardware and Software Setup (please complete the following information)
==> Registered Clones (full git repos) ==> Registered Clones (deployed from archive/image) master | Deploy: "basepublic" | Branch: "master" | Version: "4.8.16.24121+2117" | Path: "C:\Users\Cathy\AppData\Roaming\pyRevit-Master" ==> Attachments master | Product: "Autodesk Revit 2021" | Engine: DEFAULT (2711) | Path: "C:\Users\Cathy\AppData\Roaming\pyRevit-Master" ==> Installed Extensions EF-Tools | Type: UIExtension | Repo: "https://github.com/ErikFrits/EF-Tools.git" | Installed: "C:\Users\Cathy\Documents\RevitTools\EF-Tools.extension" GuideTools | Type: Unknown | Repo: "" | Installed: "C:\Users\Cathy\Documents\RevitTools\GUIDE-Tools\GuideTools.extension" GuideTools | Type: Unknown | Repo: "" | Installed: "C:\Users\Cathy\Documents\RevitTools\GuideTools.extension" ==> Default Extension Search Path C:\Users\Cathy\AppData\Roaming\pyRevit\Extensions ==> Extension Search Paths C:\Users\Cathy\Documents\RevitTools\GUIDE-Tools C:\Users\Cathy\Documents\RevitTools ==> Extension Sources - Default https://github.com/pyrevitlabs/pyRevit/raw/master/extensions/extensions.json ==> Extension Sources - Additional ==> Installed Revits Autodesk Revit 2021 | Version: 21.1.21.45 | Build: 20201116_1100(x64) | Language: 1033 | Path: "D:\Program Files\Autodesk\Revit 2021\" ==> Running Revit Instances Error: Object reference not set to an instance of an object. Run with "--debug" option to see debug messages
Additional context
No response
If anyone can point me to where to start looking, I'd be happy to work on the change myself.
Hi @Reese-Weingaertner, thanks for reporting the issue.
I believe this is the intended original behavior, so if you want to modify it, I propose to handle it via an option like results_from_all_group that defaults to False, so that we keep retrocompatibility.
The method that returns the selected object is this: https://github.com/pyrevitlabs/pyRevit/blob/f9fa0d296386d548e198324dd752fb7fb5cd7b58/pyrevitlib/pyrevit/forms/init.py#L1054
Sounds like a good idea @sanzoghenzo, thanks for your help. I'll start working on this.
See related discussion here: SelectFromList return_all not returning all
@Reese-Weingaertner The expected behaviour is now implemented !