From 08dd31ddbc8067630de4878d7742556d2930063f Mon Sep 17 00:00:00 2001 From: Ad5001 Date: Tue, 9 Mar 2021 11:14:12 +0100 Subject: [PATCH] File extension for plotter, with icon for it. --- logplotter.desktop | 10 ++++ logplotterfile.svg | 123 +++++++++++++++++++++++++++++++++++++++++++++ qml/FileDialog.qml | 2 +- qml/LogGraph.qml | 4 +- qml/js/objects.js | 7 ++- 5 files changed, 140 insertions(+), 6 deletions(-) create mode 100644 logplotter.desktop create mode 100644 logplotterfile.svg diff --git a/logplotter.desktop b/logplotter.desktop new file mode 100644 index 0000000..aae6f6f --- /dev/null +++ b/logplotter.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Logarithm Plotter +Comment=Plotter to make BODE diagrams, sequences and repartition functions. +Exec=/usr/bin/python3 /home/ad5001/Apps/LogarithmPlotter/run.py %F +Icon=/home/ad5001/Apps/LogarithmPlotter/logplotter.svg +Terminal=false +StartupNotify=false +Categories=Graphics;Science;Math; diff --git a/logplotterfile.svg b/logplotterfile.svg new file mode 100644 index 0000000..03cd1ce --- /dev/null +++ b/logplotterfile.svg @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/qml/FileDialog.qml b/qml/FileDialog.qml index 517cd27..c0d5d92 100644 --- a/qml/FileDialog.qml +++ b/qml/FileDialog.qml @@ -24,7 +24,7 @@ D.FileDialog { property bool exportMode: false title: exportMode ? "Export Logarithmic Graph file" : "Import Logarithmic Graph file" - nameFilters: ["Logarithmic Graph JSON Data (*.json)", "All files (*)"] + nameFilters: ["Logarithmic Graph JSON Data (*.lgg)", "Old Logarithmic Graph JSON Data (*.json)", "All files (*)"] folder: shortcuts.documents selectExisting: !exportMode diff --git a/qml/LogGraph.qml b/qml/LogGraph.qml index 4d13026..d6d3ba5 100644 --- a/qml/LogGraph.qml +++ b/qml/LogGraph.qml @@ -29,7 +29,7 @@ ApplicationWindow { width: 1000 height: 500 color: sysPalette.window - title: "Logarithmic Plotter " + (settings.saveFilename != "" ? " - " + settings.saveFilename.split('/')[0] : "") + title: "Logarithmic Plotter " + (settings.saveFilename != "" ? " - " + settings.saveFilename.split('/')[settings.saveFilename.split('/').length -1] : "") SystemPalette { id: sysPalette; colorGroup: SystemPalette.Active } SystemPalette { id: sysPaletteIn; colorGroup: SystemPalette.Disabled } @@ -116,6 +116,7 @@ ApplicationWindow { } function saveDiagram(filename) { + settings.saveFilename = filename var objs = {} for(var objType in Objects.currentObjects){ objs[objType] = [] @@ -143,6 +144,7 @@ ApplicationWindow { function loadDiagram(filename) { var data = JSON.parse(Helper.load(filename)) if(Object.keys(data).includes("type") && data["type"] == "logplotv1") { + settings.saveFilename = filename settings.xzoom = data["xzoom"] settings.yzoom = data["yzoom"] settings.xmin = data["xmin"] diff --git a/qml/js/objects.js b/qml/js/objects.js index 0cd4409..426e2c8 100644 --- a/qml/js/objects.js +++ b/qml/js/objects.js @@ -1167,14 +1167,14 @@ class RepartitionFunction extends ExecutableObject { getReadableString() { - var keys = Object.keys(this.probabilities).sort(); + var keys = Object.keys(this.probabilities).sort((a,b) => a-b); return `F_${this.name}(x) = P(${this.name} ≤ x)\n` + keys.map(idx => `P(${this.name}=${idx})=${this.probabilities[idx]}`).join("; ") } execute(x = 1) { var ret = 0; - Object.keys(this.probabilities).sort().forEach(idx => { - if(x >= idx) ret += this.probabilities[idx] + Object.keys(this.probabilities).sort((a,b) => a-b).forEach(idx => { + if(x >= idx) ret += parseFloat(this.probabilities[idx]) }) return ret } @@ -1236,7 +1236,6 @@ class RepartitionFunction extends ExecutableObject { } } } - console.log("Checking end", canvas.visible(keys[keys.length-1],currentY+parseFloat(this.probabilities[keys[keys.length-1]])), canvas.y2px(currentY+parseFloat(this.probabilities[keys[keys.length-1]]))) if(canvas.visible(keys[keys.length-1],currentY+parseFloat(this.probabilities[keys[keys.length-1]]))) { canvas.drawLine(ctx, Math.max(0,canvas.x2px(keys[keys.length-1])),