Changeset 1231
- Timestamp:
- Feb 26, 2013 12:32:03 AM (9 years ago)
- Location:
- mda2idd_report/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
mda2idd_report/src/mda2idd_gui.py
r1218 r1231 63 63 style=wx.DEFAULT_FRAME_STYLE) 64 64 65 self.startup_complete = False 65 66 self.selectedMdaFile = None 66 67 self.dirty = False … … 77 78 self.SetPosition(wx.Point(self.prefs['pos_h'], self.prefs['pos_v'])) 78 79 self.splitter1.SetSashPosition(self.prefs['sash_pos'], True) 80 summary = self.prefs['short_summary'] 81 self.menu_file.Check(self.id_menu_report, self.prefs['short_summary']) 82 self.update_mrud_menus() 79 83 80 84 self.setStatusText('preferences file: ' + self.preferences_file) 81 85 self.setSummaryText('') 86 self.startup_complete = True 82 87 83 88 def _init_menus(self): 84 id_menu_exit = 8101 # arbitrary starting number 85 id_menu_prefs = 1 + id_menu_exit 86 id_menu_about = 1 + id_menu_prefs 87 id_menu_save = 1 + id_menu_about 89 id_menu_exit = 8101 # arbitrary starting number 90 id_menu_prefs = 1 + id_menu_exit 91 id_menu_about = 1 + id_menu_prefs 92 id_menu_save = 1 + id_menu_about 93 self.id_menu_report = 1 + id_menu_save 94 id_menu_mrud = 1 + self.id_menu_report 88 95 89 96 self.menu_file = wx.Menu(title='') … … 91 98 help=u'Save MDA data to ASCII text file') 92 99 self.Bind(wx.EVT_MENU, self.OnMenuFileItemSave, id=id_menu_save) 100 self.menu_file.AppendSeparator() 101 self.menu_file.AppendCheckItem(text=u'Brief &Report\tCtrl+R', id=self.id_menu_report, 102 help=u'Show a brief summary report of the selected MDA file') 103 self.Bind(wx.EVT_MENU, self.OnMenuFileItemReportStyle, id=self.id_menu_report) 93 104 # TODO: provide a control to let user edit self.preferences_file 94 105 # TODO: provide a control to let user edit self.prefs 95 # self.menu_file.AppendSeparator()96 106 # self.menu_file.Append(text=u'&Preferences ...', id=id_menu_prefs, 97 107 # help=u'Edit program preferences ...') 98 108 # self.Bind(wx.EVT_MENU, self.OnMenuFileItemPrefs, id=id_menu_prefs) 109 self.menu_file.AppendSeparator() 110 self.menu_file.Append(text=u'&Save\tCtrl+S', id=id_menu_save, 111 help=u'Save MDA data to ASCII text file') 112 self.menu_file.AppendSeparator() 113 114 115 self.menu_file.Append(text=u'MRUD list', id=id_menu_mrud, 116 help=u'Most Recently Used Directories') 117 self.menu_file.Enable(id_menu_mrud, False) 118 99 119 self.menu_file.AppendSeparator() 100 120 self.menu_file.Append(text=u'E&xit', id=id_menu_exit, … … 117 137 def _init_contents(self): 118 138 self.statusBar = self.CreateStatusBar() 119 139 140 sizer = wx.BoxSizer(orient=wx.VERTICAL) 141 142 self.dirPicker = wx.DirPickerCtrl (self, id=wx.ID_ANY, 143 style=wx.DIRP_DIR_MUST_EXIST | wx.DIRP_USE_TEXTCTRL) 144 sizer.Add( 145 self.dirPicker, 146 0, # make vertically unstretchable 147 wx.EXPAND | # make horizontally stretchable 148 wx.ALL, # and make border all around 149 ) 150 120 151 self.splitter1 = wx.SplitterWindow(self, id=wx.ID_ANY, style=wx.SP_3D) 121 152 sizer.Add( 153 self.splitter1, 154 1, # make vertically stretchable 155 wx.EXPAND | # make horizontally stretchable 156 wx.ALL, # and make border all around 157 ) 158 122 159 self.textCtrl1 = wx.TextCtrl (self.splitter1, id=wx.ID_ANY, 123 160 style=wx.TE_READONLY|wx.TE_MULTILINE) … … 128 165 self.dir.SetFilter(self.prefs['file_filter']) 129 166 # Select the starting folder and expand to it 130 self. dir.ExpandPath(self.prefs['start_dir'])167 self.setCurrentDirectory(self.prefs['start_dir']) 131 168 self.splitter1.SplitVertically(self.dir, self.textCtrl1) 132 169 … … 137 174 #self.Bind(wx.EVT_SIZE, self.OnWindowGeometryChanged) 138 175 self.Bind(wx.EVT_MOVE, self.OnWindowGeometryChanged) 176 self.Bind(wx.EVT_DIRPICKER_CHANGED, self.OnSelectDirPicker) 177 178 self.SetSizerAndFit(sizer) 139 179 140 180 def GetDefaultPreferencesFileName(self): … … 172 212 if os.path.exists(selectedItem): 173 213 if os.path.isfile(selectedItem): 174 summary = mda2idd_summary.summaryMda(selectedItem) 214 checked = self.menu_file.IsChecked(self.id_menu_report) 215 summary = mda2idd_summary.summaryMda(selectedItem, checked) 175 216 self.setSummaryText(summary) 176 217 self.selectedMdaFile = selectedItem … … 180 221 self.prefs['start_dir'] = path 181 222 self.update_mrud(path) 223 self.dirPicker.SetPath( path ) 182 224 if os.path.isdir(selectedItem): 183 225 self.prefs['start_dir'] = selectedItem 184 226 self.update_mrud(selectedItem) 227 self.dirPicker.SetPath( selectedItem ) 185 228 self.writePreferences() 229 230 def OnSelectDirPicker(self, event): 231 '''user changed the text or browsed to a directory in the picker''' 232 if not isinstance(event, wx.Event): 233 self.setStatusText( "Not an event: %s" % str(event) ) 234 event.Skip() 235 return 236 selectedItem = self.dirPicker.GetPath() 237 if os.path.exists(selectedItem): 238 if os.path.isdir(selectedItem): 239 self.prefs['start_dir'] = selectedItem 240 self.update_mrud(selectedItem) 241 self.dir.ExpandPath(selectedItem) 186 242 187 243 def OnMenuFileItemSave(self, event): … … 193 249 def OnMenuFileItemPrefs(self, event): 194 250 '''save the preferences to a file''' 195 pass # TODO: 251 # TODO: edit preferences dialog 252 self.writePreferences() # TODO: allow user to change file name? 253 254 def OnMenuFileItemReportStyle(self, event): 255 if self.selectedMdaFile is not None and os.path.exists(self.selectedMdaFile): 256 checked = self.menu_file.IsChecked(self.id_menu_report) 257 summary = mda2idd_summary.summaryMda(self.selectedMdaFile, checked) 258 self.setSummaryText(summary) 196 259 197 260 def OnMenuFileItemExit(self, event): … … 201 264 :param event: wxPython event object 202 265 ''' 266 self.writePreferences() 203 267 self.Close() 268 269 def setCurrentDirectory(self, directory): 270 '''set the current directory''' 271 self.dir.ExpandPath(directory) 272 self.dirPicker.SetPath(directory) 204 273 205 274 def setSummaryText(self, text): … … 227 296 'sash_pos': 200, 228 297 'start_dir': os.path.dirname(self.preferences_file), 298 'short_summary': True, 229 299 'file_filter': '*.mda', 230 300 'mrud': [ … … 258 328 259 329 self.prefs['file_filter'] = root.find('file_filter').text.strip() 330 node = root.find('short_summary') 331 self.prefs['short_summary'] = node is None or 'true' == node.text.strip().lower() 260 332 self.prefs['start_dir'] = root.find('starting_directory').text.strip() 261 333 … … 265 337 if self.preferences_file is not None: 266 338 if os.path.exists(os.path.dirname(self.preferences_file)): 267 268 self.prefs['size_h'], self.prefs['size_v'] = self.GetSize() 269 self.prefs['pos_h'], self.prefs['pos_v'] = self.GetPosition() 270 271 root = ElementTree.Element("mda2idd_gui") 272 root.set("version", __version__) 273 root.set("datetime", str(datetime.datetime.now())) 339 if self.startup_complete: 340 341 self.prefs['size_h'], self.prefs['size_v'] = self.GetSize() 342 self.prefs['pos_h'], self.prefs['pos_v'] = self.GetPosition() 343 self.prefs['short_summary'] = self.menu_file.IsChecked(self.id_menu_report) 274 344 275 node = ElementTree.SubElement(root, "preferences_file") 276 node.text = self.preferences_file 277 278 node = ElementTree.SubElement(root, "written_by") 279 node.set("program", sys.argv[0]) 280 281 node = ElementTree.SubElement(root, "subversion") 282 node.set("id", __svnid__) 283 284 window = ElementTree.SubElement(root, "window") 285 node = ElementTree.SubElement(window, "size") 286 node.set("h", str(self.prefs['size_h'])) 287 node.set("v", str(self.prefs['size_v'])) 288 node = ElementTree.SubElement(window, "position") 289 node.set("h", str(self.prefs['pos_h'])) 290 node.set("v", str(self.prefs['pos_v'])) 291 node = ElementTree.SubElement(window, "sash") 292 node.set("pos", str(self.prefs['sash_pos'])) 293 294 node = ElementTree.SubElement(root, "file_filter") 295 node.text = self.prefs['file_filter'] 296 297 node = ElementTree.SubElement(root, "starting_directory") 298 node.text = self.prefs['start_dir'] 299 300 mrud = ElementTree.SubElement(root, "mrud") 301 mrud.append(ElementTree.Comment('MRUD: Most-Recently-Used Directory')) 302 mrud.set("max_directories", str(self.prefs['mrud_max_directories'])) 303 for item in self.mrud: 304 ElementTree.SubElement(mrud, "dir").text = item 305 306 doc = minidom.parseString(ElementTree.tostring(root)) 307 xmlText = doc.toprettyxml(indent = " ", encoding='UTF-8') 308 309 f = open(self.preferences_file, 'w') 310 f.write(xmlText) 311 f.close() 345 root = ElementTree.Element("mda2idd_gui") 346 root.set("version", __version__) 347 root.set("datetime", str(datetime.datetime.now())) 348 349 node = ElementTree.SubElement(root, "preferences_file") 350 node.text = self.preferences_file 351 352 node = ElementTree.SubElement(root, "written_by") 353 node.set("program", sys.argv[0]) 354 355 node = ElementTree.SubElement(root, "subversion") 356 node.set("id", __svnid__) 357 358 window = ElementTree.SubElement(root, "window") 359 node = ElementTree.SubElement(window, "size") 360 node.set("h", str(self.prefs['size_h'])) 361 node.set("v", str(self.prefs['size_v'])) 362 node = ElementTree.SubElement(window, "position") 363 node.set("h", str(self.prefs['pos_h'])) 364 node.set("v", str(self.prefs['pos_v'])) 365 node = ElementTree.SubElement(window, "sash") 366 node.set("pos", str(self.prefs['sash_pos'])) 367 368 node = ElementTree.SubElement(root, "file_filter") 369 node.text = self.prefs['file_filter'] 370 371 node = ElementTree.SubElement(root, "starting_directory") 372 node.text = self.prefs['start_dir'] 373 374 node = ElementTree.SubElement(root, "short_summary") 375 node.text = str(self.prefs['short_summary']) 376 377 mrud = ElementTree.SubElement(root, "mrud") 378 mrud.append(ElementTree.Comment('MRUD: Most-Recently-Used Directory')) 379 mrud.set("max_directories", str(self.prefs['mrud_max_directories'])) 380 for item in self.mrud: 381 ElementTree.SubElement(mrud, "dir").text = item 382 383 doc = minidom.parseString(ElementTree.tostring(root)) 384 xmlText = doc.toprettyxml(indent = " ", encoding='UTF-8') 385 386 f = open(self.preferences_file, 'w') 387 f.write(xmlText) 388 f.close() 312 389 313 390 314 391 def update_mrud(self, newdir): 315 ''' file menulist of most-recently-used directories'''392 '''list of most-recently-used directories''' 316 393 if newdir in self.mrud: 317 394 if self.mrud[0] == newdir: … … 321 398 if len(self.mrud) >= self.prefs['mrud_max_directories']: 322 399 self.mrud = self.mrud[:self.prefs['mrud_max_directories']] 323 # TODO: manage the MRUD menu items 400 401 self.update_mrud_menus() 402 403 404 def update_mrud_menus(self): 405 '''manage the MRUD menu items''' 406 # TODO: this is too complicated -- save the MRUD menu details to avoid the search 407 mrud_pos = None # need to know the insertion point in the menu 408 if len(self.mrud) > 0: 409 # remove old MRUD items 410 # look for items just after "MRUD list" 411 signal = False 412 for counter, item in enumerate(self.menu_file.GetMenuItems()): 413 if item.GetKind() == wx.ITEM_NORMAL: 414 if signal: 415 self.menu_file.Delete(item.GetId()) # remove any old MRUD items 416 if item.GetItemLabel() == 'MRUD list': 417 signal = True # trigger next item(s) for removal 418 mrud_pos = counter 419 else: 420 if signal: 421 signal = False 422 break 423 signal = False # no more items 424 # add new MRUD items 425 if mrud_pos is not None: 426 for counter, dir in enumerate(self.mrud): 427 if os.path.exists(dir): 428 text = '%s\tCtrl+%d' % (dir, counter+1) 429 self.menu_file.Insert(mrud_pos+counter+1, wx.ID_ANY, text=text) 430 id = self.menu_file.FindItem(text) 431 self.Bind(wx.EVT_MENU, self.OnMrudItem, id=id) 432 433 def OnMrudItem(self, event): 434 '''handle MRUD menu items''' 435 id = event.GetId() 436 label = self.menu_file.GetLabelText(event.GetId()) 437 self.setCurrentDirectory(label) 438 # self.setStatusText(label) 324 439 325 440 def OnAbout(self, event): -
mda2idd_report/src/mda2idd_report.py
r1225 r1231 89 89 90 90 data = mda.readMDA(mdaFileName) 91 # TODO: check if MDA was read and valid and all that stuff ... 91 if data is None: 92 return 'could not read: ' + mdaFileName 92 93 93 94 summary = [] -
mda2idd_report/src/mda2idd_summary.py
r1228 r1231 31 31 32 32 33 def summaryMda(mdaFileName ):33 def summaryMda(mdaFileName, shortReport = True): 34 34 ''' 35 35 text summary of a single MDA file (name, rank, datetime, ...) … … 41 41 return '' 42 42 43 #data = mda.readMDA(mdaFileName)44 data = mda.skimMDA(mdaFileName) # just the header info43 reportType = {True: mda.skimMDA, False: mda.readMDA}[shortReport] 44 data = reportType(mdaFileName) # just the header info 45 45 if data is None: 46 46 return "could not read: " + mdaFileName 47 # TODO: check if MDA was read and valid and all that stuff ...48 47 49 48 summary = []
Note: See TracChangeset
for help on using the changeset viewer.