Changeset 1746

Show
Ignore:
Timestamp:
01/04/10 23:36:31 (2 years ago)
Author:
andreas
Message:

added include guard in sip_handler.hh / based DataViewerProxy? on SipHandler? / improved handling of mask shift in MaskOverlay?

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/qt_gui/src/ex/proc/diff/dm/dm.py

    r1739 r1746  
    2121import iplt.ex as ex 
    2222from verify_lattice import * 
     23from edit_mask import * 
    2324from view_se import * 
    2425from view_tilt import * 
     
    312313 
    313314        self.verify_lattice_view_=None 
     315        self.edit_masks_view_=None 
    314316        self.view_se_=None 
    315317        self.view_tilt_=None 
     
    362364    def OnLoadVerifiedLattice(self,im_list_entry): 
    363365        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) 
    364372 
    365373    def OnVerifyLattice(self): 
     
    433441        hb.addWidget(self.w_im_label_) 
    434442        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_) 
    435446        self.b_verify_lattice_=QPushButton("Verify Lattice") 
    436447        QObject.connect(self.b_verify_lattice_,SIGNAL("clicked()"),self.OnVerifyLattice) 
  • branches/qt_gui/src/ex/proc/diff/dm/edit_mask.py

    r1696 r1746  
    1414# 
    1515 
     16from PyQt4.QtCore import * 
     17from PyQt4.QtGui import * 
     18import sip 
    1619import sys,math,os.path,time 
    1720from iplt import * 
    18 from diff_view_base import DiffViewBase 
     21from view_base import ViewBase 
    1922import iplt.ex as ex 
    2023import iplt.ex.gui as exgui 
    2124 
    2225 
    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() 
     26class 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) 
    3256 
    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") 
    3560 
    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") 
    4462 
    45     def Load(self,wdir,base,iinfo): 
    46         self.v_=None 
    47         self.iinfo_ = iinfo 
    48         if self.iinfo_.Root().HasGroup("DiffProcessing/BeamStopMask"): 
    49             self.mask_ = InfoToMask(iinfo.Root().RetrieveGroup("DiffProcessing/BeamStopMask")) 
    50         self.wdir_ = wdir 
    51         self.base_ = base 
    52         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_) 
    6363 
    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() 
    6770 
    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_) 
    7176 
    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)) 
    8078 
    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")) 
    9379 
    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  
    117117        self.lov2_=None 
    118118        self.lov3_=None 
    119         self.mshift_=Vec2() 
     119        mshift=Vec2() 
    120120        if self.info_.Root().HasGroup("DiffProcessing/BeamStopMask"): 
    121121            self.bs_mask_=InfoToMask(self.info_.Root().GetGroup("DiffProcessing/BeamStopMask")) 
    122122        if self.info_.Root().HasGroup("DiffProcessingResults/DiffFindMask/Shift"): 
    123123            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()) 
    125125        self.mo_=None 
    126         if self.mshift_ and self.bs_mask_: 
     126        if mshift and self.bs_mask_: 
    127127            mlogn(5,"adding mask overlay") 
    128             mask = self.bs_mask_.Clone() 
    129             mask.Shift(self.mshift_) 
    130128            self.mo_=gui.MaskOverlay() 
    131             self.mo_.SetMask(mask) 
     129            self.mo_.SetMask(self.bs_mask_) 
     130            self.mo_.SetShift(mshift) 
    132131            self.v_.AddOverlay(self.mo_) 
    133132 
     
    196195    def SaveMaskShift(self): 
    197196      if self.mo_: 
    198             shift=self.mo_.GetShift()+self.mshift_ 
     197            shift=self.mo_.GetShift() 
    199198            g=self.info_.Root().GetGroup("DiffProcessingResults/DiffFindMask/Shift") 
    200199            g.GetItem('x').SetFloat(shift[0]) 
  • branches/qt_gui/src/gui/lib/data_viewer/data_viewer_proxy.cc

    r1689 r1746  
    120120} 
    121121 
     122unsigned long DataViewerProxy::SipHandle() const 
     123{ 
     124  return reinterpret_cast<unsigned long>(viewer_); 
     125} 
     126 
    122127}} // ns 
  • branches/qt_gui/src/gui/lib/data_viewer/data_viewer_proxy.hh

    r1689 r1746  
    2929#include "overlay_manager_fw.hh" 
    3030//#include "data_viewer_snapshot_type.hh" 
     31#include <iplt/gui/sip_handler.hh> 
    3132 
    3233class QWidget; 
     
    3839class DataViewer; 
    3940 
    40 class DLLEXPORT DataViewerProxy
     41class DLLEXPORT DataViewerProxy: public SipHandler
    4142public: 
    4243  DataViewerProxy(); 
     
    7273  //Vec3 GetClickedPosition(); 
    7374  //wxImage GetSnapshot(DataViewerSnapshotType type = WHOLE_DATA_VIEWER); 
     75  virtual unsigned long SipHandle() const; 
    7476 
    7577private: 
  • branches/qt_gui/src/gui/lib/data_viewer/mask_overlay.cc

    r1706 r1746  
    6363    Polygon2 pol=polygons_[i]; 
    6464    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_); 
    6767      pnt.drawEllipse(qpol.back(),3,3); 
    6868    } 
     
    9494  geom::Vec2 diffpos=mousepos-old_mouse_pos_; 
    9595  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; 
    10096    shift_+=diffpos; 
    10197  } 
     
    205201} 
    206202 
     203void MaskOverlay::ClearShift() 
     204{ 
     205  shift_=geom::Vec2(); 
     206} 
     207 
     208geom::Vec2 MaskOverlay::GetShift() 
     209{ 
     210  return shift_; 
     211} 
     212 
     213void MaskOverlay::SetShift(geom::Vec2 shift) 
     214{ 
     215  shift_=shift; 
     216} 
     217 
     218void 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} 
    207226 
    208227}} // ns 
  • branches/qt_gui/src/gui/lib/data_viewer/mask_overlay.hh

    r1636 r1746  
    4343  void SetMask(const MaskPtr& m); 
    4444  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(); 
    4749 
    4850protected: 
  • branches/qt_gui/src/gui/lib/sip_handler.hh

    r1654 r1746  
    1313  Author: Ansgar Philippsen 
    1414*/ 
     15 
     16#ifndef IPLT_GUI_SIP_HANDLER_H 
     17#define IPLT_GUI_SIP_HANDLER_H 
    1518 
    1619namespace iplt { namespace gui { 
     
    5558}} 
    5659 
     60#endif 
  • branches/qt_gui/src/gui/pymod/export_overlay.cc

    r1742 r1746  
    9797    .def("GetShift",&MaskOverlay::GetShift) 
    9898    .def("ClearShift",&MaskOverlay::ClearShift) 
     99    .def("SetShift",&MaskOverlay::SetShift) 
     100    .def("ApplyShiftToMask",&MaskOverlay::ApplyShiftToMask) 
    99101    ; 
    100102 
  • branches/qt_gui/src/gui/pymod/export_viewer.cc

    r1689 r1746  
    5151void export_viewer() 
    5252{ 
    53   class_<DataViewerProxy, DataViewerProxyPtr>("DataViewer",no_init) 
     53  class_<DataViewerProxy, DataViewerProxyPtr, bases<SipHandler> >("DataViewer",no_init) 
    5454    .def("SetData",&DataViewerProxy::SetData) 
    5555    .def("SetName",&DataViewerProxy::SetName)