From 90a1478af6bde84eac98a932c784cc0619279c86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Wed, 28 Nov 2018 14:48:50 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@462 a8b55f48-bf90-11e4-a774-851b48703e85 --- CMakeLists.txt | 2 +- cd_utils/CMakeLists.txt | 2 +- piqt/CMakeLists.txt | 2 +- piqt_utils/CMakeLists.txt | 4 +-- qad/application/edockwidget.cpp | 13 ++++++++-- qad/application/edockwidget.h | 1 + qad/application/ribbon.cpp | 13 ++++++++-- qad/application/ribbon.h | 1 + qad/blockview/drawtools.cpp | 4 ++- qad/sql_table/sql_table_widget.cpp | 4 +-- qad/utils/qad_types.cpp | 40 ++++++++++++++++++++++++------ qad/utils/qad_types.h | 9 ++++--- qad/widgets/ecombobox.cpp | 2 +- qad/widgets/iconedlabel.h | 2 +- qad/widgets/session_manager.cpp | 5 ++++ qad/widgets/session_manager.h | 4 +++ 16 files changed, 83 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e512717..dc2b3ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,7 +59,7 @@ if (LIB) set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}/usr/local) else() if (DEFINED ANDROID_PLATFORM) - set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}${ANDROID_SYSTEM_LIBRARY_PATH}/usr) + set(CMAKE_INSTALL_PREFIX ${ANDROID_SYSTEM_LIBRARY_PATH}/usr) else() set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}/usr) endif() diff --git a/cd_utils/CMakeLists.txt b/cd_utils/CMakeLists.txt index fa0cd2d..eb75472 100644 --- a/cd_utils/CMakeLists.txt +++ b/cd_utils/CMakeLists.txt @@ -45,7 +45,7 @@ if(LIB) set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}/usr/local) else() if (DEFINED ANDROID_PLATFORM) - set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}${ANDROID_SYSTEM_LIBRARY_PATH}/usr) + set(CMAKE_INSTALL_PREFIX ${ANDROID_SYSTEM_LIBRARY_PATH}/usr) else() set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}/usr) endif() diff --git a/piqt/CMakeLists.txt b/piqt/CMakeLists.txt index 0a3fd02..4ed27c9 100644 --- a/piqt/CMakeLists.txt +++ b/piqt/CMakeLists.txt @@ -44,7 +44,7 @@ else() set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}/usr/local) else() if (DEFINED ANDROID_PLATFORM) - set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}${ANDROID_SYSTEM_LIBRARY_PATH}/usr) + set(CMAKE_INSTALL_PREFIX {ANDROID_SYSTEM_LIBRARY_PATH}/usr) else() set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}/usr) endif() diff --git a/piqt_utils/CMakeLists.txt b/piqt_utils/CMakeLists.txt index c105be4..921d84a 100644 --- a/piqt_utils/CMakeLists.txt +++ b/piqt_utils/CMakeLists.txt @@ -57,12 +57,12 @@ else() qt_install(TARGETS ${PROJECT_NAME} DESTINATION QtBin) else() if(APPLE) - set(CMAKE_INSTALL_PREFIX /usr/local) + set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}$/usr/local) else() if (DEFINED ANDROID_PLATFORM) set(CMAKE_INSTALL_PREFIX ${ANDROID_SYSTEM_LIBRARY_PATH}/usr) else() - set(CMAKE_INSTALL_PREFIX /usr) + set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}$/usr) endif() endif() install(FILES ${out_HDR} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/pip) diff --git a/qad/application/edockwidget.cpp b/qad/application/edockwidget.cpp index 48d683d..ed01283 100644 --- a/qad/application/edockwidget.cpp +++ b/qad/application/edockwidget.cpp @@ -1,5 +1,6 @@ #include "edockwidget.h" #include "qad_types.h" +#include #include @@ -22,9 +23,17 @@ void EDockWidget::setWindowIcon(const QIcon & icon) { QDockWidget::setWindowIcon(icon); if (!icon.isNull()) { lbl_icon->setScaledContents(true); - lbl_icon->setFixedSize(preferredIconSize(1.5)); + lbl_icon->setFixedSize(preferredIconSize(1.5, this)); } -//#endif + //#endif +} + + +bool EDockWidget::event(QEvent * e) { + if (e->type() == QEvent::FontChange || e->type() == QEvent::Polish) { + lbl_icon->setFixedSize(preferredIconSize(1.5, this)); + } + return QDockWidget::event(e); } diff --git a/qad/application/edockwidget.h b/qad/application/edockwidget.h index 9215ae3..c7ac5dd 100644 --- a/qad/application/edockwidget.h +++ b/qad/application/edockwidget.h @@ -23,6 +23,7 @@ public: void setWindowIcon(const QIcon & icon); private: + bool event(QEvent * e); void init(); QFrame * header; diff --git a/qad/application/ribbon.cpp b/qad/application/ribbon.cpp index 5a9c9f6..c062f12 100644 --- a/qad/application/ribbon.cpp +++ b/qad/application/ribbon.cpp @@ -24,9 +24,12 @@ Ribbon::~Ribbon() { bool Ribbon::eventFilter(QObject * o, QEvent * e) { + //qDebug() << e; if (o == parent) { if (e->type() == QEvent::Resize || e->type() == QEvent::WindowActivate) _resize(); + if (e->type() == QEvent::FontChange || e->type() == QEvent::Polish) + _setIconsSize(); return QToolBar::eventFilter(o, e); } if (e->type() == QEvent::ActionChanged) { @@ -57,6 +60,13 @@ void Ribbon::_resize() { } +void Ribbon::_setIconsSize() { + qDebug() << "resize" << preferredIconSize() << QApplication::font(); + setTabIconSize(preferredIconSize(2, this)); + setIconSize(preferredIconSize(3, this)); +} + + void Ribbon::setVisible(bool yes) { QToolBar::setVisible(yes); if (parent == 0) return; @@ -183,8 +193,7 @@ void Ribbon::init() { parent->addToolBar(Qt::TopToolBarArea, this); parent->menuBar()->hide(); tab->setAutoFillBackground(false); - setTabIconSize(preferredIconSize(2)); - setIconSize(preferredIconSize(3)); + _setIconsSize(); } diff --git a/qad/application/ribbon.h b/qad/application/ribbon.h index e59826d..c2fb617 100644 --- a/qad/application/ribbon.h +++ b/qad/application/ribbon.h @@ -36,6 +36,7 @@ private: bool eventFilter(QObject * o, QEvent * e); void timerEvent(QTimerEvent * e); void _resize(); + void _setIconsSize(); int hovered, delay; bool delay_e; diff --git a/qad/blockview/drawtools.cpp b/qad/blockview/drawtools.cpp index 1591f81..10532bc 100644 --- a/qad/blockview/drawtools.cpp +++ b/qad/blockview/drawtools.cpp @@ -229,7 +229,7 @@ actions_Z_up(this), actions_Z_top(this), actions_Z_down(this), actions_Z_bottom( widget_props = new QWidget(); ui = new Ui::DrawTools(); ui->setupUi(widget_props); - ui->labelPen->setMinimumSize(preferredIconSize(1.5)); + ui->labelPen->setMinimumSize(preferredIconSize(1.5, widget_props)); ui->labelPen->setMaximumSize(ui->labelPen->minimumSize()); ui->labelBrush->setMinimumSize(ui->labelPen->minimumSize()); ui->labelBrush->setMaximumSize(ui->labelBrush->minimumSize()); @@ -350,6 +350,8 @@ void DrawTools::setAlignCompact(bool yes) { bool DrawTools::eventFilter(QObject * o, QEvent * e) { QMouseEvent * me = (QMouseEvent*)e; QPointF sp; + if (e->type() == QEvent::FontChange || e->type() == QEvent::Polish) + ui->labelPen->setMinimumSize(preferredIconSize(1.5, widget_props)); if (e->type() == QEvent::MouseButtonPress || e->type() == QEvent::MouseMove) sp = quantize(view_->mapToScene(me->pos()), view_->gridStep()); QRectF mr; diff --git a/qad/sql_table/sql_table_widget.cpp b/qad/sql_table/sql_table_widget.cpp index 62c209e..8caf1be 100644 --- a/qad/sql_table/sql_table_widget.cpp +++ b/qad/sql_table/sql_table_widget.cpp @@ -336,8 +336,8 @@ SQLTableWidget::SQLTableWidget(QWidget * parent): QWidget(parent), filters_group connection_name = QSqlDatabase::defaultConnection; filters_active = first_update = true; table_opened = read_only = false; - ui->labelNew->setFixedSize(preferredIconSize(1.2)); - ui->labelFilter->setFixedSize(preferredIconSize(1.2)); + ui->labelNew->setFixedSize(preferredIconSize(1.2, this)); + ui->labelFilter->setFixedSize(preferredIconSize(1.2, this)); ui->view->installEventFilter(this); ui->view->viewport()->installEventFilter(this); ui->view->horizontalHeader()->setSortIndicator(0, Qt::AscendingOrder); diff --git a/qad/utils/qad_types.cpp b/qad/utils/qad_types.cpp index fe3f2b3..8e4e62e 100644 --- a/qad/utils/qad_types.cpp +++ b/qad/utils/qad_types.cpp @@ -1,6 +1,11 @@ #include "qad_types.h" #include #include +#include +#if QT_VERSION >= 0x050000 +# include +# include +#endif __QADTypesRegistrator__ __registrator__; @@ -125,22 +130,43 @@ QString uniqueName(QString n, const QStringList & names) { } -int fontHeight() { +int fontHeight(QWidget * w) { #ifdef Q_OS_ANDROID static int ret = QApplication::fontMetrics().size(0, "0").height(); return ret; +#else +# if QT_VERSION >= 0x050000 + //qDebug() << "fontHeight" << w; + if (w) { + QWidget * pw = w->window(); + if (pw) { + /*QWindow * wnd = pw->windowHandle(); + //qDebug() << "wnd" << wnd; + if (wnd) { + QScreen * s = wnd->screen(); + qDebug() << "s" << s; + if (s) { + qDebug() << "scales:"; + qDebug() << QApplication::fontMetrics().size(0, "0").height() << QApplication::fontMetrics().xHeight(); + qDebug() << s->logicalDotsPerInch() << s->logicalDotsPerInch()/96.*QApplication::font().pointSizeF(); + } + }*/ + return QFontMetrics(QApplication::font(), pw).size(0, "0").height(); + } + } +# endif #endif return QApplication::fontMetrics().size(0, "0").height(); } -int lineThickness() { - return qMax(qRound(fontHeight() / 15.), 1); +int lineThickness(QWidget * w) { + return qMax(qRound(fontHeight(w) / 15.), 1); } -QSize preferredIconSize(float x) { - int s = qMax(8, qRound(fontHeight() * x)); +QSize preferredIconSize(float x, QWidget * w) { + int s = qMax(8, qRound(fontHeight(w) * x)); #ifdef Q_OS_MACOS s /= 1.25; #endif @@ -148,6 +174,6 @@ QSize preferredIconSize(float x) { } -double appScale() { - return qMax(fontHeight() / 15., 1.); +double appScale(QWidget * w) { + return qMax(fontHeight(w) / 15., 1.); } diff --git a/qad/utils/qad_types.h b/qad/utils/qad_types.h index 867cebe..8ef986b 100644 --- a/qad/utils/qad_types.h +++ b/qad/utils/qad_types.h @@ -117,10 +117,11 @@ inline QRectF enlargedRect(const QRectF & r, qreal dx, qreal dy, qreal v) { QVariant::Type typeFromLetter(const QString & l); QString uniqueName(QString n, const QStringList & names); -int fontHeight(); -int lineThickness(); -QSize preferredIconSize(float x = 1.f); -double appScale(); + +int fontHeight(QWidget * w = 0); +int lineThickness(QWidget * w = 0); +QSize preferredIconSize(float x = 1.f, QWidget * w = 0); +double appScale(QWidget * w = 0); #endif // QAD_TYPES_H diff --git a/qad/widgets/ecombobox.cpp b/qad/widgets/ecombobox.cpp index 15e8c4e..30def57 100644 --- a/qad/widgets/ecombobox.cpp +++ b/qad/widgets/ecombobox.cpp @@ -38,7 +38,7 @@ EComboBox::EComboBox(QWidget * parent): QComboBox(parent) { iv.setMinimumHeight(100); icon.setPixmap(QPixmap(":/icons/edit-find.png")); icon.setScaledContents(true); - icon.setFixedSize(preferredIconSize(1.2)); + icon.setFixedSize(preferredIconSize(1.2, this)); ifont = nfont = font(); ifont.setItalic(true); #if QT_VERSION >= 0x040700 diff --git a/qad/widgets/iconedlabel.h b/qad/widgets/iconedlabel.h index 8bce32d..dc5cea0 100644 --- a/qad/widgets/iconedlabel.h +++ b/qad/widgets/iconedlabel.h @@ -24,7 +24,7 @@ public: explicit IconedLabel(QWidget * parent = 0): QFrame(parent) { label_.setAlignment(Qt::AlignCenter); icon_.setAlignment(Qt::AlignCenter); - size_ = preferredIconSize(); + size_ = preferredIconSize(-1, this); setDirection(LeftToRight); } diff --git a/qad/widgets/session_manager.cpp b/qad/widgets/session_manager.cpp index fa06bd0..b064475 100644 --- a/qad/widgets/session_manager.cpp +++ b/qad/widgets/session_manager.cpp @@ -58,6 +58,8 @@ void SessionManager::save() { sr.setValue(spins[i].first, spins[i].second->value(), false); for (int i = 0; i < spinsliders.size(); ++i) sr.setValue(spinsliders[i].first, spinsliders[i].second->value(), false); + for (int i = 0; i < evals.size(); ++i) + sr.setValue(evals[i].first, evals[i].second->expression(), false); for (int i = 0; i < tabs.size(); ++i) sr.setValue(tabs[i].first, tabs[i].second->currentIndex(), false); for (int i = 0; i < buttons.size(); ++i) @@ -134,6 +136,8 @@ void SessionManager::load(bool onlyMainwindow) { spins[i].second->setValue(sr.getValue(spins[i].first, spins[i].second->value())); for (int i = 0; i < spinsliders.size(); ++i) spinsliders[i].second->setValue(sr.getValue(spinsliders[i].first, spinsliders[i].second->value())); + for (int i = 0; i < evals.size(); ++i) + evals[i].second->setExpression(sr.getValue(evals[i].first, evals[i].second->expression())); for (int i = 0; i < tabs.size(); ++i) { QTabWidget * t = tabs[i].second; int v = sr.getValue(tabs[i].first, t->currentIndex()); @@ -185,6 +189,7 @@ void SessionManager::clear(bool with_filename) { dspins.clear(); spins.clear(); spinsliders.clear(); + evals.clear(); tabs.clear(); buttons.clear(); stacks.clear(); diff --git a/qad/widgets/session_manager.h b/qad/widgets/session_manager.h index 107109c..40c8d91 100644 --- a/qad/widgets/session_manager.h +++ b/qad/widgets/session_manager.h @@ -13,6 +13,7 @@ #include #include #include "spinslider.h" +#include "evalspinbox.h" #include "qpiconfig.h" /// for all children widgets of "QMainWindow"s and MainWidgets @@ -37,6 +38,7 @@ public: void addEntry(QDoubleSpinBox * e) {dspins.push_back(QPair(e->objectName(), e));} void addEntry(QSpinBox * e) {spins.push_back(QPair(e->objectName(), e));} void addEntry(SpinSlider * e) {spinsliders.push_back(QPair(e->objectName(), e));} + void addEntry(EvalSpinBox * e) {evals.push_back(QPair(e->objectName(), e));} void addEntry(QTabWidget * e) {tabs.push_back(QPair(e->objectName(), e));} void addEntry(QAction * e) {actions.push_back(QPair(e->objectName(), e));} void addEntry(QAbstractButton * e) {buttons.push_back(QPair(e->objectName(), e));} @@ -51,6 +53,7 @@ public: void addEntry(const QString & name, QDoubleSpinBox * e) {dspins.push_back(QPair(name, e));} void addEntry(const QString & name, QSpinBox * e) {spins.push_back(QPair(name, e));} void addEntry(const QString & name, SpinSlider * e) {spinsliders.push_back(QPair(name, e));} + void addEntry(const QString & name, EvalSpinBox * e) {evals.push_back(QPair(name, e));} void addEntry(const QString & name, QTabWidget * e) {tabs.push_back(QPair(name, e));} void addEntry(const QString & name, QAbstractButton * e) {buttons.push_back(QPair(name, e));} void addEntry(const QString & name, QStackedWidget * e) {stacks.push_back(QPair(name, e));} @@ -78,6 +81,7 @@ private: QVector > dspins; QVector > spins; QVector > spinsliders; + QVector > evals; QVector > tabs; QVector > buttons; QVector > stacks;