UI no longer crashes if you don't have PyOpenGL.
Start of UI using skeinforge settings.
"Read a configuration file as global config"
global globalConfigParser
globalConfigParser = ConfigParser.ConfigParser()
- print globalConfigParser.read(filename)
+ globalConfigParser.read(filename)
def getDefaultConfigPath():
return os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../current_config.ini"))
if not globals().has_key('globalConfigParser'):
loadGlobalConfig(getDefaultConfigPath())
- print('getReadRepository:', repository.name)
+ #print('getReadRepository:', repository.name)
for p in repository.preferences:
try:
p.setValueToString(globalConfigParser.get(repository.name, safeConfigName(p.name)))
"Only used for the extra export options, which we are not using, so ignore the path for now"
def getFromPath( self, latentStringVar, name, path, repository, value ):
"Initialize."
- print('RadioCapitalizedButton->getFromPath:', latentStringVar, name, path, repository, value )
+ #print('RadioCapitalizedButton->getFromPath:', latentStringVar, name, path, repository, value )
self.name = name
self.value = value
repository.preferences.append(self)
"A class to display, read & write a fileName."
def getFromFileName( self, fileTypes, name, repository, value ):
#print('FileNameInput:getFromFileName:', self, fileTypes, name, repository, value )
- repository.preferences.append(self)
self.name = name
self.value = value
return self
"A class to display, read & write a boolean with associated combo box selection."
def getFromMenuButtonDisplay( self, menuButtonDisplay, name, repository, value ):
"Initialize."
- print('MenuRadio->getFromMenuButtonDisplay:', menuButtonDisplay, name, repository, value )
+ #print('MenuRadio->getFromMenuButtonDisplay:', menuButtonDisplay, name, repository, value )
self.name = name
self.value = value
menuButtonDisplay.addRadio(self, value)
import wx
from newui import preview3d
+from fabmetheus_utilities import archive
+from fabmetheus_utilities import settings
+from skeinforge_application.skeinforge_utilities import skeinforge_profile
def main():
app = wx.App(False)
menubar.Append(wx.Menu(), 'Expert')
self.SetMenuBar(menubar)
+ plugins = {}
+ for m in skeinforge_profile.getCraftTypePluginModule().getCraftSequence():
+ plugins[m] = archive.getModuleWithDirectoryPath(archive.getCraftPluginsDirectoryPath(), m).getNewRepository()
+ settings.getReadRepository(plugins[m])
+
p = wx.Panel(self)
- nb = wx.Notebook(p, size=(400,10))
+ nb = wx.Notebook(p, size=(500,10))
printConfig = wx.Panel(nb);
- wx.StaticText(printConfig, -1, "Test", (20,20))
+
+ sizer = wx.GridBagSizer(2, 2)
+ printConfig.SetSizer(sizer)
+
+ for pluginName in plugins.keys():
+ box, configPanel = self.CreateGroup(printConfig, pluginName)
+ sizer.Add(box, (sizer.GetRows(),0))
+ sizer.SetRows(sizer.GetRows()+1)
+
+ for pref in plugins[pluginName].preferences:
+ self.AddSetting(configPanel, pref.name, wx.TextCtrl(configPanel, -1, str(pref)))
+
+ #self.AddSetting(generalConfig, "Speed (mm/s)", wx.TextCtrl(generalConfig, -1, "50.0"))
+
+ machineConfig = wx.Panel(nb);
+ sizer = wx.GridBagSizer(2, 2)
+ machineConfig.SetSizer(sizer)
+ box, dimensionsConfig = self.CreateGroup(machineConfig, "Dimensions")
+ self.AddSetting(dimensionsConfig, "Printer size (mm)", wx.TextCtrl(dimensionsConfig, -1, "205,205,200"))
+ sizer.Add(box, (0,0))
+
nb.AddPage(printConfig, "Print")
- nb.AddPage(wx.Panel(nb), "Machine")
+ nb.AddPage(machineConfig, "Machine")
nb.AddPage(wx.Panel(nb), "Start/End-GCode")
p3d = preview3d.myGLCanvas(p)
sizer = wx.GridBagSizer()
sizer.Add(nb, (0,0), span=(2,1), flag=wx.EXPAND)
- sizer.Add(p3d, (0,1), flag=wx.EXPAND)
+ sizer.Add(p3d, (0,1), span=(1,1), flag=wx.EXPAND)
sizer.Add(loadButton, (1,1))
sizer.AddGrowableCol(1)
sizer.AddGrowableRow(0)
self.Centre()
self.Show(True)
+ def CreateGroup(self, panel, name):
+ retPanel = wx.Panel(panel)
+ sizer = wx.GridBagSizer(2, 2)
+ retPanel.SetSizer(sizer)
+
+ box = wx.StaticBox(panel, -1, name)
+ sizer = wx.StaticBoxSizer(box, wx.VERTICAL)
+ sizer.Add(retPanel)
+
+ return (sizer, retPanel)
+
+ def AddSetting(self, panel, name, ctrl):
+ sizer = panel.GetSizer()
+ sizer.Add(wx.StaticText(panel, -1, name), (sizer.GetRows(),0), flag=wx.ALIGN_BOTTOM)
+ sizer.Add(ctrl, (sizer.GetRows(),1), flag=wx.ALIGN_BOTTOM|wx.EXPAND)
+ sizer.SetRows(sizer.GetRows()+1)
+
def OnQuit(self, e):
self.Close()
-from wxPython.glcanvas import wxGLCanvas\r
-from wxPython.wx import *\r
-from OpenGL.GLUT import *\r
-from OpenGL.GLU import *\r
-from OpenGL.GL import *\r
+#from wxPython.glcanvas import wxGLCanvas\r
+import wx\r
import sys,math\r
\r
+from wx.glcanvas import GLCanvas\r
+try:\r
+ from OpenGL.GLUT import *\r
+ from OpenGL.GLU import *\r
+ from OpenGL.GL import *\r
+ hasOpenGLlibs = True\r
+except:\r
+ print "Failed to find PyOpenGL: http://pyopengl.sourceforge.net/"\r
+ hasOpenGLlibs = False\r
+\r
from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret\r
from fabmetheus_utilities.vector3 import Vector3\r
\r
-class myGLCanvas(wxGLCanvas):\r
+class myGLCanvas(GLCanvas):\r
def __init__(self, parent):\r
- wxGLCanvas.__init__(self, parent,-1)\r
- EVT_PAINT(self, self.OnPaint)\r
- EVT_SIZE(self, self.OnSize)\r
- EVT_ERASE_BACKGROUND(self, self.OnEraseBackground)\r
- EVT_MOTION(self, self.OnMouseMotion)\r
+ GLCanvas.__init__(self, parent,-1)\r
+ wx.EVT_PAINT(self, self.OnPaint)\r
+ wx.EVT_SIZE(self, self.OnSize)\r
+ wx.EVT_ERASE_BACKGROUND(self, self.OnEraseBackground)\r
+ wx.EVT_MOTION(self, self.OnMouseMotion)\r
self.init = 0\r
self.triangleMesh = None\r
- self.yaw = 0\r
- self.pitch = 80\r
+ self.yaw = 30\r
+ self.pitch = 60\r
self.zoom = 150\r
self.machineSize = Vector3(210, 210, 200)\r
self.machineCenter = Vector3(100, 100, 0)\r
- return\r
\r
def loadFile(self, filename):\r
self.triangleMesh = fabmetheus_interpret.getCarving(filename)\r
minZ = self.triangleMesh.getMinimumZ()\r
min = self.triangleMesh.getCarveCornerMinimum()\r
max = self.triangleMesh.getCarveCornerMaximum()\r
+ self.moveModel()\r
\r
+ def moveModel():\r
+ if self.triangleMesh == None:\r
+ return\r
for v in self.triangleMesh.vertexes:\r
v.z -= minZ\r
v.x -= min.x + (max.x - min.x) / 2\r
def OnMouseMotion(self,e):\r
if e.Dragging() and e.LeftIsDown():\r
self.yaw += e.GetX() - self.oldX\r
- self.pitch += e.GetY() - self.oldY\r
+ self.pitch -= e.GetY() - self.oldY\r
if self.pitch > 170:\r
self.pitch = 170\r
if self.pitch < 10:\r
return\r
\r
def OnPaint(self,event):\r
- dc = wxPaintDC(self)\r
+ dc = wx.PaintDC(self)\r
+ if not hasOpenGLlibs:\r
+ dc.Clear()\r
+ dc.DrawText("No PyOpenGL installation found.\nNo preview window available.", 10, 10)\r
+ return\r
self.SetCurrent()\r
self.InitGL()\r
self.OnDraw()\r
return 'SkeinPyPy profile:' + craftTypeName
def addListsToCraftTypeRepository(fileNameHelp, repository):
- print('addListsToCraftTypeRepository:', fileNameHelp, repository)
+ #print('addListsToCraftTypeRepository:', fileNameHelp, repository)
repository.name = fileNameHelp.split('.')[-2]
repository.preferences = []