BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Protected Slots | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
BALL::VIEW::MainControl Class Reference

#include <BALL/VIEW/KERNEL/mainControl.h>

Inheritance diagram for BALL::VIEW::MainControl:
QMainWindow BALL::VIEW::ConnectionObject BALL::Embeddable BALL::Mainframe

Public Types

Enumerations
enum  PopUpID {
  FILE = 10001, FILE_OPEN, FILE_OPEN_GRID, FILE_IMPORT,
  FILE_EXPORT, FILE_MONITOR, EDIT = 10100, BUILD = 10200,
  DISPLAY = 10300, DISPLAY_CREATE, DISPLAY_VIEWPOINT, DISPLAY_STEREO,
  DISPLAY_ANIMATION, MOLECULARMECHANICS = 10400, CHOOSE_FF, TOOLS = 10500,
  TOOLS_GRID, TOOLS_PYTHON, WINDOWS = 10600, USER = 10700,
  MACRO = 10750, HELP = 10800
}
 
- Public Types inherited from BALL::Embeddable
typedef std::vector< Embeddable * > EmbeddableVector
 

Public Slots

Public slots
virtual void show ()
 
virtual void checkMenus ()
 
void stopSimulation ()
 Stop a currently running calculation. More...
 
void complementSelection ()
 
void clearSelection ()
 
virtual void aboutToExit ()
 
void menuItemHighlighted (QAction *action)
 
virtual bool event (QEvent *e)
 Interface to QT events, e.g. to communicate with other threads. More...
 
virtual void quit (int return_value=0)
 Make the program exit. More...
 
virtual void resize (int w, int h)
 overloaded from QT for Python Interface More...
 
void setContentSize (int w, int h)
 
void toggleFullScreen ()
 
void quickSave ()
 Create a BALLView project file with the name quick.bvp in the users home dir. More...
 
void quickLoad ()
 Quickload quick.bvp in the users home die (see above) More...
 
void saveBALLViewProjectFile ()
 
void loadBALLViewProjectFile ()
 
void quickLoadConfirm ()
 

Public Member Functions

Constructors and Destructor
 MainControl (QWidget *parent=0, const char *name=0, String inifile=".BALL.preferences")
 
virtual ~MainControl ()
 
 MainControl (const MainControl &main_control)
 
virtual void clear ()
 
void clearData ()
 
Methods to manage Representation(s)
RepresentationManagergetRepresentationManager ()
 
bool insert (Representation &rep)
 
bool remove (Representation &rep)
 
bool update (Representation &rep)
 
bool updateRepresentationsOf (const Composite &composite, bool rebuild=true, bool force=false)
 
void redrawAllRepresentations (bool rebuild_display_lists=false)
 
Methods to manage Shortcuts
ShortcutRegistrygetShortcutRegistry ()
 
Methods to manage Composite(s)
CompositeManagergetCompositeManager ()
 
bool insert (Composite &composite, String name="")
 
bool remove (Composite &composite, bool to_delete=true, bool update=true)
 
void update (Composite &composite, bool changed_hierarchy=true)
 
const HashSet< Composite * > & getSelection () const
 Get the HashSet with the selected (e.g. picked) Composite objects (const) More...
 
HashSet< Composite * > & getSelection ()
 Get the HashSet with the selected (e.g. picked) Composite objects. More...
 
std::list< Composite * > & getMolecularControlSelection ()
 Get the selection (highlighted items) of the MolecularControl (not the selection with checkboxes) More...
 
SystemgetSelectedSystem ()
 If exactly one System is selected in the Control, return a pointer to this system, otherwise 0. More...
 
void selectCompositeRecursive (Composite *composite, bool first_call=false)
 Select a Composite recursive and add all Atom and AtomContainer objects to the selection. More...
 
void deselectCompositeRecursive (Composite *composite, bool first_call=false)
 Select a Composite recursive and add all Atom and AtomContainer objects to the selection. More...
 
void printSelectionInfos ()
 
Preferences and Configuration files
void saveBALLViewProjectFile (const String &filename, bool binary=true)
 Save the current configuration, structures and representations to a BALLView project file (*.bvp) More...
 
void loadBALLViewProjectFile (const String &filename)
 Load a BALLView project file. More...
 
virtual void fetchPreferences (INIFile &inifile)
 
virtual void writePreferences (INIFile &inifile)
 
virtual void restoreWindows ()
 Restore the positions the main window and of all DockWindow's from the INIFile assigned to this instance. More...
 
virtual void restoreWindows (const INIFile &inifile)
 Restore the positions the main window and of all DockWindow's from a given inifile. More...
 
INIFilegetINIFile ()
 
const INIFilegetINIFile () const
 
PreferencesgetPreferences ()
 
virtual void applyPreferences ()
 
Menu entries handling
QAction * insertMenuEntry (Position parent_id, const String &name, const QObject *receiver=0, const char *slot=0, const String &description="", QKeySequence accel=QKeySequence())
 
void removeMenuEntry (Index parent_id, QAction *action)
 
virtual QMenu * initPopupMenu (int ID)
 
void insertPopupMenuSeparator (int ID)
 
void setMenuHint (QAction *id, const String &hint)
 Set a hint for a menu entry. More...
 
String getMenuHint (QAction *id) const
 Get the hint for a menu entry. More...
 
void setDeleteEntryEnabled (bool state)
 
void insertDeleteEntry ()
 
QAction * getLastHighLightedMenuEntry ()
 Get the ID of the last highlighted menu entry (used for the HelpViewer) More...
 
Methods for multithreading
bool compositesAreLocked () const
 
bool lockCompositesFor (ModularWidget *widget)
 
bool unlockCompositesFor (ModularWidget *widget)
 Lock the Composites for a given Modular Widget. More...
 
ModularWidgetgetLockingWidget ()
 Get the ModularWidget with excluse access to the Composites. More...
 
bool updateOfRepresentationRunning ()
 Return true if Representations are (re)calculated. More...
 
bool stopedSimulation ()
 Returns true, if the simulation was told to stop, but hasnt done this so far. More...
 
bool setSimulationThread (SimulationThread *thread)
 
SimulationThreadgetSimulationThread ()
 
bool useMultithreading ()
 
void setMultithreading (bool state)
 See above. More...
 
bool isBusy () const
 
void wait ()
 Wait until the MainControl is not busy anymore. More...
 
void processEvents (Size ms)
 Added overloaded method from QApplication for access in Python. More...
 
Accessors and Settings
void setStatusbarText (const String &text, bool important=false, bool beep=false)
 
void setStatusbarText (const QString &text, bool important=false, bool beep=false)
  More...
 
String getStatusbarText () const
 
const FragmentDBgetFragmentDB () const
 Get a const reference for the fragment database. More...
 
const ModelInformationgetModelInformation () const
 
void setModelInformation (ModelInformation *mi)
 
String getWorkingDir () const
 
void setWorkingDir (const String &dir)
 Set the working directory for the next file dialog and file operation to the given directory. More...
 
void enableLoggingToFile ()
 
void disableLoggingToFile ()
 
void setLoggingFilename (const String &string)
 
const StringgetLoggingFilename () const
 See above. More...
 
bool isAboutToQuit ()
 
Debugging and Diagnostics
virtual void dump (std::ostream &s=std::cout, Size depth=0) const
 
virtual void openFile (const String &file)
 
- Public Member Functions inherited from BALL::VIEW::ConnectionObject
 ConnectionObject ()
 
virtual ~ConnectionObject ()
 
virtual void destroy ()
 
void registerConnectionObject (ConnectionObject &object)
 
void unregisterConnectionObject (ConnectionObject &object)
 
bool isConnectionObjectRegistered (const ConnectionObject &object)
 
ConnectionObjectgetParent () const
 
ConnectionObjectgetRoot ()
 
virtual bool isValid () const
 
- Public Member Functions inherited from BALL::Embeddable
 Embeddable (const String &identifier="<Embeddable>")
 
 Embeddable (const Embeddable &embeddable)
 
virtual ~Embeddable ()
 
void setIdentifier (const String &identifier)
 
const StringgetIdentifier () const
 
void unregisterThis ()
 
virtual void registerThis ()
 

Protected Slots

virtual void applyPreferencesClicked_ ()
 
virtual void okPreferencesClicked_ ()
 
void clearStatusBarText_ ()
 
virtual void deleteClicked ()
 
void updateRepLabel_ ()
 

Protected Member Functions

virtual void initializePreferencesTab_ ()
 
void stopedSimulation_ ()
 
void lockComposites_ ()
 
bool remove_ (Composite &composite, bool update_representations_of_parent=true, bool to_delete=true)
 
void selectComposites_ (GeometricObjectSelectionMessage &message)
 
void reduceSelection_ (Composite *const composite)
 
void setup_ ()
 
void complementSelectionHelper_ (Composite &c)
 
void setBusyMode_ (bool state)
 
void setPreferencesEnabled_ (bool state)
 
void init_ ()
 
virtual void closeEvent (QCloseEvent *evt)
 
- Protected Member Functions inherited from BALL::VIEW::ConnectionObject
void onNotify_ (Message *message)
 
void notify_ (Message *message)
 
void notify_ (Message &message)
 

Protected Attributes

bool about_to_quit_
 
bool multi_threading_mode_
 
FragmentDB fragment_db_
 
ModelInformationmodel_information_
 
HashSet< Composite * > selection_
 
std::list< Composite * > control_selection_
 
QLabel * message_label_
 
RepresentationManager primitive_manager_
 
CompositeManager composite_manager_
 
ShortcutRegistry shortcut_registry_
 
MainControlPreferencesmain_control_preferences_
 
OpenSavePreferencesopen_save_preferences_
 
NetworkPreferencesnetwork_preferences_
 
Preferencespreferences_dialog_
 
INIFile preferences_file_
 
bool composites_locked_
 
ModularWidgetlocking_widget_
 
bool stop_simulation_
 
SimulationThreadsimulation_thread_
 
std::list< ModularWidget * > modular_widgets_
 
QLabel * simulation_icon_
 
QLabel * rep_label_
 
Position rep_label_nr_
 
String working_dir_
 
String logging_file_name_
 
bool logging_to_file_
 
File logging_file_
 
bool important_text_in_statusbar_
 
bool was_not_busy_
 
Index rep_label_delta_
 
QTimer timer_
 
QTimer render_timer_
 
Mutex composites_locked_mutex_
 
QAction * stop_simulation_action_
 
QAction * fullscreen_action_
 
QAction * complement_selection_action_
 
QAction * clear_selection_action_
 
QAction * open_action_
 
QAction * save_project_action_
 
QAction * preferences_action_
 
QAction * delete_action_
 
