From 7134569a4b064bdcbffbb5640a04dc5fee5695d9 Mon Sep 17 00:00:00 2001 From: Geoff Hutchison Date: Sun, 27 Oct 2024 23:37:15 -0400 Subject: [PATCH] Add some descriptions of avogadroapp and qtplugins code as requested --- source/develop/avogadroapp.md | 42 +++++++++++++ source/develop/classlist.md | 2 + source/develop/qtplugins.md | 109 ++++++++++++++++++++++++++++++++++ source/develop/structure.md | 11 ++-- 4 files changed, 160 insertions(+), 4 deletions(-) create mode 100644 source/develop/avogadroapp.md create mode 100644 source/develop/qtplugins.md diff --git a/source/develop/avogadroapp.md b/source/develop/avogadroapp.md new file mode 100644 index 00000000..7d7dac9e --- /dev/null +++ b/source/develop/avogadroapp.md @@ -0,0 +1,42 @@ +(develop-avogadroapp)= + +# Avogadro App + +The `avogadroapp` project provides a fairly thin set of classes +around the `avogadrolibs` core. Among other things, it provides +scripts for bundling the desktop app on MacOS and Windows, +as well as code to open / save files, load language translations, +the about dialog, etc. + +`aboutdialog` +: Displays the about dialog, including some versioning + +`application` +: A minimal class mainly to handle `FileOpen` events from the operating system, e.g. to open files on launch + +`avogadro` +: The main command-line program. Mostly handles initialization, including loading translations and the OpenGL context + +`backgroundfileformat` +: Code for opening / saving files in a background thread to retain interactivity + +`mainwindow` +: The main interface class. Handles loading tools, render types, etc. Most changes for `avogadroapp` probably involve this code. + +`menubuilder` +: Code to load and sort the menu items from `avogadroapp` and plugin scripts + +`renderingdialog` +: A settings dialog for various rendering options + +`rpclistener` +: Code to handle [Remote Procedure Calls (RPC)](rpc) from external scripts or programs + +`tdxcontroller` +: Contributed code to handle the 3DConnexion SpaceMouse device. + +`tooltipfilter` +: A workaround to ensure tool buttons have tooltips + +`viewfactory` +: Code to create multiple views on the same molecule diff --git a/source/develop/classlist.md b/source/develop/classlist.md index fd6e50ea..ed7fb133 100644 --- a/source/develop/classlist.md +++ b/source/develop/classlist.md @@ -6,10 +6,12 @@ :glob: true :maxdepth: 1 +avogadroapp core io molequeue qtgui +qtplugins rendering vtk ``` diff --git a/source/develop/qtplugins.md b/source/develop/qtplugins.md new file mode 100644 index 00000000..7c0cf90a --- /dev/null +++ b/source/develop/qtplugins.md @@ -0,0 +1,109 @@ +(develop-qtplugins)= + +# Avogadro::QtPlugins + +There are a wide variety of plugins in separate directories, providing +tools, render types, and commands. Some may provide more than one of these +for full functionality (e.g., symmetry perception includes both a command and a render type). + +What follows is a list of core plugins and brief descriptions. A few plugins are listed in multiple places: + +## Tools + +- **aligntool** - align molecule to a frame of reference +- **bondcentrictool** - bond centric manipulation (length, angle, dihedral) +- **editor** - freehand drawing of atoms and bonds +- **label** - edit atom labels (also a render type) +- **manipulator** - move and rotate atoms and selections +- **measuretool** - measure bond lengths, angles, and dihedrals +- **navigator** - move the camera view +- **playertool** - play animations / trajectories +- **selectiontool** - select atoms individually or in a rectangle +- **templatetool** - insert ligands, functional groups, and metal geometries + +## Render Types + +- **ballandstick** - the default ball-and-stick render type +- **cartoons** - protein backbone and cartoon renderings +- **closecontacts** - close contacts between atoms +- **dipole** - dipole moment +- **force** - forces on atoms (from vibrations or molecular dynamics) +- **label** - atom and other labels - also a tool +- **licorice** - stick or licorice rendering +- **noncovalent** - hydrogen, chalcogen bonds and other non-covalent interactions +- **meshes** - surfaces, orbitals, etc. +- **overlayaxes** - reference axes +- **qtaim** - QTAIM rendering (critical points, etc.), also a command +- **symmetry** - rendering of symmetry elements, also a command +- **vanderwaals** - van der Waals spheres +- **wireframe** - wireframe line rendering + +## Main Commands + +- **applycolors** - Apply colors to atoms (e.g., by partial charge, etc.) +- **bonding** - Assign bonds and bond orders, break bonds +- **coordinateeditor** - Edit, copy and paste atoms and 3D coordinates +- **copypaste** - Cut, copy and paste commands +- **crystal** - Commands for handling basic crystal structure properties +- **focus** - Focus and unfocus the view on a selection +- **forcefield** - Optimize and run force field calculations, including via scripts +- **hydrogens** - Add, remove, and adjust hydrogen atoms +- **insertdna** - Insert DNA fragments +- **insertfragment** - Insert molecules +- **lineformatinput** - Insert from SMILES or InChI line formats +- **molecularproperties** - Molecular property dialogs +- **openbabel** - Open Babel commands, including file formats, force fields, charges, etc. +- **propertytables** - Atom, bond, angle, and torsion property spreadsheets +- **select** - Selection commands +- **spacegroup** - Handle filling and standardizing the unit cell based on space groups +- **surfaces** - Generate molecular surfaces and orbitals +- **symmetry** - Perceive molecular symmetry and symmetrize coordinates +- **vibrations** - Animate vibrations + +## Script Commands + +- **commandscripts** - Add menu commands from Python scripts +- **configurepython** - Configure the Python environment to use for scripts +- **forcefield** - Optimize and run force field calculations, including via scripts +- **plugindownloader** - Download and install Python scripts +- **quantuminput** - Use Python scripts for many quantum chemical input generators (e.g., Orca, Gaussian, Q-Chem, etc.) +- **scriptcharges** - Assign atomic partial charges using Python scripts (e.g., from `xtb` or `antechamber`) +- **scriptfileformats** - Import various file formats using Python scripts + +## Input Generator Commands + +- **apbs** - Input for the APBS program +- **cp2kinput** - Input for CP2K +- **gamessinput** - Input for GAMESS-US +- **lammpsinput** - Input for LAMMPS +- **openmminput** - Input for OpenMM simulations +- **quantuminput** - Use Python scripts for many quantum chemical input generators (e.g., Orca, Gaussian, Q-Chem, etc.) + +## Import Commands + +- **fetchpdb** - Fetch molecules from the Protein Data Bank (PDB) +- **importpqr** - Import molecules from the Pitt Quantum Repository +- **networkdatabases** - Fetch molecules by name from the NIH Chemical Resolver + +## Export Commands + +- **3dmol** - Export the current view for 3dmol.js rendering in a webpage +- **ply** - Export a 3D PLY format file of the current view +- **povray** - Export a POV-Ray scene of the current view +- **svg** - Export a SVG render of the current image +- **vrml** - Export a VRML / WRL file of the current view + +## Plotting Commands + +- **spectra** - plot vibrational (IR, Raman), electronic (UV), NMR and other computed spectra +- **plotpdf** - plot the probability distribution function (PDF) +- **plotrmsd** - plot RMSD across multiple coordinate sets (e.g., in an MD trajectory) +- **plotxrd** - plot simulated x-ray diffraction patterns from a crystal structure + +## Miscellaneous + +- **centroid** +- **coloropacitymap** +- **customelements** +- **resetview** +- **yaehmop** diff --git a/source/develop/structure.md b/source/develop/structure.md index baca522f..3cfdf161 100644 --- a/source/develop/structure.md +++ b/source/develop/structure.md @@ -13,17 +13,20 @@ In practice, most functionality and features are provided by `[avogadrolibs](htt The main project uses various other Open Chemistry modules to function. -[avogadro-i18n](https://github.com/OpenChemistry/) +[avogadroapp](https://github.com/OpenChemistry/avogadroapp) +: Code to handle [the desktop app events and interface](develop-avogadroapp) + +[avogadro-i18n](https://github.com/OpenChemistry/avogadro-i18n) : Language translations and localization handled through [Weblate](https://hosted.weblate.org/engage/avogadro/) -[avogenerators](https://github.com/OpenChemistry/) +[avogenerators](https://github.com/OpenChemistry/avogenerators) : Scripts providing input generator dialogs for various computational packages such as Gaussian, Orca, etc. -[crystals](https://github.com/OpenChemistry/) +[crystals](https://github.com/OpenChemistry/crystals) : Example crystal structures provided through File ⇒ Import ⇒ Crystal [fragments](https://github.com/OpenChemistry/fragments) : Common inorganic ligands and functional groups provided through the Template Tool -[molecules](https://github.com/OpenChemistry/) +[molecules](https://github.com/OpenChemistry/molecules) : Common molecules provided through Build ⇒ Insert ⇒ Molecule