laurent@738: laurent@738: import wx laurent@738: laurent@756: from controls import EditorPanel, ProjectPropertiesPanel laurent@738: from ConfTreeNodeEditor import ConfTreeNodeEditor, WINDOW_COLOUR laurent@738: laurent@738: class ProjectNodeEditor(ConfTreeNodeEditor): laurent@738: laurent@738: VARIABLE_PANEL_TYPE = "config" laurent@762: ENABLE_REQUIRED = True laurent@738: laurent@738: def _init_Editor(self, prnt): laurent@738: self.Editor = wx.ScrolledWindow(prnt, -1, size=wx.Size(-1, -1), laurent@738: style=wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER|wx.HSCROLL|wx.VSCROLL) laurent@738: self.Editor.SetBackgroundColour(WINDOW_COLOUR) laurent@743: self.Editor.Bind(wx.EVT_SIZE, self.OnWindowResize) laurent@743: self.Editor.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel) laurent@738: self.ParamsEditor = self.Editor laurent@738: laurent@738: # Variable allowing disabling of Editor scroll when Popup shown laurent@738: self.ScrollingEnabled = True laurent@738: laurent@738: self.ParamsEditorSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) laurent@738: self.ParamsEditorSizer.AddGrowableCol(0) laurent@738: self.ParamsEditorSizer.AddGrowableRow(1) laurent@738: laurent@738: self.Editor.SetSizer(self.ParamsEditorSizer) laurent@738: laurent@738: laurent@738: buttons_sizer = self.GenerateMethodButtonSizer() laurent@738: self.ParamsEditorSizer.AddSizer(buttons_sizer, 0, border=5, laurent@738: flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.TOP) laurent@738: laurent@756: projectproperties_sizer = wx.BoxSizer(wx.HORIZONTAL) laurent@756: self.ParamsEditorSizer.AddSizer(projectproperties_sizer, 0, border=5, laurent@756: flag=wx.LEFT|wx.RIGHT|wx.BOTTOM) laurent@756: laurent@762: if self.SHOW_PARAMS: laurent@762: self.ConfNodeParamsSizer = wx.BoxSizer(wx.VERTICAL) laurent@762: projectproperties_sizer.AddSizer(self.ConfNodeParamsSizer, 0, border=5, laurent@762: flag=wx.RIGHT) laurent@762: else: laurent@762: self.ConfNodeParamsSizer = None laurent@756: laurent@762: self.ProjectProperties = ProjectPropertiesPanel(self.Editor, self.Controler, self.ParentWindow, self.ENABLE_REQUIRED) laurent@756: projectproperties_sizer.AddWindow(self.ProjectProperties, 0, border=0, flag=0) laurent@738: laurent@738: def __init__(self, parent, controler, window): laurent@738: configuration = controler.GetProjectMainConfigurationName() laurent@738: if configuration is not None: laurent@738: tagname = controler.ComputeConfigurationName(configuration) laurent@738: else: laurent@738: tagname = "" laurent@738: laurent@743: ConfTreeNodeEditor.__init__(self, parent, controler, window, tagname) laurent@738: laurent@738: def GetTagName(self): laurent@738: return self.Controler.CTNName() laurent@738: laurent@738: def GetTitle(self): laurent@738: fullname = self.Controler.CTNName() laurent@738: if self.Controler.CTNTestModified(): laurent@738: return "~%s~" % fullname laurent@738: return fullname laurent@746: laurent@800: def RefreshView(self, variablepanel=True): laurent@800: EditorPanel.RefreshView(self, variablepanel) laurent@762: if self.ConfNodeParamsSizer is not None: laurent@762: self.RefreshConfNodeParamsSizer() laurent@756: self.ProjectProperties.RefreshView() laurent@738: laurent@756: def GetBufferState(self): laurent@756: return self.Controler.GetBufferState() laurent@756: laurent@756: def Undo(self): laurent@756: self.Controler.LoadPrevious() laurent@756: self.ParentWindow.CloseTabsWithoutModel() laurent@756: laurent@756: def Redo(self): laurent@756: self.Controler.LoadNext() laurent@756: self.ParentWindow.CloseTabsWithoutModel() laurent@756: