Merge branch '0.9.1-beta' of git@scm.dev.nokia.troll.no:creator/mainline into 0.9.1-beta

This commit is contained in:
mae
2008-12-11 14:12:24 +01:00
26 changed files with 529 additions and 199 deletions

View File

@@ -69,7 +69,7 @@ static const char *HELP_OPTION4 = "--help";
static const char *VERSION_OPTION = "-version";
static const char *CLIENT_OPTION = "-client";
typedef QSet<ExtensionSystem::PluginSpec *> PluginSpecSet;
typedef QList<ExtensionSystem::PluginSpec *> PluginSpecSet;
// Helpers for displaying messages. Note that there is no console on Windows.
#ifdef Q_WS_WIN

View File

@@ -37,6 +37,7 @@
#include <TranslationUnit.h>
#include <cplusplus/LookupContext.h>
#include <cplusplus/ResolveExpression.h>
#include <cplusplus/pp.h>
using namespace CPlusPlus;
@@ -53,9 +54,13 @@ void TypeOfExpression::setDocuments(const QMap<QString, Document::Ptr> &document
QList<TypeOfExpression::Result> TypeOfExpression::operator()(const QString &expression,
Document::Ptr document,
Symbol *lastVisibleSymbol)
Symbol *lastVisibleSymbol,
PreprocessMode mode)
{
Document::Ptr expressionDoc = documentForExpression(expression);
QString code = expression;
if (mode == Preprocess)
code = preprocessedExpression(expression, m_documents, document);
Document::Ptr expressionDoc = documentForExpression(code);
m_ast = extractExpressionAST(expressionDoc);
m_lookupContext = LookupContext(lastVisibleSymbol, expressionDoc,
@@ -97,3 +102,34 @@ Document::Ptr TypeOfExpression::documentForExpression(const QString &expression)
doc->parse(Document::ParseExpression);
return doc;
}
void TypeOfExpression::processEnvironment(QMap<QString, Document::Ptr> documents,
Document::Ptr doc, Environment *env,
QSet<QString> *processed) const
{
if (processed->contains(doc->fileName()))
return;
processed->insert(doc->fileName());
foreach (const Document::Include &incl, doc->includes()) {
processEnvironment(documents,
documents.value(incl.fileName()),
env, processed);
}
foreach (const Macro &macro, doc->definedMacros())
env->bind(macro);
}
QString TypeOfExpression::preprocessedExpression(const QString &expression,
QMap<QString, Document::Ptr> documents,
Document::Ptr thisDocument) const
{
Environment env;
QSet<QString> processed;
processEnvironment(documents, thisDocument,
&env, &processed);
const QByteArray code = expression.toUtf8();
pp preproc(0, env);
QByteArray preprocessedCode;
preproc("<expression>", code, &preprocessedCode);
return QString::fromUtf8(preprocessedCode);
}

View File

@@ -43,6 +43,9 @@
namespace CPlusPlus {
class Environment;
class Macro;
class CPLUSPLUS_EXPORT TypeOfExpression
{
public:
@@ -60,6 +63,11 @@ public:
*/
void setDocuments(const QMap<QString, Document::Ptr> &documents);
enum PreprocessMode {
NoPreprocess,
Preprocess
};
/**
* Returns a list of possible fully specified types associated with the
* given expression.
@@ -73,7 +81,8 @@ public:
* @param lastVisibleSymbol The last visible symbol in the document.
*/
QList<Result> operator()(const QString &expression, Document::Ptr document,
Symbol *lastVisibleSymbol);
Symbol *lastVisibleSymbol,
PreprocessMode mode = NoPreprocess);
/**
* Returns the AST of the last evaluated expression.
@@ -91,6 +100,14 @@ private:
ExpressionAST *extractExpressionAST(Document::Ptr doc) const;
Document::Ptr documentForExpression(const QString &expression) const;
void processEnvironment(QMap<QString, CPlusPlus::Document::Ptr> documents,
CPlusPlus::Document::Ptr doc, CPlusPlus::Environment *env,
QSet<QString> *processed) const;
QString preprocessedExpression(const QString &expression,
QMap<QString, CPlusPlus::Document::Ptr> documents,
CPlusPlus::Document::Ptr thisDocument) const;
QMap<QString, Document::Ptr> m_documents;
ExpressionAST *m_ast;
LookupContext m_lookupContext;

View File

@@ -129,7 +129,7 @@ bool OptionsParser::checkForNoLoadOption()
"The plugin '%1' does not exist.").arg(m_currentArg);
m_hasError = true;
} else {
m_pmPrivate->pluginSpecs.remove(spec);
m_pmPrivate->pluginSpecs.removeAll(spec);
delete spec;
m_isDependencyRefreshNeeded = true;
}

View File

@@ -48,7 +48,7 @@
#include <QTest>
#endif
typedef QSet<ExtensionSystem::PluginSpec *> PluginSpecSet;
typedef QList<ExtensionSystem::PluginSpec *> PluginSpecSet;
enum { debugLeaks = 0 };
@@ -162,6 +162,11 @@ enum { debugLeaks = 0 };
using namespace ExtensionSystem;
using namespace ExtensionSystem::Internal;
static bool lessThanByPluginName(const PluginSpec *one, const PluginSpec *two)
{
return one->name() < two->name();
}
PluginManager *PluginManager::m_instance = 0;
/*!
@@ -306,7 +311,7 @@ QStringList PluginManager::arguments() const
}
/*!
\fn QSet<PluginSpec *> PluginManager::plugins() const
\fn QList<PluginSpec *> PluginManager::plugins() const
List of all plugin specifications that have been found in the plugin search paths.
This list is valid directly after the setPluginPaths() call.
The plugin specifications contain the information from the plugins' xml description files
@@ -315,7 +320,7 @@ QStringList PluginManager::arguments() const
\sa setPluginPaths()
*/
QSet<PluginSpec *> PluginManager::plugins() const
QList<PluginSpec *> PluginManager::plugins() const
{
return d->pluginSpecs;
}
@@ -703,9 +708,11 @@ void PluginManagerPrivate::readPluginPaths()
foreach (const QString &specFile, specFiles) {
PluginSpec *spec = new PluginSpec;
spec->d->read(specFile);
pluginSpecs.insert(spec);
pluginSpecs.append(spec);
}
resolveDependencies();
// ensure deterministic plugin load order by sorting
qSort(pluginSpecs.begin(), pluginSpecs.end(), lessThanByPluginName);
emit q->pluginsChanged();
}

View File

@@ -101,7 +101,7 @@ public:
void loadPlugins();
QStringList pluginPaths() const;
void setPluginPaths(const QStringList &paths);
QSet<PluginSpec *> plugins() const;
QList<PluginSpec *> plugins() const;
void setFileExtension(const QString &extension);
QString fileExtension() const;

View File

@@ -66,7 +66,7 @@ public:
void loadPlugin(PluginSpec *spec, PluginSpec::State destState);
void resolveDependencies();
QSet<PluginSpec *> pluginSpecs;
QList<PluginSpec *> pluginSpecs;
QList<PluginSpec *> testSpecs;
QStringList pluginPaths;
QString extension;

View File

@@ -693,10 +693,10 @@ int PluginSpecPrivate::versionCompare(const QString &version1, const QString &ve
}
/*!
\fn bool PluginSpecPrivate::resolveDependencies(const QSet<PluginSpec *> &specs)
\fn bool PluginSpecPrivate::resolveDependencies(const QList<PluginSpec *> &specs)
\internal
*/
bool PluginSpecPrivate::resolveDependencies(const QSet<PluginSpec *> &specs)
bool PluginSpecPrivate::resolveDependencies(const QList<PluginSpec *> &specs)
{
if (hasError)
return false;

View File

@@ -56,7 +56,7 @@ public:
bool read(const QString &fileName);
bool provides(const QString &pluginName, const QString &version) const;
bool resolveDependencies(const QSet<PluginSpec *> &specs);
bool resolveDependencies(const QList<PluginSpec *> &specs);
bool loadLibrary();
bool initializePlugin();
bool initializeExtensions();

View File

@@ -485,7 +485,7 @@ void CPPEditor::jumpToDefinition()
unsigned lineno = tc.blockNumber() + 1;
foreach (const Document::Include &incl, doc->includes()) {
if (incl.line() == lineno) {
if (TextEditor::BaseTextEditor::openEditorAt(incl.fileName(), 0, 0))
if (openCppEditorAt(incl.fileName(), 0, 0))
return; // done
break;
}
@@ -525,7 +525,7 @@ void CPPEditor::jumpToDefinition()
QList<Symbol *> candidates = context.resolve(namedType->name());
if (!candidates.isEmpty()) {
Symbol *s = candidates.takeFirst();
openEditorAt(s->fileName(), s->line(), s->column());
openCppEditorAt(s->fileName(), s->line(), s->column());
}
#endif
}
@@ -534,7 +534,7 @@ void CPPEditor::jumpToDefinition()
if (use.contains(endOfName - 1)) {
const Macro &macro = use.macro();
const QString fileName = QString::fromUtf8(macro.fileName);
if (TextEditor::BaseTextEditor::openEditorAt(fileName, macro.line, 0))
if (openCppEditorAt(fileName, macro.line, 0))
return; // done
}
}
@@ -837,8 +837,15 @@ int CPPEditor::endOfNameUnderCursor()
return pos;
}
TextEditor::ITextEditor *CPPEditor::openCppEditorAt(const QString &fileName,
int line, int column)
{
return TextEditor::BaseTextEditor::openEditorAt(fileName, line, column,
Constants::C_CPPEDITOR);
}
bool CPPEditor::openEditorAt(Symbol *s)
{
const QString fileName = QString::fromUtf8(s->fileName(), s->fileNameLength());
return TextEditor::BaseTextEditor::openEditorAt(fileName, s->line(), s->column());
return openCppEditorAt(fileName, s->line(), s->column());
}

