chiark / gitweb /
Merge tag '15.01-RC6' into upstream
authorYouness Alaoui <kakaroto@kakaroto.homelinux.net>
Thu, 5 Mar 2015 21:45:44 +0000 (16:45 -0500)
committerYouness Alaoui <kakaroto@kakaroto.homelinux.net>
Thu, 5 Mar 2015 21:45:44 +0000 (16:45 -0500)
Conflicts:
Cura/gui/simpleMode.py
Cura/util/profile.py
Cura/util/resources.py
Cura/util/sliceEngine.py
scripts/linux/debian_control
scripts/linux/debian_i386/DEBIAN/control

1  2 
Cura/gui/simpleMode.py
Cura/util/profile.py
Cura/util/resources.py
package.sh
scripts/linux/debian_control

index 87210db7d629fc6bf534fcad2c391d10443e2673,7b9e116e2428f63a97590ab7b41eb2e0e4383c63..ee3520228cc7e44219850b16be8387b112aeadbe
@@@ -36,20 -40,16 +41,24 @@@ class simpleModePanel(wx.Panel)
                        if cp.has_option('info', 'name'):
                                name = cp.get('info', 'name')
                        button = wx.RadioButton(printMaterialPanel, -1, name, style=wx.RB_GROUP if len(self._print_material_options) == 0 else 0)
+                       button.base_filename = base_filename
                        button.filename = filename
                        self._print_material_options.append(button)
+                       if profile.getPreference('simpleModeMaterial') == base_filename:
+                               button.SetValue(True)
                if profile.getMachineSetting('gcode_flavor') == 'UltiGCode':
                        printMaterialPanel.Show(False)
 -              
 -              self.printSupport = wx.CheckBox(self, -1, _("Print support structure"))
 +
 +              for filename in resources.getSimpleModeOptions():
 +                      cp = configparser.ConfigParser()
 +                      cp.read(filename)
 +                      name = os.path.basename(filename)
 +                      if cp.has_option('info', 'name'):
 +                              name = cp.get('info', 'name')
 +                      button = wx.CheckBox(self, -1, name)
 +                      button.filename = filename
 +                      self._print_other_options.append(button)
  
                sizer = wx.GridBagSizer()
                self.SetSizer(sizer)
                sizer.Add(boxsizer, (2,0), flag=wx.EXPAND)
  
                for button in self._print_profile_options:
-                       button.Bind(wx.EVT_RADIOBUTTON, lambda e: self._callback())
+                       button.Bind(wx.EVT_RADIOBUTTON, self._update)
                for button in self._print_material_options:
-                       button.Bind(wx.EVT_RADIOBUTTON, lambda e: self._callback())
+                       button.Bind(wx.EVT_RADIOBUTTON, self._update)
 -
 -              self.printSupport.Bind(wx.EVT_CHECKBOX, self._update)
 +              for button in self._print_other_options:
-                       button.Bind(wx.EVT_CHECKBOX, lambda e: self._callback())
++                      button.Bind(wx.EVT_CHECKBOX, self._update)
+       def _update(self, e):
+               for button in self._print_profile_options:
+                       if button.GetValue():
+                               profile.putPreference('simpleModeProfile', button.base_filename)
+               for button in self._print_material_options:
+                       if button.GetValue():
+                               profile.putPreference('simpleModeMaterial', button.base_filename)
+               self._callback()
  
        def getSettingOverrides(self):
                settings = {}
index 1275cb4eb5932b8f8fb9a4f8daf1c90881172e09,691c0571d8b236fc7b2e536ef8ca9492602f6c8e..2351a24b6489f2aa0d736de32ce61030203348cf
@@@ -175,20 -175,20 +175,20 @@@ class setting(object)
  def _(n):
        return n
  
 -setting('layer_height',              0.1, float, 'basic',    _('Quality')).setRange(0.0001).setLabel(_("Layer height (mm)"), _("Layer height in millimeters.\nThis is the most important setting to determine the quality of your print. Normal quality prints are 0.1mm, high quality is 0.06mm. You can go up to 0.25mm with an Ultimaker for very fast prints at low quality."))
 +setting('layer_height',              0.1, float, 'basic',    _('Quality')).setRange(0.0001).setLabel(_("Layer height (mm)"), _("Layer height in millimeters.\nThis is the most important setting to determine the quality of your print. Smaller layer heights will give a finer surface but will give longer print time. Larger layer heights will provide fast prints but a rougher surface."))
  setting('wall_thickness',            0.8, float, 'basic',    _('Quality')).setRange(0.0).setLabel(_("Shell thickness (mm)"), _("Thickness of the outside shell in the horizontal direction.\nThis is used in combination with the nozzle size to define the number\nof perimeter lines and the thickness of those perimeter lines."))
