Skip to content
Snippets Groups Projects
Commit 4d006b6c authored by Andreas Schenk's avatar Andreas Schenk
Browse files

added flag to allow creation of DataViewer outside the MDI window

added export for the button group of the overlay manager to allow attaching slots
added support for deleting overlays in the data viewer

Author: Jeff Lovelace
parent c8d59bc2
No related branches found
No related tags found
No related merge requests found
...@@ -154,6 +154,11 @@ void DataViewerProxy::ClearOverlays() ...@@ -154,6 +154,11 @@ void DataViewerProxy::ClearOverlays()
viewer()->ClearOverlays(); viewer()->ClearOverlays();
} }
void DataViewerProxy::ClearActiveOverlay()
{
viewer()->ClearActiveOverlay();
}
OverlayManagerPtr DataViewerProxy::GetOverlayManager() const OverlayManagerPtr DataViewerProxy::GetOverlayManager() const
{ {
return viewer()->GetOverlayManager(); return viewer()->GetOverlayManager();
...@@ -185,6 +190,10 @@ void DataViewerProxy::Hide() ...@@ -185,6 +190,10 @@ void DataViewerProxy::Hide()
viewer()->hide(); viewer()->hide();
} }
object DataViewerProxy::GetButtonGroup()
{
return ost::gui::get_py_qobject<QButtonGroup>(viewer()->GetButtonGroup());
}
object DataViewerProxy::GetQObject(){ object DataViewerProxy::GetQObject(){
return ost::gui::get_py_qobject<DataViewer>(viewer()); return ost::gui::get_py_qobject<DataViewer>(viewer());
......
...@@ -83,6 +83,7 @@ public: ...@@ -83,6 +83,7 @@ public:
int AddOverlay(const OverlayPtr& ov, bool make_active=true); int AddOverlay(const OverlayPtr& ov, bool make_active=true);
OverlayManagerPtr GetOverlayManager() const; OverlayManagerPtr GetOverlayManager() const;
void ClearOverlays(); void ClearOverlays();
void ClearActiveOverlay();
void AddDockWidget(QWidget* w, const QString& name, bool shown=true, int area=2); void AddDockWidget(QWidget* w, const QString& name, bool shown=true, int area=2);
void RemoveDockWidget(QWidget* w); void RemoveDockWidget(QWidget* w);
...@@ -96,7 +97,7 @@ public: ...@@ -96,7 +97,7 @@ public:
//Vec3 GetClickedPosition(); //Vec3 GetClickedPosition();
void Hide(); void Hide();
object GetButtonGroup();
object GetQObject(); object GetQObject();
protected: protected:
QPointer<DataViewer> viewer_ptr_; QPointer<DataViewer> viewer_ptr_;
......
...@@ -66,6 +66,7 @@ void export_data_viewer() ...@@ -66,6 +66,7 @@ void export_data_viewer()
.def("Renormalize",&DataViewerProxy::Renormalize) .def("Renormalize",&DataViewerProxy::Renormalize)
.def("AddOverlay",&DataViewerProxy::AddOverlay,o_AddOverlay()) .def("AddOverlay",&DataViewerProxy::AddOverlay,o_AddOverlay())
.def("ClearOverlays",&DataViewerProxy::ClearOverlays) .def("ClearOverlays",&DataViewerProxy::ClearOverlays)
.def("ClearActiveOverlay",&DataViewerProxy::ClearActiveOverlay)
.def("GetSelection",&DataViewerProxy::GetSelection) .def("GetSelection",&DataViewerProxy::GetSelection)
.def("SetSelection",&DataViewerProxy::SetSelection) .def("SetSelection",&DataViewerProxy::SetSelection)
.def("UpdateView",&DataViewerProxy::UpdateView) .def("UpdateView",&DataViewerProxy::UpdateView)
...@@ -99,6 +100,7 @@ void export_data_viewer() ...@@ -99,6 +100,7 @@ void export_data_viewer()
.def("SetOffset", &DataViewerProxy::SetOffset) .def("SetOffset", &DataViewerProxy::SetOffset)
.def("GetOffset", &DataViewerProxy::GetOffset) .def("GetOffset", &DataViewerProxy::GetOffset)
.add_property("offset", &DataViewerProxy::GetOffset, &DataViewerProxy::SetOffset) .add_property("offset", &DataViewerProxy::GetOffset, &DataViewerProxy::SetOffset)
.def("GetButtonGroup", &DataViewerProxy::GetButtonGroup)
.def("GetQObject",&DataViewerProxy::GetQObject) .def("GetQObject",&DataViewerProxy::GetQObject)
.add_property("qobject",&DataViewerProxy::GetQObject) .add_property("qobject",&DataViewerProxy::GetQObject)
......
...@@ -54,8 +54,11 @@ DataViewerProxyPtr app_create_data_viewer2(GostyApp* app, const ost::img::ImageH ...@@ -54,8 +54,11 @@ DataViewerProxyPtr app_create_data_viewer2(GostyApp* app, const ost::img::ImageH
{ {
return DataViewerProxyPtr(new DataViewerProxy(app->CreateDataViewer(d))); return DataViewerProxyPtr(new DataViewerProxy(app->CreateDataViewer(d)));
} }
DataViewerProxyPtr app_create_data_viewer3(GostyApp* app, const ost::img::ImageHandle& d, const QString& name, int noparent)
{
return DataViewerProxyPtr(new DataViewerProxy(app->CreateDataViewer(d,name,noparent)));
}
#endif #endif
} }
void app_add_widget_to_app_a(GostyApp* app, const QString& ident, void app_add_widget_to_app_a(GostyApp* app, const QString& ident,
...@@ -115,6 +118,7 @@ void export_Gosty() ...@@ -115,6 +118,7 @@ void export_Gosty()
#if OST_IMG_ENABLED #if OST_IMG_ENABLED
.def("CreateDataViewer", &app_create_data_viewer1) .def("CreateDataViewer", &app_create_data_viewer1)
.def("CreateDataViewer", &app_create_data_viewer2) .def("CreateDataViewer", &app_create_data_viewer2)
.def("CreateDataViewer", &app_create_data_viewer3)
#endif #endif
.def("ProcessEvents", &GostyApp::ProcessEvents) .def("ProcessEvents", &GostyApp::ProcessEvents)
.add_property("perspective", .add_property("perspective",
......
...@@ -205,6 +205,11 @@ geom::Vec2 DataViewer::GetOffset() const ...@@ -205,6 +205,11 @@ geom::Vec2 DataViewer::GetOffset() const
return panel_->GetOffset(); return panel_->GetOffset();
} }
QButtonGroup* DataViewer::GetButtonGroup(void)
{
return ov_manager_gui_->GetButtonGroup();
}
int DataViewer::AddOverlay(const OverlayPtr& ov, bool make_active) int DataViewer::AddOverlay(const OverlayPtr& ov, bool make_active)
{ {
int retval= ov_manager_->AddOverlay(ov,make_active); int retval= ov_manager_->AddOverlay(ov,make_active);
...@@ -217,6 +222,11 @@ void DataViewer::ClearOverlays() ...@@ -217,6 +222,11 @@ void DataViewer::ClearOverlays()
ov_manager_->DeleteAllOverlays(); ov_manager_->DeleteAllOverlays();
} }
void DataViewer::ClearActiveOverlay()
{
ov_manager_->DeleteActiveOverlay();
}
OverlayManagerPtr DataViewer::GetOverlayManager() const OverlayManagerPtr DataViewer::GetOverlayManager() const
{ {
return ov_manager_; return ov_manager_;
......
...@@ -95,6 +95,9 @@ public: ...@@ -95,6 +95,9 @@ public:
//! remove all overlays //! remove all overlays
void ClearOverlays(); void ClearOverlays();
//! remove the active overlay
void ClearActiveOverlay();
//! return the overlay manager for this viewer //! return the overlay manager for this viewer
OverlayManagerPtr GetOverlayManager() const; OverlayManagerPtr GetOverlayManager() const;
...@@ -142,6 +145,8 @@ public: ...@@ -142,6 +145,8 @@ public:
//! get image offset //! get image offset
geom::Vec2 GetOffset() const; geom::Vec2 GetOffset() const;
QButtonGroup* GetButtonGroup(void);
signals: signals:
void released(); void released();
......
...@@ -103,6 +103,18 @@ void OverlayManager::DeleteAllOverlays() ...@@ -103,6 +103,18 @@ void OverlayManager::DeleteAllOverlays()
ov_list_.clear(); ov_list_.clear();
} }
void OverlayManager::DeleteActiveOverlay()
{
OverlayList::iterator pos=find_ov(active_ov_);
if (pos!=ov_list_.end()) {
for(ObserverList::iterator xit=obs_list_.begin();xit!=obs_list_.end();++xit) {
(*xit)->OnRemoveOverlay(this, pos->id);
}
pos=ov_list_.erase(pos);
active_ov_.reset();
}
}
void OverlayManager::ActivateOverlay(const String& name) void OverlayManager::ActivateOverlay(const String& name)
{ {
...@@ -351,4 +363,15 @@ OverlayManager::OverlayList::iterator OverlayManager::find_ov(const String& name ...@@ -351,4 +363,15 @@ OverlayManager::OverlayList::iterator OverlayManager::find_ov(const String& name
return ov_list_.end(); return ov_list_.end();
} }
OverlayManager::OverlayList::iterator OverlayManager::find_ov(OverlayPtr anoverlay)
{
for(OverlayList::iterator it=ov_list_.begin();it!=ov_list_.end();++it) {
if(anoverlay==it->ov) {
return it;
break;
}
}
return ov_list_.end();
}
}}} //ns }}} //ns
...@@ -110,6 +110,8 @@ public: ...@@ -110,6 +110,8 @@ public:
void DeleteAllOverlays(); void DeleteAllOverlays();
void DeleteActiveOverlay();
void OnDraw(QPainter& pnt, DataViewerPanel* dvp) const; void OnDraw(QPainter& pnt, DataViewerPanel* dvp) const;
bool OnMouseEvent(QMouseEvent* e, DataViewerPanel* dvp, const QPoint& lastmouse) const; bool OnMouseEvent(QMouseEvent* e, DataViewerPanel* dvp, const QPoint& lastmouse) const;
...@@ -138,6 +140,7 @@ private: ...@@ -138,6 +140,7 @@ private:
OverlayList::iterator find_ov(int id); OverlayList::iterator find_ov(int id);
OverlayList::iterator find_ov(const String& name); OverlayList::iterator find_ov(const String& name);
OverlayList::iterator find_ov(OverlayPtr anoverlay);
}; };
......
...@@ -209,6 +209,11 @@ void OverlayManagerGUI::OnEventMenu(QAction* e) ...@@ -209,6 +209,11 @@ void OverlayManagerGUI::OnEventMenu(QAction* e)
{ {
} }
QButtonGroup* OverlayManagerGUI::GetButtonGroup(void)
{
return active_group_;
}
void OverlayManagerGUI::UpdateView() void OverlayManagerGUI::UpdateView()
{ {
} }
......
...@@ -120,6 +120,8 @@ public: ...@@ -120,6 +120,8 @@ public:
void OnEventMenuPopup(QAction* e); void OnEventMenuPopup(QAction* e);
void OnEventMenu(QAction* e); void OnEventMenu(QAction* e);
QButtonGroup* GetButtonGroup(void);
public slots: public slots:
void SetInfoText(const QString& t); void SetInfoText(const QString& t);
......
...@@ -109,20 +109,30 @@ SequenceViewer* GostyApp::GetSequenceViewer() ...@@ -109,20 +109,30 @@ SequenceViewer* GostyApp::GetSequenceViewer()
} }
#if OST_IMG_ENABLED #if OST_IMG_ENABLED
ost::img::gui::DataViewer* GostyApp::CreateDataViewer(const ost::img::ImageHandle& d, const QString& name) ost::img::gui::DataViewer* GostyApp::CreateDataViewer(const ost::img::ImageHandle& d, const QString& name, const int noparent)
{ {
ost::img::gui::DataViewer* viewer=new ost::img::gui::DataViewer(main_,d,name); ost::img::gui::DataViewer* viewer=NULL;
QMdiSubWindow* mdi=new QMdiSubWindow(this->GetPerspective()->GetMainArea()); if (noparent)
mdi->setWindowTitle(name); {
mdi->setWidget(viewer); viewer=new ost::img::gui::DataViewer(NULL,d,name);
mdi->setFocusProxy(viewer); }
viewer->setAttribute(Qt::WA_DeleteOnClose); else
mdi->setAttribute(Qt::WA_DeleteOnClose); {
viewer->setParent(mdi); viewer=new ost::img::gui::DataViewer(main_,d,name);
this->GetPerspective()->GetMainArea()->addSubWindow(mdi); QMdiSubWindow* mdi=new QMdiSubWindow(this->GetPerspective()->GetMainArea());
mdi->showMaximized(); mdi->setWindowTitle(name);
connect(viewer,SIGNAL(released()),mdi,SLOT(close())); mdi->setWidget(viewer);
return viewer; mdi->setFocusProxy(viewer);
viewer->setAttribute(Qt::WA_DeleteOnClose);
mdi->setAttribute(Qt::WA_DeleteOnClose);
viewer->setParent(mdi);
this->GetPerspective()->GetMainArea()->addSubWindow(mdi);
mdi->showMaximized();
connect(viewer,SIGNAL(released()),mdi,SLOT(close()));
}
return viewer;
} }
#endif #endif
......
...@@ -124,7 +124,7 @@ public: ...@@ -124,7 +124,7 @@ public:
#if OST_IMG_ENABLED #if OST_IMG_ENABLED
/// \brief create new DataViewer /// \brief create new DataViewer
/// ///
ost::img::gui::DataViewer* CreateDataViewer(const ost::img::ImageHandle& d, const QString& name=""); ost::img::gui::DataViewer* CreateDataViewer(const ost::img::ImageHandle& d, const QString& name="", const int noparent=0);
#endif #endif
/// \brief give the application time to run the mainloop and process events /// \brief give the application time to run the mainloop and process events
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment