#15449 closed defect (fixed)

Spurious execution for solvent selectors

Reported by: Tony Schaefer Owned by: Eric Pettersen
Priority: normal Milestone:
Component: UI Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.19045
ChimeraX Version: 1.8rc202405150320 (2024-05-15 03:20:26 UTC)
Description
I'm not 100% sure this is a bug because I don't have much experience with adding menu options. I'm working on adding some selectors for common solvents to the select menu, but when I click on the menu entry it seems to trigger two selects (e.g. `select TMSCN` and `select tmscn`). The first is just the text on the menu action, and the second is the lowercase text of the menu action. I pretty much copy-pasted the code I wrote to add the substituent selectors, but those only trigger one select (exact same text that appears on the menu). 

For reference, this is the code I use to add substitents to the menu
```
        add_submenu = session.ui.main_window.add_select_submenu
        add_selector = session.ui.main_window.add_menu_selector
        substituent_menu = add_submenu(['Che&mistry'], 'Substituents')
        for sub in Substituent.list():
            if sub in ELEMENTS:
                continue
            if not sub[0].isalpha():
                continue
            if len(sub) > 1 and any(not (c.isalnum() or c in "+-") for c in sub[1:]):
                continue
            add_selector(substituent_menu, sub)
```

and this is the code I'm trying to use to add these solvents
```
        solvent_menu = add_submenu(['&Structure'], 'Solvents')
        for solvent in Geometry.list_solvents():
            if solvent in ELEMENTS:
                continue
            if not solvent[0].isalpha():
                continue
            if len(solvent) > 1 and any(not (c.isalnum() or c in "+-") for c in solvent[1:]):
                continue
            add_selector(solvent_menu, solvent)
```

attached are screen shots of select menu options for substituents and solvents

Log:
Startup Messages  
---  
notes | available bundle cache has not been initialized yet  
Database-fetch provider 'redo' in bundle Map specified unknown data format
'MTZ'  
  