QAction * qload_action_
 
QAction * qsave_action_
 
QAction * last_highlighted_menu_entry_
 
HashMap< Position, QMenu * > id_to_menu_
 
QPoint last_point_
 
QSize last_size_
 
QByteArray last_state_
 

Static Protected Attributes

static const char * simulation_running_xpm_ []
 
static const char * simulation_stoped_xpm_ []
 

Friends

class RepresentationManager
 
class SimulationThread
 

Management of ModularWidget(s) and Message(s)

void addModularWidget (ModularWidget *widget)
 
void removeModularWidget (ModularWidget *widget)
 
virtual void onNotify (Message *message)
 
void sendMessage (Message &message)
 
static MainControlgetMainControl (const QObject *object)
 

Additional Inherited Members

- Static Protected Member Functions inherited from BALL::Embeddable
static void registerInstance_ (const std::type_info &type, const Embeddable *instance)
 
static void unregisterInstance_ (const Embeddable *instance)
 
static Size countInstances_ (const std::type_info &type)
 
static EmbeddablegetInstance_ (const std::type_info &type, Position index)
 
static EmbeddablegetInstance_ (const std::type_info &type, const String &identifier)
 

Detailed Description

MainControl is the main administration unit for a program and must be
used by all applications.
MainControl is also derived from Qt::QMainWindow and therefore the main
widget of an application must be derived from this class. Further it has the
necessary interface methods to create and update the menus of the main application.
<br>
<br>
MainControl is also a storage facility for Composite objects, the graphical
Representation and the inserted ModularWidget.
The interface for the Composite administration is implemented in CompositeManager, and for
the Representation 's in RepresentationManager.
Specialized methods exists for the adding, updateing and removing of Composites as well
as Representations. (see the update, insert and remove methods)
<br>  
<br>  
This class is also the root ConnectionObject and thus
it is responsible for the handling of all messages.
To add ModularWidgets all that is necessary are the creation of the derived modular
widgets with the MainControl as their parents like e.g.<br>
new DisplayProperties(this, "DisplayProperties");<br>
For examples have a look at BALL/source/APPLICATIONS/mainframe.C
<br>
<br>
MainControl also handles the Preferences dialog (and it's tab entry for some general 
preferences) 
and notifies all registered ModularWidgets if the preferences have changed.
The content of the Preferences dialog with all setup options is stored in an INIFile.
The default name of this file is ".BALLView".<br>
See Also
writePreferences
fetchPreferences
saveBALLViewProjectFile
loadBALLViewProjectFile

Caveat: Due to a peculiarity of the QT Meta Object Compiler (MOC) you have to specify the full namespace qualified name of this class when deriving from it.
So don't use
class foo : public MainControl ; but
class foo : public BALL::VIEW::MainControl instead.

Definition at line 106 of file mainControl.h.

Member Enumeration Documentation

Standard Popup menu IDs. This enum defines symbolic names for the menu IDs of the most common popup menus. The popups are created, if a menu entry is requested for any of the popups.

See Also
insertMenuEntry
Enumerator
FILE 

File menu.

FILE_OPEN 

File menu sub menu open.

FILE_OPEN_GRID 

File menu sub menu open grid.

FILE_IMPORT 

File menu sub menu import [currently unused].

FILE_EXPORT 

File menu sub menu export.

FILE_MONITOR 
EDIT 

Edit menu.

BUILD 

Build menu.

DISPLAY 

Display menu.

DISPLAY_CREATE 

Display Create submenu.

DISPLAY_VIEWPOINT 

Display Viewpoint submenu.

DISPLAY_STEREO 

Display Stereo submenu.

DISPLAY_ANIMATION 

Display Animation submenu.

MOLECULARMECHANICS 

Simulations menu.

CHOOSE_FF 

Molmec submenu for force field selection.

TOOLS 

Tools menu.

TOOLS_GRID 

Grid submenu in Tools.

TOOLS_PYTHON 

Python submenu in Tools.

WINDOWS 

Windows menu.

USER 

Userdefined menus.

MACRO 

Macros e.g. for Testing.

HELP 

Help menu.

Definition at line 128 of file mainControl.h.

Constructor & Destructor Documentation

BALL::VIEW::MainControl::MainControl ( QWidget parent = 0,
const char *  name = 0,
String  inifile = ".BALL.preferences" 
)

Default Constructor. Reads the the INIFile inifile and connects the qt signal aboutToQuit with the slot aboutToExit(). The state of the MainControl is:

virtual BALL::VIEW::MainControl::~MainControl ( )
virtual

Destructor. Calls clear

BALL::VIEW::MainControl::MainControl ( const MainControl main_control)

Member Function Documentation

virtual void BALL::VIEW::MainControl::aboutToExit ( )
virtualslot

Last second cleanup. This method will be called internally if the MainControl is about to be destroyed. This method stores the preferences and finalizes all ModularWidget objects and the MainControl. Must be called after your own cleanup routine if you override this method.

Calls ModularWidget::finalizePreferencesTab
Calls ModularWidget::finalizeWidget
Calls writePreferences
Calls finalizePreferencesTab
Calls removeModularWidget
Calls INIFile::write
void BALL::VIEW::MainControl::addModularWidget ( ModularWidget widget)

Add a new ModularWidget to this MainControl. This method will be called internally by the ModularWidget registration process. So, if you dont know exactly what this method does, you will not need it!

