Core.hh 63.2 KB
Newer Older
1
/*===========================================================================*\
Jan Möbius's avatar
Jan Möbius committed
2
3
*                                                                            *
*                              OpenFlipper                                   *
Martin Schultz's avatar
Martin Schultz committed
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 *           Copyright (c) 2001-2015, RWTH-Aachen University                 *
 *           Department of Computer Graphics and Multimedia                  *
 *                          All rights reserved.                             *
 *                            www.openflipper.org                            *
 *                                                                           *
 *---------------------------------------------------------------------------*
 * This file is part of OpenFlipper.                                         *
 *---------------------------------------------------------------------------*
 *                                                                           *
 * Redistribution and use in source and binary forms, with or without        *
 * modification, are permitted provided that the following conditions        *
 * are met:                                                                  *
 *                                                                           *
 * 1. Redistributions of source code must retain the above copyright notice, *
 *    this list of conditions and the following disclaimer.                  *
 *                                                                           *
 * 2. Redistributions in binary form must reproduce the above copyright      *
 *    notice, this list of conditions and the following disclaimer in the    *
 *    documentation and/or other materials provided with the distribution.   *
 *                                                                           *
 * 3. Neither the name of the copyright holder nor the names of its          *
 *    contributors may be used to endorse or promote products derived from   *
 *    this software without specific prior written permission.               *
 *                                                                           *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS       *
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A           *
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  *
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,       *
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR        *
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF    *
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING      *
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS        *
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.              *
Jan Möbius's avatar
Jan Möbius committed
39
*                                                                            *
40
41
\*===========================================================================*/

42

Jan Möbius's avatar
 
Jan Möbius committed
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63




//=============================================================================
//
//  CLASS Core
//
//=============================================================================

/**
 * \file Core.hh
 * This File contains the header of the frameworks system core
*/

#ifndef MVIEWWIDGET_HH
#define MVIEWWIDGET_HH


//== INCLUDES =================================================================

64
#include <OpenFlipper/widgets/glWidget/QtBaseViewer.hh>
Jan Möbius's avatar
 
Jan Möbius committed
65
66

// QT INCLUDES
67
68
#include <QVariant>
#include <QMainWindow>
Jan Möbius's avatar
 
Jan Möbius committed
69
70
71
72
73
74
#include <QToolBox>
#include <QStackedWidget>
#include <QSplashScreen>

#include <QDockWidget>
#include <QVector>
75
#include <QProgressDialog>
Jan Möbius's avatar
 
Jan Möbius committed
76
77
78
79
80
81

#include <QtScript/QScriptEngine>
#include <QtScript/QtScript>

#include "OpenFlipper/INIFile/INIFile.hh"

82
83
#include "OpenFlipper/Logging/PluginLogging.hh"
#include "OpenFlipper/Scripting/ScriptingWrapper.hh"
Jan Möbius's avatar
 
Jan Möbius committed
84
85
86

// Prototypes for scripting
#include "OpenFlipper/Scripting/scriptPrototypes/prototypeVec3d.hh"
Jan Möbius's avatar
Jan Möbius committed
87
#include "OpenFlipper/Scripting/scriptPrototypes/prototypeVec4d.hh"
Jan Möbius's avatar
 
Jan Möbius committed
88
#include "OpenFlipper/Scripting/scriptPrototypes/prototypeMatrix4x4.hh"
89
#include "OpenFlipper/Scripting/scriptPrototypes/prototypeDataType.hh"
Jan Möbius's avatar
 
Jan Möbius committed
90
#include <OpenFlipper/Scripting/scriptWrappers/vec3dWrapper.hh>
Jan Möbius's avatar
Jan Möbius committed
91
#include <OpenFlipper/Scripting/scriptWrappers/vec4dWrapper.hh>
Jan Möbius's avatar
 
Jan Möbius committed
92
#include <OpenFlipper/Scripting/scriptWrappers/matrix4x4Wrapper.hh>
93
#include <OpenFlipper/Scripting/scriptWrappers/DataTypeWrapper.hh>
Jan Möbius's avatar
 
Jan Möbius committed
94
95
96
97
98
// #include <OpenFlipper/Scripting/scriptWrappers/ObjectIdWrapper.hh>

// Required Interface definition ( Some variables were defined there )
#include "OpenFlipper/BasePlugin/BaseInterface.hh"
#include "OpenFlipper/BasePlugin/FileInterface.hh"
99
#include "OpenFlipper/BasePlugin/TypeInterface.hh"
Jan Möbius's avatar
 
Jan Möbius committed
100
#include "OpenFlipper/BasePlugin/MenuInterface.hh"
101
#include "OpenFlipper/BasePlugin/InformationInterface.hh"
102
#include "OpenFlipper/BasePlugin/SelectionInterface.hh" // -> for SelectionInterface::PrimitiveType
Jan Möbius's avatar
 
Jan Möbius committed
103
104
105
106
#include "OpenFlipper/BasePlugin/ContextMenuInterface.hh"

#include <OpenFlipper/widgets/coreWidget/CoreWidget.hh>

107
108
109
// Process manager widget
#include <OpenFlipper/widgets/processManagerWidget/processManagerWidget.hh>

Jan Möbius's avatar
 
Jan Möbius committed
110
111
#include <OpenFlipper/common/GlobalOptions.hh>

Dirk Wilden's avatar
Dirk Wilden committed
112
113
#include <OpenFlipper/Core/PluginInfo.hh>

114
115
#include <ACG/Scenegraph/CoordsysNode.hh>

116
117
#include <OpenFlipper/threads/JobInfo.hh>

118
#include <OpenFlipper/common/InformationPlugins.hh>
119
#include "SpinBoxEventFilter.hh"
120

Jan Möbius's avatar
 
Jan Möbius committed
121
122
123
//== CLASS DEFINITION =========================================================


124
125
126
127
128
129
struct dataTypes {
  QString name;
  DataType type;
  TypeInterface* plugin;
};

Jan Möbius's avatar
 
Jan Möbius committed
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/** Core Widget of the Application
 */
class Core : public QObject
{
  Q_OBJECT

public:

  /// constructor
  Core();

  void init();

  /// destructor
  ~Core();

  /// Synchronise two viewers
  bool add_sync_host(const QString& _name);


private slots:

  /// Handle Mouse events when in Identifier mode
  void slotMouseEventIdentify( QMouseEvent* _event );
Jan Möbius's avatar
Mike:    
Jan Möbius committed
154
155
156
  
  /// Handle Mouse events when in Light mode
  void slotMouseEventLight( QMouseEvent* _event );
Jan Möbius's avatar
 
Jan Möbius committed
157
158
159
160
161
162
163
164

protected:

    //===========================================================================
    /** @name Signals send to Plugins
    * @{ */
   //===========================================================================
signals:
Jan Möbius's avatar
Jan Möbius committed
165
   /// Signal send to plugins when whole scene is cleared
Jan Möbius's avatar
Jan Möbius committed
166
   void allCleared();
167

Jan Möbius's avatar
 
Jan Möbius committed
168
   /// When this Signal is emitted all Plugins are informed that the object list changed
169
   void signalObjectUpdated(int);
Jan Möbius's avatar
 
Jan Möbius committed
170

Dirk Wilden's avatar
Dirk Wilden committed
171
   /// When this Signal is emitted all Plugins are informed that some type of update was performed on an object
172
   void signalObjectUpdated(int, const UpdateType&);
Dirk Wilden's avatar
Dirk Wilden committed
173
   
Jan Möbius's avatar
 
Jan Möbius committed
174
175
176
177
178
179
   /// When this Signal is emitted when a Wheel Event occures
   void PluginWheelEvent(QWheelEvent * , const std::string & );