- setting('retraction_enable',        True, bool,  'basic',    _('Quality')).setExpertSubCategory('Retraction').setLabel(_("Enable retraction"), _("Retract the filament when the nozzle is moving over a none-printed area. Details about the retraction can be configured in the advanced tab."))
+ setting('retraction_enable',        True, bool,  'basic',    _('Quality')).setExpertSubCategory(_('Retraction')).setLabel(_("Enable retraction"), _("Retract the filament when the nozzle is moving over a none-printed area. Details about the retraction can be configured in the advanced tab."))
  setting('solid_layer_thickness',     0.6, float, 'basic',    _('Fill')).setRange(0).setLabel(_("Bottom/Top thickness (mm)"), _("This controls the thickness of the bottom and top layers, the amount of solid layers put down is calculated by the layer thickness and this value.\nHaving this value a multiple of the layer thickness makes sense. And keep it near your wall thickness to make an evenly strong part."))
- setting('fill_density',               20, float, 'basic',    _('Fill')).setExpertSubCategory('Infill').setRange(0, 100).setLabel(_("Fill Density (%)"), _("This controls how densely filled the insides of your print will be. For a solid part use 100%, for an empty part use 0%. A value around 20% is usually enough.\nThis will not affect the outside of the print and only adjusts how strong the part becomes."))
 -setting('fill_density',               20, float, 'basic',    _('Fill')).setExpertSubCategory(_('Infill')).setRange(0, 100).setLabel(_("Fill Density (%)"), _("This controls how densely filled the insides of your print will be. For a solid part use 100%, for an empty part use 0%. A value around 20% is usually enough.\nThis won't affect the outside of the print and only adjusts how strong the part becomes."))
++setting('fill_density',               20, float, 'basic',    _('Fill')).setExpertSubCategory(_('Infill')).setRange(0, 100).setLabel(_("Fill Density (%)"), _("This controls how densely filled the insides of your print will be. For a solid part use 100%, for an empty part use 0%. A value around 20% is usually enough.\nThis will not affect the outside of the print and only adjusts how strong the part becomes."))
  setting('nozzle_size',               0.4, float, 'advanced', _('Machine')).setRange(0.1,10).setLabel(_("Nozzle size (mm)"), _("The nozzle size is very important, this is used to calculate the line width of the infill, and used to calculate the amount of outside wall lines and thickness for the wall thickness you entered in the print settings."))
 -setting('print_speed',                50, float, 'basic',    _('Speed and Temperature')).setRange(1).setLabel(_("Print speed (mm/s)"), _("Speed at which printing happens. A well adjusted Ultimaker can reach 150mm/s, but for good quality prints you want to print slower. Printing speed depends on a lot of factors. So you will be experimenting with optimal settings for this."))
 -setting('print_temperature',         220, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("Printing temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA a value of 210C is usually used.\nFor ABS a value of 230C or higher is required."))
 -setting('print_temperature2',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("2nd nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA a value of 210C is usually used.\nFor ABS a value of 230C or higher is required."))
 -setting('print_temperature3',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("3th nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA a value of 210C is usually used.\nFor ABS a value of 230C or higher is required."))
 -setting('print_temperature4',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("4th nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA a value of 210C is usually used.\nFor ABS a value of 230C or higher is required."))
 -setting('print_bed_temperature',      70, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("Bed temperature (C)"), _("Temperature used for the heated printer bed. Set at 0 to pre-heat yourself."))
 -setting('support',                'None', [_('None'), _('Touching buildplate'), _('Everywhere')], 'basic', _('Support')).setExpertSubCategory(_('Support')).setLabel(_("Support type"), _("Type of support structure build.\n\"Touching buildplate\" is the most commonly used support setting.\n\nNone does not do any support.\nTouching buildplate only creates support where the support structure will touch the build platform.\nEverywhere creates support even on top of parts of the model."))
 +setting('print_speed',                50, float, 'basic',    _('Speed and Temperature')).setRange(1).setLabel(_("Print speed (mm/s)"), _("Speed at which printing happens. A well adjusted 3D printer can reach high speeds. However, for high quality prints slower speeds are required. Printing speed depends on a lot of factors. You will be experimenting with optimal settings for this."))
 +setting('print_temperature',         220, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("Printing temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA 205C is recommended.\nFor ABS and HIPS 240C is recommended."))
 +setting('print_temperature2',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("2nd nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA 205C is recommended.\nFor ABS and HIPS 240C is recommended."))
 +setting('print_temperature3',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("3th nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA 205C is recommended.\nFor ABS and HIPS 240C is recommended."))
 +setting('print_temperature4',          0, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("4th nozzle temperature (C)"), _("Temperature used for printing. Set at 0 to pre-heat yourself.\nFor PLA 205C is recommended.\nFor ABS and HIPS 240C is recommended."))
 +setting('print_bed_temperature',      70, int,   'basic',    _('Speed and Temperature')).setRange(0,340).setLabel(_("Bed temperature (C)"), _("Temperature used for the heated printer bed. Set at 0 to pre-heat yourself.\nFor PLA 60C is recommended.\nFor ABS and HIPS 110C is recommended."))
