diff --git a/qml/AppMenuBar.qml b/qml/AppMenuBar.qml index e8de9e8..71373b6 100644 --- a/qml/AppMenuBar.qml +++ b/qml/AppMenuBar.qml @@ -82,6 +82,9 @@ MenuBar { } Menu { title: qsTr("&Help") - Action { text: qsTr("&About") } + Action { + text: qsTr("&About") + icon.name: 'about' + } } } diff --git a/qml/ComboBoxSetting.qml b/qml/ComboBoxSetting.qml index 33c452c..1a8097b 100644 --- a/qml/ComboBoxSetting.qml +++ b/qml/ComboBoxSetting.qml @@ -31,12 +31,26 @@ Item { property alias editable: combox.editable property alias editText: combox.editText property alias currentIndex: combox.currentIndex + property string icon: "" + function find(elementName) { return combox.find(elementName) } + Icon { + id: iconLabel + anchors.top: parent.top + anchors.topMargin: icon == "" ? 0 : 3 + source: control.visible ? control.icon : "" + width: height + height: icon == "" && visible ? 0 : 24 + color: sysPalette.windowText + } + Label { id: labelItem + anchors.left: iconLabel.right + anchors.leftMargin: icon == "" ? 0 : 5 height: 30 anchors.top: parent.top verticalAlignment: TextInput.AlignVCenter @@ -48,7 +62,7 @@ Item { height: 30 anchors.left: labelItem.right anchors.leftMargin: 5 - width: control.width - labelItem.width - 5 + width: control.width - labelItem.width - iconLabel.width - 10 onActivated: function(newIndex) { control.activated(newIndex) } diff --git a/qml/ListSetting.qml b/qml/ListSetting.qml index 3a9dd35..d76bedb 100644 --- a/qml/ListSetting.qml +++ b/qml/ListSetting.qml @@ -8,6 +8,7 @@ Column { signal changed() property string label: '' + property string icon: '' property bool dictionaryMode: false property string keyType: "string" property string valueType: "string" @@ -20,12 +21,25 @@ Column { property alias model: repeater.model + Row { + height: 30 + width: parent.width; + Icon { + id: iconLabel + anchors.top: parent.top + anchors.topMargin: icon == "" ? 0 : 3 + source: control.visible ? control.icon : "" + width: height + height: icon == "" || !visible ? 0 : 24 + color: sysPalette.windowText + } Label { id: labelItem height: 30 verticalAlignment: TextInput.AlignVCenter text: control.label +": " } + } Repeater { id: repeater diff --git a/qml/LogGraphCanvas.qml b/qml/LogGraphCanvas.qml index 2bf8b45..fadbde3 100644 --- a/qml/LogGraphCanvas.qml +++ b/qml/LogGraphCanvas.qml @@ -222,7 +222,7 @@ Canvas { var progPerc = dashPxSize/distance ctx.beginPath(); ctx.moveTo(x1, y1); - for(var i = progPerc/2; i < 1; i += progPerc) { + for(var i = 0; i < 1; i += progPerc) { ctx.lineTo(x1-(x1-x2)*i, y1-(y1-y2)*i) ctx.moveTo(x1-(x1-x2)*(i+progPerc/2), y1-(y1-y2)*(i+progPerc/2)) } diff --git a/qml/ObjectLists.qml b/qml/ObjectLists.qml index 4edc0ab..cb5c0db 100644 --- a/qml/ObjectLists.qml +++ b/qml/ObjectLists.qml @@ -197,6 +197,7 @@ ListView { id: nameProperty height: 30 label: "Name" + icon: "icons/settings/custom/label.svg" min: 1 width: dlgProperties.width defValue: objEditor.obj.name @@ -222,6 +223,7 @@ ListView { width: dlgProperties.width label: "Label content" model: ["null", "name", "name + value"] + icon: "icons/settings/custom/label.svg" currentIndex: model.indexOf(objEditor.obj.labelContent) onActivated: function(newIndex) { Objects.currentObjects[objEditor.objType][objEditor.objIndex].labelContent = model[newIndex] @@ -255,6 +257,7 @@ ListView { height: visible ? 30 : 0 width: parent.width label: parent.label + icon: `icons/settings/custom/${parent.label}.svg` isDouble: modelData[1] == 'number' visible: paramTypeIn(modelData[1], ['Expression', 'Domain', 'string', 'number']) defValue: visible ? { @@ -281,6 +284,7 @@ ListView { height: visible ? 20 : 0 width: parent.width text: parent.label + icon: visible ? `icons/settings/custom/${parent.label}.svg` : '' checked: visible ? objEditor.obj[modelData[0]] : false onClicked: { @@ -295,6 +299,7 @@ ListView { width: dlgProperties.width height: visible ? 30 : 0 label: parent.label + icon: `icons/settings/custom/${parent.label}.svg` // True to select an object of type, false for enums. property bool selectObjMode: paramTypeIn(modelData[1], ['ObjectType']) model: visible ? @@ -331,6 +336,7 @@ ListView { visible: paramTypeIn(modelData[1], ['List', 'Dict']) label: parent.label + //icon: `icons/settings/custom/${parent.label}.svg` dictionaryMode: paramTypeIn(modelData[1], ['Dict']) keyType: dictionaryMode ? modelData[1].keyType : 'string' valueType: visible ? modelData[1].valueType : 'string' diff --git a/qml/Settings.qml b/qml/Settings.qml index 4a540b1..358f2ab 100644 --- a/qml/Settings.qml +++ b/qml/Settings.qml @@ -76,6 +76,7 @@ ScrollView { settings.changed() } } + TextSetting { id: zoomY height: 30 @@ -88,6 +89,7 @@ ScrollView { settings.changed() } } + // Positioning the graph TextSetting { id: minX @@ -95,6 +97,7 @@ ScrollView { isDouble: true min: -Infinity label: "Min X" + icon: "icons/settings/xmin.svg" width: settings.settingWidth defValue: settings.xmin onChanged: function(newValue) { @@ -102,11 +105,13 @@ ScrollView { settings.changed() } } + TextSetting { id: maxY height: 30 isDouble: true label: "Max Y" + icon: "icons/settings/ymax.svg" width: settings.settingWidth defValue: settings.ymax onChanged: function(newValue) { @@ -114,10 +119,12 @@ ScrollView { settings.changed() } } + TextSetting { id: yAxisStep height: 30 label: "Y Axis Step" + icon: "icons/settings/yaxisstep.svg" width: settings.settingWidth defValue: settings.yaxisstep onChanged: function(newValue) { @@ -130,6 +137,7 @@ ScrollView { id: xAxisStep height: 30 label: "X Axis Step" + icon: "icons/settings/xaxisstep.svg" width: settings.settingWidth defValue: settings.xaxisstep visible: !settings.logscalex @@ -144,6 +152,7 @@ ScrollView { height: 30 width: settings.settingWidth label: 'X Label' + icon: "icons/settings/xlabel.svg" model: ListModel { ListElement { text: "" } ListElement { text: "x" } @@ -169,6 +178,7 @@ ScrollView { height: 30 width: settings.settingWidth label: 'Y Label' + icon: "icons/settings/ylabel.svg" model: ListModel { ListElement { text: "" } ListElement { text: "y" } diff --git a/qml/TextSetting.qml b/qml/TextSetting.qml index 299e53d..0e7eccd 100644 --- a/qml/TextSetting.qml +++ b/qml/TextSetting.qml @@ -30,10 +30,23 @@ Item { property double min: -1 property string label property string defValue - + property string icon: "" + + Icon { + id: iconLabel + anchors.top: parent.top + anchors.topMargin: icon == "" ? 0 : 3 + source: control.visible ? control.icon : "" + width: height + height: icon == "" || !visible ? 0 : 24 + color: sysPalette.windowText + } + Label { id: labelItem - height: 30 + anchors.left: iconLabel.right + anchors.leftMargin: icon == "" ? 0 : 5 + height: parent.height anchors.top: parent.top verticalAlignment: TextInput.AlignVCenter //color: sysPalette.windowText @@ -46,8 +59,8 @@ Item { anchors.top: parent.top anchors.left: labelItem.right anchors.leftMargin: 5 - width: control.width - labelItem.width - 5 - height: 30 + width: control.width - labelItem.width - iconLabel.width - 10 + height: parent.height verticalAlignment: TextInput.AlignVCenter horizontalAlignment: TextInput.AlignHCenter color: sysPalette.windowText diff --git a/qml/icons/Function.svg b/qml/icons/Function.svg index 458e1bb..70d533c 100644 --- a/qml/icons/Function.svg +++ b/qml/icons/Function.svg @@ -15,7 +15,7 @@ sodipodi:docname="Function.svg" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + id="defs833" /> + id="grid1403" /> + id="metadata10"> @@ -48,24 +48,63 @@ + 2021 + + + Ad5001 + + + + + (C) Ad5001 2021 - Licensed under CC4.0-BY-NC-SA + + + + + + + + + + - f(x) + + + + + diff --git a/qml/icons/Gain Bode.svg b/qml/icons/Gain Bode.svg index 9057757..3b7bd2e 100644 --- a/qml/icons/Gain Bode.svg +++ b/qml/icons/Gain Bode.svg @@ -23,9 +23,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="22.4" - inkscape:cx="22.985246" - inkscape:cy="9.8906279" + inkscape:zoom="15.839192" + inkscape:cx="15.763196" + inkscape:cy="7.8365971" inkscape:document-units="px" inkscape:current-layer="layer1" inkscape:document-rotation="0" @@ -58,17 +58,13 @@ inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1"> - + y="17" /> ω - + + diff --git a/qml/icons/Phase Bode.svg b/qml/icons/Phase Bode.svg index d87ab30..8ff3422 100644 --- a/qml/icons/Phase Bode.svg +++ b/qml/icons/Phase Bode.svg @@ -56,32 +56,23 @@ inkscape:groupmode="layer" id="layer1"> - - + style="fill:#000000;stroke-width:1.22474" + d="m 15,2 v 14 h 2 V 4 h 7 V 2 Z" + sodipodi:nodetypes="ccccccc" /> + r="4" /> + d="m 9.979376,18.120606 a 3.5,3.5 0 0 1 -3.06333,3.854578 3.5,3.5 0 0 1 -3.8866522,-3.022533 3.5,3.5 0 0 1 2.9814002,-3.918293 3.5,3.5 0 0 1 3.9495,2.939936" /> + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + r="3" /> diff --git a/qml/icons/Somme gains Bode.svg b/qml/icons/Somme gains Bode.svg index b614770..d4394bd 100644 --- a/qml/icons/Somme gains Bode.svg +++ b/qml/icons/Somme gains Bode.svg @@ -23,9 +23,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="22.4" - inkscape:cx="22.985246" - inkscape:cy="9.8906279" + inkscape:zoom="63.356768" + inkscape:cx="15.947723" + inkscape:cy="5.6917309" inkscape:document-units="px" inkscape:current-layer="layer1" inkscape:document-rotation="0" @@ -59,35 +59,38 @@ inkscape:groupmode="layer" id="layer1"> + id="rect838" + style="fill:#000000;fill-rule:evenodd;stroke-width:2" + d="M 2,2 H 8 V 3 H 4 L 7,6 4,9 h 4 v 1 H 2 V 9 L 5,6 2,3 Z" + sodipodi:nodetypes="ccccccccccccc" /> - ΣG - + y="17" /> + + + + + diff --git a/qml/icons/Somme gains Bode2.svg b/qml/icons/Somme gains Bode2.svg new file mode 100644 index 0000000..b614770 --- /dev/null +++ b/qml/icons/Somme gains Bode2.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + ΣG + + + diff --git a/qml/icons/X Cursor.svg b/qml/icons/X Cursor.svg index e6fe6d7..58b5aaf 100644 --- a/qml/icons/X Cursor.svg +++ b/qml/icons/X Cursor.svg @@ -23,9 +23,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="15.839192" - inkscape:cx="21.452629" - inkscape:cy="4.4190861" + inkscape:zoom="22.4" + inkscape:cx="19.545462" + inkscape:cy="13.163586" inkscape:document-units="px" inkscape:current-layer="layer1" inkscape:document-rotation="0" @@ -60,15 +60,9 @@ id="layer1"> - - + style="font-style:normal;font-weight:normal;font-size:17.3373px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00023" /> + + diff --git a/qml/icons/settings/custom/Definition Domain.svg b/qml/icons/settings/custom/Definition Domain.svg new file mode 100644 index 0000000..6c1db71 --- /dev/null +++ b/qml/icons/settings/custom/Definition Domain.svg @@ -0,0 +1,94 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/qml/icons/settings/custom/Destination Domain.svg b/qml/icons/settings/custom/Destination Domain.svg new file mode 100644 index 0000000..3a64722 --- /dev/null +++ b/qml/icons/settings/custom/Destination Domain.svg @@ -0,0 +1,94 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/qml/icons/settings/custom/Display Mode.svg b/qml/icons/settings/custom/Display Mode.svg new file mode 120000 index 0000000..8d67d47 --- /dev/null +++ b/qml/icons/settings/custom/Display Mode.svg @@ -0,0 +1 @@ +appearance.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/Display Style.svg b/qml/icons/settings/custom/Display Style.svg new file mode 120000 index 0000000..8d67d47 --- /dev/null +++ b/qml/icons/settings/custom/Display Style.svg @@ -0,0 +1 @@ +appearance.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/Expression.svg b/qml/icons/settings/custom/Expression.svg new file mode 100644 index 0000000..9d71858 --- /dev/null +++ b/qml/icons/settings/custom/Expression.svg @@ -0,0 +1,95 @@ + + + + + + + + + + image/svg+xml + + + 2021 + + + Ad5001 + + + + + (C) Ad5001 2021 - Licensed under CC4.0-BY-NC-SA + + + + + + + + + + + + + + + + + + diff --git a/qml/icons/settings/custom/Gain.svg b/qml/icons/settings/custom/Gain.svg new file mode 100644 index 0000000..908a660 --- /dev/null +++ b/qml/icons/settings/custom/Gain.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/qml/icons/settings/custom/Label Position.svg b/qml/icons/settings/custom/Label Position.svg new file mode 120000 index 0000000..dfe8266 --- /dev/null +++ b/qml/icons/settings/custom/Label Position.svg @@ -0,0 +1 @@ +arrow.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/Label X.svg b/qml/icons/settings/custom/Label X.svg new file mode 120000 index 0000000..e890fec --- /dev/null +++ b/qml/icons/settings/custom/Label X.svg @@ -0,0 +1 @@ +position.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/Pass.svg b/qml/icons/settings/custom/Pass.svg new file mode 100644 index 0000000..cf4900b --- /dev/null +++ b/qml/icons/settings/custom/Pass.svg @@ -0,0 +1,64 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/qml/icons/settings/custom/Phase.svg b/qml/icons/settings/custom/Phase.svg new file mode 120000 index 0000000..0e9d919 --- /dev/null +++ b/qml/icons/settings/custom/Phase.svg @@ -0,0 +1 @@ +angle.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/Point Style.svg b/qml/icons/settings/custom/Point Style.svg new file mode 120000 index 0000000..8d67d47 --- /dev/null +++ b/qml/icons/settings/custom/Point Style.svg @@ -0,0 +1 @@ +appearance.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/Rounding.svg b/qml/icons/settings/custom/Rounding.svg new file mode 100644 index 0000000..6d09c60 --- /dev/null +++ b/qml/icons/settings/custom/Rounding.svg @@ -0,0 +1,69 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/qml/icons/settings/custom/Target Element.svg b/qml/icons/settings/custom/Target Element.svg new file mode 120000 index 0000000..eabf591 --- /dev/null +++ b/qml/icons/settings/custom/Target Element.svg @@ -0,0 +1 @@ +target.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/Target Value Position.svg b/qml/icons/settings/custom/Target Value Position.svg new file mode 120000 index 0000000..e890fec --- /dev/null +++ b/qml/icons/settings/custom/Target Value Position.svg @@ -0,0 +1 @@ +position.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/Unit.svg b/qml/icons/settings/custom/Unit.svg new file mode 120000 index 0000000..0e9d919 --- /dev/null +++ b/qml/icons/settings/custom/Unit.svg @@ -0,0 +1 @@ +angle.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/X.svg b/qml/icons/settings/custom/X.svg new file mode 120000 index 0000000..e890fec --- /dev/null +++ b/qml/icons/settings/custom/X.svg @@ -0,0 +1 @@ +position.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/Y.svg b/qml/icons/settings/custom/Y.svg new file mode 120000 index 0000000..e890fec --- /dev/null +++ b/qml/icons/settings/custom/Y.svg @@ -0,0 +1 @@ +position.svg \ No newline at end of file diff --git a/qml/icons/settings/custom/angle.svg b/qml/icons/settings/custom/angle.svg new file mode 100644 index 0000000..8c558a7 --- /dev/null +++ b/qml/icons/settings/custom/angle.svg @@ -0,0 +1,64 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/qml/icons/settings/custom/appearance.svg b/qml/icons/settings/custom/appearance.svg new file mode 100644 index 0000000..f729a22 --- /dev/null +++ b/qml/icons/settings/custom/appearance.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/qml/icons/settings/custom/arrow.svg b/qml/icons/settings/custom/arrow.svg new file mode 100644 index 0000000..626814d --- /dev/null +++ b/qml/icons/settings/custom/arrow.svg @@ -0,0 +1,64 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/qml/icons/settings/custom/label.svg b/qml/icons/settings/custom/label.svg new file mode 100644 index 0000000..66b46d2 --- /dev/null +++ b/qml/icons/settings/custom/label.svg @@ -0,0 +1,70 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/qml/icons/settings/custom/position.svg b/qml/icons/settings/custom/position.svg new file mode 100644 index 0000000..c324537 --- /dev/null +++ b/qml/icons/settings/custom/position.svg @@ -0,0 +1,63 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/qml/icons/settings/custom/target.svg b/qml/icons/settings/custom/target.svg new file mode 100644 index 0000000..9e32ab0 --- /dev/null +++ b/qml/icons/settings/custom/target.svg @@ -0,0 +1,64 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/qml/icons/settings/custom/ω₀.svg b/qml/icons/settings/custom/ω₀.svg new file mode 120000 index 0000000..0e9d919 --- /dev/null +++ b/qml/icons/settings/custom/ω₀.svg @@ -0,0 +1 @@ +angle.svg \ No newline at end of file diff --git a/qml/icons/settings/xaxisstep.svg b/qml/icons/settings/xaxisstep.svg new file mode 100644 index 0000000..048174a --- /dev/null +++ b/qml/icons/settings/xaxisstep.svg @@ -0,0 +1,94 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/qml/icons/settings/xlabel.svg b/qml/icons/settings/xlabel.svg new file mode 100644 index 0000000..99cf703 --- /dev/null +++ b/qml/icons/settings/xlabel.svg @@ -0,0 +1,78 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/qml/icons/settings/xmin.svg b/qml/icons/settings/xmin.svg new file mode 100644 index 0000000..f3008f3 --- /dev/null +++ b/qml/icons/settings/xmin.svg @@ -0,0 +1,80 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/qml/icons/settings/yaxisstep.svg b/qml/icons/settings/yaxisstep.svg new file mode 100644 index 0000000..c97be2d --- /dev/null +++ b/qml/icons/settings/yaxisstep.svg @@ -0,0 +1,94 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/qml/icons/settings/ylabel.svg b/qml/icons/settings/ylabel.svg new file mode 100644 index 0000000..bd2981a --- /dev/null +++ b/qml/icons/settings/ylabel.svg @@ -0,0 +1,78 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/qml/icons/settings/ymax.svg b/qml/icons/settings/ymax.svg new file mode 100644 index 0000000..64fcd90 --- /dev/null +++ b/qml/icons/settings/ymax.svg @@ -0,0 +1,81 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/qml/js/objects.js b/qml/js/objects.js index 321586b..f5d9c24 100644 --- a/qml/js/objects.js +++ b/qml/js/objects.js @@ -941,7 +941,7 @@ class CursorX extends DrawableObject { approx = approx.toPrecision(this.rounding + Math.round(approx).toString().length) } return `${t.name}(${this.name}) = ${t.simplify(this.x.toEditableString())}` + - (this.approximate ? ' ≃ ' + approx : '') + (this.approximate ? ' ≈ ' + approx : '') } getTargetElement() {