   /// When this Signal is emitted when a Mouse Event occures
   void PluginMouseEvent(QMouseEvent* );

Jan Möbius's avatar
Mike:    
Jan Möbius committed
180
181
   /// Emitted when an light event occurs
   void PluginMouseEventLight( QMouseEvent* );
Jan Möbius's avatar
 
Jan Möbius committed
182

183
184
   /// This signal is emitted if the object has been changed (source/target)
   void objectSelectionChanged( int );
185

186
187
   /// This signal is emitted if one of the viewers updated its view
   void pluginViewChanged();
Jan Möbius's avatar
 
Jan Möbius committed
188

189
190
191
   /// This signal is emitted after the scene has been drawn
   void pluginSceneDrawn();

Dirk Wilden's avatar
Dirk Wilden committed
192
193
194
   /// The texture with the given name and filename has been added
   void addTexture( QString, QString , uint, int );

195
196
197
   /// The texture with the given name and image has been added
   void addTexture( QString, QImage , uint, int );

Jan Möbius's avatar
 
Jan Möbius committed
198
199
200
   /// The texture with the given name and filename has been added
   void addTexture( QString, QString , uint );

201
202
203
   /// The texture with the given name and image has been added
   void addTexture( QString, QImage , uint );

204
205
206
   /// The texture with the given name and filename has been added
   void addMultiTexture( QString _textureGroup , QString _name , QString _filename , int _id , int& _textureId );

207
208
209
   /// The texture with the given name and image has been added
   void addMultiTexture( QString _textureGroup , QString _name , QImage _image , int _id , int& _textureId );

Jan Möbius's avatar
 
Jan Möbius committed
210
211
212
213
214
215
216
217
218
   /// Tell the plugins to update the given texture
   void updateTexture( QString , int );

   /// Update all textures in the plugins
   void updateAllTextures( );

   /// This Signal is send to the plugins if a texture has been updated
   void updatedTextures( QString , int );

Dirk Wilden's avatar
Dirk Wilden committed
219
220
221
   /// A texture mode should be changed
   void setTextureMode(QString _textureName ,QString _mode, int _id);

Jan Möbius's avatar
 
Jan Möbius committed
222
223
224
   /// A texture mode should be changed
   void setTextureMode(QString _textureName ,QString _mode);

Dirk Wilden's avatar
Dirk Wilden committed
225
226
227
   /// Switch Texture Plugins to a given Mode
   void switchTexture( QString, int );

Jan Möbius's avatar
 
Jan Möbius committed
228
229
230
   /// Switch Texture Plugins to a given Mode
   void switchTexture( QString );

231
232
233
234
235
236
   /// Change the image for a given texture
   void textureChangeImage( QString _textureName , QImage& _image );

   /// Change the image for a given texture
   void textureChangeImage( QString _textureName , QImage& _image , int _id );

237
238
239
240
241
   ///fetch texture image
   void textureGetImage( QString _textureName , QImage& _image );

   ///fetch texture image
   void textureGetImage( QString _textureName , QImage& _image , int _id );
242
243
244
245

   /// get the texture index
   void textureIndex( QString _textureName, int _id, int& _index);
   
246
247
248
   /// get the texture index property name
   void textureIndexPropertyName( int _id, QString& _propertyName);
   
249
250
   /// get the texture name
   void textureName( int _id, int _textureIndex, QString& _textureName);
251
252
253
   
   /// get the texture's filename
   void textureFilename( int _id, QString _textureName, QString& _textureFilename);
254

255
256
257
258
259
   ///get current texture
   void getCurrentTexture( int _id, QString& _textureName );

   /// get a multi-texture's sub textures
   void getSubTextures( int _id, QString _multiTextureName, QStringList& _subTextures );
260
261
   
   /// SelectionInterface: This signal is emitted when a new toolbutton should be added
Jan Möbius's avatar
Jan Möbius committed
262
   void addSelectionEnvironment(QString _modeName, QString _description, QString _icon, QString& _handleName);
263
264
265
266
267
   
   /// SelectionInterface: This signal is emitted when a data type should be registered for a selection mode
   void registerType(QString _handleName, DataType _type);
   
   /// SelectionInterface: This signal is emitted when a selection plugin should handle a new primitive type
Jan Möbius's avatar
Jan Möbius committed
268
   void addPrimitiveType(QString _handleName, QString _name, QString _icon, SelectionInterface::PrimitiveType& _typeHandle);
269
270
   
   /// SelectionInterface: This signal is emitted when a custom selection mode is added
Jan Möbius's avatar
Jan Möbius committed
271
   void addCustomSelectionMode(QString _handleName, QString _modeName, QString _description, QString _icon,
272
                               SelectionInterface::PrimitiveType _associatedTypes, QString& _customIdentifier);
Jan Möbius's avatar
Jan Möbius committed
273
   void addCustomSelectionMode(QString _handleName, QString _modeName, QString _description, QString _icon,
274
275
                               SelectionInterface::PrimitiveType _associatedTypes, QString& _customIdentifier,
                               DataType _objectTypeRestriction);
276
277
278
   
   /// SelectionInterface: This signal is used to add non-interactive operations for a specific primitive type
   void addSelectionOperations(QString _handleName, QStringList _operationsList, QString _category, SelectionInterface::PrimitiveType _type);
279
280
281

   /// SelectionInterface: This signal is used to add interactive selection parameters for a specific primitive type
   void addSelectionParameters(QString _handleName, QWidget* _widget, QString _category, SelectionInterface::PrimitiveType _type);
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
   
   /// SelectionInterface: This signal is emitted when a non-interactive operation has been performed
   void selectionOperation(QString _operation);
  
   /// SelectionInterface: This signal is emitted when standard toggle selection is required
   void showToggleSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
   
   /// SelectionInterface: This signal is emitted when standard lasso selection is required
   void showLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
   
   /// SelectionInterface: This signal is emitted when standard volume lasso selection is required
   void showVolumeLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
   
   /// SelectionInterface: This signal is emitted when standard surface lasso selection is required
   void showSurfaceLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
   
   /// SelectionInterface: This signal is emitted when standard sphere selection is required
   void showSphereSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
   
   /// SelectionInterface: This signal is emitted when standard closest boundary selection is required
   void showClosestBoundarySelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
   
   /// SelectionInterface: This signal is emitted when standard flood fill selection is required
   void showFloodFillSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
306
307
308

   /// SelectionInterface: This signal is emitted when standard connected components selection is required
   void showComponentsSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
309
310
  
   /// SelectionInterface: This signal is emitted when standard toggle selection has been performed
311
   void toggleSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
312
313
314
315
316
317
318
319
320
321
322
   
   /// SelectionInterface: This signal is emitted when standard lasso selection has been performed
   void lassoSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
   
   /// SelectionInterface: This signal is emitted when standard volume lasso selection has been performed
   void volumeLassoSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
   
   /// SelectionInterface: This signal is emitted when standard surface lasso selection has been performed
   void surfaceLassoSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
   
   /// SelectionInterface: This signal is emitted when standard sphere selection has been performed
323
   void sphereSelection(QMouseEvent* _event, double _radius, SelectionInterface::PrimitiveType _currentType, bool _deselect);
324
325
   
   /// SelectionInterface: This signal is emitted when standard closest boundary selection has been performed
326
   void closestBoundarySelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
327
328
   
   /// SelectionInterface: This signal is emitted when standard flood fill selection has been performed
329
   void floodFillSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
330
   
331
332
333
   /// SelectionInterface: This signal is emitted when standard connected components selection has been performed
   void componentsSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);

334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
   /// SelectionInterface: This signal is emitted when a custom selection operation has been performed
   void customSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, QString _customIdentifier, bool _deselect);
  
   /// SelectionInterface: This signal is emitted when the active (selected) data types should be fetched
   void getActiveDataTypes(SelectionInterface::TypeList& _types);
   
   /// SelectionInterface: This signal is emitted when the active (selected) primitive type should be fetched
   void getActivePrimitiveType(SelectionInterface::PrimitiveType& _type);
   
   /// SelectionInterface: This signal is emitted if the current target restriction state is requested
   void targetObjectsOnly(bool& _targetsOnly);
   
   /// SelectionInterface: This signal is emitted when a selection should be loaded from a file
   void loadSelection(const INIFile& _file);
   
   /// SelectionInterface: This signal is emitted when a selection should be written into a file
   void saveSelection(INIFile& _file);
   
   /// SelectionInterface: This signal is emitted when a type selection plugin wants to listen to a key event
   void registerKeyShortcut(int _key, Qt::KeyboardModifiers _modifiers);
   
   /// SelectionInterface: This signal is emitted when a key shortcut has been pressed
   void keyShortcutEvent(int _key, Qt::KeyboardModifiers _modifiers = Qt::NoModifier);