- setting('support',                'None', [_('None'), _('Touching buildplate'), _('Everywhere')], 'basic', _('Support')).setExpertSubCategory('Support').setLabel(_("Support type"), _("Type of support structure build.\n\"Support is useful when a model has severe over hangs. Using this option does require some finishing of the print, including removing the support material.\n\"Touching buildplate\" is the most commonly used support setting.\n\nNone does not do any support.\nTouching buildplate only creates support where the support structure will touch the build platform.\nEverywhere creates support even on top of parts of the model."))
- setting('platform_adhesion',      'None', [_('None'), _('Brim'), _('Raft')], 'basic', _('Support')).setExpertSubCategory(['Skirt', 'Brim', 'Raft']).setLabel(_("Platform adhesion type"), _("Different options that help in preventing corners from lifting due to warping.\nBrim adds a single layer thick flat area around your object which is easy to cut off afterwards, and it is the recommended option.\nRaft adds a thick raster below the object and a thin interface between this and your object.\n(Note that enabling the brim or raft disables the skirt)"))
++setting('support',                'None', [_('None'), _('Touching buildplate'), _('Everywhere')], 'basic', _('Support')).setExpertSubCategory(_('Support')).setLabel(_("Support type"), _("Type of support structure build.\n\"Support is useful when a model has severe over hangs. Using this option does require some finishing of the print, including removing the support material.\n\"Touching buildplate\" is the most commonly used support setting.\n\nNone does not do any support.\nTouching buildplate only creates support where the support structure will touch the build platform.\nEverywhere creates support even on top of parts of the model."))
+ setting('platform_adhesion',      'None', [_('None'), _('Brim'), _('Raft')], 'basic', _('Support')).setExpertSubCategory([_('Skirt'), _('Brim'), _('Raft')]).setLabel(_("Platform adhesion type"), _("Different options that help in preventing corners from lifting due to warping.\nBrim adds a single layer thick flat area around your object which is easy to cut off afterwards, and it is the recommended option.\nRaft adds a thick raster below the object and a thin interface between this and your object.\n(Note that enabling the brim or raft disables the skirt)"))
  setting('support_dual_extrusion',  'Both', [_('Both'), _('First extruder'), _('Second extruder')], 'basic', _('Support')).setLabel(_("Support dual extrusion"), _("Which extruder to use for support material, for break-away support you can use both extruders.\nBut if one of the materials is more expensive then the other you could select an extruder to use for support material. This causes more extruder switches.\nYou can also use the 2nd extruder for soluble support materials."))
  setting('wipe_tower',              False, bool,  'basic',    _('Dual extrusion')).setLabel(_("Wipe&prime tower"), _("The wipe-tower is a tower printed on every layer when switching between nozzles.\nThe old nozzle is wiped off on the tower before the new nozzle is used to print the 2nd color."))
  setting('wipe_tower_volume',          15, float, 'expert',   _('Dual extrusion')).setLabel(_("Wipe&prime tower volume per layer (mm3)"), _("The amount of material put in the wipe/prime tower.\nThis is done in volume because in general you want to extrude a\ncertain amount of volume to get the extruder going, independent on the layer height.\nThis means that with thinner layers, your tower gets bigger."))
