Changeset 4965


Ignore:
Timestamp:
Jun 21, 2021 11:32:01 AM (3 months ago)
Author:
toby
Message:

start work on option to move Phase/Data? to 1st level in tree

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIIO.py

    r4956 r4965  
    698698                #    GSASIIpath.IPyBreak()
    699699            Id = G2frame.GPXtree.AppendItem(parent=G2frame.root,text=datum[0])
     700            if datum[0] == 'Phases' and GSASIIpath.GetConfigValue('SeparateHistPhaseTreeItem',False):
     701                G2frame.GPXtree.AppendItem(parent=G2frame.root,text='Hist/Phase Params')
    700702            if updateFromSeq and datum[0] == 'Phases':
    701703                for pdata in data[1:]:
     
    828830                data = []
    829831                name = G2frame.GPXtree.GetItemText(item)
     832                if name.startswith('Hist/Phase '):  # skip over this
     833                    item, cookie = G2frame.GPXtree.GetNextChild(G2frame.root, cookie)                           
     834                    continue
    830835                data.append([name,G2frame.GPXtree.GetItemPyData(item)])
    831836                item2, cookie2 = G2frame.GPXtree.GetFirstChild(item)
  • trunk/GSASIIdataGUI.py

    r4951 r4965  
    8686import GSASIIfpaGUI as G2fpa
    8787import GSASIIseqGUI as G2seq
     88import GSASIIddataGUI as G2ddG
    8889
    8990try:
     
    11481149            newPhaseList.append(PhaseName)
    11491150            print(u'Read phase {} from file {}'.format(PhaseName,self.lastimport))
    1150             if not GetGPXtreeItemId(self,self.root,'Phases'):
    1151                 sub = self.GPXtree.AppendItem(parent=self.root,text='Phases')
    1152             else:
    1153                 sub = GetGPXtreeItemId(self,self.root,'Phases')
     1151            sub = FindPhaseItem(self)
    11541152            psub = self.GPXtree.AppendItem(parent=sub,text=PhaseName)
    11551153            self.GPXtree.SetItemPyData(psub,rd.Phase)
     
    39403938    def OnAddPhase(self,event):
    39413939        'Add a new, empty phase to the tree. Called by Data/Add Phase menu'
    3942         self.CheckNotebook()
    3943         if not GetGPXtreeItemId(self,self.root,'Phases'):
    3944             sub = self.GPXtree.AppendItem(parent=self.root,text='Phases')
    3945         else:
    3946             sub = GetGPXtreeItemId(self,self.root,'Phases')
    39473940        PhaseName = ''
    39483941        dlg = wx.TextEntryDialog(None,'Enter a name for this phase','Phase Name Entry','New phase',
     
    39503943        if dlg.ShowModal() == wx.ID_OK:
    39513944            PhaseName = dlg.GetValue()
    3952         dlg.Destroy()
     3945            self.CheckNotebook()
     3946            sub = FindPhaseItem(self)
     3947            dlg.Destroy()
     3948        else:
     3949            dlg.Destroy()
     3950            return
    39533951        if not GetGPXtreeItemId(self,self.root,'Restraints'):
    39543952            subr = self.GPXtree.AppendItem(parent=self.root,text='Restraints')
     
    75757573            G2frame.dataWindow.GetSizer().Add(
    75767574                wx.StaticText(G2frame.dataWindow,wx.ID_ANY,'Select one phase to see its restraints'))
     7575        elif G2frame.GPXtree.GetItemText(item).startswith('Hist/Phase '):
     7576            #import imp
     7577            #imp.reload(G2ddG)
     7578            G2ddG.MakeHistPhaseWin(G2frame)
     7579        elif GSASIIpath.GetConfigValue('debug'):
     7580            print('Unknown tree item',G2frame.GPXtree.GetItemText(item))
    75777581    ############################################################################
    75787582    # process second-level entries in tree           
     
    77867790    else:
    77877791        G2frame.SetMenuBar(menu)
    7788 
     7792       
     7793def FindPhaseItem(G2frame):
     7794    '''Finds the Phase item in the tree. If not present it adds one
     7795    also adding 'Hist/Phase Params' if config var SeparateHistPhaseTreeItem
     7796    is set as True.
     7797    '''
     7798    if not GetGPXtreeItemId(G2frame,G2frame.root,'Phases'):
     7799        sub = G2frame.GPXtree.AppendItem(parent=G2frame.root,text='Phases')
     7800        if GSASIIpath.GetConfigValue('SeparateHistPhaseTreeItem',False):
     7801            G2frame.GPXtree.AppendItem(parent=G2frame.root,text='Hist/Phase Params')
     7802    else:
     7803        sub = GetGPXtreeItemId(G2frame,G2frame.root,'Phases')
     7804    return sub
     7805       
    77897806if __name__ == '__main__':
    77907807    ShowVersions()
  • trunk/GSASIIddataGUI.py

    r4846 r4965  
    10351035
    10361036    ######################################################################
    1037     ### Beginning of UpdateDData execution here
     1037    #### Beginning of UpdateDData execution here
    10381038    ######################################################################
    10391039    G2frame.SetStatusText('',1)
     
    10791079    mainSizer = wx.BoxSizer(wx.VERTICAL)
    10801080    topSizer = wx.BoxSizer(wx.HORIZONTAL)
    1081     topSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Histogram data for '+PhaseName+':'),0,wx.LEFT,5)
     1081    topSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Histogram data for Phase '+PhaseName+':'),0,wx.LEFT,5)
    10821082    # add help button to bring up help web page - at right sede of window
    10831083    topSizer.Add((-1,-1),1,wx.EXPAND)
     
    11071107       
    11081108    G2phG.SetPhaseWindow(DData,mainSizer,Scroll=Scroll)
     1109
     1110def MakeHistPhaseWin(G2frame):
     1111    '''Display Phase/Data info from Hist/Phase tree item
     1112    '''
     1113    TabSelectionIdDict = {}
     1114    def OnSelectPage(event):
     1115        'Called when an item is selected from the Select page menu'
     1116        tabname = TabSelectionIdDict.get(event.GetId()) # lookup phase
     1117        if not tabname:
     1118            print ('Warning: menu item not in dict! id= %d'%event.GetId())
     1119            return
     1120        # find the tab matching the phase
     1121        for i,page in enumerate(phaseList):
     1122            if tabname == phaseList[i]:
     1123                HAPBook.SetSelection(i)
     1124                FillDDataWindow(i) # may result in a double paint on some OSs
     1125                return
     1126        else:
     1127            print ("Warning: tab "+tabname+" was not found")
     1128           
     1129    def OnPageChanged(event):
     1130        'respond to a notebook tab'
     1131        page = event.GetSelection()
     1132        FillDDataWindow(page)
     1133       
     1134    def FillDDataWindow(page):
     1135        'display the DData info'
     1136        G2frame.HistPhaseLastSel = phaseList[page]
     1137        data = G2frame.GPXtree.GetItemPyData(phaseIds[page])
     1138        G2plt.PlotSizeStrainPO(G2frame,data,hist='',Start=True)           
     1139        UpdateDData(G2frame,DData[page],data)
     1140
     1141    #### start of MakeHistPhaseWin
     1142    G2frame.dataWindow.ClearData()
     1143    HAPBook = G2G.GSNoteBook(parent=G2frame.dataWindow)
     1144    G2frame.dataWindow.GetSizer().Add(HAPBook,1,wx.ALL|wx.EXPAND,1)
     1145    phaseList = []
     1146    phaseIds = []
     1147    DData = []
     1148    sub = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,'Phases')
     1149    item, cookie = G2frame.GPXtree.GetFirstChild(sub)
     1150    while item: # loop over phases
     1151        phaseName = G2frame.GPXtree.GetItemText(item)
     1152        phaseIds.append(item)
     1153        phaseList.append(phaseName)
     1154        item, cookie = G2frame.GPXtree.GetNextChild(sub, cookie)
     1155        HAPtab = wx.ScrolledWindow(HAPBook)
     1156        HAPBook.AddPage(HAPtab,phaseName)
     1157        DData.append(HAPtab)
     1158    HAPBook.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED, OnPageChanged)
     1159    # set up "Select tab" menu contents
     1160    G2gd.SetDataMenuBar(G2frame,G2frame.dataWindow.DataMenu)
     1161    mid = G2frame.dataWindow.DataMenu.FindMenu('Select tab')
     1162    menu = G2frame.dataWindow.DataMenu.GetMenu(mid)
     1163    items = menu.GetMenuItems()
     1164    for item in items:
     1165         menu.Remove(item)
     1166    if len(phaseList) == 0: return
     1167    for i,page in enumerate(phaseList):
     1168        Id = wx.NewId()
     1169        if menu.FindItem(page) >= 0: continue # is tab already in menu?
     1170        menu.Append(Id,page,'')
     1171        TabSelectionIdDict[Id] = page
     1172        G2frame.Bind(wx.EVT_MENU, OnSelectPage, id=Id)
     1173    # display the last-selected phase or the 1st
     1174    try:
     1175        G2frame.HistPhaseLastSel
     1176    except:
     1177        G2frame.HistPhaseLastSel = phaseList[0]
     1178    if G2frame.HistPhaseLastSel in phaseList:
     1179        page = phaseList.index(G2frame.HistPhaseLastSel)
     1180    else:
     1181        page = 0
     1182    # TODO: commands in G2frame.dataWindow.DataMenu/"Edit Phase" need to be reimplemented
     1183    HAPBook.SetSelection(page)
     1184    FillDDataWindow(page)
     1185   
  • trunk/GSASIIphsGUI.py

    r4964 r4965  
    1277012770            G2gd.SetDataMenuBar(G2frame,G2frame.dataWindow.DataGeneral)
    1277112771            UpdateGeneral()
    12772         elif text == 'Data':
     12772        elif text == 'Data': # only when conf 'SeparateHistPhaseTreeItem' is False
    1277312773            G2gd.SetDataMenuBar(G2frame,G2frame.dataWindow.DataMenu)
    1277412774            G2plt.PlotSizeStrainPO(G2frame,data,hist='',Start=True)           
     
    1305613056    G2frame.phaseDisplay.AddPage(General,'General')
    1305713057    Pages.append('General')
    13058     DData = wx.ScrolledWindow(G2frame.phaseDisplay)
    13059     G2frame.phaseDisplay.AddPage(DData,'Data')
    13060     Pages.append('Data')
     13058    if not GSASIIpath.GetConfigValue('SeparateHistPhaseTreeItem',False):
     13059        DData = wx.ScrolledWindow(G2frame.phaseDisplay)
     13060        G2frame.phaseDisplay.AddPage(DData,'Data')
     13061        Pages.append('Data')
    1306113062    Atoms = G2G.GSGrid(G2frame.phaseDisplay)
    1306213063#    Atoms.SetScrollRate(0,0)
  • trunk/GSASIIpwdGUI.py

    r4910 r4965  
    39903990       
    39913991    def MakeNewPhase(event):
    3992         if not G2gd.GetGPXtreeItemId(G2frame,G2frame.root,'Phases'):
    3993             sub = G2frame.GPXtree.AppendItem(parent=G2frame.root,text='Phases')
    3994         else:
    3995             sub = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,'Phases')
    39963992        PhaseName = ''
    39973993        dlg = wx.TextEntryDialog(None,'Enter a name for this phase','Phase Name Entry','New phase',
     
    40054001                        break
    40064002                cell = Cell[2:10]       
     4003                sub = G2gd.FindPhaseItem(G2frame)
    40074004                sub = G2frame.GPXtree.AppendItem(parent=sub,text=PhaseName)
    40084005                E,SGData = G2spc.SpcGroup(controls[13])
  • trunk/GSASIIrestrGUI.py

    r4914 r4965  
    21582158            print ("Warning: tab "+tabname+" was not found")
    21592159
    2160     # UpdateRestraints execution starts here
     2160    #### UpdateRestraints execution starts here
    21612161    try:
    21622162        phasedata = G2frame.GetPhaseData()[phaseName]
  • trunk/config_example.py

    r4918 r4965  
    254254shown. This should not need to be changed manually.
    255255'''
     256
     257SeparateHistPhaseTreeItem = False
     258'''When this is set to True, the parameters for each histogram in each phase
     259are placed in a separate 1st-level tree item rather than in the Data tab
     260for each phase. Requires GSAS-II be restarted to take effect. Default is False.
     261
     262This option is under development and is not fully tested.
     263'''
Note: See TracChangeset for help on using the changeset viewer.