['File'] Open DICOM Folder... <function create_menu_entry.<locals>.<lambda> at
0x0000015F0326DB20>  
['File'] &Fetch By ID... <function create_menu_entry.<locals>.<lambda> at
0x0000015F0326DC60>  
['File'] &Open... <function create_menu_entry.<locals>.<lambda> at
0x0000015F0326DD00>  
['File'] &Save... <function create_menu_entry.<locals>.<lambda> at
0x0000015F0326DDA0>  
['Che&mistry'] Substituents <PyQt6.QtWidgets.QMenu object at
0x0000015F032775B0>  
insertion_point None C6F5  
insertion_point None p-F-Ph  
insertion_point None PtBu2  
insertion_point None SMe  
insertion_point None test  
insertion_point None tri-iPr-Ph  
insertion_point None Ad  
insertion_point None BF2  
insertion_point None CCH  
insertion_point None CF3  
insertion_point None CH2Cl  
insertion_point None CH2F  
insertion_point None CH2OH  
insertion_point None CH3  
insertion_point None CHCH2  
insertion_point None CHCl2  
insertion_point None CHF2  
insertion_point None CHO  
insertion_point None CN  
insertion_point None COCH3  
insertion_point None CONH2  
insertion_point None COOCH3  
insertion_point None COOH  
insertion_point None Cy  
insertion_point None Et  
insertion_point None guanidino  
insertion_point None iPr  
insertion_point None Me  
insertion_point None Mes  
insertion_point None NH2  
insertion_point None NHCH3  
insertion_point None NHOH  
insertion_point None NO  
insertion_point None NO2  
insertion_point None OCF3  
insertion_point None OH  
insertion_point None OMe  
insertion_point None OPO3H2  
insertion_point None Ph  
insertion_point None PO3H2  
insertion_point None SCH3  
insertion_point None SH  
insertion_point None SiF3  
insertion_point None SiH3  
insertion_point None SuperMes  
insertion_point None tBu  
['&Structure'] Solvents <PyQt6.QtWidgets.QMenu object at 0x0000015F08D91120>  
insertion_point None TMSCN  
insertion_point None acetone  
insertion_point None acetonitrile  
insertion_point None benzene  
insertion_point None CCl4  
insertion_point None chloroform  
insertion_point None tBuOH  
insertion_point None water  
[] &Structure <PyQt6.QtWidgets.QMenu object at 0x0000015F08D911B0>  
['Che&mistry'] Shape <PyQt6.QtWidgets.QMenu object at 0x0000015F08D91A20>  
insertion_point None linear  
insertion_point None bent  
insertion_point None planar  
insertion_point None t-shaped  
insertion_point None trigonal planar  
insertion_point None tetrahedral  
insertion_point None sawhorse  
insertion_point None seesaw  
insertion_point None square planar  
insertion_point None trigonal pyramidal  
insertion_point None trigonal bipyramidal  
insertion_point None square pyramidal  
insertion_point None pentagonal  
insertion_point None octahedral  
insertion_point None hexagonal  
insertion_point None trigonal prismatic  
insertion_point None pentagonal pyramidal  
insertion_point None capped octahedral  
insertion_point None capped trigonal prismatic  
insertion_point None heptagonal  
insertion_point None hexagonal pyramidal  
insertion_point None pentagonal bipyramidal  
insertion_point None biaugmented trigonal prismatic  
insertion_point None cubic  
insertion_point None elongated trigonal bipyramidal  
insertion_point None hexagonal bipyramidal  
insertion_point None heptagonal pyramidal  
insertion_point None octagonal  
insertion_point None square antiprismatic  
insertion_point None trigonal dodecahedral  
insertion_point None capped cube  
insertion_point None capped square antiprismatic  
insertion_point None enneagonal  
insertion_point None hula-hoop  
insertion_point None tridiminished icosahedral  
insertion_point None muffin  
insertion_point None octagonal pyramidal  
insertion_point None tricapped trigonal prismatic  
[] &Chains <PyQt6.QtWidgets.QMenu object at 0x0000015F08D93370>  
['Che&mistry'] &Element <PyQt6.QtWidgets.QMenu object at 0x0000015F08D936D0>  
['Che&mistry', '&Element'] Other <PyQt6.QtWidgets.QMenu object at
0x0000015F08D93AC0>  
['Che&mistry', '&Element', 'Other'] Ac-Be <PyQt6.QtWidgets.QMenu object at
0x0000015F08D93B50>  
['Che&mistry', '&Element', 'Other'] Bh-Cm <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB0280>  
['Che&mistry', '&Element', 'Other'] Cn-Es <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB0940>  
['Che&mistry', '&Element', 'Other'] Eu-H <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB0F70>  
['Che&mistry', '&Element', 'Other'] He-Kr <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB15A0>  
['Che&mistry', '&Element', 'Other'] La-Na <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB1BD0>  
['Che&mistry', '&Element', 'Other'] Nb-Pa <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB2290>  
['Che&mistry', '&Element', 'Other'] Pb-Re <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB28C0>  
['Che&mistry', '&Element', 'Other'] Rf-Sg <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB2EF0>  
['Che&mistry', '&Element', 'Other'] Si-Tl <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB3520>  
['Che&mistry', '&Element', 'Other'] Tm-Zr <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB3BE0>  
['Che&mistry'] &IDATM Type <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB81F0>  
[] &Residues <PyQt6.QtWidgets.QMenu object at 0x0000015F08DB97E0>  
[] &Structure <PyQt6.QtWidgets.QMenu object at 0x0000015F08D911B0>  
['&Structure'] &Secondary Structure <PyQt6.QtWidgets.QMenu object at
0x0000015F08DB9AB0>  
['Help'] Report a Bug <function
add_help_menu_entry.<locals>.main_window_created.<locals>.<lambda> at
0x0000015F08DC0D60>  
['Che&mistry'] &Functional Group <PyQt6.QtWidgets.QMenu object at
0x0000015F08DBA7A0>  
insertion_point None Acyl Halide  
insertion_point None Aldehyde  
insertion_point None Amide  
['Che&mistry', '&Functional Group'] &Amine <PyQt6.QtWidgets.QMenu object at
0x0000015F08DBA9E0>  
insertion_point None All  
insertion_point None Aliphatic  
insertion_point None Aliphatic Primary  
insertion_point None Aliphatic Secondary  
insertion_point None Aliphatic Tertiary  
insertion_point None Aliphatic Quaternary  
insertion_point None Aromatic  
insertion_point None Aromatic Primary  
insertion_point None Aromatic Secondary  
insertion_point None Aromatic Tertiary  
insertion_point None Aromatic Quaternary  
insertion_point None Aromatic Ring  
insertion_point None Carbonyl  
insertion_point None Carboxylate  
insertion_point None Disulfide  
insertion_point None Ester  
insertion_point None Ether O  
insertion_point None Halide  
insertion_point None Hydroxyl  
insertion_point None Imine  
insertion_point None Ketone  
insertion_point None Methyl  
insertion_point None Nitrile  
insertion_point None Nitro  
['Che&mistry', '&Functional Group'] &Nucleoside Base <PyQt6.QtWidgets.QMenu
object at 0x0000015F08DBB7F0>  
insertion_point None Adenine  
insertion_point None Cytosine  
insertion_point None Guanine  
insertion_point None Thymine  
insertion_point None Uracil  
insertion_point None All the Above  
insertion_point None Phosphate  
insertion_point None Phosphinyl  
insertion_point None Phosphonate  
insertion_point None Purines  
insertion_point None Pyrimidines  
insertion_point None Ribose  
insertion_point None Sulfate  
insertion_point None Sulfonamide  
insertion_point None Sulfonate  
insertion_point None Sulfone  
insertion_point None Sulfonyl  
insertion_point None Thiocarbonyl  
insertion_point None Thioether  
insertion_point None Thiol  
[] Che&mistry <PyQt6.QtWidgets.QMenu object at 0x0000015F03277640>  
insertion_point None Protein  
insertion_point None Nucleic Acid  

