Updating build, providing CI, fixing a few bugs
This commit is contained in:
parent
a852a1232f
commit
c828b4fba8
7 changed files with 70 additions and 9 deletions
44
.drone/.drone.yml
Normal file
44
.drone/.drone.yml
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
kind: pipeline
|
||||||
|
name: build-test
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Linux test
|
||||||
|
image: ad5001/ubuntu-pyside2-xvfb:hirsute-5.15.2
|
||||||
|
commands:
|
||||||
|
- xvfb-run python3 run.py --test-build
|
||||||
|
- xvfb-run python3 run.py --test-build ./.drone/test1.lpf
|
||||||
|
- xvfb-run python3 run.py --test-build ./.drone/test2.lpf
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
|
||||||
|
- name: Windows test
|
||||||
|
image: ad5001/ubuntu-pyside2-xvfb-wine:win7-5.15.2
|
||||||
|
commands:
|
||||||
|
- # For some reason, launching GUI apps with wine, even with xvfb-run, fails.
|
||||||
|
- #xvfb-run python run.py --test-build
|
||||||
|
- #xvfb-run python run.py --test-build ./.drone/test1.lpf
|
||||||
|
- #xvfb-run python run.py --test-build ./.drone/test2.lpf
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
|
||||||
|
|
||||||
|
- name: Linux packaging
|
||||||
|
image: ad5001/accountfree-build-img:hirsute-5.15.2
|
||||||
|
commands:
|
||||||
|
- bash package-linux.sh
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
|
||||||
|
|
||||||
|
- name: Windows building
|
||||||
|
image: ad5001/accountfree-build-img-wine:win7-5.15.2
|
||||||
|
commands:
|
||||||
|
- bash build-wine.sh
|
||||||
|
- bash package-wine.sh
|
||||||
|
when:
|
||||||
|
event: [ push, tag ]
|
||||||
|
|
|
@ -109,13 +109,13 @@ def run():
|
||||||
engine = QQmlApplicationEngine()
|
engine = QQmlApplicationEngine()
|
||||||
helper = Helper()
|
helper = Helper()
|
||||||
engine.rootContext().setContextProperty("Helper", helper)
|
engine.rootContext().setContextProperty("Helper", helper)
|
||||||
|
engine.rootContext().setContextProperty("TestBuild", "--test-build" in argv)
|
||||||
|
|
||||||
engine.addImportPath(os.path.realpath(os.path.join(os.getcwd(), "qml")))
|
engine.addImportPath(os.path.realpath(os.path.join(os.getcwd(), "qml")))
|
||||||
engine.load(os.path.realpath(os.path.join(os.getcwd(), "qml", "LogGraph.qml")))
|
engine.load(os.path.realpath(os.path.join(os.getcwd(), "qml", "LogarithmPlotter.qml")))
|
||||||
|
|
||||||
os.chdir(pwd)
|
os.chdir(pwd)
|
||||||
if len(argv) > 0 and os.path.exists(argv[-1]) and argv[-1].split('.')[-1] in ['json', 'lgg', 'lpf']:
|
if len(argv) > 0 and os.path.exists(argv[-1]) and argv[-1].split('.')[-1] in ['json', 'lgg', 'lpf']:
|
||||||
print(argv[-1])
|
|
||||||
engine.rootObjects()[0].loadDiagram(argv[-1])
|
engine.rootObjects()[0].loadDiagram(argv[-1])
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
|
|
||||||
|
|
|
@ -125,6 +125,11 @@ ApplicationWindow {
|
||||||
textsize: settings.textsize
|
textsize: settings.textsize
|
||||||
showxgrad: settings.showxgrad
|
showxgrad: settings.showxgrad
|
||||||
showygrad: settings.showygrad
|
showygrad: settings.showygrad
|
||||||
|
|
||||||
|
onPainted: if(TestBuild == true) {
|
||||||
|
console.log("Plot drawn in canvas, terminating test of build in 100ms.")
|
||||||
|
testBuildTimer.start()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveDiagram(filename) {
|
function saveDiagram(filename) {
|
||||||
|
@ -161,6 +166,7 @@ ApplicationWindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadDiagram(filename) {
|
function loadDiagram(filename) {
|
||||||
|
console.log("Loading file '" + filename + "'.")
|
||||||
var data = JSON.parse(Helper.load(filename))
|
var data = JSON.parse(Helper.load(filename))
|
||||||
var error = "";
|
var error = "";
|
||||||
if(Object.keys(data).includes("type") && data["type"] == "logplotv1") {
|
if(Object.keys(data).includes("type") && data["type"] == "logplotv1") {
|
||||||
|
@ -216,8 +222,11 @@ ApplicationWindow {
|
||||||
error = "Invalid file provided."
|
error = "Invalid file provided."
|
||||||
}
|
}
|
||||||
if(error != "") {
|
if(error != "") {
|
||||||
|
console.log(error)
|
||||||
|
// TODO: Error handling
|
||||||
}
|
}
|
||||||
|
drawCanvas.requestPaint()
|
||||||
|
console.log("Loaded file '" + filename + "'.")
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
|
@ -227,6 +236,13 @@ ApplicationWindow {
|
||||||
onTriggered: sidebarSelector.currentIndex = 0
|
onTriggered: sidebarSelector.currentIndex = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
id: testBuildTimer
|
||||||
|
repeat: false
|
||||||
|
interval: 100
|
||||||
|
onTriggered: Qt.quit() // Quit after paint on test build
|
||||||
|
}
|
||||||
|
|
||||||
function copyDiagramToClipboard() {
|
function copyDiagramToClipboard() {
|
||||||
var file = Helper.gettmpfile()
|
var file = Helper.gettmpfile()
|
||||||
drawCanvas.save(file)
|
drawCanvas.save(file)
|
|
@ -1300,7 +1300,7 @@ class Text extends DrawableObject {
|
||||||
|
|
||||||
constructor(name = null, visible = true, color = null, labelContent = 'null',
|
constructor(name = null, visible = true, color = null, labelContent = 'null',
|
||||||
x = 1, y = 0, labelPosition = 'center', text = 'New text') {
|
x = 1, y = 0, labelPosition = 'center', text = 'New text') {
|
||||||
if(name == null) name = "tex" + getNewName('t')
|
if(name == null) name = getNewName('t')
|
||||||
super(name, visible, color, labelContent)
|
super(name, visible, color, labelContent)
|
||||||
this.type = 'Point'
|
this.type = 'Point'
|
||||||
if(typeof x == 'number' || typeof x == 'string') x = new MathLib.Expression(x.toString())
|
if(typeof x == 'number' || typeof x == 'string') x = new MathLib.Expression(x.toString())
|
||||||
|
|
|
@ -259,7 +259,7 @@ function makeExpressionReadable(str) {
|
||||||
[/(\d|\))×/g, '$1'],
|
[/(\d|\))×/g, '$1'],
|
||||||
//[/×(\d|\()/g, '$1'],
|
//[/×(\d|\()/g, '$1'],
|
||||||
[/\(([^)(+.\/-]+)\)/g, "$1"],
|
[/\(([^)(+.\/-]+)\)/g, "$1"],
|
||||||
[/integral\((.+), ?(.+), ?("|')(.+)("|'), ?("|')(.+)("|')\)/g, function(match, a, b, p1, body, p2, p3, by, p4) {
|
[/integral\((.+),\s?(.+),\s?("|')(.+)("|'),\s?("|')(.+)("|')\)/g, function(match, a, b, p1, body, p2, p3, by, p4) {
|
||||||
if(a.length < b.length) {
|
if(a.length < b.length) {
|
||||||
return `∫${textsub(a)}${textsup(b)} ${body} d${by}`
|
return `∫${textsub(a)}${textsup(b)} ${body} d${by}`
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# LogarithmPlotter
|
# ![icon](https://git.ad5001.eu/Ad5001/LogarithmicPlotter/raw/branch/master/logplotter.svg) LogarithmPlotter
|
||||||
|
|
||||||
Create graphs with logarithm scales, namely BODE diagrams.
|
Create graphs with logarithm scales, namely BODE diagrams.
|
||||||
|
|
||||||
|
@ -9,11 +9,12 @@ You can simply run LogarithmPlotter using `python3 run.py`.
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
### Generate installers:
|
### Generate installers:
|
||||||
You can generate installers from AccountFree after installing all the dependencies:
|
You can generate installers from AccountFree after installing all the dependencies:
|
||||||
|
For all builds, you need [Python 3](https://python.org) with [PySide2](https://pypi.org/project/PySide2/) installable with `pip install PySide2`.
|
||||||
- Windows installer:
|
- Windows installer:
|
||||||
- You need `pyinstaller`. You can install it using `pip install pyinstaller`.
|
- You need `pyinstaller`. You can install it using `pip install pyinstaller`.
|
||||||
- Run the `build-windows.bat` script (or `build-wine.sh` if you're cross-compiling with wine on Linux) to build an exe for LogarithmPlotter.
|
- Run the `build-windows.bat` script (or `build-wine.sh` if you're cross-compiling with wine on Linux) to build an exe for LogarithmPlotter.
|
||||||
- You also [NSIS](https://nsis.sourceforge.io/Main_Page) (Linux users can install the `nsis` package).
|
- You also need [NSIS](https://nsis.sourceforge.io/Main_Page) (Linux users can install the [nsis](https://pkgs.org/download/nsis) package).
|
||||||
- Run the `package-windows.bat` script (or `package.wine.sh`if you're cross-compiling on Linux). You will find a logarithmplotter-setup.exe installer in the dist/accountfree/ folder.
|
- Run the `package-windows.bat` script (or `package.wine.sh`if you're cross-compiling on Linux). You will find a logarithmplotter-setup.exe installer in the dist/accountfree/ folder.
|
||||||
- MacOS Archive creator installer:
|
- MacOS Archive creator installer:
|
||||||
- You need `pyinstaller`. You can install it using `pip install pyinstaller`.
|
- You need `pyinstaller`. You can install it using `pip install pyinstaller`.
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
python3-pip, qt5-default (>= 5.12.0), qml-module-qtquick-controls2 (>= 5.12.0), qml-module-qtmultimedia (>= 5.12.0), qml-module-qtgraphicaleffects (>= 5.12.0), qml-module-qtquick2 (>= 5.12.0), qml-module-qtqml-models2 (>= 5.12.0), qml-module-qtquick-controls (>= 5.12.0), python3-pyside2.qtcore (>= 5.12.0), python3-pyside2.qtqml (>= 5.12.0), python3-pyside2.qtgui (>= 5.12.0), python3-pyside2.qtquick (>= 5.12.0), python3-pyside2.qtwidgets (>= 5.12.0), python3-pyside2.qtmultimedia (>= 5.12.0), python3-pyside2.qtnetwork (>= 5.12.0)
|
python3-pip, qt5-default (>= 5.15.0), qml-module-qtquick-controls2 (>= 5.15.0), qml-module-qtmultimedia (>= 5.15.0), qml-module-qtgraphicaleffects (>= 5.15.0), qml-module-qtquick2 (>= 5.15.0), qml-module-qtqml-models2 (>= 5.15.0), qml-module-qtquick-controls (>= 5.15.0), python3-pyside2.qtcore (>= 5.15.0), python3-pyside2.qtqml (>= 5.15.0), python3-pyside2.qtgui (>= 5.15.0), python3-pyside2.qtquick (>= 5.15.0), python3-pyside2.qtwidgets (>= 5.15.0), python3-pyside2.qtmultimedia (>= 5.15.0), python3-pyside2.qtnetwork (>= 5.15.0)
|
||||||
|
|
Loading…
Reference in a new issue