357

Jan Möbius's avatar
 
Jan Möbius committed
358
359
360
361
362
363
364
365
366
367
368
369
   /// If an ini File is opened, this signal is send to Plugins capable of handling ini files
   void iniLoad( INIFile&, int );

   /// This signal is used to tell the plugins to save the data of _id to the given file
   void iniSave( INIFile& _ini ,int _id );

   /// This signal is used to tell the plugins to save their current status
   void iniSaveOptions(  INIFile& _ini );

   /// This signal is used to tell the plugins to load their new status
   void iniLoadOptions(  INIFile& _ini );

370
371
372
   /// This signal is used to tell the plugins to load their new status after objects are loaded
   void iniLoadOptionsLast(  INIFile& _ini );

373
374
375
   /// This signal is emitted before the core deletes its data and exits
   void saveOnExit( INIFile& _ini );

376
377
378
379
380
381
382
383
384
385
386
   /// Tell backup-plugin to create a backup
   void createBackup( int _objectid, QString _name, UpdateType _type = UPDATE_ALL);
   void createBackup( IdList _objectids, QString _name, std::vector<UpdateType> _types);

   /// Tell backup-plugin to undo/redo
   void undo(int _objectid);
   void redo(int _objectid);
   void undo();
   void redo();

   /// Backup Plugin tells other Plugins that a restore will happen
387
   void aboutToRestore(int _objectId);
Jan Möbius's avatar
Jan Möbius committed
388
   
389
   /// Backup Plugin tells other Plugins that a restore has happened
390
   void restored( int _objectId);
Jan Möbius's avatar
 
Jan Möbius committed
391
392
393
394

   /// Tell the plugins that a file has been opened ( -> Database)
   void openedFile( int _id );

Dirk Wilden's avatar
Dirk Wilden committed
395
396
397
   /// Tell the plugins that an empty object has been added
   void emptyObjectAdded( int _id);

Jan Möbius's avatar
 
Jan Möbius committed
398
399
400
   /// Called after all plugins are loaded
   void pluginsInitialized();

401
402
403
   /// Called after all plugins are loaded and additionally passes command line plugin options
   void pluginsInitialized(QVector<QPair<QString, QString>> const&);

404
405
406
   /// Tell plugins that the visibility of an object has changed
   void visibilityChanged(int _id);

Jan Möbius's avatar
Jan Möbius committed
407
408
409
   /// Tell plugins that object properties such as object names have been changed
   void objectPropertiesChanged( int _id );

410
411
412
   /// Called after an object has been deleted
   void objectDeleted( int );

Jan Möbius's avatar
 
Jan Möbius committed
413
414
415
416
417
418
419
420
   /** @} */

   //===========================================================================
    /** @name Slots called by the plugins
    * @{ */
   //===========================================================================
   private slots :

Jan Möbius's avatar
Jan Möbius committed
421
      /// Called by the plugins if they changed something in the object list (deleted, added, or other property changes)
422
      void slotObjectUpdated(int _identifier, const UpdateType& _type = UPDATE_ALL);
Jan Möbius's avatar
 
Jan Möbius committed
423

424
      /// Called when a plugin changes the visibility of an object
425
      void slotVisibilityChanged(int _id);
426

Jan Möbius's avatar
Jan Möbius committed
427
428
429
      /// Called by plugins if object properties like names have changed
      void slotObjectPropertiesChanged( int _id );

Jan Möbius's avatar
 
Jan Möbius committed
430
      /// Called by Plugins if they changed the active object
431
      void slotObjectSelectionChanged( int _id);
Jan Möbius's avatar
 
Jan Möbius committed
432
433

      /// Add a new picking mode to the examiner_widget_
Jan Möbius's avatar
Jan Möbius committed
434
      void slotAddPickMode( const std::string& _mode );
Jan Möbius's avatar
 
Jan Möbius committed
435
436

      /// Add a new and invisible picking mode to the examiner_widget_
Jan Möbius's avatar
Jan Möbius committed
437
      void slotAddHiddenPickMode( const std::string& _mode );
Jan Möbius's avatar
 
Jan Möbius committed
438

