Halway over the UI revamp

This commit is contained in:
Alex Spataru 2024-08-11 18:20:03 -05:00
parent 87a8329c84
commit 0144b5c300
83 changed files with 2017 additions and 2405 deletions

View File

@ -44,6 +44,16 @@ set(PROJECT_DESCRIPTION_FILE "${PROJECT_ROOT_DIR}/README.md")
set(PROJECT_FILE_NAME "${PROJECT_EXECUTABLE}-v${PROJECT_VERSION}") set(PROJECT_FILE_NAME "${PROJECT_EXECUTABLE}-v${PROJECT_VERSION}")
set(PROJECT_FILE_LICENSE "${PROJECT_ROOT_DIR}/LICENSE.md") set(PROJECT_FILE_LICENSE "${PROJECT_ROOT_DIR}/LICENSE.md")
#-------------------------------------------------------------------------------
# Allow source code to access project information
#-------------------------------------------------------------------------------
add_definitions(-DPROJECT_VENDOR="${PROJECT_VENDOR}")
add_definitions(-DPROJECT_CONTACT="${PROJECT_CONTACT}")
add_definitions(-DPROJECT_VERSION="${PROJECT_VERSION}")
add_definitions(-DPROJECT_APPCAST="${PROJECT_APPCAST}")
add_definitions(-DPROJECT_DISPNAME="${PROJECT_DISPNAME}")
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# Compiler flags # Compiler flags
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------

View File

