"""! @package gmodeler.py @brief Graphical modeler to create edit, and manage models Classes: - ModelFrame - ModelCanvas (C) 2010 by the GRASS Development Team This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details. @author Martin Landa """ import os import globalvar if not os.getenv("GRASS_WXBUNDLED"): globalvar.CheckForWx() import wx import wx.lib.ogl as ogl import menu import menudata import toolbars from grass.script import core as grass class ModelFrame(wx.Frame): def __init__(self, parent, id = wx.ID_ANY, title = _("Graphical modeler (under development)"), **kwargs): """!Graphical modeler main window @param parent parent window @param id window id @param title window title @param kwargs wx.Frames' arguments """ self.parent = parent wx.Frame.__init__(self, parent = parent, id = id, title = title, **kwargs) self.SetIcon(wx.Icon(os.path.join(globalvar.ETCICONDIR, 'grass.ico'), wx.BITMAP_TYPE_ICO)) self.menubar = menu.Menu(parent = self, data = menudata.ModelerData()) self.SetMenuBar(self.menubar) self.toolbar = toolbars.ModelToolbar(parent = self) self.SetToolBar(self.toolbar) self.statusbar = self.CreateStatusBar(number = 1) self.canvas = ModelCanvas(self) self.canvas.SetBackgroundColour(wx.WHITE) self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) self._layout() self.SetMinSize((400, 300)) def _layout(self): """!Do layout""" sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(item = self.canvas, proportion = 1, flag = wx.EXPAND) self.SetAutoLayout(True) self.SetSizer(sizer) sizer.Fit(self) self.Layout() def OnCloseWindow(self, event): """!Close window""" self.Destroy() def OnModelNew(self, event): """!Create new model""" pass def OnModelOpen(self, event): """!Load model from file""" pass def OnModelSave(self, event): """!Save model to file""" pass def OnModelSaveAs(self, event): """!Create model to file as""" pass def OnAddAction(self, event): """!Add action to model""" pass def OnHelp(self, event): """!Display manual page""" grass.run_command('g.manual', entry = 'wxGUI.Modeler') class ModelCanvas(ogl.ShapeCanvas): """!Canvas where model is drawn""" def __init__(self, parent): ogl.OGLInitialize() ogl.ShapeCanvas.__init__(self, parent) self.diagram = ogl.Diagram() self.SetDiagram(self.diagram) self.diagram.SetCanvas(self) def main(): app = wx.PySimpleApp() frame = ModelFrame(parent = None) frame.CenterOnScreen() frame.Show() app.MainLoop() if __name__ == "__main__": main()