Dirk Wilden's avatar
Dirk Wilden committed
439
440
      /// Called by a plugin if it creates a texture
      void slotAddTexture( QString _textureName , QString _filename , uint _dimension , int _id );
441
442
443
      
      /// Called by a plugin if it creates a texture
      void slotAddTexture( QString _textureName , QImage _image , uint _dimension , int _id );
Dirk Wilden's avatar
Dirk Wilden committed
444

Jan Möbius's avatar
 
Jan Möbius committed
445
446
      /// Called by a plugin if it creates a texture
      void slotAddTexture( QString _textureName , QString _filename , uint _dimension );
447
448
449
      
      /// Called by a plugin if it creates a texture
      void slotAddTexture( QString _textureName , QImage _image , uint _dimension );
Jan Möbius's avatar
 
Jan Möbius committed
450

451
452
      /// Called by a plugin if it creates a multitexture
      void slotMultiTextureAdded( QString _textureGroup , QString _name , QString _filename , int _id , int& _textureId );
453
      void slotMultiTextureAdded( QString _textureGroup , QString _name , QString _filename , int _id , int* _textureId );
454
455
456
      
      /// Called by a plugin if it creates a multitexture
      void slotMultiTextureAdded( QString _textureGroup , QString _name , QImage _image , int _id , int& _textureId );
457

Jan Möbius's avatar
 
Jan Möbius committed
458
459
460
461
462
463
464
465
466
      /// Tell the plugins to update the given texture
      void slotUpdateTexture( QString _name , int _identifier);

      /// Update all textures in the plugins
      void slotUpdateAllTextures( );

      /// A Texture has been updated
      void slotTextureUpdated( QString _textureName , int _identifier );

Dirk Wilden's avatar
Dirk Wilden committed
467
468
469
      /// A texture mode should be changed
      void slotSetTextureMode(QString _textureName ,QString _mode, int _id);

Jan Möbius's avatar
 
Jan Möbius committed
470
471
472
      /// A texture mode should be changed
      void slotSetTextureMode(QString _textureName ,QString _mode);

Dirk Wilden's avatar
Dirk Wilden committed
473
474
475
      /// Tells Plugins to switch to the given Texture
      void slotSwitchTexture( QString _textureName, int _id );

Jan Möbius's avatar
 
Jan Möbius committed
476
477
478
      /// Tells Plugins to switch to the given Texture
      void slotSwitchTexture( QString _textureName );

479
480
481
482
483
484
      ///Called by plugins if texture image should be changed
      void slotTextureChangeImage( QString _textureName , QImage& _image );

      ///Called by plugins if texture image should be changed
      void slotTextureChangeImage( QString _textureName , QImage& _image , int _id );

485
486
487
488
489
490
      ///Called by plugins if texture image should be fetched
      void slotTextureGetImage( QString _textureName , QImage& _image );

      ///Called by plugins if texture image should be fetched
      void slotTextureGetImage( QString _textureName , QImage& _image , int _id );
      
491
492
493
      ///Called by plugins if texture index should be fetched
      void slotTextureIndex( QString _textureName, int _id, int& _index);
      
494
495
496
      ///Called by plugins if texture index property name should be fetched
      void slotTextureIndexPropertyName( int _id, QString& _propertyName);
      
497
498
499
      ///Called by plugins if texture name should be fetched
      void slotTextureName( int _id, int _textureIndex, QString& _textureName);
      
500
501
502
      ///Called by plugins if texture name should be fetched
      void slotTextureFilename( int _id, QString _textureName, QString& _textureFilename);
      
503
504
505
506
507
508
      ///Called by plugins if current texture should be retrieved
      void slotGetCurrentTexture( int _id, QString& _textureName );

      ///Called by plugins if a multi-texture's sub textures should be fetched
      void slotGetSubTextures( int _id, QString _multiTextureName, QStringList& _subTextures );

Jan Möbius's avatar
 
Jan Möbius committed
509
510
511
      /// A plugin wants to load a given file
      void slotLoad(QString _filename, DataType _type, int& _id);

Dirk Wilden's avatar
Dirk Wilden committed
512
      /// the load widget wants to load a given file
Matthias Möller's avatar
Matthias Möller committed
513
      void slotLoad(QStringList _filenames, IdList _pluginIDs);
