Added support for drag&drop files into Cura.
This commit is contained in:
parent
29b5d0b0eb
commit
da4bdd800f
4 changed files with 52 additions and 2 deletions
|
@ -5,6 +5,7 @@ import wx, os, platform, types, webbrowser, math, subprocess, multiprocessing, t
|
||||||
|
|
||||||
from util import profile
|
from util import profile
|
||||||
from util import sliceRun
|
from util import sliceRun
|
||||||
|
from gui import dropTarget
|
||||||
|
|
||||||
class batchRunWindow(wx.Frame):
|
class batchRunWindow(wx.Frame):
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
|
@ -12,6 +13,8 @@ class batchRunWindow(wx.Frame):
|
||||||
|
|
||||||
self.list = []
|
self.list = []
|
||||||
|
|
||||||
|
self.SetDropTarget(dropTarget.FileDropTarget(self.OnDropFiles, '.stl'))
|
||||||
|
|
||||||
wx.EVT_CLOSE(self, self.OnClose)
|
wx.EVT_CLOSE(self, self.OnClose)
|
||||||
self.panel = wx.Panel(self, -1)
|
self.panel = wx.Panel(self, -1)
|
||||||
self.SetSizer(wx.BoxSizer(wx.VERTICAL))
|
self.SetSizer(wx.BoxSizer(wx.VERTICAL))
|
||||||
|
@ -50,6 +53,13 @@ class batchRunWindow(wx.Frame):
|
||||||
self._updateListbox()
|
self._updateListbox()
|
||||||
dlg.Destroy()
|
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):
|
def OnRemModel(self, e):
|
||||||
if self.selection == None:
|
if self.selection == None:
|
||||||
return
|
return
|
||||||
|
|
18
Cura/gui/dropTarget.py
Normal file
18
Cura/gui/dropTarget.py
Normal file
|
@ -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)
|
||||||
|
|
|
@ -18,6 +18,7 @@ from gui import projectPlanner
|
||||||
from gui import batchRun
|
from gui import batchRun
|
||||||
from gui import flatSlicerWindow
|
from gui import flatSlicerWindow
|
||||||
from gui import icon
|
from gui import icon
|
||||||
|
from gui import dropTarget
|
||||||
from util import profile
|
from util import profile
|
||||||
from util import version
|
from util import version
|
||||||
from util import sliceRun
|
from util import sliceRun
|
||||||
|
@ -41,6 +42,8 @@ class mainWindow(configBase.configWindowBase):
|
||||||
wx.EVT_CLOSE(self, self.OnClose)
|
wx.EVT_CLOSE(self, self.OnClose)
|
||||||
#self.SetIcon(icon.getMainIcon())
|
#self.SetIcon(icon.getMainIcon())
|
||||||
|
|
||||||
|
self.SetDropTarget(dropTarget.FileDropTarget(self.OnDropFiles, '.stl'))
|
||||||
|
|
||||||
menubar = wx.MenuBar()
|
menubar = wx.MenuBar()
|
||||||
fileMenu = wx.Menu()
|
fileMenu = wx.Menu()
|
||||||
i = fileMenu.Append(-1, 'Load model file...')
|
i = fileMenu.Append(-1, 'Load model file...')
|
||||||
|
@ -314,7 +317,6 @@ class mainWindow(configBase.configWindowBase):
|
||||||
dlg.Destroy()
|
dlg.Destroy()
|
||||||
if not(os.path.exists(filename)):
|
if not(os.path.exists(filename)):
|
||||||
return False
|
return False
|
||||||
profile.putPreference('lastFile', filename)
|
|
||||||
return filename
|
return filename
|
||||||
dlg.Destroy()
|
dlg.Destroy()
|
||||||
return False
|
return False
|
||||||
|
@ -325,12 +327,18 @@ class mainWindow(configBase.configWindowBase):
|
||||||
filelist.append(self._showOpenDialog("Open file to print"))
|
filelist.append(self._showOpenDialog("Open file to print"))
|
||||||
if filelist[-1] == False:
|
if filelist[-1] == False:
|
||||||
return
|
return
|
||||||
self.SetTitle(filelist[-1] + ' - Cura - ' + version.getVersion())
|
self._loadModels(filelist)
|
||||||
|
|
||||||
|
def _loadModels(self, filelist):
|
||||||
self.filelist = filelist
|
self.filelist = filelist
|
||||||
|
self.SetTitle(filelist[-1] + ' - Cura - ' + version.getVersion())
|
||||||
profile.putPreference('lastFile', ';'.join(self.filelist))
|
profile.putPreference('lastFile', ';'.join(self.filelist))
|
||||||
self.preview3d.loadModelFiles(self.filelist)
|
self.preview3d.loadModelFiles(self.filelist)
|
||||||
self.preview3d.setViewMode("Normal")
|
self.preview3d.setViewMode("Normal")
|
||||||
|
|
||||||
|
def OnDropFiles(self, filenames):
|
||||||
|
self._loadModels(filenames)
|
||||||
|
|
||||||
def OnLoadModel(self, e):
|
def OnLoadModel(self, e):
|
||||||
self._showModelLoadDialog(1)
|
self._showModelLoadDialog(1)
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ from gui import icon
|
||||||
from gui import configBase
|
from gui import configBase
|
||||||
from gui import validators
|
from gui import validators
|
||||||
from gui import printWindow
|
from gui import printWindow
|
||||||
|
from gui import dropTarget
|
||||||
from util import profile
|
from util import profile
|
||||||
from util import util3d
|
from util import util3d
|
||||||
from util import stl
|
from util import stl
|
||||||
|
@ -144,6 +145,8 @@ class projectPlanner(wx.Frame):
|
||||||
self.GetSizer().Add(self.panel, 1, flag=wx.EXPAND)
|
self.GetSizer().Add(self.panel, 1, flag=wx.EXPAND)
|
||||||
#self.SetIcon(icon.getMainIcon())
|
#self.SetIcon(icon.getMainIcon())
|
||||||
|
|
||||||
|
self.SetDropTarget(dropTarget.FileDropTarget(self.OnDropFiles, '.stl'))
|
||||||
|
|
||||||
self.list = []
|
self.list = []
|
||||||
self.selection = None
|
self.selection = None
|
||||||
self.printMode = 0
|
self.printMode = 0
|
||||||
|
@ -286,6 +289,16 @@ class projectPlanner(wx.Frame):
|
||||||
self.preview.Refresh()
|
self.preview.Refresh()
|
||||||
dlg.Destroy()
|
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):
|
def OnPrintTypeChange(self):
|
||||||
self.printMode = 0
|
self.printMode = 0
|
||||||
if self.printAllAtOnce.GetValue():
|
if self.printAllAtOnce.GetValue():
|
||||||
|
@ -391,6 +404,7 @@ class projectPlanner(wx.Frame):
|
||||||
self.scaleCtrl.SetValue(str(self.selection.scale))
|
self.scaleCtrl.SetValue(str(self.selection.scale))
|
||||||
self.rotateCtrl.SetValue(int(self.selection.rotate))
|
self.rotateCtrl.SetValue(int(self.selection.rotate))
|
||||||
if int(profile.getPreference('extruder_amount')) > 1:
|
if int(profile.getPreference('extruder_amount')) > 1:
|
||||||
|
|
||||||
self.extruderCtrl.SetValue(str(self.selection.extruder+1))
|
self.extruderCtrl.SetValue(str(self.selection.extruder+1))
|
||||||
|
|
||||||
self.mirrorX.SetValue(self.selection.flipX)
|
self.mirrorX.SetValue(self.selection.flipX)
|
||||||
|
|
Loading…
Reference in a new issue