Changes in src/sas/guiframe/data_processor.py [44d20af:e54dbc3e] in sasview
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/guiframe/data_processor.py
r44d20af re54dbc3e 1 1 """ 2 Implement grid used to store results of a batch fit. 3 4 This is in Guiframe rather than fitting which is probably where it should be. 5 Actually could be a generic framework implemented in fit gui module. At this 6 point however there this grid behaves independently of the fitting panel and 7 only knows about information sent to it but not about the fits or fit panel and 8 thus cannot feed back to the fitting panel. This could change in the future. 9 10 The organization of the classes goes as: 11 12 .. image:: ../../user/guiframe/BatchGridClassLayout.png 13 :align: center 14 2 Implement grid used to store data 15 3 """ 16 4 import wx … … 38 26 """ 39 27 Object describing a cell in the grid. 28 40 29 """ 41 30 def __init__(self): 42 """43 Initialize attributes of class (label, value, col, row, object)44 """45 31 self.label = "" 46 32 self.value = None … … 53 39 """ 54 40 Return a dictionary of column label and index or row selected 55 56 41 :param sentence: String to parse 57 42 :param list: list of columns label 58 :returns: col_dict59 43 """ 60 61 44 p2 = re.compile(r'\d+') 62 45 p = re.compile(r'[\+\-\*\%\/]') … … 98 81 99 82 class SPanel(ScrolledPanel): 100 """101 ensure proper scrolling of GridPanel102 103 Adds a SetupScrolling call to the normal ScrolledPanel init.104 GridPanel then subclasses this class105 106 """107 83 def __init__(self, parent, *args, **kwds): 108 """109 initialize ScrolledPanel then force a call to SetupScrolling110 111 """112 84 ScrolledPanel.__init__(self, parent, *args, **kwds) 113 85 self.SetupScrolling() … … 115 87 116 88 class GridCellEditor(sheet.CCellEditor): 117 """ 118 Custom cell editor 119 120 This subclasses the sheet.CCellEditor (itself a subclass of 121 grid.GridCellEditor) in order to override two of its methods: 122 PaintBackrgound and EndEdit. 123 124 This is necessary as the sheet module is broken in wx 3.0.2 and 125 improperly subclasses grid.GridCellEditor 126 """ 89 """ Custom cell editor """ 127 90 def __init__(self, grid): 128 """129 Override of CCellEditor init. Runs the grid.GridCellEditor init code130 """131 91 super(GridCellEditor, self).__init__(grid) 132 92 133 def PaintBackground(self, dc, rect, attr):134 """135 Overrides wx.sheet.CCellEditor.PaintBackground which incorrectly calls136 the base class method.137 138 In wx3.0 all paint objects must explicitly139 have a wxPaintDC (Device Context) object. Thus the paint event which140 generates a call to this method provides such a DC object and the141 base class in grid expects to receive that object. sheet was apparently142 not updated to reflect this and hence fails. This could thus143 become obsolete in a future bug fix of wxPython.144 145 Apart from adding a dc variable in the list of arguments in the def146 and in the call to the base class the rest of this method is copied147 as is from sheet.CCellEditor.PaintBackground148 149 **From original GridCellEditor docs:**150 151 Draws the part of the cell not occupied by the edit control. The152 base class version just fills it with background colour from the153 attribute.154 155 NOTE: There is no need to override this if you don't need156 to do something out of the ordinary.157 158 :param dc: the wxDC object for the paint159 """160 # Call base class method.161 DC = dc162 super(sheet.CCellEditor,self).PaintBackground(DC, rect, attr)163 164 93 def EndEdit(self, row, col, grid, previous): 165 """ 166 Commit editing the current cell. Returns True if the value has changed. 167 168 :param previous: previous value in the cell 94 """ 95 Commit editing the current cell. Returns True if the value has changed. 96 @param previous: previous value in the cell 169 97 """ 170 98 changed = False # Assume value not changed … … 180 108 class GridPage(sheet.CSheet): 181 109 """ 182 Class that receives the results of a batch fit.183 184 GridPage displays the received results in a wx.grid using sheet. This is185 then used by GridPanel and GridFrame to present the full GUI.186 110 """ 187 111 def __init__(self, parent, panel=None): 188 112 """ 189 Initialize190 191 Initialize all the attributes of GridPage, and the events. include192 the init stuff from sheet.CSheet as well.193 113 """ 194 114 #sheet.CSheet.__init__(self, parent) 195 115 196 116 # The following is the __init__ from CSheet. ########################## 197 117 # We re-write it here because the class is broken in wx 3.0, … … 219 139 220 140 # Sink events 141 self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnLeftClick) 142 self.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnRightClick) 143 #self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.OnLeftDoubleClick) 221 144 self.Bind(wx.grid.EVT_GRID_RANGE_SELECT, self.OnRangeSelect) 222 145 self.Bind(wx.grid.EVT_GRID_ROW_SIZE, self.OnRowSize) 223 146 self.Bind(wx.grid.EVT_GRID_COL_SIZE, self.OnColSize) 147 self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnCellChange) 224 148 self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnGridSelectCell) 225 # NOTE: the following bind to standard sheet methods that are226 # overriden in this subclassn - actually we have currently227 # disabled the on_context_menu that would override the OnRightClick228 self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnCellChange)229 self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnLeftClick)230 self.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnRightClick)231 #self.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.OnLeftDoubleClick)232 149 # This ends the __init__ section for CSheet. ########################## 233 234 235 236 # The following events must be bound even if CSheet is working237 # properly and does not need the above re-implementation of the238 # CSheet init method. Basically these override any intrinsic binding239 self.Bind(wx.grid.EVT_GRID_LABEL_RIGHT_CLICK, self.on_right_click)240 self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_CLICK, self.on_left_click)241 150 242 151 self.AdjustScrollbars() … … 278 187 if self.GetNumberCols() > 0: 279 188 self.default_col_width = self.GetColSize(0) 280 # We have moved these to the top of the init section with the281 # rest of the grid event bindings from the sheet init when282 # appropriate283 189 #self.Bind(wx.grid.EVT_GRID_LABEL_LEFT_CLICK, self.on_left_click) 284 190 #self.Bind(wx.grid.EVT_GRID_LABEL_RIGHT_CLICK, self.on_right_click) … … 288 194 289 195 def OnLeftClick(self, event): 290 """291 Overrides sheet.CSheet.OnLefClick.292 293 Processes when a cell is selected by left clicking on that cell. First294 process the base Sheet method then the current class specific method295 """296 196 sheet.CSheet.OnLeftClick(self, event) 297 197 self.on_selected_cell(event) 298 299 300 def OnCellChange(self, event): 301 """ 302 Overrides sheet.CSheet.OnCellChange. 303 304 Processes when a cell has been edited by a cell editor. Checks for the 305 edited row being outside the max row to use attribute and if so updates 306 the last row. Then calls the base handler using skip. 198 199 def on_edit_cell(self, event): 200 """ 307 201 """ 308 202 row, _ = event.GetRow(), event.GetCol() … … 315 209 def on_selected_cell(self, event): 316 210 """ 317 Handler catching cell selection. 318 319 Called after calling base 'on left click' method. 320 """ 321 211 Handler catching cell selection 212 """ 322 213 flag = event.CmdDown() or event.ControlDown() 323 214 flag_shift = event.ShiftDown() … … 389 280 def on_left_click(self, event): 390 281 """ 391 Is triggered when the left mouse button is clicked while the mouse 392 is hovering over the column 'label.' 393 394 This processes the information on the selected column: the column name 395 (in row 0 of column) and the range of cells with a valid value to be 396 used by the GridPanel set_axis methods. 397 """ 398 282 Catch the left click on label mouse event 283 """ 399 284 flag = event.CmdDown() or event.ControlDown() 400 285 … … 439 324 def on_right_click(self, event): 440 325 """ 441 Is triggered when the right mouse button is clicked while the mouse 442 is hovering over the column 'label.' 443 444 This brings up a context menu that allows the deletion of the column, 445 or the insertion of a new column either to the right or left of the 446 current column. If inserting a new column can insert a blank column or 447 choose a number of hidden columns. By default all the error parameters 448 are in hidden columns so as to save space on the grid. Also any other 449 intrinsic variables stored with the data such as Temperature, pressure, 450 time etc can be used to populate this menu. 451 """ 452 326 Catch the right click mouse 327 """ 453 328 col = event.GetCol() 454 329 row = event.GetRow() … … 485 360 def insert_col_menu(self, menu, label, window): 486 361 """ 487 method called to populate the 'insert column before current column' 488 submenu. 489 """ 490 362 """ 491 363 if self.data is None: 492 364 return … … 508 380 def insert_after_col_menu(self, menu, label, window): 509 381 """ 510 Method called to populate the 'insert column after current column' 511 submenu 512 """ 513 382 """ 514 383 if self.data is None: 515 384 return … … 532 401 def on_remove_column(self, event=None): 533 402 """ 534 Called when user chooses remove from the column right click menu 535 Checks the columnn exists then calls the remove_column method 536 """ 537 403 """ 538 404 if self.selected_cols is not None or len(self.selected_cols) > 0: 539 405 col = self.selected_cols[0] … … 542 408 def remove_column(self, col, numCols=1): 543 409 """ 544 Remove the col column from the current grid 545 """ 546 410 Remove column to the current grid 411 """ 547 412 # add data to the grid 548 413 row = 0 … … 564 429 def on_insert_column(self, event): 565 430 """ 566 Called when user chooses insert 'column before' submenu 567 of the column context menu obtained when right clicking on a given 568 column header. 569 570 Sets up to insert column into the current grid before the current 571 highlighted column location and sets up what to populate that column 572 with. Then calls insert_column method to actually do the insertion. 573 """ 574 431 """ 575 432 if self.selected_cols is not None or len(self.selected_cols) > 0: 576 433 col = self.selected_cols[0] … … 585 442 def on_insert_after_column(self, event): 586 443 """ 587 Called when user chooses insert 'column after' submenu 588 of the column context menu obtained when right clicking on a given 589 column header. 590 591 Sets up to insert column into the current grid after the current 592 highlighted column location and sets up what to populate that column 593 with. Then calls insert_column method to actually do the insertion. 594 """ 595 444 Insert the given column after the highlighted column 445 """ 596 446 if self.selected_cols is not None or len(self.selected_cols) > 0: 597 447 col = self.selected_cols[0] + 1 … … 605 455 def insert_column(self, col, col_name): 606 456 """ 607 Insert column at position col with data[col_name] into the current 608 grid. 609 """ 610 457 """ 611 458 row = 0 612 459 self.InsertCols(pos=col, numCols=1, updateLabels=True) … … 630 477 def on_set_x_axis(self, event): 631 478 """ 632 Just calls the panel version of the method 633 """ 634 479 """ 635 480 self.panel.set_xaxis(x=self.axis_value, label=self.axis_label) 636 481 637 482 def on_set_y_axis(self, event): 638 483 """ 639 Just calls the panel version of the method 640 """ 641 484 """ 642 485 self.panel.set_yaxis(y=self.axis_value, label=self.axis_label) 643 486 … … 645 488 """ 646 489 Add data to the grid 647 648 490 :param data_inputs: data to use from the context menu of the grid 649 :param data_ouputs: default columns displayed 650 """ 651 491 :param data_ouputs: default columns deplayed 492 """ 652 493 self.file_name = file_name 653 494 self.details = details … … 686 527 Set the values in grids 687 528 """ 688 689 529 # add data to the grid 690 530 row = 0 … … 722 562 Return value contained in the grid 723 563 """ 724 725 564 grid_view = {} 726 565 for col in xrange(self.GetNumberCols()): … … 745 584 def onContextMenu(self, event): 746 585 """ 747 Method to handle cell right click context menu. 748 749 THIS METHOD IS NOT CURRENTLY USED. It is designed to provide a 750 cell pop up context by right clicking on a cell and gives the 751 option to cut, paste, and clear. This will probably be removed in 752 future versions and is being superceded by more traditional cut and 753 paste options. 754 """ 755 586 Default context menu 587 """ 756 588 wx_id = wx.NewId() 757 589 c_menu = wx.Menu() … … 788 620 def on_copy(self, event): 789 621 """ 790 Called when copy is chosen from cell right click context menu 791 792 THIS METHOD IS NOT CURRENTLY USED. it is part of right click cell 793 context menu which is being removed. This will probably be removed in 794 future versions and is being superceded by more traditional cut and 795 paste options 796 """ 797 622 On copy event from the contextmenu 623 """ 798 624 self.Copy() 799 625 800 626 def on_paste(self, event): 801 627 """ 802 Called when paste is chosen from cell right click context menu 803 804 THIS METHOD IS NOT CURRENTLY USED. it is part of right click cell 805 context menu which is being removed. This will probably be removed in 806 future versions and is being superceded by more traditional cut and 807 paste options 808 """ 809 628 On paste event from the contextmenu 629 """ 810 630 if self.data == None: 811 631 self.data = {} … … 816 636 def on_clear(self, event): 817 637 """ 818 Called when clear cell is chosen from cell right click context menu 819 820 THIS METHOD IS NOT CURRENTLY USED. it is part of right click cell 821 context menu which is being removed. This will probably be removed in 822 future versions and is being superceded by more traditional cut and 823 paste options 824 """ 825 638 Clear the cells selected 639 """ 826 640 self.Clear() 827 641 … … 832 646 ## Title to appear on top of the window 833 647 """ 834 835 648 window_caption = "Notebook " 836 649 … … 869 682 def enable_close_button(self): 870 683 """ 871 display the close button on the tab if more than 1 tab exits. 872 Otherwise remove the close button 873 """ 874 684 display the close button on tab for more than 1 tabs else remove the 685 close button 686 """ 875 687 if self.GetPageCount() <= 1: 876 688 style = self.GetWindowStyleFlag() … … 888 700 def on_edit_axis(self): 889 701 """ 890 Return the select cell range from a given selected column. Checks that 891 all cells are from the same column 892 """ 893 702 Return the select cell of a given selected column. Check that all cells 703 are from the same column 704 """ 894 705 pos = self.GetSelection() 895 706 grid = self.GetPage(pos) … … 921 732 Add highlight rows 922 733 """ 923 924 734 pos = self.GetSelection() 925 735 grid = self.GetPage(pos) … … 949 759 def get_column_labels(self): 950 760 """ 951 return dictionary of columns labels on the current page 952 """ 953 761 return dictionary of columns labels of the current page 762 """ 954 763 pos = self.GetSelection() 955 764 grid = self.GetPage(pos) … … 964 773 """ 965 774 Receive a list of cells and create a string presenting the selected 966 cells that can be used as data for one axis of a plot. 967 775 cells. 968 776 :param cell_list: list of tuple 777 969 778 """ 970 779 pos = self.GetSelection() … … 1044 853 close the page 1045 854 """ 1046 1047 855 if self.GetPageCount() == 1: 1048 856 event.Veto() … … 1050 858 1051 859 def set_data(self, data_inputs, data_outputs, details="", file_name=None): 1052 """1053 """1054 860 if data_outputs is None or data_outputs == {}: 1055 861 return … … 1074 880 def get_odered_results(self, inputs, outputs=None): 1075 881 """ 1076 Order a list of 'inputs.' Used to sort rows and columns to present 1077 in batch results grid. 1078 """ 1079 882 Get ordered the results 883 """ 1080 884 # Let's re-order the data from the keys in 'Data' name. 1081 885 if outputs == None: … … 1110 914 Append a new column to the grid 1111 915 """ 1112 1113 # I Believe this is no longer used now that we have removed the1114 # edit menu from the menubar - PDB July 12, 20151115 916 pos = self.GetSelection() 1116 917 grid = self.GetPage(pos) … … 1121 922 Remove the selected column from the grid 1122 923 """ 1123 # I Believe this is no longer used now that we have removed the1124 # edit menu from the menubar - PDB July 12, 20151125 924 pos = self.GetSelection() 1126 925 grid = self.GetPage(pos) … … 1128 927 1129 928 class GridPanel(SPanel): 1130 """1131 A ScrolledPanel class that contains the grid sheet as well as a number of1132 widgets to create interesting plots and buttons for help etc.1133 """1134 1135 929 def __init__(self, parent, data_inputs=None, 1136 930 data_outputs=None, *args, **kwds): 1137 """1138 Initialize the GridPanel1139 """1140 1141 931 SPanel.__init__(self, parent, *args, **kwds) 1142 932 … … 1200 990 def get_plot_axis(self, col, list): 1201 991 """ 992 1202 993 """ 1203 994 axis = [] … … 1224 1015 def on_view(self, event): 1225 1016 """ 1226 Get object represented by the given cells and plot them. Basically 1227 plot the colum in y vs the column in x. 1228 """ 1229 1017 Get object represented buy the given cell and plot them. 1018 """ 1230 1019 pos = self.notebook.GetSelection() 1231 1020 grid = self.notebook.GetPage(pos) … … 1307 1096 Evaluate the contains of textcrtl and plot result 1308 1097 """ 1309 1310 1098 pos = self.notebook.GetSelection() 1311 1099 grid = self.notebook.GetPage(pos) … … 1415 1203 running "file:///...." 1416 1204 1417 :param evt: Triggers on clicking the help button 1418 """ 1419 1205 :param evt: Triggers on clicking the help button 1206 """ 1420 1207 #import documentation window here to avoid circular imports 1421 1208 #if put at top of file with rest of imports. … … 1431 1218 Get sentence from dict 1432 1219 """ 1433 1434 1220 for tok, (col_name, list) in dict.iteritems(): 1435 1221 col = column_names[col_name] … … 1444 1230 def layout_grid(self): 1445 1231 """ 1446 Draw the area related to the grid by adding it as the first element 1447 in the panel's grid_sizer 1448 """ 1449 1232 Draw the area related to the grid 1233 """ 1450 1234 self.notebook = Notebook(parent=self) 1451 1235 self.notebook.set_data(self._data_inputs, self._data_outputs) … … 1454 1238 def layout_plotting_area(self): 1455 1239 """ 1456 Add the area containing all the plot options, buttons etc to a plotting 1457 area sizer to later be added to the top level grid_sizer 1458 """ 1459 1240 Draw area containing options to plot 1241 """ 1460 1242 view_description = wx.StaticBox(self, -1, 'Plot Fits/Residuals') 1461 1243 note = "To plot the fits (or residuals), click the 'View Fits' button" … … 1499 1281 (self.plot_button, 0, 1500 1282 wx.LEFT | wx.TOP | wx.BOTTOM, 12), 1501 (self.help_button,0, 1283 (self.help_button,0, 1502 1284 wx.LEFT | wx.TOP | wx.BOTTOM, 12)]) 1503 1285 … … 1534 1316 Get the selected column on the visible grid and set values for axis 1535 1317 """ 1536 1537 1318 try: 1538 1319 cell_list = self.notebook.on_edit_axis() … … 1554 1335 Receive a list of cells and create a string presenting the selected 1555 1336 cells. 1556 1557 1337 :param cell_list: list of tuple 1558 """ 1559 1338 1339 """ 1560 1340 if self.notebook is not None: 1561 1341 return self.notebook.create_axis_label(cell_list) … … 1565 1345 get controls to modify 1566 1346 """ 1567 1568 1347 if label != None: 1569 1348 tcrtl_label.SetValue(str(label)) … … 1574 1353 """ 1575 1354 """ 1576 # I Believe this is no longer used now that we have removed the1577 # edit menu from the menubar - PDB July 12, 20151578 1355 if self.notebook is not None: 1579 1356 self.notebook.add_column() … … 1582 1359 """ 1583 1360 """ 1584 # I Believe this is no longer used now that we have removed the1585 # edit menu from the menubar - PDB July 12, 20151586 1361 if self.notebook is not None: 1587 1362 self.notebook.on_remove_column() … … 1589 1364 1590 1365 class GridFrame(wx.Frame): 1591 """1592 The main wx.Frame for the batch results grid1593 """1594 1595 1366 def __init__(self, parent=None, data_inputs=None, data_outputs=None, id=-1, 1596 title="Batch Fitting Results Panel", size=(800, 500)): 1597 """ 1598 Initialize the Frame 1599 """ 1600 1367 title="Grid Window", size=(800, 500)): 1601 1368 wx.Frame.__init__(self, parent=parent, id=id, title=title, size=size) 1602 1369 self.parent = parent … … 1622 1389 wx.EVT_MENU(self, self.save_menu.GetId(), self.on_save_page) 1623 1390 1624 # We need to grab a WxMenu handle here, otherwise the next one to grab 1625 # the handle will be treated as the Edit Menu handle when checking in 1626 # on_menu_open event handler and thus raise an exception when it hits an 1627 # unitialized object. Alternative is to comment out that whole section 1628 # in on_menu_open, but that would make it more difficult to undo the 1629 # hidding of the menu. PDB July 12, 2015. 1630 # 1631 # To enable the Edit menubar comment out next line and uncomment the 1632 # following line. 1633 self.edit = wx.Menu() 1634 #self.add_edit_menu() 1635 1391 # To add the edit menu, call add_edit_menu() here. 1392 self.edit = None 1636 1393 self.Bind(wx.EVT_MENU_OPEN, self.on_menu_open) 1394 1637 1395 self.Bind(wx.EVT_CLOSE, self.on_close) 1638 1396 1639 1397 def add_edit_menu(self, menubar): 1640 """1641 populates the edit menu on the menubar. Not activated as of SasView1642 3.1.01643 """1644 1398 self.edit = wx.Menu() 1645 1399 … … 1675 1429 def on_copy(self, event): 1676 1430 """ 1677 On Copy from the Edit menu item on the menubar 1678 """ 1679 # I Believe this is no longer used now that we have removed the 1680 # edit menu from the menubar - PDB July 12, 2015 1431 On Copy 1432 """ 1681 1433 if event != None: 1682 1434 event.Skip() … … 1687 1439 def on_paste(self, event): 1688 1440 """ 1689 On Paste from the Edit menu item on the menubar 1690 """ 1691 # I Believe this is no longer used now that we have removed the 1692 # edit menu from the menubar - PDB July 12, 2015 1441 On Paste 1442 """ 1693 1443 if event != None: 1694 1444 event.Skip() … … 1699 1449 def on_clear(self, event): 1700 1450 """ 1701 On Clear from the Edit menu item on the menubar 1702 """ 1703 # I Believe this is no longer used now that we have removed the 1704 # edit menu from the menubar - PDB July 12, 2015 1451 On Clear 1452 """ 1705 1453 pos = self.panel.notebook.GetSelection() 1706 1454 grid = self.panel.notebook.GetPage(pos) … … 1718 1466 def on_remove_column(self, event): 1719 1467 """ 1720 On remove column from the Edit menu Item on the menubar 1721 """ 1722 # I Believe this is no longer used now that we have removed the 1723 # edit menu from the menubar - PDB July 12, 2015 1468 On remove column 1469 """ 1724 1470 pos = self.panel.notebook.GetSelection() 1725 1471 grid = self.panel.notebook.GetPage(pos) … … 1789 1535 def on_save_page(self, event): 1790 1536 """ 1791 Saves data in grid to a csv file. 1792 1793 At this time only the columns displayed get saved. Thus any error 1794 bars not inserted before saving will not be saved in the file 1795 """ 1796 1537 """ 1797 1538 if self.parent is not None: 1798 1539 pos = self.panel.notebook.GetSelection() … … 1825 1566 def on_open(self, event): 1826 1567 """ 1827 Open file containing batch result 1828 """ 1829 1568 Open file containg batch result 1569 """ 1830 1570 if self.parent is not None: 1831 1571 self.parent.on_read_batch_tofile(self) … … 1835 1575 open excel and display batch result in Excel 1836 1576 """ 1837 1838 1577 if self.parent is not None: 1839 1578 pos = self.panel.notebook.GetSelection() … … 1886 1625 details="", *args, **kwds): 1887 1626 """ 1888 Initialize dialog1889 1890 1627 :param parent: Window instantiating this dialog 1891 :param result: result to display in a grid or export to an external \1628 :param result: result to display in a grid or export to an external 1892 1629 application. 1893 1630 """ 1894 1895 1631 #kwds['style'] = wx.CAPTION|wx.SYSTEM_MENU 1896 1632 wx.Frame.__init__(self, parent, *args, **kwds) … … 1915 1651 Draw the content of the current dialog window 1916 1652 """ 1917 1918 1653 vbox = wx.BoxSizer(wx.VERTICAL) 1919 1654 box_description = wx.StaticBox(self.panel, -1, str("Batch Outputs")) … … 1969 1704 Get the user selection and display output to the selected application 1970 1705 """ 1971 1972 1706 if self.flag == 1: 1973 1707 self.parent.open_with_localapp(data_inputs=self.data_inputs, … … 1981 1715 close the Window 1982 1716 """ 1983 1984 1717 self.Close() 1985 1718 … … 1988 1721 Receive event and display data into third party application 1989 1722 or save data to file. 1723 1990 1724 """ 1991 1725 if self.save_to_file.GetValue():
Note: See TracChangeset
for help on using the changeset viewer.