From 5ae5dfd3ad3c954762b25d2ebf92326037cfaef8 Mon Sep 17 00:00:00 2001 From: griehsler Date: Sat, 20 Oct 2018 01:28:48 +0200 Subject: [PATCH 001/137] added x_position and y_position to postprocessing filamentchange parameters --- .../scripts/FilamentChange.py | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/plugins/PostProcessingPlugin/scripts/FilamentChange.py b/plugins/PostProcessingPlugin/scripts/FilamentChange.py index 0fa52de4f1..a39be10ddc 100644 --- a/plugins/PostProcessingPlugin/scripts/FilamentChange.py +++ b/plugins/PostProcessingPlugin/scripts/FilamentChange.py @@ -44,6 +44,22 @@ class FilamentChange(Script): "unit": "mm", "type": "float", "default_value": 300.0 + }, + "x_position": + { + "label": "X Position", + "description": "Extruder X position. The print head will move here for filament change.", + "unit": "mm", + "type": "float", + "default_value": 0 + }, + "y_position": + { + "label": "Y Position", + "description": "Extruder Y position. The print head will move here for filament change.", + "unit": "mm", + "type": "float", + "default_value": 0 } } }""" @@ -54,6 +70,8 @@ class FilamentChange(Script): layer_nums = self.getSettingValueByKey("layer_number") initial_retract = self.getSettingValueByKey("initial_retract") later_retract = self.getSettingValueByKey("later_retract") + x_pos = self.getSettingValueByKey("x_position") + y_pos = self.getSettingValueByKey("y_position") color_change = "M600" @@ -62,7 +80,13 @@ class FilamentChange(Script): if later_retract is not None and later_retract > 0.: color_change = color_change + (" L-%.2f" % later_retract) - + + if x_pos is not None: + color_change = color_change + (" X%.2f" % x_pos) + + if y_pos is not None: + color_change = color_change + (" Y%.2f" % y_pos) + color_change = color_change + " ; Generated by FilamentChange plugin" layer_targets = layer_nums.split(",") From e66875865ff81ee9f32b92e4d1ece33ff13bb8fd Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 13 Nov 2018 16:08:29 +0100 Subject: [PATCH 002/137] Make Cura app name configurable in CuraVersion --- CMakeLists.txt | 1 + cura/CuraApplication.py | 5 +++-- cura/CuraVersion.py.in | 1 + cura_app.py | 11 ++++++++--- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index deb4e63935..be6c9d938e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ if(CURA_DEBUGMODE) set(_cura_debugmode "ON") endif() +set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuration folder") set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura") set(CURA_VERSION "master" CACHE STRING "Version name of Cura") set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'") diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 47cc94f972..bfc2c8bddc 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -128,8 +128,9 @@ if TYPE_CHECKING: numpy.seterr(all = "ignore") try: - from cura.CuraVersion import CuraAppDisplayName, CuraVersion, CuraBuildType, CuraDebugMode, CuraSDKVersion # type: ignore + from cura.CuraVersion import CuraAppName, CuraAppDisplayName, CuraVersion, CuraBuildType, CuraDebugMode, CuraSDKVersion # type: ignore except ImportError: + CuraAppName = "cura" CuraAppDisplayName = "Ultimaker Cura" CuraVersion = "master" # [CodeStyle: Reflecting imported value] CuraBuildType = "" @@ -161,7 +162,7 @@ class CuraApplication(QtApplication): Q_ENUMS(ResourceTypes) def __init__(self, *args, **kwargs): - super().__init__(name = "cura", + super().__init__(name = CuraAppName, app_display_name = CuraAppDisplayName, version = CuraVersion, api_version = CuraSDKVersion, diff --git a/cura/CuraVersion.py.in b/cura/CuraVersion.py.in index 7c6304231d..f4c02ee396 100644 --- a/cura/CuraVersion.py.in +++ b/cura/CuraVersion.py.in @@ -1,6 +1,7 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +CuraAppName = "@CURA_APP_NAME@" CuraAppDisplayName = "@CURA_APP_DISPLAY_NAME@" CuraVersion = "@CURA_VERSION@" CuraBuildType = "@CURA_BUILDTYPE@" diff --git a/cura_app.py b/cura_app.py index 164e32e738..fea47e5a8b 100755 --- a/cura_app.py +++ b/cura_app.py @@ -26,13 +26,18 @@ parser.add_argument("--trigger-early-crash", known_args = vars(parser.parse_known_args()[0]) if not known_args["debug"]: + try: + from cura.CuraVersion import CuraAppName # type: ignore + except ImportError: + CuraAppName = "cura" + def get_cura_dir_path(): if Platform.isWindows(): - return os.path.expanduser("~/AppData/Roaming/cura") + return os.path.expanduser("~/AppData/Roaming/" + CuraAppName) elif Platform.isLinux(): - return os.path.expanduser("~/.local/share/cura") + return os.path.expanduser("~/.local/share/" + CuraAppName) elif Platform.isOSX(): - return os.path.expanduser("~/Library/Logs/cura") + return os.path.expanduser("~/Library/Logs/" + CuraAppName) if hasattr(sys, "frozen"): dirpath = get_cura_dir_path() From 1c54319b646b651c03235030fbdf8411602e45a4 Mon Sep 17 00:00:00 2001 From: Frischid Date: Sat, 17 Nov 2018 21:45:35 +0100 Subject: [PATCH 003/137] Update AutoDetectBaudJob.py Editing the file like this solved my problem connecting to German RepRap Neo --- plugins/USBPrinting/AutoDetectBaudJob.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/USBPrinting/AutoDetectBaudJob.py b/plugins/USBPrinting/AutoDetectBaudJob.py index 8b37c4b29d..9603dcbc2e 100644 --- a/plugins/USBPrinting/AutoDetectBaudJob.py +++ b/plugins/USBPrinting/AutoDetectBaudJob.py @@ -71,9 +71,9 @@ class AutoDetectBaudJob(Job): while timeout_time > time(): line = serial.readline() - if b"ok " in line and b"T:" in line: + if b"ok" in line and b"T:" in line: successful_responses += 1 - if successful_responses >= 3: + if successful_responses >= 1: self.setResult(baud_rate) Logger.log("d", "Detected baud rate {baud_rate} on serial {serial} on retry {retry} with after {time_elapsed:0.2f} seconds.".format( serial = self._serial_port, baud_rate = baud_rate, retry = retry, time_elapsed = time() - start_timeout_time)) From e7b60a529059772be8e70e69bc59a2c82038c726 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 16:29:57 +0100 Subject: [PATCH 004/137] Create GenericPopUp.qml Contributes to CL-1165 --- .../resources/qml/GenericPopUp.qml | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml diff --git a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml new file mode 100644 index 0000000000..442de3cd7a --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml @@ -0,0 +1,202 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.0 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.1 +import QtGraphicalEffects 1.0 +import UM 1.3 as UM + +/** + * This is a generic pop-up element which can be supplied with a target and a content + * item. The content item will appear to the left, right, above, or below the target + * depending on the value of the direction property + */ +Popup +{ + id: base + + /** + * The target item is what the pop-up is "tied" to, usually a button + */ + property var target + + /** + * Which side of the target should the contentItem appear on? + * Possible values include: + * - "top" + * - "bottom" + * - "left" + * - "right" + */ + property string direction: "bottom" + + /** + * Should the popup close when you click outside it? For example, this is + * disabled by the InfoBlurb component since it's opened and closed using mouse + * hovers, not clicks. + */ + property bool closeOnClick: true + + /** + * Use white for context menus, dark grey for info blurbs! + */ + property var color: "#ffffff" // TODO: Theme! + + background: Item + { + anchors.fill: parent + + DropShadow + { + anchors.fill: pointedRectangle + color: UM.Theme.getColor("monitor_shadow") + radius: UM.Theme.getSize("monitor_shadow_radius").width + source: pointedRectangle + transparentBorder: true + verticalOffset: 2 * screenScaleFactor + } + + Item + { + id: pointedRectangle + anchors + { + horizontalCenter: parent.horizontalCenter + verticalCenter: parent.verticalCenter + } + height: parent.height - 10 * screenScaleFactor // Because of the shadow + width: parent.width - 10 * screenScaleFactor // Because of the shadow + + Rectangle + { + id: point + anchors + { + horizontalCenter: + { + switch(direction) + { + case "left": + return bloop.left + case "right": + return bloop.right + default: + return bloop.horizontalCenter + } + } + verticalCenter: + { + switch(direction) + { + case "top": + return bloop.top + case "bottom": + return bloop.bottom + default: + return bloop.verticalCenter + } + } + } + color: base.color + height: 12 * screenScaleFactor + transform: Rotation + { + angle: 45 + origin.x: point.width / 2 + origin.y: point.height / 2 + } + width: height + } + + Rectangle + { + id: bloop + anchors + { + fill: parent + leftMargin: direction == "left" ? 8 * screenScaleFactor : 0 + rightMargin: direction == "right" ? 8 * screenScaleFactor : 0 + topMargin: direction == "top" ? 8 * screenScaleFactor : 0 + bottomMargin: direction == "bottom" ? 8 * screenScaleFactor : 0 + } + color: base.color + width: parent.width + } + } + } + + onClosed: visible = false + onOpened: visible = true + closePolicy: closeOnClick ? Popup.CloseOnPressOutside : Popup.NoAutoClose + enter: Transition + { + NumberAnimation + { + duration: 75 + property: "visible" + } + } + exit: Transition + { + NumberAnimation + { + duration: 75 + property: "visible" + } + } + + clip: true + + padding: UM.Theme.getSize("monitor_shadow_radius").width + topPadding: direction == "top" ? padding + 8 * screenScaleFactor : padding + bottomPadding: direction == "bottom" ? padding + 8 * screenScaleFactor : padding + leftPadding: direction == "left" ? padding + 8 * screenScaleFactor : padding + rightPadding: direction == "right" ? padding + 8 * screenScaleFactor : padding + + transformOrigin: + { + switch(direction) + { + case "top": + return Popup.Top + case "bottom": + return Popup.Bottom + case "right": + return Popup.Right + case "left": + return Popup.Left + default: + direction = "bottom" + return Popup.Bottom + } + } + + visible: false; + + x: + { + switch(direction) + { + case "left": + return target.x + target.width + 4 * screenScaleFactor + case "right": + return target.x - base.width - 4 * screenScaleFactor + default: + return target.x + target.width / 2 - base.width / 2 + } + } + y: + { + switch(direction) + { + case "top": + return target.y + target.height + 4 * screenScaleFactor + case "bottom": + return target.y - base.height - 4 * screenScaleFactor + default: + return target.y + target.height / 2 - base.height / 2 + } + } +} From 920b7b6706d70760808c374bacd551d0c994ef9d Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 16:30:11 +0100 Subject: [PATCH 005/137] Create MonitorInfoBlurb.qml Contributes to CL-1165 --- .../resources/qml/MonitorInfoBlurb.qml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml new file mode 100644 index 0000000000..f7d37b989a --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml @@ -0,0 +1,54 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.3 +import QtQuick.Controls 2.0 +import QtQuick.Dialogs 1.1 +import UM 1.3 as UM + +/** + * A MonitorInfoBlurb is an extension of the GenericPopUp used to show static information (vs. interactive context + * menus). It accepts some text (text), an item to link to to (target), and a specification of which side of the target + * to appear on (direction). It also sets the GenericPopUp's color to black, to differentiate itself from a menu. + */ +Item +{ + property alias text: innerLabel.text + property alias target: popUp.target + property alias direction: popUp.direction + + GenericPopUp + { + id: popUp + + // If the pop-up won't fit in the window, flip it + direction: target.y + target.height + contentWrapper.implicitHeight < monitorFrame.height ? "top" : "bottom" + + // Use dark grey for info blurbs and white for context menus + color: "#191919" // TODO: Theme! + + contentItem: Item + { + id: contentWrapper + implicitWidth: childrenRect.width + implicitHeight: innerLabel.contentHeight + 2 * innerLabel.padding + Label + { + id: innerLabel + padding: 12 * screenScaleFactor // TODO: Theme! + text: "" + wrapMode: Text.WordWrap + width: 240 * screenScaleFactor // TODO: Theme! + color: "white" // TODO: Theme! + font: UM.Theme.getFont("default") + } + } + } + + function open() { + popUp.open() + } + function close() { + popUp.close() + } +} From 4ce244362c19421552d17a3e31dc3faf306e22f7 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 16:30:39 +0100 Subject: [PATCH 006/137] Make camera button grey if disabled Contributes to CL-1165 --- plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml b/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml index 6f054f9c19..afc295858f 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml @@ -9,12 +9,14 @@ import Cura 1.0 as Cura Rectangle { id: base + + property var enabled: true + property var iconSource: null; - color: "#0a0850" // TODO: Theme! + color: !enabled ? "#cccccc" : "#0a0850" // TODO: Theme! height: width; radius: Math.round(0.5 * width); width: 24 * screenScaleFactor; - property var enabled: true UM.RecolorImage { id: icon; From f6c754c57f068637139ec818190114b9c2e66637 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 16:31:26 +0100 Subject: [PATCH 007/137] Remove PropertyAnimation test --- .../UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml | 3 --- 1 file changed, 3 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml index facfaaaaaf..909c7f143e 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml @@ -156,9 +156,6 @@ Item } height: 72 * screenScaleFactor // TODO: Theme!te theRect's x property } - - // TODO: Make this work. - PropertyAnimation { target: printerConfiguration; property: "visible"; to: 0; loops: Animation.Infinite; duration: 500 } } From 4248deeb763ceeb7a7f9f43cbea1b3f66dfab95d Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 16:31:49 +0100 Subject: [PATCH 008/137] Line-length fixes --- .../resources/qml/MonitorPrinterCard.qml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml index 909c7f143e..d88230320e 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml @@ -7,13 +7,11 @@ import QtQuick.Dialogs 1.1 import UM 1.3 as UM /** - * A Printer Card is has two main components: the printer portion and the print - * job portion, the latter being paired in the UI when a print job is paired - * a printer in-cluster. + * A Printer Card is has two main components: the printer portion and the print job portion, the latter being paired in + * the UI when a print job is paired a printer in-cluster. * - * NOTE: For most labels, a fixed height with vertical alignment is used to make - * layouts more deterministic (like the fixed-size textboxes used in original - * mock-ups). This is also a stand-in for CSS's 'line-height' property. Denoted + * NOTE: For most labels, a fixed height with vertical alignment is used to make layouts more deterministic (like the + * fixed-size textboxes used in original mock-ups). This is also a stand-in for CSS's 'line-height' property. Denoted * with '// FIXED-LINE-HEIGHT:'. */ Item @@ -25,9 +23,8 @@ Item property var borderSize: 1 * screenScaleFactor // TODO: Theme, and remove from here - // If the printer card's controls are enabled. This is used by the carousel - // to prevent opening the context menu or camera while the printer card is not - // "in focus" + // If the printer card's controls are enabled. This is used by the carousel to prevent opening the context menu or + // camera while the printer card is not "in focus" property var enabled: true width: 834 * screenScaleFactor // TODO: Theme! @@ -217,6 +214,7 @@ Item } border { + // TODO: Fix line length color: printer && printer.activePrintJob && printer.activePrintJob.configurationChanges.length > 0 ? "#f5a623" : "transparent" // TODO: Theme! width: borderSize // TODO: Remove once themed } From 5a78eb05415d6eedb052e3d01e5780d41aa6df45 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 16:32:26 +0100 Subject: [PATCH 009/137] Temporarily disable context menu and camera button Contributes to CL-1165 --- .../UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml index d88230320e..0951cf1c2a 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml @@ -170,7 +170,8 @@ Item printJob: printer ? printer.activePrintJob : null width: 36 * screenScaleFactor // TODO: Theme! height: 36 * screenScaleFactor // TODO: Theme! - enabled: base.enabled + // enabled: base.enabled + enabled: false visible: printer } CameraButton @@ -184,7 +185,8 @@ Item bottomMargin: 20 * screenScaleFactor // TODO: Theme! } iconSource: "../svg/icons/camera.svg" - enabled: base.enabled + // enabled: base.enabled + enabled: false visible: printer } } From 5a15ffc09097ab3b175cfa08a63bac9b451bde31 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 17:03:41 +0100 Subject: [PATCH 010/137] Create MonitorContextMenuButton.qml Contributes to CL-1165 --- .../qml/MonitorContextMenuButton.qml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenuButton.qml diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenuButton.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenuButton.qml new file mode 100644 index 0000000000..5cd3404870 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenuButton.qml @@ -0,0 +1,31 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.3 +import QtQuick.Controls 2.0 +import UM 1.3 as UM +import Cura 1.0 as Cura + +Button +{ + id: base + background: Rectangle + { + color: UM.Theme.getColor("viewport_background") // TODO: Theme! + height: base.height + opacity: base.down || base.hovered ? 1 : 0 + radius: Math.round(0.5 * width) + width: base.width + } + contentItem: Label { + color: UM.Theme.getColor("monitor_context_menu_dots") + font.pixelSize: 32 * screenScaleFactor + horizontalAlignment: Text.AlignHCenter + text: base.text + verticalAlignment: Text.AlignVCenter + } + height: width + hoverEnabled: enabled + text: "\u22EE" //Unicode Three stacked points. + width: 36 * screenScaleFactor // TODO: Theme! +} \ No newline at end of file From cdc24081a5f5abedd49818994cf32dd733abe307 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 17:03:56 +0100 Subject: [PATCH 011/137] Create MonitorPrinterContextMenu.qml Contributes to CL-1165 --- .../qml/MonitorPrinterContextMenu.qml | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterContextMenu.qml diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterContextMenu.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterContextMenu.qml new file mode 100644 index 0000000000..1015824ea4 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterContextMenu.qml @@ -0,0 +1,92 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.3 +import QtQuick.Controls 2.0 +import QtQuick.Dialogs 1.1 +import UM 1.3 as UM + +/** + * A MonitorInfoBlurb is an extension of the GenericPopUp used to show static information (vs. interactive context + * menus). It accepts some text (text), an item to link to to (target), and a specification of which side of the target + * to appear on (direction). It also sets the GenericPopUp's color to black, to differentiate itself from a menu. + */ +Item +{ + property alias target: popUp.target + + property var printJob: null + + GenericPopUp + { + id: popUp + + // If the pop-up won't fit in the window, flip it + direction: + { + var availableSpace = monitorFrame.height + var targetPosition = target.mapToItem(null, 0, 0) + var requiredSpace = targetPosition.y + target.height + contentWrapper.implicitHeight + return requiredSpace < availableSpace ? "top" : "bottom" + } + + // Use dark grey for info blurbs and white for context menus + color: "#ffffff" // TODO: Theme! + + contentItem: Item + { + id: contentWrapper + implicitWidth: childrenRect.width + implicitHeight: innerLabel.contentHeight + Label + { + id: innerLabel + text: "The future of context menus starts here!" + wrapMode: Text.WordWrap + width: 182 * screenScaleFactor // TODO: Theme! + color: "white" // TODO: Theme! + font: UM.Theme.getFont("default") + } + } + } + + MessageDialog { + id: sendToTopConfirmationDialog + Component.onCompleted: visible = false + icon: StandardIcon.Warning + onYes: OutputDevice.sendJobToTop(printJob.key) + standardButtons: StandardButton.Yes | StandardButton.No + text: printJob && printJob.name ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to move %1 to the top of the queue?").arg(printJob.name) : "" + title: catalog.i18nc("@window:title", "Move print job to top") + } + + MessageDialog { + id: deleteConfirmationDialog + Component.onCompleted: visible = false + icon: StandardIcon.Warning + onYes: OutputDevice.deleteJobFromQueue(printJob.key) + standardButtons: StandardButton.Yes | StandardButton.No + text: printJob && printJob.name ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to delete %1?").arg(printJob.name) : "" + title: catalog.i18nc("@window:title", "Delete print job") + } + + MessageDialog { + id: abortConfirmationDialog + Component.onCompleted: visible = false + icon: StandardIcon.Warning + onYes: printJob.setState("abort") + standardButtons: StandardButton.Yes | StandardButton.No + text: printJob && printJob.name ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to abort %1?").arg(printJob.name) : "" + title: catalog.i18nc("@window:title", "Abort print") + } + + function switchPopupState() { + popUp.visible ? popUp.close() : popUp.open() + } + function open() { + popUp.open() + } + function close() { + popUp.close() + } +} From 548882e398591fae2f5e27312fd7f07530aeea6c Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 17:04:33 +0100 Subject: [PATCH 012/137] Use new context menu Contributes to CL-1165 --- .../resources/qml/MonitorPrinterCard.qml | 62 +++++++++++++++++-- 1 file changed, 56 insertions(+), 6 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml index 0951cf1c2a..7e5b42a48e 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml @@ -156,10 +156,9 @@ Item } - - PrintJobContextMenu + MonitorContextMenuButton { - id: contextButton + id: contextMenuButton anchors { right: parent.right @@ -167,16 +166,49 @@ Item top: parent.top topMargin: 12 * screenScaleFactor // TODO: Theme! } - printJob: printer ? printer.activePrintJob : null width: 36 * screenScaleFactor // TODO: Theme! height: 36 * screenScaleFactor // TODO: Theme! // enabled: base.enabled enabled: false - visible: printer + onClicked: enabled ? contextMenu.switchPopupState() : {} + visible: + { + if (!printer || !printer.activePrintJob) { + return false + } + var states = ["queued", "sent_to_printer", "pre_print", "printing", "pausing", "paused", "resuming"] + return states.indexOf(printer.activePrintJob.state) !== -1 + } } + + MonitorPrinterContextMenu + { + id: contextMenu + printJob: printer ? printer.activePrintJob : null + target: contextMenuButton + } + + // For cloud printing, add this mouse area over the disabled contextButton to indicate that it's not available + MouseArea + { + id: contextMenuDisabledButtonArea + anchors.fill: contextMenuButton + hoverEnabled: contextMenuButton.visible && !contextMenuButton.enabled + onEntered: contextMenuDisabledInfo.open() + onExited: contextMenuDisabledInfo.close() + enabled: !contextMenuButton.enabled + } + + MonitorInfoBlurb + { + id: contextMenuDisabledInfo + text: catalog.i18nc("@info", "These options are not available because you are monitoring a cloud printer.") + target: contextMenuButton + } + CameraButton { - id: cameraButton; + id: cameraButton anchors { right: parent.right @@ -189,6 +221,24 @@ Item enabled: false visible: printer } + + // For cloud printing, add this mouse area over the disabled cameraButton to indicate that it's not available + MouseArea + { + id: cameraDisabledButtonArea + anchors.fill: cameraButton + hoverEnabled: cameraButton.visible && !cameraButton.enabled + onEntered: cameraDisabledInfo.open() + onExited: cameraDisabledInfo.close() + enabled: !cameraButton.enabled + } + + MonitorInfoBlurb + { + id: cameraDisabledInfo + text: catalog.i18nc("@info", "The webcam is not available because you are monitoring a cloud printer.") + target: cameraButton + } } From 669f6d8f0cb782a7bcd71943d9ab87fe9846d419 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 9 Jan 2019 17:04:51 +0100 Subject: [PATCH 013/137] Fix available space bug Contributes to CL-1165 --- .../resources/qml/MonitorInfoBlurb.qml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml index f7d37b989a..58b354afcf 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml @@ -3,7 +3,6 @@ import QtQuick 2.3 import QtQuick.Controls 2.0 -import QtQuick.Dialogs 1.1 import UM 1.3 as UM /** @@ -22,7 +21,13 @@ Item id: popUp // If the pop-up won't fit in the window, flip it - direction: target.y + target.height + contentWrapper.implicitHeight < monitorFrame.height ? "top" : "bottom" + direction: + { + var availableSpace = monitorFrame.height + var targetPosition = target.mapToItem(null, 0, 0) + var requiredSpace = targetPosition.y + target.height + contentWrapper.implicitHeight + return requiredSpace < availableSpace ? "top" : "bottom" + } // Use dark grey for info blurbs and white for context menus color: "#191919" // TODO: Theme! From 0622c5cb8b9582cd3e0cd49edcb89a8e98f5b9b2 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Thu, 10 Jan 2019 09:22:27 +0100 Subject: [PATCH 014/137] Rename MonitorPrinterContextMenu to MonitorContextMenu --- .../resources/qml/MonitorContextMenu.qml | 183 ++++++++++++++++++ .../resources/qml/MonitorPrinterCard.qml | 3 +- .../qml/MonitorPrinterContextMenu.qml | 92 --------- 3 files changed, 184 insertions(+), 94 deletions(-) create mode 100644 plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml delete mode 100644 plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterContextMenu.qml diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml new file mode 100644 index 0000000000..fecb5e3162 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml @@ -0,0 +1,183 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.3 +import QtQuick.Controls 2.0 +import QtQuick.Dialogs 1.1 +import UM 1.3 as UM + +/** + * A MonitorInfoBlurb is an extension of the GenericPopUp used to show static information (vs. interactive context + * menus). It accepts some text (text), an item to link to to (target), and a specification of which side of the target + * to appear on (direction). It also sets the GenericPopUp's color to black, to differentiate itself from a menu. + */ +Item +{ + property alias target: popUp.target + + property var printJob: null + + GenericPopUp + { + id: popUp + + // If the pop-up won't fit in the window, flip it + direction: + { + var availableSpace = monitorFrame.height + var targetPosition = target.mapToItem(null, 0, 0) + var requiredSpace = targetPosition.y + target.height + contentWrapper.implicitHeight + console.log("available space", availableSpace - targetPosition.y + target.height) + return requiredSpace < availableSpace ? "top" : "bottom" + } + + // Use dark grey for info blurbs and white for context menus + color: "#ffffff" // TODO: Theme! + + contentItem: Item + { + id: contentWrapper + implicitWidth: childrenRect.width + implicitHeight: menuItems.height + UM.Theme.getSize("default_margin").height + + Column + { + id: menuItems + width: 144 * screenScaleFactor + + anchors + { + top: parent.top + topMargin: Math.floor(UM.Theme.getSize("default_margin").height / 2) + } + + spacing: Math.floor(UM.Theme.getSize("default_margin").height / 2) + + PrintJobContextMenuItem { + onClicked: { + sendToTopConfirmationDialog.visible = true; + popUp.close(); + } + text: catalog.i18nc("@label", "Move to top"); + visible: { + if (printJob && printJob.state == "queued" && !assigned) { + if (OutputDevice && OutputDevice.queuedPrintJobs[0]) { + return OutputDevice.queuedPrintJobs[0].key != printJob.key; + } + } + return false; + } + } + + PrintJobContextMenuItem { + onClicked: { + deleteConfirmationDialog.visible = true; + popUp.close(); + } + text: catalog.i18nc("@label", "Delete"); + visible: { + if (!printJob) { + return false; + } + var states = ["queued", "sent_to_printer"]; + return states.indexOf(printJob.state) !== -1; + } + } + + PrintJobContextMenuItem { + enabled: visible && !(printJob.state == "pausing" || printJob.state == "resuming"); + onClicked: { + if (printJob.state == "paused") { + printJob.setState("print"); + popUp.close(); + return; + } + if (printJob.state == "printing") { + printJob.setState("pause"); + popUp.close(); + return; + } + } + text: { + if (!printJob) { + return ""; + } + switch(printJob.state) { + case "paused": + return catalog.i18nc("@label", "Resume"); + case "pausing": + return catalog.i18nc("@label", "Pausing..."); + case "resuming": + return catalog.i18nc("@label", "Resuming..."); + default: + catalog.i18nc("@label", "Pause"); + } + } + visible: { + if (!printJob) { + return false; + } + var states = ["printing", "pausing", "paused", "resuming"]; + return states.indexOf(printJob.state) !== -1; + } + } + + PrintJobContextMenuItem { + enabled: visible && printJob.state !== "aborting"; + onClicked: { + abortConfirmationDialog.visible = true; + popUp.close(); + } + text: printJob && printJob.state == "aborting" ? catalog.i18nc("@label", "Aborting...") : catalog.i18nc("@label", "Abort"); + visible: { + if (!printJob) { + return false; + } + var states = ["pre_print", "printing", "pausing", "paused", "resuming"]; + return states.indexOf(printJob.state) !== -1; + } + } + } + } + } + + MessageDialog { + id: sendToTopConfirmationDialog + Component.onCompleted: visible = false + icon: StandardIcon.Warning + onYes: OutputDevice.sendJobToTop(printJob.key) + standardButtons: StandardButton.Yes | StandardButton.No + text: printJob && printJob.name ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to move %1 to the top of the queue?").arg(printJob.name) : "" + title: catalog.i18nc("@window:title", "Move print job to top") + } + + MessageDialog { + id: deleteConfirmationDialog + Component.onCompleted: visible = false + icon: StandardIcon.Warning + onYes: OutputDevice.deleteJobFromQueue(printJob.key) + standardButtons: StandardButton.Yes | StandardButton.No + text: printJob && printJob.name ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to delete %1?").arg(printJob.name) : "" + title: catalog.i18nc("@window:title", "Delete print job") + } + + MessageDialog { + id: abortConfirmationDialog + Component.onCompleted: visible = false + icon: StandardIcon.Warning + onYes: printJob.setState("abort") + standardButtons: StandardButton.Yes | StandardButton.No + text: printJob && printJob.name ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to abort %1?").arg(printJob.name) : "" + title: catalog.i18nc("@window:title", "Abort print") + } + + function switchPopupState() { + popUp.visible ? popUp.close() : popUp.open() + } + function open() { + popUp.open() + } + function close() { + popUp.close() + } +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml index 7e5b42a48e..517b696db8 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml @@ -155,7 +155,6 @@ Item } } - MonitorContextMenuButton { id: contextMenuButton @@ -181,7 +180,7 @@ Item } } - MonitorPrinterContextMenu + MonitorContextMenu { id: contextMenu printJob: printer ? printer.activePrintJob : null diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterContextMenu.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterContextMenu.qml deleted file mode 100644 index 1015824ea4..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterContextMenu.qml +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.3 -import QtQuick.Controls 2.0 -import QtQuick.Dialogs 1.1 -import UM 1.3 as UM - -/** - * A MonitorInfoBlurb is an extension of the GenericPopUp used to show static information (vs. interactive context - * menus). It accepts some text (text), an item to link to to (target), and a specification of which side of the target - * to appear on (direction). It also sets the GenericPopUp's color to black, to differentiate itself from a menu. - */ -Item -{ - property alias target: popUp.target - - property var printJob: null - - GenericPopUp - { - id: popUp - - // If the pop-up won't fit in the window, flip it - direction: - { - var availableSpace = monitorFrame.height - var targetPosition = target.mapToItem(null, 0, 0) - var requiredSpace = targetPosition.y + target.height + contentWrapper.implicitHeight - return requiredSpace < availableSpace ? "top" : "bottom" - } - - // Use dark grey for info blurbs and white for context menus - color: "#ffffff" // TODO: Theme! - - contentItem: Item - { - id: contentWrapper - implicitWidth: childrenRect.width - implicitHeight: innerLabel.contentHeight - Label - { - id: innerLabel - text: "The future of context menus starts here!" - wrapMode: Text.WordWrap - width: 182 * screenScaleFactor // TODO: Theme! - color: "white" // TODO: Theme! - font: UM.Theme.getFont("default") - } - } - } - - MessageDialog { - id: sendToTopConfirmationDialog - Component.onCompleted: visible = false - icon: StandardIcon.Warning - onYes: OutputDevice.sendJobToTop(printJob.key) - standardButtons: StandardButton.Yes | StandardButton.No - text: printJob && printJob.name ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to move %1 to the top of the queue?").arg(printJob.name) : "" - title: catalog.i18nc("@window:title", "Move print job to top") - } - - MessageDialog { - id: deleteConfirmationDialog - Component.onCompleted: visible = false - icon: StandardIcon.Warning - onYes: OutputDevice.deleteJobFromQueue(printJob.key) - standardButtons: StandardButton.Yes | StandardButton.No - text: printJob && printJob.name ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to delete %1?").arg(printJob.name) : "" - title: catalog.i18nc("@window:title", "Delete print job") - } - - MessageDialog { - id: abortConfirmationDialog - Component.onCompleted: visible = false - icon: StandardIcon.Warning - onYes: printJob.setState("abort") - standardButtons: StandardButton.Yes | StandardButton.No - text: printJob && printJob.name ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to abort %1?").arg(printJob.name) : "" - title: catalog.i18nc("@window:title", "Abort print") - } - - function switchPopupState() { - popUp.visible ? popUp.close() : popUp.open() - } - function open() { - popUp.open() - } - function close() { - popUp.close() - } -} From 9c711cc8aa3729d7c6d97568b569ddfd14ed0c42 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Thu, 10 Jan 2019 15:27:04 +0100 Subject: [PATCH 015/137] Pop-up flips directions Contributes to CL-1165 --- .../resources/qml/GenericPopUp.qml | 127 +++++++++++------- .../resources/qml/MonitorInfoBlurb.qml | 9 +- .../resources/qml/MonitorPrintJobCard.qml | 58 +++++++- 3 files changed, 131 insertions(+), 63 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml index 442de3cd7a..15a88ef3fd 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml @@ -44,6 +44,8 @@ Popup */ property var color: "#ffffff" // TODO: Theme! + Component.onCompleted: recalculatePosition() + background: Item { anchors.fill: parent @@ -127,25 +129,61 @@ Popup } } + visible: false onClosed: visible = false - onOpened: visible = true + onOpened: + { + // Flip direction if there is not enough screen space + var availableSpace + + var targetPosition = target.mapToItem(monitorFrame, 0, 0) + + var requiredSpace = contentItem.implicitHeight + 2 * padding + 8 * screenScaleFactor + + switch(direction) + { + case "top": + availableSpace = monitorFrame.height - (targetPosition.y + target.height) + // console.log("Needs", requiredSpace, "has got", availableSpace) + if (availableSpace < requiredSpace) + { + // console.log("putting point on bottom") + direction = "bottom" + } + break + case "bottom": + availableSpace = targetPosition.y + // console.log("Needs", requiredSpace, "has got", availableSpace) + if (availableSpace < requiredSpace) + { + // console.log("putting point on top") + direction = "top" + } + break + } + + recalculatePosition() + + // Show the pop up + visible = true + } closePolicy: closeOnClick ? Popup.CloseOnPressOutside : Popup.NoAutoClose - enter: Transition - { - NumberAnimation - { - duration: 75 - property: "visible" - } - } - exit: Transition - { - NumberAnimation - { - duration: 75 - property: "visible" - } - } + // enter: Transition + // { + // NumberAnimation + // { + // duration: 75 + // property: "visible" + // } + // } + // exit: Transition + // { + // NumberAnimation + // { + // duration: 75 + // property: "visible" + // } + // } clip: true @@ -155,48 +193,35 @@ Popup leftPadding: direction == "left" ? padding + 8 * screenScaleFactor : padding rightPadding: direction == "right" ? padding + 8 * screenScaleFactor : padding - transformOrigin: - { - switch(direction) - { - case "top": - return Popup.Top - case "bottom": - return Popup.Bottom - case "right": - return Popup.Right - case "left": - return Popup.Left - default: - direction = "bottom" - return Popup.Bottom + function recalculatePosition() { + + // Stupid pop-up logic causes the pop-up to resize, so let's compute what it SHOULD be + const realWidth = contentItem.implicitWidth + leftPadding + rightPadding + const realHeight = contentItem.implicitHeight + topPadding + bottomPadding + + var centered = { + x: target.x + target.width / 2 - realWidth / 2, + y: target.y + target.height / 2 - realHeight / 2 } - } - visible: false; - - x: - { switch(direction) { case "left": - return target.x + target.width + 4 * screenScaleFactor + x = target.x + target.width + y = centered.y + break case "right": - return target.x - base.width - 4 * screenScaleFactor - default: - return target.x + target.width / 2 - base.width / 2 - } - } - y: - { - switch(direction) - { + x = target.x - realWidth + y = centered.y + break case "top": - return target.y + target.height + 4 * screenScaleFactor + x = centered.x + y = target.y + target.height + break case "bottom": - return target.y - base.height - 4 * screenScaleFactor - default: - return target.y + target.height / 2 - base.height / 2 + x = centered.x + y = target.y - realHeight + break } } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml index 58b354afcf..7491f6c415 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml @@ -20,14 +20,7 @@ Item { id: popUp - // If the pop-up won't fit in the window, flip it - direction: - { - var availableSpace = monitorFrame.height - var targetPosition = target.mapToItem(null, 0, 0) - var requiredSpace = targetPosition.y + target.height + contentWrapper.implicitHeight - return requiredSpace < availableSpace ? "top" : "bottom" - } + direction: "top" // Use dark grey for info blurbs and white for context menus color: "#191919" // TODO: Theme! diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml index f2b9c3cff7..9493ed33e6 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml @@ -198,18 +198,68 @@ Item } } - PrintJobContextMenu + // PrintJobContextMenu + // { + // id: contextButton + // anchors + // { + // right: parent.right; + // rightMargin: 8 * screenScaleFactor // TODO: Theme! + // top: parent.top + // topMargin: 8 * screenScaleFactor // TODO: Theme! + // } + // printJob: base.printJob + // width: 32 * screenScaleFactor // TODO: Theme! + // height: 32 * screenScaleFactor // TODO: Theme! + // } + + MonitorContextMenuButton { - id: contextButton + id: contextMenuButton anchors { - right: parent.right; + right: parent.right rightMargin: 8 * screenScaleFactor // TODO: Theme! top: parent.top topMargin: 8 * screenScaleFactor // TODO: Theme! } - printJob: base.printJob width: 32 * screenScaleFactor // TODO: Theme! height: 32 * screenScaleFactor // TODO: Theme! + // enabled: base.enabled + enabled: false + onClicked: enabled ? contextMenu.switchPopupState() : {} + visible: + { + if (!printJob) { + return false + } + var states = ["queued", "sent_to_printer", "pre_print", "printing", "pausing", "paused", "resuming"] + return states.indexOf(printJob.state) !== -1 + } + } + + MonitorContextMenu + { + id: contextMenu + printJob: printer ? printer.activePrintJob : null + target: contextMenuButton + } + + // For cloud printing, add this mouse area over the disabled contextButton to indicate that it's not available + MouseArea + { + id: contextMenuDisabledButtonArea + anchors.fill: contextMenuButton + hoverEnabled: contextMenuButton.visible && !contextMenuButton.enabled + onEntered: contextMenuDisabledInfo.open() + onExited: contextMenuDisabledInfo.close() + enabled: !contextMenuButton.enabled + } + + MonitorInfoBlurb + { + id: contextMenuDisabledInfo + text: catalog.i18nc("@info", "These options are not available because you are monitoring a cloud printer.") + target: contextMenuButton } } \ No newline at end of file From 292d04f3eaad4143cdc558f6d14253a42d240843 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Thu, 10 Jan 2019 15:27:31 +0100 Subject: [PATCH 016/137] Remove transitions which caused graphical glitches Contributes to CL-1165 --- .../resources/qml/GenericPopUp.qml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml index 15a88ef3fd..7bdec1087c 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml @@ -168,22 +168,6 @@ Popup visible = true } closePolicy: closeOnClick ? Popup.CloseOnPressOutside : Popup.NoAutoClose - // enter: Transition - // { - // NumberAnimation - // { - // duration: 75 - // property: "visible" - // } - // } - // exit: Transition - // { - // NumberAnimation - // { - // duration: 75 - // property: "visible" - // } - // } clip: true From 612b0d0165a8775756c58955154d88a19912a4dc Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Thu, 10 Jan 2019 15:54:58 +0100 Subject: [PATCH 017/137] Reset pop-up orientation if it moved Contributes to CL-1165 --- .../resources/qml/GenericPopUp.qml | 121 +++++++++++------- .../resources/qml/MonitorInfoBlurb.qml | 3 +- 2 files changed, 75 insertions(+), 49 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml index 7bdec1087c..4bcfade1f5 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml @@ -9,9 +9,9 @@ import QtGraphicalEffects 1.0 import UM 1.3 as UM /** - * This is a generic pop-up element which can be supplied with a target and a content - * item. The content item will appear to the left, right, above, or below the target - * depending on the value of the direction property + * This is a generic pop-up element which can be supplied with a target and a content item. The + * content item will appear to the left, right, above, or below the target depending on the value of + * the direction property */ Popup { @@ -23,14 +23,20 @@ Popup property var target /** - * Which side of the target should the contentItem appear on? + * Which direction should the pop-up "point"? * Possible values include: - * - "top" - * - "bottom" + * - "up" + * - "down" * - "left" * - "right" */ - property string direction: "bottom" + property string direction: "down" + + /** + * We save the default direction so that if a pop-up was flipped but later has space (i.e. it + * moved), we can unflip it back to the default direction. + */ + property string originalDirection: "" /** * Should the popup close when you click outside it? For example, this is @@ -44,7 +50,13 @@ Popup */ property var color: "#ffffff" // TODO: Theme! - Component.onCompleted: recalculatePosition() + Component.onCompleted: + { + recalculatePosition() + + // Set the direction here so it's only set once and never mutated + originalDirection = (' ' + direction).slice(1) + } background: Item { @@ -92,9 +104,9 @@ Popup { switch(direction) { - case "top": + case "up": return bloop.top - case "bottom": + case "down": return bloop.bottom default: return bloop.verticalCenter @@ -118,10 +130,10 @@ Popup anchors { fill: parent - leftMargin: direction == "left" ? 8 * screenScaleFactor : 0 - rightMargin: direction == "right" ? 8 * screenScaleFactor : 0 - topMargin: direction == "top" ? 8 * screenScaleFactor : 0 - bottomMargin: direction == "bottom" ? 8 * screenScaleFactor : 0 + leftMargin: direction == "left" ? 8 * screenScaleFactor : 0 + rightMargin: direction == "right" ? 8 * screenScaleFactor : 0 + topMargin: direction == "up" ? 8 * screenScaleFactor : 0 + bottomMargin: direction == "down" ? 8 * screenScaleFactor : 0 } color: base.color width: parent.width @@ -133,35 +145,10 @@ Popup onClosed: visible = false onOpened: { - // Flip direction if there is not enough screen space - var availableSpace - - var targetPosition = target.mapToItem(monitorFrame, 0, 0) - - var requiredSpace = contentItem.implicitHeight + 2 * padding + 8 * screenScaleFactor - - switch(direction) - { - case "top": - availableSpace = monitorFrame.height - (targetPosition.y + target.height) - // console.log("Needs", requiredSpace, "has got", availableSpace) - if (availableSpace < requiredSpace) - { - // console.log("putting point on bottom") - direction = "bottom" - } - break - case "bottom": - availableSpace = targetPosition.y - // console.log("Needs", requiredSpace, "has got", availableSpace) - if (availableSpace < requiredSpace) - { - // console.log("putting point on top") - direction = "top" - } - break - } + // Flip orientation if necessary + recalculateOrientation() + // Fix position if necessary recalculatePosition() // Show the pop up @@ -172,10 +159,10 @@ Popup clip: true padding: UM.Theme.getSize("monitor_shadow_radius").width - topPadding: direction == "top" ? padding + 8 * screenScaleFactor : padding - bottomPadding: direction == "bottom" ? padding + 8 * screenScaleFactor : padding - leftPadding: direction == "left" ? padding + 8 * screenScaleFactor : padding - rightPadding: direction == "right" ? padding + 8 * screenScaleFactor : padding + topPadding: direction == "up" ? padding + 8 * screenScaleFactor : padding + bottomPadding: direction == "down" ? padding + 8 * screenScaleFactor : padding + leftPadding: direction == "left" ? padding + 8 * screenScaleFactor : padding + rightPadding: direction == "right" ? padding + 8 * screenScaleFactor : padding function recalculatePosition() { @@ -198,14 +185,52 @@ Popup x = target.x - realWidth y = centered.y break - case "top": + case "up": x = centered.x y = target.y + target.height break - case "bottom": + case "down": x = centered.x y = target.y - realHeight break } } + + function recalculateOrientation() { + // Flip direction if there is not enough screen space + var availableSpace + + var targetPosition = target.mapToItem(monitorFrame, 0, 0) + + // Stupid pop-up logic causes the pop-up to resize, so let's compute what it SHOULD be + const realWidth = contentItem.implicitWidth + leftPadding + rightPadding + const realHeight = contentItem.implicitHeight + topPadding + bottomPadding + + switch(originalDirection) + { + case "up": + availableSpace = monitorFrame.height - (targetPosition.y + target.height) + direction = availableSpace < realHeight ? "down" : originalDirection + break + case "down": + availableSpace = targetPosition.y + // if (availableSpace < realHeight) + // { + // if (direction != originalDirection) + // { + + // } + // } + direction = availableSpace < realHeight ? "up" : originalDirection + break + case "right": + availableSpace = targetPosition.x + direction = availableSpace < realWidth ? "left" : originalDirection + break + case "left": + availableSpace = monitorFrame.width - (targetPosition.x + target.width) + direction = availableSpace < realWidth ? "right" : originalDirection + break + } + } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml index 7491f6c415..3a6800e999 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml @@ -20,7 +20,8 @@ Item { id: popUp - direction: "top" + // Which way should the pop-up point? Default is up, but will flip when required + direction: "up" // Use dark grey for info blurbs and white for context menus color: "#191919" // TODO: Theme! From 3377ed0e6e6ee712339d1574e5405605c2145881 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Thu, 10 Jan 2019 15:55:25 +0100 Subject: [PATCH 018/137] Remove some unused code Contributes to CL-1165 --- plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml index 4bcfade1f5..4430a6a30a 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml @@ -214,13 +214,6 @@ Popup break case "down": availableSpace = targetPosition.y - // if (availableSpace < realHeight) - // { - // if (direction != originalDirection) - // { - - // } - // } direction = availableSpace < realHeight ? "up" : originalDirection break case "right": From 8d76bd86786e701131970960a75b0426040ec830 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Thu, 10 Jan 2019 16:04:57 +0100 Subject: [PATCH 019/137] Small clean-up of log warnings Contributes to CL-1165 --- .../resources/qml/GenericPopUp.qml | 2 -- .../resources/qml/MonitorContextMenu.qml | 19 +++++++++---------- .../resources/qml/MonitorPrintJobCard.qml | 7 +++---- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml index 4430a6a30a..74d9377f3e 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml @@ -197,9 +197,7 @@ Popup } function recalculateOrientation() { - // Flip direction if there is not enough screen space var availableSpace - var targetPosition = target.mapToItem(monitorFrame, 0, 0) // Stupid pop-up logic causes the pop-up to resize, so let's compute what it SHOULD be diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml index fecb5e3162..00b575173e 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml @@ -21,15 +21,8 @@ Item { id: popUp - // If the pop-up won't fit in the window, flip it - direction: - { - var availableSpace = monitorFrame.height - var targetPosition = target.mapToItem(null, 0, 0) - var requiredSpace = targetPosition.y + target.height + contentWrapper.implicitHeight - console.log("available space", availableSpace - targetPosition.y + target.height) - return requiredSpace < availableSpace ? "top" : "bottom" - } + // Which way should the pop-up point? Default is up, but will flip when required + direction: "up" // Use dark grey for info blurbs and white for context menus color: "#ffffff" // TODO: Theme! @@ -60,7 +53,7 @@ Item } text: catalog.i18nc("@label", "Move to top"); visible: { - if (printJob && printJob.state == "queued" && !assigned) { + if (printJob && printJob.state == "queued" && !isAssigned(printJob)) { if (OutputDevice && OutputDevice.queuedPrintJobs[0]) { return OutputDevice.queuedPrintJobs[0].key != printJob.key; } @@ -180,4 +173,10 @@ Item function close() { popUp.close() } + function isAssigned(job) { + if (!job) { + return false; + } + return job.assignedPrinter ? true : false; + } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml index 9493ed33e6..14817d7dfb 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml @@ -27,7 +27,7 @@ Item ExpandableCard { enabled: printJob != null - borderColor: printJob.configurationChanges.length !== 0 ? "#f5a623" : "#CCCCCC" // TODO: Theme! + borderColor: printJob && printJob.configurationChanges.length !== 0 ? "#f5a623" : "#CCCCCC" // TODO: Theme! headerItem: Row { height: 48 * screenScaleFactor // TODO: Theme! @@ -177,8 +177,7 @@ Item id: printerConfiguration anchors.verticalCenter: parent.verticalCenter buildplate: "Glass" - configurations: - [ + configurations: !base.printJob ? [null, null] : [ base.printJob.configuration.extruderConfigurations[0], base.printJob.configuration.extruderConfigurations[1] ] @@ -241,7 +240,7 @@ Item MonitorContextMenu { id: contextMenu - printJob: printer ? printer.activePrintJob : null + printJob: base.printJob ? base.printJob : null target: contextMenuButton } From 616d5a1f438388d2ac03d81fa146035a8b12a5c0 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Fri, 11 Jan 2019 10:43:50 +0100 Subject: [PATCH 020/137] Update MonitorPrintJobCard.qml Contributes to CL-1165 --- .../resources/qml/MonitorPrintJobCard.qml | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml index 14817d7dfb..99b27c5ade 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml @@ -197,21 +197,6 @@ Item } } - // PrintJobContextMenu - // { - // id: contextButton - // anchors - // { - // right: parent.right; - // rightMargin: 8 * screenScaleFactor // TODO: Theme! - // top: parent.top - // topMargin: 8 * screenScaleFactor // TODO: Theme! - // } - // printJob: base.printJob - // width: 32 * screenScaleFactor // TODO: Theme! - // height: 32 * screenScaleFactor // TODO: Theme! - // } - MonitorContextMenuButton { id: contextMenuButton @@ -224,8 +209,7 @@ Item } width: 32 * screenScaleFactor // TODO: Theme! height: 32 * screenScaleFactor // TODO: Theme! - // enabled: base.enabled - enabled: false + enabled: base.enabled // TODO: Add cloud logic here! onClicked: enabled ? contextMenu.switchPopupState() : {} visible: { From d499f780c8edd7f1908c286784a2f692975223b4 Mon Sep 17 00:00:00 2001 From: drzejkopf <41212609+drzejkopf@users.noreply.github.com> Date: Wed, 16 Jan 2019 14:54:24 +0100 Subject: [PATCH 021/137] Let "retraction_combing" be overriden with "infill" as default value "infill" option was not added to "resolve" after adding additional combing setting, so that wasn't possible to add it as override value in printer definition --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index f39e267354..34ea903b6a 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3395,7 +3395,7 @@ "infill": "Within Infill" }, "default_value": "all", - "resolve": "'noskin' if 'noskin' in extruderValues('retraction_combing') else ('all' if 'all' in extruderValues('retraction_combing') else 'off')", + "resolve": "'noskin' if 'noskin' in extruderValues('retraction_combing') else ('infill' if 'infill' in extruderValues('retraction_combing') else ('all' if 'all' in extruderValues('retraction_combing') else 'off'))", "settable_per_mesh": false, "settable_per_extruder": false }, From eb1204de9a6d5e7963d0de0590e55de65a8d68cc Mon Sep 17 00:00:00 2001 From: steverc1572 <37947640+steverc1572@users.noreply.github.com> Date: Wed, 16 Jan 2019 16:45:08 -0600 Subject: [PATCH 022/137] Add files via upload --- resources/definitions/creality cr-x.def.json | 52 ++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 resources/definitions/creality cr-x.def.json diff --git a/resources/definitions/creality cr-x.def.json b/resources/definitions/creality cr-x.def.json new file mode 100644 index 0000000000..ceb190db3f --- /dev/null +++ b/resources/definitions/creality cr-x.def.json @@ -0,0 +1,52 @@ +{ + "id": "CR-X", + "version": 2, + "name": "Creality CR-X", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "SRC", + "manufacturer": "Creality", + "category": "Other", + "file_formats": "text/x-gcode", + "platform": "cr-x.stl", + "has_variants": false, + "has_machine_quality": false, + "machine_extruder_trains": { + "0": "cr-x_extruder_0", + "1": "cr-x_extruder_1" + } + }, + + "overrides": { + "machine_name": { "default_value": "Creality CR-X" }, + "machine_extruder_count": { "default_value": 2 }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 300 }, + "machine_depth": { "default_value": 300 }, + "machine_height": { "default_value": 400 }, + "machine_center_is_zero": { "default_value": false }, + "layer_height": { "default_value": 0.2 }, + "layer_height_0": { "default_value": 0.3 }, + "retraction_amount": { "default_value": 3 }, + "retraction_speed": { "default_value": 70}, + "adhesion_type": { "default_value": "skirt" }, + "gantry_height": { "default_value": 30 }, + "speed_print": { "default_value": 60 }, + "speed_travel": { "default_value": 120 }, + "machine_max_acceleration_x": { "default_value": 500 }, + "machine_max_acceleration_y": { "default_value": 500 }, + "machine_max_acceleration_z": { "default_value": 100 }, + "machine_max_acceleration_e": { "default_value": 5000 }, + "machine_max_jerk_xy": { "default_value": 5.0 }, + "machine_max_jerk_z": { "default_value": 0.4 }, + "machine_max_jerk_e": { "default_value": 5.0 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG28 ;home all\nG90 ;absolute positioning\nM107 ;start with the fan off\nG1 F2400 Z15.0 ;raise the nozzle 15mm\nM109 S{material_print_temperature} ;Set Extruder Temperature and Wait\nM190 S{material_bed_temperature}; Wait for bed temperature to reach target temp\nT0 ;Switch to Extruder 1\nG1 F3000 X5 Y10 Z0.2 ;move to prime start position\nG92 E0 ;reset extrusion distance\nG1 F600 X160 E15 ;prime nozzle in a line\nG1 F5000 X180 ;quick wipe\nG92 E0 ;reset extrusion distance" }, + "machine_end_gcode": { "default_value": "M104 S0 ;hotend off\nM140 S0 ;bed off\nG92 E0\nG1 F2000 E-100 ;retract filament 100mm\nG92 E0\nG1 F3000 X0 Y270 ;move bed for easy part removal\nM84 ;disable steppers" }, + "material_print_temperature": { "default_value": 200 }, + "wall_thickness": { "default_value": 1 }, + "top_bottom_thickness": { "default_value": 1 }, + "bottom_thickness": { "default_value": 1 } + } +} From 2da71fe1f97828edfedad62c1b1a59ff6d29c488 Mon Sep 17 00:00:00 2001 From: steverc1572 <37947640+steverc1572@users.noreply.github.com> Date: Wed, 16 Jan 2019 16:46:07 -0600 Subject: [PATCH 023/137] Add files via upload --- resources/extruders/cr-x_extruder_0.def.json | 27 ++++++++++++++++++++ resources/extruders/cr-x_extruder_1.def.json | 27 ++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 resources/extruders/cr-x_extruder_0.def.json create mode 100644 resources/extruders/cr-x_extruder_1.def.json diff --git a/resources/extruders/cr-x_extruder_0.def.json b/resources/extruders/cr-x_extruder_0.def.json new file mode 100644 index 0000000000..5d04b24463 --- /dev/null +++ b/resources/extruders/cr-x_extruder_0.def.json @@ -0,0 +1,27 @@ +{ + "id": "cr-x_extruder_0", + "version": 2, + "name": "Left Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "Creality CR-X", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "machine_extruder_start_code": { + "default_value": "\nT0 ;switch to extruder 1\nG92 E0 ;reset extuder distance\nG1 F2000 E93 ;load filament\nG92 E0 ;reset extruder distance\nM104 S{material_print_temperature}" + }, + "machine_extruder_end_code": { + "default_value": "\nG92 E0 ;reset extruder distance\nG1 F800 E-5 ;short retract\nG1 F2400 X295 Y265 ;move near prime tower\nG1 F2000 E-93 ;long retract for filament removal\nG92 E0 ;reset extuder distance\nG90" + } + } +} diff --git a/resources/extruders/cr-x_extruder_1.def.json b/resources/extruders/cr-x_extruder_1.def.json new file mode 100644 index 0000000000..31e251ccc3 --- /dev/null +++ b/resources/extruders/cr-x_extruder_1.def.json @@ -0,0 +1,27 @@ +{ + "id": "cr-x_extruder_1", + "version": 2, + "name": "Right Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "Creality CR-X", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "machine_extruder_start_code": { + "default_value": "\nT1 ;switch to extruder 2\nG92 E0 ;reset extuder distance\nG1 F2000 E93 ;load filament\nG92 E0 ;reset extuder distance\nM104 S{material_print_temperature}" + }, + "machine_extruder_end_code": { + "default_value": "\nG92 E0 ;reset extruder distance\nG1 F800 E-5 ;short retract\nG1 F2400 X295 Y265 ;move near prime tower\nG1 F2000 E-93 ;long retract for filament removal\nG92 E0 ;reset extuder distance\nG90" + } + } +} From f3d0010b87fdbd7188bb1a544a8ad0bdb4ff503b Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Thu, 17 Jan 2019 15:44:37 +0100 Subject: [PATCH 024/137] Add cloud connection condition Contributes to CL-1165 --- .../resources/qml/MonitorPrintJobCard.qml | 7 ++++++- .../resources/qml/MonitorPrinterCard.qml | 12 ++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml index 99b27c5ade..c3d98fcb40 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml @@ -4,6 +4,7 @@ import QtQuick 2.2 import QtQuick.Controls 2.0 import UM 1.3 as UM +import Cura 1.0 as Cura /** * A Print Job Card is essentially just a filled-in Expandable Card item. All @@ -21,6 +22,10 @@ Item // The print job which all other data is derived from property var printJob: null + // If the printer is a cloud printer or not. Other items base their enabled state off of this boolean. In the future + // they might not need to though. + property bool cloudConnection: Cura.MachineManager.activeMachineHasActiveCloudConnection + width: parent.width height: childrenRect.height @@ -209,7 +214,7 @@ Item } width: 32 * screenScaleFactor // TODO: Theme! height: 32 * screenScaleFactor // TODO: Theme! - enabled: base.enabled // TODO: Add cloud logic here! + enabled: !cloudConnection onClicked: enabled ? contextMenu.switchPopupState() : {} visible: { diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml index 517b696db8..ec40f3d921 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml @@ -5,6 +5,7 @@ import QtQuick 2.3 import QtQuick.Controls 2.0 import QtQuick.Dialogs 1.1 import UM 1.3 as UM +import Cura 1.0 as Cura /** * A Printer Card is has two main components: the printer portion and the print job portion, the latter being paired in @@ -27,6 +28,10 @@ Item // camera while the printer card is not "in focus" property var enabled: true + // If the printer is a cloud printer or not. Other items base their enabled state off of this boolean. In the future + // they might not need to though. + property bool cloudConnection: Cura.MachineManager.activeMachineHasActiveCloudConnection + width: 834 * screenScaleFactor // TODO: Theme! height: childrenRect.height @@ -167,8 +172,8 @@ Item } width: 36 * screenScaleFactor // TODO: Theme! height: 36 * screenScaleFactor // TODO: Theme! - // enabled: base.enabled - enabled: false + enabled: !cloudConnection + onClicked: enabled ? contextMenu.switchPopupState() : {} visible: { @@ -216,8 +221,7 @@ Item bottomMargin: 20 * screenScaleFactor // TODO: Theme! } iconSource: "../svg/icons/camera.svg" - // enabled: base.enabled - enabled: false + enabled: !cloudConnection visible: printer } From 7b1e20c95549a430a0751234c122ec38d26053d5 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Fri, 18 Jan 2019 12:21:19 +0100 Subject: [PATCH 025/137] Fix typo --- cura/ApplicationMetadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/ApplicationMetadata.py b/cura/ApplicationMetadata.py index a38466a715..153674d4dd 100644 --- a/cura/ApplicationMetadata.py +++ b/cura/ApplicationMetadata.py @@ -4,7 +4,7 @@ # --------- # Genearl constants used in Cura # --------- -DEFAUKT_CURA_APP_NAME = "cura" +DEFAULT_CURA_APP_NAME = "cura" DEFAULT_CURA_DISPLAY_NAME = "Ultimaker Cura" DEFAULT_CURA_VERSION = "master" DEFAULT_CURA_BUILD_TYPE = "" From 9d02086585c2e05a44e96b75cc2c1475417ca076 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Fri, 18 Jan 2019 12:22:07 +0100 Subject: [PATCH 026/137] Get app name from ApplicationMetaData --- cura_app.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/cura_app.py b/cura_app.py index bd6136f982..3224a5b99b 100755 --- a/cura_app.py +++ b/cura_app.py @@ -9,6 +9,7 @@ import os import sys from UM.Platform import Platform +from cura.ApplicationMetadata import CuraAppName parser = argparse.ArgumentParser(prog = "cura", add_help = False) @@ -20,11 +21,6 @@ parser.add_argument("--debug", known_args = vars(parser.parse_known_args()[0]) if not known_args["debug"]: - try: - from cura.CuraVersion import CuraAppName # type: ignore - except ImportError: - CuraAppName = "cura" - def get_cura_dir_path(): if Platform.isWindows(): return os.path.expanduser("~/AppData/Roaming/" + CuraAppName) From ff005eb01fc562f6ce685910e51acc0ac644b411 Mon Sep 17 00:00:00 2001 From: steverc1572 <37947640+steverc1572@users.noreply.github.com> Date: Fri, 18 Jan 2019 15:47:26 -0600 Subject: [PATCH 027/137] Add files via upload --- resources/meshes/cr-x.stl | Bin 0 -> 4327084 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/meshes/cr-x.stl diff --git a/resources/meshes/cr-x.stl b/resources/meshes/cr-x.stl new file mode 100644 index 0000000000000000000000000000000000000000..cb70a5c0cb8a2ddb0738415c4e2794e91e81fc57 GIT binary patch literal 4327084 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 z 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 z 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