@ -37,16 +37,6 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
#-------------------------------------------------------------------------------
# Allow source code to access project information
#-------------------------------------------------------------------------------
add_definitions(-DPROJECT_VENDOR="${PROJECT_VENDOR}")
add_definitions(-DPROJECT_CONTACT="${PROJECT_CONTACT}")
add_definitions(-DPROJECT_VERSION="${PROJECT_VERSION}")
add_definitions(-DPROJECT_APPCAST="${PROJECT_APPCAST}")
add_definitions(-DPROJECT_DISPNAME="${PROJECT_DISPNAME}")
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# Add external dependencies (Qt) # Add external dependencies (Qt)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
@ -182,7 +172,6 @@ set(QML_CODE
qml/MainWindow/Panes/Dashboard.qml qml/MainWindow/Panes/Dashboard.qml
qml/MainWindow/Panes/SetupPanes/Settings.qml qml/MainWindow/Panes/SetupPanes/Settings.qml
qml/MainWindow/Panes/SetupPanes/Hardware.qml qml/MainWindow/Panes/SetupPanes/Hardware.qml
qml/MainWindow/Panes/SetupPanes/MQTT.qml
qml/MainWindow/Panes/SetupPanes/Devices/Serial.qml qml/MainWindow/Panes/SetupPanes/Devices/Serial.qml
qml/MainWindow/Panes/SetupPanes/Devices/BluetoothLE.qml qml/MainWindow/Panes/SetupPanes/Devices/BluetoothLE.qml
qml/MainWindow/Panes/SetupPanes/Devices/Network.qml qml/MainWindow/Panes/SetupPanes/Devices/Network.qml

View File

@ -41,72 +41,42 @@ Window {
height: minimumHeight height: minimumHeight
x: (Screen.desktopAvailableWidth - width) / 2 x: (Screen.desktopAvailableWidth - width) / 2
y: (Screen.desktopAvailableHeight - height) / 2 y: (Screen.desktopAvailableHeight - height) / 2
minimumWidth: column.implicitWidth + 4 * app.spacing minimumWidth: column.implicitWidth + 32
maximumWidth: column.implicitWidth + 4 * app.spacing maximumWidth: column.implicitWidth + 32
minimumHeight: column.implicitHeight + 4 * app.spacing minimumHeight: column.implicitHeight + 32
maximumHeight: column.implicitHeight + 4 * app.spacing maximumHeight: column.implicitHeight + 32
Component.onCompleted: {
root.flags = Qt.Dialog |
Qt.WindowTitleHint |
Qt.WindowStaysOnTopHint |
Qt.WindowCloseButtonHint
}
// //
// Use page item to set application palette // Use page item to set application palette
// //
Page { Page {
anchors.fill: parent anchors.fill: parent
palette.alternateBase: Cpp_ThemeManager.base palette.base: Cpp_ThemeManager.colors["base"]
palette.base: Cpp_ThemeManager.base palette.text: Cpp_ThemeManager.colors["text"]
palette.brightText: Cpp_ThemeManager.brightText palette.button: Cpp_ThemeManager.colors["button"]
palette.button: Cpp_ThemeManager.button palette.window: Cpp_ThemeManager.colors["window"]
palette.buttonText: Cpp_ThemeManager.buttonText palette.windowText: Cpp_ThemeManager.colors["text"]
palette.highlight: Cpp_ThemeManager.highlight palette.buttonText: Cpp_ThemeManager.colors["button_text"]
palette.highlightedText: Cpp_ThemeManager.highlightedText palette.highlight: Cpp_ThemeManager.colors["switch_highlight"]
palette.link: Cpp_ThemeManager.link palette.placeholderText: Cpp_ThemeManager.colors["placeholder_text"]
palette.placeholderText: Cpp_ThemeManager.placeholderText palette.highlightedText: Cpp_ThemeManager.colors["highlighted_text"]
palette.text: Cpp_ThemeManager.text
palette.toolTipBase: Cpp_ThemeManager.tooltipBase
palette.toolTipText: Cpp_ThemeManager.tooltipText
palette.window: Cpp_ThemeManager.window
palette.windowText: Cpp_ThemeManager.windowText
background: Rectangle {
radius: root.radius
color: root.backgroundColor
Rectangle {
height: root.radius
color: root.backgroundColor
anchors {
top: parent.top
left: parent.left
right: parent.right
}
}
}
//
// Window drag handler
//
Item {
anchors.fill: parent
MouseArea {
anchors.fill: parent
onPressedChanged: {
if (pressed)
root.startSystemMove()
}
}
}
// //
// Window controls // Window controls
// //
ColumnLayout { ColumnLayout {
id: column id: column
spacing: app.spacing spacing: 4
anchors.centerIn: parent anchors.centerIn: parent
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
Image { Image {
@ -123,7 +93,7 @@ Window {
} }
ColumnLayout { ColumnLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
@ -154,12 +124,11 @@ Window {
Layout.fillWidth: true Layout.fillWidth: true
Layout.maximumWidth: 320 Layout.maximumWidth: 320
wrapMode: Label.WrapAtWordBoundaryOrAnywhere wrapMode: Label.WrapAtWordBoundaryOrAnywhere
color: Cpp_ThemeManager.highlightedTextAlternative
text: qsTr("The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.") text: qsTr("The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.")
} }
Item { Item {
height: app.spacing height: 8
} }
Button { Button {
@ -170,13 +139,13 @@ Window {
Button { Button {
Layout.fillWidth: true Layout.fillWidth: true
text: qsTr("Make a donation") text: qsTr("Make a Donation")
onClicked: app.donateDialog.show() onClicked: donateDialog.show()
} }
Button { Button {
Layout.fillWidth: true Layout.fillWidth: true
text: qsTr("Report bug") text: qsTr("Report Bug")
onClicked: Qt.openUrlExternally("https://github.com/Serial-Studio/Serial-Studio/issues") onClicked: Qt.openUrlExternally("https://github.com/Serial-Studio/Serial-Studio/issues")
} }
@ -189,17 +158,17 @@ Window {
Button { Button {
Layout.fillWidth: true Layout.fillWidth: true
text: qsTr("Acknowledgements") text: qsTr("Acknowledgements")
onClicked: acknowledgementsDialog.show() onClicked: app.showAcknowledgements()
} }
Item { Item {
height: app.spacing height: 8
} }
Button { Button {
text: qsTr("Close")
Layout.fillWidth: true Layout.fillWidth: true
onClicked: root.close() onClicked: root.close()
text: qsTr("Close")
} }
} }
} }

View File

@ -36,58 +36,38 @@ Window {
title: qsTr("Acknowledgements") title: qsTr("Acknowledgements")
x: (Screen.desktopAvailableWidth - width) / 2 x: (Screen.desktopAvailableWidth - width) / 2
y: (Screen.desktopAvailableHeight - height) / 2 y: (Screen.desktopAvailableHeight - height) / 2
minimumWidth: column.implicitWidth + 4 * app.spacing + 2 * root.shadowMargin minimumWidth: column.implicitWidth + 32
maximumWidth: column.implicitWidth + 4 * app.spacing + 2 * root.shadowMargin maximumWidth: column.implicitWidth + 32
minimumHeight: column.implicitHeight + 4 * app.spacing + titlebar.height + 2 * root.shadowMargin minimumHeight: column.implicitHeight + 32
maximumHeight: column.implicitHeight + 4 * app.spacing + titlebar.height + 2 * root.shadowMargin maximumHeight: column.implicitHeight + 32
Component.onCompleted: {
root.flags = Qt.Dialog |
Qt.WindowTitleHint |
Qt.WindowStaysOnTopHint |
Qt.WindowCloseButtonHint
}
// //
// Use page item to set application palette // Use page item to set application palette
// //
Page { Page {
anchors { anchors.fill: parent
fill: parent palette.base: Cpp_ThemeManager.colors["base"]
margins: root.shadowMargin palette.text: Cpp_ThemeManager.colors["text"]
topMargin: titlebar.height + root.shadowMargin palette.button: Cpp_ThemeManager.colors["button"]
} palette.window: Cpp_ThemeManager.colors["window"]
palette.windowText: Cpp_ThemeManager.colors["text"]
palette.alternateBase: Cpp_ThemeManager.base palette.buttonText: Cpp_ThemeManager.colors["button_text"]
palette.base: Cpp_ThemeManager.base palette.highlight: Cpp_ThemeManager.colors["switch_highlight"]
palette.brightText: Cpp_ThemeManager.brightText palette.placeholderText: Cpp_ThemeManager.colors["placeholder_text"]
palette.button: Cpp_ThemeManager.button palette.highlightedText: Cpp_ThemeManager.colors["highlighted_text"]
palette.buttonText: Cpp_ThemeManager.buttonText
palette.highlight: Cpp_ThemeManager.highlight
palette.highlightedText: Cpp_ThemeManager.highlightedText
palette.link: Cpp_ThemeManager.link
palette.placeholderText: Cpp_ThemeManager.placeholderText
palette.text: Cpp_ThemeManager.text
palette.toolTipBase: Cpp_ThemeManager.tooltipBase
palette.toolTipText: Cpp_ThemeManager.tooltipText
palette.window: Cpp_ThemeManager.window
palette.windowText: Cpp_ThemeManager.windowText
background: Rectangle {
radius: root.radius
color: root.backgroundColor
Rectangle {
height: root.radius
color: root.backgroundColor
anchors {
top: parent.top
left: parent.left
right: parent.right
}
}
}
// //
// Window controls // Window controls
// //
ColumnLayout { ColumnLayout {
id: column id: column
spacing: app.spacing spacing: 8
anchors.centerIn: parent anchors.centerIn: parent
ScrollView { ScrollView {

View File

@ -34,12 +34,18 @@ Window {
width: minimumWidth width: minimumWidth
height: minimumHeight height: minimumHeight
title: qsTr("CSV Player") title: qsTr("CSV Player")
minimumWidth: column.implicitWidth + 32
maximumWidth: column.implicitWidth + 32
minimumHeight: column.implicitHeight + 32
maximumHeight: column.implicitHeight + 32
x: (Screen.desktopAvailableWidth - width) / 2 x: (Screen.desktopAvailableWidth - width) / 2
y: (Screen.desktopAvailableHeight - height) / 2 y: (Screen.desktopAvailableHeight - height) / 2
minimumWidth: column.implicitWidth + 4 * app.spacing + 2 * root.shadowMargin Component.onCompleted: {
maximumWidth: column.implicitWidth + 4 * app.spacing + 2 * root.shadowMargin root.flags = Qt.Dialog |
minimumHeight: column.implicitHeight + 4 * app.spacing + titlebar.height + 2 * root.shadowMargin Qt.WindowTitleHint |
maximumHeight: column.implicitHeight + 4 * app.spacing + titlebar.height + 2 * root.shadowMargin Qt.WindowStaysOnTopHint |
Qt.WindowCloseButtonHint
}
// //
// Close CSV file when window is closed // Close CSV file when window is closed
@ -66,50 +72,25 @@ Window {
// Use page item to set application palette // Use page item to set application palette
// //
Page { Page {
anchors { anchors.fill: parent
fill: parent palette.base: Cpp_ThemeManager.colors["base"]
margins: root.shadowMargin palette.text: Cpp_ThemeManager.colors["text"]
topMargin: titlebar.height + root.shadowMargin palette.button: Cpp_ThemeManager.colors["button"]
} palette.window: Cpp_ThemeManager.colors["window"]
palette.windowText: Cpp_ThemeManager.colors["text"]
palette.alternateBase: Cpp_ThemeManager.base palette.buttonText: Cpp_ThemeManager.colors["button_text"]
palette.base: Cpp_ThemeManager.base palette.highlight: Cpp_ThemeManager.colors["switch_highlight"]
palette.brightText: Cpp_ThemeManager.brightText palette.placeholderText: Cpp_ThemeManager.colors["placeholder_text"]
palette.button: Cpp_ThemeManager.button palette.highlightedText: Cpp_ThemeManager.colors["highlighted_text"]
palette.buttonText: Cpp_ThemeManager.buttonText
palette.highlight: Cpp_ThemeManager.highlight
palette.highlightedText: Cpp_ThemeManager.highlightedText
palette.link: Cpp_ThemeManager.link
palette.placeholderText: Cpp_ThemeManager.placeholderText
palette.text: Cpp_ThemeManager.text
palette.toolTipBase: Cpp_ThemeManager.tooltipBase
palette.toolTipText: Cpp_ThemeManager.tooltipText
palette.window: Cpp_ThemeManager.window
palette.windowText: Cpp_ThemeManager.windowText
background: Rectangle {
radius: root.radius
color: root.backgroundColor
Rectangle {
height: root.radius
color: root.backgroundColor
anchors {
top: parent.top
left: parent.left
right: parent.right
}
}
}
// //
// Window controls // Window controls
// //
ColumnLayout { ColumnLayout {
id: column id: column
anchors.centerIn: parent spacing: 4
spacing: app.spacing * 2 anchors.margins: 16
anchors.fill: parent
// //
// Timestamp display // Timestamp display
@ -132,40 +113,51 @@ Window {
} }
} }
//
// Spacer
//
Item {
Layout.minimumHeight: 4
}
// //
// Play/pause buttons // Play/pause buttons
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
Button { Button {
icon.width: 18
icon.height: 18
opacity: enabled ? 1 : 0.5 opacity: enabled ? 1 : 0.5
icon.color: Cpp_ThemeManager.text
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
onClicked: Cpp_CSV_Player.previousFrame() onClicked: Cpp_CSV_Player.previousFrame()
icon.source: "qrc:/icons/media-prev.svg" icon.source: "qrc:/icons/buttons/media-prev.svg"
icon.color: Cpp_ThemeManager.colors["button_text"]
enabled: Cpp_CSV_Player.progress > 0 && !Cpp_CSV_Player.isPlaying enabled: Cpp_CSV_Player.progress > 0 && !Cpp_CSV_Player.isPlaying
} }
Button { Button {
icon.width: 32 icon.width: 32
icon.height: 32 icon.height: 32
icon.color: Cpp_ThemeManager.text
onClicked: Cpp_CSV_Player.toggle() onClicked: Cpp_CSV_Player.toggle()
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
icon.source: Cpp_CSV_Player.isPlaying ? "qrc:/icons/media-pause.svg" : icon.color: Cpp_ThemeManager.colors["button_text"]
"qrc:/icons/media-play.svg" icon.source: Cpp_CSV_Player.isPlaying ? "qrc:/icons/buttons/media-pause.svg" :
"qrc:/icons/buttons/media-play.svg"
} }
Button { Button {
icon.width: 18
icon.height: 18
opacity: enabled ? 1 : 0.5 opacity: enabled ? 1 : 0.5
icon.color: Cpp_ThemeManager.text
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
onClicked: Cpp_CSV_Player.nextFrame() onClicked: Cpp_CSV_Player.nextFrame()
icon.source: "qrc:/icons/media-next.svg" icon.source: "qrc:/icons/buttons/media-next.svg"
icon.color: Cpp_ThemeManager.colors["button_text"]
enabled: Cpp_CSV_Player.progress < 1 && !Cpp_CSV_Player.isPlaying enabled: Cpp_CSV_Player.progress < 1 && !Cpp_CSV_Player.isPlaying
} }
} }

View File

@ -35,12 +35,18 @@ Window {
title: qsTr("Donate") title: qsTr("Donate")
width: minimumWidth width: minimumWidth
height: minimumHeight height: minimumHeight
minimumWidth: column.implicitWidth + 32
maximumWidth: column.implicitWidth + 32
minimumHeight: column.implicitHeight + 32
maximumHeight: column.implicitHeight + 32
x: (Screen.desktopAvailableWidth - width) / 2 x: (Screen.desktopAvailableWidth - width) / 2
y: (Screen.desktopAvailableHeight - height) / 2 y: (Screen.desktopAvailableHeight - height) / 2
minimumWidth: column.implicitWidth + 4 * app.spacing + 2 * root.shadowMargin Component.onCompleted: {
maximumWidth: column.implicitWidth + 4 * app.spacing + 2 * root.shadowMargin root.flags = Qt.Dialog |
minimumHeight: column.implicitHeight + 4 * app.spacing + titlebar.height + 2 * root.shadowMargin Qt.WindowTitleHint |
maximumHeight: column.implicitHeight + 4 * app.spacing + titlebar.height + 2 * root.shadowMargin Qt.WindowStaysOnTopHint |
Qt.WindowCloseButtonHint
}
// //
// Custom properties // Custom properties
@ -84,70 +90,29 @@ Window {
// Use page item to set application palette // Use page item to set application palette
// //
Page { Page {
anchors { anchors.fill: parent
fill: parent palette.base: Cpp_ThemeManager.colors["base"]
margins: root.shadowMargin palette.text: Cpp_ThemeManager.colors["text"]
topMargin: titlebar.height + root.shadowMargin palette.button: Cpp_ThemeManager.colors["button"]
} palette.window: Cpp_ThemeManager.colors["window"]
palette.windowText: Cpp_ThemeManager.colors["text"]
palette.alternateBase: Cpp_ThemeManager.base palette.buttonText: Cpp_ThemeManager.colors["button_text"]
palette.base: Cpp_ThemeManager.base palette.highlight: Cpp_ThemeManager.colors["switch_highlight"]
palette.brightText: Cpp_ThemeManager.brightText palette.placeholderText: Cpp_ThemeManager.colors["placeholder_text"]
palette.button: Cpp_ThemeManager.button palette.highlightedText: Cpp_ThemeManager.colors["highlighted_text"]
palette.buttonText: Cpp_ThemeManager.buttonText
palette.highlight: Cpp_ThemeManager.highlight
palette.highlightedText: Cpp_ThemeManager.highlightedText
palette.link: Cpp_ThemeManager.link
palette.placeholderText: Cpp_ThemeManager.placeholderText
palette.text: Cpp_ThemeManager.text
palette.toolTipBase: Cpp_ThemeManager.tooltipBase
palette.toolTipText: Cpp_ThemeManager.tooltipText
palette.window: Cpp_ThemeManager.window
palette.windowText: Cpp_ThemeManager.windowText
background: Rectangle {
radius: root.radius
color: root.backgroundColor
Rectangle {
height: root.radius
color: root.backgroundColor
anchors {
top: parent.top
left: parent.left
right: parent.right
}
}
}
//
// Window drag handler
//
Item {
anchors.fill: parent
MouseArea {
anchors.fill: parent
onPressedChanged: {
if (pressed)
root.startSystemMove()
}
}
}
// //
// Window controls // Window controls
// //
ColumnLayout { ColumnLayout {
id: column id: column
spacing: 16
anchors.centerIn: parent anchors.centerIn: parent
spacing: app.spacing * 2
RowLayout { RowLayout {
spacing: 16
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
spacing: app.spacing * 2
Image { Image {
sourceSize: Qt.size(120, 120) sourceSize: Qt.size(120, 120)
@ -163,7 +128,7 @@ Window {
} }
ColumnLayout { ColumnLayout {
spacing: app.spacing * 2 spacing: 4
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
@ -173,10 +138,9 @@ Window {
Label { Label {
id: title id: title
font.bold: true
font.pixelSize: 16
Layout.fillWidth: true Layout.fillWidth: true
Layout.minimumHeight: font.pixelSize Layout.minimumHeight: font.pixelSize
font: Cpp_Misc_CommonFonts.customUiFont(16, true)
text: qsTr("Support the development of %1!").arg(Cpp_AppName) text: qsTr("Support the development of %1!").arg(Cpp_AppName)
} }
@ -196,7 +160,6 @@ Window {
Layout.minimumHeight: font.pixelSize * 2 Layout.minimumHeight: font.pixelSize * 2
Layout.maximumWidth: title.implicitWidth Layout.maximumWidth: title.implicitWidth
wrapMode: Label.WrapAtWordBoundaryOrAnywhere wrapMode: Label.WrapAtWordBoundaryOrAnywhere
color: Cpp_ThemeManager.highlightedTextAlternative
text: qsTr("You can also support this project by sharing it, reporting bugs and proposing new features!") text: qsTr("You can also support this project by sharing it, reporting bugs and proposing new features!")
} }
@ -207,12 +170,12 @@ Window {
} }
RowLayout { RowLayout {
spacing: 4
Layout.fillWidth: true Layout.fillWidth: true
spacing: app.spacing
CheckBox { CheckBox {
Layout.leftMargin: -6
id: doNotShowAgainCheck id: doNotShowAgainCheck
Layout.leftMargin: -app.spacing
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
text: qsTr("Don't annoy me again!") text: qsTr("Don't annoy me again!")
} }

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,7 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets import "../../Widgets" as Widgets
Rectangle { Rectangle {
id: root id: root
@ -50,21 +50,21 @@ Rectangle {
} }
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
anchors { anchors {
margins: 0 margins: 0
left: parent.left left: parent.left
right: parent.right right: parent.right
leftMargin: app.spacing leftMargin: 8
rightMargin: app.spacing rightMargin: 8
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
} }
Widgets.Icon { /*Widgets.Icon {
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
source: "qrc:/icons/arrow-right.svg" source: "qrc:/icons/arrow-right.svg"
} }*/
Label { Label {
color: palette.brightText color: palette.brightText

View File

@ -33,11 +33,8 @@ Widgets.Pane {
// //
// Window properties // Window properties
// //
gradient: true
title: qsTr("View") title: qsTr("View")
headerDoubleClickEnabled: false icon: "qrc:/icons/panes/view.svg"
icon.source: "qrc:/icons/visibility.svg"
backgroundColor: Cpp_ThemeManager.paneWindowBackground
// //
// Signals // Signals
@ -87,7 +84,7 @@ Widgets.Pane {
clip: true clip: true
contentWidth: -1 contentWidth: -1
anchors.fill: parent anchors.fill: parent
anchors.margins: app.spacing anchors.margins: 8
anchors.topMargin: root.borderWidth anchors.topMargin: root.borderWidth
anchors.bottomMargin: root.borderWidth anchors.bottomMargin: root.borderWidth
@ -96,31 +93,31 @@ Widgets.Pane {
// //
ColumnLayout { ColumnLayout {
id: layout id: layout
x: app.spacing x: 8
spacing: app.spacing / 2 spacing: 8 / 2
width: parent.width - 10 - 2 * app.spacing width: parent.width - 10 - 2 * 8
// //
// Spacer // Spacer
// //
Item { Item {
height: app.spacing height: 8
} }
// //
// View options title // View options title
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
visible: Cpp_UI_Dashboard.plotCount > 0 || Cpp_UI_Dashboard.multiPlotCount > 0 visible: Cpp_UI_Dashboard.plotCount > 0 || Cpp_UI_Dashboard.multiPlotCount > 0
Widgets.Icon { /*Widgets.Icon {
width: 18 width: 18
height: 18 height: 18
color: palette.text color: palette.text
source: "qrc:/icons/visibility.svg" source: "qrc:/icons/visibility.svg"
} }*/
Label { Label {
font.bold: true font.bold: true
@ -136,7 +133,7 @@ Widgets.Pane {
// Spacer // Spacer
// //
Item { Item {
height: app.spacing height: 8
} }
// //
@ -144,8 +141,8 @@ Widgets.Pane {
// //
GridLayout { GridLayout {
columns: 3 columns: 3
rowSpacing: app.spacing rowSpacing: 8
columnSpacing: app.spacing columnSpacing: 8
// //
// Number of plot points slider // Number of plot points slider
@ -208,7 +205,7 @@ Widgets.Pane {
// Spacer // Spacer
// //
Item { Item {
height: app.spacing height: 8
} }
// //

View File

@ -2,12 +2,10 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets
ColumnLayout { ColumnLayout {
id: root id: root
visible: count > 0 visible: count > 0
spacing: app.spacing spacing: 8
property int count: 0 property int count: 0
property var titles:[""] property var titles:[""]
@ -25,16 +23,16 @@ ColumnLayout {
} }
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
visible: root.count > 0 visible: root.count > 0
Widgets.Icon { /*Widgets.Icon {
width: 18 width: 18
height: 18 height: 18
source: root.icon source: root.icon
color: palette.text color: palette.text
opacity: hideAll.checked ? 0.5 : 1 opacity: hideAll.checked ? 0.5 : 1
} }*/
Label { Label {
font.bold: true font.bold: true
@ -53,7 +51,7 @@ ColumnLayout {
flat: true flat: true
checkable: true checkable: true
icon.color: palette.text icon.color: palette.text
Layout.rightMargin: -app.spacing Layout.rightMargin: -8
icon.source: checked ? "qrc:/icons/show-all.svg" : "qrc:/icons/hide-all.svg" icon.source: checked ? "qrc:/icons/show-all.svg" : "qrc:/icons/hide-all.svg"
onCheckedChanged: { onCheckedChanged: {
for (var i = 0; i < root.count; ++i) for (var i = 0; i < root.count; ++i)
@ -74,7 +72,7 @@ ColumnLayout {
} }
Item { Item {
height: app.spacing height: 8
visible: !hideAll.checked && count > 0 visible: !hideAll.checked && count > 0
} }
} }

View File

@ -26,7 +26,7 @@ import QtQuick.Controls
import SerialStudio import SerialStudio
import "../Widgets" as Widgets import "../../Widgets" as Widgets
Item { Item {
id: root id: root
@ -34,19 +34,19 @@ Item {
property int widgetIndex: -1 property int widgetIndex: -1
property Window externalWindow: null property Window externalWindow: null
Widgets.Window { Widgets.Pane {
id: window id: window
anchors.fill: parent anchors.fill: parent
title: widget.widgetTitle title: widget.widgetTitle
icon.source: widget.widgetIcon icon: widget.widgetIcon
headerDoubleClickEnabled: true /*headerDoubleClickEnabled: true
borderColor: Cpp_ThemeManager.widgetWindowBorder borderColor: Cpp_ThemeManager.widgetWindowBorder
onHeaderDoubleClicked: { onHeaderDoubleClicked: {
if (root.externalWindow !== null) if (root.externalWindow !== null)
root.externalWindow.showNormal() root.externalWindow.showNormal()
else else
externalWindowLoader.active = true externalWindowLoader.active = true
} }*/
DashboardWidget { DashboardWidget {
id: widget id: widget
@ -86,11 +86,6 @@ Item {
minimumWidth: 640 minimumWidth: 640
minimumHeight: 480 minimumHeight: 480
title: externalWidget.widgetTitle title: externalWidget.widgetTitle
titlebarText: Cpp_ThemeManager.text
titlebarColor: Cpp_ThemeManager.widgetWindowBackground
backgroundColor: Cpp_ThemeManager.widgetWindowBackground
borderColor: isMaximized ? backgroundColor : Cpp_ThemeManager.highlight
extraFlags: Qt.WindowStaysOnTopHint | Qt.Dialog | Qt.WindowCloseButtonHint | Qt.WindowTitleHint
Timer { Timer {
id: timer id: timer
@ -141,12 +136,6 @@ Item {
} }
} }
} }
FramelessWindow.ResizeHandles {
window: _window
anchors.fill: parent
handleSize: _window.handleSize
}
} }
} }
} }

View File

@ -24,21 +24,16 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets import "../../Widgets" as Widgets
Widgets.Window { Widgets.Pane {
id: root id: root
//
// Window properties
//
gradient: true
title: qsTr("Data") title: qsTr("Data")
headerDoubleClickEnabled: false icon: "qrc:/icons/panes/dashboard.svg"
icon.source: "qrc:/icons/dataset.svg"
backgroundColor: Cpp_ThemeManager.paneWindowBackground
//
// Hacks for calculating cell width // Hacks for calculating cell width
//
property int columns: 4 property int columns: 4
readonly property int cellWidth: (grid.width - 2 * scroll.width) / columns readonly property int cellWidth: (grid.width - 2 * scroll.width) / columns
readonly property int cellHeight: cellWidth * (2 / 3) readonly property int cellHeight: cellWidth * (2 / 3)
@ -56,8 +51,8 @@ Widgets.Window {
anchors { anchors {
fill: parent fill: parent
margins: app.spacing * 2 margins: 8
rightMargin: app.spacing rightMargin: 4
} }
ScrollBar.vertical: ScrollBar { ScrollBar.vertical: ScrollBar {
@ -66,10 +61,10 @@ Widgets.Window {
Grid { Grid {
id: grid id: grid
rowSpacing: 4
columnSpacing: 4
width: parent.width width: parent.width
columns: root.columns columns: root.columns
rowSpacing: app.spacing
columnSpacing: app.spacing
height: childrenRect.height height: childrenRect.height
Timer { Timer {
@ -106,19 +101,4 @@ Widgets.Window {
} }
} }
} }
//
// Redraw bottom window border over flickable items
//
Rectangle {
height: root.borderWidth
color: root.gradientColor1
anchors {
left: parent.left
right: parent.right
bottom: parent.bottom
leftMargin: root.radius
rightMargin: root.radius
}
}
} }

View File

@ -24,10 +24,12 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets import "../../Widgets" as Widgets
Item { Widgets.Pane {
id: root id: root
title: qsTr("Console")
icon: "qrc:/icons/panes/console.svg"
// //
// Custom properties // Custom properties
@ -47,41 +49,12 @@ Item {
terminal.selectAll() terminal.selectAll()
} }
//
// Load welcome guide
//
function showWelcomeGuide() {
clear()
Cpp_IO_Console.append(Cpp_Misc_Translator.welcomeConsoleText() + "\n")
}
//
// Re-load welcome text when the language is changed
//
Connections {
target: Cpp_Misc_Translator
function onLanguageChanged() {
root.showWelcomeGuide()
}
}
// //
// Console window // Console window
// //
Widgets.Window { Widgets.Terminal {
id: window id: terminal
gradient: true widgetEnabled: true
anchors.fill: parent anchors.fill: parent
title: qsTr("Console")
headerDoubleClickEnabled: false
icon.source: "qrc:/icons/code.svg"
anchors.margins: (app.spacing * 1.5) - 5
backgroundColor: Cpp_ThemeManager.paneWindowBackground
Widgets.Terminal {
id: terminal
widgetEnabled: true
anchors.fill: parent
}
} }
} }

View File

@ -24,98 +24,46 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../../Widgets" as Widgets
import "../Dashboard" as DashboardItems import "../Dashboard" as DashboardItems
Item { RowLayout {
id: root id: root
spacing: 0
// //
// Main layout // View options window
// //
ColumnLayout { DashboardItems.ViewOptions {
anchors.fill: parent Layout.fillHeight: true
spacing: app.spacing Layout.minimumWidth: 280
anchors.margins: (app.spacing * 1.5) - 5 onColumnsChanged:(columns) => widgetGrid.columns = columns
}
// //
// Widget selector + widgets // Panel border rectangle
// //
RowLayout { Rectangle {
spacing: app.spacing z: 2
Layout.fillWidth: true width: 1
Layout.fillHeight: true Layout.fillHeight: true
color: Cpp_ThemeManager.colors["setup_border"]
// Rectangle {
// View options window width: 1
//
DashboardItems.ViewOptions {
Layout.fillHeight: true
Layout.minimumWidth: 280
onColumnsChanged:(columns) => widgetGrid.columns = columns
}
//
// Widget grid + console
//
ColumnLayout {
spacing: terminalView.enabled ? app.spacing : 0
DashboardItems.WidgetGrid {
id: widgetGrid
Layout.fillWidth: true
Layout.fillHeight: true
Layout.minimumWidth: 240
}
Item {
enabled: false
id: terminalView
Layout.fillWidth: true
Layout.fillHeight: false
Layout.maximumHeight: 280
Layout.minimumHeight: 280
visible: Layout.bottomMargin > -Layout.minimumHeight
Layout.bottomMargin: enabled ? 0 : -Layout.minimumHeight
Behavior on Layout.bottomMargin { NumberAnimation{} }
Widgets.Window {
id: terminal
gradient: true
anchors.fill: parent
title: qsTr("Console")
altButtonEnabled: true
headerDoubleClickEnabled: false
icon.source: "qrc:/icons/code.svg"
altButtonIcon.source: "qrc:/icons/scroll-down.svg"
backgroundColor: Cpp_ThemeManager.paneWindowBackground
onAltButtonClicked: {
terminalView.enabled = false
dbTitle.consoleChecked = false
}
Widgets.Terminal {
anchors.fill: parent
widgetEnabled: terminalView.enabled
}
}
}
}
}
//
// Dashboard title window
//
DashboardItems.DashboardTitle {
id: dbTitle
height: 32 height: 32
Layout.fillWidth: true anchors.top: parent.top
onConsoleCheckedChanged: { anchors.left: parent.left
if (terminalView.enabled != consoleChecked) color: Cpp_ThemeManager.colors["pane_caption_border"]
terminalView.enabled = consoleChecked
}
} }
} }
//
// Widget grid
//
DashboardItems.WidgetGrid {
id: widgetGrid
Layout.fillWidth: true
Layout.fillHeight: true
Layout.minimumWidth: 240
}
} }

View File

@ -25,18 +25,20 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets
import "SetupPanes" as SetupPanes import "SetupPanes" as SetupPanes
import "../../Widgets" as Widgets
Item { Widgets.Pane {
id: root id: root
title: qsTr("Device Setup")
icon: "qrc:/icons/panes/setup.svg"
// //
// Custom properties // Custom properties
// //
property int setupMargin: 0 property int setupMargin: 0
property int displayedWidth: 380 + app.spacing * 1.5 property int displayedWidth: 344
readonly property int maxItemWidth: column.width - 2 * spacing readonly property int maxItemWidth: column.width - 8
// //
// Displays the setup panel // Displays the setup panel
@ -70,17 +72,6 @@ Item {
property alias tabIndex: tab.currentIndex property alias tabIndex: tab.currentIndex
property alias csvExport: csvLogging.checked property alias csvExport: csvLogging.checked
//
// MQTT settings
//
property alias mqttHost: mqtt.host
property alias mqttPort: mqtt.port
property alias mqttUser: mqtt.user
property alias mqttMode: mqtt.mode
property alias mqttTopic: mqtt.topic
property alias mqttVersion: mqtt.version
property alias mqttPassword: mqtt.password
// //
// App settings // App settings
// //
@ -100,185 +91,163 @@ Item {
} }
// //
// Window // Control arrangement
// //
Widgets.Window { ColumnLayout {
gradient: true id: column
title: qsTr("Setup") spacing: 4
anchors.fill: parent anchors.fill: parent
anchors.leftMargin: 0 anchors.topMargin: -6
headerDoubleClickEnabled: false
icon.source: "qrc:/icons/settings.svg"
anchors.margins: (app.spacing * 1.5) - 5
backgroundColor: Cpp_ThemeManager.paneWindowBackground
// //
// Control arrangement // Device type selector
// //
ColumnLayout { Label {
id: column text: qsTr("Device Setup") + ":"
anchors.fill: parent font: Cpp_Misc_CommonFonts.customUiFont(10, true)
spacing: app.spacing / 2 color: Cpp_ThemeManager.colors["pane_section_label"]
anchors.margins: app.spacing * 1.5 Component.onCompleted: font.capitalization = Font.AllUppercase
} ComboBox {
id: _driverCombo
Layout.fillWidth: true
model: Cpp_IO_Manager.availableDrivers()
displayText: qsTr("I/O Interface: %1").arg(currentText)
onCurrentIndexChanged: Cpp_IO_Manager.selectedDriver = currentIndex
}
// //
// Comm mode selector // CSV generator
// //
Label { Switch {
text: qsTr("Communication Mode") + ":" id: csvLogging
font: Cpp_Misc_CommonFonts.customUiFont(12, true) Layout.leftMargin: -6
} RadioButton { text: qsTr("Create CSV File")
id: commAuto Layout.alignment: Qt.AlignLeft
checked: true checked: Cpp_CSV_Export.exportEnabled
Layout.maximumWidth: root.maxItemWidth palette.highlight: Cpp_ThemeManager.colors["csv_switch"]
text: qsTr("No parsing (device sends JSON data)")
onCheckedChanged: { onCheckedChanged: {
if (checked) if (Cpp_CSV_Export.exportEnabled !== checked)
Cpp_JSON_Generator.setOperationMode(1) Cpp_CSV_Export.exportEnabled = checked
else }
Cpp_JSON_Generator.setOperationMode(0) }
}
} RadioButton { //
id: commManual // Spacer
checked: false //
Layout.maximumWidth: root.maxItemWidth Item {
text: qsTr("Parse via JSON project file") height: 4
onCheckedChanged: { }
if (checked)
Cpp_JSON_Generator.setOperationMode(0) //
else // Comm mode selector
Cpp_JSON_Generator.setOperationMode(1) //
} Label {
text: qsTr("Frame Parsing") + ":"
font: Cpp_Misc_CommonFonts.customUiFont(10, true)
color: Cpp_ThemeManager.colors["pane_section_label"]
Component.onCompleted: font.capitalization = Font.AllUppercase
} RadioButton {
id: commAuto
Layout.maximumHeight: 18
Layout.maximumWidth: root.maxItemWidth
checked: Cpp_JSON_Generator.operationMode === 1
text: qsTr("No Parsing (Device Sends JSON Data)")
onCheckedChanged: {
if (checked && Cpp_JSON_Generator.operationMode !== 1)
Cpp_JSON_Generator.setOperationMode(1)
else if (!checked)
Cpp_JSON_Generator.setOperationMode(0)
}
} RadioButton {
id: commManual
Layout.maximumHeight: 18
Layout.maximumWidth: root.maxItemWidth
text: qsTr("Parse via JSON Project File")
checked: Cpp_JSON_Generator.operationMode === 0
onCheckedChanged: {
if (checked && Cpp_JSON_Generator.operationMode !== 0)
Cpp_JSON_Generator.setOperationMode(0)
else if (!checked)
Cpp_JSON_Generator.setOperationMode(1)
}
}
//
// Map file selector button
//
Button {
Layout.fillWidth: true
opacity: enabled ? 1 : 0.5
enabled: commManual.checked
Layout.maximumWidth: root.maxItemWidth
onClicked: Cpp_JSON_Generator.loadJsonMap()
text: (Cpp_JSON_Generator.jsonMapFilename.length ?
qsTr("Change Project File (%1)").arg(Cpp_JSON_Generator.jsonMapFilename) :
qsTr("Select Project File") + "...")
}
//
// Spacer
//
Item {
height: 4
}
//
// Tab bar
//
TabBar {
height: 24
id: tab
Layout.fillWidth: true
Layout.maximumWidth: root.maxItemWidth
TabButton {
text: qsTr("Device")
height: tab.height + 3
width: implicitWidth + 2 * 8
} }
// TabButton {
// Map file selector button text: qsTr("Settings")
// height: tab.height + 3
Button { width: implicitWidth + 2 * 8
Layout.fillWidth: true
opacity: enabled ? 1 : 0.5
enabled: commManual.checked
Layout.maximumWidth: root.maxItemWidth
onClicked: Cpp_JSON_Generator.loadJsonMap()
text: (Cpp_JSON_Generator.jsonMapFilename.length ? qsTr("Change project file (%1)").arg(Cpp_JSON_Generator.jsonMapFilename) :
qsTr("Select project file") + "...")
} }
}
// //
// Spacer // Tab bar contents
// //
Item { StackLayout {
height: app.spacing / 2 id: stack
} clip: true
Layout.fillWidth: true
Layout.fillHeight: true
currentIndex: tab.currentIndex
Layout.topMargin: -parent.spacing - 1
// SetupPanes.Hardware {
// Enable/disable CSV logging id: hardware
//
RowLayout {
Layout.fillWidth: true
Switch {
id: csvLogging
text: qsTr("Create CSV file")
Layout.alignment: Qt.AlignVCenter
checked: Cpp_CSV_Export.exportEnabled
Layout.maximumWidth: root.maxItemWidth
palette.highlight: Cpp_ThemeManager.csvCheckbox
onCheckedChanged: {
if (Cpp_CSV_Export.exportEnabled !== checked)
Cpp_CSV_Export.exportEnabled = checked
}
}
Item {
Layout.fillWidth: true
}
RoundButton {
icon.width: 24
icon.height: 24
icon.color: Cpp_ThemeManager.text
Layout.alignment: Qt.AlignVCenter
icon.source: "qrc:/icons/help.svg"
onClicked: Qt.openUrlExternally("https://github.com/Serial-Studio/Serial-Studio/wiki")
}
}
//
// Spacer
//
Item {
height: app.spacing / 2
}
//
// Tab bar
//
TabBar {
height: 24
id: tab
Layout.fillWidth: true
Layout.maximumWidth: root.maxItemWidth
TabButton {
text: qsTr("Device")
height: tab.height + 3
width: implicitWidth + 2 * app.spacing
}
TabButton {
text: qsTr("MQTT")
height: tab.height + 3
width: implicitWidth + 2 * app.spacing
}
TabButton {
text: qsTr("Settings")
height: tab.height + 3
width: implicitWidth + 2 * app.spacing
}
}
//
// Tab bar contents
//
StackLayout {
id: stack
clip: true
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
currentIndex: tab.currentIndex background: Rectangle {
Layout.topMargin: -parent.spacing - 1 radius: 2
border.width: 1
SetupPanes.Hardware { color: Cpp_ThemeManager.colors["groupbox_background"]
id: hardware border.color: Cpp_ThemeManager.colors["groupbox_border"]
Layout.fillWidth: true
Layout.fillHeight: true
background: TextField {
enabled: false
palette.base: Cpp_ThemeManager.setupPanelBackground
}
} }
}
SetupPanes.MQTT { SetupPanes.Settings {
id: mqtt id: settings
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
background: TextField { background: Rectangle {
enabled: false radius: 2
palette.base: Cpp_ThemeManager.setupPanelBackground border.width: 1
} color: Cpp_ThemeManager.colors["groupbox_background"]
} border.color: Cpp_ThemeManager.colors["groupbox_border"]
SetupPanes.Settings {
id: settings
Layout.fillWidth: true
Layout.fillHeight: true
background: TextField {
enabled: false
palette.base: Cpp_ThemeManager.setupPanelBackground
}
} }
} }
} }

View File

@ -24,7 +24,7 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
Control { Item {
id: root id: root
// //
@ -42,15 +42,15 @@ Control {
// //
ColumnLayout { ColumnLayout {
id: layout id: layout
spacing: app.spacing spacing: 4
anchors.margins: 0
anchors.fill: parent anchors.fill: parent
anchors.margins: app.spacing
// //
// Device selector + refresh button // Device selector + refresh button
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 4
visible: opacity > 0 visible: opacity > 0
opacity: Cpp_IO_Bluetooth_LE.operatingSystemSupported && Cpp_IO_Bluetooth_LE.deviceCount > 0 ? 1 : 0 opacity: Cpp_IO_Bluetooth_LE.operatingSystemSupported && Cpp_IO_Bluetooth_LE.deviceCount > 0 ? 1 : 0
@ -93,7 +93,7 @@ Control {
// Service selector // Service selector
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 4
visible: opacity > 0 visible: opacity > 0
opacity: Cpp_IO_Bluetooth_LE.operatingSystemSupported && serviceNames.count > 1 ? 1 : 0 opacity: Cpp_IO_Bluetooth_LE.operatingSystemSupported && serviceNames.count > 1 ? 1 : 0
@ -116,7 +116,7 @@ Control {
// Scanning indicator // Scanning indicator
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 4
visible: opacity > 0 visible: opacity > 0
opacity: Cpp_IO_Bluetooth_LE.operatingSystemSupported && Cpp_IO_Bluetooth_LE.deviceCount < 1 ? 1 : 0 opacity: Cpp_IO_Bluetooth_LE.operatingSystemSupported && Cpp_IO_Bluetooth_LE.deviceCount < 1 ? 1 : 0
@ -138,7 +138,7 @@ Control {
// OS not supported indicator // OS not supported indicator
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 4
visible: opacity > 0 visible: opacity > 0
opacity: !Cpp_IO_Bluetooth_LE.operatingSystemSupported opacity: !Cpp_IO_Bluetooth_LE.operatingSystemSupported
@ -156,9 +156,9 @@ Control {
Layout.fillWidth: true Layout.fillWidth: true
wrapMode: Label.WordWrap wrapMode: Label.WordWrap
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
text: qsTr("Sorry, this version of %1 is not supported yet. " + text: qsTr("Sorry, this system is not supported yet. " +
"We'll update Serial Studio to work with this operating " + "We'll update Serial Studio to work with this operating " +
"system as soon as Qt officially supports it.").arg(Cpp_OSName); "system as soon as Qt officially supports it.")
} }
} }

View File

@ -24,7 +24,7 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
Control { Item {
id: root id: root
// //
@ -66,14 +66,14 @@ Control {
// //
ColumnLayout { ColumnLayout {
id: layout id: layout
anchors.margins: 0
anchors.fill: parent anchors.fill: parent
anchors.margins: app.spacing
GridLayout { GridLayout {
columns: 2 columns: 2
rowSpacing: 4
columnSpacing: 4
Layout.fillWidth: true Layout.fillWidth: true
rowSpacing: app.spacing / 2
columnSpacing: app.spacing / 2
// //
// Socket type // Socket type
@ -229,7 +229,7 @@ Control {
id: _udpMulticast id: _udpMulticast
opacity: enabled ? 1 : 0.5 opacity: enabled ? 1 : 0.5
Layout.alignment: Qt.AlignLeft Layout.alignment: Qt.AlignLeft
Layout.leftMargin: -app.spacing Layout.leftMargin: -8
checked: Cpp_IO_Network.udpMulticast checked: Cpp_IO_Network.udpMulticast
visible: Cpp_IO_Network.socketTypeIndex === 1 visible: Cpp_IO_Network.socketTypeIndex === 1
palette.base: Cpp_ThemeManager.setupPanelBackground palette.base: Cpp_ThemeManager.setupPanelBackground
@ -252,7 +252,7 @@ Control {
id: _udpProcessDatagrams id: _udpProcessDatagrams
opacity: enabled ? 1 : 0.5 opacity: enabled ? 1 : 0.5
Layout.alignment: Qt.AlignLeft Layout.alignment: Qt.AlignLeft
Layout.leftMargin: -app.spacing Layout.leftMargin: -8
visible: Cpp_IO_Network.socketTypeIndex === 1 visible: Cpp_IO_Network.socketTypeIndex === 1
checked: Cpp_IO_Network.udpIgnoreFrameSequences checked: Cpp_IO_Network.udpIgnoreFrameSequences
palette.base: Cpp_ThemeManager.setupPanelBackground palette.base: Cpp_ThemeManager.setupPanelBackground
@ -265,14 +265,6 @@ Control {
} }
} }
//
// Spacer
//
Item {
Layout.fillHeight: true
Layout.minimumHeight: app.spacing
}
// //
// Spacer // Spacer
// //

View File

@ -24,7 +24,7 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
Control { Item {
id: root id: root
// //
@ -62,10 +62,10 @@ Control {
GridLayout { GridLayout {
id: layout id: layout
columns: 2 columns: 2
rowSpacing: 4
columnSpacing: 4
anchors.margins: 0
anchors.fill: parent anchors.fill: parent
anchors.margins: app.spacing
rowSpacing: app.spacing / 2
columnSpacing: app.spacing / 2
// //
// COM port selector // COM port selector
@ -121,58 +121,11 @@ Control {
// Spacer // Spacer
// //
Item { Item {
Layout.minimumHeight: app.spacing / 2 Layout.minimumHeight: 8 / 2
Layout.maximumHeight: app.spacing / 2 Layout.maximumHeight: 8 / 2
} Item { } Item {
Layout.minimumHeight: app.spacing / 2 Layout.minimumHeight: 8 / 2
Layout.maximumHeight: app.spacing / 2 Layout.maximumHeight: 8 / 2
}
//
// Auto-reconnect
//
Label {
text: qsTr("Auto-reconnect") + ":"
} CheckBox {
id: _autoreconnect
Layout.maximumHeight: 18
Layout.leftMargin: -app.spacing
checked: Cpp_IO_Serial.autoReconnect
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
palette.base: Cpp_ThemeManager.setupPanelBackground
onCheckedChanged: {
if (Cpp_IO_Serial.autoReconnect !== checked)
Cpp_IO_Serial.autoReconnect = checked
}
}
//
// DTR Signal
//
Label {
text: qsTr("Send DTR Signal") + ":"
} CheckBox {
id: _dtr
Layout.maximumHeight: 18
Layout.leftMargin: -app.spacing
checked: Cpp_IO_Serial.dtrEnabled
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
palette.base: Cpp_ThemeManager.setupPanelBackground
onCheckedChanged: {
if (Cpp_IO_Serial.dtrEnabled !== checked)
Cpp_IO_Serial.dtrEnabled = checked
}
}
//
// Spacer
//
Item {
Layout.minimumHeight: app.spacing / 2
Layout.maximumHeight: app.spacing / 2
} Item {
Layout.minimumHeight: app.spacing / 2
Layout.maximumHeight: app.spacing / 2
} }
// //
@ -243,6 +196,53 @@ Control {
} }
} }
//
// Spacer
//
Item {
Layout.minimumHeight: 8 / 2
Layout.maximumHeight: 8 / 2
} Item {
Layout.minimumHeight: 8 / 2
Layout.maximumHeight: 8 / 2
}
//
// Auto-reconnect
//
Label {
text: qsTr("Auto Reconnect") + ":"
} CheckBox {
id: _autoreconnect
Layout.maximumHeight: 18
Layout.leftMargin: -8
checked: Cpp_IO_Serial.autoReconnect
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
palette.base: Cpp_ThemeManager.setupPanelBackground
onCheckedChanged: {
if (Cpp_IO_Serial.autoReconnect !== checked)
Cpp_IO_Serial.autoReconnect = checked
}
}
//
// DTR Signal
//
Label {
text: qsTr("Send DTR Signal") + ":"
} CheckBox {
id: _dtr
Layout.maximumHeight: 18
Layout.leftMargin: -8
checked: Cpp_IO_Serial.dtrEnabled
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
palette.base: Cpp_ThemeManager.setupPanelBackground
onCheckedChanged: {
if (Cpp_IO_Serial.dtrEnabled !== checked)
Cpp_IO_Serial.dtrEnabled = checked
}
}
// //
// Vertical spacer // Vertical spacer
// //

View File

@ -26,7 +26,6 @@ import QtQuick.Controls
import QtCore as QtSettings import QtCore as QtSettings
import "Devices" as Devices import "Devices" as Devices
import "../../Windows" as Windows
Control { Control {
id: root id: root
@ -35,8 +34,6 @@ Control {
// Save settings // Save settings
// //
QtSettings.Settings { QtSettings.Settings {
property alias driver: _driverCombo.currentIndex
property alias dtr: serial.dtr property alias dtr: serial.dtr
property alias parity: serial.parity property alias parity: serial.parity
property alias baudRate: serial.baudRate property alias baudRate: serial.baudRate
@ -56,29 +53,9 @@ Control {
ColumnLayout { ColumnLayout {
id: layout id: layout
spacing: 4
anchors.margins: 8
anchors.fill: parent anchors.fill: parent
anchors.margins: app.spacing
//
// Device type selector
//
RowLayout {
spacing: app.spacing
Layout.fillWidth: true
Label {
text: qsTr("Data source") + ":"
Layout.alignment: Qt.AlignVCenter
}
ComboBox {
id: _driverCombo
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
model: Cpp_IO_Manager.availableDrivers()
onCurrentIndexChanged: Cpp_IO_Manager.selectedDriver = currentIndex
}
}
// //
// Device configuration // Device configuration
@ -94,27 +71,18 @@ Control {
id: serial id: serial
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
background: TextField {
enabled: false
}
} }
Devices.Network { Devices.Network {
id: network id: network
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
background: TextField {
enabled: false
}
} }
Devices.BluetoothLE { Devices.BluetoothLE {
id: bluetoothLE id: bluetoothLE
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
background: TextField {
enabled: false
}
} }
} }
} }

View File

@ -1,286 +0,0 @@
/*
* Copyright (c) 2020-2023 Alex Spataru <https://github.com/alex-spataru>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import "../../Windows" as Windows
Control {
id: root
//
// Aliases
//
property alias host: _host.text
property alias port: _port.text
property alias topic: _topic.text
property alias user: _user.text
property alias password: _password.text
property alias version: _version.currentIndex
property alias mode: _mode.currentIndex
//
// React to events from MQTT module
//
Connections {
target: Cpp_MQTT_Client
function onHostChanged() {
if (_host.text.length > 0)
_host.text = Cpp_MQTT_Client.host
}
function onPortChanged() {
if (_port.text.length > 0)
_port.text = Cpp_MQTT_Client.port
}
}
//
// Layout
//
ColumnLayout {
id: layout
anchors.fill: parent
anchors.margins: app.spacing
GridLayout {
columns: 2
Layout.fillWidth: true
rowSpacing: app.spacing / 2
columnSpacing: app.spacing / 2
//
// MQTT version
//
Label {
text: qsTr("Version") + ":"
} ComboBox {
id: _version
Layout.fillWidth: true
model: Cpp_MQTT_Client.mqttVersions
currentIndex: Cpp_MQTT_Client.mqttVersion
onCurrentIndexChanged: {
if (Cpp_MQTT_Client.mqttVersion !== currentIndex)
Cpp_MQTT_Client.mqttVersion = currentIndex
}
}
//
// Client mode version
//
Label {
text: qsTr("Mode") + ":"
} ComboBox {
id: _mode
Layout.fillWidth: true
model: Cpp_MQTT_Client.clientModes
currentIndex: Cpp_MQTT_Client.clientMode
onCurrentIndexChanged: {
if (Cpp_MQTT_Client.clientMode !== currentIndex)
Cpp_MQTT_Client.clientMode = currentIndex
}
}
//
// Host
//
Label {
text: qsTr("Host") + ":"
opacity: enabled ? 1 : 0.5
enabled: !Cpp_MQTT_Client.isConnectedToHost
} TextField {
id: _host
Layout.fillWidth: true
opacity: enabled ? 1 : 0.5
enabled: !Cpp_MQTT_Client.isConnectedToHost
placeholderText: Cpp_MQTT_Client.defaultHost
Component.onCompleted: text = Cpp_MQTT_Client.host
onTextChanged: {
if (Cpp_MQTT_Client.host !== text && text.length > 0)
Cpp_MQTT_Client.host = text
if (text.length === 0)
Cpp_MQTT_Client.host = Cpp_MQTT_Client.defaultHost
}
}
//
// Port
//
Label {
text: qsTr("Port") + ":"
opacity: enabled ? 1 : 0.5
enabled: !Cpp_MQTT_Client.isConnectedToHost
} TextField {
id: _port
Layout.fillWidth: true
opacity: enabled ? 1 : 0.5
enabled: !Cpp_MQTT_Client.isConnectedToHost
placeholderText: Cpp_MQTT_Client.defaultPort
Component.onCompleted: text = Cpp_MQTT_Client.port
onTextChanged: {
if (Cpp_MQTT_Client.port !== text && text.length > 0)
Cpp_MQTT_Client.port = text
if (text.length === 0)
Cpp_MQTT_Client.port = Cpp_MQTT_Client.defaultPort
}
validator: IntValidator {
bottom: 0
top: 65535
}
}
//
// Topic
//
Label {
text: qsTr("Topic") + ":"
opacity: enabled ? 1 : 0.5
enabled: !Cpp_MQTT_Client.isConnectedToHost
} TextField {
id: _topic
Layout.fillWidth: true
opacity: enabled ? 1 : 0.5
text: Cpp_MQTT_Client.topic
placeholderText: qsTr("MQTT topic")
enabled: !Cpp_MQTT_Client.isConnectedToHost
onTextChanged: {
if (Cpp_MQTT_Client.topic !== text)
Cpp_MQTT_Client.topic = text
}
}
//
// Username
//
Label {
text: qsTr("User") + ":"
opacity: enabled ? 1 : 0.5
enabled: !Cpp_MQTT_Client.isConnectedToHost
} TextField {
id: _user
Layout.fillWidth: true
opacity: enabled ? 1 : 0.5
text: Cpp_MQTT_Client.username
placeholderText: qsTr("MQTT username")
enabled: !Cpp_MQTT_Client.isConnectedToHost
onTextChanged: {
if (Cpp_MQTT_Client.username !== text)
Cpp_MQTT_Client.username = text
}
}
//
// Password
//
Label {
opacity: enabled ? 1 : 0.5
text: qsTr("Password") + ":"
enabled: !Cpp_MQTT_Client.isConnectedToHost
} RowLayout {
Layout.fillWidth: true
spacing: app.spacing / 2
TextField {
id: _password
Layout.fillWidth: true
opacity: enabled ? 1 : 0.5
echoMode: TextField.Password
text: Cpp_MQTT_Client.password
placeholderText: qsTr("MQTT password")
enabled: !Cpp_MQTT_Client.isConnectedToHost
onTextChanged: {
if (Cpp_MQTT_Client.password !== text)
Cpp_MQTT_Client.password = text
}
}
Button {
checkable: true
icon.color: palette.text
Layout.maximumWidth: height
Layout.alignment: Qt.AlignVCenter
icon.source: "qrc:/icons/visibility.svg"
onCheckedChanged: _password.echoMode = (checked ? TextField.Normal :
TextField.Password)
}
}
}
//
// Spacer
//
Item {
Layout.fillHeight: true
Layout.minimumHeight: app.spacing
}
//
// Advanced setup & connect/disconnect button
//
RowLayout {
spacing: app.spacing
Layout.fillWidth: true
Button {
icon.width: 24
icon.height: 24
Layout.fillWidth: true
onClicked: mqttSetup.show()
icon.color: palette.buttonText
text: qsTr("Advanced setup") + " "
icon.source: "qrc:/icons/settings.svg"
}
Button {
icon.width: 24
icon.height: 24
font.bold: true
Layout.fillWidth: true
icon.color: Cpp_ThemeManager.mqttButton
checked: Cpp_MQTT_Client.isConnectedToHost
palette.buttonText: Cpp_ThemeManager.mqttButton
onClicked: Cpp_MQTT_Client.toggleConnection()
text: (checked ? qsTr("Disconnect") :
qsTr("Connect to broker")) + " "
icon.source: checked ? "qrc:/icons/disconnect.svg" :
"qrc:/icons/connect.svg"
}
}
}
//
// MQTT setup dialog
//
Windows.MQTTConfiguration {
id: mqttSetup
}
}

View File

@ -39,7 +39,7 @@ Control {
ColumnLayout { ColumnLayout {
id: layout id: layout
anchors.fill: parent anchors.fill: parent
anchors.margins: app.spacing anchors.margins: 8
// //
// Controls // Controls
@ -47,8 +47,8 @@ Control {
GridLayout { GridLayout {
columns: 2 columns: 2
Layout.fillWidth: true Layout.fillWidth: true
rowSpacing: app.spacing / 2 rowSpacing: 8 / 2
columnSpacing: app.spacing / 2 columnSpacing: 8 / 2
// //
// Language selector // Language selector
@ -74,10 +74,10 @@ Control {
} ComboBox { } ComboBox {
id: _themeCombo id: _themeCombo
Layout.fillWidth: true Layout.fillWidth: true
currentIndex: Cpp_ThemeManager.theme
model: Cpp_ThemeManager.availableThemes model: Cpp_ThemeManager.availableThemes
currentIndex: Cpp_ThemeManager.themeId
onCurrentIndexChanged: { onCurrentIndexChanged: {
if (currentIndex !== Cpp_ThemeManager.themeId) if (currentIndex !== Cpp_ThemeManager.theme)
Cpp_ThemeManager.setTheme(currentIndex) Cpp_ThemeManager.setTheme(currentIndex)
} }
} }
@ -86,12 +86,13 @@ Control {
// Plugins enabled // Plugins enabled
// //
Label { Label {
text: qsTr("Plugin system") + ": " text: qsTr("Plugin System") + ": "
} Switch { } Switch {
id: _tcpPlugins id: _tcpPlugins
Layout.leftMargin: -app.spacing Layout.leftMargin: -8
Layout.alignment: Qt.AlignLeft Layout.alignment: Qt.AlignLeft
checked: Cpp_Plugins_Bridge.enabled checked: Cpp_Plugins_Bridge.enabled
palette.highlight: Cpp_ThemeManager.colors["switch_highlight"]
onCheckedChanged: { onCheckedChanged: {
if (checked !== Cpp_Plugins_Bridge.enabled) if (checked !== Cpp_Plugins_Bridge.enabled)
Cpp_Plugins_Bridge.enabled = checked Cpp_Plugins_Bridge.enabled = checked
@ -99,17 +100,71 @@ Control {
} }
} }
//
// Vertical spacer
//
Item {
Layout.fillHeight: true
}
// //
// Plugins label // Plugins label
// //
Label { RowLayout {
opacity: 0.8 spacing: 8
font.pixelSize: 12
Layout.fillWidth: true Image {
wrapMode: Label.WrapAtWordBoundaryOrAnywhere sourceSize: Qt.size(48, 48)
color: Cpp_ThemeManager.highlightedTextAlternative source: "qrc:/images/tip.svg"
text: qsTr("Applications/plugins can interact with %1 by " + Layout.alignment: Qt.AlignVCenter
"establishing a TCP connection on port 7777.").arg(Cpp_AppName) }
Label {
opacity: 0.6
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
wrapMode: Label.WrapAtWordBoundaryOrAnywhere
text: qsTr("Using the plugin system, other applications \& scripts can " +
"interact with %1 by establishing a TCP connection on port " +
"7777.").arg(Cpp_AppName)
}
Item {
Layout.minimumWidth: 16
}
}
//
// Spacer
//
Item {
Layout.minimumHeight: 16
}
//
// Examples label
//
RowLayout {
spacing: 8
Image {
sourceSize: Qt.size(48, 48)
source: "qrc:/images/code.svg"
Layout.alignment: Qt.AlignVCenter
}
Label {
opacity: 0.6
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
wrapMode: Label.WrapAtWordBoundaryOrAnywhere
text: qsTr("Reproducible test cases and examples in the wiki make use " +
"of a Python script that acts as a %1 plugin.").arg(Cpp_AppName)
}
Item {
Layout.minimumWidth: 16
}
} }
// //

View File

@ -27,19 +27,8 @@ import QtQuick.Controls
import "../../Widgets" as Widgets import "../../Widgets" as Widgets
Control { ToolBar {
id: root id: root
implicitHeight: 76
//
// Reference to parent window to be able to drag it with the toolbar
//
property Window window
//
// Dummy string to increase width of buttons
//
readonly property string _btSpacer: " "
// //
// Custom signals // Custom signals
@ -57,29 +46,57 @@ Control {
property alias dashboardChecked: dashboardBt.checked property alias dashboardChecked: dashboardBt.checked
// //
// Background gradient + border // Calculate offset based on platform
// //
Rectangle { property int titlebarHeight: Cpp_NativeWindow.titlebarHeight(mainWindow)
id: bg Connections {
anchors.fill: parent target: mainWindow
function onVisibilityChanged() {
gradient: Gradient { root.titlebarHeight = Cpp_NativeWindow.titlebarHeight(mainWindow)
GradientStop { position: 0; color: Cpp_ThemeManager.toolbarGradient1 }
GradientStop { position: 1; color: Cpp_ThemeManager.toolbarGradient2 }
} }
}
Rectangle { //
border.width: 1 // Set toolbar height
anchors.fill: parent //
color: "transparent" Layout.minimumHeight: titlebarHeight + 76
visible: Cpp_ThemeManager.titlebarSeparator Layout.maximumHeight: titlebarHeight + 76
border.color: Qt.darker(Cpp_ThemeManager.toolbarGradient2, 1.5)
//
// Titlebar text
//
Label {
text: mainWindow.title
visible: root.titlebarHeight > 0
color: Cpp_ThemeManager.colors["titlebar_text"]
font: Cpp_Misc_CommonFonts.customUiFont(13, true)
anchors {
topMargin: 6
top: parent.top
horizontalCenter: parent.horizontalCenter
}
}
//
// Toolbar background
//
background: Rectangle {
gradient: Gradient {
GradientStop {
position: 0
color: Cpp_ThemeManager.colors["toolbar_top"]
}
GradientStop {
position: 1
color: Cpp_ThemeManager.colors["toolbar_bottom"]
}
} }
Rectangle { Rectangle {
height: 1 height: 1
visible: Cpp_ThemeManager.titlebarSeparator color: Cpp_ThemeManager.colors["toolbar_border"]
color: Qt.darker(Cpp_ThemeManager.toolbarGradient1, 1.5)
anchors { anchors {
left: parent.left left: parent.left
@ -87,33 +104,49 @@ Control {
bottom: parent.bottom bottom: parent.bottom
} }
} }
DragHandler {
target: null
onActiveChanged: {
if (active)
mainWindow.startSystemMove()
}
}
} }
// //
// Toolbar icons // Toolbar controls
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
anchors.fill: parent
anchors.margins: app.spacing
Button { anchors {
flat: true margins: 2
icon.width: 27 left: parent.left
icon.height: 27 right: parent.right
Layout.fillHeight: true verticalCenter: parent.verticalCenter
icon.color: "transparent" verticalCenterOffset: root.titlebarHeight / 2
}
//
// Project Editor
//
Widgets.BigButton {
text: qsTr("Project Setup") text: qsTr("Project Setup")
display: AbstractButton.TextUnderIcon Layout.alignment: Qt.AlignVCenter
onClicked: root.projectEditorClicked() onClicked: app.showProjectEditor()
Layout.minimumWidth: Math.max(implicitWidth, 81) enabled: Cpp_JSON_Generator.operationMode == 0
Layout.maximumWidth: Math.max(implicitWidth, 81) icon.source: "qrc:/icons/toolbar/project-setup.svg"
palette.buttonText: Cpp_ThemeManager.menubarText }
palette.button: Cpp_ThemeManager.toolbarGradient1
palette.window: Cpp_ThemeManager.toolbarGradient1
icon.source: "qrc:/toolbar-icons/project-editor.svg"
background: Item {} //
// CSV Player
//
Widgets.BigButton {
text: qsTr("CSV Player")
Layout.alignment: Qt.AlignVCenter
onClicked: Cpp_CSV_Player.openFile()
icon.source: "qrc:/icons/toolbar/csv.svg"
} }
// //
@ -121,122 +154,46 @@ Control {
// //
Rectangle { Rectangle {
width: 1 width: 1
opacity: 0.2
Layout.fillHeight: true Layout.fillHeight: true
Layout.maximumHeight: 64 Layout.maximumHeight: 64
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
color: Cpp_ThemeManager.menubarText color: Cpp_ThemeManager.colors["toolbar_separator"]
} }
Button { //
id: setupBt // Console
//
flat: true Widgets.BigButton {
icon.width: 27
icon.height: 27
text: qsTr("Settings")
Layout.fillHeight: true
icon.color: "transparent"
onClicked: root.setupClicked()
display: AbstractButton.TextUnderIcon
icon.source: "qrc:/toolbar-icons/setup.svg"
Layout.minimumWidth: Math.max(implicitWidth, 81)
Layout.maximumWidth: Math.max(implicitWidth, 81)
palette.buttonText: Cpp_ThemeManager.menubarText
palette.button: Cpp_ThemeManager.toolbarGradient1
palette.window: Cpp_ThemeManager.toolbarGradient1
background: Rectangle {
radius: 3
border.width: 1
color: "transparent"
border.color: "#040600"
opacity: parent.checked ? 0.2 : 0.0
Rectangle {
border.width: 1
color: "#626262"
anchors.fill: parent
border.color: "#c2c2c2"
radius: parent.radius - 1
anchors.margins: parent.border.width
}
}
}
Button {
id: consoleBt id: consoleBt
opacity: 1
flat: true text: qsTr("Console")
icon.width: 27
icon.height: 27
Layout.fillHeight: true
icon.color: "transparent"
enabled: dashboardBt.enabled enabled: dashboardBt.enabled
onClicked: root.consoleClicked() onClicked: root.consoleClicked()
text: qsTr("Console") Layout.alignment: Qt.AlignVCenter
display: AbstractButton.TextUnderIcon icon.source: "qrc:/icons/toolbar/console.svg"
icon.source: "qrc:/toolbar-icons/console.svg"
Layout.minimumWidth: Math.max(implicitWidth, 81)
Layout.maximumWidth: Math.max(implicitWidth, 81)
palette.buttonText: Cpp_ThemeManager.menubarText
palette.button: Cpp_ThemeManager.toolbarGradient1
palette.window: Cpp_ThemeManager.toolbarGradient1
background: Rectangle {
radius: 3
border.width: 1
color: "transparent"
border.color: "#040600"
opacity: parent.checked ? 0.2 : 0.0
Rectangle {
border.width: 1
color: "#626262"
anchors.fill: parent
border.color: "#c2c2c2"
radius: parent.radius - 1
anchors.margins: parent.border.width
}
}
} }
Button { //
// Setup
//
Widgets.BigButton {
id: setupBt
text: qsTr("Device Setup")
onClicked: root.setupClicked()
Layout.alignment: Qt.AlignVCenter
icon.source: "qrc:/icons/toolbar/device-setup.svg"
}
//
// Dashboard
//
Widgets.BigButton {
id: dashboardBt id: dashboardBt
flat: true
icon.width: 27
icon.height: 27
Layout.fillHeight: true
icon.color: "transparent"
opacity: enabled ? 1 : 0.5
onClicked: root.dashboardClicked()
enabled: Cpp_UI_Dashboard.available
text: qsTr("Dashboard") text: qsTr("Dashboard")
display: AbstractButton.TextUnderIcon onClicked: root.dashboardClicked()
icon.source: "qrc:/toolbar-icons/dashboard.svg" Layout.alignment: Qt.AlignVCenter
Layout.minimumWidth: Math.max(implicitWidth, 81) enabled: Cpp_UI_Dashboard.available
Layout.maximumWidth: Math.max(implicitWidth, 81) icon.source: "qrc:/icons/toolbar/dashboard.svg"
palette.buttonText: Cpp_ThemeManager.menubarText
palette.button: Cpp_ThemeManager.toolbarGradient1
palette.window: Cpp_ThemeManager.toolbarGradient1
background: Rectangle {
radius: 3
border.width: 1
color: "transparent"
border.color: "#040600"
opacity: parent.checked ? 0.2 : 0.0
Rectangle {
border.width: 1
color: "#626262"
anchors.fill: parent
border.color: "#c2c2c2"
radius: parent.radius - 1
anchors.margins: parent.border.width
}
}
} }
// //
@ -244,124 +201,85 @@ Control {
// //
Rectangle { Rectangle {
width: 1 width: 1
opacity: 0.2
Layout.fillHeight: true Layout.fillHeight: true
Layout.maximumHeight: 64 Layout.maximumHeight: 64
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
color: Cpp_ThemeManager.menubarText color: Cpp_ThemeManager.colors["toolbar_separator"]
}
Button {
flat: true
icon.width: 27
icon.height: 27
Layout.fillHeight: true
icon.color: "transparent"
text: qsTr("Help")
display: AbstractButton.TextUnderIcon
Layout.minimumWidth: Math.max(implicitWidth, 81)
Layout.maximumWidth: Math.max(implicitWidth, 81)
palette.buttonText: Cpp_ThemeManager.menubarText
palette.button: Cpp_ThemeManager.toolbarGradient1
palette.window: Cpp_ThemeManager.toolbarGradient1
icon.source: "qrc:/toolbar-icons/help.svg"
background: Item {}
}
Button {
flat: true
icon.width: 27
icon.height: 27
Layout.fillHeight: true
icon.color: "transparent"
text: qsTr("Report Bug")
display: AbstractButton.TextUnderIcon
Layout.minimumWidth: Math.max(implicitWidth, 81)
Layout.maximumWidth: Math.max(implicitWidth, 81)
palette.buttonText: Cpp_ThemeManager.menubarText
palette.button: Cpp_ThemeManager.toolbarGradient1
palette.window: Cpp_ThemeManager.toolbarGradient1
icon.source: "qrc:/toolbar-icons/bug.svg"
background: Item {}
} }
// //
// Window drag handler // MQTT Setup
//
Widgets.BigButton {
text: qsTr("MQTT Setup")
Layout.alignment: Qt.AlignVCenter
onClicked: app.showMqttConfiguration()
icon.source: "qrc:/icons/toolbar/mqtt.svg"
}
//
// Separator
//
Rectangle {
width: 1
Layout.fillHeight: true
Layout.maximumHeight: 64
Layout.alignment: Qt.AlignVCenter
color: Cpp_ThemeManager.colors["toolbar_separator"]
}
//
// Report Bug
//
Widgets.BigButton {
text: qsTr("Report Bug")
Layout.alignment: Qt.AlignVCenter
icon.source: "qrc:/icons/toolbar/github.svg"
onClicked: Qt.openUrlExternally("https://github.com/Serial-Studio/Serial-Studio/issues")
}
//
// Help
//
Widgets.BigButton {
text: qsTr("Help")
Layout.alignment: Qt.AlignVCenter
icon.source: "qrc:/icons/toolbar/help.svg"
onClicked: Qt.openUrlExternally("https://github.com/Serial-Studio/Serial-Studio/wiki")
}
//
// Help
//
Widgets.BigButton {
text: qsTr("About")
onClicked: app.showAboutDialog()
Layout.alignment: Qt.AlignVCenter
icon.source: "qrc:/icons/toolbar/about.svg"
}
//
// Horizontal spacer
// //
Item { Item {
height: parent.height
Layout.fillWidth: true Layout.fillWidth: true
MouseArea {
anchors.fill: parent
onPressedChanged: {
if (pressed)
window.startSystemMove()
}
}
} }
Button { //
flat: true // Connect/Disconnect button
icon.width: 27 //
icon.height: 27 Widgets.BigButton {
Layout.fillHeight: true
icon.color: "transparent"
opacity: enabled ? 1 : 0.5
enabled: !Cpp_CSV_Player.isOpen
text: qsTr("Open CSV")
display: AbstractButton.TextUnderIcon
icon.source: "qrc:/toolbar-icons/csv.svg"
Layout.minimumWidth: Math.max(implicitWidth, 81)
Layout.maximumWidth: Math.max(implicitWidth, 81)
palette.buttonText: Cpp_ThemeManager.menubarText
palette.button: Cpp_ThemeManager.toolbarGradient1
palette.window: Cpp_ThemeManager.toolbarGradient1
onClicked: {
if (Cpp_CSV_Export.isOpen)
Cpp_CSV_Export.openCurrentCsv()
else
Cpp_CSV_Player.openFile()
}
background: Item{}
}
Button {
id: connectBt
//
// Button properties
//
flat: true
icon.width: 27
icon.height: 27
Layout.fillHeight: true
font: Cpp_Misc_CommonFonts.customUiFont(12, true)
//
// Connection-dependent
//
icon.color: "transparent"
checked: Cpp_IO_Manager.connected checked: Cpp_IO_Manager.connected
display: AbstractButton.TextUnderIcon Layout.alignment: Qt.AlignVCenter
Layout.minimumWidth: Math.max(implicitWidth, 81) font: Cpp_Misc_CommonFonts.boldUiFont
Layout.maximumWidth: Math.max(implicitWidth, 81) Layout.minimumWidth: metrics.width + 32
palette.buttonText: Cpp_ThemeManager.menubarText Layout.maximumWidth: metrics.width + 32
palette.button: Cpp_ThemeManager.toolbarGradient1
palette.window: Cpp_ThemeManager.toolbarGradient1
text: (checked ? qsTr("Disconnect") : qsTr("Connect"))
icon.source: checked ? "qrc:/toolbar-icons/disconnect.svg" :
"qrc:/toolbar-icons/connect.svg"
//
// Only enable button if it can be clicked
//
opacity: enabled ? 1 : 0.5
enabled: Cpp_IO_Manager.configurationOk enabled: Cpp_IO_Manager.configurationOk
text: checked ? qsTr("Disconnect") : qsTr("Connect")
icon.source: checked ? "qrc:/icons/toolbar/connect.svg" :
"qrc:/icons/toolbar/disconnect.svg"
// //
// Connect/disconnect device when button is clicked // Connect/disconnect device when button is clicked
@ -369,23 +287,12 @@ Control {
onClicked: Cpp_IO_Manager.toggleConnection() onClicked: Cpp_IO_Manager.toggleConnection()
// //
// Custom button background // Obtain maximum width of the button
// //
background: Rectangle { TextMetrics {
radius: 3 id: metrics
border.width: 1 font: Cpp_Misc_CommonFonts.boldUiFont
color: "transparent" text: " " + qsTr("Disconnect") + " "
border.color: "#040600"
opacity: parent.checked ? 0.2 : 0.0
Rectangle {
border.width: 1
color: "#626262"
anchors.fill: parent
border.color: "#c2c2c2"
radius: parent.radius - 1
anchors.margins: parent.border.width
}
} }
} }
} }

View File

@ -31,6 +31,16 @@ import "../Widgets" as Widgets
Window { Window {
id: root id: root
title: qsTr("%1 - %2").arg(documentTitle).arg(Cpp_AppName)
//
// Custom properties
//
property int appLaunchCount: 0
property bool isMaximized: false
property string documentTitle: ""
property bool firstValidFrame: false
property bool automaticUpdates: false
// //
// Global properties // Global properties
@ -39,14 +49,6 @@ Window {
readonly property bool consoleVisible: terminal.visible readonly property bool consoleVisible: terminal.visible
readonly property bool dashboardVisible: dashboard.visible readonly property bool dashboardVisible: dashboard.visible
//
// Custom properties
//
property int appLaunchCount: 0
property bool firstValidFrame: false
property bool automaticUpdates: false
property alias vt100emulation: terminal.vt100emulation
// //
// Toolbar functions aliases // Toolbar functions aliases
// //
@ -55,8 +57,61 @@ Window {
function showDashboard() { dbTimer.start() } function showDashboard() { dbTimer.start() }
// //
// Wait a little before showing the dashboard to avoid UI glitches and/or overloading // Obtain document title
// the rendering engine //
function updateDocumentTitle() {
if (Cpp_JSON_Generator.operationMode == 1)
documentTitle = qsTr("Device Defined Project")
else if (Cpp_JSON_Generator.jsonMapFilename.length > 0)
documentTitle = Cpp_Project_Model.title
else
documentTitle = qsTr("Empty Project")
}
//
// Ensure that window is visible
//
function displayWindow() {
if (root.isMaximized)
root.showMaximized()
else {
if (root.x > Screen.desktopAvailableWidth - root.minimumWidth || root.x <= 0)
root.x = (Screen.desktopAvailableWidth - root.minimumWidth) / 2
if (root.y > Screen.desktopAvailableHeight - root.minimumHeight || root.y <= 0)
root.y = (Screen.desktopAvailableHeight - root.minimumHeight) / 2
if (root.width >= Screen.desktopAvailableWidth - 100)
root.width = root.minimumWidth
if (root.height >= Screen.desktopAvailableHeight - 100)
root.height = root.minimumHeight
root.showNormal()
}
}
//
// React to maximize/unmaximize event
//
onVisibilityChanged: {
if (root.visible) {
if (root.visibility === Window.Maximized)
root.isMaximized = true
else if (root.isMaximized && root.visibility !== Window.Minimized) {
root.isMaximized = false
root.width = root.minimumWidth
root.height = root.minimumHeight
root.x = (Screen.desktopAvailableWidth - root.minimumWidth) / 2
root.y = (Screen.desktopAvailableHeight - root.minimumHeight) / 2
}
}
}
//
// Wait a little before showing the dashboard to avoid UI glitches and/or
// overloading the rendering engine
// //
Timer { Timer {
id: dbTimer id: dbTimer
@ -65,72 +120,29 @@ Window {
} }
// //
// Console-related functions // Update document title automatically
// //
function consoleCopy() { terminal.copy() } Connections {
function consoleClear() { terminal.clear() } target: Cpp_JSON_Generator
function consoleSelectAll() { terminal.selectAll() } function onOperationModeChanged() {
updateDocumentTitle()
//
// Window geometry
//
visible: false
title: Cpp_AppName
width: minimumWidth
height: minimumHeight
minimumWidth: 1120 + 2 * root.shadowMargin
minimumHeight: 650 + 2 * root.shadowMargin + root.titlebar.height
//
// Startup code
//
Component.onCompleted: {
// Load welcome text
terminal.showWelcomeGuide()
// Increment app launch count
++appLaunchCount
// Show app window
if (root.isFullscreen)
root.showFullScreen()
else if (root.isMaximized)
root.showMaximized()
else {
// Fix maximize not working on first try on macOS & Windows
root.opacity = 0
var x = root.x
var y = root.y
var w = root.width
var h = root.height
root.showMaximized()
root.showNormal()
root.setGeometry(x, y, w,h)
root.opacity = 1
} }
// Force active focus function onJsonFileMapChanged() {
root.requestActivate() updateDocumentTitle()
root.requestUpdate()
// Show donations dialog every 15 launches
if (root.appLaunchCount % 15 == 0 && !app.donateDialog.doNotShowAgain)
app.donateDialog.showAutomatically()
// Ask user if he/she wants to enable automatic updates
if (root.appLaunchCount == 2 && Cpp_UpdaterEnabled) {
if (Cpp_Misc_Utilities.askAutomaticUpdates()) {
root.automaticUpdates = true
Cpp_Updater.checkForUpdates(Cpp_AppUpdaterUrl)
}
else
root.automaticUpdates = false
} }
}
// Check for updates (if we are allowed) //
if (root.automaticUpdates && Cpp_UpdaterEnabled) // Show console tab on serial disconnect
Cpp_Updater.checkForUpdates(Cpp_AppUpdaterUrl) //
Connections {
target: Cpp_UI_Dashboard
function onDataReset() {
setup.show()
root.showConsole()
root.firstValidFrame = false
}
} }
// //
@ -158,86 +170,97 @@ Window {
} }
// //
// Show console tab on serial disconnect // Close shortcut
// //
Connections { Shortcut {
target: Cpp_UI_Dashboard sequences: [StandardKey.Close]
function onDataReset() { onActivated: root.close()
setup.show()
root.showConsole()
root.firstValidFrame = false
}
} }
// //
// Save window size & position // Quit shortcut
//
Shortcut {
sequences: [StandardKey.Quit]
onActivated: root.close()
}
//
// Loading code
//
Component.onCompleted: {
// Make window caption same color as toolbar
Cpp_NativeWindow.addWindow(root)
// Increment app launch count
++appLaunchCount
// Show donations dialog every 15 launches
if (root.appLaunchCount % 15 == 0 && !donateDialog.doNotShowAgain)
donateDialog.showAutomatically()
// Ask user if he/she wants to enable automatic updates
if (root.appLaunchCount == 2 && Cpp_UpdaterEnabled) {
if (Cpp_Misc_Utilities.askAutomaticUpdates()) {
root.automaticUpdates = true
Cpp_Updater.checkForUpdates(Cpp_AppUpdaterUrl)
}
else
root.automaticUpdates = false
}
// Check for updates (if we are allowed)
if (root.automaticUpdates && Cpp_UpdaterEnabled)
Cpp_Updater.checkForUpdates(Cpp_AppUpdaterUrl)
// Obtain document title from JSON project editor & display the window
updateDocumentTitle()
displayWindow()
}
//
// Save settings
// //
Settings { Settings {
property alias wx: root.x property alias ax: root.x
property alias wy: root.y property alias ay: root.y
property alias ww: root.width property alias aw: root.width
property alias wh: root.height property alias ah: root.height
property alias wm: root.isMaximized property alias am: root.isMaximized
property alias wf: root.isFullscreen
property alias appStatus: root.appLaunchCount property alias appStatus: root.appLaunchCount
property alias autoUpdater: root.automaticUpdates property alias autoUpdater: root.automaticUpdates
} }
// //
// Rectangle for the menubar (only used if custom window flags are disabled) // Load user interface component
//
Rectangle {
color: root.titlebarColor
anchors.fill: menubarLayout
visible: !Cpp_ThemeManager.customWindowDecorations
}
//
// Main layout
// //
Page { Page {
clip: true
anchors.fill: parent anchors.fill: parent
palette.base: Cpp_ThemeManager.colors["base"]
palette.alternateBase: Cpp_ThemeManager.base palette.text: Cpp_ThemeManager.colors["text"]
palette.base: Cpp_ThemeManager.base palette.button: Cpp_ThemeManager.colors["button"]
palette.brightText: Cpp_ThemeManager.brightText palette.window: Cpp_ThemeManager.colors["window"]
palette.button: Cpp_ThemeManager.button palette.highlight: Cpp_ThemeManager.colors["highlight"]
palette.buttonText: Cpp_ThemeManager.buttonText palette.buttonText: Cpp_ThemeManager.colors["button_text"]
palette.highlight: Cpp_ThemeManager.highlight palette.placeholderText: Cpp_ThemeManager.colors["placeholder_text"]
palette.highlightedText: Cpp_ThemeManager.highlightedText palette.highlightedText: Cpp_ThemeManager.colors["highlighted_text"]
palette.link: Cpp_ThemeManager.link
palette.placeholderText: Cpp_ThemeManager.placeholderText
palette.text: Cpp_ThemeManager.text
palette.toolTipBase: Cpp_ThemeManager.tooltipBase
palette.toolTipText: Cpp_ThemeManager.tooltipText
palette.window: Cpp_ThemeManager.window
palette.windowText: Cpp_ThemeManager.windowText
background: Rectangle {
radius: root.radius
color: Cpp_ThemeManager.windowBackground
}
ColumnLayout { ColumnLayout {
spacing: 0 spacing: 0
anchors.fill: parent anchors.fill: parent
// //
// Application toolbar // Toolbar
// //
Panes.Toolbar { Panes.Toolbar {
z: 2
id: toolbar id: toolbar
window: root
z: titlebar.z
Layout.fillWidth: true Layout.fillWidth: true
setupChecked: root.setupVisible setupChecked: root.setupVisible
consoleChecked: root.consoleVisible consoleChecked: root.consoleVisible
Layout.minimumHeight: implicitHeight
Layout.maximumHeight: implicitHeight
dashboardChecked: root.dashboardVisible dashboardChecked: root.dashboardVisible
onProjectEditorClicked: app.projectEditorWindow.show()
onSetupClicked: setup.visible ? setup.hide() : setup.show() onSetupClicked: setup.visible ? setup.hide() : setup.show()
onDashboardClicked: { onDashboardClicked: {
@ -260,13 +283,16 @@ Window {
} }
// //
// Console, dashboard & setup panel // User interface
// //
RowLayout { RowLayout {
z: 1
spacing: 0 spacing: 0
Layout.fillWidth: true Layout.topMargin: -1
Layout.fillHeight: true
//
// Dashboard + Console view
//
StackView { StackView {
id: stack id: stack
clip: true clip: true
@ -290,6 +316,27 @@ Window {
] ]
} }
//
// Panel border rectangle
//
Rectangle {
z: 2
width: 1
Layout.fillHeight: true
color: Cpp_ThemeManager.colors["setup_border"]
Rectangle {
width: 1
height: 32
anchors.top: parent.top
anchors.left: parent.left
color: Cpp_ThemeManager.colors["pane_caption_border"]
}
}
//
// Setup panel
//
Panes.Setup { Panes.Setup {
id: setup id: setup
Layout.fillHeight: true Layout.fillHeight: true
@ -299,13 +346,13 @@ Window {
} }
} }
} }
}
// //
// JSON project drop area // JSON project drop area
// //
Widgets.JSONDropArea { Widgets.JSONDropArea {
anchors.fill: parent anchors.fill: parent
enabled: !Cpp_IO_Manager.connected enabled: !Cpp_IO_Manager.connected
}
} }
} }

View File

@ -26,6 +26,7 @@ import QtQuick.Window
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "Sections"
import "../ProjectEditor" import "../ProjectEditor"
import "../Widgets" as Widgets import "../Widgets" as Widgets
@ -37,7 +38,7 @@ Window {
// //
minimumWidth: 910 minimumWidth: 910
minimumHeight: 720 minimumHeight: 720
title: qsTr("Project Editor - %1").arg(Cpp_Project_Model.jsonFileName) title: qsTr("%1 - Project Editor").arg(Cpp_Project_Model.jsonFileName)
// //
// Ensure that current JSON file is shown // Ensure that current JSON file is shown
@ -69,40 +70,16 @@ Window {
// Use page item to set application palette // Use page item to set application palette
// //
Page { Page {
clip: true
anchors.fill: parent anchors.fill: parent
anchors.margins: root.shadowMargin palette.base: Cpp_ThemeManager.colors["base"]
anchors.topMargin: titlebar.height + root.shadowMargin palette.text: Cpp_ThemeManager.colors["text"]
palette.button: Cpp_ThemeManager.colors["button"]
palette.alternateBase: Cpp_ThemeManager.base palette.window: Cpp_ThemeManager.colors["window"]
palette.base: Cpp_ThemeManager.base palette.windowText: Cpp_ThemeManager.colors["text"]
palette.brightText: Cpp_ThemeManager.brightText palette.buttonText: Cpp_ThemeManager.colors["button_text"]
palette.button: Cpp_ThemeManager.button palette.highlight: Cpp_ThemeManager.colors["switch_highlight"]
palette.buttonText: Cpp_ThemeManager.buttonText palette.placeholderText: Cpp_ThemeManager.colors["placeholder_text"]
palette.highlight: Cpp_ThemeManager.highlight palette.highlightedText: Cpp_ThemeManager.colors["highlighted_text"]
palette.highlightedText: Cpp_ThemeManager.highlightedText
palette.link: Cpp_ThemeManager.link
palette.placeholderText: Cpp_ThemeManager.placeholderText
palette.text: Cpp_ThemeManager.text
palette.toolTipBase: Cpp_ThemeManager.tooltipBase
palette.toolTipText: Cpp_ThemeManager.tooltipText
palette.window: Cpp_ThemeManager.window
palette.windowText: Cpp_ThemeManager.windowText
background: Rectangle {
radius: root.radius
color: Cpp_ThemeManager.windowBackground
}
//
// Shadows
//
Widgets.Shadow {
anchors.fill: header
} Widgets.Shadow {
anchors.fill: footer
anchors.bottomMargin: footer.height / 2
}
// //
// Header (project properties) // Header (project properties)
@ -140,7 +117,7 @@ Window {
RowLayout { RowLayout {
clip: true clip: true
anchors.fill: parent anchors.fill: parent
spacing: app.spacing spacing: 8
anchors.topMargin: header.height anchors.topMargin: header.height
anchors.bottomMargin: footer.height anchors.bottomMargin: footer.height
@ -149,8 +126,8 @@ Window {
// //
Item { Item {
Layout.fillHeight: true Layout.fillHeight: true
Layout.minimumWidth: app.spacing Layout.minimumWidth: 8
Layout.maximumWidth: app.spacing Layout.maximumWidth: 8
} }
// //
@ -161,8 +138,8 @@ Window {
Layout.fillHeight: true Layout.fillHeight: true
Layout.minimumWidth: 240 Layout.minimumWidth: 240
Layout.maximumWidth: 240 Layout.maximumWidth: 240
Layout.topMargin: app.spacing * 2 Layout.topMargin: 8 * 2
Layout.bottomMargin: app.spacing * 2 Layout.bottomMargin: 8 * 2
visible: Cpp_Project_Model.groupCount !== 0 visible: Cpp_Project_Model.groupCount !== 0
}*/ }*/
@ -185,29 +162,27 @@ Window {
visible: Cpp_Project_Model.groupCount === 0 visible: Cpp_Project_Model.groupCount === 0
ColumnLayout { ColumnLayout {
spacing: app.spacing spacing: 8
anchors.centerIn: parent anchors.centerIn: parent
Widgets.Icon { Image {
width: 128 sourceSize: Qt.size(128, 128)
height: 128
color: Cpp_ThemeManager.text
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
source: "qrc:/icons/developer-board.svg" source: "qrc:/images/microcontroller.svg"
} }
Label { Label {
font.bold: true font.bold: true
font.pixelSize: 24 font.pixelSize: 24
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
text: qsTr("Start something awesome") text: qsTr("Start Something Awesome")
} }
Label { Label {
opacity: 0.8 opacity: 0.8
font.pixelSize: 18 font.pixelSize: 18
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
text: qsTr("Click on the \"Add group\" button to begin") text: qsTr("Click on the \"Add Group\" Button to Begin")
} }
} }
} }
@ -217,8 +192,8 @@ Window {
// //
Item { Item {
Layout.fillHeight: true Layout.fillHeight: true
Layout.minimumWidth: app.spacing Layout.minimumWidth: 8
Layout.maximumWidth: app.spacing Layout.maximumWidth: 8
} }
} }
} }

View File

@ -24,12 +24,10 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets
Rectangle { Rectangle {
id: root id: root
color: Cpp_ThemeManager.toolbarGradient2 color: Cpp_ThemeManager.toolbarGradient2
height: footer.implicitHeight + 4 * app.spacing height: footer.implicitHeight + 32
// //
// Signals // Signals
@ -68,12 +66,12 @@ Rectangle {
// //
RowLayout { RowLayout {
id: footer id: footer
spacing: app.spacing spacing: 8
anchors { anchors {
left: parent.left left: parent.left
right: parent.right right: parent.right
margins: app.spacing * 2 margins: 8 * 2
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
} }

View File

@ -24,8 +24,6 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets
ColumnLayout { ColumnLayout {
id: root id: root
spacing: 0 spacing: 0
@ -62,7 +60,7 @@ ColumnLayout {
// Spacer // Spacer
// //
Item { Item {
height: app.spacing height: 8
} }
// //
@ -111,6 +109,6 @@ ColumnLayout {
// Spacer // Spacer
// //
Item { Item {
height: app.spacing height: 8
} }
} }

View File

@ -24,11 +24,11 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets import "../../Widgets" as Widgets
Rectangle { Rectangle {
id: root id: root
height: header.implicitHeight + 4 * app.spacing height: header.implicitHeight + 32
// //
// Background & border // Background & border
@ -42,7 +42,6 @@ Rectangle {
Rectangle { Rectangle {
height: 1 height: 1
visible: Cpp_ThemeManager.titlebarSeparator
color: Qt.darker(Cpp_ThemeManager.toolbarGradient1, 1.5) color: Qt.darker(Cpp_ThemeManager.toolbarGradient1, 1.5)
anchors { anchors {
@ -59,13 +58,13 @@ Rectangle {
GridLayout { GridLayout {
id: header id: header
columns: 2 columns: 2
rowSpacing: app.spacing rowSpacing: 8
columnSpacing: app.spacing * 2 columnSpacing: 8 * 2
anchors { anchors {
left: parent.left left: parent.left
right: parent.right right: parent.right
margins: app.spacing * 2 margins: 8 * 2
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
} }
@ -73,13 +72,13 @@ Rectangle {
// Project title // Project title
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
Widgets.Icon { /*Widgets.Icon {
color: Cpp_ThemeManager.menubarText color: Cpp_ThemeManager.menubarText
source: "qrc:/icons/registration.svg" source: "qrc:/icons/registration.svg"
} }*/
TextField { TextField {
Layout.fillWidth: true Layout.fillWidth: true
@ -102,13 +101,13 @@ Rectangle {
// Separator character // Separator character
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
Widgets.Icon { /*Widgets.Icon {
color: Cpp_ThemeManager.menubarText color: Cpp_ThemeManager.menubarText
source: "qrc:/icons/separator.svg" source: "qrc:/icons/separator.svg"
} }*/
TextField { TextField {
Layout.fillWidth: true Layout.fillWidth: true
@ -131,13 +130,13 @@ Rectangle {
// Start sequence // Start sequence
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
Widgets.Icon { /*Widgets.Icon {
color: Cpp_ThemeManager.menubarText color: Cpp_ThemeManager.menubarText
source: "qrc:/icons/start-sequence.svg" source: "qrc:/icons/start-sequence.svg"
} }*/
TextField { TextField {
Layout.fillWidth: true Layout.fillWidth: true
@ -160,13 +159,13 @@ Rectangle {
// End sequence // End sequence
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
Widgets.Icon { /*Widgets.Icon {
color: Cpp_ThemeManager.menubarText color: Cpp_ThemeManager.menubarText
source: "qrc:/icons/end-sequence.svg" source: "qrc:/icons/end-sequence.svg"
} }*/
TextField { TextField {
Layout.fillWidth: true Layout.fillWidth: true

View File

@ -24,27 +24,18 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets import "../../Widgets" as Widgets
Widgets.Window { Widgets.Pane {
id: root id: root
// //
// Window properties // Window properties
// //
headerDoubleClickEnabled: false icon: "qrc:/icons/dataset.svg"
icon.source: "qrc:/icons/dataset.svg"
borderColor: Cpp_ThemeManager.widgetWindowBorder
palette.window: Cpp_ThemeManager.widgetWindowBackground palette.window: Cpp_ThemeManager.widgetWindowBackground
title: qsTr("Dataset %1 - %2").arg(dataset + 1).arg(Cpp_Project_Model.datasetTitle(group, dataset)) title: qsTr("Dataset %1 - %2").arg(dataset + 1).arg(Cpp_Project_Model.datasetTitle(group, dataset))
//
// Delete dataset button
//
altButtonEnabled: !showGroupWidget
altButtonIcon.source: "qrc:/icons/close.svg"
onAltButtonClicked: Cpp_Project_Model.deleteDataset(group, dataset)
// //
// Custom properties // Custom properties
// //
@ -71,11 +62,11 @@ Widgets.Window {
x: 0 x: 0
columns: 2 columns: 2
anchors.fill: parent anchors.fill: parent
columnSpacing: app.spacing columnSpacing: 8
anchors.margins: app.spacing anchors.margins: 8
rowSpacing: app.spacing / 2 rowSpacing: 8 / 2
anchors.leftMargin: app.spacing * 2 anchors.leftMargin: 8 * 2
anchors.rightMargin: app.spacing * 2 anchors.rightMargin: 8 * 2
// //
// Dataset title // Dataset title
@ -126,7 +117,7 @@ Widgets.Window {
text: qsTr("Display LED:") text: qsTr("Display LED:")
} Switch { } Switch {
id: led id: led
Layout.leftMargin: -app.spacing Layout.leftMargin: -8
checked: Cpp_Project_Model.datasetLED(group, dataset) checked: Cpp_Project_Model.datasetLED(group, dataset)
onCheckedChanged: Cpp_Project_Model.setDatasetLED(group, dataset, checked) onCheckedChanged: Cpp_Project_Model.setDatasetLED(group, dataset, checked)
} }
@ -138,7 +129,7 @@ Widgets.Window {
text: qsTr("Generate plot:") text: qsTr("Generate plot:")
} Switch { } Switch {
id: linearPlot id: linearPlot
Layout.leftMargin: -app.spacing Layout.leftMargin: -8
checked: Cpp_Project_Model.datasetGraph(group, dataset) checked: Cpp_Project_Model.datasetGraph(group, dataset)
onCheckedChanged: { onCheckedChanged: {
if (!checked) if (!checked)
@ -157,7 +148,7 @@ Widgets.Window {
} CheckBox { } CheckBox {
id: logPlot id: logPlot
visible: linearPlot.checked visible: linearPlot.checked
Layout.leftMargin: -app.spacing Layout.leftMargin: -8
checked: Cpp_Project_Model.datasetLogPlot(group, dataset) checked: Cpp_Project_Model.datasetLogPlot(group, dataset)
onCheckedChanged: Cpp_Project_Model.setDatasetLogPlot(group, dataset, checked) onCheckedChanged: Cpp_Project_Model.setDatasetLogPlot(group, dataset, checked)
} }
@ -169,7 +160,7 @@ Widgets.Window {
text: qsTr("FFT plot:") text: qsTr("FFT plot:")
} Switch { } Switch {
id: fftCheck id: fftCheck
Layout.leftMargin: -app.spacing Layout.leftMargin: -8
checked: Cpp_Project_Model.datasetFftPlot(group, dataset) checked: Cpp_Project_Model.datasetFftPlot(group, dataset)
onCheckedChanged: Cpp_Project_Model.setDatasetFftPlot(group, dataset, checked) onCheckedChanged: Cpp_Project_Model.setDatasetFftPlot(group, dataset, checked)
} }
@ -288,14 +279,14 @@ Widgets.Window {
// //
// Compass note label // Compass note label
// //
Widgets.Icon { /*Widgets.Icon {
width: 32 width: 32
height: 32 height: 32
color: palette.text color: palette.text
source: "qrc:/icons/compass.svg" source: "qrc:/icons/compass.svg"
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
visible: widget.currentIndex === 3 visible: widget.currentIndex === 3
} Label { }*/ Label {
font.pixelSize: 16 font.pixelSize: 16
Layout.fillWidth: true Layout.fillWidth: true
wrapMode: Label.WordWrap wrapMode: Label.WordWrap

View File

@ -24,8 +24,6 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../Widgets" as Widgets
Page { Page {
id: root id: root
@ -67,9 +65,9 @@ Page {
// //
ColumnLayout { ColumnLayout {
id: column id: column
spacing: app.spacing spacing: 8
anchors.fill: parent anchors.fill: parent
anchors.margins: app.spacing anchors.margins: 8
// //
// Notes rectangle // Notes rectangle
@ -79,22 +77,22 @@ Page {
radius: 16 radius: 16
Layout.fillWidth: true Layout.fillWidth: true
color: Cpp_ThemeManager.highlight color: Cpp_ThemeManager.highlight
Layout.minimumHeight: 32 + 2 * app.spacing Layout.minimumHeight: 32 + 2 * 8
visible: widget.currentIndex === 1 || widget.currentIndex === 2 visible: widget.currentIndex === 1 || widget.currentIndex === 2
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
anchors.centerIn: parent anchors.centerIn: parent
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
visible: widget.currentIndex === 1 visible: widget.currentIndex === 1
Widgets.Icon { /*Widgets.Icon {
width: 32 width: 32
height: 32 height: 32
color: palette.highlightedText color: palette.highlightedText
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
source: "qrc:/icons/accelerometer.svg" source: "qrc:/icons/accelerometer.svg"
} Label { }*/ Label {
font.pixelSize: 18 font.pixelSize: 18
wrapMode: Label.WordWrap wrapMode: Label.WordWrap
color: palette.highlightedText color: palette.highlightedText
@ -103,18 +101,18 @@ Page {
} }
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
anchors.centerIn: parent anchors.centerIn: parent
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
visible: widget.currentIndex === 2 visible: widget.currentIndex === 2
Widgets.Icon { /*Widgets.Icon {
width: 32 width: 32
height: 32 height: 32
source: "qrc:/icons/gyro.svg" source: "qrc:/icons/gyro.svg"
color: palette.highlightedText color: palette.highlightedText
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
} Label { }*/ Label {
font.pixelSize: 18 font.pixelSize: 18
wrapMode: Label.WordWrap wrapMode: Label.WordWrap
color: palette.highlightedText color: palette.highlightedText
@ -127,7 +125,7 @@ Page {
// Group title // Group title
// //
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
Label { Label {
@ -223,17 +221,17 @@ Page {
// Empty group text & icon // Empty group text & icon
// //
ColumnLayout { ColumnLayout {
spacing: app.spacing spacing: 8
anchors.centerIn: parent anchors.centerIn: parent
visible: grid.model === 0 visible: grid.model === 0
Widgets.Icon { /*Widgets.Icon {
width: 128 width: 128
height: 128 height: 128
color: Cpp_ThemeManager.text color: Cpp_ThemeManager.text
source: "qrc:/icons/group.svg" source: "qrc:/icons/group.svg"
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
} }*/
Label { Label {
font.bold: true font.bold: true
@ -247,7 +245,7 @@ Page {
font.pixelSize: 18 font.pixelSize: 18
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
wrapMode: Label.WrapAtWordBoundaryOrAnywhere wrapMode: Label.WrapAtWordBoundaryOrAnywhere
Layout.maximumWidth: grid.width - 8 * app.spacing Layout.maximumWidth: grid.width - 8 * 8
text: qsTr("Set group title and click on the \"Add dataset\" button to begin") text: qsTr("Set group title and click on the \"Add dataset\" button to begin")
} }
} }
@ -288,7 +286,7 @@ Page {
Loader { Loader {
id: loader id: loader
anchors.fill: parent anchors.fill: parent
anchors.margins: app.spacing anchors.margins: 8
sourceComponent: JsonDatasetDelegate { sourceComponent: JsonDatasetDelegate {
dataset: index dataset: index

View File

@ -65,22 +65,22 @@ Widgets.Window {
ListView { ListView {
id: view id: view
anchors.fill: parent anchors.fill: parent
spacing: app.spacing * 2 spacing: 8 * 2
anchors.margins: app.spacing anchors.margins: 8
model: Cpp_Project_Model.groupCount model: Cpp_Project_Model.groupCount
delegate: Loader { delegate: Loader {
width: view.width - app.spacing * 2 width: view.width - 8 * 2
height: Cpp_Project_Model.datasetCount(index) * 24 + 24 height: Cpp_Project_Model.datasetCount(index) * 24 + 24
sourceComponent: ColumnLayout { sourceComponent: ColumnLayout {
id: groupDelegate id: groupDelegate
spacing: app.spacing spacing: 8
readonly property var groupId: index readonly property var groupId: index
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Layout.fillWidth: true Layout.fillWidth: true
Widgets.Icon { Widgets.Icon {
@ -114,10 +114,10 @@ Widgets.Window {
delegate: Loader { delegate: Loader {
Layout.fillWidth: true Layout.fillWidth: true
sourceComponent: RowLayout { sourceComponent: RowLayout {
spacing: app.spacing spacing: 8
Item { Item {
width: 2 * app.spacing width: 2 * 8
} }
Widgets.Icon { Widgets.Icon {

View File

@ -30,8 +30,7 @@ ToolButton {
icon.width: 32 icon.width: 32
icon.height: 32 icon.height: 32
icon.color: "transparent" icon.color: "transparent"
display: mainWindow.dumbInterface ? AbstractButton.TextBesideIcon : display: AbstractButton.TextUnderIcon
AbstractButton.TextUnderIcon
Layout.minimumWidth: Math.max(implicitWidth, 72) Layout.minimumWidth: Math.max(implicitWidth, 72)
Layout.maximumWidth: Math.max(implicitWidth, 72) Layout.maximumWidth: Math.max(implicitWidth, 72)

View File

@ -67,12 +67,12 @@ Item {
// UI controls // UI controls
// //
ColumnLayout { ColumnLayout {
spacing: app.spacing spacing: 8
anchors.fill: parent anchors.fill: parent
anchors.margins: app.spacing anchors.margins: 8
RowLayout { RowLayout {
spacing: app.spacing spacing: 8
Label { Label {
text: qsTr("Map Type:") text: qsTr("Map Type:")

View File

@ -94,14 +94,14 @@ DropArea {
opacity: 0 opacity: 0
border.width: 1 border.width: 1
anchors.centerIn: parent anchors.centerIn: parent
color: Cpp_ThemeManager.highlight width: dropLayout.implicitWidth + 48
border.color: Cpp_ThemeManager.text height: dropLayout.implicitHeight + 48
width: dropLayout.implicitWidth + 6 * app.spacing color: Cpp_ThemeManager.colors["highlight"]
height: dropLayout.implicitHeight + 6 * app.spacing border.color: Cpp_ThemeManager.colors["text"]
ColumnLayout { ColumnLayout {
spacing: 16
id: dropLayout id: dropLayout
spacing: app.spacing * 2
anchors.centerIn: parent anchors.centerIn: parent
ToolButton { ToolButton {
@ -111,15 +111,14 @@ DropArea {
icon.height: 128 icon.height: 128
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
icon.source: "qrc:/icons/drag-drop.svg" icon.source: "qrc:/icons/drag-drop.svg"
icon.color: Cpp_ThemeManager.highlightedText icon.color: Cpp_ThemeManager.colors["highlighted_text"]
} }
Label { Label {
font.bold: true
font.pixelSize: 24
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
color: Cpp_ThemeManager.highlightedText
text: qsTr("Drop JSON and CSV files here") text: qsTr("Drop JSON and CSV files here")
font: Cpp_Misc_CommonFonts.customUiFont(24, true)
color: Cpp_ThemeManager.colors["highlighted_text"]
} }
} }

View File

@ -127,8 +127,8 @@ Controls.GroupBox {
Controls.Label { Controls.Label {
id: _title id: _title
text: root.title text: root.title
font: Cpp_CommonFonts.boldUiFont
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
font: Cpp_Misc_CommonFonts.boldUiFont
Layout.leftMargin: root.hardBorder ? -6 : undefined Layout.leftMargin: root.hardBorder ? -6 : undefined
color: root.hardBorder ? color: root.hardBorder ?
Cpp_ThemeManager.colors["pane_hard_caption_foreground"] : Cpp_ThemeManager.colors["pane_hard_caption_foreground"] :

View File

@ -28,7 +28,6 @@ import SerialStudio as SerialStudio
Item { Item {
id: root id: root
property bool isExternalWindow: false
property alias widgetEnabled: textEdit.widgetEnabled property alias widgetEnabled: textEdit.widgetEnabled
property alias vt100emulation: textEdit.vt100emulation property alias vt100emulation: textEdit.vt100emulation
@ -45,6 +44,14 @@ Item {
property alias displayMode: displayModeCombo.currentIndex property alias displayMode: displayModeCombo.currentIndex
} }
//
// Load welcome guide
//
function showWelcomeGuide() {
clear()
Cpp_IO_Console.append(Cpp_Misc_Translator.welcomeConsoleText() + "\n")
}
// //
// Function to send through serial port data // Function to send through serial port data
// //
@ -75,6 +82,17 @@ Item {
textEdit.selectAll() textEdit.selectAll()
} }
//
// Re-load welcome text when the language is changed
//
Component.onCompleted: root.showWelcomeGuide()
Connections {
target: Cpp_Misc_Translator
function onLanguageChanged() {
root.showWelcomeGuide()
}
}
// //
// Right-click context menu // Right-click context menu
// //
@ -124,9 +142,9 @@ Item {
// Controls // Controls
// //
ColumnLayout { ColumnLayout {
spacing: 4
anchors.fill: parent anchors.fill: parent
spacing: app.spacing anchors.topMargin: -6
anchors.margins: app.spacing * 1.5
// //
// Console display // Console display
@ -178,20 +196,15 @@ Item {
opacity: enabled ? 1 : 0.5 opacity: enabled ? 1 : 0.5
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
enabled: Cpp_IO_Manager.readWrite enabled: Cpp_IO_Manager.readWrite
palette.text: Cpp_ThemeManager.consoleText placeholderText: qsTr("Send Data to Device") + "..."
palette.base: Cpp_ThemeManager.consoleBase
placeholderText: qsTr("Send data to device") + "..."
Component.onCompleted: {
if (Cpp_Qt6)
placeholderTextColor = Cpp_ThemeManager.consolePlaceholderText
}
// palette.base: Cpp_ThemeManager.colors["console_base"]
// Validate hex strings palette.text: Cpp_ThemeManager.colors["console_text"]
// palette.button: Cpp_ThemeManager.colors["console_button"]
//validator: RegExpValidator { palette.window: Cpp_ThemeManager.colors["console_window"]
// regExp: hexCheckbox.checked ? /^(?:([a-f0-9]{2})\s*)+$/i : /[\s\S]*/ palette.buttonText: Cpp_ThemeManager.colors["console_button_text"]
//} palette.placeholderText: Cpp_ThemeManager.colors["console_placeholder_text"]
palette.highlightedText: Cpp_ThemeManager.colors["console_highlighted_text"]
// //
// Send data on <enter> // Send data on <enter>
@ -280,7 +293,7 @@ Item {
CheckBox { CheckBox {
id: timestampCheck id: timestampCheck
text: qsTr("Show timestamp") text: qsTr("Show Timestamp")
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
checked: Cpp_IO_Console.showTimestamp checked: Cpp_IO_Console.showTimestamp
onCheckedChanged: { onCheckedChanged: {
@ -289,15 +302,29 @@ Item {
} }
} }
CheckBox {
id: vt100Check
text: qsTr("Emulate VT-100")
Layout.alignment: Qt.AlignVCenter
checked: textEdit.vt100emulation
onCheckedChanged: {
if (textEdit.vt100emulation !== checked)
textEdit.vt100emulation = checked
}
}
Item { Item {
Layout.fillWidth: true Layout.fillWidth: true
} }
ComboBox { ComboBox {
id: displayModeCombo id: displayModeCombo
Layout.fillWidth: true
Layout.maximumWidth: 164
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
model: Cpp_IO_Console.displayModes() model: Cpp_IO_Console.displayModes()
currentIndex: Cpp_IO_Console.displayMode currentIndex: Cpp_IO_Console.displayMode
displayText: qsTr("Display: %1").arg(currentText)
onCurrentIndexChanged: { onCurrentIndexChanged: {
if (currentIndex !== Cpp_IO_Console.displayMode) if (currentIndex !== Cpp_IO_Console.displayMode)
Cpp_IO_Console.displayMode = currentIndex Cpp_IO_Console.displayMode = currentIndex
@ -306,22 +333,38 @@ Item {
Button { Button {
height: 24 height: 24
icon.width: 18
icon.height: 18
Layout.maximumWidth: 32 Layout.maximumWidth: 32
icon.color: palette.text
opacity: enabled ? 1 : 0.5 opacity: enabled ? 1 : 0.5
onClicked: Cpp_IO_Console.save() onClicked: Cpp_IO_Console.save()
icon.source: "qrc:/icons/save.svg"
enabled: Cpp_IO_Console.saveAvailable enabled: Cpp_IO_Console.saveAvailable
icon.source: "qrc:/icons/buttons/save.svg"
icon.color: Cpp_ThemeManager.colors["button_text"]
} }
Button { Button {
height: 24 height: 24
icon.width: 18
icon.height: 18
Layout.maximumWidth: 32 Layout.maximumWidth: 32
icon.color: palette.text
opacity: enabled ? 1 : 0.5 opacity: enabled ? 1 : 0.5
onClicked: root.clear() onClicked: Cpp_IO_Console.print()
icon.source: "qrc:/icons/delete.svg"
enabled: Cpp_IO_Console.saveAvailable enabled: Cpp_IO_Console.saveAvailable
icon.source: "qrc:/icons/buttons/print.svg"
icon.color: Cpp_ThemeManager.colors["button_text"]
}
Button {
height: 24
icon.width: 18
icon.height: 18
onClicked: root.clear()
Layout.maximumWidth: 32
opacity: enabled ? 1 : 0.5
enabled: Cpp_IO_Console.saveAvailable
icon.source: "qrc:/icons/buttons/clear.svg"
icon.color: Cpp_ThemeManager.colors["button_text"]
} }
} }
} }

View File

@ -24,29 +24,13 @@ import QtQuick
import QtQuick.Window import QtQuick.Window
import QtQuick.Controls import QtQuick.Controls
import "Dialogs" as Windows import "Dialogs" as Dialogs
import "MainWindow" as MainWindow import "MainWindow" as MainWindow
import "ProjectEditor" as ProjectEditor import "ProjectEditor" as ProjectEditor
Item { Item {
id: app id: app
//
// Global propeties
//
readonly property int spacing: 8
readonly property string monoFont: "Roboto Mono"
//
// Access to dialogs & windows
//
property Window aboutDialog: null
property Window donateDialog: null
property Window mainWindow: null
property Window csvPlayerDialog: null
property Window projectEditorWindow: null
property Window acknowledgementsDialog: null
// //
// Check for updates (non-silent mode) // Check for updates (non-silent mode)
// //
@ -56,65 +40,45 @@ Item {
} }
// //
// MainWindow // Main window + subdialogs
// //
Loader { MainWindow.Root {
asynchronous: true id: mainWindow
sourceComponent: MainWindow.Root {
Component.onCompleted: { Dialogs.CsvPlayer {
app.forceActiveFocus() id: csvPlayer
app.mainWindow = this }
}
Dialogs.Donate {
id: donateDialog
}
DialogLoader {
id: projectEditor
source: "qrc:/app/qml/ProjectEditor/Root.qml"
}
DialogLoader {
id: mqttConfiguration
source: "qrc:/app/qml/Dialogs/MQTTConfiguration.qml"
}
DialogLoader {
id: aboutDialog
source: "qrc:/app/qml/Dialogs/About.qml"
}
DialogLoader {
id: acknowledgementsDialog
source: "qrc:/app/qml/Dialogs/Acknowledgements.qml"
} }
} }
// //
// About window // Dialog display functions
// //
Loader { function showAboutDialog() { aboutDialog.active = true }
asynchronous: true function showProjectEditor() { projectEditor.active = true }
sourceComponent: Windows.About { function showMqttConfiguration() { mqttConfiguration.active = true }
Component.onCompleted: app.aboutDialog = this function showAcknowledgements() { acknowledgementsDialog.active = true }
}
}
//
// CSV player window
//
Loader {
asynchronous: true
sourceComponent: Windows.CsvPlayer {
Component.onCompleted: app.csvPlayerDialog = this
}
}
//
// Project editor dialog
//
Loader {
asynchronous: true
sourceComponent: ProjectEditor.Root {
Component.onCompleted: app.projectEditorWindow = this
}
}
//
// Donations dialog
//
Loader {
asynchronous: false
sourceComponent: Windows.Donate {
Component.onCompleted: app.donateDialog = this
}
}
//
// Acknowledgements dialog
//
Loader {
asynchronous: true
sourceComponent: Windows.Acknowledgements {
Component.onCompleted: app.acknowledgementsDialog = this
}
}
} }

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface4506">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 11.636719 2.433594 C 11.496094 2.4375 11.359375 2.496094 11.261719 2.597656 L 4.605469 9.253906 L 1.738281 6.386719 C 1.601562 6.246094 1.398438 6.1875 1.210938 6.238281 C 1.019531 6.289062 0.871094 6.4375 0.820312 6.625 C 0.773438 6.816406 0.828125 7.019531 0.972656 7.152344 L 4.222656 10.402344 C 4.433594 10.617188 4.777344 10.617188 4.988281 10.402344 L 12.027344 3.363281 C 12.1875 3.207031 12.238281 2.96875 12.148438 2.761719 C 12.0625 2.558594 11.859375 2.425781 11.636719 2.433594 Z M 11.636719 2.433594 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 849 B

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface4844">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 6.5 1.21875 C 6.277344 1.21875 6.09375 1.402344 6.09375 1.625 L 6.09375 4.265625 L 4.265625 4.265625 C 3.707031 4.265625 3.25 4.722656 3.25 5.28125 L 3.25 5.890625 L 9.75 5.890625 L 9.75 5.28125 C 9.75 4.722656 9.292969 4.265625 8.734375 4.265625 L 6.90625 4.265625 L 6.90625 1.625 C 6.90625 1.402344 6.722656 1.21875 6.5 1.21875 Z M 3.230469 6.703125 C 3.113281 8.253906 2.464844 10.210938 2.457031 10.230469 C 2.417969 10.355469 2.4375 10.492188 2.515625 10.597656 C 2.589844 10.703125 2.714844 10.765625 2.84375 10.765625 L 4.460938 10.765625 C 4.675781 10.035156 4.722656 9.324219 4.722656 9.320312 C 4.738281 9.09375 4.929688 8.925781 5.15625 8.9375 C 5.378906 8.953125 5.546875 9.144531 5.535156 9.367188 C 5.53125 9.398438 5.492188 10.039062 5.304688 10.765625 L 7.695312 10.765625 C 7.507812 10.039062 7.46875 9.398438 7.464844 9.367188 C 7.453125 9.144531 7.621094 8.953125 7.84375 8.9375 C 8.074219 8.921875 8.261719 9.09375 8.277344 9.316406 C 8.277344 9.324219 8.324219 10.039062 8.539062 10.765625 L 10.15625 10.765625 C 10.285156 10.765625 10.410156 10.703125 10.484375 10.597656 C 10.5625 10.492188 10.582031 10.355469 10.542969 10.230469 C 10.535156 10.210938 9.886719 8.253906 9.769531 6.703125 Z M 3.230469 6.703125 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface4665">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 3.453125 3.046875 C 3.347656 3.046875 3.246094 3.085938 3.164062 3.164062 C 3.007812 3.324219 3.007812 3.582031 3.164062 3.742188 L 5.925781 6.5 L 3.164062 9.257812 C 3.007812 9.417969 3.007812 9.675781 3.164062 9.835938 C 3.246094 9.914062 3.347656 9.953125 3.453125 9.953125 C 3.558594 9.953125 3.660156 9.914062 3.742188 9.835938 L 6.5 7.074219 L 9.257812 9.835938 C 9.339844 9.914062 9.441406 9.953125 9.546875 9.953125 C 9.652344 9.953125 9.753906 9.914062 9.835938 9.835938 C 9.992188 9.675781 9.992188 9.417969 9.835938 9.257812 L 7.074219 6.5 L 9.835938 3.742188 C 9.992188 3.582031 9.992188 3.324219 9.835938 3.164062 C 9.675781 3.007812 9.417969 3.007812 9.257812 3.164062 L 6.5 5.925781 L 3.742188 3.164062 C 3.660156 3.085938 3.558594 3.046875 3.453125 3.046875 Z M 3.453125 3.046875 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface4001">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 7.828125 8.679688 C 7.878906 8.730469 7.878906 8.8125 7.828125 8.863281 C 7.777344 8.914062 7.695312 8.914062 7.644531 8.863281 L 7.191406 8.410156 L 5.441406 10.160156 C 5.085938 10.511719 4.515625 10.515625 4.164062 10.160156 L 3.605469 9.605469 L 2.234375 10.976562 C 2.183594 11.027344 2.101562 11.027344 2.050781 10.976562 C 2 10.925781 2 10.84375 2.050781 10.792969 L 3.421875 9.421875 L 2.867188 8.863281 C 2.515625 8.511719 2.515625 7.941406 2.867188 7.589844 L 4.617188 5.835938 L 4.203125 5.421875 C 4.152344 5.371094 4.152344 5.289062 4.203125 5.238281 C 4.253906 5.1875 4.335938 5.1875 4.386719 5.238281 Z M 5.234375 4.386719 C 5.183594 4.335938 5.183594 4.253906 5.234375 4.203125 C 5.285156 4.152344 5.367188 4.152344 5.417969 4.203125 L 5.871094 4.65625 L 7.621094 2.902344 C 7.976562 2.550781 8.546875 2.550781 8.898438 2.902344 L 9.457031 3.460938 L 10.828125 2.089844 C 10.878906 2.039062 10.960938 2.039062 11.011719 2.089844 C 11.0625 2.140625 11.0625 2.222656 11.011719 2.273438 L 9.640625 3.644531 L 10.195312 4.199219 C 10.546875 4.550781 10.546875 5.125 10.195312 5.476562 L 8.445312 7.226562 L 8.859375 7.644531 C 8.910156 7.695312 8.910156 7.777344 8.859375 7.828125 C 8.808594 7.878906 8.726562 7.878906 8.675781 7.828125 Z M 5.234375 4.386719 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface4599">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 11.398438 1.777344 C 11.363281 1.777344 11.332031 1.792969 11.304688 1.816406 L 9.960938 3.160156 L 9.363281 2.5625 C 9.035156 2.230469 8.496094 2.230469 8.164062 2.5625 L 6.371094 4.355469 L 5.949219 3.933594 C 5.898438 3.882812 5.816406 3.882812 5.765625 3.933594 C 5.714844 3.984375 5.714844 4.066406 5.765625 4.117188 L 6.71875 5.070312 L 5.78125 6.007812 C 5.730469 6.058594 5.730469 6.140625 5.78125 6.191406 C 5.832031 6.242188 5.914062 6.242188 5.964844 6.191406 L 6.902344 5.253906 L 8.023438 6.375 L 7.085938 7.3125 C 7.035156 7.363281 7.035156 7.445312 7.085938 7.496094 C 7.136719 7.546875 7.21875 7.546875 7.269531 7.496094 L 8.207031 6.558594 L 9.1875 7.539062 C 9.234375 7.582031 9.3125 7.59375 9.371094 7.539062 C 9.421875 7.492188 9.421875 7.40625 9.371094 7.355469 L 8.949219 6.933594 L 10.746094 5.140625 C 11.082031 4.800781 11.078125 4.257812 10.746094 3.941406 L 10.148438 3.34375 L 11.488281 2 C 11.539062 1.949219 11.539062 1.867188 11.488281 1.816406 C 11.464844 1.792969 11.429688 1.777344 11.398438 1.777344 Z M 4.023438 5.714844 C 3.988281 5.714844 3.957031 5.726562 3.929688 5.75 C 3.878906 5.800781 3.878906 5.882812 3.929688 5.933594 L 4.351562 6.355469 L 2.558594 8.152344 C 2.21875 8.488281 2.234375 9.027344 2.558594 9.351562 L 3.15625 9.949219 L 1.8125 11.289062 C 1.761719 11.339844 1.761719 11.425781 1.8125 11.472656 C 1.863281 11.523438 1.945312 11.523438 1.996094 11.472656 L 3.339844 10.132812 L 3.9375 10.730469 C 4.269531 11.0625 4.804688 11.0625 5.136719 10.730469 L 6.929688 8.933594 L 7.351562 9.355469 C 7.402344 9.40625 7.484375 9.40625 7.535156 9.355469 C 7.585938 9.304688 7.585938 9.222656 7.535156 9.171875 L 4.113281 5.75 C 4.089844 5.726562 4.054688 5.714844 4.023438 5.714844 Z M 4.023438 5.714844 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface3475">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 1.710938 2.988281 C 1.644531 2.988281 1.574219 3.003906 1.507812 3.035156 C 1.378906 3.105469 1.300781 3.238281 1.300781 3.386719 L 1.300781 10.132812 C 1.300781 10.285156 1.382812 10.421875 1.515625 10.488281 C 1.574219 10.515625 1.632812 10.53125 1.695312 10.53125 C 1.773438 10.53125 1.855469 10.503906 1.925781 10.453125 L 6.726562 6.972656 C 6.738281 6.960938 6.75 6.949219 6.761719 6.9375 L 6.761719 10.132812 C 6.761719 10.285156 6.84375 10.421875 6.976562 10.488281 C 7.035156 10.515625 7.09375 10.53125 7.152344 10.53125 C 7.234375 10.53125 7.316406 10.503906 7.382812 10.453125 L 12.1875 6.972656 C 12.289062 6.894531 12.351562 6.769531 12.351562 6.640625 C 12.347656 6.511719 12.28125 6.390625 12.175781 6.316406 L 7.371094 3.054688 C 7.25 2.976562 7.097656 2.96875 6.96875 3.035156 C 6.839844 3.105469 6.761719 3.238281 6.761719 3.386719 L 6.761719 6.355469 C 6.746094 6.34375 6.730469 6.328125 6.714844 6.316406 L 1.910156 3.054688 C 1.851562 3.015625 1.78125 2.992188 1.710938 2.988281 Z M 1.710938 2.988281 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface3786">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 4.671875 2.03125 C 4.894531 2.03125 5.078125 2.214844 5.078125 2.4375 L 5.078125 10.5625 C 5.078125 10.785156 4.894531 10.96875 4.671875 10.96875 C 4.449219 10.96875 4.265625 10.785156 4.265625 10.5625 L 4.265625 2.4375 C 4.265625 2.214844 4.449219 2.03125 4.671875 2.03125 Z M 8.328125 2.03125 C 8.550781 2.03125 8.734375 2.214844 8.734375 2.4375 L 8.734375 10.5625 C 8.734375 10.785156 8.550781 10.96875 8.328125 10.96875 C 8.105469 10.96875 7.921875 10.785156 7.921875 10.5625 L 7.921875 2.4375 C 7.921875 2.214844 8.105469 2.03125 8.328125 2.03125 Z M 8.328125 2.03125 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 908 B

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface3745">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 10.074219 5.953125 C 10.261719 6.070312 10.375 6.277344 10.375 6.5 C 10.375 6.722656 10.261719 6.929688 10.074219 7.046875 L 3.597656 11.171875 C 3.492188 11.238281 3.371094 11.273438 3.25 11.273438 C 3.144531 11.273438 3.035156 11.246094 2.9375 11.191406 C 2.726562 11.078125 2.601562 10.863281 2.601562 10.621094 L 2.601562 2.378906 C 2.601562 2.136719 2.726562 1.921875 2.9375 1.808594 C 3.148438 1.691406 3.394531 1.699219 3.597656 1.828125 Z M 10.074219 5.953125 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 803 B

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface3517">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 6.105469 2.730469 C 6.023438 2.730469 5.945312 2.753906 5.875 2.804688 L 1.074219 6.289062 C 0.96875 6.363281 0.90625 6.488281 0.910156 6.617188 C 0.910156 6.75 0.976562 6.871094 1.085938 6.941406 L 5.890625 10.203125 C 6.011719 10.285156 6.160156 10.292969 6.289062 10.222656 C 6.417969 10.152344 6.5 10.019531 6.5 9.871094 L 6.5 6.902344 C 6.515625 6.917969 6.527344 6.929688 6.542969 6.941406 L 11.347656 10.203125 C 11.472656 10.285156 11.621094 10.292969 11.75 10.222656 C 11.878906 10.152344 11.960938 10.019531 11.960938 9.871094 L 11.960938 3.128906 C 11.960938 2.976562 11.875 2.839844 11.742188 2.773438 C 11.6875 2.742188 11.625 2.730469 11.566406 2.730469 C 11.484375 2.730469 11.402344 2.753906 11.335938 2.804688 L 6.535156 6.289062 C 6.519531 6.296875 6.511719 6.308594 6.5 6.320312 L 6.5 3.128906 C 6.5 2.976562 6.417969 2.839844 6.28125 2.773438 C 6.226562 2.742188 6.167969 2.730469 6.105469 2.730469 Z M 6.105469 2.730469 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface4077">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 3.25 2.859375 C 2.75 2.859375 2.339844 3.269531 2.339844 3.769531 L 2.339844 9.230469 C 2.339844 9.371094 2.375 9.5 2.429688 9.617188 L 3.472656 6.265625 C 3.625 5.785156 4.066406 5.460938 4.570312 5.460938 L 10.523438 5.460938 C 10.570312 5.460938 10.613281 5.46875 10.660156 5.476562 L 10.660156 4.550781 C 10.660156 4.046875 10.25 3.640625 9.75 3.640625 L 5.851562 3.640625 C 5.710938 3.640625 5.570312 3.59375 5.460938 3.511719 L 4.835938 3.042969 C 4.679688 2.925781 4.484375 2.859375 4.289062 2.859375 Z M 4.570312 5.71875 C 4.179688 5.71875 3.839844 5.972656 3.722656 6.34375 L 2.621094 9.882812 C 2.785156 10.042969 3.003906 10.140625 3.25 10.140625 L 9.363281 10.140625 C 9.722656 10.140625 10.035156 9.933594 10.183594 9.617188 L 11.140625 6.558594 C 11.203125 6.359375 11.167969 6.152344 11.046875 5.984375 C 10.988281 5.902344 10.816406 5.71875 10.523438 5.71875 Z M 4.570312 5.71875 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface4761">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 4.671875 2.4375 C 4.222656 2.4375 3.859375 2.800781 3.859375 3.25 L 3.859375 3.453125 L 9.140625 3.453125 L 9.140625 3.25 C 9.140625 2.800781 8.777344 2.4375 8.328125 2.4375 Z M 9.546875 4.0625 L 3.453125 4.0625 C 2.78125 4.0625 2.234375 4.609375 2.234375 5.28125 L 2.234375 8.53125 C 2.234375 9.203125 2.78125 9.75 3.453125 9.75 L 3.859375 9.75 L 3.859375 10.15625 C 3.859375 10.605469 4.222656 10.96875 4.671875 10.96875 L 8.328125 10.96875 C 8.777344 10.96875 9.140625 10.605469 9.140625 10.15625 L 9.140625 9.75 L 9.546875 9.75 C 10.21875 9.75 10.765625 9.203125 10.765625 8.53125 L 10.765625 5.28125 C 10.765625 4.609375 10.21875 4.0625 9.546875 4.0625 Z M 8.125 10.15625 L 4.875 10.15625 C 4.761719 10.15625 4.671875 10.066406 4.671875 9.953125 L 4.671875 7.71875 C 4.671875 7.605469 4.761719 7.515625 4.875 7.515625 L 8.125 7.515625 C 8.238281 7.515625 8.328125 7.605469 8.328125 7.71875 L 8.328125 9.953125 C 8.328125 10.066406 8.238281 10.15625 8.125 10.15625 Z M 8.734375 5.28125 C 8.957031 5.28125 9.140625 5.464844 9.140625 5.6875 C 9.140625 5.910156 8.957031 6.09375 8.734375 6.09375 C 8.511719 6.09375 8.328125 5.910156 8.328125 5.6875 C 8.328125 5.464844 8.511719 5.28125 8.734375 5.28125 Z M 8.734375 5.28125 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface4818">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 3.65625 2.4375 C 2.984375 2.4375 2.4375 2.984375 2.4375 3.65625 L 2.4375 9.34375 C 2.4375 10.015625 2.984375 10.5625 3.65625 10.5625 L 9.34375 10.5625 C 10.015625 10.5625 10.5625 10.015625 10.5625 9.34375 L 10.5625 3.859375 C 10.5625 3.75 10.519531 3.648438 10.441406 3.574219 L 9.425781 2.558594 C 9.351562 2.480469 9.25 2.4375 9.140625 2.4375 L 8.53125 2.4375 L 8.53125 4.671875 C 8.53125 5.007812 8.257812 5.28125 7.921875 5.28125 L 4.875 5.28125 C 4.539062 5.28125 4.265625 5.007812 4.265625 4.671875 L 4.265625 2.4375 Z M 6.703125 2.640625 C 6.589844 2.640625 6.5 2.730469 6.5 2.84375 L 6.5 4.46875 C 6.5 4.582031 6.589844 4.671875 6.703125 4.671875 L 7.3125 4.671875 C 7.425781 4.671875 7.515625 4.582031 7.515625 4.46875 L 7.515625 2.84375 C 7.515625 2.730469 7.425781 2.640625 7.3125 2.640625 Z M 4.671875 7.109375 L 8.328125 7.109375 C 8.664062 7.109375 8.9375 7.382812 8.9375 7.71875 L 8.9375 9.75 L 4.0625 9.75 L 4.0625 7.71875 C 4.0625 7.382812 4.335938 7.109375 4.671875 7.109375 Z M 4.671875 7.109375 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface4229">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(9.019608%,9.019608%,9.411765%);fill-opacity:1;" d="M 6.5 2.859375 C 3.460938 2.859375 1.039062 5.472656 1.039062 6.5 C 1.039062 7.527344 3.460938 10.140625 6.5 10.140625 C 9.539062 10.140625 11.960938 7.527344 11.960938 6.5 C 11.960938 5.472656 9.539062 2.859375 6.5 2.859375 Z M 6.5 4.160156 C 7.792969 4.160156 8.839844 5.207031 8.839844 6.5 C 8.839844 7.792969 7.792969 8.839844 6.5 8.839844 C 5.207031 8.839844 4.160156 7.792969 4.160156 6.5 C 4.160156 5.207031 5.207031 4.160156 6.5 4.160156 Z M 6.5 5.71875 C 6.070312 5.71875 5.71875 6.070312 5.71875 6.5 C 5.71875 6.929688 6.070312 7.28125 6.5 7.28125 C 6.929688 7.28125 7.28125 6.929688 7.28125 6.5 C 7.28125 6.070312 6.929688 5.71875 6.5 5.71875 Z M 6.5 5.71875 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1003 B

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface1596">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(25.882354%,30.588236%,36.078432%);fill-opacity:1;" d="M 0.40625 1.21875 L 12.59375 1.21875 L 12.59375 11.78125 L 0.40625 11.78125 Z M 0.40625 1.21875 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(68.627453%,77.254903%,84.705883%);fill-opacity:1;" d="M 12.1875 1.625 L 12.1875 11.375 L 0.8125 11.375 L 0.8125 1.625 L 12.1875 1.625 M 13 0.8125 L 0 0.8125 L 0 12.1875 L 13 12.1875 Z M 13 0.8125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(68.627453%,77.254903%,84.705883%);fill-opacity:1;" d="M 0 0.8125 L 13 0.8125 L 13 2.4375 L 0 2.4375 Z M 0 0.8125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 6.5 8.9375 L 9.75 8.9375 L 9.75 9.75 L 6.5 9.75 Z M 3.332031 9.34375 L 2.84375 8.773438 L 4.46875 7.3125 L 2.84375 5.851562 L 3.332031 5.28125 L 5.6875 7.3125 Z M 3.332031 9.34375 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12pt" height="12pt" viewBox="0 0 12 12" version="1.1">
<g id="surface11501">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 0.375 8.625 L 1.875 8.625 L 1.875 10.875 L 0.375 10.875 Z M 0.375 8.625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 1.5 9 L 1.5 10.5 L 0.75 10.5 L 0.75 9 L 1.5 9 M 2.25 8.25 L 0 8.25 L 0 11.25 L 2.25 11.25 Z M 2.25 8.25 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 3.375 6.375 L 4.875 6.375 L 4.875 10.875 L 3.375 10.875 Z M 3.375 6.375 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 4.5 6.75 L 4.5 10.5 L 3.75 10.5 L 3.75 6.75 L 4.5 6.75 M 5.25 6 L 3 6 L 3 11.25 L 5.25 11.25 Z M 5.25 6 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 6.375 8.625 L 7.875 8.625 L 7.875 10.875 L 6.375 10.875 Z M 6.375 8.625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 7.5 9 L 7.5 10.5 L 6.75 10.5 L 6.75 9 L 7.5 9 M 8.25 8.25 L 6 8.25 L 6 11.25 L 8.25 11.25 Z M 8.25 8.25 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 9.375 6.375 L 10.875 6.375 L 10.875 10.875 L 9.375 10.875 Z M 9.375 6.375 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 10.5 6.75 L 10.5 10.5 L 9.75 10.5 L 9.75 6.75 L 10.5 6.75 M 11.25 6 L 9 6 L 9 11.25 L 11.25 11.25 Z M 11.25 6 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 7.125 3.824219 L 4.125 2.324219 L 1.351562 3.675781 L 0.976562 3.074219 L 4.125 1.425781 L 7.125 3 L 9.976562 1.5 L 10.273438 2.175781 Z M 7.125 3.824219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 1.125 2.625 C 0.710938 2.625 0.375 2.960938 0.375 3.375 C 0.375 3.789062 0.710938 4.125 1.125 4.125 C 1.539062 4.125 1.875 3.789062 1.875 3.375 C 1.875 2.960938 1.539062 2.625 1.125 2.625 Z M 1.125 2.625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 1.125 3 C 1.351562 3 1.5 3.148438 1.5 3.375 C 1.5 3.601562 1.351562 3.75 1.125 3.75 C 0.898438 3.75 0.75 3.601562 0.75 3.375 C 0.75 3.148438 0.898438 3 1.125 3 M 1.125 2.25 C 0.523438 2.25 0 2.773438 0 3.375 C 0 3.976562 0.523438 4.5 1.125 4.5 C 1.726562 4.5 2.25 3.976562 2.25 3.375 C 2.25 2.773438 1.726562 2.25 1.125 2.25 Z M 1.125 2.25 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 4.125 1.125 C 3.710938 1.125 3.375 1.460938 3.375 1.875 C 3.375 2.289062 3.710938 2.625 4.125 2.625 C 4.539062 2.625 4.875 2.289062 4.875 1.875 C 4.875 1.460938 4.539062 1.125 4.125 1.125 Z M 4.125 1.125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 4.125 1.5 C 4.351562 1.5 4.5 1.648438 4.5 1.875 C 4.5 2.101562 4.351562 2.25 4.125 2.25 C 3.898438 2.25 3.75 2.101562 3.75 1.875 C 3.75 1.648438 3.898438 1.5 4.125 1.5 M 4.125 0.75 C 3.523438 0.75 3 1.273438 3 1.875 C 3 2.476562 3.523438 3 4.125 3 C 4.726562 3 5.25 2.476562 5.25 1.875 C 5.25 1.273438 4.726562 0.75 4.125 0.75 Z M 4.125 0.75 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 7.125 2.625 C 6.710938 2.625 6.375 2.960938 6.375 3.375 C 6.375 3.789062 6.710938 4.125 7.125 4.125 C 7.539062 4.125 7.875 3.789062 7.875 3.375 C 7.875 2.960938 7.539062 2.625 7.125 2.625 Z M 7.125 2.625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 7.125 3 C 7.351562 3 7.5 3.148438 7.5 3.375 C 7.5 3.601562 7.351562 3.75 7.125 3.75 C 6.898438 3.75 6.75 3.601562 6.75 3.375 C 6.75 3.148438 6.898438 3 7.125 3 M 7.125 2.25 C 6.523438 2.25 6 2.773438 6 3.375 C 6 3.976562 6.523438 4.5 7.125 4.5 C 7.726562 4.5 8.25 3.976562 8.25 3.375 C 8.25 2.773438 7.726562 2.25 7.125 2.25 Z M 7.125 2.25 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 10.125 1.125 C 9.710938 1.125 9.375 1.460938 9.375 1.875 C 9.375 2.289062 9.710938 2.625 10.125 2.625 C 10.539062 2.625 10.875 2.289062 10.875 1.875 C 10.875 1.460938 10.539062 1.125 10.125 1.125 Z M 10.125 1.125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 10.125 1.5 C 10.351562 1.5 10.5 1.648438 10.5 1.875 C 10.5 2.101562 10.351562 2.25 10.125 2.25 C 9.898438 2.25 9.75 2.101562 9.75 1.875 C 9.75 1.648438 9.898438 1.5 10.125 1.5 M 10.125 0.75 C 9.523438 0.75 9 1.273438 9 1.875 C 9 2.476562 9.523438 3 10.125 3 C 10.726562 3 11.25 2.476562 11.25 1.875 C 11.25 1.273438 10.726562 0.75 10.125 0.75 Z M 10.125 0.75 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.5pt" height="13.5pt" viewBox="0 0 13.5 13.5" version="1.1">
<g id="surface2521">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(88.235295%,92.156863%,94.901961%);fill-opacity:1;" d="M 6.90625 0.40625 L 12.59375 0.40625 L 12.59375 12.59375 L 6.90625 12.59375 Z M 6.90625 0.40625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 12.1875 0.8125 L 12.1875 12.1875 L 7.3125 12.1875 L 7.3125 0.8125 L 12.1875 0.8125 M 13 0 L 6.5 0 L 6.5 13 L 13 13 Z M 13 0 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 9.75 8.9375 C 9.300781 8.9375 8.9375 9.300781 8.9375 9.75 C 8.9375 10.199219 9.300781 10.5625 9.75 10.5625 C 10.199219 10.5625 10.5625 10.199219 10.5625 9.75 C 10.5625 9.300781 10.199219 8.9375 9.75 8.9375 Z M 9.75 8.9375 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 8.125 4.0625 L 11.375 4.0625 L 11.375 4.875 L 8.125 4.875 Z M 8.125 4.0625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(21.176471%,25.098041%,30.19608%);fill-opacity:1;" d="M 5.628906 5.6875 C 5.660156 5.6875 5.6875 5.714844 5.6875 5.746094 L 5.6875 10.503906 C 5.6875 10.535156 5.660156 10.5625 5.628906 10.5625 L 4.121094 10.5625 C 4.089844 10.5625 4.0625 10.535156 4.0625 10.503906 L 4.0625 5.746094 C 4.0625 5.714844 4.089844 5.6875 4.121094 5.6875 L 5.628906 5.6875 M 5.628906 4.875 L 4.121094 4.875 C 3.640625 4.875 3.25 5.265625 3.25 5.746094 L 3.25 10.503906 C 3.25 10.984375 3.640625 11.375 4.121094 11.375 L 5.628906 11.375 C 6.109375 11.375 6.5 10.984375 6.5 10.503906 L 6.5 5.746094 C 6.5 5.265625 6.109375 4.875 5.628906 4.875 Z M 5.628906 4.875 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 8.125 1.625 L 11.375 1.625 L 11.375 3.25 L 8.125 3.25 Z M 8.125 1.625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.862745%,42.745098%,42.745098%);fill-opacity:1;" d="M 0.40625 8.53125 L 9.34375 8.53125 L 9.34375 12.59375 L 0.40625 12.59375 Z M 0.40625 8.53125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(78.039217%,26.274511%,26.274511%);fill-opacity:1;" d="M 8.9375 8.9375 L 8.9375 12.1875 L 0.8125 12.1875 L 0.8125 8.9375 L 8.9375 8.9375 M 9.75 8.125 L 0 8.125 L 0 13 L 9.75 13 Z M 9.75 8.125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.862745%,56.078434%,56.078434%);fill-opacity:1;" d="M 0.40625 8.53125 L 0.40625 8.125 C 0.40625 7.453125 0.953125 6.90625 1.625 6.90625 L 8.125 6.90625 C 8.796875 6.90625 9.34375 7.453125 9.34375 8.125 L 9.34375 8.53125 Z M 0.40625 8.53125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(78.039217%,26.274511%,26.274511%);fill-opacity:1;" d="M 8.125 7.3125 C 8.574219 7.3125 8.9375 7.675781 8.9375 8.125 L 0.8125 8.125 C 0.8125 7.675781 1.175781 7.3125 1.625 7.3125 L 8.125 7.3125 M 8.125 6.5 L 1.625 6.5 C 0.726562 6.5 0 7.226562 0 8.125 L 0 8.9375 L 9.75 8.9375 L 9.75 8.125 C 9.75 7.226562 9.023438 6.5 8.125 6.5 Z M 8.125 6.5 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 1.625 8.125 L 3.25 8.125 L 3.25 8.9375 L 1.625 8.9375 Z M 6.5 8.125 L 8.125 8.125 L 8.125 8.9375 L 6.5 8.9375 Z M 6.5 8.125 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12pt" height="12pt" viewBox="0 0 12 12" version="1.1">
<g id="surface11013">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 6 9.375 C 3.363281 9.375 1.09375 6.78125 0.472656 6 C 1.097656 5.222656 3.371094 2.625 6 2.625 C 8.636719 2.625 10.90625 5.21875 11.527344 6 C 10.902344 6.777344 8.628906 9.375 6 9.375 Z M 6 9.375 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 6 3 C 8.25 3 10.257812 5.074219 11.042969 6 C 10.261719 6.925781 8.257812 9 6 9 C 3.75 9 1.742188 6.925781 0.957031 6 C 1.738281 5.074219 3.742188 3 6 3 M 6 2.25 C 2.6875 2.25 0 6 0 6 C 0 6 2.6875 9.75 6 9.75 C 9.3125 9.75 12 6 12 6 C 12 6 9.3125 2.25 6 2.25 Z M 6 2.25 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 6 4.125 C 4.964844 4.125 4.125 4.964844 4.125 6 C 4.125 7.035156 4.964844 7.875 6 7.875 C 7.035156 7.875 7.875 7.035156 7.875 6 C 7.875 4.964844 7.035156 4.125 6 4.125 Z M 6 4.125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 6 4.5 C 6.828125 4.5 7.5 5.171875 7.5 6 C 7.5 6.828125 6.828125 7.5 6 7.5 C 5.171875 7.5 4.5 6.828125 4.5 6 C 4.5 5.171875 5.171875 4.5 6 4.5 M 6 3.75 C 4.757812 3.75 3.75 4.757812 3.75 6 C 3.75 7.242188 4.757812 8.25 6 8.25 C 7.242188 8.25 8.25 7.242188 8.25 6 C 8.25 4.757812 7.242188 3.75 6 3.75 Z M 6 3.75 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(21.176471%,25.098041%,30.19608%);fill-opacity:1;" d="M 6 5.25 C 5.585938 5.25 5.25 5.585938 5.25 6 C 5.25 6.414062 5.585938 6.75 6 6.75 C 6.414062 6.75 6.75 6.414062 6.75 6 C 6.75 5.585938 6.414062 5.25 6 5.25 Z M 6 5.25 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 7.125 4.5 C 6.917969 4.5 6.75 4.667969 6.75 4.875 C 6.75 5.082031 6.917969 5.25 7.125 5.25 C 7.332031 5.25 7.5 5.082031 7.5 4.875 C 7.5 4.667969 7.332031 4.5 7.125 4.5 Z M 7.125 4.5 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface5454">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 0.898438 3 C 0.898438 1.960938 1.960938 0.898438 3 0.898438 L 21 0.898438 C 22.039062 0.898438 23.101562 1.960938 23.101562 3 L 23.101562 18.601562 C 23.101562 19.640625 22.039062 20.699219 21 20.699219 L 4.089844 20.699219 L 0.898438 23.359375 Z M 0.898438 3 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 21 1.199219 C 21.875 1.199219 22.800781 2.125 22.800781 3 L 22.800781 18.601562 C 22.800781 19.476562 21.875 20.398438 21 20.398438 L 3.984375 20.398438 L 3.816406 20.539062 L 1.199219 22.71875 L 1.199219 3 C 1.199219 2.125 2.125 1.199219 3 1.199219 L 21 1.199219 M 21 0.601562 L 3 0.601562 C 1.800781 0.601562 0.601562 1.800781 0.601562 3 L 0.601562 24 L 4.199219 21 L 21 21 C 22.199219 21 23.398438 19.800781 23.398438 18.601562 L 23.398438 3 C 23.398438 1.800781 22.199219 0.601562 21 0.601562 Z M 21 0.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 12 4.355469 C 11.4375 4.355469 10.980469 4.8125 10.980469 5.371094 C 10.980469 5.933594 11.4375 6.390625 12 6.390625 C 12.5625 6.390625 13.019531 5.933594 13.019531 5.371094 C 13.019531 4.8125 12.5625 4.355469 12 4.355469 Z M 12.601562 15 L 12.601562 7.800781 L 10.199219 7.800781 L 10.199219 9 L 11.398438 9 L 11.398438 15 L 10.199219 15 L 10.199219 16.199219 L 13.800781 16.199219 L 13.800781 15 Z M 12.601562 15 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30pt" height="30pt" viewBox="0 0 30 30" version="1.1">
<g id="surface21457">
<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(47.843137%,30.980393%,20.392157%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.5 24.5 L 1.5 24.5 M 8.5 18.5 C 5.473958 18.5 2.5 14.416667 2.5 9.5 C 2.5 8.015625 2.5 8.833333 2.5 7.5 M 2.5 38.5 C 2.5 38.041667 2.5 37.96875 2.5 37.5 C 2.5 32.958333 8.1875 29 15 29 M 27.5 2.5 C 27.5 4.770833 24.161458 6.5 20 6.5 C 15.838542 6.5 12.5 4.770833 12.5 2.5 M 30.5 24.5 L 38.5 24.5 M 31.5 18.5 C 34.526042 18.5 37.5 14.416667 37.5 9.5 C 37.5 8.015625 37.5 8.833333 37.5 7.5 M 37.5 38.5 C 37.5 38.041667 37.5 37.96875 37.5 37.5 C 37.5 32.958333 31.8125 29 25 29 " transform="matrix(0.75,0,0,0.75,0,0)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 15 27.375 C 9.832031 27.375 5.625 22.214844 5.625 15.871094 C 5.625 15.417969 5.632812 14.886719 5.703125 14.371094 C 5.792969 13.53125 5.960938 12.902344 6.199219 12.484375 C 6.496094 11.902344 6.84375 11.660156 7.378906 11.660156 C 8.0625 11.660156 8.953125 12.050781 9.988281 12.5 C 11.460938 13.144531 13.128906 13.875 15 13.875 C 16.871094 13.875 18.539062 13.144531 20.011719 12.503906 C 21.046875 12.050781 21.9375 11.660156 22.621094 11.660156 C 23.15625 11.660156 23.503906 11.902344 23.789062 12.464844 C 24.039062 12.902344 24.207031 13.53125 24.296875 14.363281 C 24.367188 14.886719 24.375 15.421875 24.375 15.871094 C 24.375 22.214844 20.167969 27.375 15 27.375 Z M 15 27.375 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.843137%,30.980393%,20.392157%);fill-opacity:1;" d="M 22.621094 12.035156 C 22.949219 12.035156 23.203125 12.136719 23.453125 12.632812 L 23.464844 12.652344 L 23.472656 12.671875 C 23.6875 13.042969 23.839844 13.625 23.925781 14.421875 C 23.992188 14.917969 24 15.433594 24 15.871094 C 24 22.007812 19.960938 27 15 27 C 10.039062 27 6 22.007812 6 15.871094 C 6 15.433594 6.007812 14.917969 6.078125 14.402344 C 6.160156 13.625 6.3125 13.042969 6.527344 12.671875 L 6.535156 12.652344 L 6.546875 12.632812 C 6.796875 12.136719 7.050781 12.035156 7.378906 12.035156 C 7.984375 12.035156 8.882812 12.429688 9.835938 12.847656 C 11.269531 13.472656 13.050781 14.25 15 14.25 C 16.949219 14.25 18.730469 13.472656 20.164062 12.847656 C 21.113281 12.429688 22.015625 12.035156 22.621094 12.035156 M 22.621094 11.285156 C 20.84375 11.285156 18.140625 13.5 15 13.5 C 11.859375 13.5 9.15625 11.285156 7.378906 11.285156 C 6.757812 11.285156 6.25 11.558594 5.878906 12.296875 C 5.617188 12.75 5.429688 13.402344 5.332031 14.324219 C 5.265625 14.828125 5.25 15.347656 5.25 15.871094 C 5.25 22.433594 9.613281 27.75 15 27.75 C 20.386719 27.75 24.75 22.433594 24.75 15.871094 C 24.75 15.347656 24.734375 14.828125 24.667969 14.324219 C 24.570312 13.402344 24.382812 12.75 24.121094 12.296875 C 23.75 11.558594 23.242188 11.285156 22.621094 11.285156 Z M 22.621094 11.285156 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.843137%,30.980393%,20.392157%);fill-opacity:1;" d="M 15 27.75 C 15.253906 27.75 15.5 27.726562 15.746094 27.703125 L 15 18.75 L 14.253906 27.703125 C 14.5 27.726562 14.746094 27.75 15 27.75 Z M 15 27.75 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(65.098041%,44.313726%,30.588236%);fill-opacity:1;" d="M 15 2.625 C 13.136719 2.625 11.625 4.640625 11.625 7.125 C 11.625 9.609375 13.136719 11.625 15 11.625 C 16.863281 11.625 18.375 9.609375 18.375 7.125 C 18.375 4.640625 16.863281 2.625 15 2.625 Z M 15 2.625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.843137%,30.980393%,20.392157%);fill-opacity:1;" d="M 15 3 C 16.65625 3 18 4.851562 18 7.125 C 18 9.398438 16.65625 11.25 15 11.25 C 13.34375 11.25 12 9.398438 12 7.125 C 12 4.851562 13.34375 3 15 3 M 15 2.25 C 12.929688 2.25 11.25 4.433594 11.25 7.125 C 11.25 9.816406 12.929688 12 15 12 C 17.070312 12 18.75 9.816406 18.75 7.125 C 18.75 4.433594 17.070312 2.25 15 2.25 Z M 15 2.25 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(83.92157%,66.666669%,43.921569%);fill-opacity:1;" d="M 15 14.625 C 11.070312 14.625 7.875 12.605469 7.875 10.125 C 7.875 7.644531 11.070312 5.625 15 5.625 C 18.929688 5.625 22.125 7.644531 22.125 10.125 C 22.125 12.605469 18.929688 14.625 15 14.625 Z M 15 14.625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.843137%,30.980393%,20.392157%);fill-opacity:1;" d="M 15 6 C 18.660156 6 21.75 7.890625 21.75 10.125 C 21.75 12.359375 18.660156 14.25 15 14.25 C 11.339844 14.25 8.25 12.359375 8.25 10.125 C 8.25 7.890625 11.339844 6 15 6 M 15 5.25 C 10.859375 5.25 7.5 7.433594 7.5 10.125 C 7.5 12.816406 10.859375 15 15 15 C 19.140625 15 22.5 12.816406 22.5 10.125 C 22.5 7.433594 19.140625 5.25 15 5.25 Z M 15 5.25 "/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30pt" height="30pt" viewBox="0 0 30 30" version="1.1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface16143"> <g id="surface11662">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 12.4375 8.789062 L 16.054688 5.171875 C 16.730469 4.496094 17.625 4.125 18.582031 4.125 C 19.535156 4.125 20.433594 4.496094 21.105469 5.171875 L 22.109375 6.171875 L 27 1.28125 L 28.71875 3 L 23.828125 7.890625 L 24.828125 8.894531 C 26.222656 10.285156 26.222656 12.550781 24.828125 13.945312 L 21.210938 17.5625 Z M 12.4375 8.789062 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 9.949219 7.03125 L 12.84375 4.136719 C 13.382812 3.597656 14.101562 3.300781 14.863281 3.300781 C 15.628906 3.300781 16.347656 3.597656 16.886719 4.136719 L 17.6875 4.9375 L 21.601562 1.023438 L 22.976562 2.398438 L 19.0625 6.3125 L 19.863281 7.113281 C 20.976562 8.226562 20.976562 10.042969 19.863281 11.15625 L 16.96875 14.050781 Z M 9.949219 7.03125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 27 1.808594 L 28.191406 3 L 23.828125 7.363281 L 23.296875 7.890625 L 23.828125 8.421875 L 24.5625 9.160156 C 25.808594 10.40625 25.808594 12.433594 24.5625 13.679688 L 21.210938 17.03125 L 12.96875 8.789062 L 16.320312 5.4375 C 16.921875 4.832031 17.726562 4.5 18.582031 4.5 C 19.433594 4.5 20.238281 4.832031 20.839844 5.4375 L 21.578125 6.171875 L 22.109375 6.703125 L 22.636719 6.171875 L 27 1.808594 M 27 0.75 L 22.109375 5.640625 L 21.371094 4.90625 C 20.601562 4.136719 19.589844 3.75 18.582031 3.75 C 17.570312 3.75 16.558594 4.136719 15.789062 4.90625 L 11.90625 8.789062 L 21.210938 18.09375 L 25.09375 14.210938 C 26.632812 12.667969 26.632812 10.171875 25.09375 8.628906 L 24.359375 7.890625 L 29.25 3 Z M 27 0.75 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 21.601562 1.449219 L 22.550781 2.398438 L 19.0625 5.890625 L 18.636719 6.3125 L 19.652344 7.328125 C 20.648438 8.324219 20.648438 9.945312 19.652344 10.945312 L 16.96875 13.625 L 10.375 7.03125 L 13.054688 4.347656 C 13.539062 3.867188 14.179688 3.601562 14.863281 3.601562 C 15.546875 3.601562 16.191406 3.867188 16.671875 4.347656 L 17.6875 5.363281 L 18.109375 4.9375 L 21.601562 1.449219 M 21.601562 0.601562 L 17.6875 4.515625 L 17.097656 3.925781 C 16.480469 3.308594 15.671875 3 14.863281 3 C 14.054688 3 13.246094 3.308594 12.632812 3.925781 L 9.527344 7.03125 L 16.96875 14.472656 L 20.074219 11.367188 C 21.308594 10.136719 21.308594 8.136719 20.074219 6.902344 L 19.484375 6.3125 L 23.398438 2.398438 Z M 21.601562 0.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 9.363281 10.277344 L 10.914062 8.726562 C 11.398438 8.242188 12.015625 7.964844 12.609375 7.964844 C 13.03125 7.964844 13.394531 8.105469 13.65625 8.371094 L 21.628906 16.34375 C 22.289062 17 22.128906 18.230469 21.273438 19.085938 L 19.722656 20.636719 Z M 9.363281 10.277344 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 7.492188 8.21875 L 8.730469 6.980469 C 9.117188 6.59375 9.613281 6.371094 10.085938 6.371094 C 10.425781 6.371094 10.714844 6.484375 10.925781 6.695312 L 17.304688 13.074219 C 17.832031 13.601562 17.703125 14.585938 17.019531 15.269531 L 15.777344 16.507812 Z M 7.492188 8.21875 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 12.609375 8.339844 C 12.832031 8.339844 13.148438 8.390625 13.394531 8.632812 L 21.367188 16.605469 C 21.867188 17.109375 21.707031 18.125 21.007812 18.820312 L 19.726562 20.105469 L 9.894531 10.277344 L 11.179688 8.992188 C 11.585938 8.582031 12.121094 8.339844 12.609375 8.339844 M 12.609375 7.589844 C 11.945312 7.589844 11.222656 7.886719 10.648438 8.460938 L 8.832031 10.277344 L 19.726562 21.164062 L 21.539062 19.351562 C 22.542969 18.347656 22.703125 16.882812 21.894531 16.078125 L 13.921875 8.105469 C 13.578125 7.757812 13.109375 7.589844 12.609375 7.589844 Z M 12.609375 7.589844 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 10.085938 6.671875 C 10.265625 6.671875 10.519531 6.714844 10.714844 6.90625 L 17.09375 13.285156 C 17.496094 13.6875 17.363281 14.5 16.808594 15.054688 L 15.78125 16.085938 L 7.914062 8.21875 L 8.945312 7.191406 C 9.269531 6.867188 9.695312 6.671875 10.085938 6.671875 M 10.085938 6.074219 C 9.554688 6.074219 8.976562 6.3125 8.519531 6.769531 L 7.066406 8.21875 L 15.78125 16.933594 L 17.230469 15.480469 C 18.035156 14.679688 18.160156 13.507812 17.515625 12.863281 L 11.140625 6.484375 C 10.863281 6.207031 10.488281 6.074219 10.085938 6.074219 Z M 10.085938 6.074219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 1.28125 27 L 6.171875 22.109375 L 5.171875 21.105469 C 3.777344 19.714844 3.777344 17.445312 5.171875 16.054688 L 8.789062 12.4375 L 17.5625 21.210938 L 13.945312 24.828125 C 13.269531 25.503906 12.375 25.875 11.417969 25.875 C 10.464844 25.875 9.566406 25.503906 8.894531 24.828125 L 7.890625 23.828125 L 3 28.71875 Z M 1.28125 27 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 1.023438 21.601562 L 4.9375 17.6875 L 4.136719 16.886719 C 3.023438 15.773438 3.023438 13.957031 4.136719 12.84375 L 7.03125 9.949219 L 14.050781 16.96875 L 11.15625 19.863281 C 10.617188 20.402344 9.898438 20.699219 9.136719 20.699219 C 8.371094 20.699219 7.652344 20.402344 7.113281 19.863281 L 6.3125 19.0625 L 2.398438 22.976562 Z M 1.023438 21.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 8.789062 12.96875 L 17.03125 21.210938 L 13.679688 24.5625 C 13.078125 25.167969 12.273438 25.5 11.417969 25.5 C 10.566406 25.5 9.761719 25.167969 9.160156 24.5625 L 8.421875 23.828125 L 7.890625 23.296875 L 7.363281 23.828125 L 3 28.191406 L 1.808594 27 L 6.171875 22.636719 L 6.703125 22.109375 L 6.171875 21.578125 L 5.4375 20.839844 C 4.191406 19.59375 4.191406 17.566406 5.4375 16.320312 L 8.789062 12.96875 M 8.789062 11.90625 L 4.90625 15.789062 C 3.367188 17.332031 3.367188 19.828125 4.90625 21.371094 L 5.640625 22.109375 L 0.75 27 L 3 29.25 L 7.890625 24.359375 L 8.628906 25.09375 C 9.398438 25.863281 10.410156 26.25 11.417969 26.25 C 12.429688 26.25 13.441406 25.863281 14.210938 25.09375 L 18.09375 21.210938 Z M 8.789062 11.90625 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 7.03125 10.375 L 13.625 16.96875 L 10.945312 19.652344 C 10.460938 20.132812 9.820312 20.398438 9.136719 20.398438 C 8.453125 20.398438 7.808594 20.132812 7.328125 19.652344 L 6.3125 18.636719 L 5.890625 19.0625 L 2.398438 22.550781 L 1.449219 21.601562 L 4.9375 18.109375 L 5.363281 17.6875 L 4.347656 16.671875 C 3.351562 15.675781 3.351562 14.054688 4.347656 13.054688 L 7.03125 10.375 M 7.03125 9.527344 L 3.925781 12.632812 C 2.691406 13.863281 2.691406 15.863281 3.925781 17.097656 L 4.515625 17.6875 L 0.601562 21.601562 L 2.398438 23.398438 L 6.3125 19.484375 L 6.902344 20.074219 C 7.519531 20.691406 8.328125 21 9.136719 21 C 9.945312 21 10.753906 20.691406 11.367188 20.074219 L 14.472656 16.96875 Z M 7.03125 9.527344 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 17.496094 22.097656 C 17.054688 22.097656 16.644531 21.929688 16.34375 21.628906 L 8.371094 13.65625 C 7.710938 13 7.757812 11.882812 8.46875 11.171875 L 9.761719 9.875 L 20.125 20.238281 L 18.832031 21.53125 C 18.46875 21.890625 17.984375 22.097656 17.496094 22.097656 Z M 17.496094 22.097656 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 13.996094 17.675781 C 13.640625 17.675781 13.316406 17.542969 13.074219 17.304688 L 6.695312 10.925781 C 6.167969 10.398438 6.207031 9.507812 6.777344 8.9375 L 7.8125 7.902344 L 16.097656 16.1875 L 15.0625 17.222656 C 14.777344 17.511719 14.386719 17.675781 13.996094 17.675781 Z M 13.996094 17.675781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 9.761719 10.40625 L 19.59375 20.238281 L 18.566406 21.265625 C 18.273438 21.554688 17.882812 21.722656 17.496094 21.722656 C 17.152344 21.722656 16.835938 21.59375 16.605469 21.363281 L 8.632812 13.390625 C 8.121094 12.878906 8.167969 12.003906 8.734375 11.433594 L 9.761719 10.40625 M 9.761719 9.347656 L 8.203125 10.90625 C 7.34375 11.765625 7.300781 13.117188 8.105469 13.921875 L 16.078125 21.894531 C 16.460938 22.28125 16.972656 22.472656 17.496094 22.472656 C 18.0625 22.472656 18.644531 22.246094 19.09375 21.796875 L 20.652344 20.238281 Z M 9.761719 9.347656 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 7.808594 8.324219 L 15.675781 16.191406 L 14.851562 17.011719 C 14.621094 17.246094 14.308594 17.378906 13.996094 17.378906 C 13.722656 17.378906 13.46875 17.277344 13.285156 17.089844 L 6.90625 10.714844 C 6.496094 10.304688 6.535156 9.601562 6.988281 9.148438 L 7.808594 8.324219 M 7.808594 7.476562 L 6.5625 8.722656 C 5.875 9.414062 5.839844 10.492188 6.484375 11.136719 L 12.863281 17.515625 C 13.171875 17.824219 13.578125 17.976562 13.996094 17.976562 C 14.449219 17.976562 14.917969 17.796875 15.277344 17.4375 L 16.523438 16.191406 Z M 7.808594 7.476562 "/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30pt" height="30pt" viewBox="0 0 30 30" version="1.1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface9580"> <g id="surface5881">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(25.882354%,30.588236%,36.078432%);fill-opacity:1;" d="M 1.875 2.625 L 28.125 2.625 L 28.125 27.375 L 1.875 27.375 Z M 1.875 2.625 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(25.882354%,30.588236%,36.078432%);fill-opacity:1;" d="M 1.5 2.101562 L 22.5 2.101562 L 22.5 21.898438 L 1.5 21.898438 Z M 1.5 2.101562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(68.627453%,77.254903%,84.705883%);fill-opacity:1;" d="M 27.75 3 L 27.75 27 L 2.25 27 L 2.25 3 L 27.75 3 M 28.5 2.25 L 1.5 2.25 L 1.5 27.75 L 28.5 27.75 Z M 28.5 2.25 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(68.627453%,77.254903%,84.705883%);fill-opacity:1;" d="M 22.199219 2.398438 L 22.199219 21.601562 L 1.800781 21.601562 L 1.800781 2.398438 L 22.199219 2.398438 M 22.800781 1.800781 L 1.199219 1.800781 L 1.199219 22.199219 L 22.800781 22.199219 Z M 22.800781 1.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(68.627453%,77.254903%,84.705883%);fill-opacity:1;" d="M 1.5 2.25 L 28.5 2.25 L 28.5 6.75 L 1.5 6.75 Z M 1.5 2.25 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(68.627453%,77.254903%,84.705883%);fill-opacity:1;" d="M 1.199219 1.800781 L 22.800781 1.800781 L 22.800781 5.398438 L 1.199219 5.398438 Z M 1.199219 1.800781 "/>
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(72.941178%,87.843138%,74.117649%);stroke-opacity:1;stroke-miterlimit:10;" d="M 30 27.5 L 19 27.5 M 10.729167 26.84375 L 16.25 22 L 10.729167 17.15625 " transform="matrix(0.75,0,0,0.75,0,0)"/> <path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(72.941178%,87.843138%,74.117649%);stroke-opacity:1;stroke-miterlimit:10;" d="M 30 27.5 L 18.997396 27.5 M 10.729167 26.848958 L 16.25 21.998698 L 10.729167 17.154948 " transform="matrix(0.6,0,0,0.6,0,0)"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30pt" height="30pt" viewBox="0 0 30 30" version="1.1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface13232"> <g id="surface19423">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 4.875 28.125 L 4.875 1.875 L 18.59375 1.875 L 25.125 8.40625 L 25.125 28.125 Z M 4.875 28.125 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(44.705883%,64.705884%,86.666667%);fill-opacity:1;" d="M 4.5 2.699219 L 19.5 2.699219 L 19.5 6.300781 L 4.5 6.300781 Z M 4.5 2.699219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 18.441406 2.25 L 24.75 8.558594 L 24.75 27.75 L 5.25 27.75 L 5.25 2.25 L 18.441406 2.25 M 18.75 1.5 L 4.5 1.5 L 4.5 28.5 L 25.5 28.5 L 25.5 8.25 Z M 18.75 1.5 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 19.199219 3 L 19.199219 6 L 4.800781 6 L 4.800781 3 L 19.199219 3 M 19.800781 2.398438 L 4.199219 2.398438 L 4.199219 6.601562 L 19.800781 6.601562 Z M 19.800781 2.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 18.375 8.625 L 18.375 1.875 L 18.59375 1.875 L 25.125 8.40625 L 25.125 8.625 Z M 18.375 8.625 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 2.699219 4.5 L 21.300781 4.5 L 21.300781 8.101562 L 2.699219 8.101562 Z M 2.699219 4.5 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 18.75 2.558594 L 24.441406 8.25 L 18.75 8.25 L 18.75 2.558594 M 18.75 1.5 L 18 1.5 L 18 9 L 25.5 9 L 25.5 8.25 Z M 18.75 1.5 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 21 4.800781 L 21 7.800781 L 3 7.800781 L 3 4.800781 L 21 4.800781 M 21.601562 4.199219 L 2.398438 4.199219 L 2.398438 8.398438 L 21.601562 8.398438 Z M 21.601562 4.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(26.666668%,50.980395%,36.470589%);fill-opacity:1;" d="M 12.300781 19.867188 C 12.113281 19.953125 11.753906 20.019531 11.316406 20.019531 C 9.628906 20.019531 8.828125 18.648438 8.828125 16.773438 C 8.828125 14.296875 10.203125 13.332031 11.480469 13.332031 C 11.929688 13.332031 12.242188 13.421875 12.367188 13.507812 L 12.152344 14.582031 C 12.007812 14.511719 11.839844 14.453125 11.558594 14.453125 C 10.835938 14.453125 10.183594 15.078125 10.183594 16.707031 C 10.183594 18.277344 10.777344 18.890625 11.558594 18.890625 C 11.773438 18.890625 12.015625 18.839844 12.171875 18.792969 Z M 13.097656 18.65625 C 13.363281 18.800781 13.820312 18.910156 14.179688 18.910156 C 14.777344 18.910156 15.078125 18.597656 15.078125 18.167969 C 15.078125 17.691406 14.785156 17.457031 14.230469 17.097656 C 13.332031 16.550781 12.992188 15.859375 12.992188 15.261719 C 12.992188 14.210938 13.695312 13.332031 15.058594 13.332031 C 15.496094 13.332031 15.90625 13.449219 16.09375 13.566406 L 15.886719 14.667969 C 15.703125 14.550781 15.421875 14.445312 15.058594 14.445312 C 14.511719 14.445312 14.25 14.777344 14.25 15.125 C 14.25 15.515625 14.445312 15.722656 15.148438 16.152344 C 16.023438 16.675781 16.335938 17.339844 16.335938 18.03125 C 16.335938 19.230469 15.449219 20.019531 14.171875 20.019531 C 13.644531 20.019531 13.136719 19.882812 12.914062 19.757812 Z M 18.246094 19.960938 L 16.785156 13.390625 L 18.199219 13.390625 L 18.664062 16.226562 C 18.773438 16.941406 18.910156 17.738281 18.996094 18.511719 L 19.015625 18.511719 C 19.105469 17.730469 19.210938 16.941406 19.328125 16.199219 L 19.777344 13.390625 L 21.179688 13.390625 L 19.679688 19.960938 Z M 18.246094 19.960938 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(76.078433%,90.980393%,100%);fill-opacity:1;" d="M 0.898438 6.300781 L 23.101562 6.300781 L 23.101562 21.300781 L 0.898438 21.300781 Z M 0.898438 6.300781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 22.800781 6.601562 L 22.800781 21 L 1.199219 21 L 1.199219 6.601562 L 22.800781 6.601562 M 23.398438 6 L 0.601562 6 L 0.601562 21.601562 L 23.398438 21.601562 Z M 23.398438 6 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 9.601562 10.199219 L 9.601562 17.398438 L 16.199219 13.800781 Z M 9.601562 10.199219 "/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,30 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30pt" height="30pt" viewBox="0 0 30 30" version="1.1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface13112"> <g id="surface6484">
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(30.588236%,47.843137%,70.980394%);stroke-opacity:1;stroke-miterlimit:10;" d="M 36 4 L 30 11 L 23 7 L 17 14 L 10 10 L 4 15 " transform="matrix(0.75,0,0,0.75,0,0)"/> <path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(30.588236%,47.843137%,70.980394%);stroke-opacity:1;stroke-miterlimit:10;" d="M 36.002604 3.997396 L 30 11.002604 L 23.001302 6.998698 L 16.998698 13.997396 L 10 10 L 3.997396 15 " transform="matrix(0.6,0,0,0.6,0,0)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 3 10.125 C 2.378906 10.125 1.875 10.628906 1.875 11.25 C 1.875 11.871094 2.378906 12.375 3 12.375 C 3.621094 12.375 4.125 11.871094 4.125 11.25 C 4.125 10.628906 3.621094 10.125 3 10.125 Z M 3 10.125 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 2.398438 8.101562 C 1.902344 8.101562 1.5 8.503906 1.5 9 C 1.5 9.496094 1.902344 9.898438 2.398438 9.898438 C 2.898438 9.898438 3.300781 9.496094 3.300781 9 C 3.300781 8.503906 2.898438 8.101562 2.398438 8.101562 Z M 2.398438 8.101562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 3 10.5 C 3.414062 10.5 3.75 10.835938 3.75 11.25 C 3.75 11.664062 3.414062 12 3 12 C 2.585938 12 2.25 11.664062 2.25 11.25 C 2.25 10.835938 2.585938 10.5 3 10.5 M 3 9.75 C 2.171875 9.75 1.5 10.421875 1.5 11.25 C 1.5 12.078125 2.171875 12.75 3 12.75 C 3.828125 12.75 4.5 12.078125 4.5 11.25 C 4.5 10.421875 3.828125 9.75 3 9.75 Z M 3 9.75 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 2.398438 8.398438 C 2.730469 8.398438 3 8.667969 3 9 C 3 9.332031 2.730469 9.601562 2.398438 9.601562 C 2.070312 9.601562 1.800781 9.332031 1.800781 9 C 1.800781 8.667969 2.070312 8.398438 2.398438 8.398438 M 2.398438 7.800781 C 1.738281 7.800781 1.199219 8.335938 1.199219 9 C 1.199219 9.664062 1.738281 10.199219 2.398438 10.199219 C 3.0625 10.199219 3.601562 9.664062 3.601562 9 C 3.601562 8.335938 3.0625 7.800781 2.398438 7.800781 Z M 2.398438 7.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 7.5 6.375 C 6.878906 6.375 6.375 6.878906 6.375 7.5 C 6.375 8.121094 6.878906 8.625 7.5 8.625 C 8.121094 8.625 8.625 8.121094 8.625 7.5 C 8.625 6.878906 8.121094 6.375 7.5 6.375 Z M 7.5 6.375 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 6 5.101562 C 5.503906 5.101562 5.101562 5.503906 5.101562 6 C 5.101562 6.496094 5.503906 6.898438 6 6.898438 C 6.496094 6.898438 6.898438 6.496094 6.898438 6 C 6.898438 5.503906 6.496094 5.101562 6 5.101562 Z M 6 5.101562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 7.5 6.75 C 7.914062 6.75 8.25 7.085938 8.25 7.5 C 8.25 7.914062 7.914062 8.25 7.5 8.25 C 7.085938 8.25 6.75 7.914062 6.75 7.5 C 6.75 7.085938 7.085938 6.75 7.5 6.75 M 7.5 6 C 6.671875 6 6 6.671875 6 7.5 C 6 8.328125 6.671875 9 7.5 9 C 8.328125 9 9 8.328125 9 7.5 C 9 6.671875 8.328125 6 7.5 6 Z M 7.5 6 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 6 5.398438 C 6.332031 5.398438 6.601562 5.667969 6.601562 6 C 6.601562 6.332031 6.332031 6.601562 6 6.601562 C 5.667969 6.601562 5.398438 6.332031 5.398438 6 C 5.398438 5.667969 5.667969 5.398438 6 5.398438 M 6 4.800781 C 5.335938 4.800781 4.800781 5.335938 4.800781 6 C 4.800781 6.664062 5.335938 7.199219 6 7.199219 C 6.664062 7.199219 7.199219 6.664062 7.199219 6 C 7.199219 5.335938 6.664062 4.800781 6 4.800781 Z M 6 4.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 12.75 9.375 C 12.128906 9.375 11.625 9.878906 11.625 10.5 C 11.625 11.121094 12.128906 11.625 12.75 11.625 C 13.371094 11.625 13.875 11.121094 13.875 10.5 C 13.875 9.878906 13.371094 9.375 12.75 9.375 Z M 12.75 9.375 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 10.199219 7.5 C 9.703125 7.5 9.300781 7.902344 9.300781 8.398438 C 9.300781 8.898438 9.703125 9.300781 10.199219 9.300781 C 10.695312 9.300781 11.101562 8.898438 11.101562 8.398438 C 11.101562 7.902344 10.695312 7.5 10.199219 7.5 Z M 10.199219 7.5 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 12.75 9.75 C 13.164062 9.75 13.5 10.085938 13.5 10.5 C 13.5 10.914062 13.164062 11.25 12.75 11.25 C 12.335938 11.25 12 10.914062 12 10.5 C 12 10.085938 12.335938 9.75 12.75 9.75 M 12.75 9 C 11.921875 9 11.25 9.671875 11.25 10.5 C 11.25 11.328125 11.921875 12 12.75 12 C 13.578125 12 14.25 11.328125 14.25 10.5 C 14.25 9.671875 13.578125 9 12.75 9 Z M 12.75 9 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 10.199219 7.800781 C 10.53125 7.800781 10.800781 8.070312 10.800781 8.398438 C 10.800781 8.730469 10.53125 9 10.199219 9 C 9.871094 9 9.601562 8.730469 9.601562 8.398438 C 9.601562 8.070312 9.871094 7.800781 10.199219 7.800781 M 10.199219 7.199219 C 9.535156 7.199219 9 7.738281 9 8.398438 C 9 9.0625 9.535156 9.601562 10.199219 9.601562 C 10.863281 9.601562 11.398438 9.0625 11.398438 8.398438 C 11.398438 7.738281 10.863281 7.199219 10.199219 7.199219 Z M 10.199219 7.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 17.25 4.125 C 16.628906 4.125 16.125 4.628906 16.125 5.25 C 16.125 5.871094 16.628906 6.375 17.25 6.375 C 17.871094 6.375 18.375 5.871094 18.375 5.25 C 18.375 4.628906 17.871094 4.125 17.25 4.125 Z M 17.25 4.125 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 13.800781 3.300781 C 13.304688 3.300781 12.898438 3.703125 12.898438 4.199219 C 12.898438 4.695312 13.304688 5.101562 13.800781 5.101562 C 14.296875 5.101562 14.699219 4.695312 14.699219 4.199219 C 14.699219 3.703125 14.296875 3.300781 13.800781 3.300781 Z M 13.800781 3.300781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 17.25 4.5 C 17.664062 4.5 18 4.835938 18 5.25 C 18 5.664062 17.664062 6 17.25 6 C 16.835938 6 16.5 5.664062 16.5 5.25 C 16.5 4.835938 16.835938 4.5 17.25 4.5 M 17.25 3.75 C 16.421875 3.75 15.75 4.421875 15.75 5.25 C 15.75 6.078125 16.421875 6.75 17.25 6.75 C 18.078125 6.75 18.75 6.078125 18.75 5.25 C 18.75 4.421875 18.078125 3.75 17.25 3.75 Z M 17.25 3.75 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 13.800781 3.601562 C 14.128906 3.601562 14.398438 3.871094 14.398438 4.199219 C 14.398438 4.53125 14.128906 4.800781 13.800781 4.800781 C 13.46875 4.800781 13.199219 4.53125 13.199219 4.199219 C 13.199219 3.871094 13.46875 3.601562 13.800781 3.601562 M 13.800781 3 C 13.136719 3 12.601562 3.535156 12.601562 4.199219 C 12.601562 4.863281 13.136719 5.398438 13.800781 5.398438 C 14.464844 5.398438 15 4.863281 15 4.199219 C 15 3.535156 14.464844 3 13.800781 3 Z M 13.800781 3 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 22.5 7.125 C 21.878906 7.125 21.375 7.628906 21.375 8.25 C 21.375 8.871094 21.878906 9.375 22.5 9.375 C 23.121094 9.375 23.625 8.871094 23.625 8.25 C 23.625 7.628906 23.121094 7.125 22.5 7.125 Z M 22.5 7.125 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 18 5.699219 C 17.503906 5.699219 17.101562 6.101562 17.101562 6.601562 C 17.101562 7.097656 17.503906 7.5 18 7.5 C 18.496094 7.5 18.898438 7.097656 18.898438 6.601562 C 18.898438 6.101562 18.496094 5.699219 18 5.699219 Z M 18 5.699219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 22.5 7.5 C 22.914062 7.5 23.25 7.835938 23.25 8.25 C 23.25 8.664062 22.914062 9 22.5 9 C 22.085938 9 21.75 8.664062 21.75 8.25 C 21.75 7.835938 22.085938 7.5 22.5 7.5 M 22.5 6.75 C 21.671875 6.75 21 7.421875 21 8.25 C 21 9.078125 21.671875 9.75 22.5 9.75 C 23.328125 9.75 24 9.078125 24 8.25 C 24 7.421875 23.328125 6.75 22.5 6.75 Z M 22.5 6.75 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 18 6 C 18.332031 6 18.601562 6.269531 18.601562 6.601562 C 18.601562 6.929688 18.332031 7.199219 18 7.199219 C 17.667969 7.199219 17.398438 6.929688 17.398438 6.601562 C 17.398438 6.269531 17.667969 6 18 6 M 18 5.398438 C 17.335938 5.398438 16.800781 5.9375 16.800781 6.601562 C 16.800781 7.261719 17.335938 7.800781 18 7.800781 C 18.664062 7.800781 19.199219 7.261719 19.199219 6.601562 C 19.199219 5.9375 18.664062 5.398438 18 5.398438 Z M 18 5.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 27 1.875 C 26.378906 1.875 25.875 2.378906 25.875 3 C 25.875 3.621094 26.378906 4.125 27 4.125 C 27.621094 4.125 28.125 3.621094 28.125 3 C 28.125 2.378906 27.621094 1.875 27 1.875 Z M 27 1.875 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 21.601562 1.5 C 21.101562 1.5 20.699219 1.902344 20.699219 2.398438 C 20.699219 2.898438 21.101562 3.300781 21.601562 3.300781 C 22.097656 3.300781 22.5 2.898438 22.5 2.398438 C 22.5 1.902344 22.097656 1.5 21.601562 1.5 Z M 21.601562 1.5 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 27 2.25 C 27.414062 2.25 27.75 2.585938 27.75 3 C 27.75 3.414062 27.414062 3.75 27 3.75 C 26.585938 3.75 26.25 3.414062 26.25 3 C 26.25 2.585938 26.585938 2.25 27 2.25 M 27 1.5 C 26.171875 1.5 25.5 2.171875 25.5 3 C 25.5 3.828125 26.171875 4.5 27 4.5 C 27.828125 4.5 28.5 3.828125 28.5 3 C 28.5 2.171875 27.828125 1.5 27 1.5 Z M 27 1.5 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 21.601562 1.800781 C 21.929688 1.800781 22.199219 2.070312 22.199219 2.398438 C 22.199219 2.730469 21.929688 3 21.601562 3 C 21.269531 3 21 2.730469 21 2.398438 C 21 2.070312 21.269531 1.800781 21.601562 1.800781 M 21.601562 1.199219 C 20.9375 1.199219 20.398438 1.738281 20.398438 2.398438 C 20.398438 3.0625 20.9375 3.601562 21.601562 3.601562 C 22.261719 3.601562 22.800781 3.0625 22.800781 2.398438 C 22.800781 1.738281 22.261719 1.199219 21.601562 1.199219 Z M 21.601562 1.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 25.125 11.625 L 28.125 11.625 L 28.125 28.875 L 25.125 28.875 Z M 25.125 11.625 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 20.101562 9.300781 L 22.5 9.300781 L 22.5 23.101562 L 20.101562 23.101562 Z M 20.101562 9.300781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 27.75 12 L 27.75 28.5 L 25.5 28.5 L 25.5 12 L 27.75 12 M 28.5 11.25 L 24.75 11.25 L 24.75 29.25 L 28.5 29.25 Z M 28.5 11.25 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 22.199219 9.601562 L 22.199219 22.800781 L 20.398438 22.800781 L 20.398438 9.601562 L 22.199219 9.601562 M 22.800781 9 L 19.800781 9 L 19.800781 23.398438 L 22.800781 23.398438 Z M 22.800781 9 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 16.125 15.375 L 19.125 15.375 L 19.125 28.875 L 16.125 28.875 Z M 16.125 15.375 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 12.898438 12.300781 L 15.300781 12.300781 L 15.300781 23.101562 L 12.898438 23.101562 Z M 12.898438 12.300781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 18.75 15.75 L 18.75 28.5 L 16.5 28.5 L 16.5 15.75 L 18.75 15.75 M 19.5 15 L 15.75 15 L 15.75 29.25 L 19.5 29.25 Z M 19.5 15 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 15 12.601562 L 15 22.800781 L 13.199219 22.800781 L 13.199219 12.601562 L 15 12.601562 M 15.601562 12 L 12.601562 12 L 12.601562 23.398438 L 15.601562 23.398438 Z M 15.601562 12 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 11.625 20.625 L 14.625 20.625 L 14.625 28.875 L 11.625 28.875 Z M 11.625 20.625 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 9.300781 16.5 L 11.699219 16.5 L 11.699219 23.101562 L 9.300781 23.101562 Z M 9.300781 16.5 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 14.25 21 L 14.25 28.5 L 12 28.5 L 12 21 L 14.25 21 M 15 20.25 L 11.25 20.25 L 11.25 29.25 L 15 29.25 Z M 15 20.25 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 11.398438 16.800781 L 11.398438 22.800781 L 9.601562 22.800781 L 9.601562 16.800781 L 11.398438 16.800781 M 12 16.199219 L 9 16.199219 L 9 23.398438 L 12 23.398438 Z M 12 16.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 7.125 18.375 L 10.125 18.375 L 10.125 28.875 L 7.125 28.875 Z M 7.125 18.375 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 5.699219 14.699219 L 8.101562 14.699219 L 8.101562 23.101562 L 5.699219 23.101562 Z M 5.699219 14.699219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 9.75 18.75 L 9.75 28.5 L 7.5 28.5 L 7.5 18.75 L 9.75 18.75 M 10.5 18 L 6.75 18 L 6.75 29.25 L 10.5 29.25 Z M 10.5 18 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 7.800781 15 L 7.800781 22.800781 L 6 22.800781 L 6 15 L 7.800781 15 M 8.398438 14.398438 L 5.398438 14.398438 L 5.398438 23.398438 L 8.398438 23.398438 Z M 8.398438 14.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 2.625 22.125 L 5.625 22.125 L 5.625 28.875 L 2.625 28.875 Z M 2.625 22.125 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 2.101562 17.699219 L 4.5 17.699219 L 4.5 23.101562 L 2.101562 23.101562 Z M 2.101562 17.699219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 5.25 22.5 L 5.25 28.5 L 3 28.5 L 3 22.5 L 5.25 22.5 M 6 21.75 L 2.25 21.75 L 2.25 29.25 L 6 29.25 Z M 6 21.75 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 4.199219 18 L 4.199219 22.800781 L 2.398438 22.800781 L 2.398438 18 L 4.199219 18 M 4.800781 17.398438 L 1.800781 17.398438 L 1.800781 23.398438 L 4.800781 23.398438 Z M 4.800781 17.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 20.625 17.625 L 23.625 17.625 L 23.625 28.875 L 20.625 28.875 Z M 20.625 17.625 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 16.5 14.101562 L 18.898438 14.101562 L 18.898438 23.101562 L 16.5 23.101562 Z M 16.5 14.101562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 23.25 18 L 23.25 28.5 L 21 28.5 L 21 18 L 23.25 18 M 24 17.25 L 20.25 17.25 L 20.25 29.25 L 24 29.25 Z M 24 17.25 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 18.601562 14.398438 L 18.601562 22.800781 L 16.800781 22.800781 L 16.800781 14.398438 L 18.601562 14.398438 M 19.199219 13.800781 L 16.199219 13.800781 L 16.199219 23.398438 L 19.199219 23.398438 Z M 19.199219 13.800781 "/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface7653">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(88.235295%,92.156863%,94.901961%);fill-opacity:1;" d="M 12.300781 0.898438 L 23.101562 0.898438 L 23.101562 23.101562 L 12.300781 23.101562 Z M 12.300781 0.898438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 22.800781 1.199219 L 22.800781 22.800781 L 12.601562 22.800781 L 12.601562 1.199219 L 22.800781 1.199219 M 23.398438 0.601562 L 12 0.601562 L 12 23.398438 L 23.398438 23.398438 Z M 23.398438 0.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 17.699219 15.300781 C 17.039062 15.300781 16.5 15.835938 16.5 16.5 C 16.5 17.164062 17.039062 17.699219 17.699219 17.699219 C 18.363281 17.699219 18.898438 17.164062 18.898438 16.5 C 18.898438 15.835938 18.363281 15.300781 17.699219 15.300781 Z M 17.699219 15.300781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 17.699219 15.601562 C 18.195312 15.601562 18.601562 16.003906 18.601562 16.5 C 18.601562 16.996094 18.195312 17.398438 17.699219 17.398438 C 17.203125 17.398438 16.800781 16.996094 16.800781 16.5 C 16.800781 16.003906 17.203125 15.601562 17.699219 15.601562 M 17.699219 15 C 16.871094 15 16.199219 15.671875 16.199219 16.5 C 16.199219 17.328125 16.871094 18 17.699219 18 C 18.527344 18 19.199219 17.328125 19.199219 16.5 C 19.199219 15.671875 18.527344 15 17.699219 15 Z M 17.699219 15 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 14.101562 7.5 L 21.300781 7.5 L 21.300781 8.699219 L 14.101562 8.699219 Z M 14.101562 7.5 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 21 7.800781 L 21 8.398438 L 14.398438 8.398438 L 14.398438 7.800781 L 21 7.800781 M 21.601562 7.199219 L 13.800781 7.199219 L 13.800781 9 L 21.601562 9 Z M 21.601562 7.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(21.176471%,25.098041%,30.19608%);fill-opacity:1;" d="M 10.199219 10.800781 L 10.199219 14.398438 L 6.601562 14.398438 L 6.601562 10.800781 L 10.199219 10.800781 M 10.199219 9.601562 L 6.601562 9.601562 C 5.9375 9.601562 5.398438 10.136719 5.398438 10.800781 L 5.398438 14.398438 C 5.398438 15.0625 5.9375 15.601562 6.601562 15.601562 L 10.199219 15.601562 C 10.863281 15.601562 11.398438 15.0625 11.398438 14.398438 L 11.398438 10.800781 C 11.398438 10.136719 10.863281 9.601562 10.199219 9.601562 Z M 10.199219 9.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 14.101562 3.898438 L 21.300781 3.898438 L 21.300781 5.699219 L 14.101562 5.699219 Z M 14.101562 3.898438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 21 4.199219 L 21 5.398438 L 14.398438 5.398438 L 14.398438 4.199219 L 21 4.199219 M 21.601562 3.601562 L 13.800781 3.601562 L 13.800781 6 L 21.601562 6 Z M 21.601562 3.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.862745%,42.745098%,42.745098%);fill-opacity:1;" d="M 0.898438 15.898438 L 15.898438 15.898438 L 15.898438 23.101562 L 0.898438 23.101562 Z M 0.898438 15.898438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(78.039217%,26.274511%,26.274511%);fill-opacity:1;" d="M 15.601562 16.199219 L 15.601562 22.800781 L 1.199219 22.800781 L 1.199219 16.199219 L 15.601562 16.199219 M 16.199219 15.601562 L 0.601562 15.601562 L 0.601562 23.398438 L 16.199219 23.398438 Z M 16.199219 15.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.862745%,56.078434%,56.078434%);fill-opacity:1;" d="M 0.898438 15.898438 L 0.898438 13.800781 C 0.898438 12.972656 1.570312 12.300781 2.398438 12.300781 L 14.398438 12.300781 C 15.226562 12.300781 15.898438 12.972656 15.898438 13.800781 L 15.898438 15.898438 Z M 0.898438 15.898438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(78.039217%,26.274511%,26.274511%);fill-opacity:1;" d="M 14.398438 12.601562 C 15.0625 12.601562 15.601562 13.136719 15.601562 13.800781 L 15.601562 15.601562 L 1.199219 15.601562 L 1.199219 13.800781 C 1.199219 13.136719 1.738281 12.601562 2.398438 12.601562 L 14.398438 12.601562 M 14.398438 12 L 2.398438 12 C 1.40625 12 0.601562 12.804688 0.601562 13.800781 L 0.601562 16.199219 L 16.199219 16.199219 L 16.199219 13.800781 C 16.199219 12.804688 15.394531 12 14.398438 12 Z M 14.398438 12 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 3.300781 15.300781 L 5.101562 15.300781 L 5.101562 17.101562 L 3.300781 17.101562 Z M 3.300781 15.300781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 4.800781 15.601562 L 4.800781 16.800781 L 3.601562 16.800781 L 3.601562 15.601562 L 4.800781 15.601562 M 5.398438 15 L 3 15 L 3 17.398438 L 5.398438 17.398438 Z M 5.398438 15 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 11.699219 15.300781 L 13.5 15.300781 L 13.5 17.101562 L 11.699219 17.101562 Z M 11.699219 15.300781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 13.199219 15.601562 L 13.199219 16.800781 L 12 16.800781 L 12 15.601562 L 13.199219 15.601562 M 13.800781 15 L 11.398438 15 L 11.398438 17.398438 L 13.800781 17.398438 Z M 13.800781 15 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30pt" height="30pt" viewBox="0 0 30 30" version="1.1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface16200"> <g id="surface11706">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,93.333334%,63.921571%);fill-opacity:1;" d="M 11.46875 12.65625 L 16.238281 7.886719 L 17.617188 9.261719 L 12.847656 14.03125 Z M 11.46875 12.65625 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,93.333334%,63.921571%);fill-opacity:1;" d="M 9.175781 10.125 L 12.992188 6.308594 L 14.09375 7.410156 L 10.277344 11.226562 Z M 9.175781 10.125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 16.238281 8.414062 L 17.085938 9.261719 L 12.84375 13.5 L 12 12.65625 L 16.238281 8.414062 M 16.238281 7.355469 L 11.46875 12.125 L 10.941406 12.65625 L 12.84375 14.558594 L 13.375 14.03125 L 18.144531 9.261719 Z M 16.238281 7.355469 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 12.992188 6.734375 L 13.667969 7.410156 L 10.277344 10.800781 L 9.601562 10.125 L 12.992188 6.734375 M 12.992188 5.882812 L 8.75 10.125 L 9.175781 10.546875 L 10.277344 11.648438 L 10.699219 11.222656 L 14.089844 7.832031 L 14.515625 7.410156 L 13.414062 6.308594 Z M 12.992188 5.882812 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,93.333334%,63.921571%);fill-opacity:1;" d="M 15.96875 17.15625 L 20.738281 12.386719 L 22.117188 13.761719 L 17.347656 18.53125 Z M 15.96875 17.15625 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,93.333334%,63.921571%);fill-opacity:1;" d="M 12.777344 13.722656 L 16.59375 9.910156 L 17.691406 11.007812 L 13.875 14.824219 Z M 12.777344 13.722656 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 20.738281 12.914062 L 21.585938 13.761719 L 17.34375 18 L 16.5 17.15625 L 20.738281 12.914062 M 20.738281 11.855469 L 15.96875 16.625 L 15.441406 17.15625 L 17.34375 19.058594 L 17.875 18.53125 L 22.644531 13.761719 Z M 20.738281 11.855469 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 16.589844 10.332031 L 17.265625 11.007812 L 13.875 14.398438 L 13.199219 13.722656 L 16.589844 10.332031 M 16.589844 9.484375 L 16.167969 9.910156 L 12.777344 13.300781 L 12.351562 13.722656 L 13.453125 14.824219 L 13.875 15.25 L 18.117188 11.007812 L 17.691406 10.585938 Z M 16.589844 9.484375 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 15.328125 5.898438 L 18.945312 2.28125 C 19.621094 1.605469 20.515625 1.234375 21.472656 1.234375 C 22.425781 1.234375 23.320312 1.605469 23.996094 2.28125 L 24.996094 3.28125 L 27 1.28125 L 28.71875 3 L 26.71875 5 L 27.71875 6 C 29.113281 7.394531 29.113281 9.660156 27.71875 11.054688 L 24.101562 14.671875 Z M 15.328125 5.898438 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 12.261719 4.71875 L 15.15625 1.824219 C 15.695312 1.285156 16.414062 0.988281 17.175781 0.988281 C 17.941406 0.988281 18.65625 1.285156 19.199219 1.824219 L 19.996094 2.625 L 21.601562 1.023438 L 22.976562 2.398438 L 21.375 4 L 22.175781 4.800781 C 23.289062 5.914062 23.289062 7.730469 22.175781 8.84375 L 19.28125 11.738281 Z M 12.261719 4.71875 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 21.472656 1.609375 C 22.324219 1.609375 23.128906 1.941406 23.734375 2.546875 L 25 3.8125 L 25.527344 3.28125 L 27 1.808594 L 28.191406 3 L 26.71875 4.472656 L 26.1875 5 L 27.453125 6.265625 C 28.058594 6.871094 28.390625 7.675781 28.390625 8.527344 C 28.390625 9.382812 28.058594 10.183594 27.453125 10.789062 L 24.101562 14.140625 L 15.859375 5.898438 L 19.210938 2.546875 C 19.8125 1.941406 20.617188 1.609375 21.472656 1.609375 M 27 0.75 L 25 2.75 L 24.261719 2.015625 C 23.492188 1.246094 22.480469 0.859375 21.472656 0.859375 C 20.460938 0.859375 19.449219 1.246094 18.679688 2.015625 L 14.796875 5.898438 L 24.101562 15.199219 L 27.984375 11.320312 C 29.527344 9.777344 29.527344 7.277344 27.984375 5.738281 L 27.25 5 L 29.25 3 Z M 27 0.75 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 17.175781 1.285156 C 17.859375 1.285156 18.503906 1.554688 18.988281 2.035156 L 19.574219 2.625 L 20 3.050781 L 20.421875 2.625 L 21.601562 1.449219 L 22.550781 2.398438 L 21.375 3.578125 L 20.949219 4 L 21.375 4.425781 L 21.964844 5.011719 C 22.445312 5.496094 22.714844 6.140625 22.714844 6.824219 C 22.714844 7.507812 22.445312 8.148438 21.964844 8.632812 L 19.28125 11.3125 L 12.6875 4.71875 L 15.367188 2.035156 C 15.851562 1.554688 16.492188 1.285156 17.175781 1.285156 M 21.601562 0.601562 L 20 2.199219 L 19.410156 1.613281 C 18.792969 0.996094 17.984375 0.6875 17.175781 0.6875 C 16.367188 0.6875 15.558594 0.996094 14.945312 1.613281 L 11.839844 4.71875 L 19.28125 12.160156 L 22.386719 9.054688 C 23.621094 7.824219 23.621094 5.824219 22.386719 4.589844 L 21.796875 4 L 23.398438 2.398438 Z M 21.601562 0.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 12.253906 7.382812 L 13.804688 5.835938 C 14.289062 5.351562 14.90625 5.074219 15.5 5.074219 C 15.921875 5.074219 16.285156 5.214844 16.546875 5.480469 L 24.519531 13.453125 C 25.179688 14.109375 25.019531 15.339844 24.164062 16.195312 L 22.613281 17.746094 Z M 12.253906 7.382812 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 9.804688 5.90625 L 11.042969 4.667969 C 11.429688 4.28125 11.925781 4.058594 12.398438 4.058594 C 12.738281 4.058594 13.027344 4.171875 13.238281 4.382812 L 19.617188 10.761719 C 20.144531 11.289062 20.015625 12.273438 19.332031 12.957031 L 18.089844 14.195312 Z M 9.804688 5.90625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 15.5 5.449219 C 15.722656 5.449219 16.039062 5.5 16.285156 5.742188 L 24.257812 13.714844 C 24.757812 14.21875 24.597656 15.234375 23.898438 15.929688 L 22.617188 17.214844 L 12.785156 7.382812 L 14.070312 6.101562 C 14.476562 5.691406 15.011719 5.449219 15.5 5.449219 M 15.5 4.699219 C 14.835938 4.699219 14.113281 4.996094 13.539062 5.570312 L 11.726562 7.382812 L 22.617188 18.273438 L 24.429688 16.460938 C 25.433594 15.457031 25.59375 13.992188 24.785156 13.1875 L 16.8125 5.214844 C 16.46875 4.867188 16 4.699219 15.5 4.699219 Z M 15.5 4.699219 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 12.402344 4.359375 C 12.578125 4.359375 12.832031 4.402344 13.027344 4.59375 L 19.40625 10.972656 C 19.808594 11.375 19.675781 12.1875 19.121094 12.742188 L 18.09375 13.769531 L 10.226562 5.90625 L 11.257812 4.878906 C 11.582031 4.554688 12.007812 4.359375 12.402344 4.359375 M 12.402344 3.757812 C 11.867188 3.757812 11.289062 3.996094 10.832031 4.457031 L 9.378906 5.90625 L 18.09375 14.621094 L 19.542969 13.167969 C 20.347656 12.367188 20.472656 11.195312 19.828125 10.550781 L 13.453125 4.171875 C 13.175781 3.894531 12.800781 3.757812 12.402344 3.757812 Z M 12.402344 3.757812 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 8.382812 28.910156 C 7.429688 28.910156 6.53125 28.539062 5.859375 27.863281 L 4.855469 26.863281 L 3 28.71875 L 1.28125 27 L 3.136719 25.144531 L 2.136719 24.140625 C 0.742188 22.75 0.742188 20.484375 2.136719 19.089844 L 5.75 15.472656 L 14.527344 24.246094 L 10.910156 27.863281 C 10.234375 28.539062 9.335938 28.910156 8.382812 28.910156 Z M 8.382812 28.910156 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 6.707031 23.128906 C 5.945312 23.128906 5.226562 22.832031 4.6875 22.292969 L 3.886719 21.492188 L 2.398438 22.976562 L 1.023438 21.601562 L 2.507812 20.113281 L 1.707031 19.3125 C 0.59375 18.199219 0.59375 16.386719 1.707031 15.273438 L 4.601562 12.378906 L 11.621094 19.398438 L 8.726562 22.292969 C 8.1875 22.832031 7.46875 23.128906 6.707031 23.128906 Z M 6.707031 23.128906 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 5.75 16.003906 L 13.996094 24.25 L 10.644531 27.597656 C 10.039062 28.203125 9.238281 28.535156 8.382812 28.535156 C 7.527344 28.535156 6.726562 28.203125 6.121094 27.597656 L 4.855469 26.332031 L 4.324219 26.863281 L 3 28.191406 L 1.808594 27 L 3.136719 25.675781 L 3.667969 25.144531 L 2.402344 23.878906 C 1.152344 22.632812 1.152344 20.601562 2.402344 19.355469 L 5.75 16.003906 M 5.75 14.945312 L 1.871094 18.824219 C 0.328125 20.367188 0.328125 22.867188 1.871094 24.40625 L 2.605469 25.144531 L 0.75 27 L 3 29.25 L 4.855469 27.394531 L 5.59375 28.128906 C 6.363281 28.902344 7.375 29.285156 8.382812 29.285156 C 9.394531 29.285156 10.402344 28.902344 11.175781 28.128906 L 15.054688 24.25 Z M 5.75 14.945312 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 4.601562 12.804688 L 11.195312 19.398438 L 8.515625 22.078125 C 8.03125 22.5625 7.390625 22.828125 6.707031 22.828125 C 6.023438 22.828125 5.382812 22.5625 4.898438 22.078125 L 4.308594 21.492188 L 3.886719 21.066406 L 3.460938 21.492188 L 2.398438 22.550781 L 1.449219 21.601562 L 2.507812 20.539062 L 2.933594 20.113281 L 2.507812 19.691406 L 1.921875 19.101562 C 0.921875 18.105469 0.921875 16.480469 1.921875 15.484375 L 4.601562 12.804688 M 4.601562 11.953125 L 1.496094 15.058594 C 0.261719 16.292969 0.261719 18.292969 1.496094 19.527344 L 2.085938 20.113281 L 0.601562 21.601562 L 2.398438 23.398438 L 3.886719 21.914062 L 4.472656 22.503906 C 5.089844 23.121094 5.898438 23.429688 6.707031 23.429688 C 7.515625 23.429688 8.324219 23.121094 8.941406 22.503906 L 12.046875 19.398438 Z M 4.601562 11.953125 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 14.457031 25.132812 C 14.015625 25.132812 13.605469 24.964844 13.304688 24.664062 L 5.335938 16.695312 C 4.675781 16.035156 4.71875 14.917969 5.433594 14.207031 L 6.726562 12.914062 L 17.089844 23.273438 L 15.792969 24.566406 C 15.433594 24.925781 14.949219 25.132812 14.457031 25.132812 Z M 14.457031 25.132812 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 11.566406 20.105469 C 11.214844 20.105469 10.886719 19.972656 10.644531 19.734375 L 4.265625 13.355469 C 3.742188 12.828125 3.777344 11.9375 4.347656 11.363281 L 5.382812 10.332031 L 13.671875 18.617188 L 12.636719 19.652344 C 12.347656 19.941406 11.957031 20.105469 11.566406 20.105469 Z M 11.566406 20.105469 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 6.726562 13.441406 L 16.558594 23.273438 L 15.527344 24.300781 C 15.238281 24.589844 14.847656 24.757812 14.457031 24.757812 C 14.117188 24.757812 13.800781 24.628906 13.570312 24.402344 L 5.597656 16.429688 C 5.085938 15.914062 5.132812 15.039062 5.699219 14.472656 L 6.726562 13.441406 M 6.726562 12.382812 L 5.167969 13.941406 C 4.308594 14.800781 4.261719 16.152344 5.070312 16.960938 L 13.039062 24.929688 C 13.425781 25.316406 13.9375 25.507812 14.457031 25.507812 C 15.027344 25.507812 15.609375 25.28125 16.058594 24.832031 L 17.617188 23.273438 Z M 6.726562 12.382812 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 5.382812 10.753906 L 13.246094 18.617188 L 12.421875 19.441406 C 12.191406 19.671875 11.878906 19.804688 11.566406 19.804688 C 11.292969 19.804688 11.042969 19.703125 10.855469 19.519531 L 4.480469 13.140625 C 4.070312 12.734375 4.105469 12.03125 4.558594 11.578125 L 5.382812 10.753906 M 5.382812 9.90625 L 4.132812 11.152344 C 3.445312 11.839844 3.410156 12.921875 4.054688 13.566406 L 10.433594 19.945312 C 10.742188 20.253906 11.148438 20.40625 11.566406 20.40625 C 12.023438 20.40625 12.488281 20.222656 12.847656 19.867188 L 14.09375 18.617188 Z M 5.382812 9.90625 "/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface11897">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(71.372551%,78.823531%,83.92157%);fill-opacity:1;" d="M 23.101562 12 C 23.101562 18.179688 18.066406 23.101562 12 23.101562 C 5.933594 23.101562 0.898438 18.179688 0.898438 12 C 0.898438 5.820312 5.820312 0.898438 12 0.898438 C 18.179688 0.898438 23.101562 5.820312 23.101562 12 Z M 23.101562 12 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 19.902344 11.542969 C 19.902344 12.925781 19.1875 14.851562 18.015625 15.804688 C 17.066406 16.578125 15.8125 16.820312 14.394531 16.898438 C 14.925781 17.222656 15.28125 17.808594 15.28125 18.476562 L 15.28125 23.058594 C 14.386719 23.28125 13.457031 23.398438 12.5 23.398438 C 11.550781 23.398438 10.621094 23.28125 9.734375 23.0625 L 9.734375 20.050781 C 9.351562 20.171875 8.84375 20.242188 8.195312 20.207031 C 6.039062 20.09375 5.730469 18.785156 5.386719 17.859375 C 5.035156 16.9375 3.957031 16.820312 4.113281 16.4375 C 4.855469 16.179688 5.441406 16.425781 5.835938 16.726562 C 6.152344 16.964844 6.367188 17.304688 6.515625 17.667969 C 6.683594 18.085938 7.128906 18.785156 8.230469 18.785156 C 9.011719 18.785156 9.472656 18.601562 9.738281 18.425781 C 9.753906 17.769531 10.109375 17.203125 10.632812 16.894531 C 9.128906 16.796875 7.8125 16.515625 6.84375 15.667969 C 5.761719 14.734375 5.113281 12.863281 5.113281 11.542969 C 5.113281 10.445312 5.566406 9.089844 6.34375 8.234375 C 6.367188 8.210938 6.390625 8.183594 6.417969 8.15625 C 6.242188 7.621094 6.035156 6.5625 6.535156 5.265625 C 8.03125 5.238281 9.210938 6.054688 9.691406 6.449219 C 10.558594 6.246094 11.507812 6.152344 12.507812 6.152344 C 13.53125 6.152344 14.507812 6.242188 15.390625 6.449219 C 15.871094 6.054688 17.054688 5.238281 18.546875 5.269531 C 19.070312 6.617188 18.828125 7.710938 18.644531 8.222656 C 19.441406 9.136719 19.902344 10.433594 19.902344 11.542969 Z M 19.902344 11.542969 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.058824%,54.509807%,61.176473%);fill-opacity:1;" d="M 12 23.398438 C 5.714844 23.398438 0.601562 18.285156 0.601562 12 C 0.601562 5.609375 5.609375 0.601562 12 0.601562 C 18.390625 0.601562 23.398438 5.609375 23.398438 12 C 23.398438 18.285156 18.285156 23.398438 12 23.398438 Z M 12 1.199219 C 5.945312 1.199219 1.199219 5.945312 1.199219 12 C 1.199219 17.953125 6.046875 22.800781 12 22.800781 C 17.953125 22.800781 22.800781 17.953125 22.800781 12 C 22.800781 5.945312 18.054688 1.199219 12 1.199219 Z M 12 1.199219 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,9 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30pt" height="30pt" viewBox="0 0 30 30" version="1.1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface21263"> <g id="surface5691">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 15 28.875 C 7.347656 28.875 1.125 22.652344 1.125 15 C 1.125 7.347656 7.347656 1.125 15 1.125 C 22.652344 1.125 28.875 7.347656 28.875 15 C 28.875 22.652344 22.652344 28.875 15 28.875 Z M 15 28.875 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 12 23.101562 C 11.371094 23.101562 10.804688 22.699219 10.59375 22.101562 L 10.523438 21.898438 L 1.800781 21.898438 C 1.304688 21.898438 0.898438 21.496094 0.898438 21 L 0.898438 6 C 0.898438 5.503906 1.304688 5.101562 1.800781 5.101562 L 22.199219 5.101562 C 22.695312 5.101562 23.101562 5.503906 23.101562 6 L 23.101562 21 C 23.101562 21.496094 22.695312 21.898438 22.199219 21.898438 L 13.476562 21.898438 L 13.40625 22.101562 C 13.195312 22.699219 12.628906 23.101562 12 23.101562 Z M 12 23.101562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 15 1.5 C 22.445312 1.5 28.5 7.554688 28.5 15 C 28.5 22.445312 22.445312 28.5 15 28.5 C 7.554688 28.5 1.5 22.445312 1.5 15 C 1.5 7.554688 7.554688 1.5 15 1.5 M 15 0.75 C 7.128906 0.75 0.75 7.128906 0.75 15 C 0.75 22.871094 7.128906 29.25 15 29.25 C 22.871094 29.25 29.25 22.871094 29.25 15 C 29.25 7.128906 22.871094 0.75 15 0.75 Z M 15 0.75 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 22.199219 5.398438 C 22.53125 5.398438 22.800781 5.667969 22.800781 6 L 22.800781 21 C 22.800781 21.332031 22.53125 21.601562 22.199219 21.601562 L 13.265625 21.601562 L 13.125 22 C 12.953125 22.476562 12.503906 22.800781 12 22.800781 C 11.496094 22.800781 11.046875 22.476562 10.875 22 L 10.734375 21.601562 L 1.800781 21.601562 C 1.46875 21.601562 1.199219 21.332031 1.199219 21 L 1.199219 6 C 1.199219 5.667969 1.46875 5.398438 1.800781 5.398438 L 22.199219 5.398438 M 22.199219 4.800781 L 1.800781 4.800781 C 1.136719 4.800781 0.601562 5.335938 0.601562 6 L 0.601562 21 C 0.601562 21.664062 1.136719 22.199219 1.800781 22.199219 L 10.308594 22.199219 C 10.558594 22.898438 11.21875 23.398438 12 23.398438 C 12.78125 23.398438 13.441406 22.898438 13.691406 22.199219 L 22.199219 22.199219 C 22.863281 22.199219 23.398438 21.664062 23.398438 21 L 23.398438 6 C 23.398438 5.335938 22.863281 4.800781 22.199219 4.800781 Z M 22.199219 4.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 15 21 C 14.171875 21 13.5 21.671875 13.5 22.5 C 13.5 23.328125 14.171875 24 15 24 C 15.828125 24 16.5 23.328125 16.5 22.5 C 16.5 21.671875 15.828125 21 15 21 Z M 15 21 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 12 20.671875 C 11.441406 20.425781 9.191406 19.5 6.898438 19.5 C 4.90625 19.5 2.945312 20.199219 2.101562 20.542969 L 2.101562 3.777344 C 2.59375 3.515625 4.34375 2.699219 6.898438 2.699219 C 9.929688 2.699219 11.824219 3.84375 11.84375 3.855469 L 12 3.953125 L 12.15625 3.855469 C 12.175781 3.84375 14.070312 2.699219 17.101562 2.699219 C 19.65625 2.699219 21.40625 3.515625 21.898438 3.777344 L 21.898438 20.542969 C 21.054688 20.199219 19.09375 19.5 17.101562 19.5 C 14.808594 19.5 12.558594 20.425781 12 20.671875 Z M 12 20.671875 "/>
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 15.5 17 L 15.5 15 C 15.5 12.515625 17.515625 10.5 20 10.5 C 22.484375 10.5 24.5 12.489583 24.5 15 C 24.5 19.692708 20 19.791667 20 24 L 20 25.5 " transform="matrix(0.75,0,0,0.75,0,0)"/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.058824%,54.509807%,61.176473%);fill-opacity:1;" d="M 17.101562 3 C 19.367188 3 20.976562 3.65625 21.601562 3.960938 L 21.601562 20.105469 C 20.601562 19.734375 18.863281 19.199219 17.101562 19.199219 C 14.894531 19.199219 12.730469 20.035156 12 20.34375 C 11.269531 20.035156 9.105469 19.199219 6.898438 19.199219 C 5.136719 19.199219 3.398438 19.734375 2.398438 20.105469 L 2.398438 3.960938 C 3.023438 3.65625 4.632812 3 6.898438 3 C 9.832031 3 11.667969 4.101562 11.683594 4.109375 L 12 4.304688 L 12.3125 4.109375 C 12.332031 4.101562 14.167969 3 17.101562 3 M 17.101562 2.398438 C 13.9375 2.398438 12 3.601562 12 3.601562 C 12 3.601562 10.0625 2.398438 6.898438 2.398438 C 3.738281 2.398438 1.800781 3.601562 1.800781 3.601562 L 1.800781 21 C 1.800781 21 4.351562 19.800781 6.898438 19.800781 C 9.449219 19.800781 12 21 12 21 C 12 21 14.550781 19.800781 17.101562 19.800781 C 19.648438 19.800781 22.199219 21 22.199219 21 L 22.199219 3.601562 C 22.199219 3.601562 20.261719 2.398438 17.101562 2.398438 Z M 17.101562 2.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(88.235295%,92.156863%,94.901961%);fill-opacity:1;" d="M 21.601562 20.105469 C 20.601562 19.734375 18.863281 19.199219 17.101562 19.199219 C 14.894531 19.199219 12.730469 20.035156 12 20.34375 L 12 4.304688 L 12.3125 4.109375 C 12.332031 4.101562 14.167969 3 17.101562 3 C 19.367188 3 20.976562 3.65625 21.601562 3.960938 Z M 21.601562 20.105469 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(21.176471%,25.098041%,30.19608%);fill-opacity:1;" d="M 17.101562 6.601562 C 16.601562 6.601562 16.199219 7.003906 16.199219 7.5 C 16.199219 7.996094 16.601562 8.398438 17.101562 8.398438 C 17.597656 8.398438 18 7.996094 18 7.5 C 18 7.003906 17.597656 6.601562 17.101562 6.601562 Z M 17.101562 6.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(21.176471%,25.098041%,30.19608%);fill-opacity:1;" d="M 18 15 L 18 9.601562 L 15.601562 9.601562 L 15.601562 10.199219 L 16.199219 10.199219 L 16.199219 15 L 15.601562 15 L 15.601562 15.601562 L 18.601562 15.601562 L 18.601562 15 Z M 18 15 "/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24pt" height="24pt" viewBox="0 0 24 24" version="1.1">
<g id="surface18386">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(21.176471%,25.098041%,30.19608%);fill-opacity:1;" d="M 15.601562 16.800781 L 15 16.800781 L 15 7.800781 L 6.601562 7.800781 L 6.601562 7.199219 L 15.601562 7.199219 Z M 15.601562 16.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 3.898438 21.300781 L 3.898438 20.488281 L 7.964844 14.101562 L 8.699219 14.101562 L 8.699219 21.300781 Z M 3.898438 21.300781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(30.588236%,47.843137%,70.980394%);fill-opacity:1;" d="M 8.398438 14.398438 L 8.398438 21 L 4.199219 21 L 4.199219 20.574219 L 8.128906 14.398438 L 8.398438 14.398438 M 9 13.800781 L 7.800781 13.800781 L 3.601562 20.398438 L 3.601562 21.601562 L 9 21.601562 Z M 9 13.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(76.078433%,90.980393%,100%);fill-opacity:1;" d="M 13.542969 19.5 C 10.808594 19.5 8.234375 18.433594 6.300781 16.5 C 2.378906 12.574219 2.308594 6.238281 6.089844 2.226562 L 20.574219 16.707031 C 18.664062 18.511719 16.179688 19.5 13.542969 19.5 Z M 13.542969 19.5 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(45.490196%,58.823532%,76.862746%);fill-opacity:1;" d="M 6.101562 2.660156 L 20.140625 16.699219 C 18.320312 18.316406 16 19.199219 13.542969 19.199219 C 10.886719 19.199219 8.390625 18.164062 6.511719 16.289062 C 2.777344 12.550781 2.640625 6.5625 6.101562 2.660156 M 6.089844 1.800781 C 1.96875 5.917969 1.96875 12.59375 6.089844 16.710938 C 8.148438 18.769531 10.84375 19.800781 13.542969 19.800781 C 16.242188 19.800781 18.941406 18.769531 21 16.710938 Z M 6.089844 1.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(76.078433%,90.980393%,100%);fill-opacity:1;" d="M 1.5 23.101562 L 1.5 21.601562 C 1.5 21.105469 1.902344 20.699219 2.398438 20.699219 L 9 20.699219 C 9.496094 20.699219 9.898438 21.105469 9.898438 21.601562 L 9.898438 23.101562 Z M 1.5 23.101562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(45.490196%,58.823532%,76.862746%);fill-opacity:1;" d="M 9 21 C 9.332031 21 9.601562 21.269531 9.601562 21.601562 L 9.601562 22.800781 L 1.800781 22.800781 L 1.800781 21.601562 C 1.800781 21.269531 2.070312 21 2.398438 21 L 9 21 M 9 20.398438 L 2.398438 20.398438 C 1.738281 20.398438 1.199219 20.9375 1.199219 21.601562 L 1.199219 23.398438 L 10.199219 23.398438 L 10.199219 21.601562 C 10.199219 20.9375 9.664062 20.398438 9 20.398438 Z M 9 20.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(29.411766%,39.215687%,46.666667%);fill-opacity:1;" d="M 15.601562 6.300781 C 15.101562 6.300781 14.699219 6.703125 14.699219 7.199219 C 14.699219 7.695312 15.101562 8.101562 15.601562 8.101562 C 16.097656 8.101562 16.5 7.695312 16.5 7.199219 C 16.5 6.703125 16.097656 6.300781 15.601562 6.300781 Z M 15.601562 6.300781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(21.176471%,25.098041%,30.19608%);fill-opacity:1;" d="M 15.601562 6.601562 C 15.929688 6.601562 16.199219 6.871094 16.199219 7.199219 C 16.199219 7.53125 15.929688 7.800781 15.601562 7.800781 C 15.269531 7.800781 15 7.53125 15 7.199219 C 15 6.871094 15.269531 6.601562 15.601562 6.601562 M 15.601562 6 C 14.9375 6 14.398438 6.535156 14.398438 7.199219 C 14.398438 7.863281 14.9375 8.398438 15.601562 8.398438 C 16.261719 8.398438 16.800781 7.863281 16.800781 7.199219 C 16.800781 6.535156 16.261719 6 15.601562 6 Z M 15.601562 6 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 21 7.199219 L 22.199219 7.199219 C 22.199219 3.554688 19.246094 0.601562 15.601562 0.601562 L 15.601562 1.800781 C 18.578125 1.800781 21 4.222656 21 7.199219 Z M 21 7.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,71.764708%,94.117647%);fill-opacity:1;" d="M 18.601562 7.199219 L 19.800781 7.199219 C 19.800781 4.878906 17.917969 3 15.601562 3 L 15.601562 4.199219 C 17.253906 4.199219 18.601562 5.546875 18.601562 7.199219 Z M 18.601562 7.199219 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30pt" height="30pt" viewBox="0 0 30 30" version="1.1">
<g id="surface21031">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 6.050781 8.070312 L 3.550781 7.238281 L 1.222656 3.359375 L 3.359375 1.222656 L 7.238281 3.550781 L 8.070312 6.050781 L 16.71875 14.699219 L 14.699219 16.71875 Z M 6.050781 8.070312 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 3.417969 1.695312 L 6.925781 3.800781 L 7.6875 6.085938 L 7.742188 6.253906 L 7.867188 6.378906 L 16.191406 14.699219 L 14.699219 16.191406 L 6.378906 7.867188 L 6.253906 7.742188 L 6.085938 7.6875 L 3.800781 6.925781 L 1.695312 3.417969 L 3.417969 1.695312 M 3.300781 0.75 L 0.75 3.300781 L 3.300781 7.550781 L 5.847656 8.398438 L 14.699219 17.25 L 17.25 14.699219 L 8.398438 5.847656 L 7.550781 3.300781 Z M 3.300781 0.75 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.862745%,56.078434%,56.078434%);fill-opacity:1;" d="M 25.902344 28.875 C 25.101562 28.875 24.347656 28.5625 23.785156 27.992188 L 14.03125 18.15625 L 18.257812 13.972656 L 28.015625 23.808594 C 28.574219 24.371094 28.878906 25.121094 28.875 25.914062 C 28.871094 26.710938 28.558594 27.457031 27.992188 28.015625 C 27.433594 28.570312 26.691406 28.875 25.902344 28.875 Z M 25.902344 28.875 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(78.039217%,26.274511%,26.274511%);fill-opacity:1;" d="M 18.253906 14.503906 L 27.746094 24.070312 C 28.234375 24.566406 28.503906 25.21875 28.5 25.914062 C 28.496094 26.609375 28.222656 27.257812 27.730469 27.746094 C 27.238281 28.234375 26.589844 28.5 25.902344 28.5 C 25.203125 28.5 24.546875 28.226562 24.050781 27.730469 L 14.5625 18.160156 L 18.253906 14.503906 M 18.261719 13.441406 L 13.5 18.15625 L 23.519531 28.257812 C 24.175781 28.917969 25.039062 29.25 25.902344 29.25 C 26.753906 29.25 27.605469 28.925781 28.257812 28.28125 C 29.570312 26.976562 29.582031 24.859375 28.28125 23.542969 Z M 18.261719 13.441406 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(86.274511%,83.529413%,94.901961%);fill-opacity:1;" d="M 4.828125 28.875 C 3.832031 28.875 2.898438 28.484375 2.195312 27.777344 C 1.5 27.074219 1.121094 26.144531 1.125 25.15625 C 1.128906 24.167969 1.519531 23.238281 2.222656 22.542969 L 15.261719 9.601562 L 20.46875 14.863281 L 7.429688 27.804688 C 6.734375 28.496094 5.808594 28.875 4.828125 28.875 Z M 4.875 23.625 C 4.050781 23.625 3.378906 24.292969 3.375 25.117188 C 3.371094 25.945312 4.039062 26.621094 4.867188 26.625 C 5.699219 26.625 6.371094 25.957031 6.375 25.132812 C 6.378906 24.304688 5.710938 23.628906 4.882812 23.625 Z M 4.875 23.625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,45.882353%,63.137257%);fill-opacity:1;" d="M 15.257812 10.132812 L 19.941406 14.859375 L 7.167969 27.535156 C 6.539062 28.15625 5.707031 28.5 4.828125 28.5 C 3.929688 28.5 3.09375 28.148438 2.460938 27.515625 C 1.171875 26.210938 1.183594 24.101562 2.484375 22.808594 L 15.257812 10.132812 M 4.875 27 C 5.902344 27 6.746094 26.164062 6.75 25.132812 C 6.753906 24.101562 5.917969 23.253906 4.875 23.25 C 3.847656 23.25 3.003906 24.085938 3 25.117188 C 2.996094 25.617188 3.191406 26.089844 3.542969 26.445312 C 3.894531 26.800781 4.363281 26.996094 4.867188 27 L 4.875 27 M 15.265625 9.070312 L 1.957031 22.277344 C 0.359375 23.859375 0.347656 26.441406 1.929688 28.042969 C 2.726562 28.847656 3.777344 29.25 4.828125 29.25 C 5.863281 29.25 6.898438 28.855469 7.695312 28.070312 L 21 14.863281 Z M 4.875 26.25 C 4.871094 26.25 4.871094 26.25 4.867188 26.25 C 4.246094 26.246094 3.746094 25.742188 3.75 25.121094 C 3.753906 24.5 4.257812 24 4.875 24 C 4.878906 24 4.878906 24 4.882812 24 C 5.503906 24.003906 6.003906 24.507812 6 25.128906 C 5.996094 25.75 5.492188 26.25 4.875 26.25 Z M 4.875 26.25 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(86.274511%,83.529413%,94.901961%);fill-opacity:1;" d="M 22.914062 15.394531 C 20.867188 15.394531 18.765625 14.453125 17.144531 12.816406 C 14.226562 9.871094 13.777344 5.5625 16.144531 3.21875 C 17.410156 1.96875 19.617188 1.125 21.636719 1.125 C 22.4375 1.125 23.171875 1.25 23.824219 1.5 L 19.039062 6.242188 L 20.242188 9.746094 L 23.734375 10.984375 L 28.519531 6.242188 C 29.472656 8.808594 28.410156 12.25 26.730469 13.910156 C 25.753906 14.882812 24.433594 15.394531 22.914062 15.394531 Z M 22.914062 15.394531 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,45.882353%,63.137257%);fill-opacity:1;" d="M 21.636719 1.5 C 22.164062 1.5 22.660156 1.558594 23.117188 1.671875 L 18.941406 5.808594 L 18.609375 6.140625 L 18.761719 6.589844 L 19.828125 9.695312 L 19.945312 10.039062 L 20.289062 10.160156 L 23.386719 11.257812 L 23.828125 11.417969 L 24.164062 11.085938 L 28.339844 6.949219 C 28.878906 9.261719 27.929688 12.195312 26.464844 13.644531 C 25.558594 14.542969 24.328125 15.019531 22.914062 15.019531 C 20.96875 15.019531 18.960938 14.121094 17.410156 12.554688 C 16.046875 11.175781 15.199219 9.460938 15.027344 7.71875 C 14.863281 6.035156 15.351562 4.53125 16.40625 3.488281 C 17.609375 2.296875 19.710938 1.5 21.636719 1.5 M 21.636719 0.75 C 19.464844 0.75 17.191406 1.660156 15.882812 2.953125 C 13.363281 5.449219 13.808594 9.984375 16.878906 13.082031 C 18.628906 14.851562 20.855469 15.769531 22.914062 15.769531 C 24.460938 15.769531 25.914062 15.25 26.992188 14.179688 C 28.90625 12.285156 30.003906 8.316406 28.644531 5.589844 L 23.636719 10.554688 L 20.539062 9.453125 L 19.46875 6.34375 L 24.476562 1.378906 C 23.621094 0.945312 22.640625 0.75 21.636719 0.75 Z M 21.636719 0.75 "/>
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(78.039217%,26.274511%,26.274511%);stroke-opacity:1;stroke-miterlimit:10;" d="M 35.046875 35.046875 L 26.484375 26.484375 " transform="matrix(0.75,0,0,0.75,0,0)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.9 KiB

10
app/rcc/images/code.svg Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="18pt" height="18pt" viewBox="0 0 18 18" version="1.1">
<g id="surface22345">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 2.925781 16.875 L 2.925781 1.125 L 11.15625 1.125 L 15.074219 5.042969 L 15.074219 16.875 Z M 2.925781 16.875 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.058824%,54.509807%,61.176473%);fill-opacity:1;" d="M 11.0625 1.351562 L 14.851562 5.136719 L 14.851562 16.648438 L 3.148438 16.648438 L 3.148438 1.351562 L 11.0625 1.351562 M 11.25 0.898438 L 2.699219 0.898438 L 2.699219 17.101562 L 15.300781 17.101562 L 15.300781 4.949219 Z M 11.25 0.898438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 11.023438 5.175781 L 11.023438 1.125 L 11.15625 1.125 L 15.074219 5.042969 L 15.074219 5.175781 Z M 11.023438 5.175781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.058824%,54.509807%,61.176473%);fill-opacity:1;" d="M 11.25 1.535156 L 14.664062 4.949219 L 11.25 4.949219 L 11.25 1.535156 M 11.25 0.898438 L 10.800781 0.898438 L 10.800781 5.398438 L 15.300781 5.398438 L 15.300781 4.949219 Z M 11.25 0.898438 "/>
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(69.803923%,44.705883%,85.882354%);stroke-opacity:1;stroke-miterlimit:10;" d="M 25.503472 19.496528 L 27.5 23.498264 L 25.503472 27.5 M 14.496528 19.496528 L 12.5 23.498264 L 14.496528 27.5 M 22.5 16.501736 L 17.5 30.503472 " transform="matrix(0.45,0,0,0.45,0,0)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96pt" height="96pt" viewBox="0 0 96 96" version="1.1">
<g id="surface9094">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(77.254903%,83.137256%,87.058824%);fill-opacity:1;" d="M 24.601562 75 L 39 75 L 39 81 L 24.601562 81 Z M 24.601562 75 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.058824%,54.509807%,61.176473%);fill-opacity:1;" d="M 39.601562 81.601562 L 24 81.601562 L 24 74.398438 L 39.601562 74.398438 Z M 25.199219 80.398438 L 38.398438 80.398438 L 38.398438 75.601562 L 25.199219 75.601562 Z M 25.199219 80.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,87.843138%,74.117649%);fill-opacity:1;" d="M 5.398438 21 L 90.601562 21 L 90.601562 75 L 5.398438 75 Z M 5.398438 21 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(36.862746%,61.176473%,46.27451%);fill-opacity:1;" d="M 91.199219 75.601562 L 4.800781 75.601562 L 4.800781 20.398438 L 91.199219 20.398438 Z M 6 74.398438 L 90 74.398438 L 90 21.601562 L 6 21.601562 Z M 6 74.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 18.601562 30 C 18.601562 32.320312 16.71875 34.199219 14.398438 34.199219 C 12.082031 34.199219 10.199219 32.320312 10.199219 30 C 10.199219 27.679688 12.082031 25.800781 14.398438 25.800781 C 16.71875 25.800781 18.601562 27.679688 18.601562 30 Z M 18.601562 30 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 14.398438 34.800781 C 11.753906 34.800781 9.601562 32.648438 9.601562 30 C 9.601562 27.351562 11.753906 25.199219 14.398438 25.199219 C 17.046875 25.199219 19.199219 27.351562 19.199219 30 C 19.199219 32.648438 17.046875 34.800781 14.398438 34.800781 Z M 14.398438 26.398438 C 12.414062 26.398438 10.800781 28.015625 10.800781 30 C 10.800781 31.984375 12.414062 33.601562 14.398438 33.601562 C 16.386719 33.601562 18 31.984375 18 30 C 18 28.015625 16.386719 26.398438 14.398438 26.398438 Z M 14.398438 26.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 31.800781 29.398438 C 31.800781 30.726562 30.726562 31.800781 29.398438 31.800781 C 28.074219 31.800781 27 30.726562 27 29.398438 C 27 28.074219 28.074219 27 29.398438 27 C 30.726562 27 31.800781 28.074219 31.800781 29.398438 Z M 31.800781 29.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 29.398438 32.398438 C 27.746094 32.398438 26.398438 31.054688 26.398438 29.398438 C 26.398438 27.746094 27.746094 26.398438 29.398438 26.398438 C 31.054688 26.398438 32.398438 27.746094 32.398438 29.398438 C 32.398438 31.054688 31.054688 32.398438 29.398438 32.398438 Z M 29.398438 27.601562 C 28.40625 27.601562 27.601562 28.40625 27.601562 29.398438 C 27.601562 30.390625 28.40625 31.199219 29.398438 31.199219 C 30.390625 31.199219 31.199219 30.390625 31.199219 29.398438 C 31.199219 28.40625 30.390625 27.601562 29.398438 27.601562 Z M 29.398438 27.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 41.398438 29.398438 C 41.398438 30.726562 40.324219 31.800781 39 31.800781 C 37.675781 31.800781 36.601562 30.726562 36.601562 29.398438 C 36.601562 28.074219 37.675781 27 39 27 C 40.324219 27 41.398438 28.074219 41.398438 29.398438 Z M 41.398438 29.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 39 32.398438 C 37.347656 32.398438 36 31.054688 36 29.398438 C 36 27.746094 37.347656 26.398438 39 26.398438 C 40.652344 26.398438 42 27.746094 42 29.398438 C 42 31.054688 40.652344 32.398438 39 32.398438 Z M 39 27.601562 C 38.007812 27.601562 37.199219 28.40625 37.199219 29.398438 C 37.199219 30.390625 38.007812 31.199219 39 31.199219 C 39.992188 31.199219 40.800781 30.390625 40.800781 29.398438 C 40.800781 28.40625 39.992188 27.601562 39 27.601562 Z M 39 27.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 51 29.398438 C 51 30.726562 49.925781 31.800781 48.601562 31.800781 C 47.273438 31.800781 46.199219 30.726562 46.199219 29.398438 C 46.199219 28.074219 47.273438 27 48.601562 27 C 49.925781 27 51 28.074219 51 29.398438 Z M 51 29.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 48.601562 32.398438 C 46.945312 32.398438 45.601562 31.054688 45.601562 29.398438 C 45.601562 27.746094 46.945312 26.398438 48.601562 26.398438 C 50.253906 26.398438 51.601562 27.746094 51.601562 29.398438 C 51.601562 31.054688 50.253906 32.398438 48.601562 32.398438 Z M 48.601562 27.601562 C 47.609375 27.601562 46.800781 28.40625 46.800781 29.398438 C 46.800781 30.390625 47.609375 31.199219 48.601562 31.199219 C 49.59375 31.199219 50.398438 30.390625 50.398438 29.398438 C 50.398438 28.40625 49.59375 27.601562 48.601562 27.601562 Z M 48.601562 27.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 60.601562 29.398438 C 60.601562 30.726562 59.527344 31.800781 58.199219 31.800781 C 56.875 31.800781 55.800781 30.726562 55.800781 29.398438 C 55.800781 28.074219 56.875 27 58.199219 27 C 59.527344 27 60.601562 28.074219 60.601562 29.398438 Z M 60.601562 29.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 58.199219 32.398438 C 56.546875 32.398438 55.199219 31.054688 55.199219 29.398438 C 55.199219 27.746094 56.546875 26.398438 58.199219 26.398438 C 59.855469 26.398438 61.199219 27.746094 61.199219 29.398438 C 61.199219 31.054688 59.855469 32.398438 58.199219 32.398438 Z M 58.199219 27.601562 C 57.207031 27.601562 56.398438 28.40625 56.398438 29.398438 C 56.398438 30.390625 57.207031 31.199219 58.199219 31.199219 C 59.191406 31.199219 60 30.390625 60 29.398438 C 60 28.40625 59.191406 27.601562 58.199219 27.601562 Z M 58.199219 27.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 70.199219 29.398438 C 70.199219 30.726562 69.125 31.800781 67.800781 31.800781 C 66.472656 31.800781 65.398438 30.726562 65.398438 29.398438 C 65.398438 28.074219 66.472656 27 67.800781 27 C 69.125 27 70.199219 28.074219 70.199219 29.398438 Z M 70.199219 29.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 67.800781 32.398438 C 66.144531 32.398438 64.800781 31.054688 64.800781 29.398438 C 64.800781 27.746094 66.144531 26.398438 67.800781 26.398438 C 69.453125 26.398438 70.800781 27.746094 70.800781 29.398438 C 70.800781 31.054688 69.453125 32.398438 67.800781 32.398438 Z M 67.800781 27.601562 C 66.808594 27.601562 66 28.40625 66 29.398438 C 66 30.390625 66.808594 31.199219 67.800781 31.199219 C 68.792969 31.199219 69.601562 30.390625 69.601562 29.398438 C 69.601562 28.40625 68.792969 27.601562 67.800781 27.601562 Z M 67.800781 27.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 18.601562 66 C 18.601562 68.320312 16.71875 70.199219 14.398438 70.199219 C 12.082031 70.199219 10.199219 68.320312 10.199219 66 C 10.199219 63.679688 12.082031 61.800781 14.398438 61.800781 C 16.71875 61.800781 18.601562 63.679688 18.601562 66 Z M 18.601562 66 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 14.398438 70.800781 C 11.753906 70.800781 9.601562 68.648438 9.601562 66 C 9.601562 63.351562 11.753906 61.199219 14.398438 61.199219 C 17.046875 61.199219 19.199219 63.351562 19.199219 66 C 19.199219 68.648438 17.046875 70.800781 14.398438 70.800781 Z M 14.398438 62.398438 C 12.414062 62.398438 10.800781 64.015625 10.800781 66 C 10.800781 67.984375 12.414062 69.601562 14.398438 69.601562 C 16.386719 69.601562 18 67.984375 18 66 C 18 64.015625 16.386719 62.398438 14.398438 62.398438 Z M 14.398438 62.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 85.800781 30 C 85.800781 32.320312 83.917969 34.199219 81.601562 34.199219 C 79.28125 34.199219 77.398438 32.320312 77.398438 30 C 77.398438 27.679688 79.28125 25.800781 81.601562 25.800781 C 83.917969 25.800781 85.800781 27.679688 85.800781 30 Z M 85.800781 30 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 81.601562 34.800781 C 78.953125 34.800781 76.800781 32.648438 76.800781 30 C 76.800781 27.351562 78.953125 25.199219 81.601562 25.199219 C 84.246094 25.199219 86.398438 27.351562 86.398438 30 C 86.398438 32.648438 84.246094 34.800781 81.601562 34.800781 Z M 81.601562 26.398438 C 79.613281 26.398438 78 28.015625 78 30 C 78 31.984375 79.613281 33.601562 81.601562 33.601562 C 83.585938 33.601562 85.199219 31.984375 85.199219 30 C 85.199219 28.015625 83.585938 26.398438 81.601562 26.398438 Z M 81.601562 26.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 85.800781 66 C 85.800781 68.320312 83.917969 70.199219 81.601562 70.199219 C 79.28125 70.199219 77.398438 68.320312 77.398438 66 C 77.398438 63.679688 79.28125 61.800781 81.601562 61.800781 C 83.917969 61.800781 85.800781 63.679688 85.800781 66 Z M 85.800781 66 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 81.601562 70.800781 C 78.953125 70.800781 76.800781 68.648438 76.800781 66 C 76.800781 63.351562 78.953125 61.199219 81.601562 61.199219 C 84.246094 61.199219 86.398438 63.351562 86.398438 66 C 86.398438 68.648438 84.246094 70.800781 81.601562 70.800781 Z M 81.601562 62.398438 C 79.613281 62.398438 78 64.015625 78 66 C 78 67.984375 79.613281 69.601562 81.601562 69.601562 C 83.585938 69.601562 85.199219 67.984375 85.199219 66 C 85.199219 64.015625 83.585938 62.398438 81.601562 62.398438 Z M 81.601562 62.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 45 37.800781 L 47.398438 37.800781 L 47.398438 41.398438 L 45 41.398438 Z M 45 37.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 48 42 L 44.398438 42 L 44.398438 37.199219 L 48 37.199219 Z M 45.601562 40.800781 L 46.800781 40.800781 L 46.800781 38.398438 L 45.601562 38.398438 Z M 45.601562 40.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 57 37.800781 L 59.398438 37.800781 L 59.398438 41.398438 L 57 41.398438 Z M 57 37.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 60 42 L 56.398438 42 L 56.398438 37.199219 L 60 37.199219 Z M 57.601562 40.800781 L 58.800781 40.800781 L 58.800781 38.398438 L 57.601562 38.398438 Z M 57.601562 40.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 57 64.199219 L 59.398438 64.199219 L 59.398438 67.800781 L 57 67.800781 Z M 57 64.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 60 68.398438 L 56.398438 68.398438 L 56.398438 63.601562 L 60 63.601562 Z M 57.601562 67.199219 L 58.800781 67.199219 L 58.800781 64.800781 L 57.601562 64.800781 Z M 57.601562 67.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 37.800781 64.199219 L 40.199219 64.199219 L 40.199219 67.800781 L 37.800781 67.800781 Z M 37.800781 64.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 40.800781 68.398438 L 37.199219 68.398438 L 37.199219 63.601562 L 40.800781 63.601562 Z M 38.398438 67.199219 L 39.601562 67.199219 L 39.601562 64.800781 L 38.398438 64.800781 Z M 38.398438 67.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 35.398438 59.398438 L 35.398438 61.800781 L 31.800781 61.800781 L 31.800781 59.398438 Z M 35.398438 59.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 36 62.398438 L 31.199219 62.398438 L 31.199219 58.800781 L 36 58.800781 Z M 32.398438 61.199219 L 34.800781 61.199219 L 34.800781 60 L 32.398438 60 Z M 32.398438 61.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 65.398438 59.398438 L 65.398438 61.800781 L 61.800781 61.800781 L 61.800781 59.398438 Z M 65.398438 59.398438 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 66 62.398438 L 61.199219 62.398438 L 61.199219 58.800781 L 66 58.800781 Z M 62.398438 61.199219 L 64.800781 61.199219 L 64.800781 60 L 62.398438 60 Z M 62.398438 61.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 35.398438 51 L 35.398438 53.398438 L 31.800781 53.398438 L 31.800781 51 Z M 35.398438 51 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 36 54 L 31.199219 54 L 31.199219 50.398438 L 36 50.398438 Z M 32.398438 52.800781 L 34.800781 52.800781 L 34.800781 51.601562 L 32.398438 51.601562 Z M 32.398438 52.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.078432%,80.784315%,52.156866%);fill-opacity:1;" d="M 65.398438 43.800781 L 65.398438 46.199219 L 61.800781 46.199219 L 61.800781 43.800781 Z M 65.398438 43.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 66 46.800781 L 61.199219 46.800781 L 61.199219 43.199219 L 66 43.199219 Z M 62.398438 45.601562 L 64.800781 45.601562 L 64.800781 44.398438 L 62.398438 44.398438 Z M 62.398438 45.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(69.01961%,75.686276%,83.137256%);fill-opacity:1;" d="M 61.800781 64.199219 L 35.398438 64.199219 L 35.398438 48 L 42 41.398438 L 61.800781 41.398438 Z M 61.800781 64.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40.000001%,47.450981%,56.078434%);fill-opacity:1;" d="M 62.398438 64.800781 L 34.800781 64.800781 L 34.800781 47.75 L 41.75 40.800781 L 62.398438 40.800781 Z M 36 63.601562 L 61.199219 63.601562 L 61.199219 42 L 42.25 42 L 36 48.25 Z M 36 63.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(77.254903%,83.137256%,87.058824%);fill-opacity:1;" d="M 71.398438 39 L 85.800781 39 L 85.800781 47.398438 L 71.398438 47.398438 Z M 71.398438 39 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.058824%,54.509807%,61.176473%);fill-opacity:1;" d="M 86.398438 48 L 70.800781 48 L 70.800781 38.398438 L 86.398438 38.398438 Z M 72 46.800781 L 85.199219 46.800781 L 85.199219 39.601562 L 72 39.601562 Z M 72 46.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(77.254903%,83.137256%,87.058824%);fill-opacity:1;" d="M 10.199219 39 L 24.601562 39 L 24.601562 53.398438 L 10.199219 53.398438 Z M 10.199219 39 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.058824%,54.509807%,61.176473%);fill-opacity:1;" d="M 25.199219 54 L 9.601562 54 L 9.601562 38.398438 L 25.199219 38.398438 Z M 10.800781 52.800781 L 24 52.800781 L 24 39.601562 L 10.800781 39.601562 Z M 10.800781 52.800781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(77.254903%,83.137256%,87.058824%);fill-opacity:1;" d="M 71.398438 52.199219 L 85.800781 52.199219 L 85.800781 57 L 71.398438 57 Z M 71.398438 52.199219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(47.058824%,54.509807%,61.176473%);fill-opacity:1;" d="M 86.398438 57.601562 L 70.800781 57.601562 L 70.800781 51.601562 L 86.398438 51.601562 Z M 72 56.398438 L 85.199219 56.398438 L 85.199219 52.800781 L 72 52.800781 Z M 72 56.398438 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

12
app/rcc/images/tip.svg Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="18pt" height="18pt" viewBox="0 0 18 18" version="1.1">
<g id="surface19821">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,93.333334%,63.921571%);fill-opacity:1;" d="M 6.523438 13.425781 L 6.523438 12.601562 C 6.523438 11.738281 6 10.90625 5.390625 9.945312 C 4.65625 8.785156 3.824219 7.472656 3.824219 5.851562 C 3.824219 2.996094 6.148438 0.675781 9 0.675781 C 11.851562 0.675781 14.175781 2.996094 14.175781 5.851562 C 14.175781 7.472656 13.34375 8.785156 12.609375 9.945312 C 12 10.90625 11.476562 11.738281 11.476562 12.601562 L 11.476562 13.425781 Z M 6.523438 13.425781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(72.941178%,60.784316%,28.235295%);fill-opacity:1;" d="M 9 0.898438 C 11.730469 0.898438 13.949219 3.121094 13.949219 5.851562 C 13.949219 7.40625 13.136719 8.691406 12.417969 9.824219 C 11.816406 10.777344 11.25 11.671875 11.25 12.601562 L 11.25 13.199219 L 6.75 13.199219 L 6.75 12.601562 C 6.75 11.671875 6.183594 10.777344 5.582031 9.824219 C 4.863281 8.691406 4.050781 7.40625 4.050781 5.851562 C 4.050781 3.121094 6.269531 0.898438 9 0.898438 M 9 0.449219 C 6.019531 0.449219 3.601562 2.867188 3.601562 5.851562 C 3.601562 8.851562 6.300781 10.78125 6.300781 12.601562 L 6.300781 13.648438 L 11.699219 13.648438 L 11.699219 12.601562 C 11.699219 10.78125 14.398438 8.851562 14.398438 5.851562 C 14.398438 2.867188 11.980469 0.449219 9 0.449219 Z M 9 0.449219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 10.222656 5.101562 C 10.445312 5.101562 10.660156 5.1875 10.820312 5.347656 C 11.148438 5.679688 11.148438 6.214844 10.820312 6.542969 L 9.898438 7.464844 L 9.898438 13.050781 L 8.101562 13.050781 L 8.101562 7.464844 L 7.179688 6.542969 C 6.851562 6.214844 6.851562 5.679688 7.179688 5.347656 C 7.339844 5.1875 7.554688 5.101562 7.777344 5.101562 C 8.003906 5.101562 8.21875 5.1875 8.375 5.347656 L 8.683594 5.652344 L 9 5.972656 L 9.316406 5.652344 L 9.625 5.347656 C 9.785156 5.1875 9.996094 5.101562 10.222656 5.101562 M 10.222656 4.652344 C 9.890625 4.652344 9.558594 4.777344 9.304688 5.03125 L 9 5.335938 L 8.695312 5.03125 C 8.441406 4.777344 8.109375 4.652344 7.777344 4.652344 C 7.445312 4.652344 7.113281 4.777344 6.863281 5.03125 C 6.355469 5.535156 6.355469 6.355469 6.863281 6.863281 L 7.648438 7.648438 L 7.648438 13.5 L 10.351562 13.5 L 10.351562 7.648438 L 11.136719 6.863281 C 11.644531 6.355469 11.644531 5.535156 11.136719 5.03125 C 10.882812 4.777344 10.554688 4.652344 10.222656 4.652344 Z M 10.222656 4.652344 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,45.882353%,63.137257%);fill-opacity:1;" d="M 9 13.949219 C 8.007812 13.949219 7.199219 14.757812 7.199219 15.75 C 7.199219 16.742188 8.007812 17.550781 9 17.550781 C 9.992188 17.550781 10.800781 16.742188 10.800781 15.75 C 10.800781 14.757812 9.992188 13.949219 9 13.949219 Z M 9 13.949219 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(86.274511%,83.529413%,94.901961%);fill-opacity:1;" d="M 7.648438 16.425781 C 7.03125 16.425781 6.523438 15.921875 6.523438 15.300781 L 6.523438 12.824219 L 11.476562 12.824219 L 11.476562 15.300781 C 11.476562 15.921875 10.96875 16.425781 10.351562 16.425781 Z M 7.648438 16.425781 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,45.882353%,63.137257%);fill-opacity:1;" d="M 11.25 13.050781 L 11.25 15.300781 C 11.25 15.796875 10.847656 16.199219 10.351562 16.199219 L 7.648438 16.199219 C 7.152344 16.199219 6.75 15.796875 6.75 15.300781 L 6.75 13.050781 L 11.25 13.050781 M 11.699219 12.601562 L 6.300781 12.601562 L 6.300781 15.300781 C 6.300781 16.046875 6.90625 16.648438 7.648438 16.648438 L 10.351562 16.648438 C 11.09375 16.648438 11.699219 16.046875 11.699219 15.300781 Z M 11.699219 12.601562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(54.509807%,45.882353%,63.137257%);fill-opacity:1;" d="M 8.550781 15.300781 L 11.46875 15.300781 L 11.46875 15.75 L 8.550781 15.75 Z M 6.550781 15.300781 L 7.648438 15.300781 L 7.648438 15.75 L 6.550781 15.75 Z M 8.550781 14.398438 L 11.699219 14.398438 L 11.699219 14.851562 L 8.550781 14.851562 Z M 6.300781 14.398438 L 7.648438 14.398438 L 7.648438 14.851562 L 6.300781 14.851562 Z M 8.550781 13.5 L 11.699219 13.5 L 11.699219 13.949219 L 8.550781 13.949219 Z M 6.300781 13.5 L 7.648438 13.5 L 7.648438 13.949219 L 6.300781 13.949219 Z M 6.300781 13.5 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -12,15 +12,19 @@
<file>icons/code-editor/redo.svg</file> <file>icons/code-editor/redo.svg</file>
<file>icons/code-editor/save.svg</file> <file>icons/code-editor/save.svg</file>
<file>icons/code-editor/undo.svg</file> <file>icons/code-editor/undo.svg</file>
<file>icons/toolbar/bug.svg</file> <file>icons/panes/console.svg</file>
<file>icons/panes/setup.svg</file>
<file>icons/toolbar/about.svg</file>
<file>icons/toolbar/connect.svg</file> <file>icons/toolbar/connect.svg</file>
<file>icons/toolbar/console.svg</file> <file>icons/toolbar/console.svg</file>
<file>icons/toolbar/csv.svg</file> <file>icons/toolbar/csv.svg</file>
<file>icons/toolbar/dashboard.svg</file> <file>icons/toolbar/dashboard.svg</file>
<file>icons/toolbar/device-setup.svg</file>
<file>icons/toolbar/disconnect.svg</file> <file>icons/toolbar/disconnect.svg</file>
<file>icons/toolbar/github.svg</file>
<file>icons/toolbar/help.svg</file> <file>icons/toolbar/help.svg</file>
<file>icons/toolbar/project-editor.svg</file> <file>icons/toolbar/mqtt.svg</file>
<file>icons/toolbar/setup.svg</file> <file>icons/toolbar/project-setup.svg</file>
<file>images/donate-qr.svg</file> <file>images/donate-qr.svg</file>
<file>images/icon-small@1x.png</file> <file>images/icon-small@1x.png</file>
<file>images/icon-small@2x.png</file> <file>images/icon-small@2x.png</file>
@ -36,5 +40,23 @@
<file>themes/Breeze.json</file> <file>themes/Breeze.json</file>
<file>themes/Dark.json</file> <file>themes/Dark.json</file>
<file>themes/Light.json</file> <file>themes/Light.json</file>
<file>images/tip.svg</file>
<file>images/code.svg</file>
<file>icons/buttons/media-next.svg</file>
<file>icons/buttons/media-pause.svg</file>
<file>icons/buttons/media-play.svg</file>
<file>icons/buttons/media-prev.svg</file>
<file>icons/buttons/apply.svg</file>
<file>icons/buttons/open.svg</file>
<file>icons/buttons/visibility.svg</file>
<file>icons/buttons/connected.svg</file>
<file>icons/buttons/disconnected.svg</file>
<file>icons/buttons/close.svg</file>
<file>icons/buttons/clear.svg</file>
<file>icons/buttons/print.svg</file>
<file>icons/buttons/save.svg</file>
<file>images/microcontroller.svg</file>
<file>icons/panes/dashboard.svg</file>
<file>icons/panes/view.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -1,65 +1,68 @@
{ {
"title": "Classic", "title": "Breeze",
"colors": { "colors": {
"groupbox_background": "#eff0f1", "groupbox_border": "#c2c2c2",
"groupbox_border": "#c2c2c2", "groupbox_background": "#eff0f1",
"groupbox_hard_border": "#d4d4d4", "groupbox_hard_border": "#d4d4d4",
"titlebar_text": "#ffffff",
"switch_highlight": "#3daee9", "pane_background": "#f9f9f9",
"tooltip_background": "#e7e8eb", "pane_section_label": "#232629",
"tooltip_border": "#b2b2b2", "pane_caption_bg_top": "#394046",
"tooltip_text": "#232629", "pane_caption_border": "#595E63",
"toolbar_active_top": "#475057", "pane_caption_bg_bottom": "#475057",
"toolbar_active_bottom": "#475057", "pane_caption_foreground": "#ffffff",
"toolbar_inactive_top": "#475057",
"toolbar_inactive_bottom": "#475057", "pane_hard_caption_bg_top": "#d5d8dA",
"toolbar_border": "#595E63", "pane_hard_caption_border": "#bebebe",
"toolbar_separator": "#595E63", "pane_hard_caption_bg_bottom": "#cbced1",
"toolbar_text": "#ffffff", "pane_hard_caption_foreground": "#232629",
"preview_background": "#E0E3E5",
"setup_border": "#b2b2b2", "setup_border": "#b2b2b2",
"inventory_tag_border":"#b2b2b2", "toolbar_top": "#475057",
"inventory_tag_background": "#E0E3E5", "titlebar_text": "#ffffff",
"inventory_background": "#fcfcfc", "toolbar_text": "#ffffff",
"inventory_model_highlight": "#3daee9", "toolbar_bottom": "#475057",
"inventory_switch_highlight": "#3daee9", "toolbar_border": "#595E63",
"pane_caption_bg_top": "#394046", "toolbar_separator": "#595E63",
"pane_caption_bg_bottom": "#475057", "toolbar_checked_button_opacity": 0.7,
"pane_caption_foreground": "#ffffff", "toolbar_checked_button_border": "#394046",
"pane_caption_border": "#595E63", "toolbar_checked_button_background": "#394046",
"pane_hard_caption_bg_top": "#D5D8DA",
"pane_hard_caption_bg_bottom": "#cbced1", "csv_switch": "#3dae2f",
"pane_hard_caption_foreground": "#232629", "view_switch": "#3daee9",
"pane_hard_caption_border": "#bebebe", "switch_highlight": "#3daee9",
"pane_background": "#F9F9F9",
"pane_section_label": "#232629", "text": "#232629",
"toolbar_checked_button_border": "#394046", "base": "#f9f9f9",
"toolbar_checked_button_background": "#394046", "button": "#eff0f1",
"toolbar_checked_button_opacity": 0.7, "window": "#f9f9f9",
"text": "#232629", "highlight": "#3daee9",
"base": "#F9F9F9", "button_text": "#232629",
"button": "#eff0f1", "highlighted_text": "#ffffff",
"window": "#F9F9F9", "placeholder_text": "#929497",
"highlight": "#3daee9",
"button_text": "#232629", "console_text": "#434649",
"highlighted_text": "#ffffff", "console_base": "#fcfcfc",
"placeholder_text": "#929497", "console_button": "#eff0f1",
"console_foreground":"#B0E1BA", "console_window": "#f9f9f9",
"console_background":"#3F4E5D", "console_highlight": "#3daee9",
"console_placeholder":"#7c948b", "console_button_text": "#232629",
"widget_control": "#000", "console_highlighted_text": "#ffffff",
"widget_text": "#000", "console_placeholder_text": "#929497",
"widget_colors": [
"#7eb9f5", "widget_control": "#f6f6f6",
"#fcb9b2", "widget_text": "#232629",
"#f9e07f", "widget_colors": [
"#b0e1ba", "#7eb9f5",
"#f7d6e0", "#fcb9b2",
"#ff8eb0", "#f9e07f",
"#bebebe", "#b0e1ba",
"#c1e7e3", "#f7d6e0",
"#ffc195", "#ff8eb0",
"#b8a9c9" "#bebebe",
] "#c1e7e3",
} "#ffc195",
"#b8a9c9"
]
}
} }

View File

@ -12,10 +12,8 @@
"tooltip_background": "#2e3439", "tooltip_background": "#2e3439",
"tooltip_border": "#43494F", "tooltip_border": "#43494F",
"tooltip_text": "#eff0f1", "tooltip_text": "#eff0f1",
"toolbar_active_top": "#31363A", "toolbar_top": "#31363A",
"toolbar_active_bottom": "#31363A", "toolbar_bottom": "#31363A",
"toolbar_inactive_top": "#31363A",
"toolbar_inactive_bottom": "#31363A",
"toolbar_border": "#43494F", "toolbar_border": "#43494F",
"toolbar_separator": "#43494F", "toolbar_separator": "#43494F",
"toolbar_text": "#eff0f1", "toolbar_text": "#eff0f1",

View File

@ -12,10 +12,8 @@
"tooltip_background": "#e7e8eb", "tooltip_background": "#e7e8eb",
"tooltip_border": "#b2b2b2", "tooltip_border": "#b2b2b2",
"tooltip_text": "#232629", "tooltip_text": "#232629",
"toolbar_active_top": "#dee0e2", "toolbar_top": "#dee0e2",
"toolbar_active_bottom": "#dee0e2", "toolbar_bottom": "#dee0e2",
"toolbar_inactive_top": "#dee0e2",
"toolbar_inactive_bottom": "#dee0e2",
"toolbar_border": "#bebebe", "toolbar_border": "#bebebe",
"toolbar_separator": "#bebebe", "toolbar_separator": "#bebebe",
"toolbar_text": "#232629", "toolbar_text": "#232629",

View File

@ -53,11 +53,13 @@ Misc::CommonFonts::CommonFonts()
QStringLiteral("Regular"), 12); QStringLiteral("Regular"), 12);
m_monoFont = QFontDatabase::font(QStringLiteral("Hack"), m_monoFont = QFontDatabase::font(QStringLiteral("Hack"),
QStringLiteral("Regular"), 12); QStringLiteral("Regular"), 12);
m_boldUiFont = QFontDatabase::font(QStringLiteral("Inter"),
QStringLiteral("Bold"), 12);
// Set pixel sizes for each font // Set pixel sizes for each font
m_uiFont.setPixelSize(12); m_uiFont.setPixelSize(12);
m_monoFont.setPixelSize(12); m_monoFont.setPixelSize(12);
m_sansFont.setPixelSize(12); m_boldUiFont.setPixelSize(12);
} }
/** /**
@ -88,6 +90,15 @@ const QFont &Misc::CommonFonts::monoFont() const
return m_monoFont; return m_monoFont;
} }
/**
* @brief Retrieves the bold UI font.
* @return The bold UI font.
*/
const QFont &Misc::CommonFonts::boldUiFont() const
{
return m_boldUiFont;
}
/** /**
* @brief Creates a custom UI font with specified pixel size and boldness. * @brief Creates a custom UI font with specified pixel size and boldness.
* @param pixelSize The pixel size of the font. * @param pixelSize The pixel size of the font.

View File

@ -41,6 +41,9 @@ class CommonFonts : public QObject
Q_PROPERTY(const QFont& monoFont Q_PROPERTY(const QFont& monoFont
READ monoFont READ monoFont
CONSTANT) CONSTANT)
Q_PROPERTY(const QFont& boldUiFont
READ boldUiFont
CONSTANT)
// clang-format on // clang-format on
private: private:
@ -56,13 +59,14 @@ public:
[[nodiscard]] const QFont &uiFont() const; [[nodiscard]] const QFont &uiFont() const;
[[nodiscard]] const QFont &monoFont() const; [[nodiscard]] const QFont &monoFont() const;
[[nodiscard]] const QFont &boldUiFont() const;
Q_INVOKABLE static QFont customUiFont(int pixelSize = 12, bool bold = false); Q_INVOKABLE static QFont customUiFont(int pixelSize = 12, bool bold = false);
Q_INVOKABLE static QFont customMonoFont(int pixelSize = 12); Q_INVOKABLE static QFont customMonoFont(int pixelSize = 12);
private: private:
QFont m_uiFont; QFont m_uiFont;
QFont m_sansFont;
QFont m_monoFont; QFont m_monoFont;
QFont m_boldUiFont;
}; };
} // namespace Misc } // namespace Misc

View File

@ -55,6 +55,7 @@
#include <QQuickWindow> #include <QQuickWindow>
#include <QSimpleUpdater.h> #include <QSimpleUpdater.h>
#include <Platform/NativeWindow.h>
/** /**
* Configures the application font and configures application signals/slots to * Configures the application font and configures application signals/slots to
@ -152,31 +153,8 @@ void Misc::ModuleManager::initializeQmlInterface()
// Initialize third-party modules // Initialize third-party modules
auto updater = QSimpleUpdater::getInstance(); auto updater = QSimpleUpdater::getInstance();
// Operating system flags // Initialize non-singleton modules
bool isWin = false; NativeWindow nativeWindow;
bool isMac = false;
bool isNix = false;
QString osName = tr("Unknown OS");
#if defined(Q_OS_MAC)
isMac = true;
osName = "macOS";
#elif defined(Q_OS_WIN)
isWin = true;
osName = "Windows";
#elif defined(Q_OS_LINUX)
isNix = true;
osName = "GNU/Linux";
#else
isNix = true;
osName = "UNIX";
#endif
// Qt version QML flag
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
const bool qt6 = false;
#else
const bool qt6 = true;
#endif
// Start common event timers // Start common event timers
miscTimerEvents->startTimers(); miscTimerEvents->startTimers();
@ -187,11 +165,6 @@ void Misc::ModuleManager::initializeQmlInterface()
// Register C++ modules with QML // Register C++ modules with QML
auto c = engine()->rootContext(); auto c = engine()->rootContext();
c->setContextProperty("Cpp_Qt6", qt6);
c->setContextProperty("Cpp_IsWin", isWin);
c->setContextProperty("Cpp_IsMac", isMac);
c->setContextProperty("Cpp_IsNix", isNix);
c->setContextProperty("Cpp_OSName", osName);
c->setContextProperty("Cpp_Updater", updater); c->setContextProperty("Cpp_Updater", updater);
c->setContextProperty("Cpp_IO_Serial", ioSerial); c->setContextProperty("Cpp_IO_Serial", ioSerial);
c->setContextProperty("Cpp_CSV_Export", csvExport); c->setContextProperty("Cpp_CSV_Export", csvExport);
@ -200,6 +173,7 @@ void Misc::ModuleManager::initializeQmlInterface()
c->setContextProperty("Cpp_IO_Manager", ioManager); c->setContextProperty("Cpp_IO_Manager", ioManager);
c->setContextProperty("Cpp_IO_Network", ioNetwork); c->setContextProperty("Cpp_IO_Network", ioNetwork);
c->setContextProperty("Cpp_MQTT_Client", mqttClient); c->setContextProperty("Cpp_MQTT_Client", mqttClient);
c->setContextProperty("Cpp_NativeWindow", &nativeWindow);
c->setContextProperty("Cpp_UI_Dashboard", uiDashboard); c->setContextProperty("Cpp_UI_Dashboard", uiDashboard);
c->setContextProperty("Cpp_Project_Model", projectModel); c->setContextProperty("Cpp_Project_Model", projectModel);
c->setContextProperty("Cpp_JSON_Generator", jsonGenerator); c->setContextProperty("Cpp_JSON_Generator", jsonGenerator);

View File

@ -41,13 +41,28 @@ Misc::ThemeManager::ThemeManager()
{ {
// Set theme files // Set theme files
QStringList themes = { QStringList themes = {
QStringLiteral(":/rcc/themes/Breeze.json"), QStringLiteral(":/themes/Breeze.json"),
QStringLiteral(":/rcc/themes/Light.json"), QStringLiteral(":/themes/Light.json"),
QStringLiteral(":/rcc/themes/Dark.json"), QStringLiteral(":/themes/Dark.json"),
}; };
// Load theme files
foreach (auto theme, themes)
{
QFile file(theme);
if (file.open(QFile::ReadOnly))
{
auto document = QJsonDocument::fromJson(file.readAll());
auto title = document.object().value("title").toString();
auto colors = document.object().value("colors").toObject();
m_themes.insert(title, colors);
file.close();
}
}
// Set application theme // Set application theme
setTheme(m_settings.value("Theme", 1).toInt()); setTheme(0);
// Automatically react to theme changes // Automatically react to theme changes
qApp->installEventFilter(this); qApp->installEventFilter(this);
@ -112,33 +127,6 @@ QColor Misc::ThemeManager::getColor(const QString &name) const
return QColor("#f0f"); return QColor("#f0f");
} }
/**
* @brief Event filter to intercept application-wide events.
*
* This method is an overridden event filter that specifically listens for the
* @c QEvent::ApplicationPaletteChange event.
*
* When this event is detected, it triggers a theme update to match the new
* system palette.
*
* @param watched The object where the event originated.
* @param event The event that is being filtered.
* @return true if the event was handled and should not be processed further
*/
bool Misc::ThemeManager::eventFilter(QObject *watched, QEvent *event)
{
if (event->type() == QEvent::ApplicationPaletteChange)
{
if (theme() == 0)
{
setTheme(0);
return true;
}
}
return QObject::eventFilter(watched, event);
}
/** /**
* @brief Sets the current theme to the theme at the specified index. * @brief Sets the current theme to the theme at the specified index.
* *
@ -149,18 +137,12 @@ bool Misc::ThemeManager::eventFilter(QObject *watched, QEvent *event)
*/ */
void Misc::ThemeManager::setTheme(const int index) void Misc::ThemeManager::setTheme(const int index)
{ {
// Load colors from theme if (index >= 0 && index < availableThemes().count())
auto fixedIndex = index; {
if (index > 0 && index < availableThemes().count()) m_theme = index;
m_settings.setValue("Theme", index);
m_themeName = availableThemes().at(index); m_themeName = availableThemes().at(index);
else m_colors = m_themes.value(m_themeName);
fixedIndex = 0; Q_EMIT themeChanged();
}
// Update the theme
m_theme = fixedIndex;
m_settings.setValue("Theme", fixedIndex);
m_colors = m_themes.value(m_themeName);
// Update UI
Q_EMIT themeChanged();
} }

View File

@ -109,9 +109,6 @@ public:
public Q_SLOTS: public Q_SLOTS:
void setTheme(int index); void setTheme(int index);
protected:
bool eventFilter(QObject *watched, QEvent *event) override;
private: private:
int m_theme; int m_theme;
QString m_themeName; QString m_themeName;

View File

@ -44,18 +44,18 @@ Project::CodeEditor::CodeEditor()
// Setup toolbar // Setup toolbar
// clang-format off // clang-format off
auto acNew = m_toolbar.addAction(QIcon(":/code-editor-icons/new.svg"), tr("New")); auto acNew = m_toolbar.addAction(QIcon(":/icons/code-editor/new.svg"), tr("New"));
auto acOpen = m_toolbar.addAction(QIcon(":/code-editor-icons/open.svg"), tr("Open")); auto acOpen = m_toolbar.addAction(QIcon(":/icons/code-editor/open.svg"), tr("Open"));
auto acSave = m_toolbar.addAction(QIcon(":/code-editor-icons/save.svg"), tr("Save")); auto acSave = m_toolbar.addAction(QIcon(":/icons/code-editor/save.svg"), tr("Save"));
m_toolbar.addSeparator(); m_toolbar.addSeparator();
auto acUndo = m_toolbar.addAction(QIcon(":/code-editor-icons/undo.svg"), tr("Undo")); auto acUndo = m_toolbar.addAction(QIcon(":/icons/code-editor/undo.svg"), tr("Undo"));
auto acRedo = m_toolbar.addAction(QIcon(":/code-editor-icons/redo.svg"), tr("Redo")); auto acRedo = m_toolbar.addAction(QIcon(":/icons/code-editor/redo.svg"), tr("Redo"));
m_toolbar.addSeparator(); m_toolbar.addSeparator();
auto acCut = m_toolbar.addAction(QIcon(":/code-editor-icons/cut.svg"), tr("Cut")); auto acCut = m_toolbar.addAction(QIcon(":/icons/code-editor/cut.svg"), tr("Cut"));
auto acCopy = m_toolbar.addAction(QIcon(":/code-editor-icons/copy.svg"), tr("Copy")); auto acCopy = m_toolbar.addAction(QIcon(":/icons/code-editor/copy.svg"), tr("Copy"));
auto acPaste = m_toolbar.addAction(QIcon(":/code-editor-icons/paste.svg"), tr("Paste")); auto acPaste = m_toolbar.addAction(QIcon(":/icons/code-editor/paste.svg"), tr("Paste"));
m_toolbar.addSeparator(); m_toolbar.addSeparator();
auto acHelp = m_toolbar.addAction(QIcon(":/code-editor-icons/help.svg"), tr("Help")); auto acHelp = m_toolbar.addAction(QIcon(":/icons/code-editor/help.svg"), tr("Help"));
// clang-format on // clang-format on
// Connect action signals/slots // Connect action signals/slots

View File

@ -80,9 +80,13 @@ Project::Model::Model()
connect(this, &Project::Model::frameStartSequenceChanged, this, connect(this, &Project::Model::frameStartSequenceChanged, this,
&Project::Model::onModelChanged); &Project::Model::onModelChanged);
// Load current JSON map file into C++ model // Re-load JSON map file into C++ model
connect(&JSON::Generator::instance(), &JSON::Generator::jsonFileMapChanged, connect(&JSON::Generator::instance(), &JSON::Generator::jsonFileMapChanged,
this, &Project::Model::onJsonLoaded); this, &Project::Model::onJsonLoaded);
// Load current JSON map file into C++ model
if (!JSON::Generator::instance().jsonMapFilepath().isEmpty())
onJsonLoaded();
} }
/** /**

View File

@ -53,20 +53,19 @@ Widgets::Terminal::Terminal(QQuickItem *parent)
m_textEdit.setSizeAdjustPolicy(QPlainTextEdit::AdjustToContents); m_textEdit.setSizeAdjustPolicy(QPlainTextEdit::AdjustToContents);
// Set widget palette // Set widget palette
// clang-format off
QPalette palette; QPalette palette;
auto theme = &Misc::ThemeManager::instance(); auto theme = &Misc::ThemeManager::instance();
palette.setColor(QPalette::Text, theme->getColor("console_text")); palette.setColor(QPalette::Text, theme->getColor("console_text"));
palette.setColor(QPalette::Base, theme->getColor("console_base")); palette.setColor(QPalette::Base, theme->getColor("console_base"));
palette.setColor(QPalette::Button, theme->getColor("console_button")); palette.setColor(QPalette::Button, theme->getColor("console_button"));
palette.setColor(QPalette::Window, theme->getColor("console_window")); palette.setColor(QPalette::Window, theme->getColor("console_window"));
palette.setColor(QPalette::ButtonText, theme->getColor("console_button"));
palette.setColor(QPalette::Highlight, theme->getColor("console_highlight")); palette.setColor(QPalette::Highlight, theme->getColor("console_highlight"));
palette.setColor(QPalette::HighlightedText, palette.setColor(QPalette::HighlightedText, theme->getColor("console_highlighted_text"));
theme->getColor("console_highlighted_text")); palette.setColor(QPalette::PlaceholderText, theme->getColor("console_placeholder_text"));
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
palette.setColor(QPalette::PlaceholderText,
theme->getColor("console_placeholder"));
#endif
m_textEdit.setPalette(palette); m_textEdit.setPalette(palette);
// clang-format on
// Connect signals/slots // Connect signals/slots
connect(&IO::Console::instance(), &IO::Console::stringReceived, this, connect(&IO::Console::instance(), &IO::Console::stringReceived, this,

View File

@ -87,6 +87,8 @@ int main(int argc, char **argv)
// Init. application // Init. application
QApplication app(argc, argv); QApplication app(argc, argv);
// Set application information
app.setApplicationName(APP_NAME); app.setApplicationName(APP_NAME);
app.setApplicationVersion(APP_VERSION); app.setApplicationVersion(APP_VERSION);
app.setOrganizationName(APP_DEVELOPER); app.setOrganizationName(APP_DEVELOPER);