Changeset 1746
- Timestamp:
- 01/04/10 23:36:31 (2 years ago)
- Files:
-
- branches/qt_gui/src/ex/proc/diff/dm/dm.py (modified) (4 diffs)
- branches/qt_gui/src/ex/proc/diff/dm/edit_mask.py (modified) (1 diff)
- branches/qt_gui/src/ex/proc/diff/dm/verify_lattice.py (modified) (2 diffs)
- branches/qt_gui/src/gui/lib/data_viewer/data_viewer_proxy.cc (modified) (1 diff)
- branches/qt_gui/src/gui/lib/data_viewer/data_viewer_proxy.hh (modified) (3 diffs)
- branches/qt_gui/src/gui/lib/data_viewer/mask_overlay.cc (modified) (3 diffs)
- branches/qt_gui/src/gui/lib/data_viewer/mask_overlay.hh (modified) (1 diff)
- branches/qt_gui/src/gui/lib/sip_handler.hh (modified) (2 diffs)
- branches/qt_gui/src/gui/pymod/export_overlay.cc (modified) (1 diff)
- branches/qt_gui/src/gui/pymod/export_viewer.cc (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/qt_gui/src/ex/proc/diff/dm/dm.py
r1739 r1746 21 21 import iplt.ex as ex 22 22 from verify_lattice import * 23 from edit_mask import * 23 24 from view_se import * 24 25 from view_tilt import * … … 312 313 313 314 self.verify_lattice_view_=None 315 self.edit_masks_view_=None 314 316 self.view_se_=None 315 317 self.view_tilt_=None … … 362 364 def OnLoadVerifiedLattice(self,im_list_entry): 363 365 self.verify_lattice_view_.Load(self.wdir_,im_list_entry[0]) 366 367 def OnEditMasks(self): 368 if not self.edit_masks_view_: 369 self.edit_masks_view_=EditMask(self.pinfo_) 370 base=str(self.w_im_label_.text()) 371 self.edit_masks_view_.Load(self.wdir_,base) 364 372 365 373 def OnVerifyLattice(self): … … 433 441 hb.addWidget(self.w_im_label_) 434 442 vb.addLayout(hb,Qt.AlignCenter) 443 self.b_edit_masks_=QPushButton("Edit masks") 444 QObject.connect(self.b_edit_masks_,SIGNAL("clicked()"),self.OnEditMasks) 445 vb.addWidget(self.b_edit_masks_) 435 446 self.b_verify_lattice_=QPushButton("Verify Lattice") 436 447 QObject.connect(self.b_verify_lattice_,SIGNAL("clicked()"),self.OnVerifyLattice) branches/qt_gui/src/ex/proc/diff/dm/edit_mask.py
r1696 r1746 14 14 # 15 15 16 from PyQt4.QtCore import * 17 from PyQt4.QtGui import * 18 import sip 16 19 import sys,math,os.path,time 17 20 from iplt import * 18 from diff_view_base import DiffViewBase21 from view_base import ViewBase 19 22 import iplt.ex as ex 20 23 import iplt.ex.gui as exgui 21 24 22 25 23 class DiffEditMask(DiffViewBase): 24 def __init__(self,pinfo): 25 DiffViewBase.__init__(self,pinfo) 26 self.mask_=None 27 if self.proj_info_.Root().HasGroup("DiffProcessing/BeamStopMask"): 28 self.mask_ = InfoToMask(self.proj_info_.Root().RetrieveGroup("DiffProcessing/BeamStopMask")) 29 self.exclusion_mask_=None 30 self.exclusion_mask_overlay_=gui.MaskOverlay() 31 self.mask_overlay_=gui.MaskOverlay() 26 class EditMask(ViewBase): 27 def __init__(self,pinfo,task_widget=None): 28 ViewBase.__init__(self,pinfo) 29 self.pinfo_=pinfo 30 self.im_=CreateImage(Size(1,1)) 31 self.v_=gui.CreateDataViewer(self.im_,"None") 32 self.dock_=QWidget() 33 vb=QVBoxLayout() 34 b=QPushButton("Clear Beam Stop Mask") 35 QObject.connect(b,SIGNAL("clicked()"),self.clear_mask) 36 vb.addWidget(b) 37 b=QPushButton("Save Global Beam Stop Mask") 38 QObject.connect(b,SIGNAL("clicked()"),self.save_global_mask) 39 vb.addWidget(b) 40 b=QPushButton("Save Local Beam Stop Mask") 41 QObject.connect(b,SIGNAL("clicked()"),self.save_local_mask) 42 vb.addWidget(b) 43 b=QPushButton("Remove Local Beam Stop Mask") 44 QObject.connect(b,SIGNAL("clicked()"),self.remove_local_mask) 45 vb.addWidget(b) 46 b=QPushButton("Clear Exclusion Mask") 47 QObject.connect(b,SIGNAL("clicked()"),self.clear_exclusion_mask) 48 vb.addWidget(b) 49 b=QPushButton("Save Exclusion Mask") 50 QObject.connect(b,SIGNAL("clicked()"),self.save_exclusion_mask) 51 vb.addWidget(b) 52 b=QPushButton("Remove Exlusion Mask from Info") 53 QObject.connect(b,SIGNAL("clicked()"),self.remove_exclusion_mask) 54 vb.addWidget(b) 55 self.dock_.setLayout(vb) 32 56 33 def GetName(self): 34 return "EditMask" 57 if task_widget: 58 self.task_widget_=task_widget 59 self.v_.AddDockWidget(gui.BPQtHandle(sip.unwrapinstance(self.task_widget_)),"Main Tasks") 35 60 36 def AddCustomSteps(self,proc,name): 37 proc.AddStep(self.clear_mask,"Clear Beam Stop Mask",[]) 38 proc.AddStep(self.save_global_mask,"Save Global Beam Stop Mask",[]) 39 proc.AddStep(self.save_local_mask,"Save Local Beam Stop Mask",[]) 40 proc.AddStep(self.remove_local_mask,"Remove Local Beam Stop Mask",[]) 41 proc.AddStep(self.clear_exclusion_mask,"Clear Exclusion Mask",[]) 42 proc.AddStep(self.save_exclusion_mask,"Save Exclusion Mask",[]) 43 proc.AddStep(self.remove_exclusion_mask,"Remove Exlusion Mask from Info",[]) 61 self.v_.AddDockWidget(gui.BPQtHandle(sip.unwrapinstance(self.dock_)),"Edit Mask Tasks") 44 62 45 def Load(self,wdir,base,iinfo):46 self.v_=None47 self.iinfo_ = iinfo48 if self.iinfo_.Root().HasGroup("DiffProcessing/BeamStopMask"):49 self.mask_ = InfoToMask(iinfo.Root().RetrieveGroup("DiffProcessing/BeamStopMask"))50 self.wdir_ = wdir51 self.base_ = base52 im_name = str(self.GetDatasetImagePath(iinfo,wdir,base))53 self.im_=LoadImage(im_name)54 self.v_=gui.CreateDataViewer(self.im_,im_name)55 self.v_.AddOverlay(self.exclusion_mask_overlay_)56 self.v_.AddOverlay(self.mask_overlay_)57 if self.mask_:58 self.mask_overlay_.SetMask(self.mask_)59 if self.iinfo_.Root().HasGroup("DiffProcessing/ExclusionMask"):60 self.exclusion_mask_ = InfoToMask(iinfo.Root().RetrieveGroup("DiffProcessing/ExclusionMask"))61 if self.exclusion_mask_:62 self.exclusion_mask_overlay_.SetMask(self.exclusion_mask_)63 63 64 def clear_mask(self): 65 self.mask_overlay_.ClearMask() 66 self.mask_=None 64 def Load(self,wdir,base): 65 QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) 66 try: 67 self.do_load(wdir,base) 68 finally: 69 QApplication.restoreOverrideCursor() 67 70 68 def clear_exclusion_mask(self): 69 self.exclusion_mask_overlay_.ClearMask() 70 self.exclusion_mask_=None 71 def do_load(self,wdir,base): 72 self.info_name_ = os.path.join(base,"info.xml") 73 mlogn(5,"reading info file: %s"%self.info_name_) 74 self.info_ = LoadInfo(self.info_name_) 75 self.info_.AddDefault(self.pinfo_) 71 76 72 def save_global_mask(self): 73 self.mask_=self.mask_overlay_.GetMask() 74 if self.proj_info_.Root().HasGroup("DiffProcessing/BeamStopMask"): 75 self.proj_info_.Root().Remove("DiffProcessing/BeamStopMask") 76 g=self.proj_info_.Root().RetrieveGroup("DiffProcessing/BeamStopMask") 77 MaskToInfo(self.mask_,g) 78 #print "Exporting new mask to project.xml" 79 self.proj_info_.Export("project.xml") 77 self.im_name_ = str(self.GetDatasetImagePath(self.info_,wdir,base)) 80 78 81 def save_local_mask(self):82 self.mask_=self.mask_overlay_.GetMask()83 if self.iinfo_.Root().HasGroup("DiffProcessing/BeamStopMask"):84 self.iinfo_.Root().Remove("DiffProcessing/BeamStopMask")85 g=self.iinfo_.Root().RetrieveGroup("DiffProcessing/BeamStopMask")86 MaskToInfo(self.mask_,g)87 self.iinfo_.Export(os.path.join(self.wdir_,self.base_,"info.xml"))88 89 def remove_local_mask(self):90 if self.iinfo_.Root().HasGroup("DiffProcessing/BeamStopMask"):91 self.iinfo_.Root().Remove("DiffProcessing/BeamStopMask")92 self.iinfo_.Export(os.path.join(self.wdir_,self.base_,"info.xml"))93 79 94 def save_exclusion_mask(self): 95 self.exclusion_mask_=self.exclusion_mask_overlay_.GetMask() 96 if self.iinfo_.Root().HasGroup("DiffProcessing/ExclusionMask"): 97 self.iinfo_.Root().Remove("DiffProcessing/ExclusionMask") 98 g=self.iinfo_.Root().RetrieveGroup("DiffProcessing/ExclusionMask") 99 MaskToInfo(self.exclusion_mask_,g) 100 self.iinfo_.Export(os.path.join(self.wdir_,self.base_,"info.xml")) 101 102 def remove_exclusion_mask(self): 103 if self.iinfo_.Root().HasGroup("DiffProcessing/ExclusionMask"): 104 self.iinfo_.Root().Remove("DiffProcessing/ExclusionMask") 105 self.iinfo_.Export(os.path.join(self.wdir_,self.base_,"info.xml")) 106 80 mlogn(5,"loading %s"%self.im_name_) 81 self.im_=LoadImage(self.im_name_) 82 self.v_.SetData(self.im_) 83 self.v_.Recenter() 84 self.v_.SetName(self.im_name_) 85 self.v_.Renormalize() 86 self.v_.Show() 87 self.v_.ClearOverlays() 88 self.exclusion_mask_overlay_=gui.MaskOverlay() 89 self.exclusion_mask_overlay_.SetName("Exclusion Mask") 90 self.mask_overlay_=gui.MaskOverlay() 91 self.mask_overlay_.SetName("Beamstop Mask") 92 if self.info_.Root().HasGroup("DiffProcessing/BeamStopMask"): 93 mlogn(5,"reading beam stop mask from info") 94 bs_mask = InfoToMask(self.info_.Root().GetGroup("DiffProcessing/BeamStopMask")) 95 if self.info_.Root().HasGroup("DiffProcessingResults/DiffFindMask/Shift"): 96 g=self.info_.Root().GetGroup("DiffProcessingResults/DiffFindMask/Shift") 97 mshift=Vec2(g.GetItem("x").AsFloat(),g.GetItem("y").AsFloat()) 98 self.mask_overlay_.SetShift(mshift); 99 self.mask_overlay_.SetMask(bs_mask) 100 if self.info_.Root().HasGroup("DiffProcessing/ExclusionMask"): 101 mlogn(5,"reading exclusion mask from info") 102 exclusion_mask = InfoToMask(self.info_.Root().RetrieveGroup("DiffProcessing/ExclusionMask")) 103 self.exclusion_mask_overlay_.SetMask(exclusion_mask) 104 105 self.v_.AddOverlay(self.exclusion_mask_overlay_) 106 self.v_.AddOverlay(self.mask_overlay_) 107 108 mlogn(5,"done") 109 110 def clear_mask(self): 111 self.mask_overlay_.ClearMask() 112 113 def clear_exclusion_mask(self): 114 self.exclusion_mask_overlay_.ClearMask() 115 116 def save_global_mask(self): 117 mask=self.mask_overlay_.GetMask() 118 mshift=self.mask_overlay_.GetShift() 119 mask.Shift(mshift) 120 if self.pinfo_.Root().HasGroup("DiffProcessing/BeamStopMask"): 121 self.pinfo_.Root().Remove("DiffProcessing/BeamStopMask") 122 g=self.pinfo_.Root().RetrieveGroup("DiffProcessing/BeamStopMask") 123 MaskToInfo(mask,g) 124 self.pinfo_.Export("project.xml") 125 126 def save_local_mask(self): 127 mask=self.mask_overlay_.GetMask() 128 mshift=self.mask_overlay_.GetShift() 129 mask.Shift(mshift) 130 if self.info_.Root().HasGroup("DiffProcessing/BeamStopMask"): 131 self.info_.Root().Remove("DiffProcessing/BeamStopMask") 132 g=self.info_.Root().RetrieveGroup("DiffProcessing/BeamStopMask") 133 MaskToInfo(mask,g) 134 g=self.info_.Root().GetGroup("DiffProcessingResults/DiffFindMask/Shift") 135 g.GetItem('x').SetFloat(0) 136 g.GetItem('y').SetFloat(0) 137 g.SetAttribute("modified",time.asctime()) 138 self.info_.Export(self.info_name_) 139 140 def remove_local_mask(self): 141 if self.info_.Root().HasGroup("DiffProcessing/BeamStopMask"): 142 self.info_.Root().Remove("DiffProcessing/BeamStopMask") 143 self.info_.Export(self.info_name_) 144 145 def save_exclusion_mask(self): 146 mask=self.exclusion_mask_overlay_.GetMask() 147 mshift=self.exclusion_mask_overlay_.GetShift() 148 mask.Shift(mshift) 149 if self.info_.Root().HasGroup("DiffProcessing/ExclusionMask"): 150 self.info_.Root().Remove("DiffProcessing/ExclusionMask") 151 g=self.info_.Root().RetrieveGroup("DiffProcessing/ExclusionMask") 152 MaskToInfo(mask,g) 153 self.info_.Export(self.info_name_) 154 155 def remove_exclusion_mask(self): 156 if self.info_.Root().HasGroup("DiffProcessing/ExclusionMask"): 157 self.info_.Root().Remove("DiffProcessing/ExclusionMask") 158 self.info_.Export(self.info_name_) 159 branches/qt_gui/src/ex/proc/diff/dm/verify_lattice.py
r1696 r1746 117 117 self.lov2_=None 118 118 self.lov3_=None 119 self.mshift_=Vec2()119 mshift=Vec2() 120 120 if self.info_.Root().HasGroup("DiffProcessing/BeamStopMask"): 121 121 self.bs_mask_=InfoToMask(self.info_.Root().GetGroup("DiffProcessing/BeamStopMask")) 122 122 if self.info_.Root().HasGroup("DiffProcessingResults/DiffFindMask/Shift"): 123 123 g=self.info_.Root().GetGroup("DiffProcessingResults/DiffFindMask/Shift") 124 self.mshift_=Vec2(g.GetItem("x").AsFloat(),g.GetItem("y").AsFloat())124 mshift=Vec2(g.GetItem("x").AsFloat(),g.GetItem("y").AsFloat()) 125 125 self.mo_=None 126 if self.mshift_and self.bs_mask_:126 if mshift and self.bs_mask_: 127 127 mlogn(5,"adding mask overlay") 128 mask = self.bs_mask_.Clone()129 mask.Shift(self.mshift_)130 128 self.mo_=gui.MaskOverlay() 131 self.mo_.SetMask(mask) 129 self.mo_.SetMask(self.bs_mask_) 130 self.mo_.SetShift(mshift) 132 131 self.v_.AddOverlay(self.mo_) 133 132 … … 196 195 def SaveMaskShift(self): 197 196 if self.mo_: 198 shift=self.mo_.GetShift() +self.mshift_197 shift=self.mo_.GetShift() 199 198 g=self.info_.Root().GetGroup("DiffProcessingResults/DiffFindMask/Shift") 200 199 g.GetItem('x').SetFloat(shift[0]) branches/qt_gui/src/gui/lib/data_viewer/data_viewer_proxy.cc
r1689 r1746 120 120 } 121 121 122 unsigned long DataViewerProxy::SipHandle() const 123 { 124 return reinterpret_cast<unsigned long>(viewer_); 125 } 126 122 127 }} // ns branches/qt_gui/src/gui/lib/data_viewer/data_viewer_proxy.hh
r1689 r1746 29 29 #include "overlay_manager_fw.hh" 30 30 //#include "data_viewer_snapshot_type.hh" 31 #include <iplt/gui/sip_handler.hh> 31 32 32 33 class QWidget; … … 38 39 class DataViewer; 39 40 40 class DLLEXPORT DataViewerProxy {41 class DLLEXPORT DataViewerProxy: public SipHandler { 41 42 public: 42 43 DataViewerProxy(); … … 72 73 //Vec3 GetClickedPosition(); 73 74 //wxImage GetSnapshot(DataViewerSnapshotType type = WHOLE_DATA_VIEWER); 75 virtual unsigned long SipHandle() const; 74 76 75 77 private: branches/qt_gui/src/gui/lib/data_viewer/mask_overlay.cc
r1706 r1746 63 63 Polygon2 pol=polygons_[i]; 64 64 QPolygon qpol; 65 for( int j=0;j<pol.GetNodeCount();++j){66 qpol << dvp->FracPointToWinCenter(pol.GetNode(j) );65 for(unsigned int j=0;j<pol.GetNodeCount();++j){ 66 qpol << dvp->FracPointToWinCenter(pol.GetNode(j)+shift_); 67 67 pnt.drawEllipse(qpol.back(),3,3); 68 68 } … … 94 94 geom::Vec2 diffpos=mousepos-old_mouse_pos_; 95 95 if(e->buttons() & Qt::RightButton){ 96 for(std::vector<geom::Polygon2>::iterator it=polygons_.begin();it!=polygons_.end();++it){97 (*it)=(*it)+diffpos;98 }99 new_poly_=new_poly_+diffpos;100 96 shift_+=diffpos; 101 97 } … … 205 201 } 206 202 203 void MaskOverlay::ClearShift() 204 { 205 shift_=geom::Vec2(); 206 } 207 208 geom::Vec2 MaskOverlay::GetShift() 209 { 210 return shift_; 211 } 212 213 void MaskOverlay::SetShift(geom::Vec2 shift) 214 { 215 shift_=shift; 216 } 217 218 void MaskOverlay::ApplyShiftToMask() 219 { 220 for(std::vector<geom::Polygon2>::iterator it=polygons_.begin();it!=polygons_.end();++it){ 221 (*it)=(*it)+shift_; 222 } 223 new_poly_=new_poly_+shift_; 224 shift_=Vec2(0.0,0.0); 225 } 207 226 208 227 }} // ns branches/qt_gui/src/gui/lib/data_viewer/mask_overlay.hh
r1636 r1746 43 43 void SetMask(const MaskPtr& m); 44 44 void ClearMask(); 45 void ClearShift(){shift_=geom::Vec2();} 46 geom::Vec2 GetShift(){return shift_;} 45 void ClearShift(); 46 geom::Vec2 GetShift(); 47 void SetShift(geom::Vec2 shift); 48 void ApplyShiftToMask(); 47 49 48 50 protected: branches/qt_gui/src/gui/lib/sip_handler.hh
r1654 r1746 13 13 Author: Ansgar Philippsen 14 14 */ 15 16 #ifndef IPLT_GUI_SIP_HANDLER_H 17 #define IPLT_GUI_SIP_HANDLER_H 15 18 16 19 namespace iplt { namespace gui { … … 55 58 }} 56 59 60 #endif branches/qt_gui/src/gui/pymod/export_overlay.cc
r1742 r1746 97 97 .def("GetShift",&MaskOverlay::GetShift) 98 98 .def("ClearShift",&MaskOverlay::ClearShift) 99 .def("SetShift",&MaskOverlay::SetShift) 100 .def("ApplyShiftToMask",&MaskOverlay::ApplyShiftToMask) 99 101 ; 100 102 branches/qt_gui/src/gui/pymod/export_viewer.cc
r1689 r1746 51 51 void export_viewer() 52 52 { 53 class_<DataViewerProxy, DataViewerProxyPtr >("DataViewer",no_init)53 class_<DataViewerProxy, DataViewerProxyPtr, bases<SipHandler> >("DataViewer",no_init) 54 54 .def("SetData",&DataViewerProxy::SetData) 55 55 .def("SetName",&DataViewerProxy::SetName)
