From b1536eb16a26ec9c305027c2764720c798c0b4dc Mon Sep 17 00:00:00 2001 From: Ivan Pelipenko Date: Sun, 6 Sep 2020 21:46:06 +0300 Subject: [PATCH] Windows works --- CMakeLists.txt | 10 +++- cmake/FindQAD.cmake | 2 +- cmake/QtWraps.cmake | 2 +- libs/graphic/graphic.cpp | 2 + libs/qglview/CMakeLists.txt | 16 +++--- libs/widgets/evalspinbox.cpp | 49 ++++++++++--------- libs/widgets/evalspinbox.h | 5 +- libs/widgets/qpiconfigvaluewidget.cpp | 2 +- .../qpievaluator_p.cpp} | 2 +- .../qpievaluator_p.h} | 19 ++++--- utils/qpicalculator/CMakeLists.txt | 31 +++++++----- utils/qpicalculator/mainwindow.cpp | 4 +- 12 files changed, 81 insertions(+), 63 deletions(-) rename libs/{utils/qpievaluator.cpp => widgets/qpievaluator_p.cpp} (99%) rename libs/{utils/qpievaluator.h => widgets/qpievaluator_p.h} (96%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 54cea21..71d3b6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,7 +45,7 @@ macro(qad_plugin NAME _MODULES _LIBS) shstk_qt_plugin(qad_${NAME} "${_MODULES}" "qad_${NAME};${_LIBS}") endmacro() -shstk_install(qad FALSE "" "${QAD_VERSION_FILE}") +shstk_install(qad FALSE "" "${qad_VERSION_FILE}") if (NOT LOCAL) file(GLOB CMAKES "cmake/*.cmake" "cmake/*.in") install(FILES ${CMAKES} DESTINATION ${CMAKE_ROOT}/Modules) @@ -60,7 +60,13 @@ message("----------QAD----------") message(" Build for ${QtVersions}") message(" Linkage: ${qad_LIB_TYPE_MSG}") message(" Type : ${qad_BUILD_TYPE}") -message(" Install: \"${CMAKE_INSTALL_PREFIX}\"") +if (NOT LOCAL) + message(" Install: \"${CMAKE_INSTALL_PREFIX}\"") +else() + if(NOT PIP_FREERTOS) + message(" Install: local \"bin\", \"lib\" and \"include\"") + endif() +endif() message("") print_list("${_qt_libs}" " Libraries:" " * ") if (NOT "x${_qt_plugs}" STREQUAL "x") diff --git a/cmake/FindQAD.cmake b/cmake/FindQAD.cmake index cd9237c..28d3c36 100644 --- a/cmake/FindQAD.cmake +++ b/cmake/FindQAD.cmake @@ -104,7 +104,7 @@ else() add_library(QAD::${_m}${_v} UNKNOWN IMPORTED) set(_deps) foreach (_d ${__deps_${_l}}) - if (${_d} MATCHES "QAD::*") + if (${_d} MATCHES "QAD::.*") list(APPEND _deps ${_d}${_v}) else() list(APPEND _deps ${_d}) diff --git a/cmake/QtWraps.cmake b/cmake/QtWraps.cmake index 409882f..f1055d9 100644 --- a/cmake/QtWraps.cmake +++ b/cmake/QtWraps.cmake @@ -217,7 +217,7 @@ macro(find_qt) #if (Qt5_FOUND) # set(_MSG 0) #endif() - find_package(Qt5 COMPONENTS Core LinguistTools UiPlugin Widgets ${_QCOMP} ${_QUIET}) + find_package(Qt5 COMPONENTS Core LinguistTools UiPlugin Widgets ${_QCOMP} QUIET) if (DEFINED ANDROID_PLATFORM) set(CMAKE_SHARED_MODULE_SUFFIX_CXX ".so") set(CMAKE_SHARED_LIBRARY_SUFFIX_CXX ".so") diff --git a/libs/graphic/graphic.cpp b/libs/graphic/graphic.cpp index 5dfd304..6e8c91f 100644 --- a/libs/graphic/graphic.cpp +++ b/libs/graphic/graphic.cpp @@ -21,6 +21,8 @@ # endif #endif +const double deg2rad_qpie = atan(1.) / 45.; +const double rad2deg_qpie = 45. / atan(1.); __GraphicRegistrator__ __graphic_registrator__; diff --git a/libs/qglview/CMakeLists.txt b/libs/qglview/CMakeLists.txt index 2f5e3d1..7f2be50 100644 --- a/libs/qglview/CMakeLists.txt +++ b/libs/qglview/CMakeLists.txt @@ -1,8 +1,10 @@ -find_package(OpenGL REQUIRED) -shstk_qt_project(qglview FALSE "qad" "Gui;OpenGL;Xml" "qad_widgets;qad_utils;${OPENGL_LIBRARIES}") -shstk_qt_install("qad" FALSE qglview "out_HDR" "out_QM") +if (((DEFINED QGLVIEW) AND QGLVIEW) OR (NOT DEFINED QGLVIEW)) + find_package(OpenGL REQUIRED) + shstk_qt_project(qglview FALSE "qad" "Gui;OpenGL;Xml" "qad_widgets;qad_utils;${OPENGL_LIBRARIES}") + shstk_qt_install("qad" FALSE qglview "${out_HDR}" "${out_QM}") -qt_sources(test_SRC DIR "qglview_test") -qt_wrap(${test_SRC} CPPS test_CPP) -qt_add_executable(qglview_test test_CPP) -qt_target_link_libraries(qglview_test qglview) + qt_sources(test_SRC DIR "qglview_test") + qt_wrap(${test_SRC} CPPS test_CPP) + qt_add_executable(qglview_test test_CPP) + qt_target_link_libraries(qglview_test qglview) +endif() diff --git a/libs/widgets/evalspinbox.cpp b/libs/widgets/evalspinbox.cpp index 28324c5..a61b51e 100644 --- a/libs/widgets/evalspinbox.cpp +++ b/libs/widgets/evalspinbox.cpp @@ -8,12 +8,14 @@ #include #include #include "qad_types.h" +#include "qpievaluator_p.h" EvalSpinBox::EvalSpinBox(QWidget * parent): QAbstractSpinBox(parent) { status = new QWidget(lineEdit()); cw = new QWidget(lineEdit()); label = new QLabel(lineEdit()); + eval = new QPIEvaluator(); precision_ = -1; // label->hide(); clear_im.load(":/icons/edit-clear-locationbar-rtl.png"); @@ -40,9 +42,10 @@ EvalSpinBox::EvalSpinBox(QWidget * parent): QAbstractSpinBox(parent) { EvalSpinBox::~EvalSpinBox() { + delete eval; + delete label; delete cw; delete status; - delete label; } @@ -124,9 +127,9 @@ void EvalSpinBox::textChanged_(const QString & text) { td = true; t.chop(1); } - bool ok = eval.check(t); + bool ok = eval->check(t); if (ok) { - eval.evaluate(); + eval->evaluate(); if (td) { icon = icon_calc; status->setToolTip("Enter to calc -> "+QString::number(value(), 'G', 10)); @@ -138,7 +141,7 @@ void EvalSpinBox::textChanged_(const QString & text) { if (pv != value()) emit valueChanged(value()); } else { icon = icon_fail; - status->setToolTip(eval.error()); + status->setToolTip(eval->error()); } resizeIcons(); } @@ -152,16 +155,16 @@ void EvalSpinBox::setExpression_() { td = true; t.chop(1); } - if (eval.check(t)) { + if (eval->check(t)) { /*if (eval.expression() == "0") lineEdit()->clear(); - else*/ lineEdit()->setText(eval.expression()); - eval.evaluate(); + else*/ lineEdit()->setText(eval->expression()); + eval->evaluate(); if (td) lineEdit()->setText(QString::number(value(), 'G', precision_ > 0 ? precision_ : 16)); status->setToolTip("OK -> " + QString::number(value(), 'G', 10)); icon = icon_ok; } else { icon = icon_fail; - status->setToolTip(eval.error()); + status->setToolTip(eval->error()); // qDebug() << eval.expression(); } if (!label->isHidden()) { @@ -169,12 +172,12 @@ void EvalSpinBox::setExpression_() { // label->setText("

" + eval.expression() + " -> " + QString::number(value(), 'G', 10) + "

"); // else // label->setText(eval.expression()); - if (eval.expression() != QString::number(value(), 'G', 10) && eval.expression() != QString::number(value(), 'G', 11) && eval.isCorrect()) + if (eval->expression() != QString::number(value(), 'G', 10) && eval->expression() != QString::number(value(), 'G', 11) && eval->isCorrect()) label->setText("

-> " + QString::number(value(), 'G', 10) + "

"); else label->setText(""); lineEdit()->blockSignals(true); - if (!eval.isCorrect()) { + if (!eval->isCorrect()) { lineEdit()->setStyleSheet("color: darkred;"); status->show(); } else { @@ -222,20 +225,20 @@ void EvalSpinBox::clear() { double EvalSpinBox::value() const { - if (eval.isCorrect()) { - return eval.lastResult().real(); + if (eval->isCorrect()) { + return eval->lastResult().real(); } return 0.; } const QString & EvalSpinBox::expression() const { - return eval.expression(); + return eval->expression(); } bool EvalSpinBox::isCleared() const { - return (dt == eval.expression() || (value() == 0 && dt.isEmpty())); + return (dt == eval->expression() || (value() == 0 && dt.isEmpty())); } @@ -257,7 +260,7 @@ void EvalSpinBox::focusInEvent(QFocusEvent * event) { status->show(); lineEdit()->blockSignals(true); lineEdit()->setStyleSheet(""); - if (eval.expression() == "0") lineEdit()->clear(); + if (eval->expression() == "0") lineEdit()->clear(); lineEdit()->blockSignals(false); QAbstractSpinBox::focusInEvent(event); resizeIcons(); @@ -271,13 +274,13 @@ void EvalSpinBox::focusOutEvent(QFocusEvent * event) { // label->setText("

" + eval.expression() + " -> " + QString::number(value(), 'G', 10) + "

"); // else // label->setText(eval.expression()); - if (eval.expression() != QString::number(value(), 'G', 10) && eval.expression() != QString::number(value(), 'G', 11) && eval.isCorrect()) + if (eval->expression() != QString::number(value(), 'G', 10) && eval->expression() != QString::number(value(), 'G', 11) && eval->isCorrect()) label->setText("

-> " + QString::number(value(), 'G', 10) + "

"); else label->setText(""); label->show(); lineEdit()->blockSignals(true); - if (!eval.isCorrect()) lineEdit()->setStyleSheet("color: darkred;"); + if (!eval->isCorrect()) lineEdit()->setStyleSheet("color: darkred;"); else status->hide(); // lineEdit()->setText(eval.expression() + " -> " + QString::number(value(), 'G', 10)); //lineEdit()->clear(); @@ -298,8 +301,8 @@ void EvalSpinBox::stepByDouble(double steps) { //qDebug() << "step" << steps; if (isReadOnly()) return; QString t = text(); - if (eval.check(t)) { - t = eval.expression(); + if (eval->check(t)) { + t = eval->expression(); //QRegExp re("(\\-?\\d+)"); QRegExp re("[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)"); int pos = 0; @@ -312,8 +315,8 @@ void EvalSpinBox::stepByDouble(double steps) { double v = steps; t = QString::number(v) + t; } - eval.check(t); - lineEdit()->setText(eval.expression()); + eval->check(t); + lineEdit()->setText(eval->expression()); } } @@ -326,13 +329,13 @@ void EvalSpinBox::setDefaultText(const QString & t) { // setExpression_(); // } //if (t == eval.expression() || (value() == 0 && t.isEmpty())) clear(); - cw->setVisible((eval.expression() != dt || (dt.isEmpty() && eval.expression() == "0")) && cw_visible); + cw->setVisible((eval->expression() != dt || (dt.isEmpty() && eval->expression() == "0")) && cw_visible); resizeIcons(); } void EvalSpinBox::setClearButtonVisible(bool visible) { cw_visible = visible; - cw->setVisible((eval.expression() != dt || (dt.isEmpty() && eval.expression() == "0")) && cw_visible); + cw->setVisible((eval->expression() != dt || (dt.isEmpty() && eval->expression() == "0")) && cw_visible); resizeIcons(); } diff --git a/libs/widgets/evalspinbox.h b/libs/widgets/evalspinbox.h index 81d98d0..bc45537 100644 --- a/libs/widgets/evalspinbox.h +++ b/libs/widgets/evalspinbox.h @@ -22,9 +22,10 @@ #include #include -#include "qpievaluator.h" #include "qad_widgets_export.h" +class QPIEvaluator; + class QLabel; @@ -64,7 +65,7 @@ protected: QWidget * status; QWidget * cw; - QPIEvaluator eval; + QPIEvaluator * eval; QLabel * label; QImage icon_ok; QImage icon_fail; diff --git a/libs/widgets/qpiconfigvaluewidget.cpp b/libs/widgets/qpiconfigvaluewidget.cpp index c47eba3..4e60b7e 100644 --- a/libs/widgets/qpiconfigvaluewidget.cpp +++ b/libs/widgets/qpiconfigvaluewidget.cpp @@ -1,5 +1,5 @@ #include "qpiconfigvaluewidget.h" -#include "qpievaluator.h" +#include "qpievaluator_p.h" ConfigValueWidget::ConfigValueWidget(QWidget * parent): QWidget(parent), lay(QBoxLayout::Down, this) { diff --git a/libs/utils/qpievaluator.cpp b/libs/widgets/qpievaluator_p.cpp similarity index 99% rename from libs/utils/qpievaluator.cpp rename to libs/widgets/qpievaluator_p.cpp index 7acd1bf..41ae73f 100644 --- a/libs/utils/qpievaluator.cpp +++ b/libs/widgets/qpievaluator_p.cpp @@ -1,4 +1,4 @@ -#include "qpievaluator.h" +#include "qpievaluator_p.h" QPIEvaluatorContent::QPIEvaluatorContent() { diff --git a/libs/utils/qpievaluator.h b/libs/widgets/qpievaluator_p.h similarity index 96% rename from libs/utils/qpievaluator.h rename to libs/widgets/qpievaluator_p.h index 5a5ba11..03fafca 100644 --- a/libs/utils/qpievaluator.h +++ b/libs/widgets/qpievaluator_p.h @@ -17,8 +17,8 @@ along with this program. If not, see . */ -#ifndef QPIEVALUATOR_H -#define QPIEVALUATOR_H +#ifndef QPIEVALUATOR_P_H +#define QPIEVALUATOR_P_H #include #include @@ -26,7 +26,6 @@ #include #include #include -#include "qad_utils_export.h" #ifndef PIP_MATH_COMPLEX @@ -67,7 +66,7 @@ namespace QPIEvaluatorTypes { bfIm, bfRe, bfArg, bfLen, bfConj, bfRad, bfDeg}; - struct QAD_UTILS_EXPORT Instruction { + struct Instruction { Instruction() {;} Instruction(Operation oper, QVector opers, int out_ind, int func = -1) { operation = oper; operators = opers; out = out_ind; function = func;} @@ -75,20 +74,20 @@ namespace QPIEvaluatorTypes { QVector operators; int out; int function;}; - struct QAD_UTILS_EXPORT Element { + struct Element { Element() {;} Element(eType new_type, int new_num, int new_var_num = -1) {set(new_type, new_num, new_var_num);} void set(eType new_type, int new_num, int new_var_num = -1) {type = new_type; num = new_num; var_num = new_var_num;} eType type; int num; int var_num;}; - struct QAD_UTILS_EXPORT Function { + struct Function { Function() {arguments = 0; type = bfUnknown;} Function(const QString & name, int args, BaseFunctions ftype) {identifier = name; arguments = args; type = ftype;} QString identifier; BaseFunctions type; int arguments;}; - struct QAD_UTILS_EXPORT Variable { + struct Variable { Variable() {value = 0.;} Variable(const QString & var_name, complexd val) {name = var_name; value = val;} QString name; @@ -108,7 +107,7 @@ namespace QPIEvaluatorTypes { ⋀ & ⋁ | */ -class QAD_UTILS_EXPORT QPIEvaluatorContent +class QPIEvaluatorContent { friend class QPIEvaluator; public: @@ -146,7 +145,7 @@ private: }; -class QAD_UTILS_EXPORT QPIEvaluator +class QPIEvaluator { public: QPIEvaluator() {correct = false ;} @@ -206,4 +205,4 @@ private: inline bool operator ==(QPIEvaluatorTypes::Element e1, QPIEvaluatorTypes::Element e2) {return (e1.type == e2.type && e1.num == e2.num);} inline bool operator !=(QPIEvaluatorTypes::Element e1, QPIEvaluatorTypes::Element e2) {return (e1.type != e2.type || e1.num != e2.num);} -#endif // QPIEVALUATOR_H +#endif // QPIEVALUATOR_P_H diff --git a/utils/qpicalculator/CMakeLists.txt b/utils/qpicalculator/CMakeLists.txt index c7cd5ae..2e5488d 100644 --- a/utils/qpicalculator/CMakeLists.txt +++ b/utils/qpicalculator/CMakeLists.txt @@ -1,14 +1,19 @@ -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;qad_piqt;pip") -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) +find_package(PIP) +if (PIP_FOUND) + + 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_graphic;qad_piqt") + 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() + endif() diff --git a/utils/qpicalculator/mainwindow.cpp b/utils/qpicalculator/mainwindow.cpp index e6825f2..442eddf 100644 --- a/utils/qpicalculator/mainwindow.cpp +++ b/utils/qpicalculator/mainwindow.cpp @@ -258,13 +258,13 @@ void MainWindow::on_buttonGraphicClear_clicked() { void MainWindow::on_tabWidget_currentChanged(int index) { - QPIEvaluator eval; + PIEvaluator 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); + eval.check(Q2PIString(vv)); evaluator.setVariable(Q2PIString(vn), eval.evaluate()); } if (index == 0) on_lineInput_returnPressed();