35 #include <QGridLayout>
40 #include <qtextstream.h>
41 #include <vtkRenderWindow.h>
42 #include <vtkRenderWindowInteractor.h>
43 #include <vtkImageData.h>
45 #include "vtkRenderer.h"
46 #include "vtkRenderWindow.h"
48 #include "boost/bind.hpp"
91 mGlobalObliqueOrientation(false)
106 const unsigned VIEW_GROUP_COUNT = 5;
108 for (
unsigned i = 0; i < VIEW_GROUP_COUNT; ++i)
190 bool optimizedViews =
settings()->
value(
"optimizedViews").toBool();
244 for (
unsigned j=0; j<group->getWrappers().size(); ++j)
245 group->getWrappers()[j]->updateView();
251 if (key ==
"smartRender")
255 if (key ==
"renderingInterval")
259 if (key ==
"renderSpeedLogging")
294 QString activeView =
mActiveView->value<QString>();
320 base.addTextToElement(
"activeView",
mActiveView->value<QString>());
322 QDomElement slicePlanes3DNode = base.addElement(
"slicePlanes3D");
326 XMLNodeAdder viewGroupsNode(base.addElement(
"viewGroups"));
329 QDomElement viewGroupNode = viewGroupsNode.
addElement(
"viewGroup");
330 viewGroupNode.setAttribute(
"index", i);
337 base.addTextToElement(
"clippedImage", clippedImage);
350 QDomElement slicePlanes3DNode = base.
parseElement(
"slicePlanes3D");
354 QDomElement viewgroups = base.
parseElement(
"viewGroups");
355 QDomNode viewgroup = viewgroups.firstChild();
356 while (!viewgroup.isNull())
358 if (viewgroup.toElement().tagName() !=
"viewGroup")
360 viewgroup = viewgroup.nextSibling();
363 int index = viewgroup.toElement().attribute(
"index").toInt();
367 viewgroup = viewgroup.nextSibling();
373 viewgroup = viewgroup.nextSibling();
392 std::vector<ViewPtr> views =
mViewGroups[group]->getViews();
393 for (
unsigned i = 0; i < views.size(); ++i)
399 if (index == count++)
427 if (( groupIdx>=0 )&&( groupIdx <
mViewGroups.size() ))
451 report(QString(
"Layout %1 changed to %2").arg(widgetIndex).arg(layoutName));
477 bool foundSlice =
false;
478 std::vector<ViewWrapperPtr> wrappers =
mViewGroups[i]->getWrappers();
479 for (
unsigned j = 0; j < wrappers.size(); ++j)
482 foundSlice = foundSlice || wrappers[j]->getView()->getType() ==
View::VIEW_2D;
511 interactor->EnableRenderOff();
513 double rate =
settings()->
value(
"stillUpdateRate").value<
double>();
514 interactor->SetStillUpdateRate(rate);
517 interactor->SetDesiredUpdateRate(rate);
530 wrapper->initializePlane(viewData.
mPlane);
611 if (preferredGroup>=0)
613 return preferredGroup;
624 if (
settings()->value(
"Automation/autoShowNewData").toBool())
626 this->
getViewGroups()[0]->getData()->addDataSorted(data->getUid());
std::vector< ViewGroupPtr > getViewGroups()
QString qstring_cast(const T &val)
double parseDoubleFromElementWithDefault(QString name, double defaultValue)
std::vector< QPointer< ViewCollectionWidget > > mLayoutWidgets
int mGroup
what group to connect to. -1 means not set.
cxResource_EXPORT ProfilePtr profile()
SlicePlanesProxyPtr mSlicePlanesProxy
boost::shared_ptr< class ViewGroupData > ViewGroupDataPtr
void setSlicePlanesProxyInViewsUpTo2DViewgroup()
void reportError(QString msg)
void activeViewChanged()
emitted when the active view changes
boost::shared_ptr< class LayoutRepository > LayoutRepositoryPtr
ViewDataContainer::iterator iterator
#define CX_ASSERT(statement)
void saveGlobalSettings()
void fps(int number)
Emits number of frames per second.
void deactivateCurrentLayout()
deactivate the current layout, leaving an empty layout
boost::shared_ptr< class VisServices > VisServicesPtr
NavigationPtr getNavigation()
LayoutRepositoryPtr getLayoutRepository()
QDomElement addElement(QString name)
boost::shared_ptr< class CameraStyle > CameraStylePtr
void setRenderingInterval(int interval)
vtkSmartPointer< class vtkRenderWindowInteractor > vtkRenderWindowInteractorPtr
QActionGroup * createInteractorStyleActionGroup()
boost::shared_ptr< class ViewWrapper > ViewWrapperPtr
ViewWrapperPtr createViewWrapper(ViewPtr view, LayoutViewData viewData)
static VisualizationServiceOldPtr create(VisServicesPtr backend)
CameraControlPtr mCameraControl
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
boost::shared_ptr< class ViewManager > VisualizationServiceOldPtr
boost::shared_ptr< class InteractiveClipper > InteractiveClipperPtr
boost::shared_ptr< class View > ViewPtr
void autoShowData(DataPtr data)
boost::shared_ptr< class Navigation > NavigationPtr
void settingsChangedSlot(QString key)
void initializeActiveView()
void activateViews(ViewCollectionWidget *widget, LayoutData next)
QString getActiveView() const
returns the active view
boost::shared_ptr< ViewWrapper2D > ViewWrapper2DPtr
SyncedValuePtr mGlobal2DZoomVal
void updateCameraStyleActions()
void onLayoutRepositoryChanged(QString uid)
void addXml(QDomNode &parentNode)
void initializeGlobal2DZoom()
boost::shared_ptr< class Data > DataPtr
void parseXml(QDomNode viewmanagerNode)
PLANE_TYPE mPlane
ptNOPLANE means 3D
QWidget * getLayoutWidget(QWidget *parent, int index)
SyncedValuePtr mActiveView
InteractiveClipperPtr getClipper()
void activateView(ViewCollectionWidget *widget, LayoutViewData viewData)
static SyncedValuePtr create(QVariant val=QVariant())
void layoutChanged(QString uid)
boost::shared_ptr< class CyclicActionLogger > CyclicActionLoggerPtr
QDomElement addTextToElement(QString name, QString text)
boost::shared_ptr< class InteractiveCropper > InteractiveCropperPtr
InteractiveCropperPtr getCropper()
Settings * settings()
Shortcut for accessing the settings instance.
void setActiveLayout(const QString &uid, int widgetIndex=0)
change the layout
Helper class for managing a set of slice planes.
virtual int getActiveViewGroup() const
boost::shared_ptr< ViewWrapperVideo > ViewWrapperVideoPtr
int findGroupContaining3DViewGivenGuess(int preferredGroup)
CameraStyleInteractorPtr mCameraStyleInteractor
ViewManager(VisServicesPtr backend)
void enableRender(bool val)
CyclicActionLoggerPtr getRenderTimer()
QStringList mActiveLayout
the active layout (type)
LayoutRepositoryPtr mLayoutRepository
boost::shared_ptr< ViewWrapper3D > ViewWrapper3DPtr
QString parseTextFromElement(QString name)
void save()
save entire document.
bool renderingIsEnabled() const
boost::shared_ptr< class SyncedValue > SyncedValuePtr
std::vector< ViewGroupPtr > mViewGroups
void layoutWidgetDestroyed(QObject *object)
virtual ViewGroupDataPtr getViewGroup(int groupIdx) const
void syncOrientationMode(SyncedValuePtr val)
void activeLayoutChanged()
emitted when the active layout changes
RenderLoopPtr mRenderLoop
boost::shared_ptr< class ViewGroup > ViewGroupPtr
void setActiveView(QString viewUid)
void loadGlobalSettings()
Helper class for xml files used to store ssc/cx data.
InteractiveCropperPtr mInteractiveCropper
InteractiveClipperPtr mInteractiveClipper
QDomElement parseElement(QString name)
ViewPtr get3DView(int group=0, int index=0)
void renderingEnabledChanged()
emitted then rendering is enabled/disabled
QString getActiveLayout(int widgetIndex=0) const
returns the active layout