diff --git a/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py b/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py
index 60ffe477bc..f4f9c0081d 100644
--- a/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py
+++ b/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py
@@ -259,22 +259,26 @@ class UM3OutputDevicePlugin(OutputDevicePlugin):
def _onNetworkRequestFinished(self, reply: "QNetworkReply") -> None:
reply_url = reply.url().toString()
- address = ""
+ address = reply.url().host()
device = None
properties = {} # type: Dict[bytes, bytes]
- if "system" in reply_url:
- if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200:
- # Something went wrong with checking the firmware version!
- return
+ if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200:
+ # Either:
+ # - Something went wrong with checking the firmware version!
+ # - Something went wrong with checking the amount of printers the cluster has!
+ # - Couldn't find printer at the address when trying to add it manually.
+ if address in self._manual_instances:
+ self.removeManualDeviceSignal.emit(self.getPluginId(), "", address)
+ return
+ if "system" in reply_url:
try:
system_info = json.loads(bytes(reply.readAll()).decode("utf-8"))
except:
Logger.log("e", "Something went wrong converting the JSON.")
return
- address = reply.url().host()
has_cluster_capable_firmware = Version(system_info["firmware"]) > self._min_cluster_version
instance_name = "manual:%s" % address
properties = {
@@ -302,16 +306,12 @@ class UM3OutputDevicePlugin(OutputDevicePlugin):
self._network_manager.get(cluster_request)
elif "printers" in reply_url:
- if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200:
- # Something went wrong with checking the amount of printers the cluster has!
- return
# So we confirmed that the device is in fact a cluster printer, and we should now know how big it is.
try:
cluster_printers_list = json.loads(bytes(reply.readAll()).decode("utf-8"))
except:
Logger.log("e", "Something went wrong converting the JSON.")
return
- address = reply.url().host()
instance_name = "manual:%s" % address
if instance_name in self._discovered_devices:
device = self._discovered_devices[instance_name]
diff --git a/resources/qml/WelcomePages/AddPrinterByIpContent.qml b/resources/qml/WelcomePages/AddPrinterByIpContent.qml
index 22fa703906..a0b0e3c2cd 100644
--- a/resources/qml/WelcomePages/AddPrinterByIpContent.qml
+++ b/resources/qml/WelcomePages/AddPrinterByIpContent.qml
@@ -22,6 +22,8 @@ Item
property bool hasSentRequest: false
// Whether the IP address user entered can be resolved as a recognizable printer.
property bool haveConnection: false
+ // True when a request comes back, but the device hasn't responded.
+ property bool deviceUnresponsive: false
Label
{
@@ -77,12 +79,14 @@ Item
anchors.right: addPrinterButton.left
anchors.margins: UM.Theme.getSize("default_margin").width
font: UM.Theme.getFont("default")
+ selectByMouse: true
validator: RegExpValidator
{
regExp: /[a-fA-F0-9\.\:]*/
}
+ enabled: { ! (addPrinterByIpScreen.hasSentRequest || addPrinterByIpScreen.haveConnection) }
onAccepted: addPrinterButton.clicked()
}
@@ -101,6 +105,7 @@ Item
if (hostnameField.text.trim() != "")
{
enabled = false;
+ addPrinterByIpScreen.deviceUnresponsive = false;
UM.OutputDeviceManager.addManualDevice(hostnameField.text, hostnameField.text);
}
}
@@ -115,6 +120,12 @@ Item
! addPrinterByIpScreen.haveConnection
}
}
+
+ Connections
+ {
+ target: UM.OutputDeviceManager
+ onManualDeviceChanged: { addPrinterButton.enabled = ! UM.OutputDeviceManager.hasManualDevice }
+ }
}
}
@@ -131,8 +142,22 @@ Item
anchors.margins: UM.Theme.getSize("default_margin").width
font: UM.Theme.getFont("default")
- visible: { addPrinterByIpScreen.hasSentRequest && ! addPrinterByIpScreen.haveConnection }
- text: catalog.i18nc("@label", "The printer at this address has not responded yet.")
+ visible:
+ {
+ (addPrinterByIpScreen.hasSentRequest && ! addPrinterByIpScreen.haveConnection)
+ || addPrinterByIpScreen.deviceUnresponsive
+ }
+ text:
+ {
+ if (addPrinterByIpScreen.deviceUnresponsive)
+ {
+ catalog.i18nc("@label", "Could not connect to device.")
+ }
+ else
+ {
+ catalog.i18nc("@label", "The printer at this address has not responded yet.")
+ }
+ }
}
Item
@@ -141,7 +166,7 @@ Item
anchors.top: parent.top
anchors.margins: UM.Theme.getSize("default_margin").width
- visible: addPrinterByIpScreen.haveConnection
+ visible: addPrinterByIpScreen.haveConnection && ! addPrinterByIpScreen.deviceUnresponsive
Label
{
@@ -174,9 +199,18 @@ Item
target: UM.OutputDeviceManager
onManualDeviceChanged:
{
- typeText.text = UM.OutputDeviceManager.manualDeviceProperty("printer_type")
- firmwareText.text = UM.OutputDeviceManager.manualDeviceProperty("firmware_version")
- addressText.text = UM.OutputDeviceManager.manualDeviceProperty("address")
+ if (UM.OutputDeviceManager.hasManualDevice)
+ {
+ typeText.text = UM.OutputDeviceManager.manualDeviceProperty("printer_type")
+ firmwareText.text = UM.OutputDeviceManager.manualDeviceProperty("firmware_version")
+ addressText.text = UM.OutputDeviceManager.manualDeviceProperty("address")
+ }
+ else
+ {
+ typeText.text = ""
+ firmwareText.text = ""
+ addressText.text = ""
+ }
}
}
}
@@ -186,8 +220,17 @@ Item
target: UM.OutputDeviceManager
onManualDeviceChanged:
{
- printerNameLabel.text = UM.OutputDeviceManager.manualDeviceProperty("name")
- addPrinterByIpScreen.haveConnection = true
+ if (UM.OutputDeviceManager.hasManualDevice)
+ {
+ printerNameLabel.text = UM.OutputDeviceManager.manualDeviceProperty("name")
+ addPrinterByIpScreen.haveConnection = true
+ }
+ else
+ {
+ addPrinterByIpScreen.hasSentRequest = false
+ addPrinterByIpScreen.haveConnection = false
+ addPrinterByIpScreen.deviceUnresponsive = true
+ }
}
}
}
diff --git a/resources/qml/WelcomePages/CloudContent.qml b/resources/qml/WelcomePages/CloudContent.qml
index 31b22e4b1f..6c0a7ae53e 100644
--- a/resources/qml/WelcomePages/CloudContent.qml
+++ b/resources/qml/WelcomePages/CloudContent.qml
@@ -120,18 +120,24 @@ Item
onClicked: Qt.openUrlExternally(CuraApplication.ultimakerCloudAccountRootUrl + "/app/create")
}
- Cura.SecondaryButton
+ Label
{
id: signInButton
anchors.left: createAccountButton.right
anchors.verticalCenter: finishButton.verticalCenter
+ anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
text: catalog.i18nc("@button", "Sign in")
- width: UM.Theme.getSize("welcome_pages_button").width
- shadowEnabled: false
- color: "transparent"
- hoverColor: "transparent"
- textHoverColor: UM.Theme.getColor("primary")
- fixedWidthMode: true
- onClicked: Cura.API.account.login()
+ color: UM.Theme.getColor("secondary_button_text")
+ font: UM.Theme.getFont("medium")
+ renderType: Text.NativeRendering
+
+ MouseArea
+ {
+ anchors.fill: parent
+ hoverEnabled: true
+ onClicked: Cura.API.account.login()
+ onEntered: parent.font.underline = true
+ onExited: parent.font.underline = false
+ }
}
}
diff --git a/resources/qml/WelcomePages/DataCollectionsContent.qml b/resources/qml/WelcomePages/DataCollectionsContent.qml
index 5c9e573511..9c5ed3820f 100644
--- a/resources/qml/WelcomePages/DataCollectionsContent.qml
+++ b/resources/qml/WelcomePages/DataCollectionsContent.qml
@@ -28,30 +28,39 @@ Item
renderType: Text.NativeRendering
}
- Column
+ // Area where the cloud contents can be put. Pictures, texts and such.
+ Item
{
+ id: contentsArea
anchors.top: titleLabel.bottom
- anchors.topMargin: 80
- anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: getStartedButton.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: UM.Theme.getSize("default_margin").width
- spacing: 60
-
- Image
+ Column
{
- id: curaImage
- anchors.horizontalCenter: parent.horizontalCenter
- source: UM.Theme.getImage("first_run_share_data")
- }
+ anchors.centerIn: parent
- Label
- {
- id: textLabel
- anchors.horizontalCenter: parent.horizontalCenter
- horizontalAlignment: Text.AlignHCenter
- text: catalog.i18nc("@text", "Ultimaker Cura collects anonymous data to improve print quality
and user experience. More information")
- textFormat: Text.RichText
- font: UM.Theme.getFont("medium")
- renderType: Text.NativeRendering
+ spacing: UM.Theme.getSize("welcome_pages_default_margin").height
+
+ Image
+ {
+ id: curaImage
+ anchors.horizontalCenter: parent.horizontalCenter
+ source: UM.Theme.getImage("first_run_share_data")
+ }
+
+ Label
+ {
+ id: textLabel
+ anchors.horizontalCenter: parent.horizontalCenter
+ horizontalAlignment: Text.AlignHCenter
+ text: catalog.i18nc("@text", "Ultimaker Cura collects anonymous data to improve print quality
and user experience. More information")
+ textFormat: Text.RichText
+ font: UM.Theme.getFont("medium")
+ renderType: Text.NativeRendering
+ }
}
}
diff --git a/resources/qml/WelcomePages/DropDownWidget.qml b/resources/qml/WelcomePages/DropDownWidget.qml
index 43f92218fc..9f413769e0 100644
--- a/resources/qml/WelcomePages/DropDownWidget.qml
+++ b/resources/qml/WelcomePages/DropDownWidget.qml
@@ -74,7 +74,9 @@ Item
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
- anchors.margins: 1
+ // Keep a small margin with the Rectangle container so its content will not overlap with the Rectangle
+ // border.
+ anchors.margins: UM.Theme.getSize("default_lining").width
sourceComponent: base.contentComponent != null ? base.contentComponent : emptyComponent
}
diff --git a/resources/qml/WelcomePages/StepPanel.qml b/resources/qml/WelcomePages/StepPanel.qml
index 5623034621..e3ae0cd17c 100644
--- a/resources/qml/WelcomePages/StepPanel.qml
+++ b/resources/qml/WelcomePages/StepPanel.qml
@@ -39,7 +39,8 @@ Item
{
currentStep++
}
- else {
+ else
+ {
passLastPage()
}
}
@@ -69,10 +70,6 @@ Item
{
currentStep = page_index
}
- else
- {
- console.log("Error: cannot find page with page_id = [", page_id, "]")
- }
}
onVisibleChanged:
diff --git a/resources/qml/WelcomePages/UserAgreementContent.qml b/resources/qml/WelcomePages/UserAgreementContent.qml
index f42b55730a..2f4b2a0290 100644
--- a/resources/qml/WelcomePages/UserAgreementContent.qml
+++ b/resources/qml/WelcomePages/UserAgreementContent.qml
@@ -12,36 +12,37 @@ import Cura 1.1 as Cura
//
Item
{
- Column
+ UM.I18nCatalog { id: catalog; name: "cura" }
+
+ Label
{
+ id: titleLabel
anchors.top: parent.top
+ anchors.topMargin: UM.Theme.getSize("welcome_pages_default_margin").height
+ anchors.horizontalCenter: parent.horizontalCenter
+ horizontalAlignment: Text.AlignHCenter
+ text: catalog.i18nc("@label", "User Agreement")
+ color: UM.Theme.getColor("primary_button")
+ font: UM.Theme.getFont("large_bold")
+ renderType: Text.NativeRendering
+ }
+
+ Item // Area for pictures and texts
+ {
+ anchors.top: titleLabel.bottom
+ anchors.bottom: agreeButton.top
anchors.left: parent.left
anchors.right: parent.right
- anchors.margins: 20
-
- UM.I18nCatalog { id: catalog; name: "cura" }
-
- spacing: 40
-
- // Placeholder
- Label { text: " " }
+ anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
Label
{
- id: titleLabel
- anchors.horizontalCenter: parent.horizontalCenter
- horizontalAlignment: Text.AlignHCenter
- text: catalog.i18nc("@label", "User Agreement")
- color: UM.Theme.getColor("primary_button")
- font: UM.Theme.getFont("large_bold")
- renderType: Text.NativeRendering
- }
-
- Label
- {
- width: parent.width * 2 / 3
id: disclaimerLineLabel
- anchors.horizontalCenter: parent.horizontalCenter
+ anchors.centerIn: parent
+ anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
+
+ width: (parent.width * 2 / 3) | 0
+
text: "
Disclaimer by Ultimaker
" + "Please read this disclaimer carefully.
" + "Except when otherwise stated in writing, Ultimaker provides any Ultimaker software or third party software \"As is\" without warranty of any kind. The entire risk as to the quality and perfoemance of Ultimaker software is with you.
" diff --git a/resources/qml/WelcomePages/WelcomeContent.qml b/resources/qml/WelcomePages/WelcomeContent.qml index 272c7bda47..ed56dd36fd 100644 --- a/resources/qml/WelcomePages/WelcomeContent.qml +++ b/resources/qml/WelcomePages/WelcomeContent.qml @@ -11,30 +11,28 @@ import Cura 1.1 as Cura // // This component contains the content for the "Welcome" page of the welcome on-boarding process. // -Column +Item { UM.I18nCatalog { id: catalog; name: "cura" } - spacing: 60 + anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width - // Placeholder - Label { text: " " } - - Label + Column // Arrange the items vertically and put everything in the center { - id: titleLabel - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - text: catalog.i18nc("@label", "Welcome to Ultimaker Cura") - color: UM.Theme.getColor("primary_button") - font: UM.Theme.getFont("large_bold") - renderType: Text.NativeRendering - } + anchors.centerIn: parent + width: parent.width + spacing: UM.Theme.getSize("welcome_pages_default_margin").height - Column - { - anchors.horizontalCenter: parent.horizontalCenter - spacing: 40 + Label + { + id: titleLabel + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@label", "Welcome to Ultimaker Cura") + color: UM.Theme.getColor("primary_button") + font: UM.Theme.getFont("large_bold") + renderType: Text.NativeRendering + } Image { @@ -52,15 +50,16 @@ Column font: UM.Theme.getFont("medium") renderType: Text.NativeRendering } - } - Cura.PrimaryButton - { - id: getStartedButton - anchors.horizontalCenter: parent.horizontalCenter - text: catalog.i18nc("@button", "Get started") - width: UM.Theme.getSize("welcome_pages_button").width - fixedWidthMode: true - onClicked: base.showNextPage() + Cura.PrimaryButton + { + id: getStartedButton + anchors.horizontalCenter: parent.horizontalCenter + anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width + text: catalog.i18nc("@button", "Get started") + width: UM.Theme.getSize("welcome_pages_button").width + fixedWidthMode: true + onClicked: base.showNextPage() + } } } diff --git a/resources/qml/WelcomePages/WhatsNewContent.qml b/resources/qml/WelcomePages/WhatsNewContent.qml index 4b2698bfa1..7e7b3b8261 100644 --- a/resources/qml/WelcomePages/WhatsNewContent.qml +++ b/resources/qml/WelcomePages/WhatsNewContent.qml @@ -32,8 +32,8 @@ Item { anchors.top: titleLabel.bottom anchors.bottom: getStartedButton.top - anchors.topMargin: 40 - anchors.bottomMargin: 40 + anchors.topMargin: UM.Theme.getSize("welcome_pages_default_margin").height + anchors.bottomMargin: UM.Theme.getSize("welcome_pages_default_margin").height anchors.horizontalCenter: parent.horizontalCenter width: parent.width * 3 / 4