def __init__(self, parent, giface, id=wx.ID_ANY, title=_("Simple Python Editor"), **kwargs): wx.Frame.__init__(self, parent=parent, id=id, title=title, **kwargs) self.parent = parent filename = os.path.join(globalvar.WXGUIDIR, "xml", "menudata_pyedit.xml") self.menubar = Menu( parent=self, model=MenuTreeModelBuilder(filename).GetModel(separators=True)) self.SetMenuBar(self.menubar) self.toolbar = PyEditToolbar(parent=self) # workaround for http://trac.wxwidgets.org/ticket/13888 # TODO: toolbar is set in toolbar and here if sys.platform != "darwin": self.SetToolBar(self.toolbar) self.panel = PyStc(parent=self) if IsDark(): SetDarkMode(self.panel) self.controller = PyEditController(panel=self.panel, guiparent=self, giface=giface) # don't start with an empty page self.panel.SetText(script_template()) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.panel, proportion=1, flag=wx.EXPAND) sizer.Fit(self) sizer.SetSizeHints(self) self.SetSizer(sizer) self.Fit() self.SetAutoLayout(True) self.Layout() self.Bind(wx.EVT_CLOSE, self.OnClose)
class PyEditFrame(wx.Frame): # GUI class and a lot of trampoline methods # pylint: disable=missing-docstring # pylint: disable=too-many-public-methods # pylint: disable=invalid-name def __init__(self, parent, giface, id=wx.ID_ANY, title=_("GRASS GIS Simple Python Editor"), **kwargs): wx.Frame.__init__(self, parent=parent, id=id, title=title, **kwargs) self.parent = parent filename = os.path.join( globalvar.WXGUIDIR, 'xml', 'menudata_pyedit.xml') self.menubar = Menu( parent=self, model=MenuTreeModelBuilder(filename).GetModel(separators=True)) self.SetMenuBar(self.menubar) self.toolbar = PyEditToolbar(parent=self) # workaround for http://trac.wxwidgets.org/ticket/13888 # TODO: toolbar is set in toolbar and here if sys.platform != 'darwin': self.SetToolBar(self.toolbar) self.panel = PyStc(parent=self) self.controller = PyEditController( panel=self.panel, guiparent=self, giface=giface) # don't start with an empty page self.panel.SetText(script_template()) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.panel, proportion=1, flag=wx.EXPAND) sizer.Fit(self) sizer.SetSizeHints(self) self.SetSizer(sizer) self.Fit() self.SetAutoLayout(True) self.Layout() self.Bind(wx.EVT_CLOSE, self.OnClose) # TODO: it would be nice if we can pass the controller to the menu # might not be possible on the side of menu # here we use self and self.controller which might make it harder def OnOpen(self, *args, **kwargs): self.controller.OnOpen(*args, **kwargs) def OnSave(self, *args, **kwargs): self.controller.OnSave(*args, **kwargs) def OnClose(self, *args, **kwargs): # this will be often true because PyStc is using EVT_KEY_DOWN # to say if it was modified, not actual user change in text if self.controller.IsContentValuable(): self.controller.OnSave(*args, **kwargs) self.Destroy() def OnRun(self, *args, **kwargs): # save without asking self.controller.OnRun(*args, **kwargs) def OnHelp(self, *args, **kwargs): self.controller.OnHelp(*args, **kwargs) def OnSimpleScriptTemplate(self, *args, **kwargs): self.controller.SetScriptTemplate(*args, **kwargs) def OnGrassModuleTemplate(self, *args, **kwargs): self.controller.SetModuleTemplate(*args, **kwargs) def OnSimpleScriptExample(self, *args, **kwargs): self.controller.SetScriptExample(*args, **kwargs) def OnGrassModuleExample(self, *args, **kwargs): self.controller.SetModuleExample(*args, **kwargs) def OnGrassModuleErrorHandlingExample(self, *args, **kwargs): self.controller.SetModuleErrorHandlingExample(*args, **kwargs) def OnPythonHelp(self, *args, **kwargs): self.controller.OnPythonHelp(*args, **kwargs) def OnModulesHelp(self, *args, **kwargs): self.controller.OnModulesHelp(*args, **kwargs) def OnSubmittingHelp(self, *args, **kwargs): self.controller.OnSubmittingHelp(*args, **kwargs) def OnAddonsHelp(self, *args, **kwargs): self.controller.OnAddonsHelp(*args, **kwargs) def OnSupport(self, *args, **kwargs): self.controller.OnSupport(*args, **kwargs) def _get_overwrite(self): return self.controller.overwrite def _set_overwrite(self, overwrite): self.controller.overwrite = overwrite overwrite = property(_get_overwrite, _set_overwrite, doc="Tells if overwrite should be used") def OnSetParameters(self, *args, **kwargs): self.controller.OnSetParameters(*args, **kwargs)