qdesigner_settings.cpp

来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 267 行

CPP
267
字号
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the Qt Designer of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "qdesigner.h"#include "preferences.h"#include "qdesigner_settings.h"#include "qdesigner_widgetbox.h"#include "qdesigner_workbench.h"#include "qdesigner_propertyeditor.h"#include "qdesigner_objectinspector.h"#include <qdesigner_utils_p.h>#include <QtCore/QVariant>#include <QtCore/QDir>#include <QtGui/QDesktopWidget>#include <QtGui/QStyle>#include <QtCore/qdebug.h>static const char *designerPath = "/.designer";static bool checkTemplatePath(const QString &path, bool create){    QDir current(QDir::current());    if (current.exists(path))        return true;    if (!create)        return false;    if (current.mkpath(path))        return true;    qdesigner_internal::designerWarning(QObject::tr("The template path %1 could not be created.").arg(path));    return false;}QDesignerSettings::QDesignerSettings(){}const QStringList &QDesignerSettings::defaultFormTemplatePaths(){    static QStringList rc;    if (rc.empty()) {        // Ensure default form template paths        const QString templatePath = QLatin1String("/templates");        // home        QString path = QDir::homePath();        path += QLatin1String(designerPath);        path += templatePath;        if (checkTemplatePath(path, true))            rc += path;        // designer/bin: Might be owned by root in some installations, do not force it.        path = qDesigner->applicationDirPath();        path += templatePath;        if (checkTemplatePath(path, false))            rc += path;    }    return rc;}QStringList QDesignerSettings::formTemplatePaths() const{    return value(QLatin1String("FormTemplatePaths"),defaultFormTemplatePaths()).toStringList();}void QDesignerSettings::setFormTemplatePaths(const QStringList &paths){    setValue(QLatin1String("FormTemplatePaths"), paths);}QString QDesignerSettings::defaultUserWidgetBoxXml() const{    QString rc = QDir::homePath();    rc += QLatin1String(designerPath);    rc += QLatin1String("/widgetbox.xml");    return rc;}void QDesignerSettings::saveGeometryFor(const QWidget *w){    Q_ASSERT(w && !w->objectName().isEmpty());    saveGeometryHelper(w, w->objectName());}void QDesignerSettings::setGeometryFor(QWidget *w, const QRect &fallBack) const{    Q_ASSERT(w && !w->objectName().isEmpty());    setGeometryHelper(w, w->objectName(),                      fallBack.isNull() ? QRect(QPoint(0, 0), w->sizeHint()) : fallBack);}void QDesignerSettings::saveGeometryHelper(const QWidget *w, const QString &key){    beginGroup(key);    setValue(QLatin1String("visible"), w->isVisible());    setValue(QLatin1String("geometry"), w->saveGeometry());    endGroup();}void QDesignerSettings::setGeometryHelper(QWidget *w, const QString &key,                                          const QRect &fallBack) const{    QByteArray ba(value(key + QLatin1String("/geometry")).toByteArray());    if (ba.isEmpty()) {        w->move(fallBack.topLeft());        w->resize(fallBack.size());    } else {        w->restoreGeometry(ba);    }    if (value(key + QLatin1String("/visible"), true).toBool())        w->show();}QStringList QDesignerSettings::recentFilesList() const{    return value(QLatin1String("recentFilesList")).toStringList();}void QDesignerSettings::setRecentFilesList(const QStringList &sl){    setValue(QLatin1String("recentFilesList"), sl);}void QDesignerSettings::setShowNewFormOnStartup(bool showIt){    setValue(QLatin1String("newFormDialog/ShowOnStartup"), showIt);}bool QDesignerSettings::showNewFormOnStartup() const{    return value(QLatin1String("newFormDialog/ShowOnStartup"), true).toBool();}QByteArray QDesignerSettings::mainWindowState() const{    return value(QLatin1String("MainWindowState")).toByteArray();}void QDesignerSettings::setMainWindowState(const QByteArray &mainWindowState){    setValue(QLatin1String("MainWindowState"), mainWindowState);}QByteArray QDesignerSettings::toolBoxState() const{    return value(QLatin1String("ToolBoxState")).toByteArray();}void QDesignerSettings::setToolBoxState(const QByteArray &state){    setValue(QLatin1String("ToolBoxState"), state);}void QDesignerSettings::clearBackup(){    remove(QLatin1String("backup/fileListOrg"));    remove(QLatin1String("backup/fileListBak"));}void QDesignerSettings::setBackup(const QMap<QString, QString> &map){    const QStringList org = map.keys();    const QStringList bak = map.values();    setValue(QLatin1String("backup/fileListOrg"), org);    setValue(QLatin1String("backup/fileListBak"), bak);}QMap<QString, QString> QDesignerSettings::backup() const{    const QStringList org = value(QLatin1String("backup/fileListOrg"), QStringList()).toStringList();    const QStringList bak = value(QLatin1String("backup/fileListBak"), QStringList()).toStringList();    QMap<QString, QString> map;    for (int i = 0; i < org.count(); ++i)        map.insert(org.at(i), bak.at(i));    return map;}void QDesignerSettings::setPreferences(const Preferences& p){    beginGroup(QLatin1String("UI"));    setValue(QLatin1String("currentMode"), p.m_uiMode);    setValue(QLatin1String("font"), p.m_font);    setValue(QLatin1String("useFont"), p.m_useFont);    setValue(QLatin1String("writingSystem"), p.m_writingSystem);    endGroup();    // grid    setValue(QLatin1String("defaultGrid"), p.m_defaultGrid.toVariantMap());    // merge template paths    QStringList templatePaths = defaultFormTemplatePaths();    templatePaths += p.m_additionalTemplatePaths;    setFormTemplatePaths(templatePaths);}Preferences QDesignerSettings::preferences() const{    Preferences rc;#ifdef Q_WS_WIN    const UIMode defaultMode = DockedMode;#else    const UIMode defaultMode = TopLevelMode;#endif    rc.m_uiMode = static_cast<UIMode>(value(QLatin1String("UI/currentMode"), defaultMode).toInt());    rc.m_writingSystem = static_cast<QFontDatabase::WritingSystem>(value(QLatin1String("UI/writingSystem"), QFontDatabase::Any).toInt());    rc.m_font = qVariantValue<QFont>(value(QLatin1String("UI/font")));    rc.m_useFont = value(QLatin1String("UI/useFont"), QVariant(false)).toBool();    const QVariantMap defaultGridMap = value(QLatin1String("defaultGrid"), QVariantMap()).toMap();    if (!defaultGridMap.empty())        rc.m_defaultGrid.fromVariantMap(defaultGridMap);    rc.m_additionalTemplatePaths = additionalFormTemplatePaths();    return rc;}QStringList QDesignerSettings::additionalFormTemplatePaths() const{    // get template paths excluding internal ones    QStringList rc = formTemplatePaths();    foreach (QString internalTemplatePath, defaultFormTemplatePaths()) {        const int index = rc.indexOf(internalTemplatePath);        if (index != -1)            rc.removeAt(index);    }    return rc;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?