Parameters
widgetthe ModularWidget to be inserted into this mainControl
virtual void BALL::VIEW::MainControl::applyPreferences ( )
virtual

Apply all preferences. This method is called automatically by applyPreferencesClicked() and calls applyPreferences() for all registered ModularWidgets. Note: If this method is overridden, call this method at the end of the overriden method to make sure that the general preferences are applied.

See Also
ModularWidget
Preferences
virtual void BALL::VIEW::MainControl::applyPreferencesClicked_ ( )
protectedvirtualslot
virtual void BALL::VIEW::MainControl::checkMenus ( )
virtualslot

Menu checking method. This method checks, enables or disables all inserted menu entries of the registered ModularWidget objects. If this method is overridden make sure that it will be called at the end of the new checkMenus() method. See ModularWidget for further information concerning menu structure creation.

Note: This method will be called internally whenever the menu structure needs an update. Calls ModularWidget::checkMenu
See Also
ModularWidget::checkMenu
virtual void BALL::VIEW::MainControl::clear ( )
virtual

Clear all data fast, to be called at exit only!

Reimplemented from BALL::VIEW::ConnectionObject.

void BALL::VIEW::MainControl::clearData ( )

Clear all data, can be called at any time

void BALL::VIEW::MainControl::clearSelection ( )
slot

Clear Selection Deselect all Composites and clear the selection list in the MainControl

void BALL::VIEW::MainControl::clearStatusBarText_ ( )
protectedslot
virtual void BALL::VIEW::MainControl::closeEvent ( QCloseEvent *  evt)
protectedvirtual
void BALL::VIEW::MainControl::complementSelection ( )
slot
void BALL::VIEW::MainControl::complementSelectionHelper_ ( Composite c)
protected
bool BALL::VIEW::MainControl::compositesAreLocked ( ) const

Check wheter the stored composites can be modified at the moment. This method returns true e.g. while a MD simulation is running.

virtual void BALL::VIEW::MainControl::deleteClicked ( )
protectedvirtualslot
void BALL::VIEW::MainControl::deselectCompositeRecursive ( Composite composite,
bool  first_call = false 
)

Select a Composite recursive and add all Atom and AtomContainer objects to the selection.

void BALL::VIEW::MainControl::disableLoggingToFile ( )

This disables logging to an file for all messages send per LogStream .e.g. Log().error()

virtual void BALL::VIEW::MainControl::dump ( std::ostream &  s = std::cout,
Size  depth = 0 
) const
virtual

Internal state dump. Dump the current internal state of this mainControl to the output ostream s with dumping depth depth.

Parameters
soutput stream where to output the internal state
depththe dumping depth

Reimplemented from BALL::Embeddable.

void BALL::VIEW::MainControl::enableLoggingToFile ( )

This enables logging to an file for all messages send per LogStream .e.g. Log().error()

virtual bool BALL::VIEW::MainControl::event ( QEvent e)
virtualslot

Interface to QT events, e.g. to communicate with other threads.

virtual void BALL::VIEW::MainControl::fetchPreferences ( INIFile inifile)
virtual

Fetch the preferences from the INIfile. Calls fetchPreferences() for all registered ModularWidgets. Note:If this method is overridden, call this method at the end of the overriden method to make sure that the general preferences are fetched.

Parameters
inifilethe INIFile that contains the needed values
CompositeManager& BALL::VIEW::MainControl::getCompositeManager ( )
inline

Get the composite manager. The class CompositeManager is the owner of all Composite objects.

Definition at line 307 of file mainControl.h.

const FragmentDB& BALL::VIEW::MainControl::getFragmentDB ( ) const
inline

Get a const reference for the fragment database.

Definition at line 624 of file mainControl.h.

INIFile& BALL::VIEW::MainControl::getINIFile ( )

Mutable inspection of the INIFile.

const INIFile& BALL::VIEW::MainControl::getINIFile ( ) const

Non-mutable inspection of the INIFile.

QAction* BALL::VIEW::MainControl::getLastHighLightedMenuEntry ( )
inline

Get the ID of the last highlighted menu entry (used for the HelpViewer)

Definition at line 532 of file mainControl.h.

ModularWidget* BALL::VIEW::MainControl::getLockingWidget ( )

Get the ModularWidget with excluse access to the Composites.

const String& BALL::VIEW::MainControl::getLoggingFilename ( ) const

See above.

static MainControl* BALL::VIEW::MainControl::getMainControl ( const QObject object)
static

Return the MainControl of an QObject. This method returns the MainControl that should be the root of the ConnectionObject tree from a given widget or dialog QObject. Because we use the qt library, every widget or dialog has QObject as a base class. MainControl is the main application and therefore all widgets and dialogs are its children. We use the qt QObject tree mechanism to return the MainControl for a given QObject.

Note: This method is used internally from the ModularWidget registration process.
Returns
MainControl* the root of the ConnectionObject tree
See Also
ConnectionObject
ModularWidget
String BALL::VIEW::MainControl::getMenuHint ( QAction *  id) const

Get the hint for a menu entry.

const ModelInformation& BALL::VIEW::MainControl::getModelInformation ( ) const
std::list<Composite*>& BALL::VIEW::MainControl::getMolecularControlSelection ( )

Get the selection (highlighted items) of the MolecularControl (not the selection with checkboxes)

Preferences* BALL::VIEW::MainControl::getPreferences ( )

Mutable inspection of the preferences dialog.

