editors/ProjectNodeEditor.py
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Thu, 28 Apr 2016 15:21:02 +0300
changeset 1508 4c645e6b8c98
parent 1257 4b7ef7ea318f
child 1511 91538d0c242c
permissions -rw-r--r--
fix error if non-latin character was entered in initial value in
data type element

Traceback (most recent call last):
File "/home/beremiz/editors/DataTypeEditor.py", line 575, in OnStructureElementsGridCellChange
value = self.StructureElementsTable.GetValue(row, col)
File "/home/beremiz/editors/DataTypeEditor.py", line 80, in GetValue
return str(value)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
Traceback (most recent call last):
File "/home/beremiz/editors/DataTypeEditor.py", line 80, in GetValue
return str(value)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
Traceback (most recent call last):
File "/home/beremiz/editors/DataTypeEditor.py", line 80, in GetValue
return str(value)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

import wx

from controls import ProjectPropertiesPanel, VariablePanel
from EditorPanel import EditorPanel
from ConfTreeNodeEditor import ConfTreeNodeEditor

class ProjectNodeEditor(ConfTreeNodeEditor):
    
    SHOW_BASE_PARAMS = False
    ENABLE_REQUIRED = True
    CONFNODEEDITOR_TABS = [
        (_("Config variables"), "_create_VariablePanel"),
        (_("Project properties"), "_create_ProjectPropertiesPanel")]
    
    def _create_VariablePanel(self, prnt):
        self.VariableEditorPanel = VariablePanel(prnt, self, self.Controler, "config", self.Debug)
        self.VariableEditorPanel.SetTagName(self.TagName)
    
        return self.VariableEditorPanel
    
    def _create_ProjectPropertiesPanel(self, prnt):
        self.ProjectProperties = ProjectPropertiesPanel(prnt, self.Controler, self.ParentWindow, self.ENABLE_REQUIRED)
        
        return self.ProjectProperties
    
    def __init__(self, parent, controler, window):
        configuration = controler.GetProjectMainConfigurationName()
        if configuration is not None:
            tagname = controler.ComputeConfigurationName(configuration)
        else:
            tagname = ""
        
        ConfTreeNodeEditor.__init__(self, parent, controler, window, tagname)
        
        buttons_sizer = self.GenerateMethodButtonSizer()
        self.MainSizer.InsertSizer(0, buttons_sizer, 0, border=5, flag=wx.ALL)
        self.MainSizer.Layout()
        
        self.VariableEditor = self.VariableEditorPanel

    def GetTagName(self):
        return self.Controler.CTNName()
    
    def SetTagName(self, tagname):
        self.TagName = tagname
        if self.VariableEditor is not None:
            self.VariableEditor.SetTagName(tagname)
    
    def GetTitle(self):
        fullname = _(self.Controler.CTNName())
        if self.Controler.CTNTestModified():
            return "~%s~" % fullname
        return fullname
    
    def RefreshView(self, variablepanel=True):
        ConfTreeNodeEditor.RefreshView(self)
        self.VariableEditorPanel.RefreshView()
        self.ProjectProperties.RefreshView()

    def GetBufferState(self):
        return self.Controler.GetBufferState()
        
    def Undo(self):
        self.Controler.LoadPrevious()
        self.ParentWindow.CloseTabsWithoutModel()
            
    def Redo(self):
        self.Controler.LoadNext()
        self.ParentWindow.CloseTabsWithoutModel()