View difference between Paste ID: GX1A4igz and DmX74MHW
SHOW: | | - or go back to the newest paste.
1
Index: Cura/gui/mainWindow.py
2
===================================================================
3
--- Cura/gui/mainWindow.py	(revision 2208)
4
+++ Cura/gui/mainWindow.py	(working copy)
5
@@ -115,6 +115,10 @@
6
 		self.profileFileHistory.UseMenu(profileHistoryMenu)
7
 		self.profileFileHistory.AddFilesToMenu()
8
 		self.Bind(wx.EVT_MENU_RANGE, self.OnProfileMRU, id=self.ID_MRU_PROFILE1, id2=self.ID_MRU_PROFILE10)
9
+		
10
+		self.fileMenu.AppendSeparator()
11
+		i = self.fileMenu.Append(-1, _("Start Toolpath Computation\tCTRL+T"))
12
+		self.Bind(wx.EVT_MENU, self.onToolpathStart, i)
13
 
14
 		self.fileMenu.AppendSeparator()
15
 		i = self.fileMenu.Append(wx.ID_EXIT, _("Quit"))
16
@@ -336,7 +340,10 @@
17
 			self.headOffsetWizardMenuItem.Enable(False)
18
 		self.scene.updateProfileToControls()
19
 		self.scene._scene.pushFree()
20
-
21
+	
22
+	def onToolpathStart(self, e):
23
+		self.scene.updateSceneAndRunEngine()
24
+		
25
 	def onOneAtATimeSwitch(self, e):
26
 		profile.putPreference('oneAtATime', self.oneAtATime.IsChecked())
27
 		if self.oneAtATime.IsChecked() and profile.getMachineSettingFloat('extruder_head_size_height') < 1:
28
Index: Cura/gui/preferencesDialog.py
29
===================================================================
30
--- Cura/gui/preferencesDialog.py	(revision 2208)
31
+++ Cura/gui/preferencesDialog.py	(working copy)
32
@@ -51,6 +51,7 @@
33
 		configBase.SettingRow(right, 'auto_detect_sd')
34
 		configBase.SettingRow(right, 'check_for_updates')
35
 		configBase.SettingRow(right, 'submit_slice_information')
36
+		configBase.SettingRow(right, 'automatic_slicing')
37
 
38
 		self.okButton = wx.Button(right, -1, 'Ok')
39
 		right.GetSizer().Add(self.okButton, (right.GetSizer().GetRows(), 0), flag=wx.BOTTOM, border=5)
40
Index: Cura/gui/sceneView.py
41
===================================================================
42
--- Cura/gui/sceneView.py	(revision 2211)
43
+++ Cura/gui/sceneView.py	(working copy)
44
@@ -35,6 +35,8 @@
45
 class SceneView(openglGui.glGuiPanel):
46
 	def __init__(self, parent):
47
 		super(SceneView, self).__init__(parent)
48
+		
49
+		self.layersDirty = True
50
 
51
 		self._yaw = 30
52
 		self._pitch = 60
53
@@ -386,6 +388,11 @@
54
 
55
 	def OnViewChange(self):
56
 		if self.viewSelection.getValue() == 4:
57
+			if self.layersDirty and profile.getPreference('automatic_slicing') != 'True':
58
+				#ensure that we will eventually have some gcode to display in the layer view
59
+				self.updateSceneAndRunEngine()
60
+				threading.Timer(0.1, self.OnViewChange).start()
61
+				return
62
 			self.viewMode = 'gcode'
63
 			self.tool = previewTools.toolNone(self)
64
 		elif self.viewSelection.getValue() == 1:
65
@@ -542,17 +549,38 @@
66
 		self.sceneUpdated()
67
 
68
 	def sceneUpdated(self):
69
+		if profile.getPreference('automatic_slicing') == 'True':
70
+			self._sceneUpdated()
71
+		else:
72
+			self.layersDirty = True
73
+	
74
+	def _sceneUpdated(self):
75
 		self._sceneUpdateTimer.Start(500, True)
76
 		self._engine.abortEngine()
77
 		self._scene.updateSizeOffsets()
78
 		self.QueueRefresh()
79
 
80
 	def _onRunEngine(self, e):
81
+		if profile.getPreference('automatic_slicing') == 'True':
82
+			self.__onRunEngine(e)
83
+			
84
+	def __onRunEngine(self, e):
85
 		if self._isSimpleMode:
86
 			self.GetTopLevelParent().simpleSettingsPanel.setupSlice()
87
 		self._engine.runEngine(self._scene)
88
 		if self._isSimpleMode:
89
 			profile.resetTempOverride()
90
+			
91
+		#clear flag
92
+		self.layersDirty = False
93
+		
94
+	#used when toolpath generation is set to 'Manual' mode
95
+	def updateSceneAndRunEngine(self):
96
+		#update scene
97
+		self._sceneUpdated()
98
+		
99
+		#run engine
100
+		self.__onRunEngine(None)
101
 
102
 	def _updateEngineProgress(self, progressValue):
103
 		result = self._engine.getResult()
104
Index: Cura/util/profile.py
105
===================================================================
106
--- Cura/util/profile.py	(revision 2208)
107
+++ Cura/util/profile.py	(working copy)
108
@@ -473,6 +473,7 @@
109
 setting('auto_detect_sd', 'True', bool, 'preference', 'hidden').setLabel(_("Auto detect SD card drive"), _("Auto detect the SD card. You can disable this because on some systems external hard-drives or USB sticks are detected as SD card."))
110
 setting('check_for_updates', 'True', bool, 'preference', 'hidden').setLabel(_("Check for updates"), _("Check for newer versions of Cura on startup"))
111
 setting('submit_slice_information', 'False', bool, 'preference', 'hidden').setLabel(_("Send usage statistics"), _("Submit anonymous usage information to improve future versions of Cura"))
112
+setting('automatic_slicing', 'True', bool, 'preference', 'hidden').setLabel(_("Automatic slicing"), _("Automatically compute a new toolpath whenever settings are changed; if you disable this option you will need to manually start toolpath computation using 'File -> Start Toolpath Computation' or by pressing 'CTRL+T'."))
113
 setting('youmagine_token', '', str, 'preference', 'hidden')
114
 setting('filament_physical_density', '1240', float, 'preference', 'hidden').setRange(500.0, 3000.0).setLabel(_("Density (kg/m3)"), _("Weight of the filament per m3. Around 1240 for PLA. And around 1040 for ABS. This value is used to estimate the weight if the filament used for the print."))
115
 setting('language', 'English', str, 'preference', 'hidden').setLabel(_('Language'), _('Change the language in which Cura runs. Switching language requires a restart of Cura'))