@@@ -217,7 -217,7 +217,7 @@@ setting('solidarea_speed',           0.
  setting('inset0_speed',              0.0, float, 'advanced', _('Speed')).setRange(0.0).setLabel(_("Outer shell speed (mm/s)"), _("Speed at which outer shell is printed. If set to 0 then the print speed is used. Printing the outer shell at a lower speed improves the final skin quality. However, having a large difference between the inner shell speed and the outer shell speed will effect quality in a negative way."))
  setting('insetx_speed',              0.0, float, 'advanced', _('Speed')).setRange(0.0).setLabel(_("Inner shell speed (mm/s)"), _("Speed at which inner shells are printed. If set to 0 then the print speed is used. Printing the inner shell faster then the outer shell will reduce printing time. It is good to set this somewhere in between the outer shell speed and the infill/printing speed."))
  setting('cool_min_layer_time',         5, float, 'advanced', _('Cool')).setRange(0).setLabel(_("Minimal layer time (sec)"), _("Minimum time spent in a layer, gives the layer time to cool down before the next layer is put on top. If the layer will be placed down too fast the printer will slow down to make sure it has spent at least this amount of seconds printing this layer."))
- setting('fan_enabled',              True, bool,  'advanced', _('Cool')).setExpertSubCategory('Cool').setLabel(_("Enable cooling fan"), _("Enable the cooling fan during the print. The extra cooling from the cooling fan is essential during faster prints and with PLA."))
 -setting('fan_enabled',              True, bool,  'advanced', _('Cool')).setExpertSubCategory(_('Cool')).setLabel(_("Enable cooling fan"), _("Enable the cooling fan during the print. The extra cooling from the cooling fan is essential during faster prints."))
++setting('fan_enabled',              True, bool,  'advanced', _('Cool')).setExpertSubCategory(_('Cool')).setLabel(_("Enable cooling fan"), _("Enable the cooling fan during the print. The extra cooling from the cooling fan is essential during faster prints and with PLA."))
  
  setting('skirt_line_count',            1, int,   'expert', _('Skirt')).setRange(0).setLabel(_("Line count"), _("The skirt is a line drawn around the object at the first layer. This helps to prime your extruder, and to see if the object fits on your platform.\nSetting this to 0 will disable the skirt. Multiple skirt lines can help priming your extruder better for small objects."))
  setting('skirt_gap',                 3.0, float, 'expert', _('Skirt')).setRange(0).setLabel(_("Start distance (mm)"), _("The distance between the skirt and the first layer.\nThis is the minimal distance, multiple skirt lines will be put outwards from this distance."))
@@@ -479,8 -477,10 +479,10 @@@ setting('postSwitchExtruder.gcode', """
  """, str, 'alteration', 'alteration')
  
  setting('startMode', 'Simple', ['Simple', 'Normal'], 'preference', 'hidden')
+ setting('simpleModeProfile', '2_normal', str, 'preference', 'hidden')
+ setting('simpleModeMaterial', '1_pla', str, 'preference', 'hidden')
  setting('oneAtATime', 'True', bool, 'preference', 'hidden')
 -setting('lastFile', os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'resources', 'example', 'UltimakerRobot_support.stl')), str, 'preference', 'hidden')
 +setting('lastFile', os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'resources', 'example', 'Rocktopus.stl')), str, 'preference', 'hidden')
  setting('save_profile', 'False', bool, 'preference', 'hidden').setLabel(_("Save profile on slice"), _("When slicing save the profile as [stl_file]_profile.ini next to the model."))
  setting('filament_cost_kg', '0', float, 'preference', 'hidden').setLabel(_("Cost (price/kg)"), _("Cost of your filament per kg, to estimate the cost of the final print."))
  setting('filament_cost_meter', '0', float, 'preference', 'hidden').setLabel(_("Cost (price/m)"), _("Cost of your filament per meter, to estimate the cost of the final print."))
