chiark / gitweb /
4c8f85489ca65d1e8dec28ee46815731e107bbca
[cura.git] / Cura / gui / simpleMode.py
1 from __future__ import absolute_import
2 __copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License"
3
4 import wx
5
6 from Cura.util import profile
7
8 class simpleModePanel(wx.Panel):
9         "Main user interface window for Quickprint mode"
10         def __init__(self, parent, callback):
11                 super(simpleModePanel, self).__init__(parent)
12                 self._callback = callback
13
14                 #toolsMenu = wx.Menu()
15                 #i = toolsMenu.Append(-1, 'Switch to Normal mode...')
16                 #self.Bind(wx.EVT_MENU, self.OnNormalSwitch, i)
17                 #self.menubar.Insert(1, toolsMenu, 'Normal mode')
18
19                 printTypePanel = wx.Panel(self)
20                 self.printTypeHigh = wx.RadioButton(printTypePanel, -1, _("High quality print"), style=wx.RB_GROUP)
21                 self.printTypeNormal = wx.RadioButton(printTypePanel, -1, _("Normal quality print"))
22                 self.printTypeLow = wx.RadioButton(printTypePanel, -1, _("Fast low quality print"))
23                 self.printTypeJoris = wx.RadioButton(printTypePanel, -1, _("Thin walled cup or vase"))
24                 self.printTypeJoris.Hide()
25
26                 printMaterialPanel = wx.Panel(self)
27                 self.printMaterialPLA = wx.RadioButton(printMaterialPanel, -1, 'PLA', style=wx.RB_GROUP)
28                 self.printMaterialABS = wx.RadioButton(printMaterialPanel, -1, 'ABS')
29                 self.printMaterialDiameter = wx.TextCtrl(printMaterialPanel, -1, profile.getProfileSetting('filament_diameter'))
30                 if profile.getMachineSetting('gcode_flavor') == 'UltiGCode':
31                         printMaterialPanel.Show(False)
32                 
33                 self.printSupport = wx.CheckBox(self, -1, _("Print support structure"))
34
35                 sizer = wx.GridBagSizer()
36                 self.SetSizer(sizer)
37
38                 sb = wx.StaticBox(printTypePanel, label=_("Select a print profile:"))
39                 boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL)
40                 boxsizer.Add(self.printTypeHigh)
41                 boxsizer.Add(self.printTypeNormal)
42                 boxsizer.Add(self.printTypeLow)
43                 boxsizer.Add(self.printTypeJoris, border=5, flag=wx.TOP)
44                 printTypePanel.SetSizer(wx.BoxSizer(wx.VERTICAL))
45                 printTypePanel.GetSizer().Add(boxsizer, flag=wx.EXPAND)
46                 sizer.Add(printTypePanel, (0,0), flag=wx.EXPAND)
47
48                 sb = wx.StaticBox(printMaterialPanel, label=_("Material:"))
49                 boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL)
50                 boxsizer.Add(self.printMaterialPLA)
51                 boxsizer.Add(self.printMaterialABS)
52                 boxsizer.Add(wx.StaticText(printMaterialPanel, -1, _("Diameter:")))
53                 boxsizer.Add(self.printMaterialDiameter)
54                 printMaterialPanel.SetSizer(wx.BoxSizer(wx.VERTICAL))
55                 printMaterialPanel.GetSizer().Add(boxsizer, flag=wx.EXPAND)
56                 sizer.Add(printMaterialPanel, (1,0), flag=wx.EXPAND)
57
58                 sb = wx.StaticBox(self, label=_("Other:"))
59                 boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL)
60                 boxsizer.Add(self.printSupport)
61                 sizer.Add(boxsizer, (2,0), flag=wx.EXPAND)
62
63                 self.printTypeNormal.SetValue(True)
64                 self.printMaterialPLA.SetValue(True)
65
66                 self.printTypeHigh.Bind(wx.EVT_RADIOBUTTON, lambda e: self._callback())
67                 self.printTypeNormal.Bind(wx.EVT_RADIOBUTTON, lambda e: self._callback())
68                 self.printTypeLow.Bind(wx.EVT_RADIOBUTTON, lambda e: self._callback())
69                 #self.printTypeJoris.Bind(wx.EVT_RADIOBUTTON, lambda e: self._callback())
70
71                 self.printMaterialPLA.Bind(wx.EVT_RADIOBUTTON, lambda e: self._callback())
72                 self.printMaterialABS.Bind(wx.EVT_RADIOBUTTON, lambda e: self._callback())
73                 self.printMaterialDiameter.Bind(wx.EVT_TEXT, lambda e: self._callback())
74
75                 self.printSupport.Bind(wx.EVT_CHECKBOX, lambda e: self._callback())
76
77         def setupSlice(self):
78                 put = profile.setTempOverride
79                 get = profile.getProfileSetting
80
81                 put('layer_height', '0.2')
82                 put('wall_thickness', '0.8')
83                 put('solid_layer_thickness', '0.6')
84                 put('fill_density', '20')
85                 put('skirt_line_count', '1')
86                 put('skirt_gap', '6.0')
87                 put('print_speed', '50')
88                 put('print_temperature', '220')
89                 put('support', 'None')
90                 put('retraction_enable', 'True')
91                 put('retraction_min_travel', '5.0')
92                 put('retraction_speed', '40.0')
93                 put('retraction_amount', '4.5')
94                 put('retraction_extra', '0.0')
95                 put('travel_speed', '150')
96                 put('bottom_layer_speed', '25')
97                 put('cool_min_layer_time', '5')
98                 put('fan_enabled', 'True')
99                 put('fan_speed', '100')
100                 put('extra_base_wall_thickness', '0.0')
101                 put('sequence', 'Loops > Perimeter > Infill')
102                 put('force_first_layer_sequence', 'True')
103                 put('infill_type', 'Line')
104                 put('solid_top', 'True')
105                 put('fill_overlap', '15')
106                 put('support_rate', '80')
107                 put('support_distance', '0.5')
108                 put('joris', 'False')
109                 put('cool_min_feedrate', '5')
110                 put('bridge_speed', '100')
111                 put('raft_margin', '5')
112                 put('raft_base_material_amount', '100')
113                 put('raft_interface_material_amount', '100')
114                 put('bottom_thickness', '0.3')
115
116                 if self.printSupport.GetValue():
117                         put('support', _("Exterior Only"))
118
119                 nozzle_size = float(get('nozzle_size'))
120                 if self.printTypeNormal.GetValue():
121                         put('wall_thickness', nozzle_size * 2.0)
122                         put('layer_height', '0.10')
123                         put('fill_density', '20')
124                 elif self.printTypeLow.GetValue():
125                         put('wall_thickness', nozzle_size * 2.5)
126                         put('layer_height', '0.20')
127                         put('fill_density', '10')
128                         put('print_speed', '50')
129                         put('cool_min_layer_time', '3')
130                         put('bottom_layer_speed', '30')
131                 elif self.printTypeHigh.GetValue():
132                         put('wall_thickness', nozzle_size * 2.0)
133                         put('layer_height', '0.06')
134                         put('fill_density', '20')
135                         put('bottom_layer_speed', '15')
136                 elif self.printTypeJoris.GetValue():
137                         put('wall_thickness', nozzle_size * 1.5)
138                         put('layer_height', '0.3')
139                         put('solid_layer_thickness', '0.9')
140                         put('fill_density', '0')
141                         put('joris', 'True')
142                         put('extra_base_wall_thickness', '15.0')
143                         put('sequence', 'Infill > Loops > Perimeter')
144                         put('force_first_layer_sequence', 'False')
145                         put('solid_top', 'False')
146                         put('support', 'None')
147                         put('cool_min_layer_time', '3')
148
149                 put('filament_diameter', self.printMaterialDiameter.GetValue())
150                 if self.printMaterialPLA.GetValue():
151                         put('filament_density', '1.00')
152                         put('enable_raft', 'False')
153                         put('skirt_line_count', '1')
154                 if self.printMaterialABS.GetValue():
155                         put('filament_density', '0.85')
156                         put('enable_raft', 'True')
157                         put('skirt_line_count', '0')
158                         put('bottom_thickness', '0.0')
159                         put('print_temperature', '245')
160                 put('plugin_config', '')
161
162         def updateProfileToControls(self):
163                 pass