> cd C:\Users\normn/Desktop

Current working directory is: C:\Users\normn\Desktop  

> graphics selection width 2

UCSF ChimeraX version: 1.8rc202405150320 (2024-05-15)  
© 2016-2024 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> ui tool show Shell

0.00s - Debugger warning: It seems that frozen modules are being used, which
may  
0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off  
0.00s - to python to disable frozen modules.  
0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to
disable this validation.  
OBJECT QAction::unnamed  
SIGNALS OUT  
signal: destroyed(QObject*)  
\--> PyQtSlotProxy::unnamed disable()  
signal: triggered(bool)  
\--> PyQtSlotProxy::unnamed unislot()  
\--> QMenu::Substituents _q_actionTriggered()  
signal: hovered()  
\--> QMenu::Substituents _q_actionHovered()  
SIGNALS IN  
<None>  
OBJECT QAction::unnamed  
SIGNALS OUT  
signal: destroyed(QObject*)  
\--> PyQtSlotProxy::unnamed disable()  
signal: triggered(bool)  
\--> PyQtSlotProxy::unnamed unislot()  
\--> QMenu::Solvents _q_actionTriggered()  
signal: hovered()  
\--> QMenu::Solvents _q_actionHovered()  
SIGNALS IN  
<None>  

> open C:\Users\normn\Downloads\angle_data\traj_65710259.xyz format xyz

opened traj_65710259.xyz as an XYZ coordinate file movie  

> select TMSCN

2250 atoms, 2100 bonds, 1 residue, 1 model selected  

> select tmscn

Expected an objects specifier or a keyword  

> select clear

> select CN

300 atoms, 150 bonds, 1 residue, 1 model selected  

> ui tool show Shell

OBJECT QAction::unnamed  
SIGNALS OUT  
signal: destroyed(QObject*)  
\--> PyQtMonitor::unnamed on_destroyed(QObject*)  
signal: changed()  
<functor or function pointer>  
signal: triggered(bool)  
\--> QMenu::Select _q_actionTriggered()  
signal: hovered()  
\--> QMenu::Select _q_actionHovered()  
SIGNALS IN  
<\-- QAction::unnamed <unknown>  




OpenGL version: 3.3.0 NVIDIA 551.61
OpenGL renderer: NVIDIA GeForce RTX 2070/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.11.4
Locale: en_US.cp1252
Qt version: PyQt6 6.6.1, Qt 6.6.1
Qt runtime version: 6.6.3
Qt platform: windows

