Merge remote-tracking branch 'origin/2.5'

This commit is contained in:
Oswald Buddenhagen
2012-03-23 17:50:29 +01:00
28 changed files with 108 additions and 78 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 816 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 756 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 980 B

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -44,22 +44,22 @@
\list
\o \gui {Navigator} pane displays the QML elements in the current QML
\o \gui {Navigator} pane (1) displays the QML elements in the current QML
file as tree structure.
\o \gui {Library} pane displays the building blocks that you can use to
\o \gui {Library} pane (2) displays the building blocks that you can use to
design applications: predefined QML elements, your own QML
components, Qt Quick components that you import to the project, and
other resources.
\o \gui Canvas is the working area where you create QML components and
\o \gui Canvas (3) is the working area where you create QML components and
design applications.
\o \gui {Properties} pane organizes the properties of the selected QML
\o \gui {Properties} pane (4) organizes the properties of the selected QML
element or QML component. You can change the properties also in the
code editor.
\o \gui {State} pane displays the different states of the component.
\o \gui {State} pane (5) displays the different states of the component.
QML states typically describe user interface configurations, such as
the UI elements, their properties and behavior and the available
actions.
@@ -70,8 +70,8 @@
The \gui Navigator pane displays the
\l{http://doc.qt.nokia.com/4.7/qdeclarativeelements.html}{QML elements}
in the current QML file and their relationships. Elements are listed in a
tree structure, below their parent.
in the current QML file and their relationships. Elements (1) are listed in a
tree structure, below their parent (2).
\image qmldesigner-navigator.png "Navigator pane"
@@ -83,7 +83,7 @@
Typically, child elements are located within the parent element on the
canvas. However, they do not necessarily have to fit inside the parent
element. For example, you might want to make a mouse area larger than the
rectangle or image beneath it.
rectangle or image beneath it (1).
\image qmldesigner-element-size.png "Mouse area for a button"
@@ -121,7 +121,7 @@
To change the stacking order of an item, right-click it on the canvas and
select \gui {Stack (z)}. You can raise or lower the stack value of an item
or move the item to the front or back of all its siblings. To remove the
\c z property, select \gui Reset.
\c z property, select \gui {Reset z Property}.
\section2 Switching Parent Elements
@@ -136,7 +136,7 @@
You can change the parent of an element also in the \gui Navigator pane.
Drag and drop the element to another position in the tree or use the arrow
buttons to move the element in the tree.
buttons (1) to move the element in the tree.
\image qmldesigner-navigator-arrows.png "Navigator arrow buttons"
@@ -154,7 +154,8 @@
\list
\if defined(qcmanual)
\o \c {import com.nokia.symbian 1.0} for Symbian
\o \c {import com.nokia.symbian 1.0} for Symbian (Qt 4.7)
\o \c {import com.nokia.symbian 1.1} for Symbian (Qt 4.8)
\endif
\o \c {import com.nokia.meego 1.0} for MeeGo
@@ -178,7 +179,7 @@
The bottom part of the pane displays properties that are specific to each
element type. For example, the following image displays the properties you
can set for \gui Rectangle and \gui Text elements.
can set for \gui Rectangle (1) and \gui Text (2) elements.
\image qmldesigner-element-properties.png
@@ -202,12 +203,12 @@
When editing states, you can easily see which values are explicitly set in
the current state and which values are derived from the base state.
The following images illustrate this. In the base state, the \gui Position,
\gui Size, and \gui Colors values are explicitly set and highlighted.
The following images illustrate this. In the base state, the \gui Size (1)
and \gui Colors (2) values are explicitly set and highlighted.
\image qmldesigner-properties-explicit-base.png "Explicitly set properties"
In \gui State1, only the color is explicitly set and highlighted.
In \gui State1, only the color (1) is explicitly set and highlighted.
\image qmldesigner-properties-explicit-state1.png "Explicitly set properties"
@@ -265,7 +266,7 @@
\section2 Marking Text Elements for Translation
To support translators, mark each text element that should be translated.
In the \gui Properties pane, \gui Text field, select \gui tr.
In the \gui Properties pane, \gui Text field, select \gui tr (1).
\image qmldesigner-text-property-tr.png "Text properties"
@@ -360,8 +361,8 @@
to the opposite side: \c {anchor.left: sibling.right}. This allows you to keep
sibling elements together.
In the following image, \gui{Rectangle 2} is anchored to its siblings on its
right and left and to the bottom of its parent.
In the following image, \gui{Rectangle 2} is anchored to \gui{Rectangle 1}
on its left and to the bottom of its parent.
\image qmldesigner-anchors.png "Anchoring sibling elements"
@@ -370,8 +371,6 @@
\qml
Rectangle {
id: rectangle2
anchors.right: rectangle3.left
anchors.rightMargin: 15
anchors.left: rectangle1.right
anchors.leftMargin: 15
anchors.bottom: parent.bottom
@@ -466,7 +465,8 @@
\inlineimage qmldesigner-snap-to-guides-button.png
button to have the elements snap to the guides.
Choose \gui {Tools > Options > Qt Quick} to specify settings for snap to
Choose \gui {Tools > Options > Qt Quick > Qt Quick Designer} to specify
settings for snap to
margins. In the \gui {Snap margin} field, specify the position of the guides
as pixels from the edge of the canvas. In the \gui {Item spacing} field,
specify the space in pixels to leave between elements on the screen.
@@ -503,16 +503,17 @@
bindings.
To experiment with different element sizes, enter values in the
\gui Height and \gui Width fields on the canvas toolbar. The changes are
displayed in the \gui States pane and on the canvas, but the property
\gui Height and \gui Width fields (1) on the canvas toolbar. The changes are
displayed in the \gui States pane (2) and on the canvas (3), but the property
values are not changed permanently in the QML file. You can permanently
change the property values in the \gui Properties pane.
change the property values in the \gui Properties pane (4).
\image qmldesigner-preview-size.png "Canvas width and height"
\section1 Specifying Canvas Size
To change the canvas size, select \gui {Tools > Options > Qt Quick} and
To change the canvas size, select \gui {Tools > Options > Qt Quick
> Qt Quick Designer} and
specify the canvas width and height in the \gui Canvas group.
\section1 Refreshing the Canvas

View File

@@ -1115,6 +1115,7 @@ public slots:
void maybeEnrichParameters(DebuggerStartParameters *sp);
void gdbServerStarted(const QString &channel, const QString &sysroot, const QString &localExecutable);
void attachedToProcess(const QString &channel, const QString &sysroot, const QString &localExecutable);
public:
DebuggerMainWindow *m_mainWindow;
@@ -1672,11 +1673,6 @@ void DebuggerPluginPrivate::attachToRemoteServer()
}
}
void DebuggerPluginPrivate::attachToRemoteProcess()
{
startRemoteServer();
}
void DebuggerPluginPrivate::startRemoteServer()
{
PluginManager *pm = PluginManager::instance();
@@ -1689,6 +1685,24 @@ void DebuggerPluginPrivate::startRemoteServer()
void DebuggerPluginPrivate::gdbServerStarted(const QString &channel,
const QString &sysroot, const QString &remoteCommandLine)
{
Q_UNUSED(remoteCommandLine);
Q_UNUSED(sysroot);
showStatusMessage(tr("gdbserver is now listening at %1").arg(channel));
}
void DebuggerPluginPrivate::attachToRemoteProcess()
{
PluginManager *pm = PluginManager::instance();
QTC_ASSERT(pm, return);
QObject *rl = pm->getObjectByName(_("RemoteLinuxPlugin"));
QTC_ASSERT(rl, return);
QMetaObject::invokeMethod(rl, "attachToRemoteProcess", Qt::QueuedConnection);
// This will call back attachedtToProcess() below.
}
void DebuggerPluginPrivate::attachedToProcess(const QString &channel,
const QString &sysroot, const QString &remoteCommandLine)
{
QString binary = remoteCommandLine.section(QLatin1Char(' '), 0, 0);
QString localExecutable;
@@ -3075,7 +3089,7 @@ void DebuggerPluginPrivate::extensionsInitialized()
connect(act, SIGNAL(triggered()), SLOT(attachToRemoteServer()));
act = m_startRemoteServerAction = new QAction(this);
act->setText(tr("Start Remote Debug Server..."));
act->setText(tr("Start Remote Debug Server Attached to Process..."));
connect(act, SIGNAL(triggered()), SLOT(startRemoteServer()));
act = m_attachToRemoteProcessAction = new QAction(this);

View File

@@ -45,6 +45,7 @@
#include <utils/qtcassert.h>
#include <QDir>
#include <QFileInfo>
#include <QProcess>
#include <QSettings>
#include <QUrl>
@@ -646,6 +647,7 @@ QList<ToolChain *> MsvcToolChainFactory::autoDetect()
return results;
}
// Detect CDB, return a pair of <32bit, 64bit> executables.
QPair<Utils::FileName, Utils::FileName> MsvcToolChain::autoDetectCdbDebugger()
{
QPair<Utils::FileName, Utils::FileName> result;
@@ -660,6 +662,29 @@ QPair<Utils::FileName, Utils::FileName> MsvcToolChain::autoDetectCdbDebugger()
if (dirName.isEmpty())
continue;
QDir dir(dirName);
// Windows SDK's starting from version 8 live in
// "ProgramDir\Windows Kits\<version>"
const QString windowsKitsFolderName = QLatin1String("Windows Kits");
if (dir.exists(windowsKitsFolderName)) {
QDir windowKitsFolder = dir;
if (windowKitsFolder.cd(windowsKitsFolderName)) {
// Check in reverse order (latest first)
const QFileInfoList kitFolders =
windowKitsFolder.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot,
QDir::Time|QDir::Reversed);
foreach (const QFileInfo &kitFolderFi, kitFolders) {
const QString path = kitFolderFi.absoluteFilePath();
const QFileInfo cdb32(path + QLatin1String("/Debuggers/x86/cdb.exe"));
if (cdb32.isExecutable())
cdbs.push_back(Utils::FileName::fromString(cdb32.absoluteFilePath()));
const QFileInfo cdb64(path + QLatin1String("/Debuggers/x64/cdb.exe"));
if (cdb64.isExecutable())
cdbs.push_back(Utils::FileName::fromString(cdb64.absoluteFilePath()));
} // for Kits
} // can cd to "Windows Kits"
} // "Windows Kits" exists
// Pre Windows SDK 8: Check 'Debugging Tools for Windows'
foreach (const QFileInfo &fi, dir.entryInfoList(QStringList(QLatin1String("Debugging Tools for Windows*")),
QDir::Dirs | QDir::NoDotAndDotDot)) {
Utils::FileName filePath(fi);

View File

@@ -286,7 +286,7 @@ void FormEditorView::nodeIdChanged(const ModelNode& node, const QString& newId,
QmlModelView::nodeIdChanged(node, newId, oldId);
QmlItemNode itemNode(node);
if (itemNode.isValid()) {
if (itemNode.isValid() && node.nodeSourceType() == ModelNode::NodeWithoutSource) {
FormEditorItem *item = m_scene->itemForQmlItemNode(itemNode);
item->update();
}

View File

@@ -91,41 +91,20 @@ RemoteLinuxPlugin::~RemoteLinuxPlugin()
void RemoteLinuxPlugin::extensionsInitialized()
{
/*
using namespace Core;
ICore *core = ICore::instance();
ActionManager *am = core->actionManager();
ActionContainer *mstart =
am->actionContainer(ProjectExplorer::Constants::M_DEBUG_STARTDEBUGGING);
const Context globalcontext(Core::Constants::C_GLOBAL);
QAction *act = 0;
Command *cmd = 0;
act = new QAction(tr("Start Remote Debug Server..."), 0);
cmd = am->registerAction(act, "StartGdbServer", globalcontext);
cmd->setDescription(tr("Start Gdbserver"));
mstart->addAction(cmd, Debugger::Constants::G_MANUAL_REMOTE);
connect(act, SIGNAL(triggered()), SLOT(startGdbServer()));
act = new QAction(tr("Attach to Running Remote Process..."), 0);
cmd = am->registerAction(act, "AttachRemoteProcess", globalcontext);
cmd->setDescription(tr("Attach to Remote Process"));
mstart->addAction(cmd, Debugger::Constants::G_AUTOMATIC_REMOTE);
connect(act, SIGNAL(triggered()), SLOT(startGdbServer()));
*/
}
void RemoteLinuxPlugin::startGdbServer()
{
StartGdbServerDialog dlg;
int result = dlg.exec();
if (result == QDialog::Rejected)
return;
dlg.startGdbServer();
}
void RemoteLinuxPlugin::attachToRemoteProcess()
{
StartGdbServerDialog dlg;
dlg.attachToRemoteProcess();
}
} // namespace Internal
} // namespace RemoteLinux

View File

@@ -52,6 +52,7 @@ public:
private slots:
void startGdbServer();
void attachToRemoteProcess();
};
} // namespace Internal

