pyrevitlabs / pyRevit

Rapid Application Development (RAD) Environment for Autodesk Revit®
http://wiki.pyrevitlabs.io
GNU General Public License v3.0
1.31k stars 334 forks source link

Multiselect from different groups returns only selections from one group #2286

Open Reese-Weingaertner opened 4 months ago

Reese-Weingaertner commented 4 months ago

✈ Pre-Flight checks

🐞 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

Reese-Weingaertner commented 4 months ago

If anyone can point me to where to start looking, I'd be happy to work on the change myself.

sanzoghenzo commented 4 months ago

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

Reese-Weingaertner commented 4 months ago

Sounds like a good idea @sanzoghenzo, thanks for your help. I'll start working on this.

onomou commented 1 month ago

See related discussion here: SelectFromList return_all not returning all