Returns
Preferences* a pointer to the Preferences dialog, ( 0 if not present)
RepresentationManager& BALL::VIEW::MainControl::getRepresentationManager ( )
inline

Get the primitive manager. The class RepresentationManager contains all Representation objects and GeometricObject.

Definition at line 243 of file mainControl.h.

System* BALL::VIEW::MainControl::getSelectedSystem ( )

If exactly one System is selected in the Control, return a pointer to this system, otherwise 0.

const HashSet<Composite*>& BALL::VIEW::MainControl::getSelection ( ) const

Get the HashSet with the selected (e.g. picked) Composite objects (const)

HashSet<Composite*>& BALL::VIEW::MainControl::getSelection ( )

Get the HashSet with the selected (e.g. picked) Composite objects.

ShortcutRegistry& BALL::VIEW::MainControl::getShortcutRegistry ( )
inline

Get the shortcut registry. The class ShortcutRegistry is the owner of all shortcuts.

Definition at line 295 of file mainControl.h.

SimulationThread* BALL::VIEW::MainControl::getSimulationThread ( )

Get the currently running SimulationThread or zero pointer if no simulation running.

String BALL::VIEW::MainControl::getStatusbarText ( ) const
String BALL::VIEW::MainControl::getWorkingDir ( ) const
inline

BALLView stores the directory of the last file operation, e.g. when a PDB file is opened or saved. This saves the user some time, since he doesnt have to change the folders in the file dialogs as often. This method returns the last directory.

Definition at line 637 of file mainControl.h.

void BALL::VIEW::MainControl::init_ ( )
protected
virtual void BALL::VIEW::MainControl::initializePreferencesTab_ ( )
protectedvirtual
virtual QMenu* BALL::VIEW::MainControl::initPopupMenu ( int  ID)
virtual

Initialize a new popup menu ID. If the MainControl has already the popup menu ID that QPopupMenu is returned. See the documentation of the qt library for more information concerning the class QPopupMenu.

Parameters
IDthe ID of the menu entry to be created.
Returns
QPopupMenu* a pointer to the created QPopupMenu
See Also
PopUpID
bool BALL::VIEW::MainControl::insert ( Representation rep)

Insert a Representation The Representation must be created on the heap!!! A RepresentationMessage with type NEW is send.

Returns
false if the RepresentationManager contains the Representation
bool BALL::VIEW::MainControl::insert ( Composite composite,
String  name = "" 
)

Insert a Composite and notify all ModularWidget. The Composite has to be created on the heap!!! A CompositeMessage with type NEW_COMPOSITE is send and CompositeManager::insert called.

Returns
false if the CompositeManager contains the Composite
void BALL::VIEW::MainControl::insertDeleteEntry ( )

Insert the delete entry for GenericControls. Called by all GenericControls.

QAction* BALL::VIEW::MainControl::insertMenuEntry ( Position  parent_id,
const String name,
const QObject receiver = 0,
const char *  slot = 0,
const String description = "",
QKeySequence  accel = QKeySequence() 
)

Insert a new menu entry into menu ID (creates a new menu if ID not existent). See the documentation of the qt library for more information concerning menu creation.

Parameters
IDthe menu ID to which the new menu entry should be inserted
namethe name of the new menu entry
receiverthe object to which the menu action will be connected
slotthe function that will be called by activation of the menu entry
descriptiona unique descriptive string for the action
accelthe acceleration key
Returns
int the new entry_ID
void BALL::VIEW::MainControl::insertPopupMenuSeparator ( int  ID)

Insert a separator into the popup menu ID. If the menu ID is not existent, it will be created first.

Parameters
IDthe id of the menu to which a separator will be inserted
See Also
PopUpID
bool BALL::VIEW::MainControl::isAboutToQuit ( )
inline

Definition at line 660 of file mainControl.h.

bool BALL::VIEW::MainControl::isBusy ( ) const
void BALL::VIEW::MainControl::loadBALLViewProjectFile ( const String filename)

Load a BALLView project file.

void BALL::VIEW::MainControl::loadBALLViewProjectFile ( )
slot
void BALL::VIEW::MainControl::lockComposites_ ( )
protected
bool BALL::VIEW::MainControl::lockCompositesFor ( ModularWidget widget)

Lock the Composites for a given Modular Widget. This allows exclusive acces e.g. to delete or modify Composites and prevents those nasty segfaults if an other thread works on the Composites. true if the exclusive lock on the composites could be obtained

void BALL::VIEW::MainControl::menuItemHighlighted ( QAction *  action)
slot

Slot that is called when a menu item is highlighted. It is used to show a hint for every menu entry.

See Also
setMenuHint
getMenuHint
virtual void BALL::VIEW::MainControl::okPreferencesClicked_ ( )
protectedvirtualslot
virtual void BALL::VIEW::MainControl::onNotify ( Message message)
virtual

Message handling method. Handles messages sent by other registered ModularWidget objects. Virtual function for overriden the message handling system. Take care to call this function in your own ModularWidget. There is no need to call this function, because it will be called from the message handling mechanism. Remember: A ModularWidget is not notified by the Messages it sends itself!

Parameters
messagethe pointer to the message that should be processed
See Also
ModularWidget
Message

Reimplemented from BALL::VIEW::ConnectionObject.

virtual void BALL::VIEW::MainControl::openFile ( const String file)
virtual