Installed Packages:
    alabaster: 0.7.16
    appdirs: 1.4.4
    argcomplete: 3.3.0
    asttokens: 2.4.1
    attrs: 23.2.0
    Babel: 2.15.0
    basis-set-exchange: 0.10
    beautifulsoup4: 4.12.3
    blockdiag: 3.0.0
    blosc2: 2.0.0
    build: 1.2.1
    certifi: 2024.2.2
    cftime: 1.6.3
    charset-normalizer: 3.3.2
    ChimeraX-AddCharge: 1.5.17
    ChimeraX-AddH: 2.2.6
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.5
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.12.7
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.1.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.57
    ChimeraX-AtomicLibrary: 14.0.4
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.4
    ChimeraX-BasicActions: 1.1.2
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.4.6
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.1
    ChimeraX-BuildStructure: 2.12.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.2.4
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.4
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.4
    ChimeraX-ChemGroup: 2.0.1
    ChimeraX-Clashes: 2.2.4
    ChimeraX-clix: 0.1.5
    ChimeraX-ColorActions: 1.0.4
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.6
    ChimeraX-CommandLine: 1.2.5
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.8rc202405150320
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.3
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.3
    ChimeraX-Dicom: 1.2.1
    ChimeraX-DiffPlot: 1.0
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.1.3
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ESMFold: 1.0
    ChimeraX-FileHistory: 1.0.1
    ChimeraX-FunctionKey: 1.0.1
    ChimeraX-Geometry: 1.3
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1.1
    ChimeraX-Hbonds: 2.4
    ChimeraX-Help: 1.2.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-Label: 1.1.10
    ChimeraX-ListInfo: 1.2.2
    ChimeraX-Log: 1.1.6
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.1
    ChimeraX-Map: 1.2
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0.1
    ChimeraX-MapFilter: 2.0.1
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1.1
    ChimeraX-Markers: 1.0.1
    ChimeraX-Mask: 1.0.2
    ChimeraX-MatchMaker: 2.1.3
    ChimeraX-MCopy: 1.0
    ChimeraX-MDcrds: 2.7
    ChimeraX-MedicalToolbar: 1.0.2
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.14.1
    ChimeraX-MMTF: 2.2
    ChimeraX-Modeller: 1.5.16
    ChimeraX-ModelPanel: 1.5
    ChimeraX-ModelSeries: 1.0.1
    ChimeraX-Mol2: 2.0.3
    ChimeraX-Mole: 1.0
    ChimeraX-Morph: 1.0.2
    ChimeraX-MouseModes: 1.2
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nifti: 1.2
    ChimeraX-NMRSTAR: 1.0.2
    ChimeraX-NRRD: 1.2
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.13.4
    ChimeraX-PDB: 2.7.5
    ChimeraX-PDBBio: 1.0.1
    ChimeraX-PDBLibrary: 1.0.4
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1.1
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.4.1
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.2
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 4.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0.2
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 1.3.4
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.11.2
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.1.1
    ChimeraX-ShowSequences: 1.0.3
    ChimeraX-SideView: 1.0.1
    ChimeraX-Smiles: 2.1.2
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.16.4
    ChimeraX-STL: 1.0.1
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.2.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0.1
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.5
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1.2
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.39
    ChimeraX-uniprot: 2.3
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.4.1
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0.1
    ChimeraX-vrml: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0.2
    ChimeraX-WebServices: 1.1.4
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.2
    comtypes: 1.4.1
    contourpy: 1.2.1
    cxservices: 1.2.2
    cycler: 0.12.1
    Cython: 3.0.10
    debugpy: 1.8.1
    decorator: 5.1.1
    docutils: 0.20.1
    executing: 2.0.1
    filelock: 3.13.4
    fonttools: 4.51.0
    funcparserlib: 2.0.0a0
    glfw: 2.7.0
    grako: 3.16.5
    h5py: 3.11.0
    html2text: 2024.2.26
    idna: 3.7
    ihm: 1.0
    imagecodecs: 2024.1.1
    imagesize: 1.4.1
    ipykernel: 6.29.2
    ipython: 8.21.0
    ipywidgets: 8.1.2
    jedi: 0.19.1
    jinja2: 3.1.4
    jsonschema: 4.22.0
    jsonschema-specifications: 2023.12.1
    jupyter-client: 8.6.0
    jupyter-core: 5.7.2
    jupyterlab-widgets: 3.0.10
    kiwisolver: 1.4.5
    line-profiler: 4.1.2
    lxml: 5.2.1
    lz4: 4.3.3
    MarkupSafe: 2.1.5
    matplotlib: 3.8.4
    matplotlib-inline: 0.1.7
    msgpack: 1.0.8
    nest-asyncio: 1.6.0
    netCDF4: 1.6.5
    networkx: 3.3
    nibabel: 5.2.0
    nptyping: 2.5.0
    numexpr: 2.10.0
    numpy: 1.26.4
    openvr: 1.26.701
    packaging: 24.0
    ParmEd: 4.2.2
    parso: 0.8.4
    pep517: 0.13.1
    pillow: 10.3.0
    pip: 24.0
    pkginfo: 1.10.0
    platformdirs: 4.2.2
    prompt-toolkit: 3.0.43
    psutil: 5.9.8
    pure-eval: 0.2.2
    py-cpuinfo: 9.0.0
    pycollada: 0.8
    pydicom: 2.4.4
    pygments: 2.17.2
    pynmrstar: 3.3.4
    pynrrd: 1.0.0
    PyOpenGL: 3.1.7
    PyOpenGL-accelerate: 3.1.7
    pyopenxr: 1.0.3401
    pyparsing: 3.1.2
    pyproject-hooks: 1.1.0
    PyQt6-commercial: 6.6.1
    PyQt6-Qt6: 6.6.3
    PyQt6-sip: 13.6.0
    PyQt6-WebEngine-commercial: 6.6.0
    PyQt6-WebEngine-Qt6: 6.6.3
    python-dateutil: 2.9.0.post0
    pytz: 2024.1
    pywin32: 306
    pyzmq: 26.0.3
    qtconsole: 5.5.1
    QtPy: 2.4.1
    RandomWords: 0.4.0
    referencing: 0.35.1
    regex: 2024.5.15
    requests: 2.31.0
    rpds-py: 0.18.1
    scipy: 1.13.0
    Send2Trash: 1.8.3
    SEQCROW: 1.8.9a2
    setuptools: 69.5.1
    sfftk-rw: 0.8.1
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    soupsieve: 2.5
    sphinx: 7.2.6
    sphinx-autodoc-typehints: 2.0.1
    sphinxcontrib-applehelp: 1.0.8
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.6
    sphinxcontrib-htmlhelp: 2.0.5
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.7
    sphinxcontrib-serializinghtml: 1.1.10
    stack-data: 0.6.3
    superqt: 0.6.3
    tables: 3.8.0
    tcia-utils: 1.5.1
    tifffile: 2024.1.30
    tinyarray: 1.2.4
    tornado: 6.4
    traitlets: 5.14.2
    typing-extensions: 4.11.0
    tzdata: 2024.1
    Unidecode: 1.3.8
    urllib3: 2.2.1
    wcwidth: 0.2.13
    webcolors: 1.13
    wheel: 0.43.0
    wheel-filename: 1.4.1
    widgetsnbextension: 4.0.10
    WMI: 1.5.1
