Skip to content
Snippets Groups Projects
debuggeractions.h 5.23 KiB
Newer Older
hjk's avatar
hjk committed
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact:  Qt Software Information (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
**
**************************************************************************/

#ifndef DEBUGGER_ACTIONS_H
#define DEBUGGER_ACTIONS_H

#include <QtCore/QHash>
#include <QtCore/QString>
#include <QtCore/QVariant>
hjk's avatar
hjk committed
#include <QtCore/QList>
#include <QtGui/QAction>

QT_BEGIN_NAMESPACE
class QSettings;
QT_END_NAMESPACE

hjk's avatar
hjk committed

namespace Core {
namespace Utils {
hjk's avatar
hjk committed

enum ApplyMode { ImmediateApply, DeferedApply };

class SavedAction : public QAction
    SavedAction(QObject *parent = 0);

    virtual QVariant value() const;
    Q_SLOT virtual void setValue(const QVariant &value, bool doemit = true);

    virtual QVariant defaultValue() const;
    Q_SLOT virtual void setDefaultValue(const QVariant &value);

    virtual QAction *updatedAction(const QString &newText);
    Q_SLOT virtual void trigger(const QVariant &data);

    // used for persistency
    virtual QString settingsKey() const;
    Q_SLOT virtual void setSettingsKey(const QString &key);
    Q_SLOT virtual void setSettingsKey(const QString &group, const QString &key);

    virtual QString settingsGroup() const;
    Q_SLOT virtual void setSettingsGroup(const QString &group);

    virtual void readSettings(QSettings *settings);
    Q_SLOT virtual void writeSettings(QSettings *settings);
    
    virtual void connectWidget(QWidget *widget, ApplyMode applyMode = DeferedApply);
    virtual void disconnectWidget();
hjk's avatar
hjk committed
    Q_SLOT virtual void apply(QSettings *settings);

    virtual QString textPattern() const;
    Q_SLOT virtual void setTextPattern(const QString &value);

    QString toString() const;

signals:
    void valueChanged(const QVariant &newValue);

private:
    Q_SLOT void uncheckableButtonClicked();
    Q_SLOT void checkableButtonClicked(bool);
    Q_SLOT void lineEditEditingFinished();
    Q_SLOT void pathChooserEditingFinished();
    Q_SLOT void actionTriggered(bool);

    QVariant m_value;
    QVariant m_defaultValue;
    QString m_settingsKey;
    QString m_settingsGroup;
    QString m_textPattern;
    QString m_textData;
    QWidget *m_widget;
    ApplyMode m_applyMode;
class SavedActionSet
    SavedActionSet() {}
    ~SavedActionSet() {}
    void insert(SavedAction *action, QWidget *widget);
    void apply(QSettings *settings);
    void finish();
    void clear() { m_list.clear(); }
    QList<SavedAction *> m_list;
} // namespace Utils
} // namespace Core


namespace Debugger {
namespace Internal {
class DebuggerSettings : public QObject
    DebuggerSettings(QObject *parent = 0);
    ~DebuggerSettings();
    void insertItem(int code, Core::Utils::SavedAction *item);
    Core::Utils::SavedAction *item(int code);
hjk's avatar
hjk committed
    QString dump();

public slots:
    void readSettings(QSettings *settings);
    void writeSettings(QSettings *settings);

private:
    QHash<int, Core::Utils::SavedAction *> m_items; 
};


///////////////////////////////////////////////////////////

enum DebuggerActionCode
hjk's avatar
hjk committed
{
    // General
    SettingsDialog,
    AdjustColumnWidths,
    AlwaysAdjustColumnWidths,
hjk's avatar
hjk committed
    AutoQuit,
    TerminalApplication,
hjk's avatar
hjk committed
    LockView,

    // Gdb
    GdbLocation,
    GdbEnvironment,
    GdbScriptFile,

    // Watchers & Locals
    WatchExpression,
    WatchExpressionInWindow,
hjk's avatar
hjk committed
    RemoveWatchExpression,
    WatchModelUpdate,
hjk's avatar
hjk committed
    UseToolTips,
    AssignValue,
hjk's avatar
hjk committed

hjk's avatar
hjk committed
    RecheckDumpers,
hjk's avatar
hjk committed
    UsePrebuiltDumpers,
    UseQtDumpers,
hjk's avatar
hjk committed
    PrebuiltDumpersLocation,
    BuildDumpersOnTheFly,
hjk's avatar
hjk committed
    UseDumpers,
    DebugDumpers,

    // Source List
    ListSourceFiles,

    // Running
hjk's avatar
hjk committed

    // Breakpoints
    SynchronizeBreakpoints,
    AllPluginBreakpoints,
    SelectedPluginBreakpoints,
    NoPluginBreakpoints,
    SelectedPluginBreakpointsPattern,

hjk's avatar
hjk committed
    // Registers
    FormatHexadecimal,
    FormatDecimal,
    FormatOctal,
    FormatBinary,
    FormatRaw,
    FormatNatural,
hjk's avatar
hjk committed

// singleton access
DebuggerSettings *theDebuggerSettings();
Core::Utils::SavedAction *theDebuggerAction(int code);
hjk's avatar
hjk committed

// convienience
bool theDebuggerBoolSetting(int code);
QString theDebuggerStringSetting(int code);
hjk's avatar
hjk committed

} // namespace Internal
} // namespace Debugger

#endif // DEBUGGER_WATCHWINDOW_H