Adding thanks to popup
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
1c0850a200
commit
1f581c46ec
6 changed files with 338 additions and 3 deletions
|
@ -169,6 +169,11 @@ MenuBar {
|
||||||
onTriggered: Qt.openUrlExternally("https://hosted.weblate.org/engage/logarithmplotter/")
|
onTriggered: Qt.openUrlExternally("https://hosted.weblate.org/engage/logarithmplotter/")
|
||||||
}
|
}
|
||||||
MenuSeparator { }
|
MenuSeparator { }
|
||||||
|
Action {
|
||||||
|
text: qsTr("&Thanks")
|
||||||
|
icon.name: 'about'
|
||||||
|
onTriggered: thanksTo.open()
|
||||||
|
}
|
||||||
Action {
|
Action {
|
||||||
text: qsTr("&About")
|
text: qsTr("&About")
|
||||||
shortcut: StandardKey.HelpContents
|
shortcut: StandardKey.HelpContents
|
||||||
|
|
|
@ -59,6 +59,8 @@ ApplicationWindow {
|
||||||
|
|
||||||
Popup.About {id: about}
|
Popup.About {id: about}
|
||||||
|
|
||||||
|
Popup.ThanksTo {id: thanksTo}
|
||||||
|
|
||||||
Popup.Alert {
|
Popup.Alert {
|
||||||
id: alert
|
id: alert
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
|
|
|
@ -0,0 +1,320 @@
|
||||||
|
/**
|
||||||
|
* LogarithmPlotter - 2D plotter software to make BODE plots, sequences and distribution functions.
|
||||||
|
* Copyright (C) 2022 Ad5001
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Dialogs 1.3 as D
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmltype ThanksTo
|
||||||
|
\inqmlmodule eu.ad5001.LogarithmPlotter.Popup
|
||||||
|
\brief Thanks to popup of LogarithmPlotter.
|
||||||
|
|
||||||
|
\sa LogarithmPlotter
|
||||||
|
*/
|
||||||
|
D.Dialog {
|
||||||
|
id: about
|
||||||
|
title: qsTr("Thanks and Contributions - LogarithmPlotter")
|
||||||
|
width: 400
|
||||||
|
height: 600
|
||||||
|
|
||||||
|
Column {
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 10
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: librariesListView
|
||||||
|
anchors.left: parent.left
|
||||||
|
width: parent.width
|
||||||
|
//height: parent.height
|
||||||
|
implicitHeight: contentItem.childrenRect.height
|
||||||
|
|
||||||
|
model: ListModel {
|
||||||
|
Component.onCompleted: {
|
||||||
|
append({
|
||||||
|
libName: 'expr-eval',
|
||||||
|
license: 'MIT',
|
||||||
|
licenseLink: 'https://raw.githubusercontent.com/silentmatt/expr-eval/master/LICENSE.txt',
|
||||||
|
linkName: qsTr('Source code'),
|
||||||
|
link: 'https://github.com/silentmatt/expr-eval',
|
||||||
|
authors: [{
|
||||||
|
authorLine: qsTr('Original library by Raphael Graf'),
|
||||||
|
email: 'r@undefined.ch',
|
||||||
|
website: 'https://web.archive.org/web/20111023001618/http://www.undefined.ch/mparser/index.html',
|
||||||
|
websiteName: qsTr('Source')
|
||||||
|
}, {
|
||||||
|
authorLine: qsTr('Ported to Javascript by Matthew Crumley'),
|
||||||
|
email: 'email@matthewcrumley.com',
|
||||||
|
website: 'https://silentmatt.com/',
|
||||||
|
websiteName: qsTr('Website')
|
||||||
|
}, {
|
||||||
|
authorLine: qsTr('Ported to QMLJS by Ad5001'),
|
||||||
|
email: 'mail@ad5001.eu',
|
||||||
|
website: 'https://ad5001.eu/',
|
||||||
|
websiteName: qsTr('Website')
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
header: Label {
|
||||||
|
id: librariesUsedHeader
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
font.pixelSize: 25
|
||||||
|
text: qsTr("Libraries included")
|
||||||
|
height: implicitHeight + 10
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: Column {
|
||||||
|
id: libClmn
|
||||||
|
width: librariesListView.width
|
||||||
|
spacing: 10
|
||||||
|
|
||||||
|
Item {
|
||||||
|
height: libraryHeader.height
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: libraryHeader
|
||||||
|
anchors.left: parent.left
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
font.pixelSize: 18
|
||||||
|
text: libName
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
anchors.right: parent.right
|
||||||
|
height: parent.height
|
||||||
|
spacing: 10
|
||||||
|
|
||||||
|
Button {
|
||||||
|
height: parent.height
|
||||||
|
text: license
|
||||||
|
icon.name: 'license'
|
||||||
|
onClicked: Qt.openUrlExternally(licenseLink)
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
height: parent.height
|
||||||
|
text: linkName
|
||||||
|
icon.name: 'web-browser'
|
||||||
|
onClicked: Qt.openUrlExternally(link)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: libAuthors
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: 10
|
||||||
|
model: authors
|
||||||
|
width: parent.width - 10
|
||||||
|
implicitHeight: contentItem.childrenRect.height
|
||||||
|
|
||||||
|
delegate: Item {
|
||||||
|
id: libAuthor
|
||||||
|
width: librariesListView.width - 10
|
||||||
|
height: 50
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: libAuthorName
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: buttons.left
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
font.pixelSize: 14
|
||||||
|
text: authorLine
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: buttons
|
||||||
|
anchors.right: parent.right
|
||||||
|
height: parent.height
|
||||||
|
spacing: 10
|
||||||
|
|
||||||
|
Button {
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
text: websiteName
|
||||||
|
icon.name: 'web-browser'
|
||||||
|
height: parent.height - 10
|
||||||
|
onClicked: Qt.openUrlExternally(website)
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
text: qsTr('Email')
|
||||||
|
icon.name: 'email'
|
||||||
|
height: parent.height - 10
|
||||||
|
onClicked: Qt.openUrlExternally('mailto:' + email)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: libSeparator
|
||||||
|
opacity: 0.3
|
||||||
|
color: sysPalette.windowText
|
||||||
|
width: parent.width
|
||||||
|
height: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: translationsListView
|
||||||
|
anchors.left: parent.left
|
||||||
|
width: parent.width
|
||||||
|
implicitHeight: contentItem.childrenRect.height
|
||||||
|
spacing: 3
|
||||||
|
|
||||||
|
|
||||||
|
model: ListModel {
|
||||||
|
Component.onCompleted: {
|
||||||
|
append({
|
||||||
|
tranName: '🇬🇧 ' + qsTr('English'),
|
||||||
|
link: 'https://hosted.weblate.org/projects/logarithmplotter/logarithmplotter/en/',
|
||||||
|
authors: [{
|
||||||
|
authorLine: 'Ad5001',
|
||||||
|
email: 'mail@ad5001.eu',
|
||||||
|
website: 'https://ad5001.eu',
|
||||||
|
websiteName: qsTr('Website')
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
append({
|
||||||
|
tranName: '🇫🇷 ' + qsTr('French'),
|
||||||
|
link: 'https://hosted.weblate.org/projects/logarithmplotter/logarithmplotter/fr/',
|
||||||
|
authors: [{
|
||||||
|
authorLine: 'Ad5001',
|
||||||
|
website: 'https://ad5001.eu',
|
||||||
|
websiteName: qsTr('Website')
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
append({
|
||||||
|
tranName: '🇩🇪 ' + qsTr('German'),
|
||||||
|
link: 'https://hosted.weblate.org/projects/logarithmplotter/logarithmplotter/de/',
|
||||||
|
authors: [{
|
||||||
|
authorLine: 'Ad5001',
|
||||||
|
website: 'https://ad5001.eu',
|
||||||
|
websiteName: qsTr('Website')
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
append({
|
||||||
|
tranName: '🇭🇺 ' + qsTr('Hungarian'),
|
||||||
|
link: 'https://hosted.weblate.org/projects/logarithmplotter/logarithmplotter/hu/',
|
||||||
|
authors: [{
|
||||||
|
authorLine: 'Óvári',
|
||||||
|
website: 'https://github.com/ovari',
|
||||||
|
websiteName: qsTr('Github')
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
append({
|
||||||
|
tranName: '🇳🇴 ' + qsTr('Norwegian'),
|
||||||
|
link: 'https://hosted.weblate.org/projects/logarithmplotter/logarithmplotter/no/',
|
||||||
|
authors: [{
|
||||||
|
authorLine: 'Allan Nordhøy',
|
||||||
|
website: 'https://github.com/comradekingu',
|
||||||
|
websiteName: qsTr('Github')
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
header: Label {
|
||||||
|
id: translationsHeader
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
font.pixelSize: 25
|
||||||
|
text: qsTr("Translations included")
|
||||||
|
height: implicitHeight + 10
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: Column {
|
||||||
|
id: tranClmn
|
||||||
|
width: translationsListView.width
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width
|
||||||
|
height: translationHeader.height + 10
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: translationHeader
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
font.pixelSize: 18
|
||||||
|
text: tranName
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
height: 30
|
||||||
|
spacing: 10
|
||||||
|
|
||||||
|
Button {
|
||||||
|
height: parent.height
|
||||||
|
text: qsTr('Improve')
|
||||||
|
icon.name: 'web-browser'
|
||||||
|
onClicked: Qt.openUrlExternally(link)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: tranAuthors
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: 10
|
||||||
|
model: authors
|
||||||
|
width: parent.width - 10
|
||||||
|
implicitHeight: contentItem.childrenRect.height
|
||||||
|
|
||||||
|
delegate: Item {
|
||||||
|
id: tranAuthor
|
||||||
|
width: tranAuthors.width
|
||||||
|
height: 40
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: tranAuthorName
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: buttons.left
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
font.pixelSize: 14
|
||||||
|
text: authorLine
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: buttons
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
height: 30
|
||||||
|
spacing: 10
|
||||||
|
|
||||||
|
Button {
|
||||||
|
text: websiteName
|
||||||
|
icon.name: 'web-browser'
|
||||||
|
height: parent.height
|
||||||
|
onClicked: Qt.openUrlExternally(website)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,4 +5,4 @@ Alert 1.0 Alert.qml
|
||||||
FileDialog 1.0 FileDialog.qml
|
FileDialog 1.0 FileDialog.qml
|
||||||
GreetScreen 1.0 GreetScreen.qml
|
GreetScreen 1.0 GreetScreen.qml
|
||||||
Changelog 1.0 Changelog.qml
|
Changelog 1.0 Changelog.qml
|
||||||
|
ThanksTo 1.0 ThanksTo.qml
|
||||||
|
|
|
@ -1826,10 +1826,12 @@ Parser.prototype.isOperatorEnabled = function (op) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Based on ndef.parser, by Raphael Graf(r@undefined.ch)
|
Based on ndef.parser, by Raphael Graf <r@undefined.ch>
|
||||||
http://www.undefined.ch/mparser/index.html
|
http://www.undefined.ch/mparser/index.html
|
||||||
|
|
||||||
Ported to JavaScript and modified by Matthew Crumley (email@matthewcrumley.com, http://silentmatt.com/)
|
Ported to JavaScript and modified by Matthew Crumley <email@matthewcrumley.com> (http://silentmatt.com/)
|
||||||
|
|
||||||
|
Ported to QMLJS with modifications done accordingly done by Ad5001 <mail@ad5001.eu> (https://ad5001.eu)
|
||||||
|
|
||||||
You are free to use and modify this code in anyway you find useful. Please leave this comment in the code
|
You are free to use and modify this code in anyway you find useful. Please leave this comment in the code
|
||||||
to acknowledge its original source. If you feel like it, I enjoy hearing about projects that use my code,
|
to acknowledge its original source. If you feel like it, I enjoy hearing about projects that use my code,
|
||||||
|
|
|
@ -74,3 +74,9 @@ There are several ways to contribute to LogarithmPlotter.
|
||||||
Language files translations located at LogarithmPlotter/i18n are licensed under GNU GPL3.0+ and are copyrighted by their original authors. See LICENSE.md for more details:
|
Language files translations located at LogarithmPlotter/i18n are licensed under GNU GPL3.0+ and are copyrighted by their original authors. See LICENSE.md for more details:
|
||||||
- 🇳🇴 Norwegian translation by [Allan Nordhøy](https://github.com/comradekingu)
|
- 🇳🇴 Norwegian translation by [Allan Nordhøy](https://github.com/comradekingu)
|
||||||
- 🇭🇺 Hungarian translation by [Óvári](https://github.com/ovari)
|
- 🇭🇺 Hungarian translation by [Óvári](https://github.com/ovari)
|
||||||
|
|
||||||
|
### Libraries used
|
||||||
|
|
||||||
|
LogarithmPlotter includes [expr-eval](https://github.com/silentmatt/expr-eval) a port of [ndef.parser](https://web.archive.org/web/20111023001618/http://www.undefined.ch/mparser/index.html) by Raphael Graf <r@undefined.ch>, ported to javascript by Matthew Crumley <email@matthewcrumley.com> (http://silentmatt.com/), and then to QMLJS by Ad5001.
|
||||||
|
|
||||||
|
The code is licensed under the [MIT License](https://raw.githubusercontent.com/silentmatt/expr-eval/master/LICENSE.txt).
|
||||||
|
|
Loading…
Add table
Reference in a new issue