Open a file. This method is called to parse any command line arguments. It iterates over all ModularWidgets and calls ModularWidget::canHandle with the files extension (the suffix after the dot in the filename). If one ModularWidget can handle the format, ModularWidget::openFile is called.

void BALL::VIEW::MainControl::printSelectionInfos ( )

Print some informations for the selection in the statusbar. Called by selectComposites_(). If one Atom is selected, its position is printed. If two Atom objects are selected, their distance, for three Atom 's their angle and for four Atom 's their torsion angle. Else the number of items is printed.

void BALL::VIEW::MainControl::processEvents ( Size  ms)

Added overloaded method from QApplication for access in Python.

void BALL::VIEW::MainControl::quickLoad ( )
slot

Quickload quick.bvp in the users home die (see above)

void BALL::VIEW::MainControl::quickLoadConfirm ( )
slot
void BALL::VIEW::MainControl::quickSave ( )
slot

Create a BALLView project file with the name quick.bvp in the users home dir.

virtual void BALL::VIEW::MainControl::quit ( int  return_value = 0)
virtualslot

Make the program exit.

void BALL::VIEW::MainControl::redrawAllRepresentations ( bool  rebuild_display_lists = false)

Redraws all inserted Representation, but doesnt change the Models.

Parameters
rebuild_display_listsset to true lets the Scene rebuild the GLDisplayList objects.
See Also
updateRepresentationsOf
void BALL::VIEW::MainControl::reduceSelection_ ( Composite *const  composite)
protected
bool BALL::VIEW::MainControl::remove ( Representation rep)

Remove a Representation A RepresentationMessage with type REMOVE is send.

Returns
false if the RepresentationManager doesnt contain the Representation
bool BALL::VIEW::MainControl::remove ( Composite composite,
bool  to_delete = true,
bool  update = true 
)

Remove a Composite and notify all ModularWidget. A CompositeMessage with type REMOVED_COMPOSITE is send and CompositeManager::remove called.

Parameters
updateupdate Representations if needed
Returns
false if the CompositeManager doesnt contain the Composite
bool BALL::VIEW::MainControl::remove_ ( Composite composite,
bool  update_representations_of_parent = true,
bool  to_delete = true 
)
protected
void BALL::VIEW::MainControl::removeMenuEntry ( Index  parent_id,
QAction *  action 
)
void BALL::VIEW::MainControl::removeModularWidget ( ModularWidget widget)

Remove a ModularWidget from the MainControl. This method will be called internally by the ModularWidget registration process. So, if you dont know exactly what this method does, you will not need it!

Parameters
widgetthe ModularWidget to be removed
virtual void BALL::VIEW::MainControl::resize ( int  w,
int  h 
)
virtualslot

overloaded from QT for Python Interface

virtual void BALL::VIEW::MainControl::restoreWindows ( )
virtual

Restore the positions the main window and of all DockWindow's from the INIFile assigned to this instance.

virtual void BALL::VIEW::MainControl::restoreWindows ( const INIFile inifile)
virtual

Restore the positions the main window and of all DockWindow's from a given inifile.

void BALL::VIEW::MainControl::saveBALLViewProjectFile ( const String filename,
bool  binary = true 
)

Save the current configuration, structures and representations to a BALLView project file (*.bvp)

void BALL::VIEW::MainControl::saveBALLViewProjectFile ( )
slot
void BALL::VIEW::MainControl::selectCompositeRecursive ( Composite composite,
bool  first_call = false 
)

Select a Composite recursive and add all Atom and AtomContainer objects to the selection.

void BALL::VIEW::MainControl::selectComposites_ ( GeometricObjectSelectionMessage message)
protected
void BALL::VIEW::MainControl::sendMessage ( Message message)

Send a Message from Python. Otherwise, you should prefer to use ModularWidget::notify_. The MainControl itself also reacts to a Message, send with this method. The Message will be deleted, after it was send to all ModularWidget's.

void BALL::VIEW::MainControl::setBusyMode_ ( bool  state)
protected

Show a busy cursor and a busy icon in the statusbar.

void BALL::VIEW::MainControl::setContentSize ( int  w,
int  h 
)
slot
void BALL::VIEW::MainControl::setDeleteEntryEnabled ( bool  state)

Enable the delete entry for GenericControls. Called by a GenericControl, if it has a selection, that can be deleted.

void BALL::VIEW::MainControl::setLoggingFilename ( const String string)

Set the name for the logging file (see above) to the given name. This file is stored in the users home dir.

void BALL::VIEW::MainControl::setMenuHint ( QAction *  id,
const String hint 
)

Set a hint for a menu entry.

void BALL::VIEW::MainControl::setModelInformation ( ModelInformation mi)
void BALL::VIEW::MainControl::setMultithreading ( bool  state)
inline

See above.

Definition at line 590 of file mainControl.h.

void BALL::VIEW::MainControl::setPreferencesEnabled_ ( bool  state)
protected
bool BALL::VIEW::MainControl::setSimulationThread ( SimulationThread thread)

Set the simulation thread. The instance of SimulationThread will be deleted after it has finished. If an other simulation is still running, this method returns false.

void BALL::VIEW::MainControl::setStatusbarText ( const String text,
bool  important = false,
bool  beep = false 
)

Sets the text in the statusbar. The statusbar has a label, whose text is set to the given argument. It is possible to notify the user with a beep sound.