index 2a9e8eeb109d6ec443ade17764d59b48229cb989,305cc4b174035c8dfc0f48b91a940f39f5572d6c..02141fbf7a767be8f85eaa3ddfb04062b4e23020
@@@ -52,27 -49,23 +52,29 @@@ def getDefaultMachineProfiles()
        path = os.path.normpath(os.path.join(resourceBasePath, 'machine_profiles', '*.ini'))
        return glob.glob(path)
  
-                       return sorted(glob.glob(os.path.join(path, '*.ini')))
 +def getSimpleModeIniFiles(subdir):
 +      machine_type = profile.getMachineSetting('machine_type')
 +      paths = []
 +      paths.append(os.path.normpath(os.path.expanduser(os.path.join('~', '.Cura', 'quickprint', machine_type, subdir))))
 +      paths.append(os.path.normpath(os.path.expanduser(os.path.join('~', '.Cura', 'quickprint', subdir))))
 +      paths.append(os.path.normpath(os.path.join(resourceBasePath, 'quickprint', machine_type, subdir)))
 +      paths.append(os.path.normpath(os.path.join(resourceBasePath, 'quickprint', subdir)))
 +      for path in paths:
 +              if os.path.isdir(path):
++                      files = sorted(glob.glob(os.path.join(path, '*.ini')))
++                      if len(files) > 0:
++                              return files
 +      return []
 +
 +
  def getSimpleModeProfiles():
 -      path = os.path.normpath(os.path.join(resourceBasePath, 'quickprint', 'profiles', '*.ini'))
 -      user_path = os.path.normpath(os.path.expanduser(os.path.join('~', '.Cura', 'quickprint', 'profiles')))
 -      if os.path.isdir(user_path):
 -              files = sorted(glob.glob(os.path.join(user_path, '*.ini')))
 -              if len(files) > 0:
 -                      return files
 -      return sorted(glob.glob(path))
 +      return getSimpleModeIniFiles('profiles')
  
  def getSimpleModeMaterials():
 -      path = os.path.normpath(os.path.join(resourceBasePath, 'quickprint', 'materials', '*.ini'))
 -      user_path = os.path.normpath(os.path.expanduser(os.path.join('~', '.Cura', 'quickprint', 'materials')))
 -      if os.path.isdir(user_path):
 -              files = sorted(glob.glob(os.path.join(user_path, '*.ini')))
 -              if len(files) > 0:
 -                      return files
 -      return sorted(glob.glob(path))
 +      return getSimpleModeIniFiles('materials')
 +
 +def getSimpleModeOptions():
 +      return getSimpleModeIniFiles('options')
  
  def setupLocalization(selectedLanguage = None):
        #Default to english
diff --cc package.sh
index b647b3e7cc50c69070167d9fc6d6f53d78b5ec14,7a3e1f836191146eeb5702308f2fad8c02bfe9e6..7330f7ac6e94e92f73a0360ef18b4c692481276e
@@@ -19,15 -19,9 +19,15 @@@ BUILD_TARGET=${1:-none
  ##Do we need to create the final archive
  ARCHIVE_FOR_DISTRIBUTION=1
  ##Which version name are we appending to the final archive
- export BUILD_NAME=15.01-RC5
+ export BUILD_NAME=15.01-RC6
  TARGET_DIR=Cura-${BUILD_NAME}-${BUILD_TARGET}
  
 +##Revision
 +export REVISION=1.19
 +
 +##Git commit
 +GIT_HASH=$(git rev-parse --short=4 HEAD)
 +
  ##Which versions of external programs to use
  WIN_PORTABLE_PY_VERSION=2.7.2.1
  
index a3c072f44b018eb00c9974a45454c28d29cc83f3,f969844f8a6bcc694d701bd28f99eb56401bd462..bf813c3fe27bb86628a13da10db86c552959e735
mode 100755,100644..100644
@@@ -1,12 -1,11 +1,12 @@@
 +Source: cura
  Package: cura
- Version: 14.09-1.19
+ Version: [BUILD_NAME]
 +Maintainer: Aleph Objects, Inc. <info@alephobjects.com>
  Section: misc
  Priority: optional
- Architecture: amd64
+ Architecture: [ARCH]
  Essential: no
  Depends: python-wxgtk2.8, python-opengl, python-serial, python-numpy
 -Maintainer: Daid <daid303@gmail.com>
  Provides: cura
  Installed-Size: 10000
  Description: Cura is a full software solution for 3D printing,