Merge branch 'master' into CURA-4447_UPDATE_INSTANCE_CONTAINER

This commit is contained in:
ChrisTerBeke 2017-10-20 11:34:45 +02:00
commit e24242dc3c
19 changed files with 87 additions and 41 deletions

View File

@ -10,6 +10,6 @@ TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura
Icon=cura-icon Icon=cura-icon
Terminal=false Terminal=false
Type=Application Type=Application
MimeType=application/sla;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png; MimeType=application/sla;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;model/x3d+xml;
Categories=Graphics; Categories=Graphics;
Keywords=3D;Printing; Keywords=3D;Printing;

View File

@ -62,7 +62,7 @@ class CuraSplashScreen(QSplashScreen):
painter.setFont(font) painter.setFont(font)
painter.drawText(215, 66, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0]) painter.drawText(215, 66, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0])
if len(version) > 1: if len(version) > 1:
font.setPointSize(12) font.setPixelSize(16)
painter.setFont(font) painter.setFont(font)
painter.setPen(QColor(200, 200, 200, 255)) painter.setPen(QColor(200, 200, 200, 255))
painter.drawText(247, 105, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) painter.drawText(247, 105, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1])

View File

@ -12,11 +12,14 @@ class SimpleModeSettingsManager(QObject):
super().__init__(parent) super().__init__(parent)
self._machine_manager = Application.getInstance().getMachineManager() self._machine_manager = Application.getInstance().getMachineManager()
self._is_profile_customized = False self._is_profile_customized = False # True when default profile has user changes
self._is_profile_user_created = False # True when profile was custom created by user
self._machine_manager.activeStackValueChanged.connect(self._updateIsProfileCustomized) self._machine_manager.activeStackValueChanged.connect(self._updateIsProfileCustomized)
self._machine_manager.activeQualityChanged.connect(self._updateIsProfileUserCreated)
isProfileCustomizedChanged = pyqtSignal() isProfileCustomizedChanged = pyqtSignal()
isProfileUserCreatedChanged = pyqtSignal()
@pyqtProperty(bool, notify = isProfileCustomizedChanged) @pyqtProperty(bool, notify = isProfileCustomizedChanged)
def isProfileCustomized(self): def isProfileCustomized(self):
@ -32,11 +35,13 @@ class SimpleModeSettingsManager(QObject):
# check user settings in the global stack # check user settings in the global stack
user_setting_keys.update(set(global_stack.userChanges.getAllKeys())) user_setting_keys.update(set(global_stack.userChanges.getAllKeys()))
# check user settings in the extruder stacks # check user settings in the extruder stacks
if global_stack.extruders: if global_stack.extruders:
for extruder_stack in global_stack.extruders.values(): for extruder_stack in global_stack.extruders.values():
user_setting_keys.update(set(extruder_stack.userChanges.getAllKeys())) user_setting_keys.update(set(extruder_stack.userChanges.getAllKeys()))
# remove settings that are visible in recommended (we don't show the reset button for those)
for skip_key in self.__ignored_custom_setting_keys: for skip_key in self.__ignored_custom_setting_keys:
if skip_key in user_setting_keys: if skip_key in user_setting_keys:
user_setting_keys.remove(skip_key) user_setting_keys.remove(skip_key)
@ -47,6 +52,33 @@ class SimpleModeSettingsManager(QObject):
self._is_profile_customized = has_customized_user_settings self._is_profile_customized = has_customized_user_settings
self.isProfileCustomizedChanged.emit() self.isProfileCustomizedChanged.emit()
@pyqtProperty(bool, notify = isProfileUserCreatedChanged)
def isProfileUserCreated(self):
return self._is_profile_user_created
def _updateIsProfileUserCreated(self):
quality_changes_keys = set()
if not self._machine_manager.activeMachine:
return False
global_stack = self._machine_manager.activeMachine
# check quality changes settings in the global stack
quality_changes_keys.update(set(global_stack.qualityChanges.getAllKeys()))
# check quality changes settings in the extruder stacks
if global_stack.extruders:
for extruder_stack in global_stack.extruders.values():
quality_changes_keys.update(set(extruder_stack.qualityChanges.getAllKeys()))
# check if the qualityChanges container is not empty (meaning it is a user created profile)
has_quality_changes = len(quality_changes_keys) > 0
if has_quality_changes != self._is_profile_user_created:
self._is_profile_user_created = has_quality_changes
self.isProfileUserCreatedChanged.emit()
# These are the settings included in the Simple ("Recommended") Mode, so only when the other settings have been # These are the settings included in the Simple ("Recommended") Mode, so only when the other settings have been
# changed, we consider it as a user customized profile in the Simple ("Recommended") Mode. # changed, we consider it as a user customized profile in the Simple ("Recommended") Mode.
__ignored_custom_setting_keys = ["support_enable", __ignored_custom_setting_keys = ["support_enable",

View File

@ -26,7 +26,7 @@ class PluginBrowser(QObject, Extension):
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent) super().__init__(parent)
self._api_version = 1 self._api_version = 2
self._api_url = "http://software.ultimaker.com/cura/v%s/" % self._api_version self._api_url = "http://software.ultimaker.com/cura/v%s/" % self._api_version
self._plugin_list_request = None self._plugin_list_request = None

View File

@ -509,8 +509,6 @@ class XmlMaterialProfile(InstanceContainer):
elif key in self.__unmapped_settings: elif key in self.__unmapped_settings:
if key == "hardware compatible": if key == "hardware compatible":
common_compatibility = self._parseCompatibleValue(entry.text) common_compatibility = self._parseCompatibleValue(entry.text)
else:
Logger.log("d", "Unsupported material setting %s", key)
self._cached_values = common_setting_values # from InstanceContainer ancestor self._cached_values = common_setting_values # from InstanceContainer ancestor
meta_data["compatible"] = common_compatibility meta_data["compatible"] = common_compatibility
@ -676,7 +674,9 @@ class XmlMaterialProfile(InstanceContainer):
"processing temperature graph": "material_flow_temp_graph", "processing temperature graph": "material_flow_temp_graph",
"print cooling": "cool_fan_speed", "print cooling": "cool_fan_speed",
"retraction amount": "retraction_amount", "retraction amount": "retraction_amount",
"retraction speed": "retraction_speed" "retraction speed": "retraction_speed",
"adhesion tendency": "material_adhesion_tendency",
"surface energy": "material_surface_energy"
} }
__unmapped_settings = [ __unmapped_settings = [
"hardware compatible" "hardware compatible"

View File

@ -7,7 +7,8 @@
"visible": true, "visible": true,
"author": "Michael Wildermuth", "author": "Michael Wildermuth",
"manufacturer": "Creality3D", "manufacturer": "Creality3D",
"file_formats": "text/x-gcode" "file_formats": "text/x-gcode",
"preferred_quality": "*Draft*"
}, },
"overrides": { "overrides": {
"machine_width": { "machine_width": {
@ -25,9 +26,6 @@
"machine_nozzle_size": { "machine_nozzle_size": {
"default_value": 0.4 "default_value": 0.4
}, },
"layer_height": {
"default_value": 0.2
},
"layer_height_0": { "layer_height_0": {
"default_value": 0.2 "default_value": 0.2
}, },

0
resources/definitions/dagoma_discoeasy200.def.json Executable file → Normal file
View File

37
resources/definitions/fdmprinter.def.json Executable file → Normal file
View File

@ -643,6 +643,20 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false
}, },
"slicing_tolerance":
{
"label": "Slicing Tolerance",
"description": "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process.",
"type": "enum",
"options":
{
"middle": "Middle",
"exclusive": "Exclusive",
"inclusive": "Inclusive"
},
"default_value": "middle",
"settable_per_mesh": true
},
"line_width": "line_width":
{ {
"label": "Line Width", "label": "Line Width",
@ -1850,6 +1864,29 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"material_adhesion_tendency":
{
"label": "Adhesion Tendency",
"description": "Surface adhesion tendency.",
"type": "int",
"default_value": 10,
"minimum_value": "0",
"maximum_value": "10",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_surface_energy":
{
"label": "Surface Energy",
"description": "Surface energy.",
"unit": "%",
"type": "int",
"default_value": 100,
"minimum_value": "0",
"maximum_value": "100",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_flow": "material_flow":
{ {
"label": "Flow", "label": "Flow",

0
resources/definitions/helloBEEprusa.def.json Executable file → Normal file
View File

0
resources/extruders/hBp_extruder_left.def.json Executable file → Normal file
View File

0
resources/extruders/hBp_extruder_right.def.json Executable file → Normal file
View File

0
resources/meshes/BEEVERYCREATIVE-helloBEEprusa.stl Executable file → Normal file
View File

0
resources/qml/Actions.qml Executable file → Normal file
View File

0
resources/qml/Cura.qml Executable file → Normal file
View File

0
resources/qml/Menus/ContextMenu.qml Executable file → Normal file
View File

0
resources/qml/Preferences/GeneralPage.qml Executable file → Normal file
View File

0
resources/qml/Sidebar.qml Executable file → Normal file
View File

View File

@ -34,20 +34,6 @@ Column
width: height width: height
} }
Item
{
anchors
{
left: parent.left
leftMargin: UM.Theme.getSize("sidebar_margin").width
right: parent.right
rightMargin: UM.Theme.getSize("sidebar_margin").width
}
visible: extruderSelectionRow.visible
height: UM.Theme.getSize("default_lining").hieght
width: height
}
Item Item
{ {
id: extruderSelectionRow id: extruderSelectionRow
@ -291,10 +277,10 @@ Column
} }
} }
// Print core row //Variant row
Item Item
{ {
id: printCoreRow id: variantRow
height: UM.Theme.getSize("sidebar_setup").height height: UM.Theme.getSize("sidebar_setup").height
visible: Cura.MachineManager.hasVariants && !sidebar.monitoringPrint && !sidebar.hideSettings visible: Cura.MachineManager.hasVariants && !sidebar.monitoringPrint && !sidebar.hideSettings
@ -308,7 +294,7 @@ Column
Label Label
{ {
id: printCoreLabel id: variantLabel
text: Cura.MachineManager.activeDefinitionVariantsName; text: Cura.MachineManager.activeDefinitionVariantsName;
width: Math.floor(parent.width * 0.45 - UM.Theme.getSize("default_margin").width) width: Math.floor(parent.width * 0.45 - UM.Theme.getSize("default_margin").width)
font: UM.Theme.getFont("default"); font: UM.Theme.getFont("default");
@ -316,7 +302,7 @@ Column
} }
ToolButton { ToolButton {
id: printCoreSelection id: variantSelection
text: Cura.MachineManager.activeVariantName text: Cura.MachineManager.activeVariantName
tooltip: Cura.MachineManager.activeVariantName; tooltip: Cura.MachineManager.activeVariantName;
visible: Cura.MachineManager.hasVariants visible: Cura.MachineManager.hasVariants

View File

@ -89,14 +89,14 @@ Item
var availableMin = -1 var availableMin = -1
var availableMax = -1 var availableMax = -1
for (var i = 0; i <= Cura.ProfilesModel.rowCount(); i++) { for (var i = 0; i < Cura.ProfilesModel.rowCount(); i++) {
var qualityItem = Cura.ProfilesModel.getItem(i) var qualityItem = Cura.ProfilesModel.getItem(i)
// Add each quality item to the UI quality model // Add each quality item to the UI quality model
qualityModel.append(qualityItem) qualityModel.append(qualityItem)
// Set selected value // Set selected value
if (Cura.MachineManager.activeQualityId == qualityItem.id) { if (Cura.MachineManager.activeQualityType == qualityItem.metadata.quality_type) {
qualityModel.activeQualityIndex = i qualityModel.activeQualityIndex = i
} }
@ -143,14 +143,7 @@ Item
qualityModel.availableTotalTicks = -1 qualityModel.availableTotalTicks = -1
// check, the ticks count cannot be less than zero // check, the ticks count cannot be less than zero
if(Cura.ProfilesModel.rowCount() != 0) qualityModel.totalTicks = Math.max(0, Cura.ProfilesModel.rowCount() - 1)
{
qualityModel.totalTicks = Cura.ProfilesModel.rowCount() - 1 // minus one, because slider starts from 0
}
else
{
qualityModel.totalTicks = 0
}
} }
} }
@ -291,7 +284,7 @@ Item
implicitWidth: 10 * screenScaleFactor implicitWidth: 10 * screenScaleFactor
implicitHeight: implicitWidth implicitHeight: implicitWidth
radius: implicitWidth / 2 radius: implicitWidth / 2
visible: !Cura.SimpleModeSettingsManager.isProfileCustomized; visible: !Cura.SimpleModeSettingsManager.isProfileCustomized && !Cura.SimpleModeSettingsManager.isProfileUserCreated
} }
} }
} }
@ -366,7 +359,7 @@ Item
} }
onEntered: onEntered:
{ {
var content = catalog.i18nc("@tooltip","You have selected a custom profile. If you want to change it, go to custom mode.") var content = catalog.i18nc("@tooltip","You have modified some profile settings. If you want to change these go to custom mode.")
base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, customisedSettings.height), content) base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, customisedSettings.height), content)
} }
onExited: base.hideTooltip() onExited: base.hideTooltip()