...
 
Commits (165)
Qt Creator 1.3.82
Qt Creator 1.3.83
===============
Qt Creator is a crossplatform C++ IDE for development with the Qt framework.
......
......@@ -36,7 +36,7 @@ Editing
the syntax highlighting.
CodePaster
* Implemented new protocol of pastebin.com including list functionality\
* Implemented new protocol of pastebin.com including list functionality
C++ Support
* Recognize *.cu as C files
......
......@@ -12,7 +12,7 @@
\title Qt Creator Manual
\section1 Version 1.3.82
\section1 Version 1.3.83 (2.0.0 Beta)
Qt Creator provides integrated tools for both application designers
and developers to create applications for multiple desktop and mobile device
......@@ -251,7 +251,7 @@
\o Mac OS X
\o Yes
\o No
\o No
\o Yes
\endtable
*/
......@@ -3340,7 +3340,7 @@
specified in the \c CMake project file.
Known issues for the current version can be found
\l{Known Issues of version 1.3.82}{here}.
\l{Known Issues of version 1.3.83}{here}.
\section1 Adding External Libraries to a CMake Project
......@@ -3703,7 +3703,7 @@
For more information about MADDE pertaining to its
installation, configuration, and deployment on the device, see
\l{http://wiki.maemo.org/MADDE}{Introdution to MADDE}.
\l{http://wiki.maemo.org/MADDE}{Introduction to MADDE}.
\o An IP address for the device.
......@@ -3718,18 +3718,14 @@
following:
\list
\o The Nokia USB drivers that come, for example with, PC Suite.
\o Qt installed on the device. A simple technique to
install Qt is to run the Maemo device \gui{Application Manager} and
download any application using Qt Creator. Running the Maemo device
\gui{Application Manager} and downloading an application with Qt
Creator installs all dependencies required for Qt Creator at the same
time.
\o Qt installed on the device. Recent images should have Qt pre-installed.
\endlist
The Qt Creator/MADDE integration is supported on the following platforms:
\list
\o Linux (32 bit and 64 bit)
\o Windows (32 bit and 64 bit)
\o MacOS 10.5 ("Leopard") or higher
\endlist
\section1 Setting Up the N900
......@@ -3742,8 +3738,7 @@
diagnostics functions but is essential for creating connections between the
device and your workstation.
For the workstation, you need to set up a network port that detects the
Maemo device as a network device
For the workstation, you need to set up the N900 as a network device.
\note If you use the device's USB network functionality and plan to
connect your development PC to the N900 via a common WLAN network, you can
......@@ -3754,7 +3749,7 @@
To install Mad Developer on your device, you need to add an application
catalogue (repository) to the list of catalogues your device checks for
installable software, and install the actual Mad Developer software
package using root privileges. This is done according to the following
package. This is done according to the following
steps:
\list 1
\o Start the application manager
......@@ -3854,11 +3849,11 @@
\l{http://wiki.maemo.org/MADDE}{here}, execute it and follow the
instructions. The package will be installed. Then run:
\c{mad-admin list targets} to see which targets are available.
Install the targets that starts with "fremantle" by using the command:
Install the target that starts with "fremantle" by using the command:
\c{mad-admin create fremantle-qt-xxx}
When you have installed the target, you have a toolchain and a sysroot
environment for cross-compiling
environment for cross-compiling.
\section1 Setting Up Qt Creator
......@@ -3948,6 +3943,9 @@
\list
\o \l{http://www.forum.nokia.com/main/resources/tools_and_sdks/S60SDK/}
{S60 Platform SDK 3rd Edition FP1 or higher}.
\o \l{http://www.forum.nokia.com/main/resources/technologies/openc_cpp/}
{Open C/C++ v1.6.0 or higher}
(install this into all S60 SDKs you plan to use Qt with).
\o Either the GCCE ARM Toolchain that is included in the S60 Platform
SDKs, or RVCT 2.2 [build 686] or later (which is not available free
of charge)(Your environment needs to find the compiler in the PATH).
......@@ -4996,9 +4994,13 @@
There are some known issues with Qt Creator.
The development team is aware of them, there is no need to report them as bugs.
\section1 Known Issues of Version 1.3.82
\section1 Known Issues of Version 1.3.83
\list
\o On Windows, debugging a MinGW-built console application (with \gui{Run in terminal}
checked) using gdb does not work due to a bug in gdb related to attaching to
stopped processes (see \l{http://bugreports.qt.nokia.com/browse/QTCREATORBUG-1020}).
\o Debugging Helper does not work while performing On-Device Debugging.
\o QML Preview (Run Project) only works if built against Qt with
......
......@@ -19,16 +19,16 @@ sources.fileextensions = "qtcreator.qdoc addressbook-sdk.qdoc"
qhp.projects = QtCreator
qhp.QtCreator.file = qtcreator.qhp
qhp.QtCreator.namespace = com.nokia.qtcreator.1382
qhp.QtCreator.namespace = com.nokia.qtcreator.1383
qhp.QtCreator.virtualFolder = doc
qhp.QtCreator.indexTitle = Qt Creator
qhp.QtCreator.indexRoot =
qhp.QtCreator.extraFiles = classic.css \
images/qt-logo.png \
images/qtcreator-screenshots.png
qhp.QtCreator.filterAttributes = qtcreator 1.3.82
qhp.QtCreator.customFilters.QtCreator.name = Qt Creator 1.3.82
qhp.QtCreator.customFilters.QtCreator.filterAttributes = qtcreator 1.3.82
qhp.QtCreator.filterAttributes = qtcreator 1.3.83
qhp.QtCreator.customFilters.QtCreator.name = Qt Creator 1.3.83
qhp.QtCreator.customFilters.QtCreator.filterAttributes = qtcreator 1.3.83
# macros.qdocconf
......@@ -213,5 +213,5 @@ HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
"<td width=\"40%\" align=\"left\">Copyright &copy; 2010 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
"<td width=\"20%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
"<td width=\"40%\" align=\"right\"><div align=\"right\">Qt Creator 1.3.82</div></td>\n" \
"<td width=\"40%\" align=\"right\"><div align=\"right\">Qt Creator 1.3.83</div></td>\n" \
"</tr></table></div></address>"
This diff is collapsed.
This diff is collapsed.
For Linux, MinGW:
FSF 7.1 release
+ gdb-increased-dcache-line-size.patch
For Maemo targets:
(--target=arm-none-linux-gnueabi)
FSF 7.1 release
+ gdb-increased-dcache-line-size.patch
+ gdb-stepping-for-maemo.patch
For Symbian targets:
(--target=arm-none-symbianelf)
CS 4.4-164 release
+ gdb-increased-dcache-line-size.patch
+ gdb-work-around-trk-single-step.patch
Experimental for performance (don't apply):
gdb-without-dwarf-name-canonicalization.patch
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -4126,7 +4127,9 @@ infrun: not switching back to stepped thread, it has vanished\n");
if (execution_direction != EXEC_REVERSE
&& ecs->event_thread->step_over_calls == STEP_OVER_UNDEBUGGABLE
- && in_solib_dynsym_resolve_code (stop_pc))
+ && in_solib_dynsym_resolve_code (stop_pc)
+ && !(ecs->event_thread->step_range_start > 1
+ && in_solib_dynsym_resolve_code (ecs->event_thread->step_range_start)))
{
CORE_ADDR pc_after_resolver =
gdbarch_skip_solib_resolver (gdbarch, stop_pc);
------------------------------------------------------------------------
NOTE: This relates to http://sourceware.org/bugzilla/show_bug.cgi?id=11497
import Qt 4.6
Rectangle {
property var label: "Button"
property variant label: "Button"
signal clicked
width: 75
......
......@@ -5,9 +5,9 @@ QWidget { //This is a special checkBox that does color coding for states
id: checkBox;
property var backendValue;
property variant backendValue;
property var baseStateFlag;
property variant baseStateFlag;
property alias checkable: localCheckBox.checkable
property alias text: localLabel.text
......
......@@ -4,14 +4,14 @@ import Bauhaus 1.0
QExtGroupBox {
id: colorGroupBox
property var finished;
property var backendColor
property var color: (backendColor === undefined || backendColor.value === undefined) ? "#000000" : backendColor.value
property var oldMaximumHeight;
property var startupCollapse: selectionChanged === undefined ? false : selectionChanged;
property var firstTime: true;
property var caption: ""
property variant finished;
property variant backendColor
property variant color: (backendColor === undefined || backendColor.value === undefined) ? "#000000" : backendColor.value
property variant oldMaximumHeight;
property variant startupCollapse: selectionChanged === undefined ? false : selectionChanged;
property variant firstTime: true;
property variant caption: ""
smooth: false
onFinishedChanged: {
......@@ -32,14 +32,14 @@ QExtGroupBox {
}
property var baseStateFlag: isBaseState
property variant baseStateFlag: isBaseState
onBaseStateFlagChanged: {
evaluate();
}
onBackendColorChanged: {
evaluate();
}
property var isEnabled: colorGroupBox.enabled
property variant isEnabled: colorGroupBox.enabled
onIsEnabledChanged: {
evaluate();
}
......@@ -143,7 +143,7 @@ QExtGroupBox {
ColorBox {
id: colorControl;
property var backendColor: colorGroupBox.color;
property variant backendColor: colorGroupBox.color;
color: colorGroupBox.color;
onColorChanged: if (colorGroupBox.color != color) {
colorGroupBox.backendColor.value = color;
......
......@@ -3,10 +3,10 @@ import Bauhaus 1.0
Item {
id: colorScheme
property var disabledColor: "gray";
property var defaultColor: "white";
property var boldTextColor: "#dedede";
property var changedBaseColor: "#9999ff";
property var changedStateColor: "#99ccff";
property var optionsColor: "white";
property variant disabledColor: "gray";
property variant defaultColor: "white";
property variant boldTextColor: "#dedede";
property variant changedBaseColor: "#9999ff";
property variant changedStateColor: "#99ccff";
property variant optionsColor: "white";
}
......@@ -5,8 +5,8 @@ QWidget {
id: comboBox
property var backendValue;
property var baseStateFlag;
property variant backendValue;
property variant baseStateFlag;
property alias enabled: box.enabled;
property alias items: box.items;
......@@ -17,7 +17,7 @@ QWidget {
evaluate();
}
property var isEnabled: comboBox.enabled
property variant isEnabled: comboBox.enabled
onIsEnabledChanged: {
evaluate();
}
......@@ -47,7 +47,7 @@ QWidget {
layout: HorizontalLayout {
QComboBox {
id: box
property var backendValue: comboBox.backendValue
property variant backendValue: comboBox.backendValue
onCurrentTextChanged: { backendValue.value = currentText; evaluate(); }
ExtendedFunctionButton {
backendValue: comboBox.backendValue;
......
......@@ -5,8 +5,8 @@ QWidget { //This is a special doubleSpinBox that does color coding for states
id: doubleSpinBox;
property var backendValue;
property var baseStateFlag;
property variant backendValue;
property variant baseStateFlag;
property alias singleStep: box.singleStep
property alias minimum: box.minimum
property alias maximum: box.maximum
......
......@@ -8,7 +8,7 @@ QWidget {
width: frame.width - 22
height: 40
property bool active: false
property var backendValue;
property variant backendValue;
onActiveChanged: {
......
......@@ -8,8 +8,8 @@ GroupBox {
layout: VerticalLayout{
property var effect: backendValues.effect
property var complexNode: effect.complexNode
property variant effect: backendValues.effect
property variant complexNode: effect.complexNode
QWidget {
maximumHeight: 40;
......@@ -19,8 +19,8 @@ GroupBox {
}
QComboBox {
enabled: isBaseState;
property var type: backendValues.effect.complexNode.type
property var dirty;
property variant type: backendValues.effect.complexNode.type
property variant dirty;
id: effectComboBox;
items : { [
"None",
......@@ -60,7 +60,7 @@ GroupBox {
}
}// QWidget
property var properties: complexNode == null ? null : complexNode.properties
property variant properties: complexNode == null ? null : complexNode.properties
QWidget {
minimumHeight: 20;
......@@ -101,7 +101,7 @@ GroupBox {
visible: effectComboBox.currentText == "Colorize";
layout: QVBoxLayout {
property var colorProp: properties == null ? null : properties.color
property variant colorProp: properties == null ? null : properties.color
ColorLabel {
......
......@@ -4,7 +4,7 @@ import Bauhaus 1.0
QToolButton {
id: extendedFunctionButton
property var backendValue
property variant backendValue
function setIcon() {
if (backendValue == null)
......
......@@ -6,9 +6,9 @@ QFrame {
focusPolicy: "Qt::NoFocus"
id: extendedSwitches;
property bool active: false;
property var backendValue;
property variant backendValue;
styleSheetFile: "switch.css";
property var specialModeIcon;
property variant specialModeIcon;
specialModeIcon: "images/standard.png";
opacity: 0;
......
......@@ -5,8 +5,8 @@ QWidget {
id: fontComboBox
property alias currentFont: fontSelector.currentFont
property var backendValue
property var baseStateFlag;
property variant backendValue
property variant baseStateFlag;
property alias enabled: fontSelector.enabled
onBaseStateFlagChanged: {
......@@ -17,7 +17,7 @@ QWidget {
evaluate();
}
property var isEnabled: fontComboBox.enabled
property variant isEnabled: fontComboBox.enabled
onIsEnabledChanged: {
evaluate();
}
......@@ -59,7 +59,7 @@ QWidget {
id: fontSelector
currentFont.family: backendValue.value
property var fontFamily: currentFont.family
property variant fontFamily: currentFont.family
onFontFamilyChanged: {
if (backendValue === undefined)
return;
......
......@@ -4,7 +4,7 @@ import Bauhaus 1.0
GroupBox {
id: fontGroupBox
caption: "Font";
property var showStyle: false
property variant showStyle: false
layout: VerticalLayout {
......
......@@ -4,11 +4,11 @@ import Bauhaus 1.0
QExtGroupBox {
id: groupBox;
property var finished;
property variant finished;
property var caption;
property variant caption;
property var oldMaximumHeight;
property variant oldMaximumHeight;
onFinishedChanged: {
checkBox.raise();
......
......@@ -4,11 +4,11 @@ import Bauhaus 1.0
QExtGroupBox {
id: groupBoxOption;
property var finished;
property variant finished;
property var caption;
property variant caption;
property var oldMaximumHeight;
property variant oldMaximumHeight;
onFinishedChanged: {
CheckBox.raise();
......
......@@ -4,14 +4,14 @@ import Bauhaus 1.0
QWidget {
id: intEditor;
property var backendValue;
property var baseStateFlag;
property variant backendValue;
property variant baseStateFlag;
property var caption;
property variant caption;
property var maximumValue: 99
property var minimumValue: 0
property var step: 1
property variant maximumValue: 99
property variant minimumValue: 0
property variant step: 1
property bool slider: true
property alias alignment: label.alignment
......@@ -26,7 +26,7 @@ QWidget {
intEditor.backendValue === null)
? null : intEditor.backendValue;
property var backendValueValue: (intEditor.backendValue === undefined ||
property variant backendValueValue: (intEditor.backendValue === undefined ||
intEditor.backendValue === null)
? null : intEditor.backendValue.value;
......
......@@ -9,7 +9,7 @@ GroupBox {
id: layout;
enabled: anchorBackend.hasParent;
property var targetLabelWidth: 90 - 20 - 26
property variant targetLabelWidth: 90 - 20 - 26
property int leftMarginMargin: 16
layout: VerticalLayout {
......
......@@ -4,9 +4,9 @@ import Bauhaus 1.0
QWidget {
id: lineEdit
property var backendValue
property variant backendValue
property alias enabled: lineEdit.enabled
property var baseStateFlag
property variant baseStateFlag
property alias text: lineEditWidget.text
property alias readOnly: lineEditWidget.readOnly
......@@ -16,7 +16,7 @@ QWidget {
evaluate();
}
property var isEnabled: lineEdit.enabled
property variant isEnabled: lineEdit.enabled
onIsEnabledChanged: {
evaluate();
}
......
......@@ -43,7 +43,7 @@ GroupBox {
text: ""
id: opacitySpinBox;
backendValue: backendValues.opacity === undefined ? null : backendValues.opacity
property var backendValueValue: backendValues.opacity.value;
property variant backendValueValue: backendValues.opacity.value;
minimumWidth: 60;
minimum: 0;
maximum: 1;
......@@ -101,7 +101,7 @@ GroupBox {
id: scaleSpinBox;
backendValue: backendValues.scale;
property var backendValueValue: backendValues.scale.value;
property variant backendValueValue: backendValues.scale.value;
minimumWidth: 60;
minimum: 0.01
maximum: 10
......
......@@ -4,7 +4,7 @@ import Bauhaus 1.0
QScrollArea {
property var finished;
property variant finished;
onFinishedChanged: {
setupProperWheelBehaviour();
......
......@@ -4,11 +4,11 @@ import Bauhaus 1.0
QWidget {
id: sliderWidget
property var value
property variant value
property alias singleStep: localSlider.singleStep
property alias minimum: localSlider.minimum
property alias maximum: localSlider.maximum
property var backendValue
property variant backendValue
QSlider {
orientation: "Qt::Horizontal";
......
......@@ -5,8 +5,8 @@ QWidget { //This is a special spinBox that does color coding for states
id: spinBox;
property var backendValue;
property var baseStateFlag;
property variant backendValue;
property variant baseStateFlag;
property alias singleStep: box.singleStep;
property alias minimum: box.minimum
property alias maximum: box.maximum
......@@ -22,7 +22,7 @@ QWidget { //This is a special spinBox that does color coding for states
evaluate();
}
property var isEnabled: spinBox.enabled
property variant isEnabled: spinBox.enabled
onIsEnabledChanged: {
evaluate();
}
......
......@@ -3,7 +3,7 @@ import Bauhaus 1.0
QFrame {
styleSheetFile: "switch.css";
property var specialModeIcon;
property variant specialModeIcon;
specialModeIcon: "images/standard.png";
maximumWidth: 300;
minimumWidth: 300;
......
......@@ -43,7 +43,7 @@ GroupBox {
id: scaleSpinBox;
backendValue: backendValues.scale;
property var backendValueValue: backendValues.scale.value;
property variant backendValueValue: backendValues.scale.value;
minimumWidth: 60;
minimum: 0.01
maximum: 10
......
......@@ -22,7 +22,7 @@ GroupBox {
}
}
QWidget {
property var isEnabled: isBaseState
property variant isEnabled: isBaseState
onIsEnabledChanged: idLineEdit.setStyleSheet("color: "+(isEnabled?scheme.defaultColor:scheme.disabledColor));
ColorScheme{ id:scheme }
......
......@@ -41,7 +41,7 @@ GroupBox {
text: ""
id: opacitySpinBox;
backendValue: backendValues.opacity
property var backendValueValue: backendValues.opacity.value;
property variant backendValueValue: backendValues.opacity.value;
minimumWidth: 60;
minimum: 0;
maximum: 1;
......
......@@ -2,7 +2,7 @@ import Qt 4.6
Image {
id: screen
property var selectedFile
property variant selectedFile
signal openFile
source: "gradient.png"
......
......@@ -70,23 +70,23 @@
}
</snippet>
<snippet description="matchTargets">NumberAnimation { matchTargets: "<tab>name</tab>"; matchProperties: "<tab>name</tab>"; duration: <tab>200</tab> }
<snippet description="with targets">NumberAnimation { targets: [<tab>name</tab>]; properties: "<tab>name</tab>"; duration: <tab>200</tab> }
</snippet>
<snippet description="target">NumberAnimation { target: "<tab>name</tab>"; property: "<tab>name</tab>"; value: <tab>name</tab>; duration: <tab>200</tab> }
<snippet description="with target">NumberAnimation { target: <tab>name</tab>; property: "<tab>name</tab>"; to: <tab>value</tab>; duration: <tab>200</tab> }
</snippet>
<snippet>PropertyAction { matchTargets: "<tab>name</tab>"; matchProperties: "<tab>name</tab>"; duration: <tab>200</tab> }
<snippet description="with targets">PropertyAction { targets: [<tab>name</tab>]; properties: "<tab>name</tab>" }
</snippet>
<snippet>PropertyAction { target: "<tab>name</tab>"; property: "<tab>name</tab>"; value: <tab>name</tab>; duration: <tab>200</tab> }
<snippet description="with target">PropertyAction { target: "<tab>name</tab>"; property: "<tab>name</tab>"; value: <tab>value</tab> }
</snippet>
<snippet>PauseAnimation { duration: <tab>name</tab>}
<snippet>PauseAnimation { duration: <tab>200</tab> }
</snippet>
<snippet>ColorAnimation { from: <tab>name</tab>; to: <tab>color</tab>; duration: <tab>200</tab> }
<snippet>ColorAnimation { from: <tab>color</tab>; to: <tab>color</tab>; duration: <tab>200</tab> }
</snippet>
<snippet>effect: Colorize { color: "<tab>color</tab>" }
<snippet description="Colorize">effect: Colorize { color: "<tab>color</tab>" }
</snippet>
<snippet>effect: Blur { blurRadius: "<tab>200</tab>" }
<snippet description="Blur">effect: Blur { blurRadius: "<tab>200</tab>" }
</snippet>
<snippet>effect: DropShadow {
<snippet description="DropShadow">effect: DropShadow {
blurRadius: <tab>3</tab>
offset.x: <tab>2</tab>
offset.y: <tab>2</tab>
......
......@@ -44,9 +44,7 @@
void %ProjectName%::registerTypes(const char *uri)
{
Q_UNUSED(uri);
QML_REGISTER_TYPE(%ProjectName%,1,0,%ObjectName%,%ObjectName%);
qmlRegisterType<%ObjectName%>(uri, 1, 0, "%ObjectName%");
}
Q_EXPORT_PLUGIN(%ProjectName%);
......@@ -4,14 +4,13 @@ QT += declarative
CONFIG += qt plugin
TARGET = $$qtLibraryTarget($$TARGET)
DESTDIR = %ProjectName%
# Input
SOURCES += \
%ProjectName%.cpp \
%ObjectName%.cpp
OTHER_FILES=%ProjectName%/qmldir
OTHER_FILES=qmldir
HEADERS += \
%ProjectName%.h \
......
......@@ -41,7 +41,7 @@ leave room for the Qt 4 target page.
<displayname>QML Runtime Plug-in</displayname>
<displaycategory>QML Runtime Plug-in</displaycategory>
<files>
<file source="qmldir" target="%ProjectName%/qmldir"/>
<file source="qmldir" target="qmldir"/>
<file source="plugin.h" target="%ProjectName%.h"/>
<file source="plugin.cpp" target="%ProjectName%.cpp"/>
<file source="object.h" target="%ObjectName%.h"/>
......
......@@ -15009,7 +15009,7 @@ Die folgenden Encodings scheinen der Datei zu entsprechen:</translation>
<message>
<location filename="../../../src/libs/utils/detailsbutton.cpp" line="+136"/>
<source>Details</source>
<translation>Beschreibung</translation>
<translation>Details</translation>
</message>
</context>
<context>
......
......@@ -219,8 +219,8 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General
<key>CFBundleIdentifier</key>
<string>com.nokia.qtcreator</string>
<key>CFBundleVersion</key>
<string>1.3.82</string>
<string>1.3.83</string>
<key>CFBundleShortVersionString</key>
<string>1.3.82</string>
<string>1.3.83</string>
</dict>
</plist>
......@@ -59,6 +59,16 @@ QStringList Bind::includedScripts() const
return _includedScripts;
}
QStringList Bind::fileImports() const
{
return _fileImports;
}
QStringList Bind::libraryImports() const
{
return _libraryImports;
}
Interpreter::ObjectValue *Bind::currentObjectValue() const
{
return _currentObjectValue;
......@@ -205,8 +215,14 @@ bool Bind::visit(AST::Program *)
return true;
}
bool Bind::visit(UiImport *)
bool Bind::visit(UiImport *ast)
{
if (ast->importUri) {
_libraryImports += toString(ast->importUri, QLatin1Char('/'));
} else if (ast->fileName) {
_fileImports += ast->fileName->asString();
}
return false;
}
......
......@@ -51,6 +51,8 @@ public:
virtual ~Bind();
QStringList includedScripts() const;
QStringList fileImports() const;
QStringList libraryImports() const;
Interpreter::ObjectValue *currentObjectValue() const;
Interpreter::ObjectValue *idEnvironment() const;
......@@ -100,6 +102,9 @@ private:
QHash<AST::Node *, Interpreter::ObjectValue *> _qmlObjects;
QStringList _includedScripts;
QStringList _fileImports;
QStringList _libraryImports;
};
} // end of namespace Qml
......
......@@ -176,6 +176,7 @@ Check::Check(Document::Ptr doc, const Snapshot &snapshot, const QStringList &imp
, _context(&_engine)
, _link(&_context, doc, snapshot, importPaths)
, _scopeBuilder(doc, &_context)
, _ignoreTypeErrors(_context.documentImportsPlugins(_doc.data()))
{
}
......@@ -227,7 +228,8 @@ void Check::visitQmlObject(Node *ast, UiQualifiedId *typeId,
_scopeBuilder.push(ast);
if (! _context.lookupType(_doc.data(), typeId)) {
warning(typeId->identifierToken, tr(Messages::unknown_type));
if (! _ignoreTypeErrors)
error(typeId->identifierToken, tr(Messages::unknown_type));
// suppress subsequent errors about scope object lookup by clearing
// the scope object list
// ### todo: better way?
......
......@@ -72,6 +72,8 @@ private:
ScopeBuilder _scopeBuilder;
QList<DiagnosticMessage> _messages;
bool _ignoreTypeErrors;
};
} // namespace QmlJS
......
......@@ -47,10 +47,10 @@ Document::Document(const QString &fileName)
, _isQmlDocument(false)
, _documentRevision(0)
, _parsedCorrectly(false)
, _fileName(fileName)
, _fileName(QDir::cleanPath(fileName))
{
QFileInfo fileInfo(fileName);
_path = fileInfo.absolutePath();
_path = QDir::cleanPath(fileInfo.absolutePath());
// ### Should use mime type
if (fileInfo.suffix() == QLatin1String("qml")
......@@ -250,13 +250,15 @@ Snapshot::~Snapshot()
void Snapshot::insert(const Document::Ptr &document)
{
if (document && (document->qmlProgram() || document->jsProgram()))
if (document && (document->qmlProgram() || document->jsProgram())) {
_documents.insert(document->fileName(), document);
_documentsByPath.insert(document->path(), document);
}
}
void Snapshot::insertLibraryInfo(const QString &path, const LibraryInfo &info)
{
_libraries.insert(path, info);
_libraries.insert(QDir::cleanPath(path), info);
}
Document::Ptr Snapshot::documentFromSource(const QString &code,
......@@ -312,3 +314,18 @@ QMap<QString, Document::Ptr> Snapshot::componentsDefinedByImportedDocuments(cons
return result;
}
Document::Ptr Snapshot::document(const QString &fileName) const
{
return _documents.value(QDir::cleanPath(fileName));
}
QList<Document::Ptr> Snapshot::documentsInDirectory(const QString &path) const
{
return _documentsByPath.values(QDir::cleanPath(path));
}
LibraryInfo Snapshot::libraryInfo(const QString &path) const
{
return _libraries.value(QDir::cleanPath(path));
}
......@@ -131,9 +131,10 @@ public:
class QMLJS_EXPORT Snapshot
{
typedef QMap<QString, Document::Ptr> _Base;
QMap<QString, Document::Ptr> _documents;
QMap<QString, LibraryInfo> _libraries;
typedef QHash<QString, Document::Ptr> _Base;
QHash<QString, Document::Ptr> _documents;
QMultiHash<QString, Document::Ptr> _documentsByPath;
QHash<QString, LibraryInfo> _libraries;
public:
Snapshot();
......@@ -148,11 +149,9 @@ public:
void insert(const Document::Ptr &document);
void insertLibraryInfo(const QString &path, const LibraryInfo &info);
Document::Ptr document(const QString &fileName) const
{ return _documents.value(fileName); }
LibraryInfo libraryInfo(const QString &path) const
{ return _libraries.value(path); }
Document::Ptr document(const QString &fileName) const;
QList<Document::Ptr> documentsInDirectory(const QString &path) const;
LibraryInfo libraryInfo(const QString &path) const;
Document::Ptr documentFromSource(const QString &code,
const QString &fileName) const;
......
......@@ -1389,6 +1389,16 @@ void Context::setProperty(const ObjectValue *object, const QString &name, const
_properties[object].insert(name, value);
}
bool Context::documentImportsPlugins(const QmlJS::Document *doc) const
{
return _documentsImportingPlugins.contains(doc->fileName());
}
void Context::setDocumentImportsPlugins(const QmlJS::Document *doc)
{
_documentsImportingPlugins.insert(doc->fileName());
}
Reference::Reference(Engine *engine)
: _engine(engine)
{
......
......@@ -308,6 +308,9 @@ public:
const Value *property(const ObjectValue *object, const QString &name) const;
void setProperty(const ObjectValue *object, const QString &name, const Value *value);
bool documentImportsPlugins(const Document *doc) const;
void setDocumentImportsPlugins(const Document *doc);
private:
typedef QHash<QString, const Value *> Properties;
......@@ -315,6 +318,7 @@ private:
LookupMode _lookupMode;
QHash<const ObjectValue *, Properties> _properties;
QHash<QString, const ObjectValue *> _typeEnvironments;
QSet<QString> _documentsImportingPlugins;
ScopeChain _scopeChain;
int _qmlScopeObjectIndex;
bool _qmlScopeObjectSet;
......
......@@ -21,8 +21,6 @@ Link::Link(Context *context, const Document::Ptr &doc, const Snapshot &snapshot,
, _context(context)
, _importPaths(importPaths)
{
foreach (Document::Ptr doc, snapshot)
_documentByPath.insert(doc->path(), doc);
linkImports();
}
......@@ -161,7 +159,7 @@ void Link::populateImportedTypes(Interpreter::ObjectValue *typeEnv, Document::Pt
// implicit imports:
// qml files in the same directory are available without explicit imports
foreach (Document::Ptr otherDoc, _documentByPath.values(doc->path())) {
foreach (Document::Ptr otherDoc, _snapshot.documentsInDirectory(doc->path())) {
if (otherDoc == doc)
continue;
......@@ -206,13 +204,14 @@ void Link::importFile(Interpreter::ObjectValue *typeEnv, Document::Ptr doc,
ObjectValue *importNamespace = typeEnv;
// directory import
if (_documentByPath.contains(path)) {
QList<Document::Ptr> documentsInDirectory = _snapshot.documentsInDirectory(path);
if (! documentsInDirectory.isEmpty()) {
if (import->importId) {
importNamespace = engine()->newObject(/*prototype =*/0);
typeEnv->setProperty(import->importId->asString(), importNamespace);
}
foreach (Document::Ptr importedDoc, _documentByPath.values(path)) {
foreach (Document::Ptr importedDoc, documentsInDirectory) {
const QString targetName = importedDoc->componentName();
importNamespace->setProperty(targetName, importedDoc->bind()->rootObjectValue());
}
......@@ -303,6 +302,9 @@ void Link::importNonFile(Interpreter::ObjectValue *typeEnv, Document::Ptr doc, A
if (!libraryInfo.isValid())
continue;
if (!libraryInfo.plugins().isEmpty())
_context->setDocumentImportsPlugins(doc.data());
QSet<QString> importedTypes;
foreach (const QmlDirParser::Component &component, libraryInfo.components()) {
if (importedTypes.contains(component.typeName))
......
......@@ -56,7 +56,6 @@ private:
Document::Ptr _doc;
Snapshot _snapshot;
Interpreter::Context *_context;
QMultiHash<QString, Document::Ptr> _documentByPath;
const QStringList _importPaths;
QList<DiagnosticMessage> _diagnosticMessages;
......
......@@ -184,7 +184,7 @@ void FancyMainWindow::restoreSettings(QSettings *settings)
QHash<QString, QVariant> FancyMainWindow::saveSettings() const
{
QHash<QString, QVariant> settings;
settings.insert(QLatin1String("State"), saveState());
settings.insert(QLatin1String("State"), saveState(1));
settings.insert(QLatin1String("Locked"), d->m_locked);
for (int i = 0; i < d->m_dockWidgetActiveState.count(); ++i) {
settings.insert(d->m_dockWidgets.at(i)->objectName(),
......@@ -197,7 +197,7 @@ void FancyMainWindow::restoreSettings(const QHash<QString, QVariant> &settings)
{
QByteArray ba = settings.value("State", QByteArray()).toByteArray();
if (!ba.isEmpty())
restoreState(ba);
restoreState(ba, 1);
d->m_locked = settings.value("Locked", true).toBool();
for (int i = 0; i < d->m_dockWidgetActiveState.count(); ++i) {
d->m_dockWidgetActiveState[i] = settings.value(d->m_dockWidgets.at(i)->objectName(), false).toBool();
......
<plugin name="BinEditor" version="1.3.82" compatVersion="1.3.82">
<plugin name="BinEditor" version="1.3.83" compatVersion="1.3.83">
<vendor>Nokia Corporation</vendor>
<copyright>(C) 2010 Nokia Corporation</copyright>
<license>
......@@ -14,7 +14,7 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General
<description>Binary editor component.</description>
<url>http://qt.nokia.com</url>
<dependencyList>
<dependency name="Core" version="1.3.82"/>
<dependency name="TextEditor" version="1.3.82"/>
<dependency name="Core" version="1.3.83"/>
<dependency name="TextEditor" version="1.3.83"/>
</dependencyList>
</plugin>
<plugin name="Bookmarks" version="1.3.82" compatVersion="1.3.82">
<plugin name="Bookmarks" version="1.3.83" compatVersion="1.3.83">
<vendor>Nokia Corporation</vendor>
<copyright>(C) 2010 Nokia Corporation</copyright>
<license>
......@@ -14,8 +14,8 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General
<description>Bookmarks in text editors.</description>
<url>http://qt.nokia.com</url>
<dependencyList>
<dependency name="TextEditor" version="1.3.82"/>
<dependency name="ProjectExplorer" version="1.3.82"/>
<dependency name="Core" version="1.3.82"/>
<dependency name="TextEditor" version="1.3.83"/>
<dependency name="ProjectExplorer" version="1.3.83"/>
<dependency name="Core" version="1.3.83"/>
</dependencyList>
</plugin>
<plugin name="CMakeProjectManager" version="1.3.82" compatVersion="1.3.82">
<plugin name="CMakeProjectManager" version="1.3.83" compatVersion="1.3.83">
<vendor>Nokia Corporation</vendor>
<copyright>(C) 2010 Nokia Corporation</copyright>
<license>
......@@ -14,9 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General
<description>CMake support</description>
<url>http://qt.nokia.com</url>
<dependencyList>
<dependency name="TextEditor" version="1.3.82"/>
<dependency name="ProjectExplorer" version="1.3.82"/>
<dependency name="CppTools" version="1.3.82"/>
<dependency name="CppEditor" version="1.3.82"/>
<dependency name="TextEditor" version="1.3.83"/>
<dependency name="ProjectExplorer" version="1.3.83"/>
<dependency name="CppTools" version="1.3.83"/>
<dependency name="CppEditor" version="1.3.83"/>
</dependencyList>
</plugin>
......@@ -162,7 +162,7 @@ bool MakeStep::immutable() const
return true;
}
void MakeStep::stdOut(const QString &line)
void MakeStep::stdOutput(const QString &line)
{
if (m_percentProgress.indexIn(line) != -1) {
bool ok = false;
......
......@@ -79,7 +79,7 @@ protected:
bool fromMap(const QVariantMap &map);
// For parsing [ 76%]
virtual void stdOut(const QString &line);
virtual void stdOutput(const QString &line);
private:
void ctor();
......
<plugin name="Core" version="1.3.82" compatVersion="1.3.82">
<plugin name="Core" version="1.3.83" compatVersion="1.3.83">
<vendor>Nokia Corporation</vendor>
<copyright>(C) 2010 Nokia Corporation</copyright>
<license>
......
......@@ -163,7 +163,6 @@ void CommandMappings::filterChanged(const QString &f)
bool CommandMappings::filter(const QString &f, const QTreeWidgetItem *item)
{
if (QTreeWidgetItem *parent = item->parent()) {
if (parent->text(0).contains(f, Qt::CaseInsensitive))
return false;
......
......@@ -37,7 +37,7 @@ namespace Constants {
#define IDE_VERSION_MAJOR 1
#define IDE_VERSION_MINOR 3
#define IDE_VERSION_RELEASE 82
#define IDE_VERSION_RELEASE 83
#define STRINGIFY_INTERNAL(x) #x
#define STRINGIFY(x) STRINGIFY_INTERNAL(x)
......
......@@ -207,7 +207,7 @@ void DesignMode::unregisterDesignWidget(QWidget *widget)
// if editor changes, check if we have valid mimetype registered.
void DesignMode::currentEditorChanged(Core::IEditor *editor)
{
if (d->m_currentEditor.data() == editor)
if (editor && (d->m_currentEditor.data() == editor))
return;
bool mimeEditorAvailable = false;
......@@ -239,6 +239,8 @@ void DesignMode::currentEditorChanged(Core::IEditor *editor)
if (!mimeEditorAvailable) {
setActiveContext(QList<int>());
if (core->modeManager()->currentMode() == this)
core->modeManager()->activateMode(Core::Constants::MODE_EDIT);
setEnabled(false);
d->m_currentEditor = QWeakPointer<Core::IEditor>();
emit actionsUpdated(d->m_currentEditor.data());
......