//-------------------------------------------------------
interface View3D;
+ interface ColoredPrs3dCache;
/*! \brief %ColoredPrs3dHolder interface.
* Interface of 3d presentation's holder, which represents colored 3d presentations,
ColoredPrs3d::TimeStampsRange GetTimeStampsRange();
/*!
- * Gats input parameters of the last visited presentation.
+ * Gets input parameters of the last visited presentation.
*/
BasicInput GetBasicInput();
+
+ /*!
+ * Gets a %ColoredPrs3dCache, to which the holder belongs
+ */
+ ColoredPrs3dCache GetCache();
};
msgid "VisuGUI_Slider::MORE"
msgstr "More..."
+msgid "VisuGUI_Slider::CACHE_MEMORY"
+msgstr "Cache:"
+
+msgid "VisuGUI_Slider::FREE_MEMORY"
+msgstr "Free:"
+
msgid "VisuGUI_Slider::SPEED"
msgstr "Speed:"
connect( myLimitedMemoryButton, SIGNAL( toggled( bool ) ), myLimitedMemory, SLOT( setEnabled( bool ) ) );
- // Current state
- QGroupBox* aStateGroup = new QGroupBox( tr( "MEMORY STATE" ), this );
- aStateGroup->setColumnLayout( 0, Qt::Vertical );
- aStateGroup->layout()->setSpacing( 0 );
- aStateGroup->layout()->setMargin( 0 );
-
- QGridLayout* aStateLayout = new QGridLayout( aStateGroup->layout(), 2, 2 );
- aStateLayout->setSpacing(6);
- aStateLayout->setMargin(6);
-
- QLabel* aUsedMemoryLabel = new QLabel( tr( "USED_BY_CACHE" ), aStateGroup );
- myUsedMemory = new QLineEdit( aStateGroup );
- myUsedMemory->setText( QString::number( (double)myCache->GetMemorySize() ) + " Mb" );
- myUsedMemory->setReadOnly( true );
- myUsedMemory->setEnabled( false );
- myUsedMemory->setPaletteForegroundColor( Qt::black );
-
- QLabel* aFreeMemoryLabel = new QLabel( tr( "FREE" ), aStateGroup );
- myFreeMemory = new QLineEdit( aStateGroup );
- myFreeMemory->setText( QString::number( aLimitedMemoryMax ) + " Mb" );
- myFreeMemory->setReadOnly( true );
- myFreeMemory->setEnabled( false );
- myFreeMemory->setPaletteForegroundColor( Qt::black );
-
- aStateLayout->addWidget( aUsedMemoryLabel, 0, 0 );
- aStateLayout->addWidget( myUsedMemory, 0, 1 );
- aStateLayout->addWidget( aFreeMemoryLabel, 1, 0 );
- aStateLayout->addWidget( myFreeMemory, 1, 1 );
-
// Ok / Cancel
QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );
GroupButtons->setColumnLayout(0, Qt::Vertical );
QRadioButton* myMimimalMemoryButton;
QRadioButton* myLimitedMemoryButton;
QtxDblSpinBox* myLimitedMemory;
-
- QLineEdit* myUsedMemory;
- QLineEdit* myFreeMemory;
};
#endif
#include "SALOME_ListIteratorOfListIO.hxx"
+#include "VISU_PipeLine.hxx"
+
#include "VISU_Actor.h"
#include "VVTK_MainWindow.h"
#include <qlabel.h>
#include <qlayout.h>
#include <qhbox.h>
+#include <qhbuttongroup.h>
#include <qpushbutton.h>
#include <qtoolbutton.h>
#include <qslider.h>
QVBoxLayout* aBasicLayout = new QVBoxLayout( aWidget, 11, 6 );
// Slider and time stamps
- QHBoxLayout* aSliderLayout = new QHBoxLayout( 0, 0, 6);
+ QHBoxLayout* aSliderLayout = new QHBoxLayout( 0, 0, 6 );
myFirstTimeStamp = new QLabel( aWidget );
myFirstTimeStamp->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
mySlider = new QSlider( aWidget );
mySlider->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
mySlider->setOrientation( QSlider::Horizontal );
- //mySlider->setTickmarks( QSlider::Below );
mySlider->setTracking( false );
aSliderLayout->addWidget( mySlider );
aBasicLayout->addLayout( aSliderLayout );
// Buttons
- QHBoxLayout* aButtonsLayout = new QHBoxLayout( 0, 0, 6);
+ QHBoxLayout* aButtonsLayout = new QHBoxLayout( 0, 0, 6 );
myMoreButton = new QPushButton( tr( "MORE" ), aWidget );
myMoreButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
myFirstButton = new QToolButton( aWidget );
myFirstButton->setIconSet( aResourceMgr->loadPixmap( "VISU", tr( "ICON_SLIDER_FIRST" ) ) );
- //myFirstButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
aButtonsLayout->addWidget( myFirstButton );
myPreviousButton = new QToolButton( aWidget );
myPreviousButton->setIconSet( aResourceMgr->loadPixmap( "VISU", tr( "ICON_SLIDER_PREVIOUS" ) ) );
- //myPreviousButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
aButtonsLayout->addWidget( myPreviousButton );
myPlayButton = new QToolButton( aWidget );
myPlayButton->setIconSet( aResourceMgr->loadPixmap( "VISU", tr( "ICON_SLIDER_PLAY" ) ) );
- //myPlayButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
myPlayButton->setToggleButton( true );
aButtonsLayout->addWidget( myPlayButton );
myNextButton = new QToolButton( aWidget );
myNextButton->setIconSet( aResourceMgr->loadPixmap( "VISU", tr( "ICON_SLIDER_NEXT" ) ) );
- //myNextButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
aButtonsLayout->addWidget( myNextButton );
myLastButton = new QToolButton( aWidget );
myLastButton->setIconSet( aResourceMgr->loadPixmap( "VISU", tr( "ICON_SLIDER_LAST" ) ) );
- //myLastButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
aButtonsLayout->addWidget( myLastButton );
aButtonsLayout->addItem( new QSpacerItem( 24, 24, QSizePolicy::Expanding, QSizePolicy::Minimum ) );
+ // Memory state
+ QLabel* aCacheMemoryLabel = new QLabel( tr( "CACHE_MEMORY" ), aWidget );
+ aCacheMemoryLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+ aButtonsLayout->addWidget( aCacheMemoryLabel );
+
+ myCacheMemory = new QLabel( aWidget );
+ myCacheMemory->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+ aButtonsLayout->addWidget( myCacheMemory );
+
+ QLabel* aFreeMemoryLabel = new QLabel( tr( "FREE_MEMORY" ), aWidget );
+ aFreeMemoryLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+ aButtonsLayout->addWidget( aFreeMemoryLabel );
+
+ myFreeMemory = new QLabel( aWidget );
+ myFreeMemory->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+ aButtonsLayout->addWidget( myFreeMemory );
+
+ aButtonsLayout->addItem( new QSpacerItem( 24, 24, QSizePolicy::Expanding, QSizePolicy::Minimum ) );
+
+ // Speed
QLabel* aSpeedLabel = new QLabel( tr( "SPEED" ), aWidget );
aSpeedLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
aButtonsLayout->addWidget( aSpeedLabel );
mySpeedBox->setValue( 50 );
aButtonsLayout->addWidget( mySpeedBox );
+ // AVI
myAVIBox = new QCheckBox( tr( "AVI" ), aWidget );
myAVIBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
myAVIBox->setEnabled( false );
if( aNumber == aTimeStampNumber )
a_current_index = an_index;
}
+ // work around - to update controls' sizes
myTimeStampStrings->setFont(myTimeStampStrings->font());
myTimeStampStrings->updateGeometry();
}
+void VisuGUI_Slider::updateMemoryState()
+{
+ if( myHolderList.empty() )
+ return;
+
+ VISU::ColoredPrs3dHolder_var aHolder = myHolderList.front();
+
+ VISU::ColoredPrs3dCache_var aCache = aHolder->GetCache();
+ CORBA::Float aCacheMemory = aCache->GetMemorySize();
+ myCacheMemory->setText( QString::number( aCacheMemory ) + " Mb" );
+
+ long aMb = 1024 * 1024;
+ double aFreeMemory = (double)VISU_PipeLine::GetAvailableMemory( 2048 * aMb ) / (double)aMb;
+ myFreeMemory->setText( QString::number( aFreeMemory ) + " Mb" );
+}
+
void VisuGUI_Slider::onSelectionChanged()
{
//cout << "VisuGUI_Slider::onSelectionChanged()" << endl;
}
enableControls( !myHolderList.empty() );
+ updateMemoryState();
}
void VisuGUI_Slider::onTimeStampActivated( int value )
myTimeStampStrings->setCurrentItem( value );
myTimeStampIndices->setCurrentItem( value );
+
+ updateMemoryState();
}
void VisuGUI_Slider::onSpeedChanged( int value )
LightApp_SelectionMgr* theSelectionMgr );
virtual ~VisuGUI_Slider();
-public:
-
- virtual void enableControls( bool );
-
public slots:
virtual void onSelectionChanged();
virtual void onTimeout();
+protected:
+ virtual void enableControls( bool );
+ virtual void updateMemoryState();
+
private:
VisuGUI_Module* myModule;
VVTK_MainWindow* myMainWindow;
QToolButton* myNextButton;
QToolButton* myLastButton;
+ QLabel* myCacheMemory;
+ QLabel* myFreeMemory;
+
QSpinBox* mySpeedBox;
QCheckBox* myAVIBox;
VISU_Gen_i.cc \
VISU_CorbaMedConvertor.cxx \
VISU_DumpPython.cc \
- SALOME_GenericObjPtr.cc
+ SALOME_GenericObjPointer.cc
LIB_MOC = \
VISU_TimeAnimation.h
VISU_ColoredPrs3dCache_i.hh \
VISU_ColoredPrs3dHolder_i.hh \
VISU_ColoredPrs3dFactory.hh \
- SALOME_GenericObjPtr.hh
+ SALOME_GenericObjPointer.hh
# additionnal information to compil and link file
CPPFLAGS += \
--- /dev/null
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+// File : SALOME_GenericObjPtr.cc
+// Author : Oleg UVAROV
+// Module : SALOME
+
+#include "SALOME_GenericObjPtr.hh"
+
+using namespace SALOME;
+
+//----------------------------------------------------------------------------
+GenericObjPtrBase
+::GenericObjPtrBase() :
+ Object(0)
+{
+ // Add a reference to the object.
+ this->Register();
+}
+
+//----------------------------------------------------------------------------
+GenericObjPtrBase
+::GenericObjPtrBase(GenericObj_i* r):
+ Object(r)
+{
+ // Add a reference to the object.
+ this->Register();
+}
+
+//----------------------------------------------------------------------------
+GenericObjPtrBase
+::GenericObjPtrBase(const GenericObjPtrBase& r):
+ Object(r.Object)
+{
+ // Add a reference to the object.
+ this->Register();
+}
+
+//----------------------------------------------------------------------------
+GenericObjPtrBase
+::GenericObjPtrBase(GenericObj_i* r, const GenericObjPtrBase::NoReference&):
+ Object(r)
+{
+ // Do not add a reference to the object because we received the
+ // NoReference argument.
+}
+
+//----------------------------------------------------------------------------
+GenericObjPtrBase
+::~GenericObjPtrBase()
+{
+ // The main pointer must be set to NULL before calling UnRegister,
+ // so use a local variable to save the pointer. This is because the
+ // garbage collection reference graph traversal may make it back to
+ // this smart pointer, and we do not want to include this reference.
+ if(GenericObj_i* object = this->Object)
+ {
+ this->Object = 0;
+ object->Destroy();
+ }
+}
+
+//----------------------------------------------------------------------------
+GenericObjPtrBase&
+GenericObjPtrBase
+::operator=(GenericObj_i* r)
+{
+ // This is an exception-safe assignment idiom that also gives the
+ // correct order of register/unregister calls to all objects
+ // involved. A temporary is constructed that references the new
+ // object. Then the main pointer and temporary are swapped and the
+ // temporary's destructor unreferences the old object.
+ GenericObjPtrBase(r).Swap(*this);
+ return *this;
+}
+
+//----------------------------------------------------------------------------
+GenericObjPtrBase&
+GenericObjPtrBase
+::operator=(const GenericObjPtrBase& r)
+{
+ // This is an exception-safe assignment idiom that also gives the
+ // correct order of register/unregister calls to all objects
+ // involved. A temporary is constructed that references the new
+ // object. Then the main pointer and temporary are swapped and the
+ // temporary's destructor unreferences the old object.
+ GenericObjPtrBase(r).Swap(*this);
+ return *this;
+}
+
+//----------------------------------------------------------------------------
+void GenericObjPtrBase
+::Swap(GenericObjPtrBase& r)
+{
+ // Just swap the pointers. This is used internally by the
+ // assignment operator.
+ GenericObj_i* temp = r.Object;
+ r.Object = this->Object;
+ this->Object = temp;
+}
+
+//----------------------------------------------------------------------------
+void GenericObjPtrBase
+::Register()
+{
+ // Add a reference only if the object is not NULL.
+ if(this->Object)
+ this->Object->Register();
+}
--- /dev/null
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+// File : SALOME_GenericObjPtr.hh
+// Author : Oleg UVAROV
+// Module : SALOME
+
+#ifndef SALOME_GenericObjPointer_HH
+#define SALOME_GenericObjPointer_HH
+
+#include "SALOME_GenericObj_i.hh"
+
+namespace SALOME
+{
+ class GenericObjPtrBase
+ {
+ public:
+ // Description:
+ // Initialize smart pointer to NULL.
+ GenericObjPtrBase();
+
+ // Description:
+ // Initialize smart pointer to given object.
+ GenericObjPtrBase( GenericObj_i* );
+
+ // Description:
+ // Initialize smart pointer with a new reference to the same object
+ // referenced by given smart pointer.
+ GenericObjPtrBase( const GenericObjPtrBase& );
+
+ // Description:
+ // Destroy smart pointer and remove the reference to its object.
+ ~GenericObjPtrBase();
+
+ // Description:
+ // Assign object to reference. This removes any reference to an old object.
+ GenericObjPtrBase& operator=( GenericObj_i* );
+ GenericObjPtrBase& operator=( const GenericObjPtrBase& );
+
+ // Description:
+ // Get the contained pointer.
+ GenericObj_i* GetPointer() const
+ {
+ return this->Object;
+ }
+
+ protected:
+ // Initialize smart pointer to given object, but do not increment
+ // reference count. The destructor will still decrement the count.
+ // This effectively makes it an auto-ptr.
+ class NoReference {};
+ GenericObjPtrBase(GenericObj_i* r, const NoReference&);
+
+ // Pointer to the actual object.
+ GenericObj_i* Object;
+
+ private:
+ // Internal utility methods.
+ void Swap( GenericObjPtrBase& );
+ void Register();
+ };
+
+ template <class T>
+ class GenericObjPtr: public GenericObjPtrBase
+ {
+ public:
+ // Description:
+ // Initialize smart pointer to NULL.
+ GenericObjPtr() {}
+
+ // Description:
+ // Initialize smart pointer to given object.
+ GenericObjPtr(T* r): GenericObjPtrBase(r) {}
+
+ // Description:
+ // Initialize smart pointer with a new reference to the same object
+ // referenced by given smart pointer.
+ GenericObjPtr(const GenericObjPtrBase& r): GenericObjPtrBase(r) {}
+
+ // Description:
+ // Assign object to reference. This removes any reference to an old
+ // object.
+ GenericObjPtr& operator=(T* r)
+ {
+ this->GenericObjPtrBase::operator=(r);
+ return *this;
+ }
+
+ // Description:
+ // Assign object to reference. This removes any reference to an old
+ // object.
+ GenericObjPtr& operator=(const GenericObjPtrBase& r)
+ {
+ this->GenericObjPtrBase::operator=(r);
+ return *this;
+ }
+
+ // Description:
+ // Get the contained pointer.
+ T* GetPointer() const
+ {
+ return dynamic_cast<T*>(this->Object);
+ }
+
+ // Description:
+ // Get the contained pointer.
+ operator T* () const
+ {
+ return dynamic_cast<T*>(this->Object);
+ }
+
+ // Description:
+ // Dereference the pointer and return a reference to the contained
+ // object.
+ T& operator*() const
+ {
+ return *dynamic_cast<T*>(this->Object);
+ }
+
+ // Description:
+ // Provides normal pointer target member access using operator ->.
+ T* operator->() const
+ {
+ return dynamic_cast<T*>(this->Object);
+ }
+
+ // Description:
+ // Create an instance of an object.
+ static GenericObjPtr<T> New()
+ {
+ return GenericObjPtr<T>(T::New(), NoReference());
+ }
+
+ protected:
+ GenericObjPtr(T* r, const NoReference& n): GenericObjPtrBase(r, n) {}
+ };
+}
+
+#endif
VISU::ColoredPrs3dCache_i
::SetMemoryMode(VISU::ColoredPrs3dCache::MemoryMode theMode)
{
+ VISU::ColoredPrs3dCache::MemoryMode aCurrentMode = GetMemoryMode();
+
+ if( aCurrentMode == VISU::ColoredPrs3dCache::LIMITED &&
+ theMode == VISU::ColoredPrs3dCache::MINIMAL )
+ {
+ ClearCache();
+ }
+
myMemoryMode = theMode;
}
return false;
}
+
+
+//----------------------------------------------------------------------------
+void
+VISU::ColoredPrs3dCache_i
+::ClearCache()
+{
+ TColoredPrs3dHolderMap::const_iterator aHolderIter = myHolderMap.begin();
+ TColoredPrs3dHolderMap::const_iterator aHolderIterEnd = myHolderMap.end();
+ for(; aHolderIter != aHolderIterEnd; aHolderIter++){
+ const TLastVisitedPrsList& aPrsList = aHolderIter->second;
+ TLastVisitedPrsList::const_iterator aPrsIter = aPrsList.begin();
+ TLastVisitedPrsList::const_iterator aPrsIterEnd = aPrsList.end();
+ for(; aPrsIter != aPrsIterEnd; aPrsIter++){
+ if(TPrs3dPtr aPrs3d = *aPrsIter)
+ {
+ }
+ }
+ }
+
+
+}
#include "VISU_ColoredPrs3dFactory.hh"
-#include "SALOME_GenericObjPtr.hh"
+#include "SALOME_GenericObjPointer.hh"
namespace VISU
{
const VISU::ColoredPrs3dHolder::BasicInput& theInput,
VISU::View3D_ptr theView3D);
+ void
+ ClearCache();
+
//----------------------------------------------------------------------------
virtual int
IsPossible(VISU::VISUType theType,
}
+//----------------------------------------------------------------------------
+VISU::ColoredPrs3dCache_ptr
+VISU::ColoredPrs3dHolder_i
+::GetCache()
+{
+ return myCache._this();
+}
+
+
//----------------------------------------------------------------------------
VISU::VISUType
VISU::ColoredPrs3dHolder_i
VISU::ColoredPrs3d::TimeStampsRange*
GetTimeStampsRange();
- //! Gats input parameters of the last visited presentation.
+ //! Gets input parameters of the last visited presentation.
VISU::ColoredPrs3dHolder::BasicInput*
GetBasicInput();
+ //----------------------------------------------------------------------------
+ //! Gets a ColoredPrs3dCache, to which the holder belongs
+ VISU::ColoredPrs3dCache_ptr
+ GetCache();
+
//----------------------------------------------------------------------------
virtual
VISU::VISUType