class PrintrbotPage(InfoPage):
def __init__(self, parent):
- self._printer_info = {
+ self._printer_info = [
# X, Y, Z, Filament Diameter, PrintTemperature, Print Speed, Travel Speed, Retract speed, Retract amount
- "Original": (130, 130, 130, 2.95, 208, 40, 70, 30, 1),
- "Simple Maker's Edition v1": (100, 100, 100, 1.75, 208, 40, 70, 30, 1),
- "Simple Maker's Edition v2 (2013 Printrbot Simple)": (100, 100, 100, 1.75, 208, 40, 70, 30, 1),
- "Simple Maker's Edition v3 (2014 Printrbot Simple)": (100, 100, 100, 1.75, 208, 40, 70, 30, 1),
- "Simple Maker's Edition v4 (Model 1405)": (100, 100, 100, 1.75, 208, 40, 70, 30, 1),
- "Simple Metal": (150, 150, 150, 1.75, 208, 40, 70, 30, 1),
- "Jr v1": (150, 100, 80, 1.75, 208, 40, 70, 30, 1),
- "Jr v2": (150, 150, 150, 1.75, 208, 40, 70, 30, 1),
- "LC v2": (150, 150, 150, 1.75, 208, 40, 70, 30, 1),
- "Plus v2": (200, 200, 200, 1.75, 208, 40, 70, 30, 1),
- "Plus v2.1": (200, 200, 200, 1.75, 208, 40, 70, 30, 1),
- "Plus v2.2 (Model 1404/140422)": (250, 250, 250, 1.75, 208, 40, 70, 30, 1),
- "Plus v2.3 (Model 140501)": (250, 250, 250, 1.75, 208, 40, 70, 30, 1),
- "Plus v2.4 (Model 140507)": (250, 250, 250, 1.75, 208, 40, 70, 30, 1),
- }
+ ("Simple Metal", 150, 150, 150, 1.75, 208, 40, 70, 30, 1),
+ ("Metal Plus", 250, 250, 250, 1.75, 208, 40, 70, 30, 1),
+ ("Simple Makers Kit", 100, 100, 100, 1.75, 208, 40, 70, 30, 1),
+ (":" + _("Older models"),),
+ ("Original", 130, 130, 130, 2.95, 208, 40, 70, 30, 1),
+ ("Simple Maker's Edition v1", 100, 100, 100, 1.75, 208, 40, 70, 30, 1),
+ ("Simple Maker's Edition v2 (2013 Printrbot Simple)", 100, 100, 100, 1.75, 208, 40, 70, 30, 1),
+ ("Simple Maker's Edition v3 (2014 Printrbot Simple)", 100, 100, 100, 1.75, 208, 40, 70, 30, 1),
+ ("Simple Maker's Edition v4 (Model 1405)", 100, 100, 100, 1.75, 208, 40, 70, 30, 1),
+ ("Jr v1", 150, 100, 80, 1.75, 208, 40, 70, 30, 1),
+ ("Jr v2", 150, 150, 150, 1.75, 208, 40, 70, 30, 1),
+ ("LC v2", 150, 150, 150, 1.75, 208, 40, 70, 30, 1),
+ ("Plus v2", 200, 200, 200, 1.75, 208, 40, 70, 30, 1),
+ ("Plus v2.1", 200, 200, 200, 1.75, 208, 40, 70, 30, 1),
+ ("Plus v2.2 (Model 1404/140422)", 250, 250, 250, 1.75, 208, 40, 70, 30, 1),
+ ("Plus v2.3 (Model 140501)", 250, 250, 250, 1.75, 208, 40, 70, 30, 1),
+ ("Plus v2.4 (Model 140507)", 250, 250, 250, 1.75, 208, 40, 70, 30, 1),
+ ("Go v2 Large", 609, 305, 305, 1.75, 208, 35, 70, 30, 1),
+ ]
super(PrintrbotPage, self).__init__(parent, _("Printrbot Selection"))
+ self.AddBitmap(wx.Bitmap(resources.getPathForImage('Printrbot_logo.png')))
self.AddText(_("Select which Printrbot machine you have:"))
- keys = self._printer_info.keys()
- keys.sort()
self._items = []
- for name in keys:
- item = self.AddRadioButton(name)
- item.data = self._printer_info[name]
- self._items.append(item)
+ for printer in self._printer_info:
+ if printer[0].startswith(":"):
+ self.AddSeperator()
+ self.AddText(printer[0][1:])
+ else:
+ item = self.AddRadioButton(printer[0])
+ item.data = printer[1:]
+ self._items.append(item)
def StoreData(self):
profile.putMachineSetting('machine_name', 'Printrbot ???')
self.AddText(_('Cura is now ready to be used with your Lulzbot.'))
self.AddSeperator()
-class configWizard(wx.wizard.Wizard):
+class ConfigWizard(wx.wizard.Wizard):
def __init__(self, addNew = False):
- super(configWizard, self).__init__(None, -1, _("Configuration Wizard"))
+ super(ConfigWizard, self).__init__(None, -1, _("Configuration Wizard"))
+
+ self._old_machine_index = int(profile.getPreferenceFloat('active_machine'))
+ if addNew:
+ profile.setActiveMachine(profile.getMachineCount())
self.Bind(wx.wizard.EVT_WIZARD_PAGE_CHANGED, self.OnPageChanged)
self.Bind(wx.wizard.EVT_WIZARD_PAGE_CHANGING, self.OnPageChanging)
+ self.Bind(wx.wizard.EVT_WIZARD_CANCEL, self.OnCancel)
self.firstInfoPage = FirstInfoPage(self, addNew)
self.machineSelectPage = MachineSelectPage(self)
else:
self.FindWindowById(wx.ID_BACKWARD).Disable()
+ def OnCancel(self, e):
+ profile.setActiveMachine(self._old_machine_index)
+
class bedLevelWizardMain(InfoPage):
def __init__(self, parent):
super(bedLevelWizardMain, self).__init__(parent, _("Bed leveling wizard"))
import math
import numpy
import os
-import warnings
import threading
import traceback
import platform
-import sys
import urllib
import urllib2
import hashlib
import socket
import struct
import errno
+import inspect
from Cura.util.bigDataStorage import BigDataStorage
from Cura.util import profile
Finds and returns the path to the current engine executable. This is OS depended.
:return: The full path to the engine executable.
"""
+ base_search_path = os.path.dirname(inspect.getfile(getEngineFilename))
+ search_filename = 'CuraEngine'
if platform.system() == 'Windows':
+ search_filename += '.exe'
if version.isDevVersion() and os.path.exists('C:/Software/Cura_SteamEngine/_bin/Release/Cura_SteamEngine.exe'):
return 'C:/Software/Cura_SteamEngine/_bin/Release/Cura_SteamEngine.exe'
- if version.isDevVersion() and os.path.exists('C:/Program Files (x86)/Cura_14.09/CuraEngine.exe'):
- return 'C:/Program Files (x86)/Cura_14.09/CuraEngine.exe'
- return os.path.abspath(os.path.join(os.path.dirname(__file__), '../..', 'CuraEngine.exe'))
- if hasattr(sys, 'frozen'):
- return os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../../..', 'CuraEngine'))
+ for n in xrange(0, 10):
+ full_filename = os.path.abspath(os.path.join(base_search_path, '/'.join(['..'] * n), search_filename))
+ if os.path.isfile(full_filename):
+ return full_filename
+ full_filename = os.path.abspath(os.path.join(base_search_path, '/'.join(['..'] * n), 'CuraEngine', search_filename))
+ if os.path.isfile(full_filename):
+ return full_filename
if os.path.isfile('/usr/bin/CuraEngine'):
return '/usr/bin/CuraEngine'
if os.path.isfile('/usr/local/bin/CuraEngine'):
return '/usr/local/bin/CuraEngine'
- tempPath = os.path.abspath(os.path.join(os.path.dirname(__file__), '../..', 'CuraEngine'))
- if os.path.isdir(tempPath):
- tempPath = os.path.join(tempPath,'CuraEngine')
- return tempPath
+ return ''
class EngineResult(object):
"""
self._objCount = 0
self._result = None
+ self._engine_executable = getEngineFilename()
self._serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._serverPortNr = 0xC20A
for potential_port in xrange(0xC20A, 0xFFFF):
extruderCount = max(extruderCount, profile.minimalExtruderCount())
- commandList = [getEngineFilename(), '-v', '-p']
+ commandList = [self._engine_executable, '-v', '-p']
for k, v in self._engineSettings(extruderCount).iteritems():
commandList += ['-s', '%s=%s' % (k, str(v))]
commandList += ['-g', '%d' % (self._serverPortNr)]