[-]
[+]
|
Changed |
_service:tar_git:harbour-solver.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-solver.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,7 +2,7 @@
<service name="tar_git">
<param name="url">https://github.com/poetaster/Solver.git</param>
<param name="branch">main</param>
- <param name="revision">0.4.0</param>
+ <param name="revision">0.4.1</param>
<param name="debian">N</param>
<param name="dumb">N</param>
</service>
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-solver-0.4.1.tar.bz2/Solver.pro
^
|
@@ -28,6 +28,7 @@
qml/pages/Solver.qml \
qml/pages/DejaVuSansMono.ttf \
qml/js/strorage.js \
+ qml/js/util.js \
rpm/harbour-solver.spec \
rpm/harbour-solver.changes \
harbour-solver.desktop \
@@ -47,3 +48,6 @@
#INSTALLS += libs
SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
+
+DISTFILES += \
+ qml/js/util.js
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-solver-0.4.1.tar.bz2/Solver.pro.user
^
|
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.15.2, 2023-06-19T08:13:26. -->
+<!-- Written by QtCreator 4.15.2, 2023-07-13T17:46:44. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
@@ -8,7 +8,7 @@
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
- <value type="int">2</value>
+ <value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
@@ -93,7 +93,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">SailfishOS-4.5.0.18-aarch64 (in Sailfish SDK Build Engine)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">SailfishOS-4.5.0.18-aarch64.default</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
- <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">1</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
@@ -433,7 +433,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">SailfishOS-4.5.0.18-armv7hl.default</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">1</value>
- <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">-1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="bool" key="MerBuildConfiguration.SignPackages">false</value>
@@ -680,87 +680,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRSyncDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">3</value>
- <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
- <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
- <valuelist type="QVariantList" key="Analyzer.Perf.Events">
- <value type="QString">cpu-cycles</value>
- </valuelist>
- <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
- <value type="int" key="Analyzer.Perf.Frequency">250</value>
- <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
- <value type="QString">-e</value>
- <value type="QString">cpu-cycles</value>
- <value type="QString">--call-graph</value>
- <value type="QString">dwarf,4096</value>
- <value type="QString">-F</value>
- <value type="QString">250</value>
- </valuelist>
- <value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
- <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
- <value type="int" key="Analyzer.Perf.StackSize">4096</value>
- <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
- <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
- <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
- <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
- <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
- <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
- <value type="QString" key="Analyzer.Valgrind.Callgrind.Arguments"></value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
- <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
- <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
- <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
- <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
- <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
- <value type="QString" key="Analyzer.Valgrind.Memcheck.Arguments"></value>
- <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
- <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
- <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
- <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
- <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
- <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
- <value type="QString" key="Analyzer.Valgrind.ValgrindArguments"></value>
- <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
- <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
- <value type="int">0</value>
- <value type="int">1</value>
- <value type="int">2</value>
- <value type="int">3</value>
- <value type="int">4</value>
- <value type="int">5</value>
- <value type="int">6</value>
- <value type="int">7</value>
- <value type="int">8</value>
- <value type="int">9</value>
- <value type="int">10</value>
- <value type="int">11</value>
- <value type="int">12</value>
- <value type="int">13</value>
- <value type="int">14</value>
- </valuelist>
- <valuelist type="QVariantList" key="CustomOutputParsers"/>
- <value type="bool" key="MerRunConfiguration.DebugBypassOpenSslArmCapEnabled">true</value>
- <value type="QString" key="MerRunConfiguration.QmlLiveBenchWorkspace">/home/mwa/src/sailfish/Solver</value>
- <value type="bool" key="MerRunConfiguration.QmlLiveEnabled">false</value>
- <value type="int" key="MerRunConfiguration.QmlLiveIpcPort">-1</value>
- <value type="int" key="MerRunConfiguration.QmlLiveOptions">3</value>
- <value type="QString" key="MerRunConfiguration.QmlLiveTargetWorkspace"></value>
- <value type="int" key="PE.EnvironmentAspect.Base">1</value>
- <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">QML Scene</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerQmlRunConfiguration</value>
- <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
- <value type="int" key="RemoteLinux.EnvironmentAspect.Version">1</value>
- <value type="QString" key="RunConfiguration.Arguments">harbour-solver</value>
- <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
- <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
- <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
- <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
- </valuemap>
- <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">0</value>
</valuemap>
</data>
<data>
@@ -772,7 +692,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">SailfishOS-4.5.0.18-i486.default</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">1</value>
- <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">-1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="bool" key="MerBuildConfiguration.SignPackages">false</value>
@@ -1019,87 +939,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRSyncDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">3</value>
- <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
- <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
- <valuelist type="QVariantList" key="Analyzer.Perf.Events">
- <value type="QString">cpu-cycles</value>
- </valuelist>
- <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
- <value type="int" key="Analyzer.Perf.Frequency">250</value>
- <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
- <value type="QString">-e</value>
- <value type="QString">cpu-cycles</value>
- <value type="QString">--call-graph</value>
- <value type="QString">dwarf,4096</value>
- <value type="QString">-F</value>
- <value type="QString">250</value>
- </valuelist>
- <value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
- <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
- <value type="int" key="Analyzer.Perf.StackSize">4096</value>
- <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
- <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
- <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
- <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
- <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
- <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
- <value type="QString" key="Analyzer.Valgrind.Callgrind.Arguments"></value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
- <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
- <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
- <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
- <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
- <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
- <value type="QString" key="Analyzer.Valgrind.Memcheck.Arguments"></value>
- <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
- <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
- <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
- <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
- <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
- <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
- <value type="QString" key="Analyzer.Valgrind.ValgrindArguments"></value>
- <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
- <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
- <value type="int">0</value>
- <value type="int">1</value>
- <value type="int">2</value>
- <value type="int">3</value>
- <value type="int">4</value>
- <value type="int">5</value>
- <value type="int">6</value>
- <value type="int">7</value>
- <value type="int">8</value>
- <value type="int">9</value>
- <value type="int">10</value>
- <value type="int">11</value>
- <value type="int">12</value>
- <value type="int">13</value>
- <value type="int">14</value>
- </valuelist>
- <valuelist type="QVariantList" key="CustomOutputParsers"/>
- <value type="bool" key="MerRunConfiguration.DebugBypassOpenSslArmCapEnabled">true</value>
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-solver-0.4.1.tar.bz2/qml/harbour-solver.qml
^
|
@@ -32,13 +32,12 @@
property string showEquator: 'true'
property var notificationObj
property var settingsObj
+ property string welcome: ''
notificationObj: pageStack.currentPage.notification
initialPage: Component { Integral{} }
cover: Qt.resolvedUrl("cover/CoverPage.qml")
-
-
Python {
id: py
@@ -52,10 +51,11 @@
// Asynchronous module importing
importModule('solver', function() {
- resultText='Python ' + evaluate('solver.versionPython') + '.\n'
- resultText+='SymPy ' + evaluate('solver.versionSymPy') + '\n'
- timerInfo = evaluate('("loaded in %fs" % solver.loadingtimeSymPy)')
- notificationObj.notify(resultText + timerInfo)
+ welcome ='Python ' + evaluate('solver.versionPython') + '.\n'
+ welcome +='SymPy ' + evaluate('solver.versionSymPy') + '\n'
+ welcome += evaluate('("loaded in %fs" % solver.loadingtimeSymPy)')
+ // This is just anoying since it's slower to show than eval!
+ notificationObj.notify(welcome)
});
}
// shared via timerInfo with cover
@@ -64,7 +64,7 @@
}
function engineLoadedHandler(){
- notificationObj.notify("Symbolic engine loaded");
+ //notificationObj.notify(welcome);
root.engineLoaded = true;
//changeTrigonometricUnit(settingsObj.angleUnit);
|
[-]
[+]
|
Added |
_service:tar_git:harbour-solver-0.4.1.tar.bz2/qml/js/util.js
^
|
@@ -0,0 +1,20 @@
+.pragma library
+
+/* strip var from the result formula to present */
+function filterVariables(text) {
+ var re0 = /·/g;
+ var re1 = /π/g;
+ var re2 = /√/g;
+ var re3 = /φ/g;
+ // log is ln natural e in exprtk
+ var re6 = /ln/g;
+ //var re7 = /^/g;
+ var newtxt = text.replace(re0, "*")
+ newtxt = newtxt.replace(re1, "pi")
+ newtxt = newtxt.replace(re2, "sqrt")
+ newtxt = newtxt.replace(re3, "phi")
+ newtxt = newtxt.replace(re6, "log")
+ //newtxt = newtxt.replace(re7, "**")
+ //console.log(newtxt)
+ return newtxt
+}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-solver-0.4.1.tar.bz2/qml/pages/Derivative.qml
^
|
@@ -6,13 +6,17 @@
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.5
import "../components"
+import "../js/util.js" as Util
Page {
id: page
allowedOrientations: derivativeScreenOrientation
function calculateResultDerivative() {
result_TextArea.text = 'Calculating ...'
- py.call('solver.calculate_Derivative', [expression_TextField.text,var1_TextField.text,numVar1_TextField.text,var2_TextField.text,numVar2_TextField.text,var3_TextField.text,numVar3_TextField.text,numColumns,showDerivative,showTime,numerApprox,numDigText,simplifyResult_index,outputTypeResult_index], function(result) {
+
+ var expression = Util.filterVariables(expression_TextField.text)
+
+ py.call('solver.calculate_Derivative', [expression,var1_TextField.text,numVar1_TextField.text,var2_TextField.text,numVar2_TextField.text,var3_TextField.text,numVar3_TextField.text,numColumns,showDerivative,showTime,numerApprox,numDigText,simplifyResult_index,outputTypeResult_index], function(result) {
result_TextArea.text = result;
})
}
@@ -126,8 +130,8 @@
width: parent.width
inputMethodHints: Qt.ImhNoAutoUppercase
label: qsTr("Expression")
- placeholderText: "sqrt(x/(x**3+1))"
- text: "x * sin(x**2) + 1"
+ placeholderText: "sqrt(x/(x^3+1))"
+ text: "x * sin(x^2) + 1"
EnterKey.enabled: text.length > 0
EnterKey.iconSource: "image://theme/icon-m-enter-next"
EnterKey.onClicked: var1_TextField.focus = true
@@ -219,7 +223,10 @@
id: copy_Button
width: parent.width * 1/3 - Theme.paddingLarge
text: qsTr("Copy")
- onClicked: Clipboard.text = result_TextArea.text
+ onClicked: {
+ Clipboard.text = result_TextArea.text
+ notificationObj.notify("Copied!")
+ }
}
Button {
anchors.leftMargin: Theme.paddingLarge
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-solver-0.4.1.tar.bz2/qml/pages/Integral.qml
^
|
@@ -6,12 +6,17 @@
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.2
import "../components"
+import "../js/util.js" as Util
+
Page {
id: page
function calculateResultIntegral() {
result_TextArea.text = 'Calculating ...'
+
+ var integrand = Util.filterVariables(integrand_TextField.text)
+
py.call('solver.calculate_Integral', [
- integrand_TextField.text,diff1_TextField.text,diff2_TextField.text,diff3_TextField.text,
+ integrand,diff1_TextField.text,diff2_TextField.text,diff3_TextField.text,
limSup1_TextField.text,limSup2_TextField.text,limSup3_TextField.text,
limInf1_TextField.text,limInf2_TextField.text,limInf3_TextField.text,
integralType_index,numDimensions_index+1,numColumns,
@@ -64,7 +69,7 @@
Component.onCompleted: {
cName = "Integral"
- result_TextArea.text = resultText
+ //result_TextArea.text = resultText
}
VerticalScrollDecorator { flickable: container }
@@ -106,7 +111,7 @@
font.family: dejavusansmono.name
font.pixelSize: Theme.fontSizeExtraSmall
color:'lightblue'
- placeholderText: "Integral calculation result"
+ //placeholderText: "Integral calculation result"
text : 'Loading Python and SymPy ...'
Component.onCompleted: {
// _editor.textFormat = Text.RichText;
@@ -118,7 +123,7 @@
onTextChanged: {
if (debug) console.log(implicitHeight)
if (debug) console.log(implicitWidth)
- resultText = scaleText(text)
+ resultText = scaleText(result_TextArea.text)
//height = implicitHeight
}
/* for the cover we scale font px values */
@@ -379,7 +384,11 @@
id: copy_Button
width: parent.width * 1/3 - Theme.paddingLarge
text: qsTr("Copy")
- onClicked: Clipboard.text = result_TextArea.text
+ onClicked: {
+ Clipboard.text = result_TextArea.text
+ notificationObj.notify("Copied!")
+ }
+
}
Button {
id: calculate_Button
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-solver-0.4.1.tar.bz2/qml/pages/Limit.qml
^
|
@@ -4,6 +4,7 @@
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.2
import "../components"
+import "../js/util.js" as Util
Page {
id: page
@@ -12,7 +13,8 @@
property bool debug: false
function calculateResultLimit() {
result_TextArea.text = 'Calculating limit...'
- py.call('solver.calculate_Limit', [expression_TextField.text,variable_TextField.text,point_TextField.text,direction_ComboBox.value,orientation!==Orientation.Landscape,showLimit,showTime,numerApprox,numDigText,simplifyResult_index,outputTypeResult_index], function(result) {
+ var expression = Util.filterVariables(expression_TextField.text)
+ py.call('solver.calculate_Limit', [expression,variable_TextField.text,point_TextField.text,direction_ComboBox.value,orientation!==Orientation.Landscape,showLimit,showTime,numerApprox,numDigText,simplifyResult_index,outputTypeResult_index], function(result) {
result_TextArea.text = result;
})
}
@@ -188,7 +190,10 @@
id: copy_Button
width: parent.width * 1/3 - Theme.paddingLarge
text: qsTr("Copy")
- onClicked: Clipboard.text = result_TextArea.text
+ onClicked: {
+ Clipboard.text = result_TextArea.text
+ notificationObj.notify("Copied!")
+ }
}
Button {
id: calculate_Button
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-solver-0.4.1.tar.bz2/qml/pages/Solver.qml
^
|
@@ -6,6 +6,8 @@
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.5
import "../components"
+import "../js/util.js" as Util
+
Page {
id: page
@@ -15,7 +17,9 @@
function calculateResultSolver() {
result_TextArea.text = 'Calculating ...'
- py.call('solver.calculate_Solver', [expressionLeft.text,expressionRight.text,var1_TextField.text,var2_TextField.text,var3_TextField.text,numColumns,showEquator,showTime,numerApprox,numDigText,simplifyResult_index,outputTypeResult_index], function(result) {
+ var expressionL = Util.filterVariables(expressionLeft.text)
+ var expressionR = Util.filterVariables(expressionRight.text)
+ py.call('solver.calculate_Solver', [expressionL,expressionR,var1_TextField.text,var2_TextField.text,var3_TextField.text,numColumns,showEquator,showTime,numerApprox,numDigText,simplifyResult_index,outputTypeResult_index], function(result) {
result_TextArea.text = result;
})
}
@@ -138,7 +142,7 @@
inputMethodHints: Qt.ImhNoAutoUppercase
label: qsTr("Exp. Left")
placeholderText: "6/(5-sqrt(x))"
- text: "a*x**2 + b*x + c"
+ text: "a*x^2 + b*x + c"
EnterKey.enabled: text.length > 0
EnterKey.iconSource: "image://theme/icon-m-enter-next"
EnterKey.onClicked: expressionRight.focus = true
@@ -207,7 +211,10 @@
id: copy_Button
width: parent.width * 1/3 - Theme.paddingLarge
text: qsTr("Copy")
- onClicked: Clipboard.text = result_TextArea.text
+ onClicked: {
+ Clipboard.text = result_TextArea.text
+ notificationObj.notify("Copied!")
+ }
}
Button {
id: calculate_Button
|