Added support for drag&drop files into Cura.

master
daid 2012-07-03 14:46:56 +02:00
parent 29b5d0b0eb
commit da4bdd800f
4 changed files with 52 additions and 2 deletions

View File

@ -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
View 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)

View File

@ -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)

View File

@ -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)