Merge remote-tracking branch 'origin/master' into CURA-7813_fix_crash_globalstack
@ -239,9 +239,6 @@ class WelcomePagesModel(ListModel):
|
||||
{"id": "user_agreement",
|
||||
"page_url": self._getBuiltinWelcomePagePath("UserAgreementContent.qml"),
|
||||
},
|
||||
{"id": "whats_new",
|
||||
"page_url": self._getBuiltinWelcomePagePath("WhatsNewContent.qml"),
|
||||
},
|
||||
{"id": "data_collections",
|
||||
"page_url": self._getBuiltinWelcomePagePath("DataCollectionsContent.qml"),
|
||||
},
|
||||
@ -259,13 +256,21 @@ class WelcomePagesModel(ListModel):
|
||||
},
|
||||
{"id": "add_cloud_printers",
|
||||
"page_url": self._getBuiltinWelcomePagePath("AddCloudPrintersView.qml"),
|
||||
"is_final_page": True, # If we end up in this page, the next button will close the dialog
|
||||
"next_page_button_text": self._catalog.i18nc("@action:button", "Finish"),
|
||||
"next_page_button_text": self._catalog.i18nc("@action:button", "Next"),
|
||||
"next_page_id": "whats_new",
|
||||
},
|
||||
{"id": "machine_actions",
|
||||
"page_url": self._getBuiltinWelcomePagePath("FirstStartMachineActionsContent.qml"),
|
||||
"should_show_function": self.shouldShowMachineActions,
|
||||
},
|
||||
{"id": "whats_new",
|
||||
"page_url": self._getBuiltinWelcomePagePath("WhatsNewContent.qml"),
|
||||
"next_page_button_text": self._catalog.i18nc("@action:button", "Skip"),
|
||||
},
|
||||
{"id": "changelog",
|
||||
"page_url": self._getBuiltinWelcomePagePath("ChangelogContent.qml"),
|
||||
"next_page_button_text": self._catalog.i18nc("@action:button", "Finish"),
|
||||
},
|
||||
]
|
||||
|
||||
pages_to_show = all_pages_list
|
||||
|
@ -1,8 +1,12 @@
|
||||
# Copyright (c) 2019 Ultimaker B.V.
|
||||
# Copyright (c) 2021 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from .WelcomePagesModel import WelcomePagesModel
|
||||
|
||||
import os
|
||||
from typing import Optional, Dict, List, Tuple
|
||||
from PyQt5.QtCore import pyqtProperty, pyqtSlot
|
||||
from UM.Logger import Logger
|
||||
from UM.Resources import Resources
|
||||
|
||||
#
|
||||
# This Qt ListModel is more or less the same the WelcomePagesModel, except that this model is only for showing the
|
||||
@ -10,13 +14,84 @@ from .WelcomePagesModel import WelcomePagesModel
|
||||
#
|
||||
class WhatsNewPagesModel(WelcomePagesModel):
|
||||
|
||||
image_formats = [".png", ".jpg", ".jpeg", ".gif", ".svg"]
|
||||
text_formats = [".txt", ".htm", ".html"]
|
||||
image_key = "image"
|
||||
text_key = "text"
|
||||
|
||||
@staticmethod
|
||||
def _collectOrdinalFiles(resource_type: int, include: List[str]) -> Tuple[Dict[int, str], int]:
|
||||
result = {} #type: Dict[int, str]
|
||||
highest = -1
|
||||
try:
|
||||
folder_path = Resources.getPath(resource_type, "whats_new")
|
||||
for _, _, files in os.walk(folder_path):
|
||||
for filename in files:
|
||||
basename = os.path.basename(filename)
|
||||
base, ext = os.path.splitext(basename)
|
||||
if ext not in include or not base.isdigit():
|
||||
continue
|
||||
page_no = int(base)
|
||||
highest = max(highest, page_no)
|
||||
result[page_no] = os.path.join(folder_path, filename)
|
||||
except FileNotFoundError:
|
||||
Logger.logException("w", "Could not find 'whats_new' folder for resource-type {0}".format(resource_type))
|
||||
return result, highest
|
||||
|
||||
@staticmethod
|
||||
def _loadText(filename: str) -> str:
|
||||
result = ""
|
||||
try:
|
||||
with open(filename, "r", encoding="utf-8") as file:
|
||||
result = file.read()
|
||||
except OSError:
|
||||
Logger.logException("w", "Could not open {0}".format(filename))
|
||||
return result
|
||||
|
||||
def initialize(self) -> None:
|
||||
self._pages = []
|
||||
self._pages.append({"id": "whats_new",
|
||||
"page_url": self._getBuiltinWelcomePagePath("WhatsNewContent.qml"),
|
||||
"next_page_button_text": self._catalog.i18nc("@action:button", "Skip"),
|
||||
"next_page_id": "changelog"
|
||||
})
|
||||
self._pages.append({"id": "changelog",
|
||||
"page_url": self._getBuiltinWelcomePagePath("ChangelogContent.qml"),
|
||||
"next_page_button_text": self._catalog.i18nc("@action:button", "Close"),
|
||||
})
|
||||
self.setItems(self._pages)
|
||||
|
||||
images, max_image = WhatsNewPagesModel._collectOrdinalFiles(Resources.Images, WhatsNewPagesModel.image_formats)
|
||||
texts, max_text = WhatsNewPagesModel._collectOrdinalFiles(Resources.Texts, WhatsNewPagesModel.text_formats)
|
||||
highest = max(max_image, max_text)
|
||||
|
||||
self._subpages = [] #type: List[Dict[str, Optional[str]]]
|
||||
for n in range(0, highest + 1):
|
||||
self._subpages.append({
|
||||
WhatsNewPagesModel.image_key: None if n not in images else images[n],
|
||||
WhatsNewPagesModel.text_key: None if n not in texts else self._loadText(texts[n])
|
||||
})
|
||||
if len(self._subpages) == 0:
|
||||
self._subpages.append({WhatsNewPagesModel.text_key: "~ There Is Nothing New Under The Sun ~"})
|
||||
|
||||
def _getSubpageItem(self, page: int, item: str) -> Optional[str]:
|
||||
if 0 <= page < self.subpageCount and item in self._subpages[page]:
|
||||
return self._subpages[page][item]
|
||||
else:
|
||||
return None
|
||||
|
||||
@pyqtProperty(int, constant = True)
|
||||
def subpageCount(self) -> int:
|
||||
return len(self._subpages)
|
||||
|
||||
@pyqtSlot(int, result = str)
|
||||
def getSubpageImageSource(self, page: int) -> str:
|
||||
result = self._getSubpageItem(page, WhatsNewPagesModel.image_key)
|
||||
return "file:///" + (result if result else Resources.getPath(Resources.Images, "cura-icon.png"))
|
||||
|
||||
@pyqtSlot(int, result = str)
|
||||
def getSubpageText(self, page: int) -> str:
|
||||
result = self._getSubpageItem(page, WhatsNewPagesModel.text_key)
|
||||
return result if result else "* * *"
|
||||
|
||||
__all__ = ["WhatsNewPagesModel"]
|
||||
|
@ -338,11 +338,6 @@ class PauseAtHeight(Script):
|
||||
if current_layer < pause_layer - nbr_negative_layers:
|
||||
continue
|
||||
|
||||
# Get X and Y from the next layer (better position for
|
||||
# the nozzle)
|
||||
next_layer = data[index + 1]
|
||||
x, y = self.getNextXY(next_layer)
|
||||
|
||||
prev_layer = data[index - 1]
|
||||
prev_lines = prev_layer.split("\n")
|
||||
current_e = 0.
|
||||
@ -353,6 +348,13 @@ class PauseAtHeight(Script):
|
||||
current_e = self.getValue(prevLine, "E", -1)
|
||||
if current_e >= 0:
|
||||
break
|
||||
# and also find last X,Y
|
||||
for prevLine in reversed(prev_lines):
|
||||
if prevLine.startswith(("G0", "G1", "G2", "G3")):
|
||||
if self.getValue(prevLine, "X") is not None and self.getValue(prevLine, "Y") is not None:
|
||||
x = self.getValue(prevLine, "X")
|
||||
y = self.getValue(prevLine, "Y")
|
||||
break
|
||||
|
||||
# Maybe redo the last layer.
|
||||
if redo_layer:
|
||||
@ -454,7 +456,7 @@ class PauseAtHeight(Script):
|
||||
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = 6000) + "\n"
|
||||
|
||||
#Move the head back
|
||||
prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n"
|
||||
prepend_gcode += self.putValue(G = 1, Z = current_z, F = 300) + "\n"
|
||||
prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n"
|
||||
if retraction_amount != 0:
|
||||
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = 6000) + "\n"
|
||||
|
BIN
resources/images/whats_new/0.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
resources/images/whats_new/1.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
resources/images/whats_new/2.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
@ -262,7 +262,7 @@ Item
|
||||
Action
|
||||
{
|
||||
id: deleteSelectionAction;
|
||||
text: catalog.i18ncp("@action:inmenu menubar:edit", "Delete Selected Model", "Delete Selected Models", UM.Selection.selectionCount);
|
||||
text: catalog.i18nc("@action:inmenu menubar:edit", "Delete Selected");
|
||||
enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection;
|
||||
iconName: "edit-delete";
|
||||
shortcut: StandardKey.Delete | "Backspace"
|
||||
@ -272,7 +272,7 @@ Item
|
||||
Action
|
||||
{
|
||||
id: centerSelectionAction;
|
||||
text: catalog.i18ncp("@action:inmenu menubar:edit", "Center Selected Model", "Center Selected Models", UM.Selection.selectionCount);
|
||||
text: catalog.i18nc("@action:inmenu menubar:edit", "Center Selected");
|
||||
enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection;
|
||||
iconName: "align-vertical-center";
|
||||
onTriggered: CuraActions.centerSelection();
|
||||
@ -281,7 +281,7 @@ Item
|
||||
Action
|
||||
{
|
||||
id: multiplySelectionAction;
|
||||
text: catalog.i18ncp("@action:inmenu menubar:edit", "Multiply Selected Model", "Multiply Selected Models", UM.Selection.selectionCount);
|
||||
text: catalog.i18nc("@action:inmenu menubar:edit", "Multiply Selected");
|
||||
enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection;
|
||||
iconName: "edit-duplicate";
|
||||
shortcut: "Ctrl+M"
|
||||
|
@ -18,7 +18,7 @@ OldControls.TableView
|
||||
Label
|
||||
{
|
||||
id: tableCellLabel
|
||||
color: UM.Theme.getColor("text")
|
||||
color: styleData.selected ? UM.Theme.getColor("primary_button_text") : UM.Theme.getColor("text")
|
||||
elide: Text.ElideRight
|
||||
text: styleData.value
|
||||
anchors.fill: parent
|
||||
@ -29,7 +29,7 @@ OldControls.TableView
|
||||
|
||||
rowDelegate: Rectangle
|
||||
{
|
||||
color: styleData.selected ? UM.Theme.getColor("secondary") : UM.Theme.getColor("main_background")
|
||||
color: styleData.selected ? UM.Theme.getColor("primary_button") : UM.Theme.getColor("main_background")
|
||||
height: UM.Theme.getSize("table_row").height
|
||||
}
|
||||
|
||||
|
@ -215,7 +215,7 @@ Item
|
||||
id: finishButton
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
text: catalog.i18nc("@button", "Finish")
|
||||
text: base.currentItem.next_page_button_text
|
||||
onClicked:
|
||||
{
|
||||
discoveredCloudPrintersModel.clear()
|
||||
|
59
resources/qml/WelcomePages/ChangelogContent.qml
Normal file
@ -0,0 +1,59 @@
|
||||
// Copyright (c) 2021 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// This component contains the content for the "What's new in Ultimaker Cura" page of the welcome on-boarding process.
|
||||
//
|
||||
Item
|
||||
{
|
||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||
|
||||
Label
|
||||
{
|
||||
id: titleLabel
|
||||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: catalog.i18nc("@label", "Release Notes / 'Changelog'")
|
||||
color: UM.Theme.getColor("primary_button")
|
||||
font: UM.Theme.getFont("huge")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Cura.ScrollableTextArea
|
||||
{
|
||||
id: changelogTextArea
|
||||
|
||||
anchors.top: titleLabel.bottom
|
||||
anchors.bottom: getStartedButton.top
|
||||
anchors.topMargin: UM.Theme.getSize("wide_margin").height
|
||||
anchors.bottomMargin: UM.Theme.getSize("wide_margin").height
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||
|
||||
textArea.text: CuraApplication.getTextManager().getChangeLogText()
|
||||
textArea.textFormat: Text.RichText
|
||||
textArea.wrapMode: Text.WordWrap
|
||||
textArea.readOnly: true
|
||||
textArea.font: UM.Theme.getFont("medium")
|
||||
textArea.onLinkActivated: Qt.openUrlExternally(link)
|
||||
}
|
||||
|
||||
Cura.PrimaryButton
|
||||
{
|
||||
id: getStartedButton
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
text: base.currentItem.next_page_button_text
|
||||
onClicked: base.showNextPage()
|
||||
}
|
||||
}
|
@ -34,93 +34,167 @@ Item
|
||||
}
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: titleLabel
|
||||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: catalog.i18nc("@label", "Ultimaker Account")
|
||||
color: UM.Theme.getColor("primary_button")
|
||||
font: UM.Theme.getFont("huge")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
// Area where the cloud contents can be put. Pictures, texts and such.
|
||||
Item
|
||||
{
|
||||
id: cloudContentsArea
|
||||
anchors
|
||||
{
|
||||
top: titleLabel.bottom
|
||||
top: parent.top
|
||||
bottom: skipButton.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
topMargin: UM.Theme.getSize("default_margin").height
|
||||
}
|
||||
|
||||
// Pictures and texts are arranged using Columns with spacing. The whole picture and text area is centered in
|
||||
// the cloud contents area.
|
||||
Column
|
||||
{
|
||||
anchors.centerIn: parent
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: parent.width
|
||||
height: childrenRect.height
|
||||
|
||||
spacing: 20 * screenScaleFactor
|
||||
spacing: UM.Theme.getSize("thick_margin").height
|
||||
|
||||
Image // Cloud image
|
||||
Label
|
||||
{
|
||||
id: titleLabel
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: catalog.i18nc("@label", "Sign in to the Ultimaker platform")
|
||||
color: UM.Theme.getColor("primary_button")
|
||||
font: UM.Theme.getFont("huge")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
// Filler item
|
||||
Item
|
||||
{
|
||||
height: UM.Theme.getSize("default_margin").height
|
||||
width: parent.width
|
||||
}
|
||||
|
||||
// Cloud image
|
||||
Image
|
||||
{
|
||||
id: cloudImage
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
source: UM.Theme.getImage("first_run_ultimaker_cloud")
|
||||
fillMode: Image.PreserveAspectFit
|
||||
width: UM.Theme.getSize("welcome_wizard_content_image_big").width
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
}
|
||||
|
||||
Label // A title-ish text
|
||||
|
||||
// Filler item
|
||||
Item
|
||||
{
|
||||
id: highlightTextLabel
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: catalog.i18nc("@text", "Your key to connected 3D printing")
|
||||
textFormat: Text.RichText
|
||||
color: UM.Theme.getColor("primary")
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
height: UM.Theme.getSize("default_margin").height
|
||||
width: parent.width
|
||||
}
|
||||
|
||||
Label // A number of text items
|
||||
// Motivational icons
|
||||
Row
|
||||
{
|
||||
id: textLabel
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text:
|
||||
id: motivationRow
|
||||
width: parent.width
|
||||
|
||||
Column
|
||||
{
|
||||
// There are 3 text items, each of which is translated separately as a single piece of text.
|
||||
var full_text = ""
|
||||
var t = ""
|
||||
id: marketplaceColumn
|
||||
width: Math.round(parent.width / 3)
|
||||
spacing: UM.Theme.getSize("default_margin").height
|
||||
|
||||
t = catalog.i18nc("@text", "- Customize your experience with more print profiles and plugins")
|
||||
full_text += "<p>" + t + "</p>"
|
||||
|
||||
t = catalog.i18nc("@text", "- Stay flexible by syncing your setup and loading it anywhere")
|
||||
full_text += "<p>" + t + "</p>"
|
||||
|
||||
t = catalog.i18nc("@text", "- Increase efficiency with a remote workflow on Ultimaker printers")
|
||||
full_text += "<p>" + t + "</p>"
|
||||
|
||||
return full_text
|
||||
Image
|
||||
{
|
||||
id: marketplaceImage
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
fillMode: Image.PreserveAspectFit
|
||||
width: UM.Theme.getSize("welcome_wizard_cloud_content_image").width
|
||||
source: UM.Theme.getIcon("package")
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: marketplaceTextLabel
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: parent.width
|
||||
text: catalog.i18nc("@text", "Add material settings and plugins from the Marketplace")
|
||||
wrapMode: Text.Wrap
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
color: UM.Theme.getColor("text")
|
||||
font: UM.Theme.getFont("default")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
||||
|
||||
Column
|
||||
{
|
||||
id: syncColumn
|
||||
width: Math.round(parent.width / 3)
|
||||
spacing: UM.Theme.getSize("default_margin").height
|
||||
|
||||
Image
|
||||
{
|
||||
id: syncImage
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
fillMode: Image.PreserveAspectFit
|
||||
width: UM.Theme.getSize("welcome_wizard_cloud_content_image").width
|
||||
source: UM.Theme.getIcon("material_spool")
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: syncTextLabel
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: parent.width
|
||||
text: catalog.i18nc("@text", "Backup and sync your material settings and plugins")
|
||||
wrapMode: Text.Wrap
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
color: UM.Theme.getColor("text")
|
||||
font: UM.Theme.getFont("default")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
||||
|
||||
Column
|
||||
{
|
||||
id: communityColumn
|
||||
width: Math.round(parent.width / 3)
|
||||
spacing: UM.Theme.getSize("default_margin").height
|
||||
|
||||
Image
|
||||
{
|
||||
id: communityImage
|
||||
anchors.horizontalCenter: communityColumn.horizontalCenter
|
||||
fillMode: Image.PreserveAspectFit
|
||||
width: UM.Theme.getSize("welcome_wizard_cloud_content_image").width
|
||||
source: UM.Theme.getIcon("group")
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: communityTextLabel
|
||||
anchors.horizontalCenter: communityColumn.horizontalCenter
|
||||
width: parent.width
|
||||
text: catalog.i18nc("@text", "Share ideas and get help from 48,000+ users in the Ultimaker Community")
|
||||
wrapMode: Text.Wrap
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
color: UM.Theme.getColor("text")
|
||||
font: UM.Theme.getFont("default")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
||||
textFormat: Text.RichText
|
||||
font: UM.Theme.getFont("medium")
|
||||
color: UM.Theme.getColor("text")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
// "Sign in" and "Create an account" exist inside the column
|
||||
// Sign in Button
|
||||
Cura.PrimaryButton
|
||||
{
|
||||
id: signInButton
|
||||
height: createAccountButton.height
|
||||
width: createAccountButton.width
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: catalog.i18nc("@button", "Sign in")
|
||||
onClicked: Cura.API.account.login()
|
||||
@ -135,16 +209,15 @@ Item
|
||||
}
|
||||
}
|
||||
|
||||
Cura.SecondaryButton
|
||||
// Create an account button
|
||||
Cura.TertiaryButton
|
||||
{
|
||||
id: createAccountButton
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: catalog.i18nc("@button","Create account")
|
||||
onClicked: Qt.openUrlExternally(CuraApplication.ultimakerCloudAccountRootUrl + "/app/create")
|
||||
text: catalog.i18nc("@text", "Create a free Ultimaker Account")
|
||||
onClicked: Qt.openUrlExternally(CuraApplication.ultimakerCloudAccountRootUrl + "/app/create")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// The "Skip" button exists on the bottom right
|
||||
|
@ -7,7 +7,6 @@ import QtQuick.Controls 2.3
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// This component contains the content for the "Welcome" page of the welcome on-boarding process.
|
||||
//
|
||||
@ -15,11 +14,39 @@ Item
|
||||
{
|
||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||
|
||||
Column // Arrange the items vertically and put everything in the center
|
||||
// Arrange the items vertically and put everything in the center
|
||||
Column
|
||||
{
|
||||
anchors.centerIn: parent
|
||||
width: parent.width
|
||||
spacing: 2 * UM.Theme.getSize("wide_margin").height
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: UM.Theme.getSize("thick_margin").height
|
||||
width:parent.width
|
||||
|
||||
|
||||
// Filler item
|
||||
Item
|
||||
{
|
||||
height: UM.Theme.getSize("thick_margin").width
|
||||
width: parent.width
|
||||
}
|
||||
|
||||
Image
|
||||
{
|
||||
id: curaImage
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
source: UM.Theme.getImage("first_run_welcome_cura")
|
||||
fillMode: Image.PreserveAspectFit
|
||||
width: UM.Theme.getSize("welcome_wizard_content_image_big").width
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
}
|
||||
|
||||
// Filler item
|
||||
Item
|
||||
{
|
||||
height: UM.Theme.getSize("thick_margin").width
|
||||
width: parent.width
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
@ -28,35 +55,43 @@ Item
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: catalog.i18nc("@label", "Welcome to Ultimaker Cura")
|
||||
color: UM.Theme.getColor("primary_button")
|
||||
font: UM.Theme.getFont("huge")
|
||||
font: UM.Theme.getFont("huge_bold")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Image
|
||||
{
|
||||
id: curaImage
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
source: UM.Theme.getImage("first_run_welcome_cura")
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: textLabel
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: catalog.i18nc("@text", "Please follow these steps to set up\nUltimaker Cura. This will only take a few moments.")
|
||||
width: titleLabel.width + 2 * UM.Theme.getSize("thick_margin").width
|
||||
text: catalog.i18nc("@text", "Please follow these steps to set up Ultimaker Cura. This will only take a few moments.")
|
||||
wrapMode: Text.Wrap
|
||||
font: UM.Theme.getFont("medium")
|
||||
color: UM.Theme.getColor("text")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
// Filler item
|
||||
Item
|
||||
{
|
||||
height: UM.Theme.getSize("thick_margin").height
|
||||
width: parent.width
|
||||
}
|
||||
|
||||
Cura.PrimaryButton
|
||||
{
|
||||
id: getStartedButton
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.margins: UM.Theme.getSize("wide_margin").width
|
||||
text: catalog.i18nc("@button", "Get started")
|
||||
onClicked: base.showNextPage()
|
||||
}
|
||||
|
||||
// Filler item
|
||||
Item
|
||||
{
|
||||
height: UM.Theme.getSize("thick_margin").height
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Copyright (c) 2021 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
@ -10,9 +11,12 @@ import Cura 1.1 as Cura
|
||||
|
||||
//
|
||||
// This component contains the content for the "What's new in Ultimaker Cura" page of the welcome on-boarding process.
|
||||
// Previously this was just the changelog, but now it will just have the larger stories, the changelog has its own page.
|
||||
//
|
||||
Item
|
||||
{
|
||||
property var manager: CuraApplication.getWhatsNewPagesModel()
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||
|
||||
Label
|
||||
@ -21,39 +25,164 @@ Item
|
||||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: catalog.i18nc("@label", "What's new in Ultimaker Cura")
|
||||
text: catalog.i18nc("@label", "What's New")
|
||||
color: UM.Theme.getColor("primary_button")
|
||||
font: UM.Theme.getFont("huge")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Cura.ScrollableTextArea
|
||||
Item
|
||||
{
|
||||
id: whatsNewTextArea
|
||||
|
||||
id: topSpacer
|
||||
anchors.top: titleLabel.bottom
|
||||
anchors.bottom: getStartedButton.top
|
||||
anchors.topMargin: UM.Theme.getSize("wide_margin").height
|
||||
anchors.bottomMargin: UM.Theme.getSize("wide_margin").height
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||
|
||||
textArea.text: CuraApplication.getTextManager().getChangeLogText()
|
||||
textArea.textFormat: Text.RichText
|
||||
textArea.wrapMode: Text.WordWrap
|
||||
textArea.readOnly: true
|
||||
textArea.font: UM.Theme.getFont("medium")
|
||||
textArea.onLinkActivated: Qt.openUrlExternally(link)
|
||||
height: UM.Theme.getSize("default_margin").height
|
||||
width: UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
|
||||
Cura.PrimaryButton
|
||||
Rectangle
|
||||
{
|
||||
id: getStartedButton
|
||||
anchors.right: parent.right
|
||||
anchors
|
||||
{
|
||||
top: topSpacer.bottom
|
||||
bottom: whatsNewDots.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
margins: UM.Theme.getSize("default_margin").width * 2
|
||||
}
|
||||
|
||||
color: UM.Theme.getColor("viewport_overlay")
|
||||
|
||||
StackLayout
|
||||
{
|
||||
id: whatsNewViewport
|
||||
|
||||
anchors
|
||||
{
|
||||
top: parent.top
|
||||
topMargin: UM.Theme.getSize("default_margin").width
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
height: parent.height
|
||||
width: parent.width
|
||||
|
||||
currentIndex: whatsNewDots.currentIndex
|
||||
|
||||
Repeater
|
||||
{
|
||||
anchors
|
||||
{
|
||||
top: parent.top
|
||||
topMargin: UM.Theme.getSize("default_margin").width / 2
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
model: manager.subpageCount
|
||||
|
||||
Rectangle
|
||||
{
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
color: UM.Theme.getColor("viewport_overlay")
|
||||
|
||||
Image
|
||||
{
|
||||
id: subpageImage
|
||||
|
||||
anchors
|
||||
{
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
top: parent.top
|
||||
topMargin: UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
width: parent.width - (UM.Theme.getSize("default_margin").width * 2)
|
||||
height: (parent.height - UM.Theme.getSize("default_margin").height) * 0.75
|
||||
fillMode: Image.PreserveAspectFit
|
||||
|
||||
source: manager.getSubpageImageSource(index)
|
||||
}
|
||||
|
||||
Cura.ScrollableTextArea
|
||||
{
|
||||
id: subpageText
|
||||
|
||||
anchors
|
||||
{
|
||||
top: subpageImage.bottom
|
||||
bottom: parent.bottom
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
width: parent.width - (UM.Theme.getSize("default_margin").width * 2)
|
||||
|
||||
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||
|
||||
back_color: UM.Theme.getColor("viewport_overlay")
|
||||
do_borders: false
|
||||
|
||||
textArea.wrapMode: TextEdit.Wrap
|
||||
textArea.text: manager.getSubpageText(index)
|
||||
textArea.textFormat: Text.RichText
|
||||
textArea.readOnly: true
|
||||
textArea.font: UM.Theme.getFont("medium")
|
||||
textArea.onLinkActivated: Qt.openUrlExternally(link)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PageIndicator
|
||||
{
|
||||
id: whatsNewDots
|
||||
|
||||
currentIndex: whatsNewViewport.currentIndex
|
||||
count: whatsNewViewport.count
|
||||
interactive: true
|
||||
|
||||
anchors
|
||||
{
|
||||
bottom: bottomSpacer.top
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
delegate:
|
||||
Rectangle
|
||||
{
|
||||
width: UM.Theme.getSize("thin_margin").width
|
||||
height: UM.Theme.getSize("thin_margin").height
|
||||
|
||||
radius: width / 2
|
||||
color:
|
||||
index === whatsNewViewport.currentIndex ?
|
||||
UM.Theme.getColor("primary") :
|
||||
UM.Theme.getColor("secondary_button_shadow")
|
||||
}
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
id: bottomSpacer
|
||||
anchors.bottom: whatsNewNextButton.top
|
||||
height: UM.Theme.getSize("default_margin").height / 2
|
||||
width: UM.Theme.getSize("default_margin").width / 2
|
||||
}
|
||||
|
||||
Cura.TertiaryButton
|
||||
{
|
||||
id: whatsNewNextButton
|
||||
anchors.left: parent.left
|
||||
anchors.bottom: parent.bottom
|
||||
text: base.currentItem.next_page_button_text
|
||||
onClicked: base.showNextPage()
|
||||
}
|
||||
|
||||
Cura.PrimaryButton
|
||||
{
|
||||
id: whatsNewSubpageButton
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
text: catalog.i18nc("@button", "Next")
|
||||
onClicked:
|
||||
whatsNewDots.currentIndex === (whatsNewDots.count - 1) ?
|
||||
base.showNextPage() :
|
||||
++whatsNewDots.currentIndex
|
||||
}
|
||||
}
|
||||
|
@ -15,13 +15,16 @@ ScrollView
|
||||
{
|
||||
property alias textArea: _textArea
|
||||
|
||||
property var back_color: UM.Theme.getColor("main_background")
|
||||
property var do_borders: true
|
||||
|
||||
clip: true
|
||||
|
||||
background: Rectangle // Border
|
||||
{
|
||||
color: UM.Theme.getColor("main_background")
|
||||
color: back_color
|
||||
border.color: UM.Theme.getColor("thick_lining")
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.width: do_borders ? UM.Theme.getSize("default_lining").width : 0
|
||||
}
|
||||
|
||||
TextArea
|
||||
|
5
resources/texts/whats_new/0.html
Normal file
@ -0,0 +1,5 @@
|
||||
<h4>Hot New Feature (1/2)</h4>
|
||||
<p>
|
||||
Lorem ipsum et cetera ad infinitum dolce et gabana carpe diem. <br/>
|
||||
Link to <a href="https://example.com">EXAMPLE</a>.
|
||||
</p>
|
2
resources/texts/whats_new/1.html
Normal file
@ -0,0 +1,2 @@
|
||||
<h4>Hot New Feature (2/2)</h4>
|
||||
<p>Pa's wijze lynx bezag vroom het fikse aquaduct.</p>
|
2
resources/texts/whats_new/2.html
Normal file
@ -0,0 +1,2 @@
|
||||
<h4>The other thing we wanted to tell you!</h4>
|
||||
<p>The quick brown fox jumps over the lazy dog.</p>
|
12
resources/themes/cura-light/icons/group.svg
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Artwork" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||
<path style="fill:#000E1A;" d="M40.2,26.8c1.1-0.9,1.8-2.3,1.8-3.8c0-2.8-2.2-5-5-5s-5,2.2-5,5c0,1.5,0.7,2.9,1.8,3.8
|
||||
c-0.5,0.3-1,0.6-1.5,1c-1.2-1.3-2.6-2.4-4.3-3.1c1.8-1.3,3-3.4,3-5.8c0-3.9-3.1-7-7-7s-7,3.1-7,7c0,2.4,1.2,4.5,3,5.8
|
||||
c-1.7,0.7-3.2,1.7-4.3,3.1c-0.4-0.4-0.9-0.7-1.5-1c1.1-0.9,1.8-2.3,1.8-3.8c0-2.8-2.2-5-5-5s-5,2.2-5,5c0,1.5,0.7,2.9,1.8,3.8
|
||||
C5.5,28,4,30.3,4,33v5h2v-5c0-2.8,2.2-5,5-5c1.3,0,2.6,0.5,3.5,1.5C13.6,31.1,13,33,13,35v5h2v-5c0-5,4-9,9-9s9,4,9,9v5h2v-5
|
||||
c0-2-0.6-3.9-1.5-5.5c0.9-0.9,2.2-1.5,3.5-1.5c2.8,0,5,2.2,5,5v4h2v-4C44,30.3,42.5,28,40.2,26.8z M8,23c0-1.7,1.3-3,3-3s3,1.3,3,3
|
||||
s-1.3,3-3,3S8,24.7,8,23z M19,19c0-2.8,2.2-5,5-5s5,2.2,5,5s-2.2,5-5,5S19,21.8,19,19z M34,23c0-1.7,1.3-3,3-3s3,1.3,3,3s-1.3,3-3,3
|
||||
S34,24.7,34,23z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
8
resources/themes/cura-light/icons/material_spool.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Artwork" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||
<path style="fill:#000E1A;" d="M24,4C13,4,4,13,4,24v18h2v-9.3C9.2,39.4,16.1,44,24,44c11,0,20-9,20-20S35,4,24,4z M24,42
|
||||
c-9.9,0-18-8.1-18-18S14.1,6,24,6s18,8.1,18,18S33.9,42,24,42z M24,17c-3.9,0-7,3.1-7,7s3.1,7,7,7s7-3.1,7-7S27.9,17,24,17z M24,29
|
||||
c-2.8,0-5-2.2-5-5s2.2-5,5-5s5,2.2,5,5S26.8,29,24,29z M24,11c3.5,0,6.7,1.4,9.2,3.8l-1.4,1.4C29.7,14.1,26.9,13,24,13V11z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 727 B |
7
resources/themes/cura-light/icons/package.svg
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Artwork" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||
<path style="fill:#000E1A;" d="M39,14V8H27v6h-6V8H9v6H7c-1.7,0-3,1.3-3,3v20c0,1.7,1.3,3,3,3h34c1.7,0,3-1.3,3-3V17
|
||||
c0-1.7-1.3-3-3-3H39z M29,10h8v4c-2.1,0-4.9,0-8,0V10z M11,10h8v4c-3,0-5.8,0-8,0V10z M42,38H6V16h36V38z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 577 B |
@ -1,12 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="200px" height="135px" viewBox="0 0 200 135" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Group-cloud</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M184.645934,101.269713 C184.402632,95.7100464 182.987439,90.4490704 180.637153,85.7196609 L184.851695,85.7196609 C187.817797,85.7196609 190.254237,83.3353195 190.254237,80.4326431 L190.36017,80.4326431 L190.36017,16.262763 C190.36017,15.1224259 189.40678,14.2930898 188.347457,14.2930898 L149.933791,14.2930898 L149.933791,63.9459005 C148.198887,63.7202321 146.428947,63.6037711 144.631348,63.6037711 C142.750807,63.6037711 140.900537,63.7312272 139.088982,63.9778345 L139.088982,14.2930898 L138.930084,14.2930898 L138.930084,11.4224041 C138.588831,10.5826557 137.742066,10.0297833 136.824681,10.0297833 L63.0561437,10.0297833 C61.7452327,10.0297833 60.7918428,11.0794119 60.7918428,12.2456657 L60.7918428,84.4367811 C60.7918428,87.7022917 63.5328385,90.3846758 66.8697029,90.3846758 L106.674877,90.3846758 C105.315869,94.3430337 104.579138,98.5831707 104.579138,102.99253 C104.579138,104.646987 104.68286,106.27762 104.884257,107.878484 L65.082097,107.878484 C63.771186,107.995109 62.460275,108.461611 61.5068852,109.277988 L60.7918428,109.977741 C60.0768004,111.143995 58.6467157,111.377246 57.216631,111.377246 L50.7812497,111.377246 C50.4237285,111.377246 50.0662073,111.027369 50.0662073,110.677493 L50.0662073,101.269713 L13.3474575,101.269713 C12.1822033,101.373379 11.0169491,101.788048 10.1694914,102.513717 L9.53389824,103.135719 C8.89830503,104.172389 7.62711862,104.379723 6.35593214,104.379723 L0.635593219,104.379723 C0.317796608,104.379723 -6.39488462e-14,104.068722 -6.39488462e-14,103.757721 C-6.39488462e-14,5.68872783 0.317796608,5.3777268 0.635593219,5.3777268 L50.0662073,5.3777268 L50.0662073,0.699752327 C50.0662073,0.349876165 50.4237285,-1.63424829e-13 50.7812497,-1.63424829e-13 C149.57627,-1.63424829e-13 149.933791,0.349876165 149.933791,0.699752327 L149.933791,5.3777268 L199.364407,5.3777268 C199.682204,5.3777268 200,5.68872783 200,5.99972886 L200,103.757721 C200,104.068722 199.682204,104.379723 199.364407,104.379723 L193.644068,104.379723 C192.478814,104.276056 191.313559,103.861388 190.466102,103.135719 L189.830509,102.513717 C189.194915,101.477046 187.923729,101.269713 186.652543,101.269713 L184.645934,101.269713 Z M50.0662073,14.2930898 L11.5466101,14.2930898 C10.3813559,14.2930898 9.53389824,15.2260929 9.53389824,16.262763 L9.53389824,80.4326431 C9.53389824,83.3353195 11.9703389,85.7196609 14.9364406,85.7196609 L50.0662073,85.7196609 L50.0662073,14.2930898 Z" fill="#08073F" fill-rule="nonzero"></path>
|
||||
<g transform="translate(112.574850, 70.658683)" fill="#3282FF">
|
||||
<path d="M32.3080573,64.1243454 C14.46481,64.1243454 1.42108547e-14,49.7696217 1.42108547e-14,32.0621727 C1.42108547e-14,14.3547237 14.46481,-4.26325641e-14 32.3080573,-4.26325641e-14 C50.1513046,-4.26325641e-14 64.6161146,14.3547237 64.6161146,32.0621727 C64.6161146,49.7696217 50.1513046,64.1243454 32.3080573,64.1243454 Z M46.2852901,26.9720257 C45.8876525,23.478071 42.9053703,20.8062233 39.3266316,20.8062233 C38.3325376,20.8062233 37.5372623,21.0117501 36.741987,21.4228035 C34.9526177,18.5454291 31.7715167,16.6956884 28.3915969,16.6956884 C22.8246701,16.6956884 18.4506561,21.2172768 18.4506561,26.9720257 C18.4506561,26.9720257 18.4506561,26.9720257 18.4506561,27.1775525 C15.0707363,27.588606 12.4860917,30.6715072 12.4860917,34.165462 C12.4860917,38.0704701 15.6671927,41.3588981 19.4447502,41.3588981 C22.4270324,41.3588981 41.7124574,41.3588981 45.2911961,41.3588981 C49.0687535,41.3588981 52.2498546,38.0704701 52.2498546,34.165462 C52.2498546,30.4659805 49.66521,27.588606 46.2852901,26.9720257 Z"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 325.48 197.18">
|
||||
<defs>
|
||||
<style type="text/css">.cls-1,.cls-4{fill:#f3f8fe;}.cls-1,.cls-5{stroke:#061884;}.cls-1,.cls-6{stroke-miterlimit:10;}.cls-1,.cls-5,.cls-6,.cls-7{stroke-width:2px;}.cls-2,.cls-5{fill:#fff;}.cls-3{fill:#061884;}.cls-5,.cls-7{stroke-linecap:round;stroke-linejoin:round;}.cls-6,.cls-7{fill:none;stroke:#2c3278;}.cls-8{fill:#292f79;fill-rule:evenodd;}</style>
|
||||
</defs>
|
||||
<path class="cls-1" d="M47.68,9.26H277.81a6.1,6.1,0,0,1,6.1,6.1V172.48a0,0,0,0,1,0,0H41.57a0,0,0,0,1,0,0V15.36A6.1,6.1,0,0,1,47.68,9.26Z"/>
|
||||
<path class="cls-2" d="M50.88,173.48a1,1,0,0,1-1-1V19.57a2,2,0,0,1,2-2H272.61a3,3,0,0,1,3,3V172.48a1,1,0,0,1-1,1Z"/>
|
||||
<path class="cls-3" d="M272.61,18.57a2,2,0,0,1,2,2V172.48H50.88V19.57a1,1,0,0,1,1-1H272.61m0-2H51.88a3,3,0,0,0-3,3V172.48a2,2,0,0,0,2,2H274.61a2,2,0,0,0,2-2V20.57a4,4,0,0,0-4-4Z"/>
|
||||
<path class="cls-4" d="M272.61,20.57V170.48H52.88V20.57H272.61m0-2H51.88a1,1,0,0,0-1,1V172.48H274.61V20.57a2,2,0,0,0-2-2Z"/>
|
||||
<line class="cls-5" x1="14.64" y1="187.91" x2="310.85" y2="187.91"/>
|
||||
<path class="cls-4" d="M35.34,187.91a15.49,15.49,0,0,1-15.48-15.48,1,1,0,0,1,1-1H304.63a1,1,0,0,1,1,1,15.5,15.5,0,0,1-15.49,15.48Z"/>
|
||||
<path class="cls-3" d="M304.63,172.43h0a14.48,14.48,0,0,1-14.49,14.48H35.34a14.48,14.48,0,0,1-14.48-14.48H304.63m0-2H20.86a2,2,0,0,0-2,2,16.49,16.49,0,0,0,16.48,16.48h254.8a16.5,16.5,0,0,0,16.49-16.48,2,2,0,0,0-2-2Z"/>
|
||||
<path class="cls-3" d="M185.24,172.43h-45v.6a4.4,4.4,0,0,0,4.4,4.4h36.21a4.4,4.4,0,0,0,4.39-4.4Z"/>
|
||||
<polygon class="cls-6" points="180.22 140.51 117.36 140.51 117.36 77.7 144.3 50.78 207.16 50.78 207.16 113.59 180.22 140.51"/>
|
||||
<path class="cls-7" d="M175.73,73.21H162.26a22.44,22.44,0,1,0,0,44.87h13.47"/>
|
||||
<circle class="cls-2" cx="207.16" cy="50.75" r="31"/>
|
||||
<path class="cls-8" d="M206.73,28.14a22.39,22.39,0,1,0,22.43,22.39A22.4,22.4,0,0,0,206.73,28.14Zm-14,36.94a17.94,17.94,0,0,1,27.91,0A20.12,20.12,0,0,1,192.77,65.08Zm4.43-18.47a9.53,9.53,0,1,1,9.53,9.51A9.53,9.53,0,0,1,197.2,46.61Zm25,16.8a20.18,20.18,0,0,0-9.87-6.48,11.79,11.79,0,1,0-11.21,0,20.13,20.13,0,0,0-9.87,6.48,20.14,20.14,0,1,1,30.95,0Z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 2.2 KiB |
@ -1,11 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="120px" height="72px" viewBox="0 0 120 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>cura</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Iteration-4" stroke="none" stroke-width="1" fill="#000000" fill-rule="nonzero">
|
||||
<path d="M114.3,63.1 C112.104248,65.5577268 108.994324,67.0042033 105.7,67.1 L14.3,67.1 C11.0056762,67.0042033 7.89575168,65.5577268 5.7,63.1 L114.3,63.1 Z M120,59.1 L0,59.1 L0,59.9 C0,64.5 6.3,71.1 14.3,71.1 L105.7,71.1 C113.7,71.1 120,64.4 120,59.9 L120,59.1 Z" />
|
||||
<path d="M106,4.9 L106,59.1 L14,59.1 L14,4.9 L106,4.9 Z M110,0.9 L10,0.9 L10,63.1 L110,63.1 L110,0.9 Z" />
|
||||
<path d="M60.5,36.5 L72.3,36.5 L72.3,43.1 L60.5,43.1 C52.8,43.1 48,37.8 48,30.3 C48,22.8 52.7,17.6 60.5,17.6 L72.3,17.6 L72.3,24.2 L60.5,24.2 C56.6,24.2 54.6,27 54.6,30.3 C54.6,33.7 56.6,36.5 60.5,36.5 Z M52.3,8.9 L36.9,24.5 L36.9,55.1 L67.6,55.1 L83.2,39.5 L83.2,8.9 L52.3,8.9 Z" />
|
||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 325.48 197.18">
|
||||
<defs>
|
||||
<style type="text/css">.cls-1,.cls-4{fill:#f3f8fe;}.cls-1,.cls-5{stroke:#061884;}.cls-1,.cls-6{stroke-miterlimit:10;}.cls-1,.cls-5,.cls-6,.cls-7{stroke-width:2px;}.cls-2,.cls-5{fill:#fff;}.cls-3{fill:#061884;}.cls-5,.cls-7{stroke-linecap:round;stroke-linejoin:round;}.cls-6,.cls-7{fill:none;stroke:#2c3278;}</style>
|
||||
</defs>
|
||||
<g id="Software">
|
||||
<path class="cls-1" d="M47.68,9.26H277.81a6.1,6.1,0,0,1,6.1,6.1V172.48a0,0,0,0,1,0,0H41.57a0,0,0,0,1,0,0V15.36a6.1,6.1,0,0,1,6.1-6.1Z"/>
|
||||
<path class="cls-2" d="M50.88,173.48a1,1,0,0,1-1-1V19.57a2,2,0,0,1,2-2H272.61a3,3,0,0,1,3,3V172.48a1,1,0,0,1-1,1Z"/>
|
||||
<path class="cls-3" d="M272.61,18.57a2,2,0,0,1,2,2V172.48H50.88V19.57a1,1,0,0,1,1-1H272.61m0-2H51.88a3,3,0,0,0-3,3V172.48a2,2,0,0,0,2,2H274.61a2,2,0,0,0,2-2V20.57a4,4,0,0,0-4-4Z"/>
|
||||
<path class="cls-4" d="M272.61,20.57V170.48H52.88V20.57H272.61m0-2H51.88a1,1,0,0,0-1,1V172.48H274.61V20.57a2,2,0,0,0-2-2Z"/>
|
||||
<line class="cls-5" x1="14.64" y1="187.91" x2="310.85" y2="187.91"/>
|
||||
<path class="cls-4" d="M35.34,187.91a15.49,15.49,0,0,1-15.48-15.48,1,1,0,0,1,1-1H304.63a1,1,0,0,1,1,1,15.5,15.5,0,0,1-15.49,15.48Z"/>
|
||||
<path class="cls-3" d="M304.63,172.43h0a14.48,14.48,0,0,1-14.49,14.48H35.34a14.48,14.48,0,0,1-14.48-14.48H304.63m0-2H20.86a2,2,0,0,0-2,2,16.49,16.49,0,0,0,16.48,16.48h254.8a16.5,16.5,0,0,0,16.49-16.48,2,2,0,0,0-2-2Z"/>
|
||||
<path class="cls-3" d="M185.24,172.43h-45v.6a4.4,4.4,0,0,0,4.4,4.4h36.21a4.4,4.4,0,0,0,4.39-4.4Z"/>
|
||||
<polygon class="cls-6" points="180.22 140.51 117.36 140.51 117.36 77.7 144.3 50.78 207.16 50.78 207.16 113.59 180.22 140.51"/>
|
||||
<path class="cls-7" d="M175.73,73.21H162.26a22.44,22.44,0,1,0,0,44.87h13.47"/>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.8 KiB |
@ -34,6 +34,11 @@
|
||||
"weight": 50,
|
||||
"family": "Noto Sans"
|
||||
},
|
||||
"huge_bold": {
|
||||
"size": 1.8,
|
||||
"weight": 63,
|
||||
"family": "Noto Sans"
|
||||
},
|
||||
"medium": {
|
||||
"size": 1.16,
|
||||
"weight": 40,
|
||||
@ -576,7 +581,7 @@
|
||||
|
||||
"monitor_preheat_temperature_control": [4.5, 2.0],
|
||||
|
||||
"welcome_wizard_window": [46.0, 45],
|
||||
"welcome_wizard_window": [46, 45],
|
||||
"modal_window_minimum": [60.0, 45],
|
||||
"license_window_minimum": [45, 45],
|
||||
"wizard_progress": [10.0, 0.0],
|
||||
@ -633,6 +638,9 @@
|
||||
"monitor_progress_bar": [16.5, 1.0],
|
||||
"monitor_margin": [1.5, 1.5],
|
||||
|
||||
"table_row": [2.0, 2.0]
|
||||
"table_row": [2.0, 2.0],
|
||||
|
||||
"welcome_wizard_content_image_big": [18, 15],
|
||||
"welcome_wizard_cloud_content_image": [4, 4]
|
||||
}
|
||||
}
|
||||
|