| [750cff] | 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 | /**
 | 
|---|
| [35a889] | 16 |  * \page userinterfaces-graphical Graphical User Interface
 | 
|---|
| [750cff] | 17 |  *
 | 
|---|
 | 18 |  * The GUI is based on Qt4. It used 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 list of all currently selected molecules.
 | 
|---|
 | 26 |  * - A list of all currently present molecules.
 | 
|---|
 | 27 |  *
 | 
|---|
| [35a889] | 28 |  * \section userinterfaces-graphical-query Queries in the graphical interface.
 | 
|---|
| [750cff] | 29 |  *
 | 
|---|
 | 30 |  * As all Action always instantiate a Dialog which behaves differently for
 | 
|---|
 | 31 |  * each of the three user interface, we give a brief description of what it
 | 
|---|
 | 32 |  * does here.
 | 
|---|
 | 33 |  *
 | 
|---|
 | 34 |  * Each of the query implementations receives a reference to a QLayout where
 | 
|---|
 | 35 |  * it just adds its own query, e.g. for a double or a list of strings.
 | 
|---|
 | 36 |  * Eventually, this concatenated dialog is presented to the user -- it might
 | 
|---|
 | 37 |  * be empty though as well -- he enters all values and clicks accept (even
 | 
|---|
 | 38 |  * in case of an empty dialog). These values are passed via a Pipe mechanism
 | 
|---|
 | 39 |  * (this is a workaround as Qt's moc does not liked nested classes) to the
 | 
|---|
 | 40 |  * ValueStorage.
 | 
|---|
 | 41 |  *
 | 
|---|
| [35a889] | 42 |  * \section userinterfaces-graphical-world_view How the World view works ...
 | 
|---|
| [750cff] | 43 |  *
 | 
|---|
 | 44 |  * GLWorldView handles the Observer translation to Qt's own mechanism. Also, it
 | 
|---|
 | 45 |  * contains an instance of the GLWorldScene. This instance knows about all
 | 
|---|
 | 46 |  * atoms and bonds present in this scene, i.e. it has lists on them and handles
 | 
|---|
 | 47 |  * adding and removing. Objects in this scene are GLMoleculeObject's which
 | 
|---|
 | 48 |  * are either .._atom (clickable) or .._bond (non-clickable). Also,
 | 
|---|
 | 49 |  * GLMoleculeObject implements all transformation routines because atom and
 | 
|---|
 | 50 |  * bond just differ in being a sphere or a cylinder.
 | 
|---|
 | 51 |  *
 | 
|---|
 | 52 |  *
 | 
|---|
 | 53 |  * \date 2011-10-31
 | 
|---|
 | 54 |  *
 | 
|---|
 | 55 |  */
 | 
|---|