123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- /****************************************************************************
- **
- ** Copyright (C) 2016 The Qt Company Ltd.
- ** Contact: https://www.qt.io/licensing/
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** Commercial License Usage
- ** Licensees holding valid commercial Qt licenses may use this file in
- ** accordance with the commercial license agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and The Qt Company. For licensing terms
- ** and conditions see https://www.qt.io/terms-conditions. For further
- ** information use the contact form at https://www.qt.io/contact-us.
- **
- ** GNU Lesser General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU Lesser
- ** General Public License version 3 as published by the Free Software
- ** Foundation and appearing in the file LICENSE.LGPL3 included in the
- ** packaging of this file. Please review the following information to
- ** ensure the GNU Lesser General Public License version 3 requirements
- ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License version 2.0 or (at your option) the GNU General
- ** Public license version 3 or any later version approved by the KDE Free
- ** Qt Foundation. The licenses are as published by the Free Software
- ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
- ** included in the packaging of this file. Please review the following
- ** information to ensure the GNU General Public License requirements will
- ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
- ** https://www.gnu.org/licenses/gpl-3.0.html.
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
- #include "qtpropertybrowserutils_p.h"
- #include <QtWidgets/QApplication>
- #include <QtGui/QPainter>
- #include <QtWidgets/QHBoxLayout>
- #include <QtGui/QMouseEvent>
- #include <QtWidgets/QCheckBox>
- #include <QtWidgets/QLineEdit>
- #include <QtWidgets/QMenu>
- #include <QtCore/QLocale>
- QT_BEGIN_NAMESPACE
- QtCursorDatabase::QtCursorDatabase()
- {
- appendCursor(Qt::ArrowCursor, QCoreApplication::translate("QtCursorDatabase", "Arrow"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-arrow.png")));
- appendCursor(Qt::UpArrowCursor, QCoreApplication::translate("QtCursorDatabase", "Up Arrow"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-uparrow.png")));
- appendCursor(Qt::CrossCursor, QCoreApplication::translate("QtCursorDatabase", "Cross"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-cross.png")));
- appendCursor(Qt::WaitCursor, QCoreApplication::translate("QtCursorDatabase", "Wait"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-wait.png")));
- appendCursor(Qt::IBeamCursor, QCoreApplication::translate("QtCursorDatabase", "IBeam"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-ibeam.png")));
- appendCursor(Qt::SizeVerCursor, QCoreApplication::translate("QtCursorDatabase", "Size Vertical"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizev.png")));
- appendCursor(Qt::SizeHorCursor, QCoreApplication::translate("QtCursorDatabase", "Size Horizontal"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizeh.png")));
- appendCursor(Qt::SizeFDiagCursor, QCoreApplication::translate("QtCursorDatabase", "Size Backslash"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizef.png")));
- appendCursor(Qt::SizeBDiagCursor, QCoreApplication::translate("QtCursorDatabase", "Size Slash"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizeb.png")));
- appendCursor(Qt::SizeAllCursor, QCoreApplication::translate("QtCursorDatabase", "Size All"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizeall.png")));
- appendCursor(Qt::BlankCursor, QCoreApplication::translate("QtCursorDatabase", "Blank"),
- QIcon());
- appendCursor(Qt::SplitVCursor, QCoreApplication::translate("QtCursorDatabase", "Split Vertical"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-vsplit.png")));
- appendCursor(Qt::SplitHCursor, QCoreApplication::translate("QtCursorDatabase", "Split Horizontal"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-hsplit.png")));
- appendCursor(Qt::PointingHandCursor, QCoreApplication::translate("QtCursorDatabase", "Pointing Hand"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-hand.png")));
- appendCursor(Qt::ForbiddenCursor, QCoreApplication::translate("QtCursorDatabase", "Forbidden"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-forbidden.png")));
- appendCursor(Qt::OpenHandCursor, QCoreApplication::translate("QtCursorDatabase", "Open Hand"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-openhand.png")));
- appendCursor(Qt::ClosedHandCursor, QCoreApplication::translate("QtCursorDatabase", "Closed Hand"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-closedhand.png")));
- appendCursor(Qt::WhatsThisCursor, QCoreApplication::translate("QtCursorDatabase", "What's This"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-whatsthis.png")));
- appendCursor(Qt::BusyCursor, QCoreApplication::translate("QtCursorDatabase", "Busy"),
- QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-busy.png")));
- }
- void QtCursorDatabase::clear()
- {
- m_cursorNames.clear();
- m_cursorIcons.clear();
- m_valueToCursorShape.clear();
- m_cursorShapeToValue.clear();
- }
- void QtCursorDatabase::appendCursor(Qt::CursorShape shape, const QString &name, const QIcon &icon)
- {
- if (m_cursorShapeToValue.contains(shape))
- return;
- const int value = m_cursorNames.count();
- m_cursorNames.append(name);
- m_cursorIcons.insert(value, icon);
- m_valueToCursorShape.insert(value, shape);
- m_cursorShapeToValue.insert(shape, value);
- }
- QStringList QtCursorDatabase::cursorShapeNames() const
- {
- return m_cursorNames;
- }
- QMap<int, QIcon> QtCursorDatabase::cursorShapeIcons() const
- {
- return m_cursorIcons;
- }
- QString QtCursorDatabase::cursorToShapeName(const QCursor &cursor) const
- {
- int val = cursorToValue(cursor);
- if (val >= 0)
- return m_cursorNames.at(val);
- return QString();
- }
- QIcon QtCursorDatabase::cursorToShapeIcon(const QCursor &cursor) const
- {
- int val = cursorToValue(cursor);
- return m_cursorIcons.value(val);
- }
- int QtCursorDatabase::cursorToValue(const QCursor &cursor) const
- {
- #ifndef QT_NO_CURSOR
- Qt::CursorShape shape = cursor.shape();
- if (m_cursorShapeToValue.contains(shape))
- return m_cursorShapeToValue[shape];
- #endif
- return -1;
- }
- #ifndef QT_NO_CURSOR
- QCursor QtCursorDatabase::valueToCursor(int value) const
- {
- if (m_valueToCursorShape.contains(value))
- return QCursor(m_valueToCursorShape[value]);
- return QCursor();
- }
- #endif
- QPixmap QtPropertyBrowserUtils::brushValuePixmap(const QBrush &b)
- {
- QImage img(16, 16, QImage::Format_ARGB32_Premultiplied);
- img.fill(0);
- QPainter painter(&img);
- painter.setCompositionMode(QPainter::CompositionMode_Source);
- painter.fillRect(0, 0, img.width(), img.height(), b);
- QColor color = b.color();
- if (color.alpha() != 255) { // indicate alpha by an inset
- QBrush opaqueBrush = b;
- color.setAlpha(255);
- opaqueBrush.setColor(color);
- painter.fillRect(img.width() / 4, img.height() / 4,
- img.width() / 2, img.height() / 2, opaqueBrush);
- }
- painter.end();
- return QPixmap::fromImage(img);
- }
- QIcon QtPropertyBrowserUtils::brushValueIcon(const QBrush &b)
- {
- return QIcon(brushValuePixmap(b));
- }
- QString QtPropertyBrowserUtils::colorValueText(const QColor &c)
- {
- return QCoreApplication::translate("QtPropertyBrowserUtils", "[%1, %2, %3] (%4)")
- .arg(c.red()).arg(c.green()).arg(c.blue()).arg(c.alpha());
- }
- QPixmap QtPropertyBrowserUtils::fontValuePixmap(const QFont &font)
- {
- QFont f = font;
- QImage img(16, 16, QImage::Format_ARGB32_Premultiplied);
- img.fill(0);
- QPainter p(&img);
- p.setRenderHint(QPainter::TextAntialiasing, true);
- p.setRenderHint(QPainter::Antialiasing, true);
- f.setPointSize(13);
- p.setFont(f);
- QTextOption t;
- t.setAlignment(Qt::AlignCenter);
- p.drawText(QRect(0, 0, 16, 16), QString(QLatin1Char('A')), t);
- return QPixmap::fromImage(img);
- }
- QIcon QtPropertyBrowserUtils::fontValueIcon(const QFont &f)
- {
- return QIcon(fontValuePixmap(f));
- }
- QString QtPropertyBrowserUtils::fontValueText(const QFont &f)
- {
- return QCoreApplication::translate("QtPropertyBrowserUtils", "[%1, %2]")
- .arg(f.family()).arg(f.pointSize());
- }
- QString QtPropertyBrowserUtils::dateFormat()
- {
- QLocale loc;
- QString format = loc.dateFormat(QLocale::ShortFormat);
- // Change dd.MM.yy, MM/dd/yy to 4 digit years
- if (format.count(QLatin1Char('y')) == 2)
- format.insert(format.indexOf(QLatin1Char('y')), QLatin1String("yy"));
- return format;
- }
- QString QtPropertyBrowserUtils::timeFormat()
- {
- QLocale loc;
- // ShortFormat is missing seconds on UNIX.
- return loc.timeFormat(QLocale::LongFormat);
- }
- QString QtPropertyBrowserUtils::dateTimeFormat()
- {
- QString format = dateFormat();
- format += QLatin1Char(' ');
- format += timeFormat();
- return format;
- }
- QtBoolEdit::QtBoolEdit(QWidget *parent) :
- QWidget(parent),
- m_checkBox(new QCheckBox(this)),
- m_textVisible(true)
- {
- QHBoxLayout *lt = new QHBoxLayout;
- if (QApplication::layoutDirection() == Qt::LeftToRight)
- lt->setContentsMargins(4, 0, 0, 0);
- else
- lt->setContentsMargins(0, 0, 4, 0);
- lt->addWidget(m_checkBox);
- setLayout(lt);
- connect(m_checkBox, SIGNAL(toggled(bool)), this, SIGNAL(toggled(bool)));
- setFocusProxy(m_checkBox);
- m_checkBox->setText(tr("True"));
- }
- void QtBoolEdit::setTextVisible(bool textVisible)
- {
- if (m_textVisible == textVisible)
- return;
- m_textVisible = textVisible;
- if (m_textVisible)
- m_checkBox->setText(isChecked() ? tr("True") : tr("False"));
- else
- m_checkBox->setText(QString());
- }
- Qt::CheckState QtBoolEdit::checkState() const
- {
- return m_checkBox->checkState();
- }
- void QtBoolEdit::setCheckState(Qt::CheckState state)
- {
- m_checkBox->setCheckState(state);
- }
- bool QtBoolEdit::isChecked() const
- {
- return m_checkBox->isChecked();
- }
- void QtBoolEdit::setChecked(bool c)
- {
- m_checkBox->setChecked(c);
- if (!m_textVisible)
- return;
- m_checkBox->setText(isChecked() ? tr("True") : tr("False"));
- }
- bool QtBoolEdit::blockCheckBoxSignals(bool block)
- {
- return m_checkBox->blockSignals(block);
- }
- void QtBoolEdit::mousePressEvent(QMouseEvent *event)
- {
- if (event->buttons() == Qt::LeftButton) {
- m_checkBox->click();
- event->accept();
- } else {
- QWidget::mousePressEvent(event);
- }
- }
- QT_END_NAMESPACE
|