View File

@@ -123,6 +123,9 @@ private:
CPlusPlus::Symbol *findDefinition(CPlusPlus::Symbol *symbol);
virtual void indentBlock(QTextDocument *doc, QTextBlock block, QChar typedChar);
TextEditor::ITextEditor *openCppEditorAt(const QString &fileName, int line,
int column = 0);
int previousBlockState(QTextBlock block) const;
QTextCursor moveToPreviousToken(QTextCursor::MoveMode mode) const;
QTextCursor moveToNextToken(QTextCursor::MoveMode mode) const;

View File

@@ -439,7 +439,8 @@ int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
typeOfExpression.setDocuments(m_manager->documents());
QList<TypeOfExpression::Result> resolvedTypes = typeOfExpression(expression, thisDocument, symbol);
QList<TypeOfExpression::Result> resolvedTypes = typeOfExpression(expression, thisDocument, symbol,
TypeOfExpression::Preprocess);
LookupContext context = typeOfExpression.lookupContext();
if (!typeOfExpression.expressionAST() && (! m_completionOperator ||

View File

@@ -58,7 +58,6 @@ SOURCES += attachexternaldialog.cpp \
gdbengine.cpp \
gdbmi.cpp \
gdboptionpage.cpp \
gdbtypemacros.cpp \
gdbengine.h \
moduleshandler.cpp \
moduleswindow.cpp \
@@ -79,7 +78,6 @@ FORMS += attachexternaldialog.ui \
breakcondition.ui \
mode.ui \
gdboptionpage.ui \
gdbtypemacros.ui \
startexternaldialog.ui \
RESOURCES += debugger.qrc

View File

@@ -183,7 +183,6 @@ DebuggerPlugin::DebuggerPlugin()
{
m_pm = 0;
m_generalOptionPage = 0;
m_typeMacroPage = 0;
m_locationMark = 0;
m_manager = 0;
}
@@ -202,7 +201,6 @@ void DebuggerPlugin::shutdown()
//qDebug() << "DebuggerPlugin::~DebuggerPlugin";
removeObject(m_debugMode);
removeObject(m_generalOptionPage);
removeObject(m_typeMacroPage);
// FIXME: when using the line below, BreakWindow etc gets deleted twice.
// so better leak for now...
@@ -212,9 +210,6 @@ void DebuggerPlugin::shutdown()
delete m_generalOptionPage;
m_generalOptionPage = 0;
delete m_typeMacroPage;
m_typeMacroPage = 0;
delete m_locationMark;
m_locationMark = 0;
@@ -409,13 +404,10 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes
mdebug->addAction(cmd);
m_generalOptionPage = 0;
m_typeMacroPage = 0;
// FIXME:
m_generalOptionPage = new GdbOptionPage(&theGdbSettings());
addObject(m_generalOptionPage);
m_typeMacroPage = new TypeMacroPage(&theGdbSettings());
addObject(m_typeMacroPage);
m_locationMark = 0;

View File

@@ -54,7 +54,6 @@ namespace Internal {
class DebuggerManager;
class DebugMode;
class GdbOptionPage;
class TypeMacroPage;
class LocationMark;
class DebuggerPlugin : public ExtensionSystem::IPlugin
@@ -103,7 +102,6 @@ private:
ExtensionSystem::PluginManager *m_pm;
GdbOptionPage *m_generalOptionPage;
TypeMacroPage *m_typeMacroPage;
QString m_previousMode;
LocationMark *m_locationMark;

View File

@@ -80,7 +80,7 @@ enum DataDumperState
DataDumperUnavailable,
};
// FIXME: Move to extra file?
class GdbSettings
{
public:

View File

@@ -58,7 +58,11 @@ GdbOptionPage::GdbOptionPage(GdbSettings *settings)
#if defined(Q_OS_WIN32)
defaultCommand.append(".exe");
#endif
QString defaultScript = coreIFace->resourcePath() +
QLatin1String("/gdb/qt4macros");
m_settings->m_gdbCmd = s->value("Location", defaultCommand).toString();
m_settings->m_scriptFile= s->value("ScriptFile", defaultScript).toString();
m_settings->m_gdbEnv = s->value("Environment", "").toString();
m_settings->m_autoRun = s->value("AutoRun", true).toBool();
m_settings->m_autoQuit = s->value("AutoQuit", true).toBool();
@@ -72,36 +76,56 @@ QString GdbOptionPage::name() const
QString GdbOptionPage::category() const
{
return "Debugger|Gdb";
return "Debugger";
}
QString GdbOptionPage::trCategory() const
{
return tr("Debugger|Gdb");
return tr("Debugger");
}
QWidget *GdbOptionPage::createPage(QWidget *parent)
{
QWidget *w = new QWidget(parent);
m_ui.setupUi(w);
m_ui.gdbEdit->setText(m_settings->m_gdbCmd);
m_ui.envEdit->setText(m_settings->m_gdbEnv);
m_ui.gdbLocationEdit->setText(m_settings->m_gdbCmd);
m_ui.environmentEdit->setText(m_settings->m_gdbEnv);
m_ui.autoStartBox->setChecked(m_settings->m_autoRun);
m_ui.autoQuitBox->setChecked(m_settings->m_autoQuit);
connect(m_ui.pushButtonBrowse, SIGNAL(clicked()),
this, SLOT(browse()));
m_ui.gdbStartupScriptEdit->setText(m_settings->m_scriptFile);
// FIXME
m_ui.autoStartBox->hide();
m_ui.autoQuitBox->hide();
m_ui.environmentEdit->hide();
m_ui.labelEnvironment->hide();
connect(m_ui.browseForGdbButton, SIGNAL(clicked()),
this, SLOT(browseForGdb()));
connect(m_ui.browseForScriptButton, SIGNAL(clicked()),
this, SLOT(browseForScript()));
return w;
}
void GdbOptionPage::browse()
void GdbOptionPage::browseForGdb()
{
QString fileName = QFileDialog::getOpenFileName(m_ui.pushButtonBrowse,
QString fileName = QFileDialog::getOpenFileName(m_ui.browseForGdbButton,
"Browse for gdb executable");
if (fileName.isEmpty())
return;
m_settings->m_gdbCmd = fileName;
m_ui.gdbEdit->setText(fileName);
m_ui.gdbLocationEdit->setText(fileName);
}
void GdbOptionPage::browseForScript()
{
QString fileName = QFileDialog::getOpenFileName(m_ui.browseForGdbButton,
"Browse for gdb startup script");
if (fileName.isEmpty())
return;
m_settings->m_scriptFile = fileName;
m_ui.gdbStartupScriptEdit->setText(fileName);
}
void GdbOptionPage::finished(bool accepted)
@@ -109,10 +133,11 @@ void GdbOptionPage::finished(bool accepted)
if (!accepted)
return;
m_settings->m_gdbCmd = m_ui.gdbEdit->text();
m_settings->m_gdbEnv = m_ui.envEdit->text();
m_settings->m_gdbCmd = m_ui.gdbLocationEdit->text();
m_settings->m_gdbEnv = m_ui.environmentEdit->text();
m_settings->m_autoRun = m_ui.autoStartBox->isChecked();
m_settings->m_autoQuit = m_ui.autoQuitBox->isChecked();
m_settings->m_scriptFile = m_ui.gdbStartupScriptEdit->text();
Core::ICore *coreIFace = m_pm->getObject<Core::ICore>();
if (!coreIFace || !coreIFace->settings())

View File

@@ -35,7 +35,6 @@
#define GDBOPTIONPAGE_H
#include "ui_gdboptionpage.h"
#include "ui_gdbtypemacros.h"
#include <coreplugin/dialogs/ioptionspage.h>
@@ -63,7 +62,8 @@ public:
void finished(bool accepted);
public slots:
void browse();
void browseForGdb();
void browseForScript();
private:
ExtensionSystem::PluginManager *m_pm;
@@ -72,6 +72,7 @@ private:
GdbSettings *m_settings;
};
#if 0
class TypeMacroPage : public Core::IOptionsPage
{
Q_OBJECT
@@ -87,7 +88,6 @@ public:
void finished(bool accepted);
private slots:
void onScriptButton();
void onAddButton();
void onDelButton();
void currentItemChanged(QTreeWidgetItem *item);
@@ -100,6 +100,7 @@ private:
GdbSettings *m_settings;
QWidget *m_widget;
};
#endif
} // namespace Internal
} // namespace Debugger

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>433</width>
<height>216</height>
<height>233</height>
</rect>
</property>
<property name="windowTitle">
@@ -23,7 +23,7 @@
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Gdb Debug Options</string>
<string>Locations</string>
</property>
<layout class="QGridLayout">
<property name="margin">
@@ -33,33 +33,36 @@
<number>6</number>
</property>
<item row="0" column="1">
<widget class="QLineEdit" name="gdbEdit"/>
<widget class="QLineEdit" name="gdbLocationEdit"/>
</item>
<item row="1" column="1" colspan="2">
<widget class="QLineEdit" name="envEdit"/>
<widget class="QLineEdit" name="environmentEdit"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<widget class="QLabel" name="labelGdbLocaltion">
<property name="toolTip">
<string>This is either a full abolute path leading to the gdb binary you intend to use or the name of a gdb binary that wiull be searched in your PATH.</string>
</property>
<property name="text">
<string>Gdb Location:</string>
</property>
<property name="buddy">
<cstring>gdbEdit</cstring>
<cstring>gdbLocationEdit</cstring>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="labelEnvironment">
<property name="text">
<string>Environment:</string>
</property>
<property name="buddy">
<cstring>envEdit</cstring>
<cstring>environmentEdit</cstring>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pushButtonBrowse">
<widget class="QPushButton" name="browseForGdbButton">
<property name="text">
<string/>
</property>
@@ -72,6 +75,36 @@
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="gdbStartupScriptEdit"/>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="browseForScriptButton">
<property name="minimumSize">
<size>
<width>21</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/qworkbench/images/fileopen.png</normaloff>:/qworkbench/images/fileopen.png</iconset>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelGdbStartupScript">
<property name="toolTip">
<string>This is either empty or points to a file containing gdb commands that will be executed immediately after gdb starts up.</string>
</property>
<property name="text">
<string>Gdb Startup Script:</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View File

@@ -109,6 +109,8 @@ QWidget *TypeMacroPage::createPage(QWidget *parent)
m_widget = new QWidget(parent);
m_ui.setupUi(m_widget);
m_ui.scriptFile->setPromptDialogTitle(tr("Select Gdb Script"));
m_ui.scriptFile->setExpectedKind(Core::Utils::PathChooser::File);
connect(m_ui.addButton, SIGNAL(clicked()),
this, SLOT(onAddButton()));
@@ -116,8 +118,8 @@ QWidget *TypeMacroPage::createPage(QWidget *parent)
connect(m_ui.delButton, SIGNAL(clicked()),
this, SLOT(onDelButton()));
connect(m_ui.scriptButton, SIGNAL(clicked()),
this, SLOT(onScriptButton()));
connect(m_ui.scriptFile, SIGNAL(validChanged()),
this, SLOT(updateButtonState()));
connect(m_ui.treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
this, SLOT(currentItemChanged(QTreeWidgetItem *)));
@@ -139,7 +141,7 @@ QWidget *TypeMacroPage::createPage(QWidget *parent)
++i;
}
m_ui.scriptEdit->setText(m_settings->m_scriptFile);
m_ui.scriptFile->setPath(m_settings->m_scriptFile);
updateButtonState();
@@ -152,7 +154,7 @@ void TypeMacroPage::finished(bool accepted)
return;
m_settings->m_typeMacros.clear();
m_settings->m_scriptFile = m_ui.scriptEdit->text();
m_settings->m_scriptFile = m_ui.scriptFile->path();
for (int i = 0; i < m_ui.treeWidget->topLevelItemCount(); ++i) {
QTreeWidgetItem *item = m_ui.treeWidget->topLevelItem(i);
@@ -172,13 +174,6 @@ void TypeMacroPage::finished(bool accepted)
}
}
void TypeMacroPage::onScriptButton()
{
QString fileName = QFileDialog::getOpenFileName(m_widget, tr("Select Gdb Script"));
m_ui.scriptEdit->setText(fileName);
updateButtonState();
}
void TypeMacroPage::onAddButton()
{
if (m_ui.typeEdit->text().isEmpty() || m_ui.macroEdit->text().isEmpty())

View File

@@ -1,146 +1,115 @@
<ui version="4.0" >
<author></author>
<comment></comment>
<exportmacro></exportmacro>
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TypeMacroPage</class>
<widget class="QWidget" name="TypeMacroPage" >
<property name="geometry" >
<widget class="QWidget" name="TypeMacroPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>519</width>
<height>238</height>
<height>263</height>
</rect>
</property>
<property name="windowTitle" >
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" >
<property name="margin" >
<number>9</number>
</property>
<property name="spacing" >
<layout class="QVBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="margin">
<number>9</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox" >
<property name="title" >
<string>Script File</string>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>9</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item>
<widget class="QLineEdit" name="scriptEdit" />
</item>
<item>
<widget class="QToolButton" name="scriptButton" >
<property name="minimumSize" >
<size>
<width>21</width>
<height>23</height>
</size>
</property>
<property name="text" >
<string>...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QGridLayout" >
<property name="margin" >
<layout class="QGridLayout">
<property name="margin">
<number>0</number>
</property>
<property name="spacing" >
<property name="spacing">
<number>6</number>
</property>
<item row="0" column="0" colspan="2" >
<widget class="QTreeWidget" name="treeWidget" >
<property name="rootIsDecorated" >
<item row="0" column="0" colspan="2">
<widget class="QTreeWidget" name="treeWidget">
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<column>
<property name="text" >
<property name="text">
<string>Type</string>
</property>
</column>
<column>
<property name="text" >
<property name="text">
<string>Macro</string>
</property>
</column>
</widget>
</item>
<item row="1" column="2" >
<widget class="QToolButton" name="addButton" >
<property name="minimumSize" >
<item row="1" column="2">
<widget class="QToolButton" name="addButton">
<property name="minimumSize">
<size>
<width>21</width>
<height>23</height>
</size>
</property>
<property name="text" >
<property name="text">
<string>+</string>
</property>
<property name="icon" >
<iconset resource="gdbdebugger.qrc" >:/gdbdebugger/images/newitem.png</iconset>
<property name="icon">
<iconset>
<normaloff>:/gdbdebugger/images/newitem.png</normaloff>:/gdbdebugger/images/newitem.png</iconset>
</property>
</widget>
</item>
<item row="2" column="0" >
<widget class="QLabel" name="label_2" >
<property name="text" >
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Macro Name:</string>
</property>
</widget>
</item>
<item row="3" column="0" >
<widget class="QLabel" name="label_3" >
<property name="text" >
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Parse as:</string>
</property>
</widget>
</item>
<item row="2" column="1" >
<widget class="QLineEdit" name="macroEdit" />
<item row="2" column="1">
<widget class="QLineEdit" name="macroEdit"/>
</item>
<item row="0" column="2" >
<layout class="QVBoxLayout" >
<property name="margin" >
<item row="0" column="2">
<layout class="QVBoxLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="spacing" >
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QToolButton" name="delButton" >
<property name="minimumSize" >
<widget class="QToolButton" name="delButton">
<property name="minimumSize">
<size>
<width>21</width>
<height>23</height>
</size>
</property>
<property name="text" >
<property name="text">
<string>-</string>
</property>
<property name="icon" >
<iconset resource="gdbdebugger.qrc" >:/gdbdebugger/images/delete.png</iconset>
<property name="icon">
<iconset>
<normaloff>:/gdbdebugger/images/delete.png</normaloff>:/gdbdebugger/images/delete.png</iconset>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation" >
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" >
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
@@ -150,25 +119,25 @@
</item>
</layout>
</item>
<item row="1" column="1" >
<widget class="QLineEdit" name="typeEdit" />
<item row="1" column="1">
<widget class="QLineEdit" name="typeEdit"/>
</item>
<item row="1" column="0" >
<widget class="QLabel" name="label" >
<property name="text" >
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Type:</string>
</property>
</widget>
</item>
<item row="3" column="1" >
<widget class="QComboBox" name="parseAsBox" >
<item row="3" column="1">
<widget class="QComboBox" name="parseAsBox">
<item>
<property name="text" >
<property name="text">
<string>ASCII (char *)</string>
</property>
</item>
<item>
<property name="text" >
<property name="text">
<string>Unicode (short)</string>
</property>
</item>
@@ -178,9 +147,8 @@
</item>
</layout>
</widget>
<pixmapfunction></pixmapfunction>
<resources>
<include location="gdbdebugger.qrc" />
<include location="gdbdebugger.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -77,7 +77,7 @@ QString SettingsPage::name() const
return tr("General");
}
QString SettingsPage::category() const
QString SettingsPage::category() const
{
return QLatin1String("Git");
}