File attachment: select menus.zip

select menus.zip

Attachments (1)

select menus.zip (32.7 KB ) - added by Tony Schaefer 17 months ago.
Added by email2trac

Download all attachments as: .zip

Change History (6)

by Tony Schaefer, 17 months ago

Attachment: select menus.zip added

Added by email2trac

comment:1 by Eric Pettersen, 17 months ago

Component: UnassignedUI
Owner: set to Eric Pettersen
Platform: all
Project: ChimeraX
Status: newaccepted
Summary: ChimeraX bug report submissionSpurious execution for solvent selectors

comment:2 by Eric Pettersen, 17 months ago

Does this only happen for TMSCN or for all the solvents?

comment:3 by Tony Schaefer, 17 months ago

It happens for all the solvents in the menu. I did test moving them to
"Chemistry" instead of "Structure" and it only fires one select command. I
also found some potentially relevant code in chimerax.atomic.selectors

```

    parent_menus = ["&Structure"]
    select_structure_menu = mw.add_select_submenu(parent_menus[:-1],
parent_menus[-1])
    ...code adding stuff to the structure menu...
    select_structure_menu.triggered.connect(lambda act, mw=mw:
        mw.select_by_mode(sel_text_remapping.get(act.text(),
act.text()).lower().replace(' ', '-')))
```

Would the triggered signal there apply to all submenus?

Best,

Tony

On Thu, Jun 20, 2024 at 8:20 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
wrote:

>
>

comment:4 by Eric Pettersen, 17 months ago

I see. I need to modify atomic to itself use add_menu_selector so that outside additions to the Structure submenu don't get this "double selection" behavior.

comment:5 by Eric Pettersen, 17 months ago

Resolution: fixed
Status: acceptedclosed

Have updated the atomic code to use add_menu_selector(). Change will be in tomorrow's daily build, and in the 1.8.1 release if we wind up making one.

Fix: https://github.com/RBVI/ChimeraX/commit/d0b58f81854cd17f29f9e4cd5be7117fcd711aab

Note: See TracTickets for help on using tickets.