Changeset 1080 for trunk/GSASIIIO.py


Ignore:
Timestamp:
Oct 3, 2013 9:29:47 PM (8 years ago)
Author:
toby
Message:

revise export menu; add multiple selection to G2gd.ItemSelector?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIIO.py

    r1074 r1080  
    15791579        self.Phases = {}
    15801580        self.Histograms = {}
    1581 
     1581        self.powderDict = {}
     1582        self.xtalDict = {}
     1583        # updated in SetupExport, when used
     1584        self.currentExportType = None # type of export that has been requested
     1585        self.phasenam = None # name of selected phase or a list of phases
     1586        self.histnam = None # name of selected histogram or a list of histograms
     1587        self.filename = None # name of file to be written
     1588       
     1589        # items that should be defined in a subclass of this class
     1590        self.exporttype = []  # defines the type(s) of exports that the class can handle.
     1591        # The following types are defined: 'project', "phase", "powder", "single"
     1592        self.multiple = False # set as True if the class can export multiple phase or histograms
     1593        # ignored for "project" exports
     1594
     1595    def SetupExport(self,event,AskFile=True):
     1596        '''Determines the type of menu that called the Exporter. Selects histograms
     1597        or phases when needed.
     1598
     1599        :param bool AskFile: if AskFile is True (default)
     1600        '''
     1601        if event:
     1602            self.currentExportType = self.G2frame.ExportLookup.get(event.Id)
     1603        if AskFile:
     1604            self.filename = self.askSaveFile()
     1605        else:
     1606            self.filename = self.defaultSaveFile()
     1607        if not self.filename: return True
     1608       
     1609        if self.currentExportType == 'phase':
     1610            if len(self.Phases) == 0:
     1611                self.G2frame.ErrorDialog(
     1612                    'Empty project',
     1613                    'Project does not contain any data or phases or they are not interconnected.')
     1614                return True
     1615            elif self.multiple:
     1616                if len(self.Phases) == 1:
     1617                    self.phasenam = self.Phases.keys()
     1618                else:
     1619                    choices = sorted(self.Phases.keys())
     1620                    phasenum = G2gd.ItemSelector(choices,self.G2frame,multiple=True)
     1621                    if phasenum is None: return True
     1622                    self.phasenam = [choices[i] for i in phasenum]
     1623            else:
     1624                if len(self.Phases) == 1:
     1625                    self.phasenam = self.Phases.keys()[0]
     1626                else:
     1627                    choices = sorted(self.Phases.keys())
     1628                    phasenum = G2gd.ItemSelector(choices,self.G2frame)
     1629                    if phasenum is None: return True
     1630                    self.phasenam = choices[phasenum]
     1631        elif self.currentExportType == 'single':
     1632            if len(self.xtalDict) == 0:
     1633                self.G2frame.ErrorDialog(
     1634                    'Empty project',
     1635                    'Project does not contain any single crystal data or data is not connected to a phase.')
     1636                return True
     1637            elif self.multiple:
     1638                if len(self.xtalDict) == 1:
     1639                    self.histnam = self.xtalDict.values()
     1640                else:
     1641                    choices = sorted(self.xtalDict.values())
     1642                    hnum = G2gd.ItemSelector(choices,self.G2frame,multiple=True)
     1643                    if hnum is None: return True
     1644                    self.histnam = [choices[i] for i in hnum]
     1645            else:
     1646                if len(self.xtalDict) == 1:
     1647                    self.histnam = self.xtalDict.values()[0]
     1648                else:
     1649                    choices = sorted(self.xtalDict.values())
     1650                    hnum = G2gd.ItemSelector(choices,self.G2frame)
     1651                    if hnum is None: return True
     1652                    self.histnam = choices[hnum]
     1653        elif self.currentExportType == 'powder':
     1654            if len(self.powderDict) == 0:
     1655                self.G2frame.ErrorDialog(
     1656                    'Empty project',
     1657                    'Project does not contain any powder data or data is not connected to a phase.')
     1658                return True
     1659            elif self.multiple:
     1660                if len(self.powderDict) == 1:
     1661                    self.histnam = self.powderDict.values()
     1662                else:
     1663                    choices = sorted(self.powderDict.values())
     1664                    hnum = G2gd.ItemSelector(choices,self.G2frame,multiple=True)
     1665                    if hnum is None: return True
     1666                    self.histnam = [choices[i] for i in hnum]
     1667            else:
     1668                if len(self.powderDict) == 1:
     1669                    self.histnam = self.powderDict.values()[0]
     1670                else:
     1671                    choices = sorted(self.powderDict.values())
     1672                    hnum = G2gd.ItemSelector(choices,self.G2frame)
     1673                    if hnum is None: return True
     1674                    self.histnam = choices[hnum]
     1675            print 'selected histograms = ',self.histnam
     1676            print 'selected histograms = ',self.histnam
     1677            return True
    15821678    def loadParmDict(self):
    15831679        '''Load the GSAS-II refinable parameters from the tree into a dict (self.parmDict). Update
     
    16561752    def loadTree(self):
    16571753        '''Load the contents of the data tree into a set of dicts
    1658         (self.OverallParms, self.Phases and self.Histogram)
     1754        (self.OverallParms, self.Phases and self.Histogram as well as self.powderDict
     1755        & self.xtalDict)
    16591756       
    16601757        * The childrenless data tree items are overall parameters/controls for the
     
    16741771                self.OverallParms[name] = self.G2frame.PatternTree.GetItemPyData(item)
    16751772            item, cookie = self.G2frame.PatternTree.GetNextChild(self.G2frame.root, cookie)
     1773        # index powder and single crystal histograms
     1774        self.powderDict = {}
     1775        self.xtalDict = {}
     1776        for hist in self.Histograms:
     1777            i = self.Histograms[hist]['hId']
     1778            if hist.startswith("PWDR"):
     1779                self.powderDict[i] = hist
     1780            elif hist.startswith("HKLF"):
     1781                self.xtalDict[i] = hist
    16761782
    16771783    def dumpTree(self,mode='type'):
     
    16941800                print '      ',key2,Show(self.Histograms[key1][key2])
    16951801
    1696     def defSaveFile(self):
     1802    def defaultSaveFile(self):
    16971803        return os.path.abspath(
    16981804            os.path.splitext(self.G2frame.GSASprojectfile
Note: See TracChangeset for help on using the changeset viewer.