aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/desktop-utils/lumina-calculator
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/desktop-utils/lumina-calculator')
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/EqValidator.h39
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_af.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ar.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_az.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bg.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bn.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bs.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ca.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_cs.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_cy.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_da.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_de.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_el.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_en_GB.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_en_ZA.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_es.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_et.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_eu.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fa.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fi.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fr.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fr_CA.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_gl.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_he.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hi.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hr.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hu.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_id.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_is.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_it.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ja.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ka.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ko.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_lt.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_lv.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mk.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mn.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ms.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mt.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nb.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nl.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pa.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pl.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt_BR.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ro.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ru.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sk.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sl.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sr.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sv.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sw.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ta.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_tg.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_th.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_tr.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_uk.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_uz.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_vi.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_CN.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_HK.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_TW.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zu.ts13
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/lumina-calculator.desktop10
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/lumina-calculator.pro95
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/main.cpp26
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/mainUI.cpp339
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/mainUI.h65
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/mainUI.ui676
69 files changed, 2056 insertions, 0 deletions
diff --git a/src-qt5/desktop-utils/lumina-calculator/EqValidator.h b/src-qt5/desktop-utils/lumina-calculator/EqValidator.h
new file mode 100644
index 00000000..8bceb240
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/EqValidator.h
@@ -0,0 +1,39 @@
+//===========================================
+// Lumina Desktop source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#ifndef _LUMINA_CALCULATOR_VALIDATOR_H
+#define _LUMINA_CALCULATOR_VALIDATOR_H
+
+#define VALIDCHARS QString("x*+-/^%eE().0123456789#acosinthqrlog\u03C0")
+#define NOSTARTCHARS QString("x*/^%)eE.")
+#define NOENDCHARS QString("x*/^(eE.#")
+#define NOCHANGE QString("().#")
+
+#include <QValidator>
+#include <QString>
+#include <QDebug>
+
+class EqValidator : public QValidator{
+ Q_OBJECT
+public:
+ EqValidator(QObject *parent = 0) : QValidator(parent){}
+ ~EqValidator(){}
+
+ virtual void fixup(QString &input) const{
+ if(input.isEmpty()){ return; }
+ if( NOSTARTCHARS.contains(input.left(1)) && !NOCHANGE.contains(input.left(1)) ){ input.prepend("1"); }
+ if( NOENDCHARS.contains(input.right(1)) && !NOCHANGE.contains(input.right(1)) ){ input.append("1"); }
+ }
+
+ virtual QValidator::State validate(QString &input, int&pos) const {
+ //qDebug() << "Got validate:" << input << pos;
+ if(pos>0 && !VALIDCHARS.contains(input[pos-1])){ return QValidator::Invalid; }
+ if(!input.isEmpty() && NOSTARTCHARS.contains(input.left(1))){ return QValidator::Intermediate; }
+ if(!input.isEmpty() && NOENDCHARS.contains(input.right(1))){ return QValidator::Intermediate; }
+ return QValidator::Acceptable;
+ }
+};
+#endif
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_af.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_af.ts
new file mode 100644
index 00000000..54ad3351
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_af.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="af_ZA">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ar.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ar.ts
new file mode 100644
index 00000000..5dc7d76b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ar.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ar_EG">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_az.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_az.ts
new file mode 100644
index 00000000..41f9070c
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_az.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="az_AZ">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bg.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bg.ts
new file mode 100644
index 00000000..ab1c6569
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bg.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="bg_BG">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bn.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bn.ts
new file mode 100644
index 00000000..99e0144c
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bn.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="bn_BD">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bs.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bs.ts
new file mode 100644
index 00000000..aa8362ff
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_bs.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="bs_BA">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ca.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ca.ts
new file mode 100644
index 00000000..47d2670e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ca.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ca_ES">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_cs.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_cs.ts
new file mode 100644
index 00000000..dd36fb16
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_cs.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="cs_CZ">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_cy.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_cy.ts
new file mode 100644
index 00000000..80119d58
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_cy.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="cy_GB">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_da.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_da.ts
new file mode 100644
index 00000000..6dc55f8d
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_da.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="da_DK">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_de.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_de.ts
new file mode 100644
index 00000000..6cb82dc3
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_de.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_el.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_el.ts
new file mode 100644
index 00000000..5d62322d
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_el.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="el_GR">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_en_GB.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_en_GB.ts
new file mode 100644
index 00000000..54347b9d
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_en_GB.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en_GB">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_en_ZA.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_en_ZA.ts
new file mode 100644
index 00000000..79dea1ae
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_en_ZA.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en_ZA">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_es.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_es.ts
new file mode 100644
index 00000000..7cf1d5aa
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_es.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="es_ES">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_et.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_et.ts
new file mode 100644
index 00000000..13cdfc55
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_et.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="et_EE">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_eu.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_eu.ts
new file mode 100644
index 00000000..9c77d59c
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_eu.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="eu_ES">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fa.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fa.ts
new file mode 100644
index 00000000..60773570
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fa.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fa_IR">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fi.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fi.ts
new file mode 100644
index 00000000..4e1e8d2e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fi.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fi_FI">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fr.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fr.ts
new file mode 100644
index 00000000..cda0a564
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fr.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fr_FR">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fr_CA.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fr_CA.ts
new file mode 100644
index 00000000..5b35a26f
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fr_CA.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fr_CA">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_gl.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_gl.ts
new file mode 100644
index 00000000..2b09f479
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_gl.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="gl_ES">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_he.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_he.ts
new file mode 100644
index 00000000..376dfcd0
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_he.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="he_IL">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hi.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hi.ts
new file mode 100644
index 00000000..2ab13f9e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hi.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="hi_IN">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hr.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hr.ts
new file mode 100644
index 00000000..d3123f5d
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hr.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="hr_HR">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hu.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hu.ts
new file mode 100644
index 00000000..d7d5c557
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_hu.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="hu_HU">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_id.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_id.ts
new file mode 100644
index 00000000..4700f930
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_id.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="id_ID">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_is.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_is.ts
new file mode 100644
index 00000000..bf773bf3
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_is.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="is_IS">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_it.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_it.ts
new file mode 100644
index 00000000..a3f606be
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_it.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ja.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ja.ts
new file mode 100644
index 00000000..7b367b3a
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ja.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ja_JP">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ka.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ka.ts
new file mode 100644
index 00000000..71f6d604
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ka.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ka_GE">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ko.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ko.ts
new file mode 100644
index 00000000..0fc1b363
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ko.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ko_KR">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_lt.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_lt.ts
new file mode 100644
index 00000000..22cfc2cb
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_lt.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="lt_LT">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_lv.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_lv.ts
new file mode 100644
index 00000000..9ba30a3e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_lv.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="lv_LV">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mk.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mk.ts
new file mode 100644
index 00000000..b275b485
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mk.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="mk_MK">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mn.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mn.ts
new file mode 100644
index 00000000..1018590c
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mn.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="mn_MN">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ms.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ms.ts
new file mode 100644
index 00000000..d9250e01
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ms.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ms_MY">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mt.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mt.ts
new file mode 100644
index 00000000..030a2be0
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_mt.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="mt_MT">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nb.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nb.ts
new file mode 100644
index 00000000..95884832
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nb.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="nb_NO">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nl.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nl.ts
new file mode 100644
index 00000000..8c0c7356
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_nl.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="nl_NL">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pa.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pa.ts
new file mode 100644
index 00000000..f80e33eb
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pa.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="pa_IN">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pl.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pl.ts
new file mode 100644
index 00000000..d531246b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pl.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="pl_PL">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt.ts
new file mode 100644
index 00000000..3c54632b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="pt_BR">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt_BR.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt_BR.ts
new file mode 100644
index 00000000..3c54632b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_pt_BR.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="pt_BR">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ro.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ro.ts
new file mode 100644
index 00000000..e5eb59ba
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ro.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ro_RO">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ru.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ru.ts
new file mode 100644
index 00000000..32c8cf09
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ru.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ru_RU">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sk.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sk.ts
new file mode 100644
index 00000000..417de3c2
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sk.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="sk_SK">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sl.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sl.ts
new file mode 100644
index 00000000..5610607f
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sl.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="sl_SI">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sr.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sr.ts
new file mode 100644
index 00000000..42f515da
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sr.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="sr_RS">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sv.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sv.ts
new file mode 100644
index 00000000..4f3c7637
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sv.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="sv_SE">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sw.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sw.ts
new file mode 100644
index 00000000..c4996e3d
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_sw.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="sw_TZ">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ta.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ta.ts
new file mode 100644
index 00000000..486563b7
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_ta.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ta_IN">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_tg.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_tg.ts
new file mode 100644
index 00000000..dacc95bd
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_tg.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="tg_TJ">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_th.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_th.ts
new file mode 100644
index 00000000..a134fa3e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_th.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="th_TH">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_tr.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_tr.ts
new file mode 100644
index 00000000..d760ab23
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_tr.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="tr_TR">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_uk.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_uk.ts
new file mode 100644
index 00000000..09f55b07
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_uk.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="uk_UA">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_uz.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_uz.ts
new file mode 100644
index 00000000..a09644b2
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_uz.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="uz_UZ">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_vi.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_vi.ts
new file mode 100644
index 00000000..31a14cb7
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_vi.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="vi_VN">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_CN.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_CN.ts
new file mode 100644
index 00000000..2e7e7c71
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_CN.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_CN">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_HK.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_HK.ts
new file mode 100644
index 00000000..1b4e535b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_HK.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_HK">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_TW.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_TW.ts
new file mode 100644
index 00000000..33079ddc
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zh_TW.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_TW">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zu.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zu.ts
new file mode 100644
index 00000000..fc2bf156
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_zu.ts
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zu_ZA">
+<context>
+ <name>mainUI</name>
+ <message>
+ <location filename="../mainUI.ui" line="14"/>
+ <location filename="../mainUI.cpp" line="38"/>
+ <source>Calculator</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src-qt5/desktop-utils/lumina-calculator/lumina-calculator.desktop b/src-qt5/desktop-utils/lumina-calculator/lumina-calculator.desktop
new file mode 100644
index 00000000..8732425a
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/lumina-calculator.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Exec=lumina-calculator
+Icon=accessories-calculator
+Terminal=false
+Type=Application
+StartupNotify=true
+Categories=Utility;
+Name=Calculator
+GenericName=Scientific Calculator for Lumina
+Comment=Perform mathematical calculations
diff --git a/src-qt5/desktop-utils/lumina-calculator/lumina-calculator.pro b/src-qt5/desktop-utils/lumina-calculator/lumina-calculator.pro
new file mode 100644
index 00000000..347a8dfb
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/lumina-calculator.pro
@@ -0,0 +1,95 @@
+include("$${PWD}/../../OS-detect.pri")
+
+QT += core gui widgets
+
+TARGET = lumina-calculator
+target.path = $${L_BINDIR}
+
+#include all the special classes from the Lumina tree
+include(../../core/libLumina/LUtils.pri) #includes LUtils
+include(../../core/libLumina/LuminaXDG.pri)
+#include(../../core/libLumina/LuminaSingleApplication.pri)
+include(../../core/libLumina/LuminaThemes.pri)
+
+HEADERS += mainUI.h \
+ EqValidator.h
+
+SOURCES += main.cpp \
+ mainUI.cpp
+
+FORMS += mainUI.ui
+
+TRANSLATIONS = i18n/l-calc_af.ts \
+ i18n/l-calc_ar.ts \
+ i18n/l-calc_az.ts \
+ i18n/l-calc_bg.ts \
+ i18n/l-calc_bn.ts \
+ i18n/l-calc_bs.ts \
+ i18n/l-calc_ca.ts \
+ i18n/l-calc_cs.ts \
+ i18n/l-calc_cy.ts \
+ i18n/l-calc_da.ts \
+ i18n/l-calc_de.ts \
+ i18n/l-calc_el.ts \
+ i18n/l-calc_en_GB.ts \
+ i18n/l-calc_en_ZA.ts \
+ i18n/l-calc_es.ts \
+ i18n/l-calc_et.ts \
+ i18n/l-calc_eu.ts \
+ i18n/l-calc_fa.ts \
+ i18n/l-calc_fi.ts \
+ i18n/l-calc_fr.ts \
+ i18n/l-calc_fr_CA.ts \
+ i18n/l-calc_gl.ts \
+ i18n/l-calc_he.ts \
+ i18n/l-calc_hi.ts \
+ i18n/l-calc_hr.ts \
+ i18n/l-calc_hu.ts \
+ i18n/l-calc_id.ts \
+ i18n/l-calc_is.ts \
+ i18n/l-calc_it.ts \
+ i18n/l-calc_ja.ts \
+ i18n/l-calc_ka.ts \
+ i18n/l-calc_ko.ts \
+ i18n/l-calc_lt.ts \
+ i18n/l-calc_lv.ts \
+ i18n/l-calc_mk.ts \
+ i18n/l-calc_mn.ts \
+ i18n/l-calc_ms.ts \
+ i18n/l-calc_mt.ts \
+ i18n/l-calc_nb.ts \
+ i18n/l-calc_nl.ts \
+ i18n/l-calc_pa.ts \
+ i18n/l-calc_pl.ts \
+ i18n/l-calc_pt.ts \
+ i18n/l-calc_pt_BR.ts \
+ i18n/l-calc_ro.ts \
+ i18n/l-calc_ru.ts \
+ i18n/l-calc_sk.ts \
+ i18n/l-calc_sl.ts \
+ i18n/l-calc_sr.ts \
+ i18n/l-calc_sv.ts \
+ i18n/l-calc_sw.ts \
+ i18n/l-calc_ta.ts \
+ i18n/l-calc_tg.ts \
+ i18n/l-calc_th.ts \
+ i18n/l-calc_tr.ts \
+ i18n/l-calc_uk.ts \
+ i18n/l-calc_uz.ts \
+ i18n/l-calc_vi.ts \
+ i18n/l-calc_zh_CN.ts \
+ i18n/l-calc_zh_HK.ts \
+ i18n/l-calc_zh_TW.ts \
+ i18n/l-calc_zu.ts
+
+dotrans.path=$${L_SHAREDIR}/lumina-desktop/i18n/
+dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)$${L_SHAREDIR}/lumina-desktop/i18n/
+
+desktop.files=lumina-calculator.desktop
+desktop.path=$${L_SHAREDIR}/applications/
+
+INSTALLS += target desktop
+
+WITH_I18N{
+ INSTALLS += dotrans
+}
diff --git a/src-qt5/desktop-utils/lumina-calculator/main.cpp b/src-qt5/desktop-utils/lumina-calculator/main.cpp
new file mode 100644
index 00000000..222ee8b4
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/main.cpp
@@ -0,0 +1,26 @@
+//===========================================
+// Lumina Desktop source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include <QApplication>
+#include <QDebug>
+
+#include <LuminaThemes.h>
+#include <LUtils.h>
+
+#include "mainUI.h"
+
+int main(int argc, char *argv[]) {
+ LTHEME::LoadCustomEnvSettings();
+ QApplication a(argc, argv);
+ LUtils::LoadTranslation(&a, "l-calc");
+ //Now go ahead and setup the app
+ //LuminaThemeEngine theme(&a);
+ //Now start the window
+ mainUI W;
+ //QObject::connect(&theme, SIGNAL(updateIcons()), &W, SLOT(updateIcons()) );
+ W.show();
+ return a.exec();
+}
diff --git a/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp b/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp
new file mode 100644
index 00000000..057e4ddd
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp
@@ -0,0 +1,339 @@
+//===========================================
+// Lumina Desktop source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "mainUI.h"
+#include "ui_mainUI.h"
+
+#include <QDebug>
+#include <QClipboard>
+#include <QFileDialog>
+#include <QMenu>
+
+#include <LUtils.h>
+#include <LuminaXDG.h>
+#include "EqValidator.h"
+
+#include <math.h>
+#define BADVALUE NAN
+
+#define OPS QString("+-*/x^%")
+
+
+const double PI = (::acos(1.0)+::acos(-1.0));
+
+mainUI::mainUI() : QMainWindow(), ui(new Ui::mainUI()){
+ ui->setupUi(this);
+ advMenu = 0;
+ connect(ui->tool_clear, SIGNAL(clicked()), this, SLOT(clear_calc()) );
+ connect(ui->line_eq, SIGNAL(returnPressed()), this, SLOT(start_calc()) );
+ connect(ui->line_eq, SIGNAL(textEdited(const QString&)), this, SLOT(checkInput(const QString&)) );
+ connect(ui->button_1, SIGNAL (clicked()), this, SLOT (captureButton1()));
+ connect(ui->button_2, SIGNAL (clicked()), this, SLOT (captureButton2()));
+ connect(ui->button_3, SIGNAL (clicked()), this, SLOT (captureButton3()));
+ connect(ui->button_4, SIGNAL (clicked()), this, SLOT (captureButton4()));
+ connect(ui->button_5, SIGNAL (clicked()), this, SLOT (captureButton5()));
+ connect(ui->button_6, SIGNAL (clicked()), this, SLOT (captureButton6()));
+ connect(ui->button_7, SIGNAL (clicked()), this, SLOT (captureButton7()));
+ connect(ui->button_8, SIGNAL (clicked()), this, SLOT (captureButton8()));
+ connect(ui->button_9, SIGNAL (clicked()), this, SLOT (captureButton9()));
+ connect(ui->button_0, SIGNAL (clicked()), this, SLOT (captureButton0()));
+ connect(ui->button_Subtract, SIGNAL (clicked()), this, SLOT (captureButtonSubtract()));
+ connect(ui->button_Add, SIGNAL (clicked()), this, SLOT (captureButtonAdd()));
+ connect(ui->button_Divide, SIGNAL (clicked()), this, SLOT (captureButtonDivide()));
+ connect(ui->button_Multiply, SIGNAL (clicked()), this, SLOT (captureButtonMultiply()));
+ connect(ui->button_Decimal, SIGNAL (clicked()), this, SLOT (captureButtonDecimal()));
+ connect(ui->button_Equal, SIGNAL (clicked()), this, SLOT (start_calc()));
+ connect(ui->list_results, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(insert_history(QListWidgetItem*)) );
+ connect(ui->tool_history_clear, SIGNAL(clicked()), ui->list_results, SLOT(clear()) );
+ connect(ui->tool_history_save, SIGNAL(clicked()), this, SLOT(saveHistory()) );
+ //connect(ui->list_results, SIGNAL(itemRightClicked(QListWidgetItem*)), this, SLOT(copt_to_clipboard(QListWidgetItem*)) );
+ this->setWindowTitle(tr("Calculator"));
+ updateIcons();
+ updateMenus();
+ ui->line_eq->setFocus();
+ ui->line_eq->setValidator(new EqValidator(this) );
+}
+
+mainUI::~mainUI(){
+}
+
+void mainUI::updateIcons(){
+ this->setWindowIcon( LXDG::findIcon("accessories-calculator","") );
+ ui->tool_clear->setIcon( LXDG::findIcon("edit-clear-locationbar-rtl","dialog-cancel") );
+ ui->tool_history_clear->setIcon( LXDG::findIcon("document-close","edit-clear-list") );
+ ui->tool_history_save->setIcon( LXDG::findIcon("document-save-as","edit-copy") );
+ ui->tool_adv->setIcon( LXDG::findIcon("formula","") );
+}
+
+void mainUI::updateMenus(){
+ if(advMenu==0){
+ advMenu = new QMenu(this);
+ ui->tool_adv->setMenu(advMenu);
+ connect(advMenu, SIGNAL(triggered(QAction*)), this, SLOT(advMenuTriggered(QAction*)) );
+ }
+ QAction *tmp = advMenu->addAction( QString(tr("Percentage %1")).arg("\t%") );
+ tmp->setWhatsThis("%");
+ tmp = advMenu->addAction( QString(tr("Power %1")).arg("\t^") );
+ tmp->setWhatsThis("^");
+ tmp = advMenu->addAction( QString(tr("Base-10 Exponential %1")).arg("\tE") );
+ tmp->setWhatsThis("E");
+ tmp = advMenu->addAction( QString(tr("Exponential %1")).arg("\te") );
+ tmp->setWhatsThis("e");
+ tmp = advMenu->addAction( QString(tr("Constant Pi %1")).arg("\t\u03C0") );
+ tmp->setWhatsThis("\u03C0");
+ advMenu->addSeparator();
+ tmp = advMenu->addAction( QString(tr("Square Root %1")).arg("\tsqrt(") );
+ tmp->setWhatsThis("sqrt(");
+ tmp = advMenu->addAction( QString(tr("Logarithm %1")).arg("\tlog(") );
+ tmp->setWhatsThis("log(");
+ tmp = advMenu->addAction( QString(tr("Natural Log %1")).arg("\tln(") );
+ tmp->setWhatsThis("ln(");
+ advMenu->addSeparator();
+ tmp = advMenu->addAction( QString(tr("Sine %1")).arg("\tsin(") );
+ tmp->setWhatsThis("sin(");
+ tmp = advMenu->addAction( QString(tr("Cosine %1")).arg("\tcos(") );
+ tmp->setWhatsThis("cos(");
+ tmp = advMenu->addAction( QString(tr("Tangent %1")).arg("\ttan(") );
+ tmp->setWhatsThis("tan(");
+ advMenu->addSeparator();
+ tmp = advMenu->addAction( QString(tr("Arc Sine %1")).arg("\tasin(") );
+ tmp->setWhatsThis("asin(");
+ tmp = advMenu->addAction( QString(tr("Arc Cosine %1")).arg("\tacos(") );
+ tmp->setWhatsThis("acos(");
+ tmp = advMenu->addAction( QString(tr("Arc Tangent %1")).arg("\tatan(") );
+ tmp->setWhatsThis("atan(");
+ advMenu->addSeparator();
+ tmp = advMenu->addAction( QString(tr("Hyperbolic Sine %1")).arg("\tsinh(") );
+ tmp->setWhatsThis("sinh(");
+ tmp = advMenu->addAction( QString(tr("Hyperbolic Cosine %1")).arg("\tcosh(") );
+ tmp->setWhatsThis("cosh(");
+ tmp = advMenu->addAction( QString(tr("Hyperbolic Tangent %1")).arg("\ttanh(") );
+ tmp->setWhatsThis("tanh(");
+}
+
+void mainUI::start_calc(){
+ if(ui->line_eq->text().isEmpty()){ return; } //nothing to do
+ QString eq = ui->line_eq->text();
+ eq.replace("%","/(100)");
+ double result = strToNumber(eq);
+ if(result!=result){ return; } //bad calculation - NaN's values are special in that they don't equal itself
+ QString res = "[#%1] %2 \t= [ %3 ]";
+ ui->list_results->addItem(res.arg(QString::number(ui->list_results->count()+1), QString::number(result, 'G'), ui->line_eq->text()));
+ ui->list_results->scrollToItem( ui->list_results->item( ui->list_results->count()-1) );
+ ui->line_eq->clear();
+}
+
+void mainUI::clear_calc(){
+ ui->line_eq->clear();
+ ui->line_eq->setFocus();
+}
+
+void mainUI::captureButton1(){ ui->line_eq->insert(ui->button_1->text()); }
+void mainUI::captureButton2(){ ui->line_eq->insert(ui->button_2->text()); }
+void mainUI::captureButton3(){ ui->line_eq->insert(ui->button_3->text()); }
+void mainUI::captureButton4(){ui->line_eq->insert(ui->button_4->text()); }
+void mainUI::captureButton5(){ ui->line_eq->insert(ui->button_5->text()); }
+void mainUI::captureButton6(){ ui->line_eq->insert(ui->button_6->text()); }
+void mainUI::captureButton7(){ ui->line_eq->insert(ui->button_7->text()); }
+void mainUI::captureButton8(){ ui->line_eq->insert(ui->button_8->text()); }
+void mainUI::captureButton9(){ ui->line_eq->insert(ui->button_9->text()); }
+void mainUI::captureButton0(){ ui->line_eq->insert(ui->button_0->text()); }
+void mainUI::captureButtonSubtract(){ ui->line_eq->insert(ui->button_Subtract->text()); }
+void mainUI::captureButtonAdd(){ ui->line_eq->insert(ui->button_Add->text()); }
+void mainUI::captureButtonDivide(){ ui->line_eq->insert(ui->button_Divide->text()); }
+void mainUI::captureButtonMultiply(){ ui->line_eq->insert(ui->button_Multiply->text()); }
+void mainUI::captureButtonDecimal(){ ui->line_eq->insert(ui->button_Decimal->text()); }
+
+void mainUI::advMenuTriggered(QAction *act){
+ if(act->whatsThis().isEmpty()){ return; }
+ ui->line_eq->insert(act->whatsThis());
+}
+void mainUI::insert_history(QListWidgetItem *it){
+ QString txt = it->text().section("[",-1).section("]",0,0).simplified();
+ ui->line_eq->insert("("+txt+")");
+}
+
+void mainUI::copy_to_clipboard(QListWidgetItem *it){
+ QString txt = it->text();
+ QApplication::clipboard()->setText(txt);
+}
+
+void mainUI::checkInput(const QString &str){
+ if(str.length()==1 && ui->list_results->count()>0){
+ if(OPS.contains(str)){
+ QString lastresult = ui->list_results->item( ui->list_results->count()-1)->text().section("]",0,0).section("[",-1).simplified();
+ ui->line_eq->setText( lastresult+str);
+ }
+ }
+}
+
+void mainUI::saveHistory(){
+ QStringList history;
+ for(int i=0; i<ui->list_results->count(); i++){ history << ui->list_results->item(i)->text(); }
+ QString file = QFileDialog::getSaveFileName(this, tr("Save Calculator History"), QDir::homePath() );
+ if(file.section(".",-1).isEmpty()){ file.append(".txt"); }
+ LUtils::writeFile(file, history, true);
+}
+
+// =====================
+// PRIVATE FUNCTIONS
+// =====================
+double mainUI::performOperation(double LHS, double RHS, QChar symbol){
+ //qDebug() << "Perform Operation:" << LHS << symbol << RHS;
+ if(symbol== '+'){ return (LHS+RHS); }
+ else if(symbol== '-'){ return (LHS-RHS); }
+ else if(symbol== '*' || symbol=='x'){ return (LHS*RHS); }
+ else if(symbol== '/'){ return (LHS/RHS); }
+ else if(symbol== '^'){ return ::pow(LHS, RHS); }
+ else if(symbol=='e'){ return (LHS * ::exp(RHS) ); }
+ //else if(symbol== '%'){ return (LHS%RHS); }
+ qDebug() << "Invalid Symbol:" << symbol;
+ return BADVALUE;
+}
+
+double mainUI::performSciOperation(QString func, double arg){
+ //This function is for performing calculations of scientific functions "<function>(<arg>)"
+ //qDebug() << "Perform Sci Op:" << func << arg;
+ double res;
+ if(func=="ln"){ return ::log(arg); }
+ else if(func=="log"){ return ::log10(arg); }
+ else if(func=="sqrt"){ return ::sqrt(arg); }
+ else if(func=="sin"){ res = ::sin(arg); } //needs rounding check
+ else if(func=="cos"){ res = ::cos(arg); } //needs rounding check
+ else if(func=="tan"){ return ::tan(arg); }
+ else if(func=="asin"){ return ::asin(arg); }
+ else if(func=="acos"){ return ::acos(arg); }
+ else if(func=="atan"){ return ::atan(arg); }
+ else if(func=="sinh"){ return ::sinh(arg); }
+ else if(func=="cosh"){ return ::cosh(arg); }
+ else if(func=="tanh"){ return ::tanh(arg); }
+ else{
+ qDebug() << "Unknown Scientific Function:" << func;
+ return BADVALUE;
+ }
+ //Special cases:
+ // Check for whether "PI" was input as an argument (in some form) and round off the answer as needed
+ // since PI is itself a rounded number
+ if(res < 0.000000000000001){ return 0; }
+ return res;
+}
+
+
+double mainUI::strToNumber(QString str){
+ //qDebug() << "String To Number:" << str;
+ //Look for history replacements first
+ while(str.contains("#")){
+ int index = str.indexOf("#");
+ int num = -1; //history number
+ for(int i=index+1; i<str.length(); i++){
+ if(!str[i].isNumber() || i==(str.length()-1) ){
+ if(!str[i].isNumber()){ i--; } //go back to the last valid char
+ //qDebug() << "Replace History:" << str << index << i << str.mid(index+1, i-index);
+ num = str.mid(index+1, i-index).toInt();
+ //qDebug() << " H number:" << num;
+ str.replace(index, i-index+1, getHistory(num));
+ //qDebug() << " After Replace:" << str;
+ break; //finished with this history item
+ }
+ }
+ if(num<1){ return BADVALUE; } //could not perform substitution
+ }
+ //Look for perentheses first
+ //qDebug() << "String to Number: " << str;
+ if(str.indexOf("(")>=0){
+ //qDebug() << "Found Parenthesis";
+ int start = str.indexOf("(");
+ int need = 1;
+ int end = -1;
+ for(int i=start+1; i<str.length() && need>0; i++){
+ if(str[i]=='('){ need++; }
+ else if(str[i]==')'){ need--; }
+ //qDebug() << "Check char:" << str[i] << need;
+ if(need==0){ end = i; }
+ }
+ if(end<start){ return BADVALUE; }
+ //qDebug() << "Replace value:" << str << start << end << str.mid(start+1,end-start-1);
+ double tmp = strToNumber( str.mid(start+1, end-start-1));
+ if(tmp!=tmp){ return BADVALUE; } //not a number
+ //Now check really quick if this was an argument to a scientific operation
+ //qDebug() << "Got Number:" << tmp;
+ for(int i=start-1; i>=0; i-- ){
+ //qDebug() << "Check for function:" << start << i << str[i];
+ if( !str[i].isLower() || i==0 ){
+ if(!str[i].isLower()){ i++; }//don't need the invalid character
+ if(start-i<2){ break; } //not long enough - 2+ chars for sci functions
+ //Got a scientific operation - run it through the routine
+ tmp = performSciOperation( str.mid(i, start-i), tmp);
+ if(tmp!=tmp){ return BADVALUE; } //got a bad value
+ start = i; //new start point for the replacement
+ break;
+ }
+ }
+ str.replace(start, end-start+1, QString::number( tmp, 'E', 16) ); //need as high precision as possible here - internal only, never seen
+ //qDebug() << "Replaced:" << str;
+ }
+ // -------------------------------------
+ // NOTE: the order of operations appears reversed here due to the recursive nature of the algorithm
+ // the first operation *found* is actually the last one *evaluated*
+ // --------------------------------------
+ //Now look for add/subtract
+ int sym = -1;
+ QStringList symbols; symbols << "+" << "-";
+ //qDebug() << "Get operator:" << str;
+ for(int i=0; i<symbols.length(); i++){
+ int tmp = str.indexOf(symbols[i]);
+ while(tmp==0 || (tmp>0 && str[tmp-1].toLower()=='e') ){ tmp = str.indexOf(symbols[i], tmp+1); } //catch scientific notation
+ if(sym < tmp){
+ //qDebug() << " - found:" << tmp << sym;
+ sym = tmp;
+ }
+ }
+ if(sym>0){ return performOperation( strToNumber(str.left(sym)), strToNumber(str.right(str.length()-sym-1)), str[sym]); }
+ if(sym==0){ return BADVALUE; }
+ //Now look for multiply/divide/power
+ symbols.clear(); symbols << "x" << "*" << "/" << "^" << "e";
+ for(int i=0; i<symbols.length(); i++){
+ int tmp = str.indexOf(symbols[i]);
+ if(sym < tmp){ sym = tmp; }
+ }
+ if(sym>0){ return performOperation( strToNumber(str.left(sym)), strToNumber(str.right(str.length()-sym-1)), str[sym]); }
+ if(sym==0){ return BADVALUE; }
+
+ //Could not find any operations - must be a raw number
+ //qDebug() << " - Found Number:" << str;// << str.toDouble();
+ if(str=="\u03C0"){ return PI; }
+ //else if(str.endsWith("\u03C0")){
+ //return performOperation( strToNumber(str.section("\u03C0",0,-2)), PI, '*');
+ else if(str.contains("\u03C0")){
+ qDebug() << " Has Pi:" << str.count("\u03C0");
+ //Pi is mixed into the number - need to multiply it all out
+ double res = 1;
+ QStringList vals = str.split("\u03C0", QString::SkipEmptyParts);
+ for(int i=0; i<vals.length(); i++){ res = res * strToNumber(vals[i]); }
+ //Now multiply in the PI's
+ for(int i=0; i<str.count("\u03C0"); i++){
+ res = res * PI;
+ }
+ return res;
+ }
+ return str.toDouble();
+}
+
+QString mainUI::getHistory(int number){
+ if(number <1 || number > ui->list_results->count()){
+ //use the last history item
+ number = ui->list_results->count();
+ }
+ QString ans = ui->list_results->item(number-1)->text().section("=",0,0).section("]",-1).simplified();
+ QString eq = ui->list_results->item(number-1)->text().section("[",-1).section("]",0,0).simplified();
+ //See if the text answer is accurate enough (does not look rounded)
+ if(ans.length()<7){
+ return ("("+ans+")"); //short enough answer that it was probably not rounded
+ }else{
+ //need to re-calculate the last equation instead for exact result
+ return ("("+eq+")");
+ }
+}
diff --git a/src-qt5/desktop-utils/lumina-calculator/mainUI.h b/src-qt5/desktop-utils/lumina-calculator/mainUI.h
new file mode 100644
index 00000000..f05365f3
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/mainUI.h
@@ -0,0 +1,65 @@
+//===========================================
+// Lumina Desktop source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#ifndef _LUMINA_CALCULATOR_MAIN_UI_H
+#define _LUMINA_CALCULATOR_MAIN_UI_H
+
+#include <QMainWindow>
+#include <QString>
+#include <QChar>
+#include <QListWidgetItem>
+
+namespace Ui{
+ class mainUI;
+};
+
+class mainUI : public QMainWindow{
+ Q_OBJECT
+public:
+ mainUI();
+ ~mainUI();
+
+public slots:
+ void updateIcons();
+ void updateMenus();
+
+private slots:
+ void start_calc();
+ void clear_calc();
+ void captureButton1();
+ void captureButton2();
+ void captureButton3();
+ void captureButton4();
+ void captureButton5();
+ void captureButton6();
+ void captureButton7();
+ void captureButton8();
+ void captureButton9();
+ void captureButton0();
+ void captureButtonSubtract();
+ void captureButtonAdd();
+ void captureButtonDivide();
+ void captureButtonMultiply();
+ void captureButtonDecimal();
+
+ void advMenuTriggered(QAction *act);
+
+ void insert_history(QListWidgetItem *it);
+ void copy_to_clipboard(QListWidgetItem *it);
+ void checkInput(const QString&);
+
+ void saveHistory();
+
+private:
+ Ui::mainUI *ui;
+ QMenu *advMenu;
+
+ double performOperation(double LHS, double RHS, QChar symbol);
+ double performSciOperation(QString func, double arg);
+ double strToNumber(QString str); //this is highly-recursive
+ QString getHistory(int number = -1);
+};
+#endif
diff --git a/src-qt5/desktop-utils/lumina-calculator/mainUI.ui b/src-qt5/desktop-utils/lumina-calculator/mainUI.ui
new file mode 100644
index 00000000..a5369f64
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/mainUI.ui
@@ -0,0 +1,676 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>mainUI</class>
+ <widget class="QMainWindow" name="mainUI">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>255</width>
+ <height>260</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Calculator</string>
+ </property>
+ <property name="animated">
+ <bool>false</bool>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="leftMargin">
+ <number>4</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <property name="rightMargin">
+ <number>4</number>
+ </property>
+ <property name="bottomMargin">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QSplitter" name="splitter">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="handleWidth">
+ <number>10</number>
+ </property>
+ <property name="childrenCollapsible">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="layoutWidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QListWidget" name="list_results">
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::NoSelection</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QToolButton" name="tool_history_clear">
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_history_save">
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLineEdit" name="line_eq">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_clear">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">C</string>
+ </property>
+ <property name="autoRaise">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="3" column="3" rowspan="2">
+ <widget class="QPushButton" name="button_Equal">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="baseSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>11</pointsize>
+ <weight>75</weight>
+ <italic>false</italic>
+ <bold>true</bold>
+ <underline>false</underline>
+ </font>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">=</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="button_Multiply">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">*</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3" rowspan="2">
+ <widget class="QPushButton" name="button_Add">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">+</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <widget class="QPushButton" name="button_Decimal">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">.</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QPushButton" name="button_0">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">0</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QPushButton" name="button_Subtract">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">-</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QPushButton" name="button_Divide">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">/</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="button_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">7</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="button_8">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">8</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QPushButton" name="button_9">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">9</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QPushButton" name="button_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">4</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QPushButton" name="button_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">5</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QPushButton" name="button_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">6</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QPushButton" name="button_1">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">1</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QPushButton" name="button_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">2</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QPushButton" name="button_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="text">
+ <string notr="true">3</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QToolButton" name="tool_adv">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>5</height>
+ </size>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="toolTip">
+ <string>Advanced Operations</string>
+ </property>
+ <property name="text">
+ <string notr="true">Adv</string>
+ </property>
+ <property name="popupMode">
+ <enum>QToolButton::InstantPopup</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
bgstack15