From 21af552add60aae8cafeee90b195928ac532fafc 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: Fri, 2 Mar 2018 18:51:42 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@360 a8b55f48-bf90-11e4-a774-851b48703e85 --- piqt_utils/piconnedit/piconnedit_main.cpp | 4 ++ project_fs/projectfilesystemwidget.cpp | 17 ++++++++ project_fs/projectfilesystemwidget.h | 2 + project_fs/projectfilesystemwidget.ui | 10 +++++ qad/widgets/evalspinbox.cpp | 49 +++++++++++++++-------- qad/widgets/evalspinbox.h | 3 ++ 6 files changed, 68 insertions(+), 17 deletions(-) diff --git a/piqt_utils/piconnedit/piconnedit_main.cpp b/piqt_utils/piconnedit/piconnedit_main.cpp index c14edea..eef79ac 100644 --- a/piqt_utils/piconnedit/piconnedit_main.cpp +++ b/piqt_utils/piconnedit/piconnedit_main.cpp @@ -2,6 +2,7 @@ #include "piqt_connection_edit.h" #include #include +#include int main(int argc, char * argv[]) { @@ -9,6 +10,9 @@ int main(int argc, char * argv[]) { #if QT_VERSION >= 0x050000 a.setAttribute(Qt::AA_UseHighDpiPixmaps, true); #endif + EvalSpinBox es; + es.show(); + return a.exec(); ConnectionEdit w; if (a.arguments().size() > 1) { QPIConfig cfg(a.arguments()[1]); diff --git a/project_fs/projectfilesystemwidget.cpp b/project_fs/projectfilesystemwidget.cpp index 543d51f..e9cf626 100644 --- a/project_fs/projectfilesystemwidget.cpp +++ b/project_fs/projectfilesystemwidget.cpp @@ -21,6 +21,7 @@ #include #include #include +#include /* class ProjectsModel: public QAbstractItemModel @@ -76,7 +77,11 @@ ProjectFilesystemWidget::ProjectFilesystemWidget(QWidget * parent): QWidget(pare actionOpen_here->setIcon(Utils::Icons::OPENFILE.icon()); actionOpen_external->setIcon(Utils::Icons::OPENFILE.icon()); actionShow_external->setIcon(Core::FileIconProvider::icon(QFileIconProvider::Folder)); + actionCopy_name->setIcon(Utils::Icons::COPY.icon()); + actionCopy_path->setIcon(Utils::Icons::COPY.icon()); popup_menu.addActions(QList() << actionOpen_here << actionOpen_external << actionShow_external); + popup_menu.addSeparator(); + popup_menu.addActions(QList() << actionCopy_name << actionCopy_path); proj_plug = 0; /*QList plugs = ExtensionSystem::PluginManager::allObjects(); QStringList sl; @@ -384,3 +389,15 @@ void ProjectFilesystemWidget::on_actionShow_external_triggered() { Core::FileUtils::showInGraphicalShell(Core::ICore::mainWindow(), menu_target.absoluteFilePath()); } + +void ProjectFilesystemWidget::on_actionCopy_name_triggered() { + if (menu_target.path().isEmpty()) return; + QApplication::clipboard()->setText(menu_target.fileName()); +} + + +void ProjectFilesystemWidget::on_actionCopy_path_triggered() { + if (menu_target.path().isEmpty()) return; + QApplication::clipboard()->setText(menu_target.absoluteFilePath()); +} + diff --git a/project_fs/projectfilesystemwidget.h b/project_fs/projectfilesystemwidget.h index 86c5b41..a7559b0 100644 --- a/project_fs/projectfilesystemwidget.h +++ b/project_fs/projectfilesystemwidget.h @@ -54,6 +54,8 @@ private slots: void on_actionOpen_here_triggered(); void on_actionOpen_external_triggered(); void on_actionShow_external_triggered(); + void on_actionCopy_name_triggered(); + void on_actionCopy_path_triggered(); }; diff --git a/project_fs/projectfilesystemwidget.ui b/project_fs/projectfilesystemwidget.ui index 19447b0..e9c9e48 100644 --- a/project_fs/projectfilesystemwidget.ui +++ b/project_fs/projectfilesystemwidget.ui @@ -104,6 +104,16 @@ Show external ... + + + Copy name + + + + + Copy path + + diff --git a/qad/widgets/evalspinbox.cpp b/qad/widgets/evalspinbox.cpp index e611d92..53353f4 100644 --- a/qad/widgets/evalspinbox.cpp +++ b/qad/widgets/evalspinbox.cpp @@ -196,23 +196,7 @@ void EvalSpinBox::setValue(double val) { void EvalSpinBox::stepBy(int steps) { - QString t = text(); - if (eval.check(t)) { - t = eval.expression(); - QRegExp re("(\\-?\\d+)"); - int pos = 0; - if ((pos = re.indexIn(t)) != -1) { - double v = t.mid(pos, re.matchedLength()).toDouble(); - v += steps; - t.remove(pos, re.matchedLength()); - t.insert(pos, QString::number(v)); - } else { - double v = steps; - t = QString::number(v) + t; - } - eval.check(t); - lineEdit()->setText(eval.expression()); - } + stepByDouble(steps); } @@ -285,6 +269,37 @@ void EvalSpinBox::focusOutEvent(QFocusEvent * event) { } +void EvalSpinBox::wheelEvent(QWheelEvent * event) { + if (event->modifiers().testFlag(Qt::ShiftModifier)) + stepByDouble(event->delta() > 0 ? 0.1 : -0.1); + else + QAbstractSpinBox::wheelEvent(event); +} + + +void EvalSpinBox::stepByDouble(double steps) { + //qDebug() << "step" << steps; + QString t = text(); + if (eval.check(t)) { + t = eval.expression(); + //QRegExp re("(\\-?\\d+)"); + QRegExp re("[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)"); + int pos = 0; + if ((pos = re.indexIn(t)) != -1) { + double v = t.mid(pos, re.matchedLength()).toDouble(); + v += steps; + t.remove(pos, re.matchedLength()); + t.insert(pos, QString::number(v)); + } else { + double v = steps; + t = QString::number(v) + t; + } + eval.check(t); + lineEdit()->setText(eval.expression()); + } +} + + void EvalSpinBox::setDefaultText(const QString & t) { // bool def = (!cw->isHidden()); dt = t; diff --git a/qad/widgets/evalspinbox.h b/qad/widgets/evalspinbox.h index c6b856f..d192cf1 100644 --- a/qad/widgets/evalspinbox.h +++ b/qad/widgets/evalspinbox.h @@ -41,6 +41,9 @@ protected: virtual StepEnabled stepEnabled() const; virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); + virtual void wheelEvent(QWheelEvent *event); + + void stepByDouble(double steps); QWidget * status; QWidget * cw;