|
|
|
//-*-C++-*-
|
|
|
|
/*
|
|
|
|
**************************************************************************
|
|
|
|
description
|
|
|
|
--------------------
|
|
|
|
copyright : (C) 2000-2002 by Andreas Zehender
|
|
|
|
email : zehender@kde.org
|
|
|
|
**************************************************************************
|
|
|
|
|
|
|
|
**************************************************************************
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
**************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef PMPART_H
|
|
|
|
#define PMPART_H
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include <config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <kapplication.h>
|
|
|
|
#include <kaccel.h>
|
|
|
|
#include <kurl.h>
|
|
|
|
#include <kparts/part.h>
|
|
|
|
#include <kparts/browserextension.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
#include <tqptrlist.h>
|
|
|
|
#include <tqvaluelist.h>
|
|
|
|
#include <kglobal.h>
|
|
|
|
#include <klocale.h>
|
|
|
|
|
|
|
|
#include "pmobject.h"
|
|
|
|
#include "pmcommandmanager.h"
|
|
|
|
#include "pmpartiface.h"
|
|
|
|
|
|
|
|
class PMView;
|
|
|
|
class PMShell;
|
|
|
|
class PMObjectDrag;
|
|
|
|
class PMScene;
|
|
|
|
class PMCamera;
|
|
|
|
class PMPovrayWidget;
|
|
|
|
class PMParser;
|
|
|
|
|
|
|
|
class PMBrowserExtension;
|
|
|
|
class PMSymbolTable;
|
|
|
|
class PMDeclare;
|
|
|
|
|
|
|
|
class PMPrototypeManager;
|
|
|
|
class PMInsertRuleSystem;
|
|
|
|
class PMIOManager;
|
|
|
|
|
|
|
|
class TQMimeSource;
|
|
|
|
class KAction;
|
|
|
|
class KSelectAction;
|
|
|
|
class PMComboAction;
|
|
|
|
class PMSpinBoxAction;
|
|
|
|
class PMLabelAction;
|
|
|
|
class KProcess;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The part for kpovmodeler (povray document)
|
|
|
|
*/
|
|
|
|
class PMPart : public KParts::ReadWritePart, virtual public PMPartIface
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* construtor of PMPart, calls all init functions to create the
|
|
|
|
* application.
|
|
|
|
*/
|
|
|
|
PMPart( TQWidget* parentWidget, const char* widgetName,
|
|
|
|
TQObject* tqparent, const char* name, bool readWrite,
|
|
|
|
PMShell* shell = 0 );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* construtor of PMPart, calls all init functions to create the
|
|
|
|
* application. It does not create the main widget.
|
|
|
|
*/
|
|
|
|
PMPart( TQWidget* parentWidget, const char* widgetName,
|
|
|
|
TQObject* tqparent, const char* name, bool readWrite,
|
|
|
|
bool onlyCutPaste, PMShell* shell = 0 );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Destructor
|
|
|
|
*/
|
|
|
|
~PMPart( );
|
|
|
|
/**
|
|
|
|
* deletes the document's contents
|
|
|
|
*/
|
|
|
|
void deleteContents( );
|
|
|
|
/**
|
|
|
|
* initializes the document generally
|
|
|
|
*/
|
|
|
|
bool newDocument( );
|
|
|
|
/**
|
|
|
|
* closes the actual document
|
|
|
|
*/
|
|
|
|
void closeDocument( );
|
|
|
|
/**
|
|
|
|
* Exports the scene as povray code
|
|
|
|
*/
|
|
|
|
bool exportPovray( const KURL& url );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* returns the toplevel object
|
|
|
|
*/
|
|
|
|
PMScene* scene( ) const { return m_pScene; }
|
|
|
|
/**
|
|
|
|
* Returns a pointer to the shell if there is one
|
|
|
|
*/
|
|
|
|
PMShell* shell( ) const { return m_pShell; }
|
|
|
|
/**
|
|
|
|
* saves settings
|
|
|
|
*/
|
|
|
|
void saveConfig( KConfig* cfg );
|
|
|
|
/**
|
|
|
|
* loads settings
|
|
|
|
*/
|
|
|
|
void restoreConfig( KConfig* cfg );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Updates the sorted list of selected objects if necessary and
|
|
|
|
* returns a reference to the list.
|
|
|
|
*/
|
|
|
|
const PMObjectList& selectedObjects( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Executes the command cmd.
|
|
|
|
*
|
|
|
|
* All changes to the document have to be made
|
|
|
|
* with @ref PMCommand objects for undo/redo. Each slot that changes the
|
|
|
|
* document creates a PMCommand object and calls this function.
|
|
|
|
*
|
|
|
|
* If this function returns false, the command was not executed
|
|
|
|
* and the command object was deleted.
|
|
|
|
*/
|
|
|
|
bool executeCommand( PMCommand* cmd );
|
|
|
|
/**
|
|
|
|
* Checks, where the objects in list can be inserted, as child
|
|
|
|
* or as sibling of obj and asks the user if there is more than one
|
|
|
|
* possibility
|
|
|
|
*
|
|
|
|
* Returns PMIFirstChild, PMILastChild, PMISibling or 0, if the objects
|
|
|
|
* should not be inserted.*/
|
|
|
|
int whereToInsert( PMObject* obj, const PMObjectList& list );
|
|
|
|
/**
|
|
|
|
* Checks, where the objects in list can be inserted, as child
|
|
|
|
* or as sibling of obj and asks the user if there is more than one
|
|
|
|
* possibility
|
|
|
|
*
|
|
|
|
* Returns PMIFirstChild, PMILastChild, PMISibling or 0, if the objects
|
|
|
|
* should not be inserted.*/
|
|
|
|
int whereToInsert( PMObject* obj, const TQStringList& list );
|
|
|
|
/**
|
|
|
|
* Asks the user, where to insert new objects.
|
|
|
|
*
|
|
|
|
* Returns PMIFirstChild, PMILastChild, PMISibling or 0, if the objects
|
|
|
|
* should not be inserted.*/
|
|
|
|
int whereToInsert( PMObject* obj );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the symbol table of this document
|
|
|
|
*/
|
|
|
|
PMSymbolTable* symbolTable( ) const { return m_pSymbolTable; }
|
|
|
|
/**
|
|
|
|
* Returns the first camera
|
|
|
|
*/
|
|
|
|
PMCamera* firstCamera( );
|
|
|
|
/**
|
|
|
|
* Returns an iterator to the list of cameras
|
|
|
|
*/
|
|
|
|
TQPtrListIterator<PMCamera> cameras( );
|
|
|
|
/**
|
|
|
|
* The active object
|
|
|
|
*/
|
|
|
|
PMObject* activeObject( ) const { return m_pActiveObject; }
|
|
|
|
/**
|
|
|
|
* The active object's name
|
|
|
|
*/
|
|
|
|
virtual TQString activeObjectName( );
|
|
|
|
/**
|
|
|
|
* Set the active object
|
|
|
|
*/
|
|
|
|
virtual bool setActiveObject( const TQString& name );
|
|
|
|
/**
|
|
|
|
* Get the valid properties of the currently active object
|
|
|
|
*/
|
|
|
|
virtual TQStringList getProperties( );
|
|
|
|
/**
|
|
|
|
* set a property on the active object
|
|
|
|
*/
|
|
|
|
virtual bool setProperty( const TQString& name, const PMVariant& value );
|
|
|
|
/**
|
|
|
|
* set a property on the active object
|
|
|
|
*/
|
|
|
|
virtual bool setProperty( const TQString& name, const TQString& value );
|
|
|
|
/**
|
|
|
|
* get a property on the active object
|
|
|
|
*/
|
|
|
|
virtual const PMVariant getProperty( const TQString& name );
|
|
|
|
/**
|
|
|
|
* get a property on the active object
|
|
|
|
*/
|
|
|
|
virtual const TQString getPropertyStr( const TQString& name );
|
|
|
|
/**
|
|
|
|
* List of control points of the active object
|
|
|
|
*/
|
|
|
|
PMControlPointList activeControlPoints( ) const { return m_controlPoints; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Called when the user moves some objects in the tree view.
|
|
|
|
* If obj is 0, the user moved the objects to another document (remove)
|
|
|
|
*
|
|
|
|
* Returns true if successful.
|
|
|
|
*/
|
|
|
|
bool dragMoveSelectionTo( PMObject* obj );
|
|
|
|
/**
|
|
|
|
* Called when the user drags some objects onto the tree view
|
|
|
|
*
|
|
|
|
* Returns true if successful.
|
|
|
|
*/
|
|
|
|
bool drop( PMObject* obj, TQMimeSource* e );
|
|
|
|
/**
|
|
|
|
* Tries to parse the data and insert the parsed objects
|
|
|
|
* as child or siblings of object obj
|
|
|
|
*
|
|
|
|
* Type is the actions description for the undo/redo menu.
|
|
|
|
*/
|
|
|
|
bool insertFromParser( const TQString& type, PMParser* parser, PMObject* obj );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns a pointer to the prototype manager
|
|
|
|
*/
|
|
|
|
PMPrototypeManager* prototypeManager( ) const { return m_pPrototypeManager; }
|
|
|
|
/**
|
|
|
|
* Returns a pointer to the insert rules system
|
|
|
|
*/
|
|
|
|
PMInsertRuleSystem* insertRuleSystem( ) const { return m_pInsertRuleSystem; }
|
|
|
|
/**
|
|
|
|
* Returns a pointer to the IO formats manager for this part
|
|
|
|
*/
|
|
|
|
PMIOManager* ioManager( ) const { return m_pIOManager; }
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
/**
|
|
|
|
* Opens the import file dialog
|
|
|
|
*/
|
|
|
|
void slotFileImport( );
|
|
|
|
/**
|
|
|
|
* Opens the export file dialog
|
|
|
|
*/
|
|
|
|
void slotFileExport( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* puts the marked text/object into the clipboard and removes the objects
|
|
|
|
*/
|
|
|
|
void slotEditCut( );
|
|
|
|
/**
|
|
|
|
* removes the selected object
|
|
|
|
*/
|
|
|
|
void slotEditDelete( );
|
|
|
|
/**
|
|
|
|
* puts the marked text/object into the clipboard
|
|
|
|
*/
|
|
|
|
void slotEditCopy( );
|
|
|
|
/**
|
|
|
|
* paste the clipboard into the document
|
|
|
|
*/
|
|
|
|
void slotEditPaste( );
|
|
|
|
/**
|
|
|
|
* undoes the last change
|
|
|
|
*/
|
|
|
|
void slotEditUndo( );
|
|
|
|
/**
|
|
|
|
* redoes the last undone command
|
|
|
|
*/
|
|
|
|
void slotEditRedo( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Called when an object is changed.
|
|
|
|
* Mode is a bit combination of @ref PMChange constants
|
|
|
|
*/
|
|
|
|
void slotObjectChanged( PMObject* obj, const int mode, TQObject* sender );
|
|
|
|
/**
|
|
|
|
* Called when an id is changed
|
|
|
|
*/
|
|
|
|
void slotIDChanged( PMObject* obj, const TQString& oldID );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMObject of type type
|
|
|
|
*/
|
|
|
|
void slotNewObject( const TQString& type );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMObject of type type at position pos.
|
|
|
|
* pos can be one of:
|
|
|
|
* FirstChild
|
|
|
|
* LastChild
|
|
|
|
* Sibling
|
|
|
|
*/
|
|
|
|
void slotNewObject( const TQString& type, const TQString& pos );
|
|
|
|
/**
|
|
|
|
* Inserts the new PMObject. The object will be deleted if it can't be
|
|
|
|
* inserted or the user aborts the action
|
|
|
|
*/
|
|
|
|
void slotNewObject( PMObject* newObject, int insertAs = 0 );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* List the known object types
|
|
|
|
*/
|
|
|
|
virtual TQStringList getObjectTypes( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds transformations to the object and calls slotNewObject
|
|
|
|
* for it
|
|
|
|
*/
|
|
|
|
void slotNewTransformedObject( PMObject* o );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMGlobalSettings
|
|
|
|
*/
|
|
|
|
void slotNewGlobalSettings( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMSkySphere
|
|
|
|
*/
|
|
|
|
void slotNewSkySphere( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMRainbow
|
|
|
|
*/
|
|
|
|
void slotNewRainbow( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMFog
|
|
|
|
*/
|
|
|
|
void slotNewFog( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMInterior
|
|
|
|
*/
|
|
|
|
void slotNewInterior( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMMedia
|
|
|
|
*/
|
|
|
|
void slotNewMedia( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMDensity
|
|
|
|
*/
|
|
|
|
void slotNewDensity( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMMaterial
|
|
|
|
*/
|
|
|
|
void slotNewMaterial( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMBox
|
|
|
|
*/
|
|
|
|
void slotNewBox( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMSphere
|
|
|
|
*/
|
|
|
|
void slotNewSphere( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMCylinder
|
|
|
|
*/
|
|
|
|
void slotNewCylinder( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMCone
|
|
|
|
*/
|
|
|
|
void slotNewCone( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMTorus
|
|
|
|
*/
|
|
|
|
void slotNewTorus( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMLathe
|
|
|
|
*/
|
|
|
|
void slotNewLathe( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMPrism
|
|
|
|
*/
|
|
|
|
void slotNewPrism( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMSurfaceOfRevolution
|
|
|
|
*/
|
|
|
|
void slotNewSurfaceOfRevolution( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMSuperquadricEllipsoid
|
|
|
|
*/
|
|
|
|
void slotNewSuperquadricEllipsoid( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMJuliaFractal
|
|
|
|
*/
|
|
|
|
void slotNewJuliaFractal( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMHeightField
|
|
|
|
*/
|
|
|
|
void slotNewHeightField( );
|
|
|
|
/**
|
|
|
|
* Inserts a new text object
|
|
|
|
*/
|
|
|
|
void slotNewText( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMBlob
|
|
|
|
*/
|
|
|
|
void slotNewBlob( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMBlobSphere
|
|
|
|
*/
|
|
|
|
void slotNewBlobSphere( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMBlobCylinder
|
|
|
|
*/
|
|
|
|
void slotNewBlobCylinder( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMPlane
|
|
|
|
*/
|
|
|
|
void slotNewPlane( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMPolynom
|
|
|
|
*/
|
|
|
|
void slotNewPolynom( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMDeclare
|
|
|
|
*/
|
|
|
|
void slotNewDeclare( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMObjectLink
|
|
|
|
*/
|
|
|
|
void slotNewObjectLink( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMCSG ( union )
|
|
|
|
*/
|
|
|
|
void slotNewUnion( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMCSG ( intersection )
|
|
|
|
*/
|
|
|
|
void slotNewIntersection( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMCSG ( difference )
|
|
|
|
*/
|
|
|
|
void slotNewDifference( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMCSG ( merge )
|
|
|
|
*/
|
|
|
|
void slotNewMerge( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMDisc
|
|
|
|
*/
|
|
|
|
void slotNewDisc( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMBicubicPatch
|
|
|
|
*/
|
|
|
|
void slotNewBicubicPatch( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMTriangle
|
|
|
|
*/
|
|
|
|
void slotNewTriangle( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMBoundedBy
|
|
|
|
*/
|
|
|
|
void slotNewBoundedBy( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMClippedBy
|
|
|
|
*/
|
|
|
|
void slotNewClippedBy( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMLight object
|
|
|
|
*/
|
|
|
|
void slotNewLight( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMLooksLike object
|
|
|
|
*/
|
|
|
|
void slotNewLooksLike( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMProjectedThrough object
|
|
|
|
*/
|
|
|
|
void slotNewProjectedThrough( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMCamera
|
|
|
|
*/
|
|
|
|
void slotNewCamera( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMTexture
|
|
|
|
*/
|
|
|
|
void slotNewTexture( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMPigment
|
|
|
|
*/
|
|
|
|
void slotNewPigment( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMNormal
|
|
|
|
*/
|
|
|
|
void slotNewNormal( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMSolidColor
|
|
|
|
*/
|
|
|
|
void slotNewSolidColor( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMTextureList
|
|
|
|
*/
|
|
|
|
void slotNewTextureList( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMColorList
|
|
|
|
*/
|
|
|
|
void slotNewColorList( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMPigmentList
|
|
|
|
*/
|
|
|
|
void slotNewPigmentList( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMNormalList
|
|
|
|
*/
|
|
|
|
void slotNewNormalList( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMDensityList
|
|
|
|
*/
|
|
|
|
void slotNewDensityList( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMFinish
|
|
|
|
*/
|
|
|
|
void slotNewFinish( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMPattern
|
|
|
|
*/
|
|
|
|
void slotNewPattern( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMBlendMapModifiers
|
|
|
|
*/
|
|
|
|
void slotNewBlendMapModifiers( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMTextureMap
|
|
|
|
*/
|
|
|
|
void slotNewTextureMap( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMMaterialMap
|
|
|
|
*/
|
|
|
|
void slotNewMaterialMap( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMColorMap
|
|
|
|
*/
|
|
|
|
void slotNewColorMap( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMPigmentMap
|
|
|
|
*/
|
|
|
|
void slotNewPigmentMap( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMNormalMap
|
|
|
|
*/
|
|
|
|
void slotNewNormalMap( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMBumpMap
|
|
|
|
*/
|
|
|
|
void slotNewBumpMap( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMSlopeMap
|
|
|
|
*/
|
|
|
|
void slotNewSlopeMap( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMDensityMap
|
|
|
|
*/
|
|
|
|
void slotNewDensityMap( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMSlope
|
|
|
|
*/
|
|
|
|
void slotNewSlope( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMWarp
|
|
|
|
*/
|
|
|
|
void slotNewWarp( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMImageMap
|
|
|
|
*/
|
|
|
|
void slotNewImageMap( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMQuickColor
|
|
|
|
*/
|
|
|
|
void slotNewQuickColor( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a new PMTranslate
|
|
|
|
*/
|
|
|
|
void slotNewTranslate( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMRotate
|
|
|
|
*/
|
|
|
|
void slotNewRotate( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMScale
|
|
|
|
*/
|
|
|
|
void slotNewScale( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMPovrayMatrix
|
|
|
|
*/
|
|
|
|
void slotNewMatrix( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMComment
|
|
|
|
*/
|
|
|
|
void slotNewComment( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMRaw
|
|
|
|
*/
|
|
|
|
void slotNewRaw( );
|
|
|
|
|
|
|
|
// POV-Ray 3.5 objects
|
|
|
|
/**
|
|
|
|
* Inserts a new PMIsoSurfate
|
|
|
|
*/
|
|
|
|
void slotNewIsoSurface( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMRadiosity
|
|
|
|
*/
|
|
|
|
void slotNewRadiosity( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMGlobalPhotons
|
|
|
|
*/
|
|
|
|
void slotNewGlobalPhotons( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMPhotons
|
|
|
|
*/
|
|
|
|
void slotNewPhotons( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMLightGroup
|
|
|
|
*/
|
|
|
|
void slotNewLightGroup( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMInteriorTexture
|
|
|
|
*/
|
|
|
|
void slotNewInteriorTexture( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMSphereSweep
|
|
|
|
*/
|
|
|
|
void slotNewSphereSweep( );
|
|
|
|
/**
|
|
|
|
* Inserts a new PMMesh
|
|
|
|
*/
|
|
|
|
void slotNewMesh( );
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Called when the clipboard contents changed
|
|
|
|
*/
|
|
|
|
void slotClipboardDataChanged( );
|
|
|
|
/**
|
|
|
|
* updates the undo/redo menu items
|
|
|
|
*/
|
|
|
|
void slotUpdateUndoRedo( const TQString& undo, const TQString& redo );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Starts rendering with povray
|
|
|
|
*/
|
|
|
|
virtual void slotRender( );
|
|
|
|
/**
|
|
|
|
* Opens the render settings
|
|
|
|
*/
|
|
|
|
void slotRenderSettings( );
|
|
|
|
/**
|
|
|
|
* Called when a render mode is selected
|
|
|
|
*/
|
|
|
|
void slotRenderMode( int index );
|
|
|
|
/**
|
|
|
|
* Called when the render modes combo action is plugged into the toolbar
|
|
|
|
*/
|
|
|
|
void slotRenderModeActionPlugged( );
|
|
|
|
/**
|
|
|
|
* Shows the render window
|
|
|
|
*/
|
|
|
|
void slotViewRenderWindow( );
|
|
|
|
/**
|
|
|
|
* Called when the visibility level has changed
|
|
|
|
*/
|
|
|
|
void slotVisibilityLevelChanged( int );
|
|
|
|
/**
|
|
|
|
* Called when the visibility level action is plugged into the toolbar
|
|
|
|
*/
|
|
|
|
void slotVisibilityActionPlugged( );
|
|
|
|
/**
|
|
|
|
* Called when the global detail level has changed
|
|
|
|
*/
|
|
|
|
void slotGlobalDetailLevelChanged( int level );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Opens the search library object dialog
|
|
|
|
*/
|
|
|
|
void slotSearchLibraryObject( );
|
|
|
|
|
|
|
|
/** */
|
|
|
|
virtual void setModified( );
|
|
|
|
/** */
|
|
|
|
virtual void setModified( bool modified );
|
|
|
|
|
|
|
|
/** Set the scene object. Must be used with extreme care. */
|
|
|
|
void setScene( PMScene* scene );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Emits the aboutToSave signal
|
|
|
|
*/
|
|
|
|
void slotAboutToSave( );
|
|
|
|
|
|
|
|
signals:
|
|
|
|
/**
|
|
|
|
* Signal that is emitted when an object is changed.
|
|
|
|
* Mode is a bit combination of @ref PMChange constants.
|
|
|
|
*/
|
|
|
|
void objectChanged( PMObject* obj, const int mode, TQObject* sender );
|
|
|
|
/**
|
|
|
|
* Signal that is emitted when the views have to be refreshed.
|
|
|
|
* Usually on newDocument or openDocument
|
|
|
|
*/
|
|
|
|
void refresh( );
|
|
|
|
/**
|
|
|
|
* Emitted when all views should delete all data
|
|
|
|
*/
|
|
|
|
void clear( );
|
|
|
|
/**
|
|
|
|
* Emitted, when the modified flag changes
|
|
|
|
*/
|
|
|
|
void modified( );
|
|
|
|
/**
|
|
|
|
* Emitted when the mouse is over a control point
|
|
|
|
*/
|
|
|
|
void controlPointMessage( const TQString& msg );
|
|
|
|
/**
|
|
|
|
* Emitted when the active render mode has changed
|
|
|
|
*/
|
|
|
|
void activeRenderModeChanged( );
|
|
|
|
/**
|
|
|
|
* Emitted before the scene is rendered.
|
|
|
|
*
|
|
|
|
* Views should ask the user to save pending changes.
|
|
|
|
*/
|
|
|
|
void aboutToRender( );
|
|
|
|
/**
|
|
|
|
* Emitted before the scene is saved or exported
|
|
|
|
*
|
|
|
|
* Views should ask the user to save pending changes.
|
|
|
|
*/
|
|
|
|
void aboutToSave( );
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/**
|
|
|
|
* reimplemented from @ref KParts::ReadOnlyPart
|
|
|
|
*/
|
|
|
|
virtual bool openFile( );
|
|
|
|
/**
|
|
|
|
* reimplemented from @ref KParts::ReadOnlyPart
|
|
|
|
*/
|
|
|
|
virtual bool saveFile( );
|
|
|
|
/**
|
|
|
|
* Inits all actions
|
|
|
|
*/
|
|
|
|
void initActions( );
|
|
|
|
/**
|
|
|
|
* Inits only actions related to copy&paste.
|
|
|
|
* Required by the library browser.
|
|
|
|
*/
|
|
|
|
void initCopyPasteActions( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* creates the widget of the part instance and sets
|
|
|
|
* it as the view
|
|
|
|
*/
|
|
|
|
void initView( TQWidget* tqparent, const char* name );
|
|
|
|
/**
|
|
|
|
* initializes the documents contents
|
|
|
|
*/
|
|
|
|
void initDocument( );
|
|
|
|
/**
|
|
|
|
* clears the selection
|
|
|
|
*/
|
|
|
|
void clearSelection( );
|
|
|
|
|
|
|
|
private:
|
|
|
|
/**
|
|
|
|
* Disables all actions, that modify the part
|
|
|
|
*/
|
|
|
|
void disableReadWriteActions( );
|
|
|
|
/**
|
|
|
|
* Updates all "new object" actions
|
|
|
|
*/
|
|
|
|
void updateNewObjectActions( );
|
|
|
|
/**
|
|
|
|
* Finds a free id of the format <prefix><number>.
|
|
|
|
*
|
|
|
|
* Adds the object to the symbol table.
|
|
|
|
*
|
|
|
|
* Returns the number.
|
|
|
|
*/
|
|
|
|
unsigned int findNewID( const TQString& prefix, unsigned int firstNumber,
|
|
|
|
PMDeclare* obj );
|
|
|
|
/**
|
|
|
|
* Updates the list of cameras
|
|
|
|
*/
|
|
|
|
void updateCameraList( );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Generic drop/paste function
|
|
|
|
*/
|
|
|
|
bool pasteOrDrop( const TQString& type, TQMimeSource* mime, PMObject* obj );
|
|
|
|
/**
|
|
|
|
* Generic cut/delete/remove function
|
|
|
|
*/
|
|
|
|
bool removeSelection( const TQString& type );
|
|
|
|
/**
|
|
|
|
* Updates the render mode combo action
|
|
|
|
*/
|
|
|
|
void updateRenderModes( );
|
|
|
|
/**
|
|
|
|
* Updates the visibility level action
|
|
|
|
*/
|
|
|
|
void updateVisibilityLevel( );
|
|
|
|
/**
|
|
|
|
* Updates the control point list
|
|
|
|
*/
|
|
|
|
void updateControlPoints( PMObject* oldActive );
|
|
|
|
|
|
|
|
PMView* m_pView;
|
|
|
|
PMShell* m_pShell;
|
|
|
|
PMBrowserExtension* m_pExtension;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* the selected objects, unsorted!
|
|
|
|
*/
|
|
|
|
PMObjectList m_selectedObjects;
|
|
|
|
/**
|
|
|
|
* the selected objects, sorted. This list is only created if necessary.
|
|
|
|
*/
|
|
|
|
PMObjectList m_sortedSelectedObjects;
|
|
|
|
/**
|
|
|
|
* true if the list m_sortedSelectedObjects is up to date
|
|
|
|
*/
|
|
|
|
bool m_sortedListUpToDate;
|
|
|
|
/**
|
|
|
|
* the active object
|
|
|
|
*/
|
|
|
|
PMObject* m_pActiveObject;
|
|
|
|
/**
|
|
|
|
* the new selection after a command was executed
|
|
|
|
*/
|
|
|
|
PMObject* m_pNewSelection;
|
|
|
|
/**
|
|
|
|
* List of all cameras
|
|
|
|
*/
|
|
|
|
TQPtrList<PMCamera> m_cameras;
|
|
|
|
/**
|
|
|
|
* true if the m_cameras list is up to date
|
|
|
|
*/
|
|
|
|
bool m_bCameraListUpToDate;
|
|
|
|
/**
|
|
|
|
* true if the clipboard data can be decoded
|
|
|
|
*/
|
|
|
|
bool m_canDecode;
|
|
|
|
/**
|
|
|
|
* Commands stack for undo and redo
|
|
|
|
*/
|
|
|
|
PMCommandManager m_commandManager;
|
|
|
|
/**
|
|
|
|
* The povray scene, top level object
|
|
|
|
*/
|
|
|
|
PMScene* m_pScene;
|
|
|
|
/**
|
|
|
|
* Number of added objects during the last executed command
|
|
|
|
*/
|
|
|
|
unsigned int m_numAddedObjects;
|
|
|
|
/**
|
|
|
|
* Number of insert errors during the last executed command
|
|
|
|
*/
|
|
|
|
unsigned int m_numInsertErrors;
|
|
|
|
/**
|
|
|
|
* Details of insert errors
|
|
|
|
*/
|
|
|
|
TQStringList m_insertErrorDetails;
|
|
|
|
/**
|
|
|
|
* The symbol table for this document
|
|
|
|
*/
|
|
|
|
PMSymbolTable* m_pSymbolTable;
|
|
|
|
/**
|
|
|
|
* The povray render window
|
|
|
|
*/
|
|
|
|
PMPovrayWidget* m_pPovrayWidget;
|
|
|
|
/**
|
|
|
|
* true if the new object actions have to be updated
|
|
|
|
*/
|
|
|
|
bool m_updateNewObjectActions;
|
|
|
|
/**
|
|
|
|
* Control points of the active object
|
|
|
|
*/
|
|
|
|
PMControlPointList m_controlPoints;
|
|
|
|
/**
|
|
|
|
* true if only copy'n'paste actions are available
|
|
|
|
*/
|
|
|
|
bool m_onlyCopyPaste;
|
|
|
|
|
|
|
|
// the actions
|
|
|
|
KAction* m_pImportAction;
|
|
|
|
KAction* m_pExportAction;
|
|
|
|
|
|
|
|
KAction* m_pCutAction;
|
|
|
|
KAction* m_pCopyAction;
|
|
|
|
KAction* m_pPasteAction;
|
|
|
|
KAction* m_pUndoAction;
|
|
|
|
KAction* m_pRedoAction;
|
|
|
|
KAction* m_pDeleteAction;
|
|
|
|
|
|
|
|
KAction* m_pNewGlobalSettingsAction;
|
|
|
|
KAction* m_pNewSkySphereAction;
|
|
|
|
KAction* m_pNewRainbowAction;
|
|
|
|
KAction* m_pNewFogAction;
|
|
|
|
KAction* m_pNewInteriorAction;
|
|
|
|
KAction* m_pNewMediaAction;
|
|
|
|
KAction* m_pNewDensityAction;
|
|
|
|
KAction* m_pNewMaterialAction;
|
|
|
|
KAction* m_pNewBoxAction;
|
|
|
|
KAction* m_pNewSphereAction;
|
|
|
|
KAction* m_pNewCylinderAction;
|
|
|
|
KAction* m_pNewConeAction;
|
|
|
|
KAction* m_pNewTorusAction;
|
|
|
|
KAction* m_pNewLatheAction;
|
|
|
|
KAction* m_pNewPrismAction;
|
|
|
|
KAction* m_pNewSurfaceOfRevolutionAction;
|
|
|
|
KAction* m_pNewSuperquadricEllipsoidAction;
|
|
|
|
KAction* m_pNewJuliaFractalAction;
|
|
|
|
KAction* m_pNewHeightFieldAction;
|
|
|
|
KAction* m_pNewTextAction;
|
|
|
|
|
|
|
|
KAction* m_pNewBlobAction;
|
|
|
|
KAction* m_pNewBlobSphereAction;
|
|
|
|
KAction* m_pNewBlobCylinderAction;
|
|
|
|
|
|
|
|
KAction* m_pNewPlaneAction;
|
|
|
|
KAction* m_pNewPolynomAction;
|
|
|
|
|
|
|
|
KAction* m_pNewDeclareAction;
|
|
|
|
KAction* m_pNewObjectLinkAction;
|
|
|
|
|
|
|
|
KAction* m_pNewUnionAction;
|
|
|
|
KAction* m_pNewDifferenceAction;
|
|
|
|
KAction* m_pNewIntersectionAction;
|
|
|
|
KAction* m_pNewMergeAction;
|
|
|
|
|
|
|
|
KAction* m_pNewBoundedByAction;
|
|
|
|
KAction* m_pNewClippedByAction;
|
|
|
|
|
|
|
|
KAction* m_pNewBicubicPatchAction;
|
|
|
|
KAction* m_pNewDiscAction;
|
|
|
|
KAction* m_pNewTriangleAction;
|
|
|
|
|
|
|
|
KAction* m_pNewLightAction;
|
|
|
|
KAction* m_pNewLooksLikeAction;
|
|
|
|
KAction* m_pNewProjectedThroughAction;
|
|
|
|
|
|
|
|
KAction* m_pNewCameraAction;
|
|
|
|
|
|
|
|
KAction* m_pNewTextureAction;
|
|
|
|
KAction* m_pNewPigmentAction;
|
|
|
|
KAction* m_pNewNormalAction;
|
|
|
|
KAction* m_pNewSolidColorAction;
|
|
|
|
KAction* m_pNewTextureListAction;
|
|
|
|
KAction* m_pNewColorListAction;
|
|
|
|
KAction* m_pNewPigmentListAction;
|
|
|
|
KAction* m_pNewNormalListAction;
|
|
|
|
KAction* m_pNewDensityListAction;
|
|
|
|
KAction* m_pNewFinishAction;
|
|
|
|
KAction* m_pNewPatternAction;
|
|
|
|
KAction* m_pNewBlendMapModifiersAction;
|
|
|
|
KAction* m_pNewTextureMapAction;
|
|
|
|
KAction* m_pNewMaterialMapAction;
|
|
|
|
KAction* m_pNewPigmentMapAction;
|
|
|
|
KAction* m_pNewColorMapAction;
|
|
|
|
KAction* m_pNewNormalMapAction;
|
|
|
|
KAction* m_pNewBumpMapAction;
|
|
|
|
KAction* m_pNewSlopeMapAction;
|
|
|
|
KAction* m_pNewDensityMapAction;
|
|
|
|
KAction* m_pNewSlopeAction;
|
|
|
|
KAction* m_pNewWarpAction;
|
|
|
|
KAction* m_pNewImageMapAction;
|
|
|
|
KAction* m_pNewQuickColorAction;
|
|
|
|
|
|
|
|
KAction* m_pNewTranslateAction;
|
|
|
|
KAction* m_pNewScaleAction;
|
|
|
|
KAction* m_pNewRotateAction;
|
|
|
|
KAction* m_pNewMatrixAction;
|
|
|
|
|
|
|
|
KAction* m_pNewCommentAction;
|
|
|
|
KAction* m_pNewRawAction;
|
|
|
|
|
|
|
|
// POV-Ray 3.5 objects
|
|
|
|
KAction* m_pNewIsoSurfaceAction;
|
|
|
|
KAction* m_pNewRadiosityAction;
|
|
|
|
KAction* m_pNewGlobalPhotonsAction;
|
|
|
|
KAction* m_pNewPhotonsAction;
|
|
|
|
KAction* m_pNewLightGroupAction;
|
|
|
|
KAction* m_pNewInteriorTextureAction;
|
|
|
|
KAction* m_pNewSphereSweepAction;
|
|
|
|
KAction* m_pNewMeshAction;
|
|
|
|
|
|
|
|
KAction* m_pSearchLibraryObjectAction;
|
|
|
|
|
|
|
|
PMComboAction* m_pRenderComboAction;
|
|
|
|
KAction* m_pRenderSettingsAction;
|
|
|
|
KAction* m_pViewRenderWindowAction;
|
|
|
|
KAction* m_pRenderAction;
|
|
|
|
PMSpinBoxAction* m_pVisibilityLevelAction;
|
|
|
|
PMLabelAction* m_pVisibilityLabelAction;
|
|
|
|
KSelectAction* m_pGlobalDetailAction;
|
|
|
|
PMLabelAction* m_pGlobalDetailLabelAction;
|
|
|
|
|
|
|
|
TQPtrList<KAction> m_readWriteActions;
|
|
|
|
|
|
|
|
PMPrototypeManager* m_pPrototypeManager;
|
|
|
|
PMInsertRuleSystem* m_pInsertRuleSystem;
|
|
|
|
PMIOManager* m_pIOManager;
|
|
|
|
};
|
|
|
|
|
|
|
|
class PMBrowserExtension : public KParts::BrowserExtension
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
TQ_OBJECT
|
|
|
|
friend class PMPart;
|
|
|
|
public:
|
|
|
|
PMBrowserExtension( PMPart* tqparent )
|
|
|
|
: KParts::BrowserExtension( tqparent, "PMBrowserExtension" )
|
|
|
|
{
|
|
|
|
KGlobal::locale()->insertCatalogue("kpovmodeler");
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual ~PMBrowserExtension( )
|
|
|
|
{
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|