diff --git a/Cura/gui/batchRun.py b/Cura/gui/batchRun.py index f8c7f2f..db80d31 100644 --- a/Cura/gui/batchRun.py +++ b/Cura/gui/batchRun.py @@ -5,6 +5,7 @@ import wx, os, platform, types, webbrowser, math, subprocess, multiprocessing, t from util import profile from util import sliceRun +from gui import dropTarget class batchRunWindow(wx.Frame): def __init__(self, parent): @@ -12,6 +13,8 @@ class batchRunWindow(wx.Frame): self.list = [] + self.SetDropTarget(dropTarget.FileDropTarget(self.OnDropFiles, '.stl')) + wx.EVT_CLOSE(self, self.OnClose) self.panel = wx.Panel(self, -1) self.SetSizer(wx.BoxSizer(wx.VERTICAL)) @@ -50,6 +53,13 @@ class batchRunWindow(wx.Frame): self._updateListbox() dlg.Destroy() + def OnDropFiles(self, filenames): + for filename in filenames: + profile.putPreference('lastFile', filename) + self.list.append(filename) + self.selection = filename + self._updateListbox() + def OnRemModel(self, e): if self.selection == None: return diff --git a/Cura/gui/dropTarget.py b/Cura/gui/dropTarget.py new file mode 100644 index 0000000..0c89fd0 --- /dev/null +++ b/Cura/gui/dropTarget.py @@ -0,0 +1,18 @@ +from __future__ import absolute_import +import __init__ + +import wx + +# Define File Drop Target class +class FileDropTarget(wx.FileDropTarget): + def __init__(self, callback, filenameFilter = None): + super(FileDropTarget, self).__init__() + self.callback = callback + self.filenameFilter = filenameFilter + + def OnDropFiles(self, x, y, filenames): + if self.filenameFilter != None: + filenames = filter(lambda f: f.endswith(self.filenameFilter) or f.endswith(self.filenameFilter.upper()), filenames) + if len(filenames) > 0: + self.callback(filenames) + diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index d974924..77c16a9 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -18,6 +18,7 @@ from gui import projectPlanner from gui import batchRun from gui import flatSlicerWindow from gui import icon +from gui import dropTarget from util import profile from util import version from util import sliceRun @@ -41,6 +42,8 @@ class mainWindow(configBase.configWindowBase): wx.EVT_CLOSE(self, self.OnClose) #self.SetIcon(icon.getMainIcon()) + self.SetDropTarget(dropTarget.FileDropTarget(self.OnDropFiles, '.stl')) + menubar = wx.MenuBar() fileMenu = wx.Menu() i = fileMenu.Append(-1, 'Load model file...') @@ -314,7 +317,6 @@ class mainWindow(configBase.configWindowBase): dlg.Destroy() if not(os.path.exists(filename)): return False - profile.putPreference('lastFile', filename) return filename dlg.Destroy() return False @@ -325,12 +327,18 @@ class mainWindow(configBase.configWindowBase): filelist.append(self._showOpenDialog("Open file to print")) if filelist[-1] == False: return - self.SetTitle(filelist[-1] + ' - Cura - ' + version.getVersion()) + self._loadModels(filelist) + + def _loadModels(self, filelist): self.filelist = filelist + self.SetTitle(filelist[-1] + ' - Cura - ' + version.getVersion()) profile.putPreference('lastFile', ';'.join(self.filelist)) self.preview3d.loadModelFiles(self.filelist) self.preview3d.setViewMode("Normal") + def OnDropFiles(self, filenames): + self._loadModels(filenames) + def OnLoadModel(self, e): self._showModelLoadDialog(1) diff --git a/Cura/gui/projectPlanner.py b/Cura/gui/projectPlanner.py index 5a996be..4588cc9 100644 --- a/Cura/gui/projectPlanner.py +++ b/Cura/gui/projectPlanner.py @@ -22,6 +22,7 @@ from gui import icon from gui import configBase from gui import validators from gui import printWindow +from gui import dropTarget from util import profile from util import util3d from util import stl @@ -144,6 +145,8 @@ class projectPlanner(wx.Frame): self.GetSizer().Add(self.panel, 1, flag=wx.EXPAND) #self.SetIcon(icon.getMainIcon()) + self.SetDropTarget(dropTarget.FileDropTarget(self.OnDropFiles, '.stl')) + self.list = [] self.selection = None self.printMode = 0 @@ -286,6 +289,16 @@ class projectPlanner(wx.Frame): self.preview.Refresh() dlg.Destroy() + def OnDropFiles(self, filenames): + for filename in filenames: + item = ProjectObject(self, filename) + profile.putPreference('lastFile', item.filename) + self.list.append(item) + self.selection = item + self._updateListbox() + self.OnListSelect(None) + self.preview.Refresh() + def OnPrintTypeChange(self): self.printMode = 0 if self.printAllAtOnce.GetValue(): @@ -391,6 +404,7 @@ class projectPlanner(wx.Frame): self.scaleCtrl.SetValue(str(self.selection.scale)) self.rotateCtrl.SetValue(int(self.selection.rotate)) if int(profile.getPreference('extruder_amount')) > 1: + self.extruderCtrl.SetValue(str(self.selection.extruder+1)) self.mirrorX.SetValue(self.selection.flipX)