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

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

View File

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