Package reflectometry :: Package model1d :: Package adaptor :: Module matDatasetEditor

Source Code for Module reflectometry.model1d.adaptor.matDatasetEditor

  1  import wx 
  2  import wx.aui 
  3  import traceback 
  4   
  5  from park.parkAui.common.parkEvent import EVT_PARK_DATASET 
  6  from matDatasetDataPanel import MatDatasetDataPanel as ReflDatasetViewer 
  7  from reflDatasetMeta     import ReflDatasetMetaPanel 
  8   
  9  VIEWER_TITLE = 'Dataset Viewer' 
 10  META_TITLE   = 'Meta Data' 
 11   
 12   
 13  DefaultPaneInfo = lambda : \ 
 14      wx.aui.AuiPaneInfo().CloseButton(False).PinButton(True).MaximizeButton( 
 15                      True).MinimizeButton(True).CaptionVisible(True).Restore() 
 16   
 17   
18 -class MatDatasetEditor(wx.Dialog):
19 - def __init__(self, 20 parent, 21 id=-1, 22 pos = wx.DefaultPosition, 23 size=(600, 500) 24 ):
25 super( MatDatasetEditor, self).__init__(parent, id=id, pos=pos, 26 size=size) 27 self._mgr = wx.aui.AuiManager(self) 28 29 self.viewer = ReflDatasetViewer(self) 30 self.meta = ReflDatasetMetaPanel(self) 31 32 self._mgr.AddPane(self.viewer, 33 DefaultPaneInfo().Center().Caption(VIEWER_TITLE) ) 34 35 self._mgr.AddPane(self.meta, 36 DefaultPaneInfo().Bottom().Caption(META_TITLE 37 ).BestSize(self.meta.GetBestSize() ) ) 38 39 self._mgr.Update() 40 41 self.settings={} 42 self.StorePerspective() 43 44 #self.Bind(wx.EVT_CLOSE, self.OnClose) 45 self.viewer.Bind(EVT_PARK_DATASET, self.OnViewerDatasetChanged ) 46 self.meta.Bind( EVT_PARK_DATASET, self.OnMetaDatasetChanged ) 47 self._mgr.Bind(wx.aui.EVT_AUI_PANE_BUTTON, self.OnAuiButtonPressed) 48 49 self.dataset = None 50 self.model = None
51 52
53 - def GetOwnerManager(self):
54 """ Return the AUI manager. """ 55 return self._mgr
56
57 - def SetModel(self, model):
58 self.model = model 59 self.UpdateModelView()
60
61 - def GetModel(self):
62 return self.model
63 64
65 - def SetDataset(self, dataset):
66 """ Set the dataset. """ 67 self.dataset = dataset 68 self.UpdateView()
69 70
71 - def GetDataset(self):
72 """ Return the dataset. """ 73 return self.dataset
74 75
76 - def UpdateModelView(self):
77 if self.model is None: 78 self.dataset = None 79 else: 80 self.dataset = self.model.getXmlDataset() 81 self.UpdateView()
82 83
84 - def UpdateView(self):
85 """ Update all the views""" 86 self.viewer.SetDataset(self.dataset, -1) 87 self.meta.SetDataset(self.dataset, -1)
88 89
90 - def StorePerspective(self):
91 """ Set the perspective""" 92 self.settings['perspectives'] = self._mgr.SavePerspective() 93 self.viewer.SetPerspective(self.settings['perspectives']) 94 self.meta.SetPerspective(self.settings['perspectives'])
95 96
97 - def OnAuiButtonPressed(self, event):
98 """ The button on aui panel is pressed. """ 99 if event.GetButton() == wx.aui.AUI_BUTTON_CLOSE: 100 event.Veto() 101 elif event.GetButton() == wx.aui.AUI_BUTTON_PIN: 102 self.StorePerspective() 103 event.Skip() 104 else: 105 event.Skip()
106 107
108 - def OnViewerDatasetChanged(self, event):
109 """ The dataset are changed via viewer panel. """ 110 dataset = event.GetDataset() 111 ind = event.GetDataIndex() 112 113 title = META_TITLE 114 data = dataset.getXmlData() 115 if len(data) > 0 and ind >= 0 and ind < len (data): 116 fname = data[ind].getSource() 117 title = '%s:%s' %(title, fname) 118 else: 119 ind = -1 120 121 self._mgr.GetPane(self.meta).Caption(title) 122 self._mgr.Update() 123 self.meta.SetDataset(dataset, ind ) 124 event.Skip()
125 126
127 - def OnMetaDatasetChanged(self, event):
128 """ The meta data for the specific data is changed.""" 129 self.viewer.Update(event.GetDataIndex() >= 0) 130 event.Skip()
131