Dirk Wilden's avatar
Dirk Wilden committed
514
      
Jan Möbius's avatar
 
Jan Möbius committed
515
      /// Called when a file has been opened
516
      void slotFileOpened ( int _id );
Jan Möbius's avatar
 
Jan Möbius committed
517
518
519

      /// Called when an empty object has been Added
      void slotEmptyObjectAdded ( int _id );
520
521
  
      /// SelectionInterface: Called when a new selection type button should be added to the toolbar
Jan Möbius's avatar
Jan Möbius committed
522
      void slotAddSelectionEnvironment(QString _modeName, QString _description, QString _icon, QString& _handleName);
523
524
525
526
527

      /// SelectionInterface: Called when a data type is added for a specific selection type
      void slotRegisterType(QString _handleName, DataType _type);

      /// SelectionInterface: Called when a new, non-standard primitive type should be handled
Jan Möbius's avatar
Jan Möbius committed
528
      void slotAddPrimitiveType(QString _handleName, QString _name, QString _icon, SelectionInterface::PrimitiveType& _typeHandle);
529

Jan Möbius's avatar
Jan Möbius committed
530
531
532
533
534
535
536
537
538
      /** \brief SelectionInterface: Add new selection mode for specified type
       *
       * @param _handleName             Handle of the selection mode
       * @param _modeName               User visible name of the selection mode
       * @param _description            Description of the mode
       * @param _icon                   Icon displayed in the selection toolbar
       * @param _associatedTypes        primitive types supported by this mode
       * @param _customIdentifier       Identifier of this mode
       */
Jan Möbius's avatar
Jan Möbius committed
539
      void slotAddCustomSelectionMode(QString _handleName, QString _modeName, QString _description, QString _icon,
540
                                      SelectionInterface::PrimitiveType _associatedTypes, QString& _customIdentifier);
Jan Möbius's avatar
Jan Möbius committed
541
542
543
544
545
546
547
548
549
550
551

      /** \brief  SelectionInterface: Add new selection mode for specified type
       *
       * @param _handleName             Handle of the selection mode
       * @param _modeName               User visible name of the selection mode
       * @param _description            Description of the mode
       * @param _icon                   Icon displayed in the selection toolbar
       * @param _associatedTypes        primitive types supported by this mode
       * @param _customIdentifier       Identifier of this mode
       * @param _objectTypeRestriction  Object types supported by this mode
       */
Jan Möbius's avatar
Jan Möbius committed
552
      void slotAddCustomSelectionMode(QString _handleName, QString _modeName, QString _description, QString _icon,
553
554
                                      SelectionInterface::PrimitiveType _associatedTypes, QString& _customIdentifier,
                                      DataType _objectTypeRestriction);
555
556
557
      
      /// SelectionInterface: Called in order to add non-interactive operations for a specific primitive type
      void slotAddSelectionOperations(QString _handleName, QStringList _operationsList, QString _category, SelectionInterface::PrimitiveType _type);
558
559
560

      /// SelectionInterface: Called in order to add interactive parameters for a specific primitive type
      void slotAddSelectionParameters(QString _handleName, QWidget* _widget, QString _category, SelectionInterface::PrimitiveType _type);
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
       
      /// SelectionInterface: Called when a non-interactive operation has been performed
      void slotSelectionOperation(QString _operation);

      /// SelectionInterface: Provide toggle selection operation for specific selection mode
      void slotShowToggleSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);

      /// SelectionInterface: Provide lasso selection operation for specific selection mode
      void slotShowLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);

      /// SelectionInterface: Provide volume lasso selection operation for specific selection mode
      void slotShowVolumeLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
      
      /// SelectionInterface: Provide surface lasso selection operation for specific selection mode
      void slotShowSurfaceLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);

      /// SelectionInterface: Provide sphere selection operation for specific selection mode
      void slotShowSphereSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);

      /// SelectionInterface: Provide closest boundary selection operation for specific selection mode
      void slotShowClosestBoundarySelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);

      /// SelectionInterface: Provide flood fill selection operation for specific selection mode
      void slotShowFloodFillSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);