View File

@@ -93,6 +93,7 @@ public:
}
StartGdbServerDialog *q;
bool startServerOnly;
AbstractRemoteLinuxProcessList *processList;
QSortFilterProxyModel proxyModel;
@@ -111,7 +112,7 @@ public:
};
StartGdbServerDialogPrivate::StartGdbServerDialogPrivate(StartGdbServerDialog *q)
: q(q), processList(0)
: q(q), startServerOnly(true), processList(0)
{
settings = ICore::settings();
@@ -321,13 +322,20 @@ void StartGdbServerDialog::portListReady()
void StartGdbServerDialog::startGdbServer()
{
d->startServerOnly = true;
if (exec() == QDialog::Rejected)
return;
LinuxDeviceConfiguration::ConstPtr device = d->currentDevice();
d->gatherer.start(SshConnection::create(device->sshParameters()), device);
}
void StartGdbServerDialog::attachToRemoteProcess()
{
startGdbServer();
d->startServerOnly = false;
if (exec() == QDialog::Rejected)
return;
LinuxDeviceConfiguration::ConstPtr device = d->currentDevice();
d->gatherer.start(SshConnection::create(device->sshParameters()), device);
}
void StartGdbServerDialog::handleConnectionError()
@@ -351,29 +359,31 @@ void StartGdbServerDialog::handleProcessErrorOutput(const QByteArray &ba)
logMessage(QString::fromUtf8(ba.trimmed()));
// "Attached; pid = 16740"
// "Listening on port 10000"
int pos = ba.indexOf("Listening on port");
if (pos == -1)
return;
const int port = ba.mid(pos + 18).trimmed().toInt();
logMessage(tr("Port %1 is now accessible.").arg(port));
reportOpenPort(port);
foreach (const QByteArray &line, ba.split('\n')) {
if (line.startsWith("Listening on port")) {
const int port = line.mid(18).trimmed().toInt();
reportOpenPort(port);
}
}
}
void StartGdbServerDialog::reportOpenPort(int port)
{
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
QObject *ob = pm->getObjectByName("DebuggerCore");
if (!ob)
return;
logMessage(tr("Port %1 is now accessible.").arg(port));
LinuxDeviceConfiguration::ConstPtr device = d->currentDevice();
QString channel = QString("%1:%2").arg(device->sshParameters().host).arg(port);
logMessage(tr("Server started on %1").arg(channel));
QMetaObject::invokeMethod(ob, "gdbServerStarted", Qt::QueuedConnection,
Q_ARG(QString, channel),
Q_ARG(QString, d->sysrootPathChooser->path()),
Q_ARG(QString, d->remoteCommandLine));
const char *member = d->startServerOnly ? "gdbServerStarted" : "attachedToProcess";
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
QObject *ob = pm->getObjectByName("DebuggerCore");
if (ob) {
QMetaObject::invokeMethod(ob, member, Qt::QueuedConnection,
Q_ARG(QString, channel),
Q_ARG(QString, d->sysrootPathChooser->path()),
Q_ARG(QString, d->remoteCommandLine));
}
close();
}
void StartGdbServerDialog::handleProcessClosed(int status)

View File

@@ -122,8 +122,8 @@ def createTasksFile(list):
# the following is currently a bad work-around
fData = index.data(Qt.UserRole).toString() # file
lData = index.data(Qt.UserRole + 1).toString() # line -> linenumber or empty
tData = index.data(Qt.UserRole + 4).toString() # type -> 1==error 2==warning
dData = index.data(Qt.UserRole + 2).toString() # description
tData = index.data(Qt.UserRole + 5).toString() # type -> 1==error 2==warning
dData = index.data(Qt.UserRole + 3).toString() # description
if lData == "":
lData = "-1"
if tData == "1":