now main window is managed by aui
This commit is contained in:
		@@ -5,6 +5,8 @@ import wx.gizmos
 | 
				
			|||||||
import wx.grid
 | 
					import wx.grid
 | 
				
			||||||
import wx.propgrid as wxpg
 | 
					import wx.propgrid as wxpg
 | 
				
			||||||
import wx.lib.plot as wxplot
 | 
					import wx.lib.plot as wxplot
 | 
				
			||||||
 | 
					import wx.lib.agw.aui as aui
 | 
				
			||||||
 | 
					# import wx.aui as aui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ID_NEW                  = wx.NewId()
 | 
					ID_NEW                  = wx.NewId()
 | 
				
			||||||
ID_SAVE                 = wx.NewId()
 | 
					ID_SAVE                 = wx.NewId()
 | 
				
			||||||
@@ -55,27 +57,40 @@ class Icons:
 | 
				
			|||||||
    """
 | 
					    """
 | 
				
			||||||
    pass
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PropertyCtrl(wxpg.PropertyGrid):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def GetPosition(self):
 | 
				
			||||||
 | 
					        return self.GetPanel().GetPosition()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def Clear(self):
 | 
				
			||||||
 | 
					        wxpg.PropertyGrid.Clear(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MainFrame(wx.Frame):
 | 
					class MainFrame(wx.Frame):
 | 
				
			||||||
    def __init__(self, parent):
 | 
					    def __init__(self, parent):
 | 
				
			||||||
        wx.Frame.__init__ (self, parent, title = 'Opal', size = wx.Size(873,594))
 | 
					        wx.Frame.__init__ (self, parent, title = 'Opal', size = wx.Size(873,594))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.auimgr = aui.AuiManager()
 | 
				
			||||||
 | 
					        self.auimgr.SetManagedWindow(self)
 | 
				
			||||||
 | 
					        self.auimgr.GetArtProvider().SetMetric(aui.AUI_DOCKART_SASH_SIZE, 3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
 | 
					        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.ilist, self.icons = self.LoadIcons()
 | 
					        self.ilist, self.icons = self.LoadIcons()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bSizer3 = wx.BoxSizer(wx.HORIZONTAL)
 | 
					        # Спецификации
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.m_specs = wx.TreeCtrl(self, style = wx.TR_DEFAULT_STYLE)
 | 
					        self.m_specs = wx.TreeCtrl(self, size = (200, -1), style = wx.TR_DEFAULT_STYLE)
 | 
				
			||||||
        self.m_specs.SetMinSize(wx.Size(200,-1))
 | 
					        # self.m_specs.SetMinSize(wx.Size(200,-1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bSizer3.Add(self.m_specs, 0, wx.ALL|wx.EXPAND, 1)
 | 
					        self.auimgr.AddPane(self.m_specs,
 | 
				
			||||||
 | 
					            aui.AuiPaneInfo().Name("m_specs").Caption("Templates").
 | 
				
			||||||
 | 
					            Left().Layer(1).CloseButton(False))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bSizer4 = wx.BoxSizer(wx.VERTICAL)
 | 
					        # Пользовательские модели
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.m_user_models = TreeListCtrl(self,
 | 
					        self.m_user_models = TreeListCtrl(self, size = (200, -1),
 | 
				
			||||||
            style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT
 | 
					            style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT
 | 
				
			||||||
                    | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_ROW_LINES | wx.TR_MULTIPLE)
 | 
					                    | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_ROW_LINES | wx.TR_MULTIPLE)
 | 
				
			||||||
        self.m_user_models.SetMinSize(wx.Size(-1, 300))
 | 
					 | 
				
			||||||
        self.m_user_models.AddColumn("Model name")
 | 
					        self.m_user_models.AddColumn("Model name")
 | 
				
			||||||
        self.m_user_models.AddColumn("Status")
 | 
					        self.m_user_models.AddColumn("Status")
 | 
				
			||||||
        self.m_user_models.AddColumn("Progress")
 | 
					        self.m_user_models.AddColumn("Progress")
 | 
				
			||||||
@@ -83,42 +98,49 @@ class MainFrame (wx.Frame):
 | 
				
			|||||||
        self.m_user_models.SetMainColumn(0)
 | 
					        self.m_user_models.SetMainColumn(0)
 | 
				
			||||||
        self.m_user_models.SetImageList(self.ilist)
 | 
					        self.m_user_models.SetImageList(self.ilist)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bSizer4.Add(self.m_user_models, 0, wx.ALL | wx.EXPAND, 1)
 | 
					        self.auimgr.AddPane(self.m_user_models,
 | 
				
			||||||
 | 
					            aui.AuiPaneInfo().Name("m_user_models").Caption("Models").
 | 
				
			||||||
 | 
					            CenterPane().Position(1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # WARNING: wxPython code generation isn't supported for this widget yet.
 | 
					        # Параметры модели
 | 
				
			||||||
        self.m_params = wxpg.PropertyGridManager(self)
 | 
					 | 
				
			||||||
        self.m_params.AddPage('fp')
 | 
					 | 
				
			||||||
        bSizer4.Add(self.m_params, 1, wx.EXPAND | wx.ALL, 1)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bSizer3.Add(bSizer4, 1, wx.EXPAND, 5)
 | 
					        self.m_params = PropertyCtrl(self, size = (-1, 300))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bSizer5 = wx.BoxSizer(wx.VERTICAL)
 | 
					        self.auimgr.AddPane(self.m_params,
 | 
				
			||||||
 | 
					            aui.AuiPaneInfo().Name("m_params").Caption("Parameters").CloseButton(False).
 | 
				
			||||||
 | 
					            CenterPane().Bottom().Position(2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.m_quick_result = wxpg.PropertyGridManager(self)
 | 
					        # Быстрые результаты
 | 
				
			||||||
        self.m_quick_result.AddPage('fp')
 | 
					 | 
				
			||||||
        self.m_quick_result.SetMinSize(wx.Size(200, -1))
 | 
					 | 
				
			||||||
        bSizer5.Add(self.m_quick_result, 1, wx.EXPAND | wx.ALL, 1)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.m_plots = wx.TreeCtrl(self, 
 | 
					        self.m_quick_result = PropertyCtrl(self, size = (200, -1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.auimgr.AddPane(self.m_quick_result,
 | 
				
			||||||
 | 
					            aui.AuiPaneInfo().Name("m_quick_result").Caption("Quick results").CloseButton(False).
 | 
				
			||||||
 | 
					            Right().Position(1).Layer(1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Графики
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.m_plots = wx.TreeCtrl(self, size = (200, -1),
 | 
				
			||||||
            style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.TR_EDIT_LABELS)
 | 
					            style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.TR_EDIT_LABELS)
 | 
				
			||||||
        bSizer5.Add(self.m_plots, 1, wx.EXPAND | wx.ALL, 1)
 | 
					 | 
				
			||||||
        self.m_plots.SetImageList(self.ilist)
 | 
					        self.m_plots.SetImageList(self.ilist)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bSizer3.Add(bSizer5, 0, wx.ALL | wx.EXPAND, 1)
 | 
					        self.auimgr.AddPane(self.m_plots,
 | 
				
			||||||
 | 
					            aui.AuiPaneInfo().Name("m_plots").Caption("Plots").CloseButton(False).
 | 
				
			||||||
 | 
					            Right().Position(2).Layer(1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Меню, панель инструментов и панель статуса
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        sbar = wx.StatusBar(self)
 | 
					        sbar = wx.StatusBar(self)
 | 
				
			||||||
        self.SetStatusBar(sbar)
 | 
					        self.SetStatusBar(sbar)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mbar = self.BuildMenu()
 | 
					        self.SetMenuBar(self.BuildMenu())
 | 
				
			||||||
        self.SetMenuBar(mbar)
 | 
					
 | 
				
			||||||
        self.BuildContextMenu()
 | 
					        self.BuildContextMenu()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # tbar = self.BuildToolBar()
 | 
					        # tbar = self.BuildToolBar()
 | 
				
			||||||
        # self.SetToolBar(tbar)
 | 
					        # self.SetToolBar(tbar)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.SetSizer(bSizer3)
 | 
					        self.auimgr.Update()
 | 
				
			||||||
        self.Layout()
 | 
					 | 
				
			||||||
        self.Centre(wx.BOTH)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def LoadIcons(self):
 | 
					    def LoadIcons(self):
 | 
				
			||||||
        icons = Icons()
 | 
					        icons = Icons()
 | 
				
			||||||
@@ -217,8 +239,8 @@ class ResultFrame(wx.Frame):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        sizer = wx.BoxSizer(wx.VERTICAL)
 | 
					        sizer = wx.BoxSizer(wx.VERTICAL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.scalar = wxpg.PropertyGridManager(self)
 | 
					        self.scalar = PropertyCtrl(self)
 | 
				
			||||||
        self.scalar.AddPage('fp')
 | 
					        self.scalar.SetMinSize((-1, 200))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.table = wx.grid.Grid(self)
 | 
					        self.table = wx.grid.Grid(self)
 | 
				
			||||||
        self.table.SetDefaultCellAlignment(wx.ALIGN_CENTER, wx.ALIGN_CENTER)
 | 
					        self.table.SetDefaultCellAlignment(wx.ALIGN_CENTER, wx.ALIGN_CENTER)
 | 
				
			||||||
@@ -226,10 +248,23 @@ class ResultFrame(wx.Frame):
 | 
				
			|||||||
        sizer.Add(self.scalar, 0, wx.EXPAND | wx.ALL, 1)
 | 
					        sizer.Add(self.scalar, 0, wx.EXPAND | wx.ALL, 1)
 | 
				
			||||||
        sizer.Add(self.table,  1, wx.EXPAND | wx.ALL, 1)
 | 
					        sizer.Add(self.table,  1, wx.EXPAND | wx.ALL, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.SetMenuBar(self.BuildMenu())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.SetSizer(sizer)
 | 
					        self.SetSizer(sizer)
 | 
				
			||||||
        self.Layout()
 | 
					        self.Layout()
 | 
				
			||||||
        self.Centre(wx.BOTH)
 | 
					        self.Centre(wx.BOTH)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def BuildMenu(self):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        menubar = wx.MenuBar()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        menu = wx.Menu()
 | 
				
			||||||
 | 
					        menu.Append(wx.NewId(), 'CSV\tCtrl+E')
 | 
				
			||||||
 | 
					        menu.Append(wx.NewId(), 'TeX')
 | 
				
			||||||
 | 
					        menubar.Append(menu, 'Export to')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return menubar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class LineSelectDialog(wx.Dialog):
 | 
					class LineSelectDialog(wx.Dialog):
 | 
				
			||||||
    def __init__(self, parent, title):
 | 
					    def __init__(self, parent, title):
 | 
				
			||||||
        wx.Dialog.__init__ (self, parent, -1, title, size = wx.Size(400, 300))
 | 
					        wx.Dialog.__init__ (self, parent, -1, title, size = wx.Size(400, 300))
 | 
				
			||||||
@@ -262,3 +297,5 @@ class PlotFrame(wx.Frame):
 | 
				
			|||||||
        self.plot.SetEnableAntiAliasing(True)
 | 
					        self.plot.SetEnableAntiAliasing(True)
 | 
				
			||||||
        self.plot.SetEnableHiRes(True)
 | 
					        self.plot.SetEnableHiRes(True)
 | 
				
			||||||
        self.plot.SetEnableLegend(True)
 | 
					        self.plot.SetEnableLegend(True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.Centre(wx.BOTH)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,7 +40,6 @@ class ModelData:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.res  = None
 | 
					        self.res  = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
LINE_CURVE      = 1
 | 
					LINE_CURVE      = 1
 | 
				
			||||||
LINE_MARKER     = 2
 | 
					LINE_MARKER     = 2
 | 
				
			||||||
LINE_HISTOGRAM  = 3
 | 
					LINE_HISTOGRAM  = 3
 | 
				
			||||||
@@ -87,6 +86,8 @@ class MainFrame(forms.MainFrame):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.m_user_models.Bind(wx.EVT_TREE_SEL_CHANGED,
 | 
					        self.m_user_models.Bind(wx.EVT_TREE_SEL_CHANGED,
 | 
				
			||||||
            self.OnModelActivated)
 | 
					            self.OnModelActivated)
 | 
				
			||||||
 | 
					        self.m_user_models.Bind(wx.EVT_TREE_DELETE_ITEM,
 | 
				
			||||||
 | 
					            self.OnDeleteModelsItem)
 | 
				
			||||||
        self.m_params.Bind(wxpg.EVT_PG_CHANGING,
 | 
					        self.m_params.Bind(wxpg.EVT_PG_CHANGING,
 | 
				
			||||||
            self.OnParamChanging)
 | 
					            self.OnParamChanging)
 | 
				
			||||||
        self.m_params.Bind(wxpg.EVT_PG_CHANGED,
 | 
					        self.m_params.Bind(wxpg.EVT_PG_CHANGED,
 | 
				
			||||||
@@ -97,7 +98,8 @@ class MainFrame(forms.MainFrame):
 | 
				
			|||||||
            self.OnModelProcess)
 | 
					            self.OnModelProcess)
 | 
				
			||||||
        self.m_plots.Bind(wx.EVT_TREE_ITEM_ACTIVATED,
 | 
					        self.m_plots.Bind(wx.EVT_TREE_ITEM_ACTIVATED,
 | 
				
			||||||
            self.OnPlotProcess)
 | 
					            self.OnPlotProcess)
 | 
				
			||||||
 | 
					        self.m_plots.Bind(wx.EVT_CHAR,
 | 
				
			||||||
 | 
					            self.OnPlotsKeyPressed)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # События меню
 | 
					        # События меню
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -253,8 +255,8 @@ class MainFrame(forms.MainFrame):
 | 
				
			|||||||
        """
 | 
					        """
 | 
				
			||||||
        self.m_specs.DeleteAllItems()
 | 
					        self.m_specs.DeleteAllItems()
 | 
				
			||||||
        self.m_user_models.DeleteAllItems()
 | 
					        self.m_user_models.DeleteAllItems()
 | 
				
			||||||
        self.m_params.ClearPage(0)
 | 
					        self.m_params.Clear()
 | 
				
			||||||
        self.m_quick_result.ClearPage(0)
 | 
					        self.m_quick_result.Clear()
 | 
				
			||||||
        self.m_plots.DeleteAllItems()
 | 
					        self.m_plots.DeleteAllItems()
 | 
				
			||||||
        # Строим спецификации
 | 
					        # Строим спецификации
 | 
				
			||||||
        self.BuildSpecs(model)
 | 
					        self.BuildSpecs(model)
 | 
				
			||||||
@@ -392,7 +394,7 @@ class MainFrame(forms.MainFrame):
 | 
				
			|||||||
                raise KeyError()
 | 
					                raise KeyError()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        pg = self.m_params
 | 
					        pg = self.m_params
 | 
				
			||||||
        pg.ClearPage(0)
 | 
					        pg.Clear()
 | 
				
			||||||
        for label, value in model_def.params.iteritems():
 | 
					        for label, value in model_def.params.iteritems():
 | 
				
			||||||
            param   = model_def.DD[label]
 | 
					            param   = model_def.DD[label]
 | 
				
			||||||
            title   = param.GetTitle()
 | 
					            title   = param.GetTitle()
 | 
				
			||||||
@@ -405,7 +407,7 @@ class MainFrame(forms.MainFrame):
 | 
				
			|||||||
        if not result:
 | 
					        if not result:
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        pg = self.m_quick_result
 | 
					        pg = self.m_quick_result
 | 
				
			||||||
        pg.ClearPage(0)
 | 
					        pg.Clear()
 | 
				
			||||||
        for label, param in result.data.iteritems():
 | 
					        for label, param in result.data.iteritems():
 | 
				
			||||||
            pg.Append(wxpg.StringProperty(label, value = str(param.GetValue())))
 | 
					            pg.Append(wxpg.StringProperty(label, value = str(param.GetValue())))
 | 
				
			||||||
        pg.SetSplitterLeft()
 | 
					        pg.SetSplitterLeft()
 | 
				
			||||||
@@ -486,9 +488,14 @@ class MainFrame(forms.MainFrame):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # Удаление модели
 | 
					    # Удаление модели
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def OnDeleteModel(self, event):
 | 
					    def OnDeleteModelsItem(self, event):
 | 
				
			||||||
        item, data = self.GetSelectedItemData(self.m_user_models)
 | 
					        item = event.GetItem()
 | 
				
			||||||
 | 
					        data = self.m_user_models.GetPyData(item)
 | 
				
			||||||
 | 
					        if data:
 | 
				
			||||||
            self.server.DeleteJob(data.jid)
 | 
					            self.server.DeleteJob(data.jid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def OnDeleteModel(self, event):
 | 
				
			||||||
 | 
					        item = self.GetSelectedItem(self.m_user_models)
 | 
				
			||||||
        self.m_user_models.Delete(item)
 | 
					        self.m_user_models.Delete(item)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Функции запуска модели на выполнение и управления очередью
 | 
					    # Функции запуска модели на выполнение и управления очередью
 | 
				
			||||||
@@ -528,7 +535,7 @@ class MainFrame(forms.MainFrame):
 | 
				
			|||||||
        item, data = self.GetSelectedItemData(um)
 | 
					        item, data = self.GetSelectedItemData(um)
 | 
				
			||||||
        title = um.GetItemText(item)
 | 
					        title = um.GetItemText(item)
 | 
				
			||||||
        if not data.res:
 | 
					        if not data.res:
 | 
				
			||||||
            self.SetStatusText("There is no results in model")
 | 
					            wx.MessageBox('There is no any result data', 'Warning', wx.OK | wx.ICON_EXCLAMATION)
 | 
				
			||||||
            return []
 | 
					            return []
 | 
				
			||||||
        f = LineSelectDialog(self, 'Select lines for "{}"'.format(title))
 | 
					        f = LineSelectDialog(self, 'Select lines for "{}"'.format(title))
 | 
				
			||||||
        for index, col in enumerate(data.res.columns):
 | 
					        for index, col in enumerate(data.res.columns):
 | 
				
			||||||
@@ -579,6 +586,7 @@ class MainFrame(forms.MainFrame):
 | 
				
			|||||||
        self.AddLines(LINE_MARKER)
 | 
					        self.AddLines(LINE_MARKER)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def ShowPlot(self, lines, plot_title = ''):
 | 
					    def ShowPlot(self, lines, plot_title = ''):
 | 
				
			||||||
 | 
					        if lines:
 | 
				
			||||||
            p = PlotFrame(self, 'Plot', lines)
 | 
					            p = PlotFrame(self, 'Plot', lines)
 | 
				
			||||||
            p.Show()
 | 
					            p.Show()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -613,6 +621,13 @@ class MainFrame(forms.MainFrame):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.ShowPlot(lines)
 | 
					        self.ShowPlot(lines)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def OnPlotsKeyPressed(self, event):
 | 
				
			||||||
 | 
					        keycode = event.GetKeyCode()
 | 
				
			||||||
 | 
					        item = self.GetSelectedItem(self.m_plots)
 | 
				
			||||||
 | 
					        if keycode == wx.WXK_DELETE:
 | 
				
			||||||
 | 
					            self.m_plots.Delete(item)
 | 
				
			||||||
 | 
					        event.Skip()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#-----------------------------------------------------------------------------
 | 
					#-----------------------------------------------------------------------------
 | 
				
			||||||
# Форма с выбором модели из представленного списка
 | 
					# Форма с выбором модели из представленного списка
 | 
				
			||||||
#-----------------------------------------------------------------------------
 | 
					#-----------------------------------------------------------------------------
 | 
				
			||||||
@@ -653,7 +668,7 @@ class ResultFrame(forms.ResultFrame):
 | 
				
			|||||||
        self.UpdateResults()
 | 
					        self.UpdateResults()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def UpdateResults(self):
 | 
					    def UpdateResults(self):
 | 
				
			||||||
        self.scalar.ClearPage(0)
 | 
					        self.scalar.Clear()
 | 
				
			||||||
        self.table.ClearGrid()
 | 
					        self.table.ClearGrid()
 | 
				
			||||||
        if not self.result:
 | 
					        if not self.result:
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
@@ -681,6 +696,9 @@ class ResultFrame(forms.ResultFrame):
 | 
				
			|||||||
                pg.Append(wxpg.StringProperty(label, 
 | 
					                pg.Append(wxpg.StringProperty(label, 
 | 
				
			||||||
                    value = str(param.GetValue())))
 | 
					                    value = str(param.GetValue())))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def OnExportToCSV(self, event):
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#-----------------------------------------------------------------------------
 | 
					#-----------------------------------------------------------------------------
 | 
				
			||||||
# Форма с выбором наборов значений для построения графика
 | 
					# Форма с выбором наборов значений для построения графика
 | 
				
			||||||
#-----------------------------------------------------------------------------
 | 
					#-----------------------------------------------------------------------------
 | 
				
			||||||
@@ -723,7 +741,6 @@ class LineSelectDialog(forms.LineSelectDialog):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return [ (x, y) for y in ys ]
 | 
					        return [ (x, y) for y in ys ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#-----------------------------------------------------------------------------
 | 
					#-----------------------------------------------------------------------------
 | 
				
			||||||
# Форма с изображением графика
 | 
					# Форма с изображением графика
 | 
				
			||||||
#-----------------------------------------------------------------------------
 | 
					#-----------------------------------------------------------------------------
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -232,7 +232,6 @@ class Worker(threading.Thread):
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            job.Finish(JOB_COMPLETED, 1.0)
 | 
					            job.Finish(JOB_COMPLETED, 1.0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    def ProcessMessage(self, job, msg):
 | 
					    def ProcessMessage(self, job, msg):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            # разбираем полученный ответ
 | 
					            # разбираем полученный ответ
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user