View File

@@ -128,12 +128,13 @@ protected:
ITextEditor *BaseTextEditor::openEditorAt(const QString &fileName,
int line,
int column)
int column,
const QString &editorKind)
{
Core::EditorManager *editorManager =
ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>()->editorManager();
editorManager->addCurrentPositionToNavigationHistory(true);
Core::IEditor *editor = editorManager->openEditor(fileName, QString(), true);
Core::IEditor *editor = editorManager->openEditor(fileName, editorKind, true);
TextEditor::ITextEditor *texteditor = qobject_cast<TextEditor::ITextEditor *>(editor);
if (texteditor) {
texteditor->gotoLine(line, column);
@@ -714,7 +715,7 @@ void BaseTextEditor::moveLineUpDown(bool up)
QString text = move.selectedText();
move.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor);
move.removeSelectedText();
if (up) {
move.movePosition(QTextCursor::PreviousBlock);
move.insertBlock();
@@ -729,7 +730,7 @@ void BaseTextEditor::moveLineUpDown(bool up)
move.insertBlock();
}
}
int start = move.position();
move.clearSelection();
move.insertText(text);
@@ -3385,7 +3386,7 @@ void BaseTextEditorPrivate::moveCursorVisible()
if (!cursor.block().isVisible()) {
cursor.setVisualNavigation(true);
cursor.movePosition(QTextCursor::PreviousBlock);
q->setTextCursor(cursor);
q->setTextCursor(cursor);
}
q->ensureCursorVisible();
}

View File

@@ -230,7 +230,8 @@ public:
BaseTextEditor(QWidget *parent);
~BaseTextEditor();
static ITextEditor *openEditorAt(const QString &fileName, int line, int column = 0);
static ITextEditor *openEditorAt(const QString &fileName, int line, int column = 0,
const QString &editorKind = QString());
// EditorInterface
Core::IFile * file();