Skip to content

Commit

Permalink
Merge pull request #102 from ghutchis/add-app-and-qtplugins
Browse files Browse the repository at this point in the history
Add some descriptions of avogadroapp and qtplugins code as requested
  • Loading branch information
ghutchis authored Oct 28, 2024
2 parents 014aeed + 7134569 commit 8468118
Show file tree
Hide file tree
Showing 4 changed files with 160 additions and 4 deletions.
42 changes: 42 additions & 0 deletions source/develop/avogadroapp.md
Original file line number Diff line number Diff line change
@@ -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
2 changes: 2 additions & 0 deletions source/develop/classlist.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
:glob: true
:maxdepth: 1
avogadroapp
core
io
molequeue
qtgui
qtplugins
rendering
vtk
```
109 changes: 109 additions & 0 deletions source/develop/qtplugins.md
Original file line number Diff line number Diff line change
@@ -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**
11 changes: 7 additions & 4 deletions source/develop/structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 8468118

Please sign in to comment.