586
587
588
      /// SelectionInterface: Provide connected components selection operation for specific selection mode
      void slotShowComponentsSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);

589
      /// SelectionInterface: Called when toggle selection operation has been performed
590
      void slotToggleSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
591
592
593
594
595
596
597
598
599
600
601

      /// SelectionInterface: Called when lasso selection operation has been performed
      void slotLassoSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);

      /// SelectionInterface: Called when volume lasso selection operation has been performed
      void slotVolumeLassoSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
      
      /// SelectionInterface: Called when surface lasso selection operation has been performed
      void slotSurfaceLassoSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);

      /// SelectionInterface: Called when sphere selection operation has been performed
602
      void slotSphereSelection(QMouseEvent* _event, double _radius, SelectionInterface::PrimitiveType _currentType, bool _deselect);
603
604

      /// SelectionInterface: Called when closest boundary selection operation has been performed
605
      void slotClosestBoundarySelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
606
607

      /// SelectionInterface: Called when flood fill selection operation has been performed
608
      void slotFloodFillSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
609

610
611
612
      /// SelectionInterface: Called when connected components selection operation has been performed
      void slotComponentsSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);

613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
      /// SelectionInterface: Called when custom selection operation has been performed
      void slotCustomSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, QString _customIdentifier, bool _deselect);

      /// SelectionInterface: Called when active (selected) data types should be fetched
      void slotGetActiveDataTypes(SelectionInterface::TypeList& _types);

      /// SelectionInterface: Called when active primitive type should be fetched
      void slotGetActivePrimitiveType(SelectionInterface::PrimitiveType& _type);
      
      /// SelectionInterface: Called when target restriction state should be fetched
      void slotTargetObjectsOnly(bool& _targetsOnly);
      
      /// SelectionInterface: Called when a selection should be loaded from a file
      void slotLoadSelection(const INIFile& _file);
      
      /// SelectionInterface: Called when a selection should be stored into a file
      void slotSaveSelection(INIFile& _file);
      
      /// SelectionInterface: Called when a key shortcut is to be registered
      void slotRegisterKeyShortcut(int _key, Qt::KeyboardModifiers _modifiers);
      
      /// SelectionInterface: Called when a key event occurred
      void slotKeyShortcutEvent(int _key, Qt::KeyboardModifiers _modifiers);
Jan Möbius's avatar
 
Jan Möbius committed
636

Jan Möbius's avatar
Jan Möbius committed
637
638
639
640
641
642
643
      /** \brief Called when a plugin requests a list of file-filters
      *
      * This function collects all available load filters from the file Plugins.
      * It is normally called via the Load/Save interface ( LoadSaveInterface ).
      *
      * @param _list Returns a list of all available file load filters
      */ 
Jan Möbius's avatar
 
Jan Möbius committed
644
645
      void slotGetAllFilters ( QStringList& _list);

646

647
648
      /// Called when a plugin wants to delete all objects
      void slotDeleteAllObjects( );
649
650
651
      
      /// Called to create inter plugin connections
      void slotCrossPluginConnect( QString _pluginName1, const char* _signal, QString _pluginName2, const char* _slot);
652

653
654
655
      /// Called to create inter plugin connections
      void slotCrossPluginConnectQueued( QString _pluginName1, const char* _signal, QString _pluginName2, const char* _slot);

656
657
658
      /// called to switch the renderer for a specific viewer
      void slotSetRenderer(unsigned int _viewer, QString _rendererName);

Jan Möbius's avatar
Jan Möbius committed
659
660
661
      /// called to get the currently active renderer renderer for a specific viewer
      void slotGetCurrentRenderer(unsigned int _viewer, QString& _rendererName);

Dirk Wilden's avatar
Dirk Wilden committed
662
      /// Get a Pointer to the Plugin with given _name (if it is loaded)
Jan Möbius's avatar
Jan Möbius committed
663
      //  void slotGetPlugin(QString _name, QObject* & _plugin );
Dirk Wilden's avatar
Dirk Wilden committed
664

Jan Möbius's avatar
 
Jan Möbius committed
665
666
667
668
669
670
671
672
673
674
675
   /** @} */

    //===========================================================================
    /** @name scriptable slot