def __init__(self, parent, **vars): wx.Panel.__init__(self, parent, -1) self.vars = vars self.editor = EditorPanel(self, -1) self.testButton = wx.Button(self, -1, "Run Script") if vars: welcome = '# You can use the following variables:\n' for k in sorted(vars.keys()): welcome += '# %s: %s\n' % (k, vars[k].__class__) welcome += '#\n' welcome += '# For example:\n' welcome += '# print %s\n' % sorted(vars.keys())[0] welcome += '#\n\n\n' self.editor.SetValue(welcome) # set caret position after the comments pos = len(welcome) - 1 # self.editor.editor.SetCurrentPos(pos) self.editor.editor.SetSelection(pos, pos) # Layout self.SetAutoLayout(True) self.editor.SetConstraints( wx.lib.layoutf.Layoutf('t=t10#1;l=l10#1;b%b90#1;r=r10#1', (self, ))) self.testButton.SetConstraints( wx.lib.layoutf.Layoutf('t_10#2;l=l10#1;h*;w*', (self, self.editor))) self.editor.saveButton.Hide() self.Bind(wx.EVT_BUTTON, self.OnPlay, self.testButton)
def __init__(self, parent, controler, window, tagname=""): EditorPanel.__init__(self, parent, tagname, window, controler) icon_name = self.Controler.GetIconName() if icon_name is not None: self.SetIcon(GetBitmap(icon_name)) else: self.SetIcon(GetBitmap("Extension"))
def ClearHighlights(self, highlight_type=None): EditorPanel.ClearHighlights(self, highlight_type) self.TasksTable.ClearHighlights(highlight_type) self.InstancesTable.ClearHighlights(highlight_type) self.TasksTable.ResetView(self.TasksGrid) self.InstancesTable.ResetView(self.InstancesGrid)
def __init__(self, parent, controler, name, folder, enable_dragndrop=False): self.Folder = os.path.realpath(folder) self.EnableDragNDrop = enable_dragndrop if wx.Platform == '__WXMSW__': self.HomeDirectory = "/" else: self.HomeDirectory = os.path.expanduser("~") EditorPanel.__init__(self, parent, name, None, None) self.Controler = controler self.EditableFileExtensions = [] self.EditButton.Hide() self.SetIcon(GetBitmap("FOLDER"))
def AddHighlight(self, infos, start, end, highlight_type): EditorPanel.AddHighlight(self, infos, start, end, highlight_type) highlight_type = HIGHLIGHT_TYPES.get(highlight_type, None) if infos[0] == "body" and highlight_type is not None: self.Highlights.append((infos[1], start, end, highlight_type)) self.Editor.GotoPos(self.Editor.PositionFromLine(start[0]) + start[1]) self.RefreshHighlightsTimer.Start(int(REFRESH_HIGHLIGHT_PERIOD * 1000), oneShot=True)
def RemoveHighlight(self, infos, start, end, highlight_type): EditorPanel.RemoveHighlight(self, infos, start, end, highlight_type) highlight_type = HIGHLIGHT_TYPES.get(highlight_type, None) if infos[0] == "body" and highlight_type is not None and \ (infos[1], start, end, highlight_type) in self.Highlights: self.Highlights.remove((infos[1], start, end, highlight_type)) self.RefreshHighlightsTimer.Start(int(REFRESH_HIGHLIGHT_PERIOD * 1000), oneShot=True)
def AddHighlight(self, infos, start, end, highlight_type): EditorPanel.AddHighlight(self, infos, start, end, highlight_type) if infos[0] == "task": self.TasksTable.AddHighlight(infos[1:], highlight_type) elif infos[0] == "instance": self.InstancesTable.AddHighlight(infos[1:], highlight_type) self.RefreshHighlightsTimer.Start(int(REFRESH_HIGHLIGHT_PERIOD * 1000), oneShot=True)
def RefreshView(self): EditorPanel.RefreshView(self) if self.SHOW_BASE_PARAMS: self.ConfNodeName.ChangeValue( self.Controler.MandatoryParams[1].getName()) self.RefreshIECChannelControlsState() if self.ParamsEditor is not None: self.RefreshConfNodeParamsSizer() self.RefreshScrollbars()
def ClearHighlights(self, highlight_type=None): EditorPanel.ClearHighlights(self, highlight_type) if highlight_type is None: self.Highlights = [] else: highlight_type = HIGHLIGHT_TYPES.get(highlight_type, None) if highlight_type is not None: self.Highlights = [(infos, start, end, highlight) for (infos, start, end, highlight) in self.Highlights if highlight != highlight_type] self.RefreshView()
def RefreshView(self, variablepanel=True): EditorPanel.RefreshView(self, variablepanel) tasks, instances = self.Controler.GetEditedResourceInfos(self.TagName) self.TasksTable.SetData(tasks) self.InstancesTable.SetData(instances) self.RefreshTypeList() self.RefreshTaskList() self.RefreshVariableList() self.TasksTable.ResetView(self.TasksGrid) self.InstancesTable.ResetView(self.InstancesGrid) self.TasksGrid.RefreshButtons() self.InstancesGrid.RefreshButtons()
def __init__(self, parent, tagname, window, controler, debug = False, instancepath = ""): if tagname != "" and controler is not None: self.VARIABLE_PANEL_TYPE = controler.GetPouType(tagname.split("::")[1]) EditorPanel.__init__(self, parent, tagname, window, controler, debug) self.Keywords = [] self.Variables = {} self.Functions = {} self.TypeNames = [] self.Jumps = [] self.EnumeratedValues = [] self.DisableEvents = True self.TextSyntax = None self.CurrentAction = None self.InstancePath = instancepath self.ContextStack = [] self.CallStack = [] self.ResetSearchResults() self.RefreshHighlightsTimer = wx.Timer(self, -1) self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer)
def __init__(self, parent, tagname, window, controler, debug=False, instancepath=""): if tagname != "" and controler is not None: self.VARIABLE_PANEL_TYPE = controler.GetPouType(tagname.split("::")[1]) EditorPanel.__init__(self, parent, tagname, window, controler, debug) self.Keywords = [] self.Variables = {} self.Functions = {} self.TypeNames = [] self.Jumps = [] self.EnumeratedValues = [] self.DisableEvents = True self.TextSyntax = None self.CurrentAction = None self.InstancePath = instancepath self.ContextStack = [] self.CallStack = [] self.ResetSearchResults() self.RefreshHighlightsTimer = wx.Timer(self, -1) self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer)
def RefreshView(self, variablepanel=True): EditorPanel.RefreshView(self, variablepanel) if self.Controler is not None: self.ResetBuffer() self.DisableEvents = True old_cursor_pos = self.GetCurrentPos() line = self.Editor.GetFirstVisibleLine() column = self.Editor.GetXOffset() old_text = self.GetText() new_text = self.Controler.GetEditedElementText(self.TagName, self.Debug) if old_text != new_text: self.SetText(new_text) new_cursor_pos = GetCursorPos(old_text, new_text) self.Editor.LineScroll(column, line) if new_cursor_pos is not None: self.Editor.GotoPos(new_cursor_pos) else: self.Editor.GotoPos(old_cursor_pos) self.RefreshJumpList() self.Editor.EmptyUndoBuffer() self.DisableEvents = False self.RefreshVariableTree() self.TypeNames = [typename.upper() for typename in self.Controler.GetDataTypes(self.TagName, True, self.Debug)] self.EnumeratedValues = [value.upper() for value in self.Controler.GetEnumeratedDataValues()] self.Functions = {} for category in self.Controler.GetBlockTypes(self.TagName, self.Debug): for blocktype in category["list"]: blockname = blocktype["name"].upper() if blocktype["type"] == "function" and blockname not in self.Keywords and blockname not in self.Variables.keys(): interface = dict([(name, {}) for name, type, modifier in blocktype["inputs"] + blocktype["outputs"] if name != '']) for param in ["EN", "ENO"]: if param not in interface: interface[param] = {} if blockname in self.Functions: self.Functions[blockname]["interface"].update(interface) self.Functions[blockname]["extensible"] |= blocktype["extensible"] else: self.Functions[blockname] = {"interface": interface, "extensible": blocktype["extensible"]} self.Colourise(0, -1)
def __init__(self, parent, tagname, window, controler): EditorPanel.__init__(self, parent, tagname, window, controler) self.StructureElementDefaultValue = { "Name": "", "Type": DefaultType, "Initial Value": "" } self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames()) self.StructureColSizes = [40, 150, 100, 250] self.StructureColAlignements = [ wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT ] self.StructureElementsGrid.SetTable(self.StructureElementsTable) self.StructureElementsGrid.SetButtons({ "Add": self.StructureAddButton, "Delete": self.StructureDeleteButton, "Up": self.StructureUpButton, "Down": self.StructureDownButton }) def _AddStructureElement(new_row): self.StructureElementsTable.InsertRow( new_row, self.StructureElementDefaultValue.copy()) self.RefreshTypeInfos() self.StructureElementsTable.ResetView(self.StructureElementsGrid) return new_row setattr(self.StructureElementsGrid, "_AddRow", _AddStructureElement) def _DeleteStructureElement(row): self.StructureElementsTable.RemoveRow(row) self.RefreshTypeInfos() self.StructureElementsTable.ResetView(self.StructureElementsGrid) setattr(self.StructureElementsGrid, "_DeleteRow", _DeleteStructureElement) def _MoveStructureElement(row, move): new_row = self.StructureElementsTable.MoveRow(row, move) if new_row != row: self.RefreshTypeInfos() self.StructureElementsTable.ResetView( self.StructureElementsGrid) return new_row setattr(self.StructureElementsGrid, "_MoveRow", _MoveStructureElement) self.StructureElementsGrid.SetRowLabelSize(0) for col in range(self.StructureElementsTable.GetNumberCols()): attr = wx.grid.GridCellAttr() attr.SetAlignment(self.StructureColAlignements[col], wx.ALIGN_CENTRE) self.StructureElementsGrid.SetColAttr(col, attr) self.StructureElementsGrid.SetColMinimalWidth( col, self.StructureColSizes[col]) self.StructureElementsGrid.AutoSizeColumn(col, False) self.StructureElementsGrid.RefreshButtons() for datatype in GetDatatypeTypes(): self.DerivationType.Append(_(datatype)) self.SubrangePanel.Hide() self.EnumeratedPanel.Hide() self.ArrayPanel.Hide() self.StructurePanel.Hide() self.CurrentPanel = "Directly" self.Highlights = [] self.Initializing = False self.HighlightControls = { ("Directly", "base"): self.DirectlyBaseType, ("Directly", "initial"): self.DirectlyInitialValue, ("Subrange", "base"): self.SubrangeBaseType, ("Subrange", "lower"): self.SubrangeMinimum, ("Subrange", "upper"): self.SubrangeMaximum, ("Subrange", "initial"): self.SubrangeInitialValue, ("Enumerated", "value"): self.EnumeratedValues, ("Enumerated", "initial"): self.EnumeratedInitialValue, ("Array", "initial"): self.ArrayInitialValue, ("Array", "base"): self.ArrayBaseType, ("Array", "range"): self.ArrayDimensions, } self.RefreshHighlightsTimer = wx.Timer(self, -1) self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer)
class MainFrame(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, title, size=(970, 720), style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE) self.SetMinSize((640, 480)) pnl = wx.Panel(self) self.pnl = pnl self.mgr = wx.aui.AuiManager() self.mgr.SetManagedWindow(pnl) self.Centre(wx.BOTH) self.CreateStatusBar(1, wx.ST_SIZEGRIP) def EmptyHandler(evt): pass # build menu bar self.BuildMenuBar() # Create a TreeCtrl leftPanel = wx.Panel(pnl, style=wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN) self.tree = DivsTree(leftPanel, self) self.RecreateTree() leftBox = wx.BoxSizer(wx.VERTICAL) leftBox.Add(self.tree, 1, wx.EXPAND) leftPanel.SetSizer(leftBox) # Create a shape TreeCtrl leftPanel2 = wx.Panel(pnl, style=wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN) self.shapetree = ShapeTree(leftPanel2, self) leftBox2 = wx.BoxSizer(wx.VERTICAL) leftBox2.Add(self.shapetree, 1, wx.EXPAND) leftPanel2.SetSizer(leftBox2) #create a attrctrl attrpanel = wx.Panel(pnl, style=wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN) self.attr = AttrPanel(attrpanel) attrBox = wx.BoxSizer(wx.VERTICAL) attrBox.Add(self.attr, 1, wx.EXPAND) attrpanel.SetSizer(attrBox) # Create a Notebook self.nb = wx.Notebook(pnl, -1, style=wx.CLIP_CHILDREN) self.nb.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnPageChanged) # Add editor panel tab page self.editorPage = EditorPanel(self.nb, self, self.attr, self.tree) self.nb.AddPage(self.editorPage, 'Editor', imageId=-1) self.attr.SetEditor(self.editorPage.GetEditor()) # Add source code tab page #self.codePage = CodePanel(self.nb, self) #self.nb.AddPage(self.codePage, 'source code', imageId=-1) # Add overview tab page panel = wx.Panel(self.nb, -1, style=wx.CLIP_CHILDREN) self.viewPage = OverviewPanel(panel, self.tree, self.editorPage.GetEditor()) self.nb.AddPage(panel, 'Overview', imageId=-1) def OnOvrSize(evt, ovr=self.viewPage): ovr.SetSize(evt.GetSize()) panel.Bind(wx.EVT_SIZE, OnOvrSize) panel.Bind(wx.EVT_ERASE_BACKGROUND, EmptyHandler) self.editorPage.SetListener(self.viewPage) # select initial items self.nb.SetSelection(0) self.mgr.AddPane(self.nb, wx.aui.AuiPaneInfo().CenterPane().Name("Notebook")) self.mgr.AddPane( leftPanel, wx.aui.AuiPaneInfo().Left().Layer(2).BestSize((240, -1)).MinSize( (160, -1)).Floatable(False).FloatingSize( (240, 700)).Caption("Dialog resource list").CloseButton( False).Name("UIItemTree")) self.mgr.AddPane( leftPanel2, wx.aui.AuiPaneInfo().Left().Layer(2).BestSize((240, -1)).MinSize( (160, -1)).Floatable(False).FloatingSize((240, 700)).Caption( "Shape children").CloseButton(False).Name("ShapeTree")) self.mgr.AddPane( attrpanel, wx.aui.AuiPaneInfo().Right().Layer(2).BestSize((240, -1)).MinSize( (160, -1)).Floatable(False).FloatingSize((240, 700)).Caption( "UI item attr").CloseButton(False).Name("Itemattr")) self.mgr.Update() self.mgr.SetFlags(self.mgr.GetFlags() ^ wx.aui.AUI_MGR_TRANSPARENT_DRAG) def OnPageChanged(self, evt): if evt.GetSelection() == 1: self.viewPage.PreView() def BuildMenuBar(self): # Make a File menu self.mainmenu = wx.MenuBar() menu = wx.Menu() exitItem = wx.MenuItem(menu, -1, 'E&xit\tCtrl-Q', 'Get the heck outta here!') menu.AppendItem(exitItem) self.Bind(wx.EVT_MENU, self.OnFileExit, exitItem) wx.App.SetMacExitMenuItemId(exitItem.GetId()) self.mainmenu.Append(menu, '&File') self.SetMenuBar(self.mainmenu) def GetEditorPanel(self): return self.editorPage def GetShapeTree(self): return self.shapetree def OnCloseMe(self, event): self.Close(True) def OnCloseWindow(self, event): self.Destroy() def OnIdle(self, event): pass def OnFileExit(self, *event): self.Close() def RecreateTree(self): self.tree.RecreateTree() def SetTitle(self, title): global G_APP_NAME global G_APP_VER if title == '': label = G_APP_NAME + ' ' + G_APP_VER else: label = G_APP_NAME + ' ' + G_APP_VER + ' <' + title + '>' self.SetLabel(label)
def __init__(self, parent, tagname, window, controler): EditorPanel.__init__(self, parent, tagname, window, controler) self.RefreshHighlightsTimer = wx.Timer(self, -1) self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer) self.TasksDefaultValue = { "Name": "", "Triggering": "", "Single": "", "Interval": "", "Priority": 0 } self.TasksTable = ResourceTable(self, [], GetTasksTableColnames()) self.TasksTable.SetColAlignements([ wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT ]) self.TasksTable.SetColSizes([200, 100, 100, 150, 100]) self.TasksGrid.SetTable(self.TasksTable) self.TasksGrid.SetButtons({ "Add": self.AddTaskButton, "Delete": self.DeleteTaskButton, "Up": self.UpTaskButton, "Down": self.DownTaskButton }) def _AddTask(new_row): self.TasksTable.InsertRow(new_row, self.TasksDefaultValue.copy()) self.RefreshModel() self.RefreshView() return new_row setattr(self.TasksGrid, "_AddRow", _AddTask) def _DeleteTask(row): self.TasksTable.RemoveRow(row) self.RefreshModel() self.RefreshView() setattr(self.TasksGrid, "_DeleteRow", _DeleteTask) def _MoveTask(row, move): new_row = self.TasksTable.MoveRow(row, move) if new_row != row: self.RefreshModel() self.RefreshView() return new_row setattr(self.TasksGrid, "_MoveRow", _MoveTask) self.TasksGrid.SetRowLabelSize(0) self.TasksTable.ResetView(self.TasksGrid) self.TasksGrid.RefreshButtons() self.InstancesDefaultValue = {"Name": "", "Type": "", "Task": ""} self.InstancesTable = ResourceTable(self, [], GetInstancesTableColnames()) self.InstancesTable.SetColAlignements( [wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]) self.InstancesTable.SetColSizes([200, 150, 150]) self.InstancesGrid.SetTable(self.InstancesTable) self.InstancesGrid.SetButtons({ "Add": self.AddInstanceButton, "Delete": self.DeleteInstanceButton, "Up": self.UpInstanceButton, "Down": self.DownInstanceButton }) def _AddInstance(new_row): self.InstancesTable.InsertRow(new_row, self.InstancesDefaultValue.copy()) self.RefreshModel() self.RefreshView() return new_row setattr(self.InstancesGrid, "_AddRow", _AddInstance) def _DeleteInstance(row): self.InstancesTable.RemoveRow(row) self.RefreshModel() self.RefreshView() setattr(self.InstancesGrid, "_DeleteRow", _DeleteInstance) def _MoveInstance(row, move): new_row = max( 0, min(row + move, self.InstancesTable.GetNumberRows() - 1)) if new_row != row: if self.InstancesTable.GetValueByName( row, "Task") != self.InstancesTable.GetValueByName( new_row, "Task"): return row self.InstancesTable.MoveRow(row, move) self.RefreshModel() self.RefreshView() return new_row setattr(self.InstancesGrid, "_MoveRow", _MoveInstance) def _RefreshInstanceButtons(): if self: rows = self.InstancesTable.GetNumberRows() row = self.InstancesGrid.GetGridCursorRow() self.DeleteInstanceButton.Enable(rows > 0) self.UpInstanceButton.Enable( row > 0 and self.InstancesTable.GetValueByName(row, "Task") == self.InstancesTable.GetValueByName(row - 1, "Task")) self.DownInstanceButton.Enable( 0 <= row < rows - 1 and self.InstancesTable.GetValueByName(row, "Task") == self.InstancesTable.GetValueByName(row + 1, "Task")) setattr(self.InstancesGrid, "RefreshButtons", _RefreshInstanceButtons) self.InstancesGrid.SetRowLabelSize(0) self.InstancesTable.ResetView(self.InstancesGrid) self.InstancesGrid.RefreshButtons() self.TasksGrid.SetFocus()
def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, title, size=(970, 720), style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE) self.SetMinSize((640, 480)) pnl = wx.Panel(self) self.pnl = pnl self.mgr = wx.aui.AuiManager() self.mgr.SetManagedWindow(pnl) self.Centre(wx.BOTH) self.CreateStatusBar(1, wx.ST_SIZEGRIP) def EmptyHandler(evt): pass # build menu bar self.BuildMenuBar() # Create a TreeCtrl leftPanel = wx.Panel(pnl, style=wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN) self.tree = DivsTree(leftPanel, self) self.RecreateTree() leftBox = wx.BoxSizer(wx.VERTICAL) leftBox.Add(self.tree, 1, wx.EXPAND) leftPanel.SetSizer(leftBox) # Create a shape TreeCtrl leftPanel2 = wx.Panel(pnl, style=wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN) self.shapetree = ShapeTree(leftPanel2, self) leftBox2 = wx.BoxSizer(wx.VERTICAL) leftBox2.Add(self.shapetree, 1, wx.EXPAND) leftPanel2.SetSizer(leftBox2) #create a attrctrl attrpanel = wx.Panel(pnl, style=wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN) self.attr = AttrPanel(attrpanel) attrBox = wx.BoxSizer(wx.VERTICAL) attrBox.Add(self.attr, 1, wx.EXPAND) attrpanel.SetSizer(attrBox) # Create a Notebook self.nb = wx.Notebook(pnl, -1, style=wx.CLIP_CHILDREN) self.nb.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnPageChanged) # Add editor panel tab page self.editorPage = EditorPanel(self.nb, self, self.attr, self.tree) self.nb.AddPage(self.editorPage, 'Editor', imageId=-1) self.attr.SetEditor(self.editorPage.GetEditor()) # Add source code tab page #self.codePage = CodePanel(self.nb, self) #self.nb.AddPage(self.codePage, 'source code', imageId=-1) # Add overview tab page panel = wx.Panel(self.nb, -1, style=wx.CLIP_CHILDREN) self.viewPage = OverviewPanel(panel, self.tree, self.editorPage.GetEditor()) self.nb.AddPage(panel, 'Overview', imageId=-1) def OnOvrSize(evt, ovr=self.viewPage): ovr.SetSize(evt.GetSize()) panel.Bind(wx.EVT_SIZE, OnOvrSize) panel.Bind(wx.EVT_ERASE_BACKGROUND, EmptyHandler) self.editorPage.SetListener(self.viewPage) # select initial items self.nb.SetSelection(0) self.mgr.AddPane(self.nb, wx.aui.AuiPaneInfo().CenterPane().Name("Notebook")) self.mgr.AddPane( leftPanel, wx.aui.AuiPaneInfo().Left().Layer(2).BestSize((240, -1)).MinSize( (160, -1)).Floatable(False).FloatingSize( (240, 700)).Caption("Dialog resource list").CloseButton( False).Name("UIItemTree")) self.mgr.AddPane( leftPanel2, wx.aui.AuiPaneInfo().Left().Layer(2).BestSize((240, -1)).MinSize( (160, -1)).Floatable(False).FloatingSize((240, 700)).Caption( "Shape children").CloseButton(False).Name("ShapeTree")) self.mgr.AddPane( attrpanel, wx.aui.AuiPaneInfo().Right().Layer(2).BestSize((240, -1)).MinSize( (160, -1)).Floatable(False).FloatingSize((240, 700)).Caption( "UI item attr").CloseButton(False).Name("Itemattr")) self.mgr.Update() self.mgr.SetFlags(self.mgr.GetFlags() ^ wx.aui.AUI_MGR_TRANSPARENT_DRAG)
def GetTitle(self): if self.Debug or self.TagName == "": if len(self.InstancePath) > 15: return "..." + self.InstancePath[-12:] return self.InstancePath return EditorPanel.GetTitle(self)
def __init__(self, parent, tagname, window, controler): EditorPanel.__init__(self, parent, tagname, window, controler) self.RefreshHighlightsTimer = wx.Timer(self, -1) self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer) self.TasksDefaultValue = {"Name" : "", "Triggering" : "", "Single" : "", "Interval" : "", "Priority" : 0} self.TasksTable = ResourceTable(self, [], GetTasksTableColnames()) self.TasksTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT]) self.TasksTable.SetColSizes([200, 100, 100, 150, 100]) self.TasksGrid.SetTable(self.TasksTable) self.TasksGrid.SetButtons({"Add": self.AddTaskButton, "Delete": self.DeleteTaskButton, "Up": self.UpTaskButton, "Down": self.DownTaskButton}) def _AddTask(new_row): self.TasksTable.InsertRow(new_row, self.TasksDefaultValue.copy()) self.RefreshModel() self.RefreshView() return new_row setattr(self.TasksGrid, "_AddRow", _AddTask) def _DeleteTask(row): self.TasksTable.RemoveRow(row) self.RefreshModel() self.RefreshView() setattr(self.TasksGrid, "_DeleteRow", _DeleteTask) def _MoveTask(row, move): new_row = self.TasksTable.MoveRow(row, move) if new_row != row: self.RefreshModel() self.RefreshView() return new_row setattr(self.TasksGrid, "_MoveRow", _MoveTask) self.TasksGrid.SetRowLabelSize(0) self.TasksTable.ResetView(self.TasksGrid) self.TasksGrid.RefreshButtons() self.InstancesDefaultValue = {"Name" : "", "Type" : "", "Task" : ""} self.InstancesTable = ResourceTable(self, [], GetInstancesTableColnames()) self.InstancesTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]) self.InstancesTable.SetColSizes([200, 150, 150]) self.InstancesGrid.SetTable(self.InstancesTable) self.InstancesGrid.SetButtons({"Add": self.AddInstanceButton, "Delete": self.DeleteInstanceButton, "Up": self.UpInstanceButton, "Down": self.DownInstanceButton}) def _AddInstance(new_row): self.InstancesTable.InsertRow(new_row, self.InstancesDefaultValue.copy()) self.RefreshModel() self.RefreshView() return new_row setattr(self.InstancesGrid, "_AddRow", _AddInstance) def _DeleteInstance(row): self.InstancesTable.RemoveRow(row) self.RefreshModel() self.RefreshView() setattr(self.InstancesGrid, "_DeleteRow", _DeleteInstance) def _MoveInstance(row, move): new_row = max(0, min(row + move, self.InstancesTable.GetNumberRows() - 1)) if new_row != row: if self.InstancesTable.GetValueByName(row, "Task") != self.InstancesTable.GetValueByName(new_row, "Task"): return row self.InstancesTable.MoveRow(row, move) self.RefreshModel() self.RefreshView() return new_row setattr(self.InstancesGrid, "_MoveRow", _MoveInstance) def _RefreshInstanceButtons(): if self: rows = self.InstancesTable.GetNumberRows() row = self.InstancesGrid.GetGridCursorRow() self.DeleteInstanceButton.Enable(rows > 0) self.UpInstanceButton.Enable(row > 0 and self.InstancesTable.GetValueByName(row, "Task") == self.InstancesTable.GetValueByName(row - 1, "Task")) self.DownInstanceButton.Enable(0 <= row < rows - 1 and self.InstancesTable.GetValueByName(row, "Task") == self.InstancesTable.GetValueByName(row + 1, "Task")) setattr(self.InstancesGrid, "RefreshButtons", _RefreshInstanceButtons) self.InstancesGrid.SetRowLabelSize(0) self.InstancesTable.ResetView(self.InstancesGrid) self.InstancesGrid.RefreshButtons() self.TasksGrid.SetFocus()
def __init__(self, parent, tagname, window, controler): EditorPanel.__init__(self, parent, tagname, window, controler) self.StructureElementDefaultValue = {"Name" : "", "Type" : DefaultType, "Initial Value" : ""} self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames()) self.StructureColSizes = [40, 150, 100, 250] self.StructureColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT] self.StructureElementsGrid.SetTable(self.StructureElementsTable) self.StructureElementsGrid.SetButtons({"Add": self.StructureAddButton, "Delete": self.StructureDeleteButton, "Up": self.StructureUpButton, "Down": self.StructureDownButton}) def _AddStructureElement(new_row): self.StructureElementsTable.InsertRow(new_row, self.StructureElementDefaultValue.copy()) self.RefreshTypeInfos() self.StructureElementsTable.ResetView(self.StructureElementsGrid) return new_row setattr(self.StructureElementsGrid, "_AddRow", _AddStructureElement) def _DeleteStructureElement(row): self.StructureElementsTable.RemoveRow(row) self.RefreshTypeInfos() self.StructureElementsTable.ResetView(self.StructureElementsGrid) setattr(self.StructureElementsGrid, "_DeleteRow", _DeleteStructureElement) def _MoveStructureElement(row, move): new_row = self.StructureElementsTable.MoveRow(row, move) if new_row != row: self.RefreshTypeInfos() self.StructureElementsTable.ResetView(self.StructureElementsGrid) return new_row setattr(self.StructureElementsGrid, "_MoveRow", _MoveStructureElement) self.StructureElementsGrid.SetRowLabelSize(0) for col in range(self.StructureElementsTable.GetNumberCols()): attr = wx.grid.GridCellAttr() attr.SetAlignment(self.StructureColAlignements[col], wx.ALIGN_CENTRE) self.StructureElementsGrid.SetColAttr(col, attr) self.StructureElementsGrid.SetColMinimalWidth(col, self.StructureColSizes[col]) self.StructureElementsGrid.AutoSizeColumn(col, False) self.StructureElementsGrid.RefreshButtons() for datatype in GetDatatypeTypes(): self.DerivationType.Append(_(datatype)) self.SubrangePanel.Hide() self.EnumeratedPanel.Hide() self.ArrayPanel.Hide() self.StructurePanel.Hide() self.CurrentPanel = "Directly" self.Highlights = [] self.Initializing = False self.HighlightControls = { ("Directly", "base"): self.DirectlyBaseType, ("Directly", "initial"): self.DirectlyInitialValue, ("Subrange", "base"): self.SubrangeBaseType, ("Subrange", "lower"): self.SubrangeMinimum, ("Subrange", "upper"): self.SubrangeMaximum, ("Subrange", "initial"): self.SubrangeInitialValue, ("Enumerated", "value"): self.EnumeratedValues, ("Enumerated", "initial"): self.EnumeratedInitialValue, ("Array", "initial"): self.ArrayInitialValue, ("Array", "base"): self.ArrayBaseType, ("Array", "range"): self.ArrayDimensions, } self.RefreshHighlightsTimer = wx.Timer(self, -1) self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer)