| 1 | /*
 | 
|---|
| 2 |  * Project: MoleCuilder
 | 
|---|
| 3 |  * Description: creates and alters molecular systems
 | 
|---|
| 4 |  * Copyright (C)  2010 University of Bonn. All rights reserved.
 | 
|---|
| 5 |  * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
 | 
|---|
| 6 |  */
 | 
|---|
| 7 | 
 | 
|---|
| 8 | /**
 | 
|---|
| 9 |  * \file graphical.dox
 | 
|---|
| 10 |  *
 | 
|---|
| 11 |  * Created on: Oct 31, 2011
 | 
|---|
| 12 |  *    Author: heber
 | 
|---|
| 13 |  */
 | 
|---|
| 14 | 
 | 
|---|
| 15 | /**
 | 
|---|
| 16 |  * \page userinterfaces-graphical Graphical User Interface
 | 
|---|
| 17 |  *
 | 
|---|
| 18 |  * The GUI is based on Qt4. It uses Qt3D for displaying the GlWorldView and
 | 
|---|
| 19 |  * allowing for easy selecting of atoms and molecules.
 | 
|---|
| 20 |  *
 | 
|---|
| 21 |  * The GUI consists of the following parts:
 | 
|---|
| 22 |  * - a menu created in a likewise as the one for the \ref textmenu.
 | 
|---|
| 23 |  * - a world view, implemented in GLWorldView, displaying atoms and bonds
 | 
|---|
| 24 |  *   and allowing for selecting them.
 | 
|---|
| 25 |  * - a tab widget on the right with hover info and a list of shapes.
 | 
|---|
| 26 |  * - a tab widget below the world view enlisting molecules, elements, fragments,
 | 
|---|
| 27 |  *   and homologies.
 | 
|---|
| 28 |  *
 | 
|---|
| 29 |  *
 | 
|---|
| 30 |  * \section userinterfaces-graphical-query Queries in the graphical interface.
 | 
|---|
| 31 |  *
 | 
|---|
| 32 |  * As all Action's always instantiate a Dialog which behaves differently for
 | 
|---|
| 33 |  * each of the three user interface, we give a brief description of what it
 | 
|---|
| 34 |  * does here.
 | 
|---|
| 35 |  *
 | 
|---|
| 36 |  * Each of the query implementations receives a reference to a QLayout where
 | 
|---|
| 37 |  * it just adds its own query, e.g. for a double or a list of strings.
 | 
|---|
| 38 |  * Eventually, this concatenated dialog is presented to the user -- it might
 | 
|---|
| 39 |  * be empty though as well -- he enters all values and clicks accept (even
 | 
|---|
| 40 |  * in case of an empty dialog). These values are inspected with each Option's
 | 
|---|
| 41 |  * validator and only if all are true, accept is actually clickable. If not, at
 | 
|---|
| 42 |  * least one option is still invalid.
 | 
|---|
| 43 |  *
 | 
|---|
| 44 |  *
 | 
|---|
| 45 |  * \section userinterfaces-graphical-world_view How the World view works ...
 | 
|---|
| 46 |  *
 | 
|---|
| 47 |  * GLWorldView handles the Observer translation to Qt's own signal/slot mechanism. 
 | 
|---|
| 48 |  * Also, it contains an instance of the GLWorldScene. This instance knows all about
 | 
|---|
| 49 |  * atoms and bonds present in this scene, i.e. it has lists on them and handles
 | 
|---|
| 50 |  * adding and removing. Objects in this scene are GLMoleculeObject's which
 | 
|---|
| 51 |  * are either .._atom (clickable) or .._bond (non-clickable). Also,
 | 
|---|
| 52 |  * GLMoleculeObject implements all transformation routines because atom and
 | 
|---|
| 53 |  * bond just differ in being a sphere or a cylinder.
 | 
|---|
| 54 |  *
 | 
|---|
| 55 |  * See \ref qt-gui for more in-depth information
 | 
|---|
| 56 |  *
 | 
|---|
| 57 |  *
 | 
|---|
| 58 |  * \date 2014-03-10
 | 
|---|
| 59 |  *
 | 
|---|
| 60 |  */
 | 
|---|