From cca2e0f2d7ef763cbc9464b0b0765ecaaa01ff45 Mon Sep 17 00:00:00 2001 From: Ivan Pelipenko Date: Tue, 25 Aug 2020 22:29:59 +0300 Subject: [PATCH] moved qpicalculator --- pip | 2 +- piqt/utils/qpicalculator/CMakeLists.txt | 14 + .../qpicalculator/icons/qpicalculator.ico | Bin 0 -> 161593 bytes .../qpicalculator/icons/qpicalculator.png | Bin 0 -> 23336 bytes piqt/utils/qpicalculator/main.cpp | 13 + piqt/utils/qpicalculator/mainwindow.cpp | 261 ++++++++++++ piqt/utils/qpicalculator/mainwindow.h | 56 +++ piqt/utils/qpicalculator/mainwindow.ui | 379 ++++++++++++++++++ piqt/utils/qpicalculator/qpicalculator.qrc | 5 + 9 files changed, 729 insertions(+), 1 deletion(-) create mode 100644 piqt/utils/qpicalculator/CMakeLists.txt create mode 100644 piqt/utils/qpicalculator/icons/qpicalculator.ico create mode 100644 piqt/utils/qpicalculator/icons/qpicalculator.png create mode 100644 piqt/utils/qpicalculator/main.cpp create mode 100644 piqt/utils/qpicalculator/mainwindow.cpp create mode 100644 piqt/utils/qpicalculator/mainwindow.h create mode 100644 piqt/utils/qpicalculator/mainwindow.ui create mode 100644 piqt/utils/qpicalculator/qpicalculator.qrc diff --git a/pip b/pip index 3965e54..f033119 160000 --- a/pip +++ b/pip @@ -1 +1 @@ -Subproject commit 3965e54e38cbb23e8103e1e09a49910d5b5957b3 +Subproject commit f033119a8bf82633146c458d1165377661df1c9f diff --git a/piqt/utils/qpicalculator/CMakeLists.txt b/piqt/utils/qpicalculator/CMakeLists.txt new file mode 100644 index 0000000..27ecf2c --- /dev/null +++ b/piqt/utils/qpicalculator/CMakeLists.txt @@ -0,0 +1,14 @@ +project(qpicalc) +if(APPLE) + set(APP_ICON "") +elseif(WIN32) + set(APP_ICON "icons/qpicalculator.ico") +else() + set(APP_ICON "icons/qpicalculator.png") +endif() +set(APP_INFO "Small calculator ang grapher") +qad_application(${PROJECT_NAME} "Gui;Widgets" "qad_utils;qad_widgets;qad_graphic") +if (Qt5_FOUND) + import_version(${PROJ_NAME}5 ${PROJECT_NAME}) + deploy_target(${PROJECT_NAME}5 DEPLOY_DIR ${CMAKE_CURRENT_BINARY_DIR} DESTINATION ${ROOT_DIR}/release) +endif() diff --git a/piqt/utils/qpicalculator/icons/qpicalculator.ico b/piqt/utils/qpicalculator/icons/qpicalculator.ico new file mode 100644 index 0000000000000000000000000000000000000000..99388c507ff46aefa64f51f99547ce24c9f85698 GIT binary patch literal 161593 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�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 literal 0 HcmV?d00001 diff --git a/piqt/utils/qpicalculator/icons/qpicalculator.png b/piqt/utils/qpicalculator/icons/qpicalculator.png new file mode 100644 index 0000000000000000000000000000000000000000..dad22b76a864f634c035f5a36b85197fb10426ef GIT binary patch literal 23336 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 literal 0 HcmV?d00001 diff --git a/piqt/utils/qpicalculator/main.cpp b/piqt/utils/qpicalculator/main.cpp new file mode 100644 index 0000000..afb41cf --- /dev/null +++ b/piqt/utils/qpicalculator/main.cpp @@ -0,0 +1,13 @@ +#include +#include "mainwindow.h" + + +int main(int argc, char *argv[]) { + QApplication a(argc, argv); +#if QT_VERSION >= 0x050000 + a.setAttribute(Qt::AA_UseHighDpiPixmaps, true); +#endif + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/piqt/utils/qpicalculator/mainwindow.cpp b/piqt/utils/qpicalculator/mainwindow.cpp new file mode 100644 index 0000000..4381f41 --- /dev/null +++ b/piqt/utils/qpicalculator/mainwindow.cpp @@ -0,0 +1,261 @@ +#include "mainwindow.h" + + +MainWindow::MainWindow(QWidget * parent): QMainWindow(parent), Ui::MainWindow() { + setupUi(this); + active_ = false; + lineInput->setFocus(); +#if QT_VERSION >= 0x050000 + treeGraphics->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); + treeGraphics->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents); +#else + treeGraphics->header()->setResizeMode(0, QHeaderView::ResizeToContents); + treeGraphics->header()->setResizeMode(1, QHeaderView::ResizeToContents); +#endif + npal = epal = lineInput->palette(); + epal.setColor(lineInput->backgroundRole(), QColor(Qt::red).lighter(150)); + connect(&session, SIGNAL(loading(QPIConfig & )), this, SLOT(loading(QPIConfig & ))); + connect(&session, SIGNAL(saving(QPIConfig & )), this, SLOT(saving(QPIConfig & ))); + session.setFile("session_qpicalc.conf"); + session.addEntry(this); + session.addEntry(lineInput); + session.addEntry(tabWidget); + session.load(); + ans = evaluator.setVariable("ans"); + on_lineInput_returnPressed(); +} + + +MainWindow::~MainWindow() {session.save(); +} + + +void MainWindow::changeEvent(QEvent * e) { + QMainWindow::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + retranslateUi(this); + break; + default: + break; + } +} + + +void MainWindow::updateGraphics() { + graphic->setGraphicsCount(treeGraphics->topLevelItemCount()); + for (int i = 0; i < treeGraphics->topLevelItemCount(); ++i) + graphic->setGraphicColor(treeGraphics->topLevelItem(i)->data(0, Qt::DecorationRole).value(), i); + redrawGraphics(); +} + + +void MainWindow::redrawGraphics() { + QRectF sr = graphic->visualRect(); + double dx = (sr.right() - sr.left()) / graphic->width(), sx = sr.left(), fx = sr.right(), cx; + QPolygonF pol; + evaluator.setVariable("x"); + int vi = evaluator.variableIndex("x"); + graphic->setAutoUpdate(false); + for (int i = 0; i < treeGraphics->topLevelItemCount(); ++i) { + QTreeWidgetItem * ti = treeGraphics->topLevelItem(i); + graphic->setGraphicName(ti->text(1), i); + pol.clear(); + if (ti->checkState(0) == Qt::Checked) { + if (evaluator.check(ti->text(1))) { + cx = sx; + while (cx < fx) { + evaluator.setVariable(vi, complexd(cx, 0.)); + pol << QPointF(cx, evaluator.evaluate().real()); + cx += dx; + } + } + } + graphic->setGraphicVisible(ti->checkState(0) == Qt::Checked, i); + graphic->setGraphicData(pol, i); + } + graphic->setAutoUpdate(true); + graphic->update(true); +} + + +void MainWindow::loading(QPIConfig & conf) { + active_ = false; + QStringList vars = conf.getValue("variables").toStringList(); + int vc = vars.size() / 2; + for (int i = 0; i < vc; ++i) { + QTreeWidgetItem * ti = new QTreeWidgetItem(treeVariables); + ti->setText(0, vars[i * 2]); + ti->setText(1, vars[i * 2 + 1]); + ti->setFlags(ti->flags() | Qt::ItemIsEditable); + treeVariables->addTopLevelItem(ti); + } + buttonVarClear->setEnabled(treeVariables->topLevelItemCount() > 0); + QByteArray ba = conf.getValue("graphics").toByteArray(); + QDataStream s(ba); + QVector g; + if (!ba.isEmpty()) s >> g; + graphic->setAllGraphics(g); + for (int i = 0; i < graphic->graphicsCount(); ++i) { + graphic->setCurrentGraphic(i); + QTreeWidgetItem * ti = new QTreeWidgetItem(treeGraphics); + ti->setFlags(ti->flags() | Qt::ItemIsEditable); + ti->setCheckState(0, graphic->graphicVisible() ? Qt::Checked : Qt::Unchecked); + ti->setData(0, Qt::DecorationRole, graphic->graphicColor()); + ti->setText(1, graphic->graphicName()); + treeGraphics->addTopLevelItem(ti); + } + buttonGraphicClear->setEnabled(treeGraphics->topLevelItemCount() > 0); + graphic->setVisualRect(conf.getValue("graphicRect", QRectF(-1., -1., 2., 2.)).toRectF()); + ba = conf.getValue("graphic_state").toByteArray(); + if (!ba.isEmpty()) + graphic->load(ba); + on_tabWidget_currentChanged(0); + redrawGraphics(); + active_ = true; +} + + +void MainWindow::saving(QPIConfig & conf) { + QStringList vars; + int vc = treeVariables->topLevelItemCount(); + for (int i = 0; i < vc; ++i) { + QTreeWidgetItem * ti = treeVariables->topLevelItem(i); + vars << ti->text(0) << ti->text(1); + } + conf.setValue("variables", vars); + + QVector g; + vc = treeGraphics->topLevelItemCount(); + for (int i = 0; i < vc; ++i) { + QTreeWidgetItem * ti = treeGraphics->topLevelItem(i); + vars << QString::number(ti->background(1).color().rgb()) << ti->text(2); + } + QByteArray ba; QDataStream s(&ba, QIODevice::WriteOnly); + s << graphic->allGraphics(); + conf.setValue("graphics", QByteArray2QString(ba)); + conf.setValue("graphicRect", graphic->visualRect()); + conf.setValue("graphic_state", graphic->save()); +} + + +void MainWindow::on_lineInput_textChanged(QString text) { + if (evaluator.check(text)) lineInput->setPalette(npal); + else lineInput->setPalette(epal); + labelParsed->setText(evaluator.expression()); + labelError->setText(evaluator.error()); +} + + +void MainWindow::on_lineInput_returnPressed() { + bool ret = evaluator.check(lineInput->text()); + if (ret) lineInput->setPalette(npal); + else lineInput->setPalette(epal); + labelParsed->setText(evaluator.expression()); + labelError->setText(evaluator.error()); + if (!ret) return; + complexd val = evaluator.evaluate(); + evaluator.setVariable(ans, val); + if (val.imag() == 0) labelResult->setText(QString::number(val.real())); + else { + if (val.real() == 0) labelResult->setText(QString::number(val.imag()) + "i"); + else { + if (val.imag() > 0) labelResult->setText(QString::number(val.real()) + + " + " + QString::number(val.imag()) + "i"); + else labelResult->setText(QString::number(val.real()) + + " - " + QString::number(fabs(val.imag())) + "i"); + } + } + if (lineInput->text().trimmed().isEmpty()) return; + QTreeWidgetItem * ti = 0, * pti = 0; + if (treeHistory->topLevelItemCount() > 0) + pti = treeHistory->topLevelItem(treeHistory->topLevelItemCount() - 1); + if (pti != 0) + if (pti->text(0) == lineInput->text()) + return; + ti = new QTreeWidgetItem(treeHistory); + ti->setText(0, lineInput->text()); + ti->setText(1, labelResult->text()); + treeHistory->addTopLevelItem(ti); + if (treeHistory->verticalScrollBar()->value() == treeHistory->verticalScrollBar()->maximum()) + treeHistory->scrollToBottom(); +} + + +void MainWindow::on_treeGraphics_itemDoubleClicked(QTreeWidgetItem * item, int column) { + Qt::ItemFlags f = item->flags(); + if (column != 1) f &= ~Qt::ItemIsEditable; + else f |= Qt::ItemIsEditable; + item->setFlags(f); + if (column != 0) return; + QColor col = QColorDialog::getColor(item->data(0, Qt::DecorationRole).value(), this, "Select color for graphic", QColorDialog::ShowAlphaChannel); + if (!col.isValid()) return; + item->setData(0, Qt::DecorationRole, col); + updateGraphics(); +} + + +void MainWindow::on_buttonVarAdd_clicked() { + QTreeWidgetItem * ti = new QTreeWidgetItem(treeVariables); + ti->setSelected(true); + ti->setFlags(ti->flags() | Qt::ItemIsEditable); + treeVariables->addTopLevelItem(ti); + treeVariables->setFocus(); + treeVariables->editItem(ti); + buttonVarClear->setEnabled(treeVariables->topLevelItemCount() > 0); +} + + +void MainWindow::on_buttonVarDel_clicked() { + QList si = treeVariables->selectedItems(); + foreach (QTreeWidgetItem * i, si) + delete i; + buttonVarClear->setEnabled(treeVariables->topLevelItemCount() > 0); +} + + +void MainWindow::on_buttonGraphicAdd_clicked() { + graphic->setGraphicsCount(graphic->graphicsCount() + 1); + graphic->setCurrentGraphic(graphic->graphicsCount() - 1); + QTreeWidgetItem * ti = new QTreeWidgetItem(treeGraphics); + ti->setSelected(true); + ti->setFlags(ti->flags() | Qt::ItemIsEditable); + ti->setCheckState(0, Qt::Checked); + ti->setData(0, Qt::DecorationRole, graphic->graphicColor()); + treeGraphics->addTopLevelItem(ti); + treeGraphics->setFocus(); + treeGraphics->editItem(ti, 1); + buttonGraphicClear->setEnabled(treeGraphics->topLevelItemCount() > 0); + updateGraphics(); +} + + +void MainWindow::on_buttonGraphicDel_clicked() { + QList si = treeGraphics->selectedItems(); + foreach (QTreeWidgetItem * i, si) + delete i; + buttonGraphicClear->setEnabled(treeGraphics->topLevelItemCount() > 0); + updateGraphics(); +} + + +void MainWindow::on_buttonGraphicClear_clicked() { + treeGraphics->clear(); + buttonGraphicClear->setEnabled(false); + updateGraphics(); +} + + +void MainWindow::on_tabWidget_currentChanged(int index) { + QPIEvaluator eval; + evaluator.clearCustomVariables(); + for (int i = 0; i < treeVariables->topLevelItemCount(); ++i) { + QString vn, vv; + vn = treeVariables->topLevelItem(i)->text(0); + vv = treeVariables->topLevelItem(i)->text(1); + eval.check(vv); + evaluator.setVariable(vn, eval.evaluate()); + } + if (index == 0) on_lineInput_returnPressed(); + if (index == 2) redrawGraphics(); +} diff --git a/piqt/utils/qpicalculator/mainwindow.h b/piqt/utils/qpicalculator/mainwindow.h new file mode 100644 index 0000000..efb44b9 --- /dev/null +++ b/piqt/utils/qpicalculator/mainwindow.h @@ -0,0 +1,56 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include "ui_mainwindow.h" +#include "qpievaluator.h" +#include "session_manager.h" + + +class MainWindow: public QMainWindow, private Ui::MainWindow +{ + Q_OBJECT +public: + MainWindow(QWidget * parent = 0); + ~MainWindow(); + +protected: + void changeEvent(QEvent * e); + +private: + void updateGraphics(); + void redrawGraphics(); + + QPIEvaluator evaluator; + QPalette npal, epal; + SessionManager session; + int ans; + bool active_; + +private slots: + void loading(QPIConfig & conf); + void saving(QPIConfig & conf); + void on_lineInput_textChanged(QString s); + void on_lineInput_returnPressed(); + void on_treeHistory_itemDoubleClicked(QTreeWidgetItem * item, int column) {lineInput->setText(item->text(0));} + void on_treeVariables_itemSelectionChanged() {buttonVarDel->setDisabled(treeVariables->selectedItems().isEmpty());} + void on_treeGraphics_itemSelectionChanged() {buttonGraphicDel->setDisabled(treeGraphics->selectedItems().isEmpty());} + void on_treeGraphics_itemChanged(QTreeWidgetItem * , int col) { if (active_) redrawGraphics();} + void on_treeGraphics_itemDoubleClicked(QTreeWidgetItem * item, int column); + void on_buttonVarAdd_clicked(); + void on_buttonVarDel_clicked(); + void on_buttonVarClear_clicked() {treeVariables->clear(); buttonVarClear->setEnabled(false);} + void on_buttonGraphicAdd_clicked(); + void on_buttonGraphicDel_clicked(); + void on_buttonGraphicClear_clicked(); + void on_tabWidget_currentChanged(int index); + void on_graphic_visualRectChanged() {redrawGraphics();} + +}; + +#endif // MAINWINDOW_H diff --git a/piqt/utils/qpicalculator/mainwindow.ui b/piqt/utils/qpicalculator/mainwindow.ui new file mode 100644 index 0000000..dae08e6 --- /dev/null +++ b/piqt/utils/qpicalculator/mainwindow.ui @@ -0,0 +1,379 @@ + + + MainWindow + + + + 0 + 0 + 780 + 521 + + + + QPICalculator + + + + :/icons/qpicalculator.png:/icons/qpicalculator.png + + + + + + + 2 + + + + Calculator + + + + + + Qt::ScrollBarAlwaysOff + + + QAbstractItemView::NoEditTriggers + + + true + + + QAbstractItemView::ScrollPerPixel + + + false + + + false + + + true + + + 300 + + + + Expression + + + + + Result + + + + + + + + + + + Correct + + + + + + + 0 + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + 14 + 75 + true + + + + 0 + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + Variables + + + + + + Qt::ScrollBarAlwaysOff + + + QAbstractItemView::ExtendedSelection + + + QAbstractItemView::ScrollPerPixel + + + false + + + false + + + true + + + 200 + + + + Name + + + + + Value + + + + + + + + + + + :/icons/list-add.png:/icons/list-add.png + + + + + + + false + + + + :/icons/edit-delete.png:/icons/edit-delete.png + + + Del + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + false + + + + :/icons/edit-clear.png:/icons/edit-clear.png + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Graphics + + + + + + Qt::Horizontal + + + + + + + Qt::ScrollBarAlwaysOff + + + QAbstractItemView::ExtendedSelection + + + QAbstractItemView::ScrollPerPixel + + + QAbstractItemView::ScrollPerPixel + + + false + + + false + + + true + + + false + + + 50 + + + + On + + + + + Function + + + + + + + + + + + :/icons/list-add.png:/icons/list-add.png + + + + + + + false + + + + :/icons/edit-delete.png:/icons/edit-delete.png + + + Del + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + false + + + + :/icons/edit-clear.png:/icons/edit-clear.png + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Graphic::BorderInputs|Graphic::Configure|Graphic::CursorAxis|Graphic::Fullscreen|Graphic::Grid|Graphic::Save + + + true + + + false + + + false + + + + + + + + + + + + + + + Graphic + QFrame +
graphic.h
+
+ + CLineEdit + QLineEdit +
clineedit.h
+
+
+ + + + + +
diff --git a/piqt/utils/qpicalculator/qpicalculator.qrc b/piqt/utils/qpicalculator/qpicalculator.qrc new file mode 100644 index 0000000..1a48626 --- /dev/null +++ b/piqt/utils/qpicalculator/qpicalculator.qrc @@ -0,0 +1,5 @@ + + + icons/qpicalculator.png + +