Changeset 294


Ignore:
Timestamp:
May 26, 2011 11:02:42 AM (10 years ago)
Author:
vondreele
Message:

implement mask save & load
implement copy to all for masks
refactor load controls

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r289 r294  
    3434] = [wx.NewId() for _init_coll_IMAGE_Items in range(7)]
    3535
    36 [ wxID_MASKCOPY,
    37 ] = [wx.NewId() for _init_coll_MASK_Items in range(1)]
     36[ wxID_MASKCOPY, wxID_MASKSAVE, wxID_MASKLOAD,
     37] = [wx.NewId() for _init_coll_MASK_Items in range(3)]
    3838
    3939[ wxID_PAWLEYLOAD, wxID_PAWLEYIMPORT,
     
    175175        parent.Append(help='Copy mask to other images',
    176176            id=wxID_MASKCOPY, kind=wx.ITEM_NORMAL,text='Copy mask')
     177        parent.Append(help='Save mask to file',
     178            id=wxID_MASKSAVE, kind=wx.ITEM_NORMAL,text='Save mask')
     179        parent.Append(help='Load mask from file',
     180            id=wxID_MASKLOAD, kind=wx.ITEM_NORMAL,text='Load mask')
    177181
    178182    def _init_coll_Inst_Items(self,parent):
  • trunk/GSASIIimgGUI.py

    r283 r294  
    337337       
    338338    def OnLoadControls(event):
     339        cntlList = ['wavelength','distance','tilt','rotation',
     340            'fullIntegrate','outAzimuths','LRazimuth','IOtth']
    339341        dlg = wx.FileDialog(self, 'Choose image controls file', '.', '',
    340342            'image control files (*.imctrl)|*.imctrl',wx.OPEN)
     
    352354                        continue
    353355                    [key,val] = S[:-1].split(':')
    354                     if key in ['type','calibrant']:
     356                    if key in ['type','calibrant',]:
    355357                        save[key] = val
    356                     elif key in ['wavelength','distance','tilt','rotation']:
    357                         save[key] = float(val)
    358                     elif key in ['fullIntegrate',]:
    359                         save[key] = bool(val)
    360                     elif key in ['outAzimuths',]:
    361                         save[key] = int(val)
    362                     elif key in ['LRazimuth',]:
     358                    elif key in ['center',]:
    363359                        if ',' in val:
    364                             vals = val.strip('[] ').split(',')
     360                            save[key] = eval(val)
    365361                        else:
    366362                            vals = val.strip('[] ').split()
    367                         save[key] = [int(vals[0]),int(vals[1])]                   
    368                     elif key in ['center','IOtth']:
    369                         if ',' in val:
    370                             vals = val.strip('[] ').split(',')
    371                         else:
    372                             vals = val.strip('[] ').split()
    373                         save[key] = [float(vals[0]),float(vals[1])]                   
     363                            save[key] = [float(vals[0]),float(vals[1])]
     364                    elif key in cntlList:
     365                        save[key] = eval(val)
    374366                    S = File.readline()
    375367                data.update(save)
     
    710702    def OnCopyMask(event):
    711703        import copy
    712         TextList = []
     704        TextList = [[False,'All IMG',0]]
    713705        Names = []
    714706        if self.PatternTree.GetCount():
     
    720712                    if id == self.Image:
    721713                        Source = name
    722                         Mask = copy.copy(self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Masks')))
     714                        Mask = copy.deepcopy(self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Masks')))
    723715                        del Mask['Thresholds']
    724716                    else:
    725717                        TextList.append([False,name,id])
    726718                id, cookie = self.PatternTree.GetNextChild(self.root, cookie)
    727             if not len(TextList):
     719            if len(TextList) == 1:
    728720                self.ErrorDialog('Nothing to copy mask to','There must be more than one "IMG" pattern')
    729721                return
     
    732724                if dlg.ShowModal() == wx.ID_OK:
    733725                    result = dlg.GetData()
     726                    if result[0][0]:
     727                        result = TextList[1:]
     728                        for item in result: item[0] = True
    734729                    for i,item in enumerate(result):
    735730                        ifcopy,name,id = item
     
    737732                            mask = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Masks'))
    738733                            mask.update(Mask)                               
    739                             self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Masks'),mask)
     734                            self.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Masks'),copy.deepcopy(mask))
    740735            finally:
    741736                dlg.Destroy()
     737               
     738    def OnSaveMask(event):
     739        dlg = wx.FileDialog(self, 'Choose image mask file', '.', '',
     740            'image mask files (*.immask)|*.immask',wx.OPEN)
     741        if self.dirname:
     742            dlg.SetDirectory(self.dirname)
     743        try:
     744            if dlg.ShowModal() == wx.ID_OK:
     745                filename = dlg.GetPath()
     746                File = open(filename,'w')
     747                save = {}
     748                keys = ['Points','Rings','Arcs','Polygons','Thresholds']
     749                for key in keys:
     750                    File.write(key+':'+str(data[key])+'\n')
     751                File.close()
     752        finally:
     753            dlg.Destroy()
     754       
     755    def OnLoadMask(event):
     756        dlg = wx.FileDialog(self, 'Choose image mask file', '.', '',
     757            'image mask files (*.immask)|*.immask',wx.OPEN)
     758        if self.dirname:
     759            dlg.SetDirectory(self.dirname)
     760        try:
     761            if dlg.ShowModal() == wx.ID_OK:
     762                filename = dlg.GetPath()
     763                File = open(filename,'r')
     764                save = {}
     765                S = File.readline()
     766                while S:
     767                    if S[0] == '#':
     768                        S = File.readline()
     769                        continue
     770                    [key,val] = S[:-1].split(':')
     771                    if key in ['Points','Rings','Arcs','Polygons','Thresholds']:
     772                        save[key] = eval(val)
     773                    S = File.readline()
     774                data.update(save)
     775                UpdateMasks(self,data)           
     776                G2plt.PlotExposedImage(self,event=event)
     777               
     778                File.close()
     779        finally:
     780            dlg.Destroy()
    742781       
    743782    if self.dataDisplay:
     
    745784    self.dataFrame.SetMenuBar(self.dataFrame.MaskMenu)
    746785    self.dataFrame.Bind(wx.EVT_MENU, OnCopyMask, id=G2gd.wxID_MASKCOPY)
     786    self.dataFrame.Bind(wx.EVT_MENU, OnLoadMask, id=G2gd.wxID_MASKLOAD)
     787    self.dataFrame.Bind(wx.EVT_MENU, OnSaveMask, id=G2gd.wxID_MASKSAVE)   
    747788    if not self.dataFrame.GetStatusBar():
    748789        Status = self.dataFrame.CreateStatusBar()
Note: See TracChangeset for help on using the changeset viewer.