Parameters
importantIf true, the message is also logged in the LogView, marked red in the statusbar and shown there for a longer time
beepif true a beep tone is played to inform the user about a critical event
void BALL::VIEW::MainControl::setStatusbarText ( const QString &  text,
bool  important = false,
bool  beep = false 
)

Sets the text in the statusbar. The statusbar has a label, whose text is set to the given argument. It is possible to notify the user with a beep sound.

Parameters
importantIf true, the message is also logged in the LogView, marked red in the statusbar and shown there for a longer time
beepif true a beep tone is played to inform the user about a critical event
void BALL::VIEW::MainControl::setup_ ( )
protected
void BALL::VIEW::MainControl::setWorkingDir ( const String dir)

Set the working directory for the next file dialog and file operation to the given directory.

virtual void BALL::VIEW::MainControl::show ( )
virtualslot

Initialize all registered ModularWidget objects. It initializes the menu structure, the preferences dialogs and connects every ModularWidget with the MainControl. This method also creates the first menu entry FILE with its subentry EXIT to exit the application. See ModularWidget for further information concerning menu structure creation and preferences handling.

Calls registerConnectionObject()
Calls fetchPreferences()
Calls applyPreferences()
Calls insertMenuEntry()
Calls ModularWidget::initializeWidget()
Calls QMainWindow::show()
Note: Call this method to start the application.
bool BALL::VIEW::MainControl::stopedSimulation ( )
inline

Returns true, if the simulation was told to stop, but hasnt done this so far.

Definition at line 561 of file mainControl.h.

void BALL::VIEW::MainControl::stopedSimulation_ ( )
protected
void BALL::VIEW::MainControl::stopSimulation ( )
slot

Stop a currently running calculation.

void BALL::VIEW::MainControl::toggleFullScreen ( )
slot
bool BALL::VIEW::MainControl::unlockCompositesFor ( ModularWidget widget)

Lock the Composites for a given Modular Widget.

bool BALL::VIEW::MainControl::update ( Representation rep)

Update a Representation A RepresentationMessage with type UPDATE and a SceneMessage is send.

Returns
false if the RepresentationManager doesnt contain the Representation
void BALL::VIEW::MainControl::update ( Composite composite,
bool  changed_hierarchy = true 
)

Update a Composite in all ModularWidget. This method differs wheter the composites hierarchy was changed or not. The update is faster if the hierarchy is unchanged, because e.g. the MolecularControl doesnt have to rebuild the ListViewItem tree. A CompositeMessage with type CHANGED_COMPOSITE or CHANGED_COMPOSITE_HIERARCHY is send and updateRepresentationsOf(composite) is called.

Returns
false if the CompositeManager doesnt contain the Composite
bool BALL::VIEW::MainControl::updateOfRepresentationRunning ( )

Return true if Representations are (re)calculated.

void BALL::VIEW::MainControl::updateRepLabel_ ( )
protectedslot
bool BALL::VIEW::MainControl::updateRepresentationsOf ( const Composite composite,
bool  rebuild = true,
bool  force = false 
)

Redraws all Representation objects for a Composite. If the Composite is not inserted into this MainControl false will be returned. updateRepresentationsOf() is called after receiving a CompositeMessage with type CHANGED_COMPOSITE in onNotify(). It sends a RepresentationMessage with type UPDATE for every Representation, which was build for the Composite. After this a SceneMessage is send to redraw the Scene.

Notes: If you changed a Composite in MainControl or a derived class, the MainControl doesnt get notified, from the CompositeMessage it sends. So you have to call this function instead of sending the message.
Parameters
compositethe Composite that should be updated
rebuildif set to true, the model is rebuilded, otherwise just the coloring is updated
forceis set to true, also rebuild non surface models (only usefull with rebuild = true)
Returns
true if an update was performed
bool BALL::VIEW::MainControl::useMultithreading ( )

Method to query if multithreading is enabled. Multithreaded code is used for serveral functions:

  • Update of Representations
  • Simulations
  • Download PDB files

    To debug such code it is often usefull to to be able to run it in a singlethreaded mode. Every piece of multithreaded code should therefore call this method and decide if it should run without multiple threads. Furthermore most of the time, valid benchmark results can only be achived with one single thread.
void BALL::VIEW::MainControl::wait ( )

Wait until the MainControl is not busy anymore.

virtual void BALL::VIEW::MainControl::writePreferences ( INIFile inifile)
virtual

Writes the widgets preferences to the INIFile. Calls writePreferences() for all registered ModularWidgets and Preferences::savePreferences(). Note: If this method is overridden, call this method at the end of the overriden method to make sure that the general preferences are written.

Parameters
inifilethe INIFile that contains the needed values

Friends And Related Function Documentation

friend class RepresentationManager
friend

Definition at line 111 of file mainControl.h.

friend class SimulationThread
friend

Definition at line 112 of file mainControl.h.

Member Data Documentation

bool BALL::VIEW::MainControl::about_to_quit_
protected

Definition at line 850 of file mainControl.h.

QAction* BALL::VIEW::MainControl::clear_selection_action_
protected

Definition at line 916 of file mainControl.h.

QAction* BALL::VIEW::MainControl::complement_selection_action_
protected

Definition at line 915 of file mainControl.h.

CompositeManager BALL::VIEW::MainControl::composite_manager_
protected

Definition at line 873 of file mainControl.h.

bool BALL::VIEW::MainControl::composites_locked_
protected

Definition at line 882 of file mainControl.h.

Mutex BALL::VIEW::MainControl::composites_locked_mutex_
protected

Definition at line 911 of file mainControl.h.

std::list<Composite*> BALL::VIEW::MainControl::control_selection_
protected

Definition at line 865 of file mainControl.h.

QAction* BALL::VIEW::MainControl::delete_action_
protected

Definition at line 920 of file mainControl.h.

FragmentDB BALL::VIEW::MainControl::fragment_db_
protected

Definition at line 854 of file mainControl.h.

QAction* BALL::VIEW::MainControl::fullscreen_action_
protected

Definition at line 914 of file mainControl.h.

HashMap<Position, QMenu*> BALL::VIEW::MainControl::id_to_menu_
protected

Definition at line 924 of file mainControl.h.

bool BALL::VIEW::MainControl::important_text_in_statusbar_
protected

Definition at line 906 of file mainControl.h.

QAction* BALL::VIEW::MainControl::last_highlighted_menu_entry_
protected

Definition at line 923 of file mainControl.h.

QPoint BALL::VIEW::MainControl::last_point_
protected

Definition at line 925 of file mainControl.h.

QSize BALL::VIEW::MainControl::last_size_
protected

Definition at line 926 of file mainControl.h.

QByteArray BALL::VIEW::MainControl::last_state_
protected

Definition at line 927 of file mainControl.h.

ModularWidget* BALL::VIEW::MainControl::locking_widget_
protected

Definition at line 883 of file mainControl.h.

File BALL::VIEW::MainControl::logging_file_
protected

Definition at line 904 of file mainControl.h.

String BALL::VIEW::MainControl::logging_file_name_
protected

Definition at line 902 of file mainControl.h.

bool BALL::VIEW::MainControl::logging_to_file_
protected

Definition at line 903 of file mainControl.h.

MainControlPreferences* BALL::VIEW::MainControl::main_control_preferences_
protected

Definition at line 876 of file mainControl.h.

QLabel* BALL::VIEW::MainControl::message_label_
protected

Definition at line 870 of file mainControl.h.

ModelInformation* BALL::VIEW::MainControl::model_information_
protected

Definition at line 856 of file mainControl.h.

std::list<ModularWidget*> BALL::VIEW::MainControl::modular_widgets_
protected

Definition at line 892 of file mainControl.h.

bool BALL::VIEW::MainControl::multi_threading_mode_
protected

Definition at line 851 of file mainControl.h.

NetworkPreferences* BALL::VIEW::MainControl::network_preferences_
protected

Definition at line 878 of file mainControl.h.

QAction* BALL::VIEW::MainControl::open_action_
protected

Definition at line 917 of file mainControl.h.

OpenSavePreferences* BALL::VIEW::MainControl::open_save_preferences_
protected

Definition at line 877 of file mainControl.h.

QAction* BALL::VIEW::MainControl::preferences_action_
protected

Definition at line 919 of file mainControl.h.

Preferences* BALL::VIEW::MainControl::preferences_dialog_
protected

Definition at line 879 of file mainControl.h.

INIFile BALL::VIEW::MainControl::preferences_file_
protected

Definition at line 880 of file mainControl.h.

RepresentationManager BALL::VIEW::MainControl::primitive_manager_
protected

Definition at line 872 of file mainControl.h.

QAction* BALL::VIEW::MainControl::qload_action_
protected

Definition at line 921 of file mainControl.h.

QAction * BALL::VIEW::MainControl::qsave_action_
protected

Definition at line 921 of file mainControl.h.

QTimer BALL::VIEW::MainControl::render_timer_
protected

Definition at line 910 of file mainControl.h.

QLabel* BALL::VIEW::MainControl::rep_label_
protected

Definition at line 895 of file mainControl.h.

Index BALL::VIEW::MainControl::rep_label_delta_
protected

Definition at line 908 of file mainControl.h.

Position BALL::VIEW::MainControl::rep_label_nr_
protected

Definition at line 898 of file mainControl.h.

QAction* BALL::VIEW::MainControl::save_project_action_
protected

Definition at line 918 of file mainControl.h.

HashSet<Composite*> BALL::VIEW::MainControl::selection_
protected

Definition at line 860 of file mainControl.h.

ShortcutRegistry BALL::VIEW::MainControl::shortcut_registry_
protected

Definition at line 874 of file mainControl.h.

QLabel* BALL::VIEW::MainControl::simulation_icon_
protected

Definition at line 894 of file mainControl.h.

const char* BALL::VIEW::MainControl::simulation_running_xpm_[]
staticprotected

Definition at line 896 of file mainControl.h.

const char* BALL::VIEW::MainControl::simulation_stoped_xpm_[]
staticprotected

Definition at line 897 of file mainControl.h.

SimulationThread* BALL::VIEW::MainControl::simulation_thread_
protected

Definition at line 886 of file mainControl.h.

bool BALL::VIEW::MainControl::stop_simulation_
protected

Definition at line 884 of file mainControl.h.

QAction* BALL::VIEW::MainControl::stop_simulation_action_
protected

Definition at line 913 of file mainControl.h.

QTimer BALL::VIEW::MainControl::timer_
protected

Definition at line 909 of file mainControl.h.

bool BALL::VIEW::MainControl::was_not_busy_
protected

Definition at line 907 of file mainControl.h.

String BALL::VIEW::MainControl::working_dir_
protected

Definition at line 900 of file mainControl.h.