diff options
208 files changed, 4249 insertions, 12362 deletions
diff --git a/demos/qtdemo/xml/examples.xml b/demos/qtdemo/xml/examples.xml index 03b59f3..96a3e80 100644 --- a/demos/qtdemo/xml/examples.xml +++ b/demos/qtdemo/xml/examples.xml @@ -118,6 +118,7 @@ <example filename="threadedfortuneserver" name="Threaded Fort. Server" /> <example filename="torrent" name="Torrent Client" /> <example filename="securesocketclient" name="Secure Socket Client" /> + <example filename="googlesuggest" name="Google Suggest" /> </category> <category dirname="opengl" name="OpenGL"> <example filename="2dpainting" name="2D Painting" /> @@ -213,6 +214,12 @@ <example filename="wiggly" name="Wiggly" /> <example filename="windowflags" name="Window Flags" /> </category> + <category dirname="webkit" name="WebKit"> + <example filename="formextractor" name="Form Extractor" /> + <example filename="previewer" name="HTML Previewer" /> + <example filename="fancybrowser" name="Fancy Browser" /> + <example filename="googlechat" name="Google Chat" /> + </category> <category dirname="xml" name="XML"> <example filename="saxbookmarks" name="SAX Bookmarks" /> <example filename="dombookmarks" name="DOM Bookmarks" /> diff --git a/dist/changes-4.5.2 b/dist/changes-4.5.2 new file mode 100644 index 0000000..a772bf7 --- /dev/null +++ b/dist/changes-4.5.2 @@ -0,0 +1,123 @@ +Qt 4.5.2 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 4.5.0. For more details, +refer to the online documentation included in this distribution. The +documentation is also available online: + + http://doc.trolltech.com/4.5 + +The Qt version 4.5 series is binary compatible with the 4.4.x series. +Applications compiled for 4.4 will continue to run with 4.5. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Task Tracker: + + http://www.qtsoftware.com/developer/task-tracker + +Each of these identifiers can be entered in the task tracker to obtain more +information about a particular change. + +**************************************************************************** +* General * +**************************************************************************** + +General Improvements +-------------------- + +- Documentation and Examples + +Third party components +---------------------- + + +**************************************************************************** +* Library * +**************************************************************************** + + +**************************************************************************** +* Database Drivers * +**************************************************************************** + + +**************************************************************************** +* Platform Specific Changes * +**************************************************************************** + +Qt for Linux/X11 +---------------- + + +Qt for Windows +-------------- + + +Qt for Mac OS X +--------------- + + +Qt for Embedded Linux +--------------------- + + +Qt for Windows CE +----------------- + + +**************************************************************************** +* Compiler Specific Changes * +**************************************************************************** + + +**************************************************************************** +* Tools * +**************************************************************************** + +- Build System + +- Assistant + + +- Designer + + +- Linguist + - Linguist GUI + + - lupdate + + - lrelease + + +- rcc + + +- moc + + +- uic + + +- uic3 + + +- qmake + + +- configure + + +- qtconfig + + +- qt3to4 + + +**************************************************************************** +* Plugins * +**************************************************************************** + + +**************************************************************************** +* Important Behavior Changes * +**************************************************************************** + diff --git a/doc/doc.pri b/doc/doc.pri index 6b77f88..a4c77fe 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -4,7 +4,7 @@ win32 { QT_WINCONFIG = release/ - CONFIG(debug, debug|release) { + !CONFIG(release, debug|release) { QT_WINCONFIG = debug/ } } @@ -24,7 +24,7 @@ $$unixstyle { QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && QT_BUILD_TREE=$$QT_BUILD_TREE QT_SOURCE_TREE=$$QT_SOURCE_TREE $$QT_BUILD_TREE/tools/qdoc3/$${QT_WINCONFIG}qdoc3 $$DOCS_GENERATION_DEFINES } else { QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && set QT_BUILD_TREE=$$QT_BUILD_TREE&& set QT_SOURCE_TREE=$$QT_SOURCE_TREE&& $$QT_BUILD_TREE/tools/qdoc3/$${QT_WINCONFIG}qdoc3.exe $$DOCS_GENERATION_DEFINES - QDOC = $$replace(QDOC, "/", "\\\\") + QDOC = $$replace(QDOC, "/", "\\") } macx { ADP_DOCS_QDOCCONF_FILE = qt-build-docs-with-xcode.qdocconf diff --git a/doc/src/activeqt.qdoc b/doc/src/activeqt.qdoc index ea13e59..3919823 100644 --- a/doc/src/activeqt.qdoc +++ b/doc/src/activeqt.qdoc @@ -73,7 +73,7 @@ To build the static libraries, change into the \c activeqt directory (usually \c QTDIR/src/activeqt), and run \c qmake and your make tool in both the \c container and the \c control subdirectory. - The libraries \c qaxcontainer.lib and \c qaxserver.lib will be linked + The libraries \c qaxcontainer.lib and \c qaxserver.lib will be linked into \c QTDIR/lib. If you are using a shared configuration of Qt enter the \c plugin @@ -81,8 +81,8 @@ plugin that integrates the QAxContainer module into \l{Qt Designer}. - The ActiveQt modules are part of the \l{Qt Full Framework Edition}. They - are \e not part of the \l{Open Source Versions of Qt}. + The ActiveQt modules are part of the \l{Qt Full Framework Edition} and + the \l{Open Source Versions}. \sa {QAxContainer Module}, {QAxServer Module} */ diff --git a/doc/src/examples.qdoc b/doc/src/examples.qdoc index e3c2291..29c6c0b 100644 --- a/doc/src/examples.qdoc +++ b/doc/src/examples.qdoc @@ -209,6 +209,7 @@ \o \l{network/loopback}{Loopback} \o \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster \o \l{network/torrent}{Torrent} + \o \l{network/googlesuggest}{Google Suggest} \endlist \section1 OpenGL @@ -348,6 +349,8 @@ \list \o \l{webkit/previewer}{Previewer}\raisedaster \o \l{webkit/formextractor}{Form Extractor} + \o \l{webkit/googlechat}{Google Chat} + \o \l{webkit/fancybrowser}{Fancy Browser} \endlist \section1 Widgets diff --git a/doc/src/examples/fancybrowser.qdoc b/doc/src/examples/fancybrowser.qdoc new file mode 100644 index 0000000..9001c20 --- /dev/null +++ b/doc/src/examples/fancybrowser.qdoc @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \example webkit/fancybrowser + \title Fancy Browser Example + + The Fancy Browser example shows how to use jQuery with QtWebKit to + make a web browser with some special effects and content manipulation. + + \image fancybrowser-example.png + +*/ diff --git a/doc/src/examples/googlechat.qdoc b/doc/src/examples/googlechat.qdoc new file mode 100644 index 0000000..f2d61cf --- /dev/null +++ b/doc/src/examples/googlechat.qdoc @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \example webkit/googlechat + \title Google Chat Example + + The Google Chat example shows how to use implement a simple Google Chat + client with QtWebKit. + + \image googlechat-example.png + +*/ diff --git a/doc/src/examples/googlesuggest.qdoc b/doc/src/examples/googlesuggest.qdoc new file mode 100644 index 0000000..a9b09f9 --- /dev/null +++ b/doc/src/examples/googlesuggest.qdoc @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \example network/googlesuggest + \title Google Suggest Example + + The Google Suggest example shows how to use the network access manager + to get the list of suggested search terms from Google. + + \image googlesuggest-example.png + +*/ diff --git a/doc/src/images/fancybrowser-example.png b/doc/src/images/fancybrowser-example.png Binary files differnew file mode 100644 index 0000000..717ac9d --- /dev/null +++ b/doc/src/images/fancybrowser-example.png diff --git a/doc/src/images/googlechat-example.png b/doc/src/images/googlechat-example.png Binary files differnew file mode 100644 index 0000000..0338445 --- /dev/null +++ b/doc/src/images/googlechat-example.png diff --git a/doc/src/images/googlesuggest-example.png b/doc/src/images/googlesuggest-example.png Binary files differnew file mode 100644 index 0000000..4ef072a --- /dev/null +++ b/doc/src/images/googlesuggest-example.png diff --git a/doc/src/known-issues.qdoc b/doc/src/known-issues.qdoc index 60fd63d..91e122f 100644 --- a/doc/src/known-issues.qdoc +++ b/doc/src/known-issues.qdoc @@ -60,11 +60,10 @@ \section2 Intel Compiler Support - Although it is possible to build applications against Qt 4.5.0 using Intel - CC 10, these applications will crash when run. A fix for this issue is - scheduled for Qt 4.5.1. We recommend that developers who rely on this - compiler wait until the fix is applied before upgrading to the Qt 4.5.x - series of releases. + Although it is possible to build applications against Qt 4.5.x using Intel + CC 10, these applications will crash when run. We recommend that developers + who rely on this compiler wait until a fix is available before upgrading to + the Qt 4.5.x series of releases. \section2 X11 Hardware Support diff --git a/doc/src/licenses.qdoc b/doc/src/licenses.qdoc index b42b882..1c3f6d2 100644 --- a/doc/src/licenses.qdoc +++ b/doc/src/licenses.qdoc @@ -239,6 +239,24 @@ \o Parts of the internal QImageSmoothScaler::scale() function use code based on pnmscale.c by Jef Poskanzer. \endlist + + \hr + + jQuery JavaScript Library v1.3.2 + http://jquery.com/ + + Copyright (c) 2009 John Resig + Dual licensed under the MIT and GPL licenses. + http://docs.jquery.com/License + + Sizzle CSS Selector Engine - v0.9.3 + Copyright 2009, The Dojo Foundation + Released under the MIT, BSD, and GPL Licenses. + More information: http://sizzlejs.com/ + + \list + \o examples/webkit/fancybrowser/jquery.min.js + \endlist */ /*! diff --git a/doc/src/phonon-api.qdoc b/doc/src/phonon-api.qdoc index 3d04c68..501b5a5 100644 --- a/doc/src/phonon-api.qdoc +++ b/doc/src/phonon-api.qdoc @@ -4457,12 +4457,12 @@ */ /*! - \fn QList<int> Phonon::GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, HideAdvancedDevicesOverride override = FromSettings) const + \fn QList<int> Phonon::GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const \internal */ /*! - \fn int Phonon::GlobalConfig::audioOutputDeviceFor(Phonon::Category category) const + \fn int Phonon::GlobalConfig::audioOutputDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const \internal */ diff --git a/doc/src/snippets/code/doc_src_qtestlib.qdoc b/doc/src/snippets/code/doc_src_qtestlib.qdoc index ff52b2f..a0e4944 100644 --- a/doc/src/snippets/code/doc_src_qtestlib.qdoc +++ b/doc/src/snippets/code/doc_src_qtestlib.qdoc @@ -61,7 +61,7 @@ void TestQString::toUpper() //! [9] -/myTestDirectory$ qmake -project "QT += testlib" +/myTestDirectory$ qmake -project "CONFIG += qtestlib" /myTestDirectory$ qmake /myTestDirectory$ make //! [9] diff --git a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp index b982510..efd54ac 100644 --- a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp +++ b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp @@ -4,7 +4,7 @@ struct MyStructure int count; QString name; }; -QT_DECLARE_METATYPE(MyStructure) +Q_DECLARE_METATYPE(MyStructure) // Marshall the MyStructure data into a D-Bus argument QDBusArgument &operator<<(QDBusArgument &argument, const MyStructure &mystruct) diff --git a/examples/examples.pro b/examples/examples.pro index 2c4fc81..41501a0 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -33,7 +33,7 @@ embedded:SUBDIRS += qws } contains(QT_CONFIG, opengl): SUBDIRS += opengl contains(QT_CONFIG, dbus): SUBDIRS += dbus -win32:!contains(QT_EDITION, OpenSource|Console):SUBDIRS += activeqt +win32: SUBDIRS += activeqt contains(QT_CONFIG, xmlpatterns): SUBDIRS += xmlpatterns contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= mainwindows diff --git a/examples/graphicsview/elasticnodes/edge.cpp b/examples/graphicsview/elasticnodes/edge.cpp index 4018c25..eb02143 100644 --- a/examples/graphicsview/elasticnodes/edge.cpp +++ b/examples/graphicsview/elasticnodes/edge.cpp @@ -93,11 +93,16 @@ void Edge::adjust() QLineF line(mapFromItem(source, 0, 0), mapFromItem(dest, 0, 0)); qreal length = line.length(); - QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length); prepareGeometryChange(); - sourcePoint = line.p1() + edgeOffset; - destPoint = line.p2() - edgeOffset; + + if (length > qreal(20.)) { + QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length); + sourcePoint = line.p1() + edgeOffset; + destPoint = line.p2() - edgeOffset; + } else { + sourcePoint = destPoint = line.p1(); + } } QRectF Edge::boundingRect() const @@ -119,12 +124,15 @@ void Edge::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) if (!source || !dest) return; - // Draw the line itself QLineF line(sourcePoint, destPoint); + if (qFuzzyCompare(line.length(), qreal(0.))) + return; + + // Draw the line itself painter->setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); painter->drawLine(line); - // Draw the arrows if there's enough room + // Draw the arrows double angle = ::acos(line.dx() / line.length()); if (line.dy() >= 0) angle = TwoPi - angle; diff --git a/examples/itemviews/chart/pieview.cpp b/examples/itemviews/chart/pieview.cpp index 6b62f25..48f4073 100644 --- a/examples/itemviews/chart/pieview.cpp +++ b/examples/itemviews/chart/pieview.cpp @@ -254,7 +254,7 @@ void PieView::mousePressEvent(QMouseEvent *event) QAbstractItemView::mousePressEvent(event); origin = event->pos(); if (!rubberBand) - rubberBand = new QRubberBand(QRubberBand::Rectangle, this); + rubberBand = new QRubberBand(QRubberBand::Rectangle, viewport()); rubberBand->setGeometry(QRect(origin, QSize())); rubberBand->show(); } diff --git a/examples/network/googlesuggest/googlesuggest.cpp b/examples/network/googlesuggest/googlesuggest.cpp new file mode 100644 index 0000000..285a018 --- /dev/null +++ b/examples/network/googlesuggest/googlesuggest.cpp @@ -0,0 +1,223 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCore> +#include <QtGui> +#include <QtNetwork> + +#include "googlesuggest.h" + +#define GSUGGEST_URL "http://google.com/complete/search?output=toolbar&q=%1" + +GSuggestCompletion::GSuggestCompletion(QLineEdit *parent): QObject(parent), editor(parent) +{ + popup = new QTreeWidget; + popup->setColumnCount(2); + popup->setUniformRowHeights(true); + popup->setRootIsDecorated(false); + popup->setEditTriggers(QTreeWidget::NoEditTriggers); + popup->setSelectionBehavior(QTreeWidget::SelectRows); + popup->setFrameStyle(QFrame::Box | QFrame::Plain); + popup->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + popup->header()->hide(); + popup->installEventFilter(this); + popup->setMouseTracking(true); + + connect(popup, SIGNAL(itemClicked(QTreeWidgetItem*, int)), + SLOT(doneCompletion())); + + popup->setWindowFlags(Qt::Popup); + popup->setFocusPolicy(Qt::NoFocus); + popup->setFocusProxy(parent); + + timer = new QTimer(this); + timer->setSingleShot(true); + timer->setInterval(500); + connect(timer, SIGNAL(timeout()), SLOT(autoSuggest())); + connect(editor, SIGNAL(textEdited(QString)), timer, SLOT(start())); + + connect(&networkManager, SIGNAL(finished(QNetworkReply*)), + this, SLOT(handleNetworkData(QNetworkReply*))); + +} + +GSuggestCompletion::~GSuggestCompletion() +{ + delete popup; +} + +bool GSuggestCompletion::eventFilter(QObject *obj, QEvent *ev) +{ + if (obj != popup) + return false; + + if (ev->type() == QEvent::MouseButtonPress) { + popup->hide(); + editor->setFocus(); + return true; + } + + if (ev->type() == QEvent::KeyPress) { + + bool consumed = false; + int key = static_cast<QKeyEvent*>(ev)->key(); + switch (key) { + case Qt::Key_Enter: + case Qt::Key_Return: + doneCompletion(); + consumed = true; + + case Qt::Key_Escape: + editor->setFocus(); + popup->hide(); + consumed = true; + + case Qt::Key_Up: + case Qt::Key_Down: + case Qt::Key_Home: + case Qt::Key_End: + case Qt::Key_PageUp: + case Qt::Key_PageDown: + break; + + default: + editor->setFocus(); + editor->event(ev); + popup->hide(); + break; + } + + return consumed; + } + + return false; +} + +void GSuggestCompletion::showCompletion(const QStringList &choices, const QStringList &hits) +{ + + if (choices.isEmpty() || choices.count() != hits.count()) + return; + + const QPalette &pal = editor->palette(); + QColor color = pal.color(QPalette::Disabled, QPalette::WindowText); + + popup->setUpdatesEnabled(false); + popup->clear(); + for (int i = 0; i < choices.count(); ++i) { + QTreeWidgetItem * item; + item = new QTreeWidgetItem(popup); + item->setText(0, choices[i]); + item->setText(1, hits[i]); + item->setTextAlignment(1, Qt::AlignRight); + item->setTextColor(1, color); + } + popup->setCurrentItem(popup->topLevelItem(0)); + popup->resizeColumnToContents(0); + popup->resizeColumnToContents(1); + popup->adjustSize(); + popup->setUpdatesEnabled(true); + + int h = popup->sizeHintForRow(0) * qMin(7, choices.count()) + 3; + popup->resize(popup->width(), h); + + popup->move(editor->mapToGlobal(QPoint(0, editor->height()))); + popup->setFocus(); + popup->show(); +} + +void GSuggestCompletion::doneCompletion() +{ + timer->stop(); + popup->hide(); + editor->setFocus(); + QTreeWidgetItem *item = popup->currentItem(); + if (item) { + editor->setText(item->text(0)); + QKeyEvent *e; + e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier); + QApplication::postEvent(editor, e); + e = new QKeyEvent(QEvent::KeyRelease, Qt::Key_Enter, Qt::NoModifier); + QApplication::postEvent(editor, e); + } +} + +void GSuggestCompletion::preventSuggest() +{ + timer->stop(); +} + +void GSuggestCompletion::autoSuggest() +{ + QString str = editor->text(); + QString url = QString(GSUGGEST_URL).arg(str); + networkManager.get(QNetworkRequest(QString(url))); +} + +void GSuggestCompletion::handleNetworkData(QNetworkReply *networkReply) +{ + QUrl url = networkReply->url(); + if (!networkReply->error()) { + QStringList choices; + QStringList hits; + + QString response(networkReply->readAll()); + QXmlStreamReader xml(response); + while (!xml.atEnd()) { + xml.readNext(); + if (xml.tokenType() == QXmlStreamReader::StartElement) + if (xml.name() == "suggestion") { + QStringRef str = xml.attributes().value("data"); + choices << str.toString(); + } + if (xml.tokenType() == QXmlStreamReader::StartElement) + if (xml.name() == "num_queries") { + QStringRef str = xml.attributes().value("int"); + hits << str.toString(); + } + } + + showCompletion(choices, hits); + } + + networkReply->deleteLater(); +} diff --git a/examples/network/googlesuggest/googlesuggest.h b/examples/network/googlesuggest/googlesuggest.h new file mode 100644 index 0000000..0267709 --- /dev/null +++ b/examples/network/googlesuggest/googlesuggest.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef GOOGLESUGGEST_H +#define GOOGLESUGGEST_H + +#include <QObject> +#include <QNetworkAccessManager> + +QT_BEGIN_NAMESPACE +class QLineEdit; +class QNetworkReply; +class QTimer; +class QTreeWidget; +QT_END_NAMESPACE + +class GSuggestCompletion : public QObject +{ + Q_OBJECT + +public: + GSuggestCompletion(QLineEdit *parent = 0); + ~GSuggestCompletion(); + bool eventFilter(QObject *obj, QEvent *ev); + void showCompletion(const QStringList &choices, const QStringList &hits); + +public slots: + + void doneCompletion(); + void preventSuggest(); + void autoSuggest(); + void handleNetworkData(QNetworkReply *networkReply); + +private: + QLineEdit *editor; + QTreeWidget *popup; + QTimer *timer; + QNetworkAccessManager networkManager; +}; + +#endif // GOOGLESUGGEST_H + diff --git a/examples/network/googlesuggest/googlesuggest.pro b/examples/network/googlesuggest/googlesuggest.pro new file mode 100644 index 0000000..afd600f --- /dev/null +++ b/examples/network/googlesuggest/googlesuggest.pro @@ -0,0 +1,9 @@ +QT += network +SOURCES = main.cpp searchbox.cpp googlesuggest.cpp +HEADERS = searchbox.h googlesuggest.h + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlesuggest +sources.files = $$SOURCES $$HEADERS *.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlesuggest +INSTALLS += target sources diff --git a/doc/src/snippets/webkit/simple/main.cpp b/examples/network/googlesuggest/main.cpp index a6a4fc2..f8d9bc5 100644 --- a/doc/src/snippets/webkit/simple/main.cpp +++ b/examples/network/googlesuggest/main.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** Contact: Qt Software Information (qt-info@nokia.com) ** -** This file is part of the documentation of the Qt Toolkit. +** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage @@ -40,17 +40,13 @@ ****************************************************************************/ #include <QApplication> -#include <QUrl> -#include <QWebView> -int main(int argc, char *argv[]) +#include "searchbox.h" + +int main(int argc, char * argv[]) { QApplication app(argc, argv); - QWidget *parent = 0; -//! [Using QWebView] - QWebView *view = new QWebView(parent); - view->load(QUrl("http://qtsoftware.com/")); - view->show(); -//! [Using QWebView] + SearchBox *searchEdit = new SearchBox; + searchEdit->show(); return app.exec(); } diff --git a/examples/network/googlesuggest/searchbox.cpp b/examples/network/googlesuggest/searchbox.cpp new file mode 100644 index 0000000..cd7b122 --- /dev/null +++ b/examples/network/googlesuggest/searchbox.cpp @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QDesktopServices> +#include <QUrl> + +#include "searchbox.h" +#include "googlesuggest.h" + +#define GSEARCH_URL "http://www.google.com/search?q=%1" + + +SearchBox::SearchBox(QWidget *parent): QLineEdit(parent) +{ + completer = new GSuggestCompletion(this); + + connect(this, SIGNAL(returnPressed()), SLOT(doSearch())); + + setWindowTitle("Search with Google"); + + adjustSize(); + resize(400, height()); + setFocus(); +} + +void SearchBox::doSearch() +{ + completer->preventSuggest(); + QString url = QString(GSEARCH_URL).arg(text()); + QDesktopServices::openUrl(QUrl(url)); +} diff --git a/examples/network/googlesuggest/searchbox.h b/examples/network/googlesuggest/searchbox.h new file mode 100644 index 0000000..75ceffd --- /dev/null +++ b/examples/network/googlesuggest/searchbox.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SEARCHBOX_H +#define SEARCHBOX_H + +#include <QLineEdit> + +class GSuggestCompletion; + +class SearchBox: public QLineEdit +{ + Q_OBJECT + +public: + SearchBox(QWidget *parent = 0); + +protected slots: + void doSearch(); + +private: + GSuggestCompletion *completer; +}; + + +#endif // SEARCHBOX_H diff --git a/examples/network/network.pro b/examples/network/network.pro index 13b3116..8c45745 100644 --- a/examples/network/network.pro +++ b/examples/network/network.pro @@ -11,6 +11,7 @@ SUBDIRS = blockingfortuneclient \ http \ loopback \ threadedfortuneserver \ + googlesuggest \ torrent contains(QT_CONFIG, openssl):SUBDIRS += securesocketclient diff --git a/examples/webkit/fancybrowser/fancybrowser.pro b/examples/webkit/fancybrowser/fancybrowser.pro new file mode 100644 index 0000000..3de3036 --- /dev/null +++ b/examples/webkit/fancybrowser/fancybrowser.pro @@ -0,0 +1,11 @@ +QT += webkit +HEADERS = mainwindow.h +SOURCES = main.cpp \ + mainwindow.cpp +RESOURCES = jquery.qrc + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/webkit/fancybrowser +sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/fancybrowser +INSTALLS += target sources diff --git a/examples/webkit/fancybrowser/jquery.min.js b/examples/webkit/fancybrowser/jquery.min.js new file mode 100644 index 0000000..b1ae21d --- /dev/null +++ b/examples/webkit/fancybrowser/jquery.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
\ No newline at end of file diff --git a/examples/webkit/fancybrowser/jquery.qrc b/examples/webkit/fancybrowser/jquery.qrc new file mode 100644 index 0000000..1022d68 --- /dev/null +++ b/examples/webkit/fancybrowser/jquery.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/" > + <file>jquery.min.js</file> + </qresource> +</RCC> diff --git a/examples/webkit/fancybrowser/main.cpp b/examples/webkit/fancybrowser/main.cpp new file mode 100644 index 0000000..5936469 --- /dev/null +++ b/examples/webkit/fancybrowser/main.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui> +#include "mainwindow.h" + +int main(int argc, char * argv[]) +{ + QApplication app(argc, argv); + MainWindow *browser = new MainWindow; + browser->show(); + return app.exec(); +} diff --git a/examples/webkit/fancybrowser/mainwindow.cpp b/examples/webkit/fancybrowser/mainwindow.cpp new file mode 100644 index 0000000..bf61f9c --- /dev/null +++ b/examples/webkit/fancybrowser/mainwindow.cpp @@ -0,0 +1,167 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui> +#include <QtWebKit> +#include "mainwindow.h" + +MainWindow::MainWindow() +{ + progress = 0; + + QFile file; + file.setFileName(":/jquery.min.js"); + file.open(QIODevice::ReadOnly); + jQuery = file.readAll(); + file.close(); + + view = new QWebView(this); + view->load(QUrl("http://www.google.com/ncr")); + connect(view, SIGNAL(loadFinished(bool)), SLOT(adjustLocation())); + connect(view, SIGNAL(titleChanged(const QString&)), SLOT(adjustTitle())); + connect(view, SIGNAL(loadProgress(int)), SLOT(setProgress(int))); + connect(view, SIGNAL(loadFinished(bool)), SLOT(finishLoading(bool))); + + locationEdit = new QLineEdit(this); + locationEdit->setSizePolicy(QSizePolicy::Expanding, locationEdit->sizePolicy().verticalPolicy()); + connect(locationEdit, SIGNAL(returnPressed()), SLOT(changeLocation())); + + QToolBar *toolBar = addToolBar(tr("Navigation")); + toolBar->addAction(view->pageAction(QWebPage::Back)); + toolBar->addAction(view->pageAction(QWebPage::Forward)); + toolBar->addAction(view->pageAction(QWebPage::Reload)); + toolBar->addAction(view->pageAction(QWebPage::Stop)); + toolBar->addWidget(locationEdit); + + QMenu *effectMenu = menuBar()->addMenu(tr("&Effect")); + effectMenu->addAction("Highlight all links", this, SLOT(highlightAllLinks())); + + QAction *rotateAction = new QAction(this); + rotateAction->setIcon(style()->standardIcon(QStyle::SP_FileDialogDetailedView)); + rotateAction->setCheckable(true); + rotateAction->setText(tr("Turn images upside down")); + connect(rotateAction, SIGNAL(toggled(bool)), this, SLOT(rotateImages(bool))); + effectMenu->addAction(rotateAction); + + QMenu *toolsMenu = menuBar()->addMenu(tr("&Tools")); + toolsMenu->addAction(tr("Remove GIF images"), this, SLOT(removeGifImages())); + toolsMenu->addAction(tr("Remove all inline frames"), this, SLOT(removeInlineFrames())); + toolsMenu->addAction(tr("Remove all object elements"), this, SLOT(removeObjectElements())); + toolsMenu->addAction(tr("Remove all embedded elements"), this, SLOT(removeEmbeddedElements())); + + setCentralWidget(view); +} + +void MainWindow::adjustLocation() +{ + locationEdit->setText(view->url().toString()); +} + +void MainWindow::changeLocation() +{ + QUrl url = QUrl(locationEdit->text()); + locationEdit->setText(url.toString()); + view->load(url); + view->setFocus(); +} + +void MainWindow::adjustTitle() +{ + if (progress <= 0 || progress >= 100) + setWindowTitle(view->title()); + else + setWindowTitle(QString("%1 (%2%)").arg(view->title()).arg(progress)); +} + +void MainWindow::setProgress(int p) +{ + progress = p; + adjustTitle(); +} + +void MainWindow::finishLoading(bool) +{ + progress = 100; + adjustTitle(); + view->page()->mainFrame()->evaluateJavaScript(jQuery); +} + +void MainWindow::highlightAllLinks() +{ + QString code = "$('a').each( function () { $(this).css('background-color', 'yellow') } )"; + view->page()->mainFrame()->evaluateJavaScript(code); +} + +void MainWindow::rotateImages(bool toggle) +{ + QString code = "$('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s') } )"; + view->page()->mainFrame()->evaluateJavaScript(code); + if (toggle) + code = "$('img').each( function () { $(this).css('-webkit-transform', 'rotate(180deg)') } )"; + else + code = "$('img').each( function () { $(this).css('-webkit-transform', 'rotate(0deg)') } )"; + view->page()->mainFrame()->evaluateJavaScript(code); +} + +void MainWindow::removeGifImages() +{ + QString code = "$('[src*=gif]').remove()"; + view->page()->mainFrame()->evaluateJavaScript(code); +} + +void MainWindow::removeInlineFrames() +{ + QString code = "$('iframe').remove()"; + view->page()->mainFrame()->evaluateJavaScript(code); +} + +void MainWindow::removeObjectElements() +{ + QString code = "$('object').remove()"; + view->page()->mainFrame()->evaluateJavaScript(code); +} + +void MainWindow::removeEmbeddedElements() +{ + QString code = "$('embed').remove()"; + view->page()->mainFrame()->evaluateJavaScript(code); +} + diff --git a/examples/webkit/fancybrowser/mainwindow.h b/examples/webkit/fancybrowser/mainwindow.h new file mode 100644 index 0000000..9362ca7 --- /dev/null +++ b/examples/webkit/fancybrowser/mainwindow.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QMainWindow> + +QT_BEGIN_NAMESPACE +class QWebView; +class QLineEdit; +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(); + +protected slots: + + void adjustLocation(); + void changeLocation(); + void adjustTitle(); + void setProgress(int p); + void finishLoading(bool); + + void highlightAllLinks(); + void rotateImages(bool toggle); + void removeGifImages(); + void removeInlineFrames(); + void removeObjectElements(); + void removeEmbeddedElements(); + +private: + QString jQuery; + QWebView *view; + QLineEdit *locationEdit; + int progress; +}; diff --git a/examples/webkit/googlechat/form.ui b/examples/webkit/googlechat/form.ui new file mode 100644 index 0000000..3b9fb82 --- /dev/null +++ b/examples/webkit/googlechat/form.ui @@ -0,0 +1,214 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>286</width> + <height>413</height> + </rect> + </property> + <property name="windowTitle"> + <string>Google Talk Client</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="spacing"> + <number>0</number> + </property> + <property name="margin"> + <number>0</number> + </property> + <item> + <widget class="QStackedWidget" name="stackedWidget"> + <property name="currentIndex"> + <number>1</number> + </property> + <widget class="QWidget" name="page_3"> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <spacer name="verticalSpacer_4"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>170</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="statusLabel"> + <property name="text"> + <string>TextLabel</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar"> + <property name="value"> + <number>24</number> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_5"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>169</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <widget class="QWidget" name="page"> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>119</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="userNameLabel"> + <property name="text"> + <string>Google username:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="userNameEdit"/> + </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>17</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="passwordLabel"> + <property name="text"> + <string>Password:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="passwordEdit"> + <property name="echoMode"> + <enum>QLineEdit::Password</enum> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>118</height> + </size> + </property> + </spacer> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="loginButton"> + <property name="text"> + <string>Login</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="page_2"> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <property name="spacing"> + <number>0</number> + </property> + <property name="margin"> + <number>0</number> + </property> + <item> + <widget class="QWebView" name="webView"> + <property name="url"> + <url> + <string>about:blank</string> + </url> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>QWebView</class> + <extends>QWidget</extends> + <header>QtWebKit/QWebView</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/examples/webkit/googlechat/googlechat.cpp b/examples/webkit/googlechat/googlechat.cpp new file mode 100644 index 0000000..9ac2cd2 --- /dev/null +++ b/examples/webkit/googlechat/googlechat.cpp @@ -0,0 +1,163 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui> +#include <QtWebKit> + +#include "googlechat.h" + +#define GOOGLECHAT_URL "http://talkgadget.google.com/talkgadget/m" + +GoogleChat::GoogleChat(): QWidget() { + form.setupUi(this); + setFixedSize(320, 480); + + form.userNameEdit->setFocus(); + connect(form.userNameEdit, SIGNAL(textChanged(QString)), SLOT(adjustLoginButton())); + connect(form.userNameEdit, SIGNAL(returnPressed()), SLOT(inputPassword())); + + connect(form.passwordEdit, SIGNAL(textChanged(QString)), SLOT(adjustLoginButton())); + connect(form.passwordEdit, SIGNAL(returnPressed()), SLOT(doLogin())); + + form.loginButton->setEnabled(false); + connect(form.loginButton, SIGNAL(clicked()), SLOT(doLogin())); + + connect(form.webView, SIGNAL(loadFinished(bool)), SLOT(initialPage(bool))); + connect(form.webView, SIGNAL(loadProgress(int)), + form.progressBar, SLOT(setValue(int))); + form.webView->setUrl((QUrl(GOOGLECHAT_URL))); + form.webView->setContextMenuPolicy(Qt::PreventContextMenu); + + showStatus("Wait..."); +} + +void GoogleChat::showStatus(const QString &msg) { + form.statusLabel->setText(msg); + form.stackedWidget->setCurrentIndex(0); +} + +void GoogleChat::showError(const QString &msg) { + form.progressBar->hide(); + showStatus(QString("Error: %1").arg(msg)); +} + +QString GoogleChat::evalJS(const QString &js) { + QWebFrame *frame = form.webView->page()->mainFrame(); + return frame->evaluateJavaScript(js).toString(); +} + +void GoogleChat::adjustLoginButton() { + userName = form.userNameEdit->text(); + password = form.passwordEdit->text(); + bool ok = !userName.isEmpty() && !password.isEmpty(); + form.loginButton->setEnabled(ok); +} + +void GoogleChat::inputPassword() { + if (!form.userNameEdit->text().isEmpty()) + form.passwordEdit->setFocus(); +} + +void GoogleChat::doLogin() { + userName = form.userNameEdit->text(); + password = form.passwordEdit->text(); + bool ok = !userName.isEmpty() && !password.isEmpty(); + if (!ok) + return; + + form.progressBar->setValue(0); + form.progressBar->show(); + connect(form.webView, SIGNAL(loadFinished(bool)), SLOT(loginPage(bool))); + connect(form.webView, SIGNAL(loadProgress(int)), + form.progressBar, SLOT(setValue(int))); + showStatus("Logging in..."); + + QString userEmail = userName + "@gmail.com"; + evalJS(QString("document.getElementById('Email').value = \"%1\";").arg(userEmail)); + evalJS(QString("document.getElementById('Passwd').value = \"%1\";").arg(password)); + evalJS("document.getElementById('gaia_loginform').submit();"); +} + +void GoogleChat::initialPage(bool ok) { + if (ok) { + QString s1 = evalJS("document.getElementById('Email').name"); + QString s2 = evalJS("document.getElementById('Passwd').name"); + QString s3 = evalJS("document.getElementById('gaia_loginform').id"); + if (s1 == "Email" && s2 == "Passwd" && s3 == "gaia_loginform") { + form.stackedWidget->setCurrentIndex(1); + form.webView->disconnect(); + return; + } + } + + showError("SERVICE unavailable."); +} + +void GoogleChat::hideElements() +{ + evalJS("var e = document.getElementsByClassName('footer-footer')[0]; e.parentElement.removeChild(e)"); + evalJS("var e = document.getElementsByClassName('title-bar-bg title-bar')[0]; e.parentElement.removeChild(e)"); + QTimer::singleShot(2000, this, SLOT(hideElements())); +} + +void GoogleChat::loginPage(bool ok) { + QString location = form.webView->url().toString(); + if (!ok) { + if (location.indexOf("CheckCookie")) + return; + showError("Service unavailable"); + } else { + // check for any error message + QString c = evalJS("document.getElementsByClassName('errormsg').length"); + if (c == "0") { + form.stackedWidget->setCurrentIndex(2); + QTimer::singleShot(500, this, SLOT(hideElements())); + return; + } + + QString err = "Unknown login failure."; + if (c == "1") { + err = evalJS("document.getElementsByClassName('errormsg')[0].textContent"); + err = err.simplified(); + } + showError(err); + } +} diff --git a/examples/webkit/googlechat/googlechat.h b/examples/webkit/googlechat/googlechat.h new file mode 100644 index 0000000..c92632c --- /dev/null +++ b/examples/webkit/googlechat/googlechat.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QWidget> + +#include "ui_form.h" + +class GoogleChat: public QWidget +{ + Q_OBJECT + +public: + GoogleChat(); + +protected: + void showStatus(const QString &msg); + void showError(const QString &msg); + QString evalJS(const QString &js); + +private slots: + + void adjustLoginButton(); + void inputPassword(); + void doLogin(); + void initialPage(bool ok); + void loginPage(bool ok); + void hideElements(); + +private: + Ui::Form form; + QString userName; + QString password; +}; diff --git a/examples/webkit/googlechat/googlechat.pro b/examples/webkit/googlechat/googlechat.pro new file mode 100644 index 0000000..14b7085 --- /dev/null +++ b/examples/webkit/googlechat/googlechat.pro @@ -0,0 +1,11 @@ +QT += webkit +HEADERS = googlechat.h +SOURCES = main.cpp \ + googlechat.cpp +FORMS = form.ui + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlechat +sources.files = $$SOURCES $$HEADERS $$FORMS *.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlechat +INSTALLS += target sources diff --git a/examples/webkit/googlechat/main.cpp b/examples/webkit/googlechat/main.cpp new file mode 100644 index 0000000..26feeea --- /dev/null +++ b/examples/webkit/googlechat/main.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui> +#include "googlechat.h" + +int main(int argc, char * argv[]) +{ + QApplication app(argc, argv); + GoogleChat *chat = new GoogleChat; + chat->show(); + return app.exec(); +} diff --git a/examples/webkit/webkit.pro b/examples/webkit/webkit.pro index 3777eec..225816a 100644 --- a/examples/webkit/webkit.pro +++ b/examples/webkit/webkit.pro @@ -1,6 +1,8 @@ TEMPLATE = subdirs SUBDIRS += formextractor \ - previewer + previewer \ + fancybrowser \ + googlechat # install target.path = $$[QT_INSTALL_EXAMPLES]/webkit diff --git a/mkspecs/features/uic.prf b/mkspecs/features/uic.prf index 0c7fb1b..d2985f9 100644 --- a/mkspecs/features/uic.prf +++ b/mkspecs/features/uic.prf @@ -34,10 +34,12 @@ isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_ INCREDIBUILD_XGE += uic } -ui_dir_short = $$UI_HEADERS_DIR -win32:ui_dir_short ~= s,^.:,/, -contains(ui_dir_short, ^[/\\\\].*):INCLUDEPATH += $$UI_HEADERS_DIR -else:INCLUDEPATH += $$OUT_PWD/$$UI_HEADERS_DIR +!isEmpty(FORMS)|!isEmpty(FORMS3) { + ui_dir_short = $$UI_HEADERS_DIR + win32:ui_dir_short ~= s,^.:,/, + contains(ui_dir_short, ^[/\\\\].*):INCLUDEPATH += $$UI_HEADERS_DIR + else:INCLUDEPATH += $$OUT_PWD/$$UI_HEADERS_DIR +} # Backwards compatibility: Make shadow builds with default UI_DIR work # if the user did not add the source dir explicitly. diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index 60a27be..87f55cf 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -432,9 +432,21 @@ void Win32MakefileGenerator::processRcFileVar() writeRcFile = rcFile.readAll() != rcString; rcFile.close(); } - if (writeRcFile && rcFile.open(QFile::WriteOnly)) { - rcFile.write(rcString); - rcFile.close(); + if (writeRcFile) { + bool ok; + ok = rcFile.open(QFile::WriteOnly); + if (!ok) { + // The file can't be opened... try creating the containing + // directory first (needed for clean shadow builds) + QDir().mkpath(QFileInfo(rcFile).path()); + ok = rcFile.open(QFile::WriteOnly); + } + if (!ok) { + ::fprintf(stderr, "Cannot open for writing: %s", rcFile.fileName().toLatin1().constData()); + ::exit(1); + } + rcFile.write(rcString); + rcFile.close(); } if (project->values("QMAKE_WRITE_DEFAULT_RC").isEmpty()) project->values("RC_FILE").insert(0, rcFile.fileName()); diff --git a/src/3rdparty/phonon/ds9/mediaobject.cpp b/src/3rdparty/phonon/ds9/mediaobject.cpp index 93a19b0..1d0b69d 100644 --- a/src/3rdparty/phonon/ds9/mediaobject.cpp +++ b/src/3rdparty/phonon/ds9/mediaobject.cpp @@ -519,6 +519,15 @@ namespace Phonon qSwap(m_graphs[0], m_graphs[1]); //swap the graphs + if (currentGraph()->mediaSource().type() != Phonon::MediaSource::Invalid && + catchComError(currentGraph()->renderResult())) { + setState(Phonon::ErrorState); + return; + } + + //we need to play the next media + play(); + //we tell the video widgets to switch now to the new source #ifndef QT_NO_PHONON_VIDEO for (int i = 0; i < m_videoWidgets.count(); ++i) { @@ -527,15 +536,6 @@ namespace Phonon #endif //QT_NO_PHONON_VIDEO emit currentSourceChanged(currentGraph()->mediaSource()); - - if (currentGraph()->isLoading()) { - //will simply tell that when loading is finished - //it should start the playback - play(); - } - - - emit metaDataChanged(currentGraph()->metadata()); if (nextGraph()->hasVideo() != currentGraph()->hasVideo()) { @@ -548,15 +548,6 @@ namespace Phonon #ifndef QT_NO_PHONON_MEDIACONTROLLER setTitles(currentGraph()->titles()); #endif //QT_NO_PHONON_MEDIACONTROLLER - - //this manages only gapless transitions - if (currentGraph()->mediaSource().type() != Phonon::MediaSource::Invalid) { - if (catchComError(currentGraph()->renderResult())) { - setState(Phonon::ErrorState); - } else { - play(); - } - } } Phonon::State MediaObject::state() const diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog index ec8242d..76cfc80 100644 --- a/src/3rdparty/webkit/ChangeLog +++ b/src/3rdparty/webkit/ChangeLog @@ -1,3 +1,11 @@ +2009-04-24 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Ariya Hidayat. + + Added support for generating API docs in the Qt build using "make docs" + + * WebKit.pro: Include docs.pri for "make docs" target. + 2008-12-19 Marco Barisione <marco.barisione@collabora.co.uk> Reviewed by Holger Freyther. diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog index fe85bb9..3321570 100644 --- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog +++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog @@ -1,3 +1,60 @@ +2009-01-22 Oliver Hunt <oliver@apple.com> + + Reviewed by Geoff Garen. + + <rdar://problem/6516853> (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()" + <https://bugs.webkit.org/show_bug.cgi?id=23479> + + Automatic semicolon insertion was resulting in this being accepted in the initial + nodeless parsing, but subsequent reparsing for code generation would fail, leading + to a crash. The solution is to ensure that reparsing a function performs parsing + in the same state as the initial parse. We do this by modifying the saved source + ranges to include rather than exclude the opening and closing braces. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): add an assertion for successful recompile + * parser/Lexer.h: + (JSC::Lexer::sourceCode): include rather than exclude braces. + * parser/Nodes.h: + (JSC::FunctionBodyNode::toSourceString): No need to append braces anymore. + +2009-01-21 Alexey Proskuryakov <ap@webkit.org> + + Suggested by Oliver Hunt. Reviewed by Oliver Hunt. + + https://bugs.webkit.org/show_bug.cgi?id=23456 + Function argument names leak + + * parser/Nodes.cpp: (JSC::FunctionBodyNode::~FunctionBodyNode): Destruct parameter names. + +2009-01-22 Beth Dakin <bdakin@apple.com> + + Reviewed by Sam Weinig. + + Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/ + fast/js/numeric-conversion.html is broken, and corresponding + <rdar://problem/6514842> + + The basic problem here is that parseInt(Infinity) should be NaN, + but we were returning 0. NaN matches Safari 3.2.1 and Firefox. + + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncParseInt): + +2009-01-13 Beth Dakin <bdakin@apple.com> + + Reviewed by Darin Adler and Oliver Hunt. + + <rdar://problem/6489314> REGRESSION: Business widget's front side + fails to render correctly when flipping widget + + The problem here is that parseInt was parsing NaN as 0. This patch + corrects that by parsing NaN as NaN. This matches our old behavior + and Firefox. + + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncParseInt): + 2009-02-13 Adam Treat <adam.treat@torchmobile.com> Reviewed by George Staikos. diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp index 91fb1c0..9207c8a 100644 --- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp @@ -1397,6 +1397,7 @@ void CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame) case FunctionCode: { FunctionBodyNode* ownerFunctionBodyNode = static_cast<FunctionBodyNode*>(m_ownerNode); RefPtr<FunctionBodyNode> newFunctionBody = m_globalData->parser->reparse<FunctionBodyNode>(m_globalData, ownerFunctionBodyNode); + ASSERT(newFunctionBody); newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount()); CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain); ASSERT(newCodeBlock.m_exceptionInfo); diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h index cb553af..afcf09f 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h @@ -88,7 +88,7 @@ namespace JSC { bool sawError() const { return m_error; } void clear(); - SourceCode sourceCode(int openBrace, int closeBrace, int firstLine) { return SourceCode(m_source->provider(), openBrace + 1, closeBrace, firstLine); } + SourceCode sourceCode(int openBrace, int closeBrace, int firstLine) { return SourceCode(m_source->provider(), openBrace, closeBrace + 1, firstLine); } private: friend class JSGlobalData; diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp index bdc5d2f..201af28 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp @@ -2552,6 +2552,8 @@ FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* chi FunctionBodyNode::~FunctionBodyNode() { ASSERT(!m_refCount); + for (size_t i = 0; i < m_parameterCount; ++i) + m_parameters[i].~Identifier(); fastFree(m_parameters); } diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h index f8512f7..20885c3 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h @@ -2205,7 +2205,7 @@ namespace JSC { void finishParsing(const SourceCode&, ParameterNode*); void finishParsing(Identifier* parameters, size_t parameterCount); - UString toSourceString() const JSC_FAST_CALL { return UString("{") + source().toString() + UString("}"); } + UString toSourceString() const JSC_FAST_CALL { return source().toString(); } // These objects are ref/deref'd a lot in the scope chain, so this is a faster ref/deref. // If the virtual machine changes so this doesn't happen as much we can change back. diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp index f12d2f3..ecdddcf 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp @@ -302,9 +302,11 @@ JSValuePtr globalFuncParseInt(ExecState* exec, JSObject*, JSValuePtr, const ArgL if (JSImmediate::isImmediate(value)) return value; double d = value->uncheckedGetNumber(); - if (!isfinite(d)) - return JSImmediate::zeroImmediate(); - return jsNumber(exec, floor(d)); + if (isfinite(d)) + return jsNumber(exec, floor(d)); + if (isnan(d) || isinf(d)) + return jsNaN(&exec->globalData()); + return JSImmediate::zeroImmediate(); } return jsNumber(exec, parseInt(value->toString(exec), radix)); diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index bfaefa2..26ce489 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -8,4 +8,4 @@ The commit imported was from the and has the sha1 checksum - 450331808bfe11b1472c213a8cb311190355c2de + a6ebe3865025e2bb4d767a79435af4daf5a9b4db diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index 9be6e72..00bd427 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,111 @@ +2009-03-13 Adam Bergkvist <adam.bergkvist@ericsson.com> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24349 + [QT] HTTP status text is never set + + Set HTTP status text to the reason phrase attribute of QNetworkReply. + + * platform/network/qt/QNetworkReplyHandler.cpp: + (WebCore::QNetworkReplyHandler::sendResponseIfNeeded): + +2009-03-02 Dirk Schulze <krit@webkit.org> + + Reviewed by Holger Freyther. + + Added putImageData to Qt. Discussed with Ariya Hidayat. + + [Qt] lacks putImageData support in Canvas + https://bugs.webkit.org/show_bug.cgi?id=22186 + + * platform/graphics/qt/ImageBufferQt.cpp: + (WebCore::ImageBuffer::putImageData): + +2009-03-01 Larry Ewing <lewing@novell.com> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24080 + NPN_GetValue casting to the wrong type and writing outside bounds + + Make sure to cast the value to the correct type so that only + memory owned by the value is written to. + + * plugins/gtk/PluginViewGtk.cpp (PluginView::getValueStatic): + * plugins/qt/PluginViewQt.cpp (PluginView::getValueStatic): + * plugins/mac/PluginViewMac.cpp (PluginView::getValueStatic): + (PluginView::getValue): + +2009-02-27 Adam Treat <adam.treat@torchmobile.com> + + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=24229 + If an image has no alpha channel there is no reason to use SourceOver. + + * platform/graphics/qt/ImageQt.cpp: + (WebCore::Image::drawPattern): + (WebCore::BitmapImage::draw): + +2009-02-27 Zack Rusin <zack@kde.org> + + Reviewed by Nikolas Zimmermann. + + Qt: be more reasonable about scrolled lines + + cMouseWheelPixelsPerLineStep is currently a constant set to 13.3. it doesn't + match our metrics meaning that Qt scrolls by ~2 lines by default which is quite + irritating. so lets scroll vertically by the Qt set number of lines * Qt default + single step scroll + + * platform/qt/WheelEventQt.cpp: + +2009-02-25 Dirk Schulze <krit@webkit.org> + + Reviewed by Oliver Hunt. + + Ported arcTo to Qt. Qt has no native support for arcTo. This changes + calculate the behavior of arcTo and draws it with lineTo and arc. + + [QT] implement Canvas arcTo + https://bugs.webkit.org/show_bug.cgi?id=23873 + + * platform/graphics/qt/PathQt.cpp: + (WebCore::Path::addArcTo): + +2009-03-12 Adam Treat <adam.treat@torchmobile.com> + + Reviewed by Oliver Hunt. + + https://bugs.webkit.org/show_bug.cgi?id=24498 + Fix the Qt port to use the same algorithm for drawing dashed and dotted + borders as the other ports. This makes the Qt port pixel-for-pixel perfect + compared to border drawing with Apple's canonical mac port and much closer + to konqueror and firefox behavior. + + * platform/graphics/qt/GraphicsContextQt.cpp: + (WebCore::GraphicsContext::drawLine): + +2009-03-09 Adam Treat <adam.treat@torchmobile.com> + + Reviewed by George Staikos. + + https://bugs.webkit.org/show_bug.cgi?id=24463 + WebCore::qstring is detaching and copying twice for every single + WebCore::TextRun that is processed and drawn. This elevates this method + to one of the top-ten most expensive methods in all of QtWebKit according + to profiling. This changes the method so that QString only detaches + when absolutely necessary. + + * platform/graphics/qt/FontQt.cpp: + (WebCore::qstring): + (WebCore::fixSpacing): + (WebCore::Font::drawComplexText): + (WebCore::Font::floatWidthForComplexText): + (WebCore::Font::offsetForPositionForComplexText): + (WebCore::Font::selectionRectForComplexText): + 2009-02-04 Simon Hausmann <simon.hausmann@nokia.com> Unreviewed Qt build fix. diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp index deeea99..4e78083 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp @@ -37,20 +37,27 @@ #if QT_VERSION >= 0x040400 namespace WebCore { -static QString qstring(const TextRun& run) +static const QString qstring(const TextRun& run) { - QString string((QChar *)run.characters(), run.length()); - QChar *uc = string.data(); + //We don't detach + return QString::fromRawData((const QChar *)run.characters(), run.length()); +} + +static const QString fixSpacing(const QString &string) +{ + //Only detach if we're actually changing something + QString possiblyDetached = string; for (int i = 0; i < string.length(); ++i) { - if (Font::treatAsSpace(uc[i].unicode())) - uc[i] = 0x20; - else if (Font::treatAsZeroWidthSpace(uc[i].unicode())) - uc[i] = 0x200c; + const QChar c = string.at(i); + if (c.unicode() != 0x20 && Font::treatAsSpace(c.unicode())) { + possiblyDetached[i] = 0x20; //detach + } else if (c.unicode() != 0x200c && Font::treatAsZeroWidthSpace(c.unicode())) { + possiblyDetached[i] = 0x200c; //detach + } } - return string; + return possiblyDetached; } - static QTextLine setupLayout(QTextLayout* layout, const TextRun& style) { int flags = style.rtl() ? Qt::TextForceRightToLeft : Qt::TextForceLeftToRight; @@ -75,7 +82,7 @@ void Font::drawComplexText(GraphicsContext* ctx, const TextRun& run, const Float Color color = ctx->fillColor(); p->setPen(QColor(color)); - QString string = qstring(run); + const QString string = fixSpacing(qstring(run)); // text shadow IntSize shadowSize; @@ -144,7 +151,7 @@ float Font::floatWidthForComplexText(const TextRun& run) const { if (!run.length()) return 0; - QString string = qstring(run); + const QString string = fixSpacing(qstring(run)); QTextLayout layout(string, font()); QTextLine line = setupLayout(&layout, run); int w = int(line.naturalTextWidth()); @@ -157,7 +164,7 @@ float Font::floatWidthForComplexText(const TextRun& run) const int Font::offsetForPositionForComplexText(const TextRun& run, int position, bool includePartialGlyphs) const { - QString string = qstring(run); + const QString string = fixSpacing(qstring(run)); QTextLayout layout(string, font()); QTextLine line = setupLayout(&layout, run); return line.xToCursor(position); @@ -165,7 +172,7 @@ int Font::offsetForPositionForComplexText(const TextRun& run, int position, bool FloatRect Font::selectionRectForComplexText(const TextRun& run, const IntPoint& pt, int h, int from, int to) const { - QString string = qstring(run); + const QString string = fixSpacing(qstring(run)); QTextLayout layout(string, font()); QTextLine line = setupLayout(&layout, run); diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp index 936c1ea..6c90ea3 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp @@ -470,13 +470,21 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2) if (paintingDisabled()) return; + StrokeStyle style = strokeStyle(); + Color color = strokeColor(); + if (style == NoStroke || !color.alpha()) + return; + + float width = strokeThickness(); + FloatPoint p1 = point1; FloatPoint p2 = point2; + bool isVerticalLine = (p1.x() == p2.x()); QPainter *p = m_data->p(); const bool antiAlias = p->testRenderHint(QPainter::Antialiasing); p->setRenderHint(QPainter::Antialiasing, m_data->antiAliasingForRectsAndLines); - adjustLineToPixelBoundaries(p1, p2, strokeThickness(), strokeStyle()); + adjustLineToPixelBoundaries(p1, p2, width, style); IntSize shadowSize; int shadowBlur; @@ -489,8 +497,76 @@ void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2) p->restore(); } + int patWidth = 0; + switch (style) { + case NoStroke: + case SolidStroke: + break; + case DottedStroke: + patWidth = (int)width; + break; + case DashedStroke: + patWidth = 3 * (int)width; + break; + } + + if (patWidth) { + p->save(); + + // Do a rect fill of our endpoints. This ensures we always have the + // appearance of being a border. We then draw the actual dotted/dashed line. + if (isVerticalLine) { + p->fillRect(FloatRect(p1.x() - width / 2, p1.y() - width, width, width), color); + p->fillRect(FloatRect(p2.x() - width / 2, p2.y(), width, width), color); + } else { + p->fillRect(FloatRect(p1.x() - width, p1.y() - width / 2, width, width), color); + p->fillRect(FloatRect(p2.x(), p2.y() - width / 2, width, width), color); + } + + // Example: 80 pixels with a width of 30 pixels. + // Remainder is 20. The maximum pixels of line we could paint + // will be 50 pixels. + int distance = (isVerticalLine ? (point2.y() - point1.y()) : (point2.x() - point1.x())) - 2*(int)width; + int remainder = distance % patWidth; + int coverage = distance - remainder; + int numSegments = coverage / patWidth; + + float patternOffset = 0.0f; + // Special case 1px dotted borders for speed. + if (patWidth == 1) + patternOffset = 1.0f; + else { + bool evenNumberOfSegments = numSegments % 2 == 0; + if (remainder) + evenNumberOfSegments = !evenNumberOfSegments; + if (evenNumberOfSegments) { + if (remainder) { + patternOffset += patWidth - remainder; + patternOffset += remainder / 2; + } else + patternOffset = patWidth / 2; + } else { + if (remainder) + patternOffset = (patWidth - remainder)/2; + } + } + + QVector<qreal> dashes; + dashes << qreal(patWidth) / width << qreal(patWidth) / width; + + QPen pen = p->pen(); + pen.setWidthF(width); + pen.setCapStyle(Qt::FlatCap); + pen.setDashPattern(dashes); + pen.setDashOffset(patternOffset / width); + p->setPen(pen); + } + p->drawLine(p1, p2); + if (patWidth) + p->restore(); + p->setRenderHint(QPainter::Antialiasing, antiAlias); } diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp index d1009b5..29a02d4 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> * Copyright (C) 2008 Holger Hans Peter Freyther + * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -31,7 +32,6 @@ #include "GraphicsContext.h" #include "ImageData.h" #include "MIMETypeRegistry.h" -#include "NotImplemented.h" #include "StillImageQt.h" #include <QBuffer> @@ -111,9 +111,7 @@ PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const endy = m_size.height(); int numRows = endy - originy; - QImage image = m_data.m_pixmap.toImage(); - if (image.format() != QImage::Format_ARGB32) - image = image.convertToFormat(QImage::Format_ARGB32); + QImage image = m_data.m_pixmap.toImage().convertToFormat(QImage::Format_ARGB32); ASSERT(!image.isNull()); unsigned destBytesPerRow = 4 * rect.width(); @@ -134,9 +132,58 @@ PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const return result; } -void ImageBuffer::putImageData(ImageData*, const IntRect&, const IntPoint&) +void ImageBuffer::putImageData(ImageData* source, const IntRect& sourceRect, const IntPoint& destPoint) { - notImplemented(); + ASSERT(sourceRect.width() > 0); + ASSERT(sourceRect.height() > 0); + + int originx = sourceRect.x(); + int destx = destPoint.x() + sourceRect.x(); + ASSERT(destx >= 0); + ASSERT(destx < m_size.width()); + ASSERT(originx >= 0); + ASSERT(originx <= sourceRect.right()); + + int endx = destPoint.x() + sourceRect.right(); + ASSERT(endx <= m_size.width()); + + int numColumns = endx - destx; + + int originy = sourceRect.y(); + int desty = destPoint.y() + sourceRect.y(); + ASSERT(desty >= 0); + ASSERT(desty < m_size.height()); + ASSERT(originy >= 0); + ASSERT(originy <= sourceRect.bottom()); + + int endy = destPoint.y() + sourceRect.bottom(); + ASSERT(endy <= m_size.height()); + int numRows = endy - desty; + + unsigned srcBytesPerRow = 4 * source->width(); + + bool isPainting = m_data.m_painter->isActive(); + if (isPainting) + m_data.m_painter->end(); + + QImage image = m_data.m_pixmap.toImage().convertToFormat(QImage::Format_ARGB32); + ASSERT(!image.isNull()); + + unsigned char* srcRows = source->data()->data() + originy * srcBytesPerRow + originx * 4; + for (int y = 0; y < numRows; ++y) { + quint32* scanLine = reinterpret_cast<quint32*>(image.scanLine(y + desty)); + for (int x = 0; x < numColumns; x++) { + int basex = x * 4; + scanLine[x + destx] = reinterpret_cast<quint32*>(srcRows + basex)[0]; + } + + srcRows += srcBytesPerRow; + } + + m_data.m_pixmap = QPixmap::fromImage(image); + + if (isPainting) + m_data.m_painter->begin(&m_data.m_pixmap); } // We get a mimeType here but QImageWriter does not support mimetypes but diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp index be7d1e0..e266c07 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp @@ -109,6 +109,8 @@ void Image::drawPattern(GraphicsContext* ctxt, const FloatRect& tileRect, const ctxt->save(); ctxt->setCompositeOperation(op); QPainter* p = ctxt->platformContext(); + if (!pixmap.hasAlpha() && p->compositionMode() == QPainter::CompositionMode_SourceOver) + p->setCompositionMode(QPainter::CompositionMode_Source); p->setBrushOrigin(phase); p->fillRect(destRect, b); ctxt->restore(); @@ -146,6 +148,9 @@ void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect& dst, QPainter* painter(ctxt->platformContext()); + if (!image->hasAlpha() && painter->compositionMode() == QPainter::CompositionMode_SourceOver) + painter->setCompositionMode(QPainter::CompositionMode_Source); + // Test using example site at // http://www.meyerweb.com/eric/css/edge/complexspiral/demo.html painter->drawPixmap(dst, *image, src); diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp index 90b342e..e68be2b 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp @@ -1,6 +1,7 @@ /* - * Copyright (C) 2006 Zack Rusin <zack@kde.org> - * 2006 Rob Buis <buis@kde.org> + * Copyright (C) 2006 Zack Rusin <zack@kde.org> + * 2006 Rob Buis <buis@kde.org> + * 2009 Dirk Schulze <krit@webkit.org> * * All rights reserved. * @@ -139,9 +140,72 @@ void Path::addBezierCurveTo(const FloatPoint& cp1, const FloatPoint& cp2, const void Path::addArcTo(const FloatPoint& p1, const FloatPoint& p2, float radius) { - //FIXME: busted - qWarning("arcTo is busted"); - m_path->arcTo(p1.x(), p1.y(), p2.x(), p2.y(), radius, 90); + FloatPoint p0(m_path->currentPosition()); + + if ((p1.x() == p0.x() && p1.y() == p0.y()) || (p1.x() == p2.x() && p1.y() == p2.y()) || radius == 0.f) { + m_path->lineTo(p1); + return; + } + + FloatPoint p1p0((p0.x() - p1.x()),(p0.y() - p1.y())); + FloatPoint p1p2((p2.x() - p1.x()),(p2.y() - p1.y())); + float p1p0_length = sqrtf(p1p0.x() * p1p0.x() + p1p0.y() * p1p0.y()); + float p1p2_length = sqrtf(p1p2.x() * p1p2.x() + p1p2.y() * p1p2.y()); + + double cos_phi = (p1p0.x() * p1p2.x() + p1p0.y() * p1p2.y()) / (p1p0_length * p1p2_length); + // all points on a line logic + if (cos_phi == -1) { + m_path->lineTo(p1); + return; + } + if (cos_phi == 1) { + // add infinite far away point + unsigned int max_length = 65535; + double factor_max = max_length / p1p0_length; + FloatPoint ep((p0.x() + factor_max * p1p0.x()), (p0.y() + factor_max * p1p0.y())); + m_path->lineTo(ep); + return; + } + + float tangent = radius / tan(acos(cos_phi) / 2); + float factor_p1p0 = tangent / p1p0_length; + FloatPoint t_p1p0((p1.x() + factor_p1p0 * p1p0.x()), (p1.y() + factor_p1p0 * p1p0.y())); + + FloatPoint orth_p1p0(p1p0.y(), -p1p0.x()); + float orth_p1p0_length = sqrt(orth_p1p0.x() * orth_p1p0.x() + orth_p1p0.y() * orth_p1p0.y()); + float factor_ra = radius / orth_p1p0_length; + + // angle between orth_p1p0 and p1p2 to get the right vector orthographic to p1p0 + double cos_alpha = (orth_p1p0.x() * p1p2.x() + orth_p1p0.y() * p1p2.y()) / (orth_p1p0_length * p1p2_length); + if (cos_alpha < 0.f) + orth_p1p0 = FloatPoint(-orth_p1p0.x(), -orth_p1p0.y()); + + FloatPoint p((t_p1p0.x() + factor_ra * orth_p1p0.x()), (t_p1p0.y() + factor_ra * orth_p1p0.y())); + + // calculate angles for addArc + orth_p1p0 = FloatPoint(-orth_p1p0.x(), -orth_p1p0.y()); + float sa = acos(orth_p1p0.x() / orth_p1p0_length); + if (orth_p1p0.y() < 0.f) + sa = 2 * piDouble - sa; + + // anticlockwise logic + bool anticlockwise = false; + + float factor_p1p2 = tangent / p1p2_length; + FloatPoint t_p1p2((p1.x() + factor_p1p2 * p1p2.x()), (p1.y() + factor_p1p2 * p1p2.y())); + FloatPoint orth_p1p2((t_p1p2.x() - p.x()),(t_p1p2.y() - p.y())); + float orth_p1p2_length = sqrtf(orth_p1p2.x() * orth_p1p2.x() + orth_p1p2.y() * orth_p1p2.y()); + float ea = acos(orth_p1p2.x() / orth_p1p2_length); + if (orth_p1p2.y() < 0) + ea = 2 * piDouble - ea; + if ((sa > ea) && ((sa - ea) < piDouble)) + anticlockwise = true; + if ((sa < ea) && ((ea - sa) > piDouble)) + anticlockwise = true; + + m_path->lineTo(t_p1p0); + + addArc(p, radius, sa, ea, anticlockwise); } void Path::closeSubpath() diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp index 2de2125..2c730a6 100644 --- a/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp +++ b/src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp @@ -269,8 +269,10 @@ void QNetworkReplyHandler::sendResponseIfNeeded() const bool isLocalFileReply = (m_reply->url().scheme() == QLatin1String("file")); int statusCode = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); - if (!isLocalFileReply) + if (!isLocalFileReply) { response.setHTTPStatusCode(statusCode); + response.setHTTPStatusText(m_reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toByteArray().constData()); + } else if (m_reply->error() == QNetworkReply::ContentNotFoundError) response.setHTTPStatusCode(404); diff --git a/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp index cc8acd2..b25ae7a 100644 --- a/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp @@ -21,7 +21,9 @@ #include "PlatformWheelEvent.h" #include "PlatformMouseEvent.h" +#include "Scrollbar.h" +#include <qapplication.h> #include <QWheelEvent> namespace WebCore { @@ -54,9 +56,14 @@ PlatformWheelEvent::PlatformWheelEvent(QWheelEvent* e) m_deltaY = (e->delta() / 120); } - // FIXME: retrieve the user setting for the number of lines to scroll on each wheel event - m_deltaX *= horizontalLineMultiplier(); - m_deltaY *= verticalLineMultiplier(); + m_deltaX *= QApplication::wheelScrollLines(); + // use the same single scroll step as QTextEdit (in + // QTextEditPrivate::init [h,v]bar->setSingleStep ) + // and divide by the default WebKit scroll step to + // get the Qt mouse wheel scroll behavior + static const float cDefaultQtScrollStep = 20.f; + m_deltaY *= QApplication::wheelScrollLines() * + (cDefaultQtScrollStep / cMouseWheelPixelsPerLineStep); } #endif // QT_NO_WHEELEVENT diff --git a/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp b/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp index 1d7d570..3229922 100644 --- a/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp @@ -220,11 +220,11 @@ NPError PluginView::getValueStatic(NPNVariable variable, void* value) switch (variable) { case NPNVToolkit: - *((uint32 *)value) = 0; + *static_cast<uint32*>(value) = 0; return NPERR_NO_ERROR; case NPNVjavascriptEnabledBool: - *((uint32 *)value) = true; + *static_cast<NPBool*>(value) = true; return NPERR_NO_ERROR; default: @@ -275,7 +275,7 @@ NPError PluginView::getValue(NPNVariable variable, void* value) } case NPNVsupportsCoreGraphicsBool: - *((uint32 *)value) = true; + *static_cast<NPBool*>(value) = true; return NPERR_NO_ERROR; default: diff --git a/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp b/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp index 5aa8933..c8dd0e5 100644 --- a/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp @@ -301,15 +301,15 @@ NPError PluginView::getValueStatic(NPNVariable variable, void* value) { switch (variable) { case NPNVToolkit: - *((uint32 *)value) = 0; + *static_cast<uint32*>(value) = 0; return NPERR_NO_ERROR; case NPNVSupportsXEmbedBool: - *((uint32 *)value) = true; + *static_cast<NPBool*>(value) = true; return NPERR_NO_ERROR; case NPNVjavascriptEnabledBool: - *((uint32 *)value) = true; + *static_cast<NPBool*>(value) = true; return NPERR_NO_ERROR; default: diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp index e17306d..01b68eb 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp @@ -1095,7 +1095,7 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const This enum describes the types of action which can be performed on the web page. Actions only have an effect when they are applicable. The availability of - actions can be be determined by checking \l{QAction::}{enabled()} on the + actions can be be determined by checking \l{QAction::}{isEnabled()} on the action returned by \l{QWebPage::}{action()}. One method of enabling the text editing, cursor movement, and text selection actions @@ -1198,18 +1198,18 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const Suppose we have a \c Thumbnail class as follows: - \snippet doc/src/snippets/webkit/webpage/main.cpp 0 + \snippet webkitsnippets/webpage/main.cpp 0 The \c Thumbnail's constructor takes in a \a url. We connect our QWebPage object's \l{QWebPage::}{loadFinished()} signal to our private slot, \c render(). - \snippet doc/src/snippets/webkit/webpage/main.cpp 1 + \snippet webkitsnippets/webpage/main.cpp 1 The \c render() function shows how we can paint a thumbnail using a QWebPage object. - \snippet doc/src/snippets/webkit/webpage/main.cpp 2 + \snippet webkitsnippets/webpage/main.cpp 2 We begin by setting the \l{QWebPage::viewportSize()}{viewportSize} and then we instantiate a QImage object, \c image, with the same size as our @@ -1450,9 +1450,16 @@ void QWebPage::triggerAction(WebAction action, bool checked) openNewWindow(url, frame); break; } - case CopyLinkToClipboard: + case CopyLinkToClipboard: { +#if defined(Q_WS_X11) + bool oldSelectionMode = Pasteboard::generalPasteboard()->isSelectionMode(); + Pasteboard::generalPasteboard()->setSelectionMode(true); + editor->copyURL(d->hitTestResult.linkUrl(), d->hitTestResult.linkText()); + Pasteboard::generalPasteboard()->setSelectionMode(oldSelectionMode); +#endif editor->copyURL(d->hitTestResult.linkUrl(), d->hitTestResult.linkText()); break; + } case OpenImageInNewWindow: openNewWindow(d->hitTestResult.imageUrl(), frame); break; diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp index a843eba..9753f4f 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp @@ -86,7 +86,7 @@ public: Qt Widgets, the show() function must be invoked in order to display QWebView. The snippet below illustrates this: - \snippet doc/src/snippets/webkit/simple/main.cpp Using QWebView + \snippet webkitsnippets/simple/main.cpp Using QWebView Alternatively, setUrl() can also be used to load a web site. If you have the HTML content readily available, you can use setHtml() instead. @@ -325,7 +325,7 @@ void QWebView::setContent(const QByteArray &data, const QString &mimeType, const It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 0 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 0 */ QWebHistory *QWebView::history() const { @@ -337,7 +337,7 @@ QWebHistory *QWebView::history() const It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 1 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 1 \sa QWebSettings::globalSettings() */ @@ -429,7 +429,7 @@ QAction *QWebView::pageAction(QWebPage::WebAction action) const The following example triggers the copy action and therefore copies any selected text to the clipboard. - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 2 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 2 \sa pageAction() */ @@ -606,7 +606,7 @@ void QWebView::print(QPrinter *printer) const It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 3 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 3 \sa reload(), pageAction(), loadFinished() */ @@ -622,7 +622,7 @@ void QWebView::stop() It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 4 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 4 \sa forward(), pageAction() */ @@ -638,7 +638,7 @@ void QWebView::back() It is equivalent to - \snippet doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp 5 + \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 5 \sa back(), pageAction() */ diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog index 5a23200..c3bd633 100644 --- a/src/3rdparty/webkit/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog @@ -1,3 +1,42 @@ +2009-04-24 Simon Hausmann <simon.hausmann@nokia.com> + + Rubber-stamped by Ariya Hidayat. + + Fix qdoc warning about link to QAction::isEnabled. + + * Api/qwebpage.cpp: + +2009-04-24 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Ariya Hidayat. + + Added support for generating API docs in the Qt build using "make docs" + + Added code snippets and overview from the Qt sources references in the API docs. + + * Api/qwebpage.cpp: Adjust paths to snippets. + * Api/qwebview.cpp: Ditto. + * docs/docs.pri: Added. + * docs/qtwebkit.qdoc: Added. + * docs/qtwebkit.qdocconf: Added. + * docs/webkitsnippets/qtwebkit_build_snippet.qdoc: Added. + * docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp: Added. + * docs/webkitsnippets/simple/main.cpp: Added. + * docs/webkitsnippets/simple/simple.pro: Added. + * docs/webkitsnippets/webpage/main.cpp: Added. + * docs/webkitsnippets/webpage/webpage.pro: Added. + +2009-03-02 Benjamin C Meyer <benjamin.meyer@torchmobile.com> + + Reviewed by George Staikos. + + https://bugs.webkit.org/show_bug.cgi?id=21230 + On X11 match the behavior of Firefox and also copy the url to the + clipboard selection when the action Copy Link Location is executed. + + * Api/qwebpage.cpp: + (QWebPage::triggerAction): + 2009-03-07 Adam Treat <adam.treat@torchmobile.com> Reviewed by Cameron Zwarich. diff --git a/src/3rdparty/webkit/WebKit/qt/docs/docs.pri b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri new file mode 100644 index 0000000..4a8c165 --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri @@ -0,0 +1,15 @@ +include(../../../WebKit.pri) + +unix { + QDOC = SRCDIR=$$PWD/../../.. OUTPUT_DIR=$$OUTPUT_DIR $$(QTDIR)/tools/qdoc3/qdoc3 +} else { + QDOC = $$(QTDIR)\tools\qdoc3\release\qdoc3.exe +} + +unix { +docs.commands = $$QDOC $$PWD/qtwebkit.qdocconf +} else { +docs.commands = \"$$QDOC $$PWD/qtwebkit.qdocconf\" +} + +QMAKE_EXTRA_TARGETS += docs diff --git a/doc/src/qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc index 0092950..06305e0 100644 --- a/doc/src/qtwebkit.qdoc +++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc @@ -59,7 +59,7 @@ project file ensures that an application is compiled and linked appropriately: - \snippet doc/src/snippets/code/doc_src_qtwebkit.qdoc 0 + \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 0 This line is necessary because only the QtCore and QtGui modules are used in the default build process. @@ -67,7 +67,7 @@ To include the definitions of the module's classes, use the following directive: - \snippet doc/src/snippets/code/doc_src_qtwebkit.qdoc 1 + \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 1 \section1 Architecture @@ -75,7 +75,7 @@ widget it can be embedded into your forms or a graphics view, and it provides convenience functions for downloading and rendering web sites. - \snippet snippets/webkit/simple/main.cpp Using QWebView + \snippet webkitsnippets/simple/main.cpp Using QWebView QWebView acts as a view onto Web pages, each of which is represented by an instance of the QWebPage class. QWebPage provides access to the document diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf new file mode 100644 index 0000000..e60e586 --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdocconf @@ -0,0 +1,195 @@ +# Run qdoc from the directory that contains this file. + +project = qtwebkit +description = "Qt WebKit API Documentation" + +headerdirs = $SRCDIR/WebKit/qt/Api +sourcedirs = $SRCDIR/WebKit/qt/Api $SRCDIR/WebKit/qt/docs +outputdir = $OUTPUT_DIR/doc/html +outputformats = HTML +sources.fileextensions = "*.cpp *.doc *.qdoc *.h" +exampledirs = $SRCDIR/WebKit/qt/docs + +indexes = $QTDIR/doc/html/qt.index + +# macros.qdocconf + +macro.aring.HTML = "å" +macro.Auml.HTML = "Ä" +macro.author = "\\bold{Author:}" +macro.br.HTML = "<br />" +macro.BR.HTML = "<br />" +macro.aacute.HTML = "á" +macro.eacute.HTML = "é" +macro.iacute.HTML = "í" +macro.gui = "\\bold" +macro.hr.HTML = "<hr />" +macro.key = "\\bold" +macro.menu = "\\bold" +macro.note = "\\bold{Note:}" +macro.oslash.HTML = "ø" +macro.ouml.HTML = "ö" +macro.QA = "\\e{Qt Assistant}" +macro.QD = "\\e{Qt Designer}" +macro.QL = "\\e{Qt Linguist}" +macro.param = "\\e" +macro.raisedaster.HTML = "<sup>*</sup>" +macro.reg.HTML = "<sup>®</sup>" +macro.return = "Returns" +macro.starslash = "\\c{*/}" +macro.uuml.HTML = "ü" +macro.mdash.HTML = "—" + +# compat.qdocconf + +alias.i = e +alias.include = input + +macro.0 = "\\\\0" +macro.b = "\\\\b" +macro.n = "\\\\n" +macro.r = "\\\\r" +macro.i = "\\o" +macro.i11 = "\\o{1,1}" +macro.i12 = "\\o{1,2}" +macro.i13 = "\\o{1,3}" +macro.i14 = "\\o{1,4}" +macro.i15 = "\\o{1,5}" +macro.i16 = "\\o{1,6}" +macro.i17 = "\\o{1,7}" +macro.i18 = "\\o{1,8}" +macro.i19 = "\\o{1,9}" +macro.i21 = "\\o{2,1}" +macro.i31 = "\\o{3,1}" +macro.i41 = "\\o{4,1}" +macro.i51 = "\\o{5,1}" +macro.i61 = "\\o{6,1}" +macro.i71 = "\\o{7,1}" +macro.i81 = "\\o{8,1}" +macro.i91 = "\\o{9,1}" +macro.img = "\\image" +macro.endquote = "\\endquotation" + +spurious = "Missing comma in .*" \ + "Missing pattern .*" + +# Doxygen compatibility commands + +macro.see = "\\sa" +macro.function = "\\fn" + +# qt-cpp-ignore.qdocconf + +Cpp.ignoretokens = QAXFACTORY_EXPORT \ + QDESIGNER_COMPONENTS_LIBRARY \ + QDESIGNER_EXTENSION_LIBRARY \ + QDESIGNER_SDK_LIBRARY \ + QDESIGNER_SHARED_LIBRARY \ + QDESIGNER_UILIB_LIBRARY \ + QM_EXPORT_CANVAS \ + QM_EXPORT_DNS \ + QM_EXPORT_DOM \ + QM_EXPORT_FTP \ + QM_EXPORT_HTTP \ + QM_EXPORT_ICONVIEW \ + QM_EXPORT_NETWORK \ + QM_EXPORT_OPENGL \ + QM_EXPORT_SQL \ + QM_EXPORT_TABLE \ + QM_EXPORT_WORKSPACE \ + QM_EXPORT_XML \ + QT_ASCII_CAST_WARN \ + QT_ASCII_CAST_WARN_CONSTRUCTOR \ + QT_BEGIN_HEADER \ + QT_DESIGNER_STATIC \ + QT_END_HEADER \ + QT_FASTCALL \ + QT_WIDGET_PLUGIN_EXPORT \ + Q_COMPAT_EXPORT \ + Q_CORE_EXPORT \ + Q_EXPLICIT \ + Q_EXPORT \ + Q_EXPORT_CODECS_CN \ + Q_EXPORT_CODECS_JP \ + Q_EXPORT_CODECS_KR \ + Q_EXPORT_PLUGIN \ + Q_GFX_INLINE \ + Q_GUI_EXPORT \ + Q_GUI_EXPORT_INLINE \ + Q_GUI_EXPORT_STYLE_CDE \ + Q_GUI_EXPORT_STYLE_COMPACT \ + Q_GUI_EXPORT_STYLE_MAC \ + Q_GUI_EXPORT_STYLE_MOTIF \ + Q_GUI_EXPORT_STYLE_MOTIFPLUS \ + Q_GUI_EXPORT_STYLE_PLATINUM \ + Q_GUI_EXPORT_STYLE_POCKETPC \ + Q_GUI_EXPORT_STYLE_SGI \ + Q_GUI_EXPORT_STYLE_WINDOWS \ + Q_GUI_EXPORT_STYLE_WINDOWSXP \ + QHELP_EXPORT \ + Q_INLINE_TEMPLATE \ + Q_INTERNAL_WIN_NO_THROW \ + Q_NETWORK_EXPORT \ + Q_OPENGL_EXPORT \ + Q_OUTOFLINE_TEMPLATE \ + Q_SQL_EXPORT \ + Q_SVG_EXPORT \ + Q_SCRIPT_EXPORT \ + Q_TESTLIB_EXPORT \ + Q_TYPENAME \ + Q_XML_EXPORT \ + Q_XMLSTREAM_EXPORT \ + Q_XMLPATTERNS_EXPORT \ + QDBUS_EXPORT \ + QT_BEGIN_NAMESPACE \ + QT_BEGIN_INCLUDE_NAMESPACE \ + QT_END_NAMESPACE \ + QT_END_INCLUDE_NAMESPACE \ + PHONON_EXPORT \ + EXTENSIONSYSTEM_EXPORT +Cpp.ignoredirectives = Q_DECLARE_HANDLE \ + Q_DECLARE_INTERFACE \ + Q_DECLARE_METATYPE \ + Q_DECLARE_OPERATORS_FOR_FLAGS \ + Q_DECLARE_PRIVATE \ + Q_DECLARE_PUBLIC \ + Q_DECLARE_SHARED \ + Q_DECLARE_TR_FUNCTIONS \ + Q_DECLARE_TYPEINFO \ + Q_DISABLE_COPY \ + QT_FORWARD_DECLARE_CLASS \ + Q_DUMMY_COMPARISON_OPERATOR \ + Q_ENUMS \ + Q_FLAGS \ + Q_INTERFACES \ + __attribute__ \ + K_DECLARE_PRIVATE \ + PHONON_OBJECT \ + PHONON_HEIR + + + +HTML.style = "" \ + "h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }"\ + "a:link { color: #004faf; text-decoration: none }"\ + "a:visited { color: #672967; text-decoration: none }"\ + "td.postheader { font-family: sans-serif }"\ + "tr.address { font-family: sans-serif }"\ + "body { background: #ffffff; color: black }"\ + "table tr.odd { background: #f0f0f0; color: black; }"\ + "table tr.even { background: #e4e4e4; color: black; }"\ + "table.annotated th { padding: 3px; text-align: left }"\ + "table.annotated td { padding: 3px; } "\ + "table tr pre { padding-top: none; padding-bottom: none; padding-left: none; padding-right: none; border: none; background: none }"\ + "tr.qt-style { background: #a2c511; color: black }"\ + "body pre { padding: 0.2em; border: #e7e7e7 1px solid; background: #f1f1f1; color: black }"\ + "span.preprocessor, span.preprocessor a { color: darkblue; }"\ + "span.comment { color: darkred; font-style: italic }"\ + "span.string,span.char { color: darkgreen; }"\ + ".title { text-align: center }"\ + ".subtitle { font-size: 0.8em }"\ + ".small-subtitle { font-size: 0.65em }" + +HTML.postheader = "" + +HTML.footer = "" diff --git a/doc/src/snippets/code/doc_src_qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc index d4fc2bd..d4fc2bd 100644 --- a/doc/src/snippets/code/doc_src_qtwebkit.qdoc +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc diff --git a/doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp index f04cd29..f04cd29 100644 --- a/doc/src/snippets/code/src_3rdparty_webkit_WebKit_qt_Api_qwebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp diff --git a/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp new file mode 100644 index 0000000..82f5b6c --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp @@ -0,0 +1,34 @@ +/* + Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include <QApplication> +#include <QUrl> +#include <QWebView> + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + QWidget *parent = 0; +//! [Using QWebView] + QWebView *view = new QWebView(parent); + view->load(QUrl("http://qtsoftware.com/")); + view->show(); +//! [Using QWebView] + return app.exec(); +} diff --git a/doc/src/snippets/webkit/simple/simple.pro b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/simple.pro index 61cd3bf..61cd3bf 100644 --- a/doc/src/snippets/webkit/simple/simple.pro +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/simple.pro diff --git a/doc/src/snippets/webkit/webpage/main.cpp b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp index b433ac2..b91bc30 100644 --- a/doc/src/snippets/webkit/webpage/main.cpp +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp @@ -1,3 +1,22 @@ +/* + Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + #include <QtGui> #include <QWebPage> #include <QWebFrame> diff --git a/doc/src/snippets/webkit/webpage/webpage.pro b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/webpage.pro index fcad03b..fcad03b 100644 --- a/doc/src/snippets/webkit/webpage/webpage.pro +++ b/src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/webpage.pro diff --git a/src/activeqt/container/container.pro b/src/activeqt/container/container.pro index ceedacf..d654f92 100644 --- a/src/activeqt/container/container.pro +++ b/src/activeqt/container/container.pro @@ -21,25 +21,21 @@ LIBS += -lole32 -loleaut32 !wince*:LIBS += -luser32 -lgdi32 -ladvapi32 win32-g++:LIBS += -luuid -contains(QT_EDITION, OpenSource|Console) { - message( "You are not licensed to use ActiveQt." ) -} else { - HEADERS = ../control/qaxaggregated.h \ - qaxbase.h \ - qaxwidget.h \ - qaxobject.h \ - qaxscript.h \ - qaxselect.h \ - ../shared/qaxtypes.h - - SOURCES = qaxbase.cpp \ - qaxdump.cpp \ - qaxwidget.cpp \ - qaxobject.cpp \ - qaxscript.cpp \ - qaxscriptwrapper.cpp \ - qaxselect.cpp \ - ../shared/qaxtypes.cpp - - FORMS = qaxselect.ui -} +HEADERS = ../control/qaxaggregated.h \ + qaxbase.h \ + qaxwidget.h \ + qaxobject.h \ + qaxscript.h \ + qaxselect.h \ + ../shared/qaxtypes.h + +SOURCES = qaxbase.cpp \ + qaxdump.cpp \ + qaxwidget.cpp \ + qaxobject.cpp \ + qaxscript.cpp \ + qaxscriptwrapper.cpp \ + qaxselect.cpp \ + ../shared/qaxtypes.cpp + +FORMS = qaxselect.ui diff --git a/src/activeqt/control/control.pro b/src/activeqt/control/control.pro index 65b0251..bf3647e 100644 --- a/src/activeqt/control/control.pro +++ b/src/activeqt/control/control.pro @@ -24,20 +24,16 @@ win32-borland:DEFINES += QT_NEEDS_QMAIN LIBS += -luser32 -lole32 -loleaut32 -lgdi32 win32-g++:LIBS += -luuid -contains(QT_EDITION, OpenSource|Console) { - message( "You are not licensed to use ActiveQt." ) -} else { - HEADERS = qaxaggregated.h \ - qaxbindable.h \ - qaxfactory.h \ - ../shared/qaxtypes.h - - SOURCES = qaxserver.cpp \ - qaxserverbase.cpp \ - qaxbindable.cpp \ - qaxfactory.cpp \ - qaxservermain.cpp \ - qaxserverdll.cpp \ - qaxmain.cpp \ - ../shared/qaxtypes.cpp -} +HEADERS = qaxaggregated.h \ + qaxbindable.h \ + qaxfactory.h \ + ../shared/qaxtypes.h + +SOURCES = qaxserver.cpp \ + qaxserverbase.cpp \ + qaxbindable.cpp \ + qaxfactory.cpp \ + qaxservermain.cpp \ + qaxserverdll.cpp \ + qaxmain.cpp \ + ../shared/qaxtypes.cpp diff --git a/src/corelib/codecs/qtsciicodec.cpp b/src/corelib/codecs/qtsciicodec.cpp index 14d2c9c..0ec0567 100644 --- a/src/corelib/codecs/qtsciicodec.cpp +++ b/src/corelib/codecs/qtsciicodec.cpp @@ -180,8 +180,7 @@ QByteArray QTsciiCodec::name() const */ int QTsciiCodec::mibEnum() const { - /* There is no MIBEnum for TSCII now */ - return -3197; + return 2107; } static const int UnToTsLast = 124; // 125 items -- so the last will be 124 diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp index 281bf75..1ac592e 100644 --- a/src/corelib/codecs/qutfcodec.cpp +++ b/src/corelib/codecs/qutfcodec.cpp @@ -413,9 +413,7 @@ QByteArray QUtf16Codec::name() const QList<QByteArray> QUtf16Codec::aliases() const { - QList<QByteArray> list; - list << "ISO-10646-UCS-2"; - return list; + return QList<QByteArray>(); } int QUtf16BECodec::mibEnum() const diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h index 6d55f7c..2189723 100644 --- a/src/corelib/global/qfeatures.h +++ b/src/corelib/global/qfeatures.h @@ -120,6 +120,9 @@ // QMovie //#define QT_NO_MOVIE +// QNetworkInterface +//#define QT_NO_NETWORKINTERFACE + // QNetworkProxy //#define QT_NO_NETWORKPROXY @@ -198,12 +201,12 @@ // Qt Prerendered Font Format //#define QT_NO_QWS_QPF -// Raster Paint Engine callback functions -//#define QT_NO_RASTERCALLBACKS - // Qt Prerendered Font Format 2 //#define QT_NO_QWS_QPF2 +// Raster Paint Engine callback functions +//#define QT_NO_RASTERCALLBACKS + // Resize Handler //#define QT_NO_RESIZEHANDLER @@ -273,9 +276,6 @@ // HtmlParser //#define QT_NO_TEXTHTMLPARSER -// OdfWriter -//#define QT_NO_TEXTODFWRITER - // QTextStream //#define QT_NO_TEXTSTREAM @@ -316,6 +316,11 @@ #define QT_NO_BUTTONGROUP #endif +// QClipboard +#if !defined(QT_NO_CLIPBOARD) && (defined(QT_NO_QWS_PROPERTIES)) +#define QT_NO_CLIPBOARD +#endif + // Codecs #if !defined(QT_NO_CODECS) && (defined(QT_NO_TEXTCODEC)) #define QT_NO_CODECS @@ -376,11 +381,6 @@ #define QT_NO_PHONON_VOLUMESLIDER #endif -// QPrinter -#if !defined(QT_NO_PRINTER) && (defined(QT_NO_TEXTSTREAM)) -#define QT_NO_PRINTER -#endif - // QProcess #if !defined(QT_NO_PROCESS) && (defined(QT_NO_THREAD)) #define QT_NO_PROCESS @@ -481,11 +481,6 @@ #define QT_NO_XMLSTREAMWRITER #endif -// Odf Writer -#if !defined(QT_NO_TEXTODFWRITER) && (defined(QT_NO_XMLSTREAMWRITER)) -#define QT_NO_TEXTODFWRITER -#endif - // Context menu #if !defined(QT_NO_CONTEXTMENU) && (defined(QT_NO_MENU)) #define QT_NO_CONTEXTMENU @@ -511,11 +506,21 @@ #define QT_NO_LIBRARY #endif +// QPrinter +#if !defined(QT_NO_PRINTER) && (defined(QT_NO_TEXTSTREAM) || defined(QT_NO_PICTURE)) +#define QT_NO_PRINTER +#endif + // QScrollArea #if !defined(QT_NO_SCROLLAREA) && (defined(QT_NO_SCROLLBAR)) #define QT_NO_SCROLLAREA #endif +// OdfWriter +#if !defined(QT_NO_TEXTODFWRITER) && (defined(QT_NO_XMLSTREAMWRITER)) +#define QT_NO_TEXTODFWRITER +#endif + // QToolButton #if !defined(QT_NO_TOOLBUTTON) && (defined(QT_NO_ICON) || defined(QT_NO_ACTION)) #define QT_NO_TOOLBUTTON @@ -636,16 +641,6 @@ #define QT_NO_WHATSTHIS #endif -// QClipboard -#if !defined(QT_NO_CLIPBOARD) && (defined(QT_NO_QWS_PROPERTIES)) -#define QT_NO_CLIPBOARD -#endif - -// Common UNIX Printing System -#if !defined(QT_NO_CUPS) && (defined(QT_NO_PRINTER) || defined(QT_NO_LIBRARY)) -#define QT_NO_CUPS -#endif - // QDirModel #if !defined(QT_NO_DIRMODEL) && (defined(QT_NO_ITEMVIEWS)) #define QT_NO_DIRMODEL @@ -726,6 +721,11 @@ #define QT_NO_COMPLETER #endif +// Common UNIX Printing System +#if !defined(QT_NO_CUPS) && (defined(QT_NO_PRINTER) || defined(QT_NO_LIBRARY)) +#define QT_NO_CUPS +#endif + // QDataWidgetMapper #if !defined(QT_NO_DATAWIDGETMAPPER) && (defined(QT_NO_ITEMVIEWS) || defined(QT_NO_PROPERTIES)) #define QT_NO_DATAWIDGETMAPPER @@ -757,7 +757,7 @@ #endif // QPrintPreviewWidget -#if !defined(QT_NO_PRINTPREVIEWWIDGET) && (defined(QT_NO_GRAPHICSVIEW) || defined(QT_NO_PRINTER) || defined(QT_NO_PICTURE)) +#if !defined(QT_NO_PRINTPREVIEWWIDGET) && (defined(QT_NO_GRAPHICSVIEW) || defined(QT_NO_PRINTER)) #define QT_NO_PRINTPREVIEWWIDGET #endif diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 81af295..36d87e2 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -44,11 +44,11 @@ #include <stddef.h> -#define QT_VERSION_STR "4.5.1" +#define QT_VERSION_STR "4.5.2" /* QT_VERSION is (major << 16) + (minor << 8) + patch. */ -#define QT_VERSION 0x040501 +#define QT_VERSION 0x040502 /* can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) */ @@ -2265,9 +2265,9 @@ QT3_SUPPORT Q_CORE_EXPORT const char *qInstallPathSysconf(); | QT_MODULE_GRAPHICSVIEW \ | QT_MODULE_HELP \ | QT_MODULE_TEST \ - | QT_MODULE_DBUS) -#define QT_EDITION_DESKTOP (QT_EDITION_OPENSOURCE \ + | QT_MODULE_DBUS \ | QT_MODULE_ACTIVEQT) +#define QT_EDITION_DESKTOP (QT_EDITION_OPENSOURCE) #define QT_EDITION_UNIVERSAL QT_EDITION_DESKTOP #define QT_EDITION_ACADEMIC QT_EDITION_DESKTOP #define QT_EDITION_EDUCATIONAL QT_EDITION_DESKTOP diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp index 3fcfc98..11a2d3c 100644 --- a/src/corelib/kernel/qcoreevent.cpp +++ b/src/corelib/kernel/qcoreevent.cpp @@ -260,6 +260,7 @@ QT_BEGIN_NAMESPACE \omitvalue ApplicationActivated \omitvalue ApplicationDeactivated \omitvalue MacGLWindowChange + \omitvalue MacGLClearDrawable \omitvalue NetworkReplyUpdated \omitvalue FutureCallOut \omitvalue CocoaRequestModal diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp index 3fd768a..3c5b277 100644 --- a/src/corelib/kernel/qeventdispatcher_glib.cpp +++ b/src/corelib/kernel/qeventdispatcher_glib.cpp @@ -42,6 +42,7 @@ #include "qeventdispatcher_glib_p.h" #include "qeventdispatcher_unix_p.h" +#include <private/qmutexpool_p.h> #include <private/qthread_p.h> #include "qcoreapplication.h" @@ -224,6 +225,8 @@ QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(GMainContext *context) : mainContext(context) { if (qgetenv("QT_NO_THREADED_GLIB").isEmpty()) { + static int dummyValue = 0; // only used for its address + QMutexLocker locker(QMutexPool::instance()->get(&dummyValue)); if (!g_thread_supported()) g_thread_init(NULL); } diff --git a/src/corelib/kernel/qeventloop.cpp b/src/corelib/kernel/qeventloop.cpp index 92bdf73..600f787 100644 --- a/src/corelib/kernel/qeventloop.cpp +++ b/src/corelib/kernel/qeventloop.cpp @@ -188,8 +188,9 @@ int QEventLoop::exec(ProcessEventsFlags flags) d->threadData->eventLoops.push(this); // remove posted quit events when entering a new event loop - if (qApp->thread() == thread()) - QCoreApplication::removePostedEvents(qApp, QEvent::Quit); + QCoreApplication *app = QCoreApplication::instance(); + if (app && app->thread() == thread()) + QCoreApplication::removePostedEvents(app, QEvent::Quit); #if defined(QT_NO_EXCEPTIONS) while (!d->exit) diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp index f602821..8f1c698 100644 --- a/src/corelib/thread/qthread_unix.cpp +++ b/src/corelib/thread/qthread_unix.cpp @@ -180,8 +180,7 @@ void *QThreadPrivate::start(void *arg) data->quitNow = false; // ### TODO: allow the user to create a custom event dispatcher - if (QCoreApplication::instance()) - createEventDispatcher(data); + createEventDispatcher(data); emit thr->started(); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp index 27193c6..7094e3d 100644 --- a/src/corelib/thread/qthread_win.cpp +++ b/src/corelib/thread/qthread_win.cpp @@ -292,8 +292,7 @@ unsigned int __stdcall QThreadPrivate::start(void *arg) data->quitNow = false; // ### TODO: allow the user to create a custom event dispatcher - if (QCoreApplication::instance()) - createEventDispatcher(data); + createEventDispatcher(data); #if !defined(QT_NO_DEBUG) && defined(Q_CC_MSVC) && !defined(Q_OS_WINCE) // sets the name of the current thread. diff --git a/src/corelib/tools/qbytearraymatcher.cpp b/src/corelib/tools/qbytearraymatcher.cpp index cd4cf90..211d190 100644 --- a/src/corelib/tools/qbytearraymatcher.cpp +++ b/src/corelib/tools/qbytearraymatcher.cpp @@ -120,6 +120,7 @@ QByteArrayMatcher::QByteArrayMatcher() : d(0) { p.p = 0; + p.l = 0; qMemSet(p.q_skiptable, 0, sizeof(p.q_skiptable)); } @@ -170,7 +171,7 @@ QByteArrayMatcher::~QByteArrayMatcher() QByteArrayMatcher &QByteArrayMatcher::operator=(const QByteArrayMatcher &other) { q_pattern = other.q_pattern; - qMemCopy(p.q_skiptable, other.p.q_skiptable, sizeof(p.q_skiptable)); + qMemCopy(&p, &other.p, sizeof(p)); return *this; } diff --git a/src/corelib/tools/qbytearraymatcher.h b/src/corelib/tools/qbytearraymatcher.h index d7f2366..633e92c 100644 --- a/src/corelib/tools/qbytearraymatcher.h +++ b/src/corelib/tools/qbytearraymatcher.h @@ -67,7 +67,12 @@ public: int indexIn(const QByteArray &ba, int from = 0) const; int indexIn(const char *str, int len, int from = 0) const; - inline QByteArray pattern() const { return q_pattern; } + inline QByteArray pattern() const + { + if (q_pattern.isNull()) + return QByteArray((const char*)p.p, p.l); + return q_pattern; + } private: QByteArrayMatcherPrivate *d; diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index 540f43d..21d98b5 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -91,7 +91,7 @@ static uint hash(const QChar *p, int n) uint qHash(const QByteArray &key) { - return hash(reinterpret_cast<const uchar *>(key.data()), key.size()); + return hash(reinterpret_cast<const uchar *>(key.constData()), key.size()); } uint qHash(const QString &key) @@ -107,7 +107,7 @@ uint qHash(const QStringRef &key) uint qHash(const QBitArray &bitArray) { int m = bitArray.d.size() - 1; - uint result = hash(reinterpret_cast<const uchar *>(bitArray.d.data()), qMax(0, m)); + uint result = hash(reinterpret_cast<const uchar *>(bitArray.d.constData()), qMax(0, m)); // deal with the last 0 to 7 bits manually, because we can't trust that // the padding is initialized to 0 in bitArray.d diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index f70669c..d786f3e 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -693,7 +693,10 @@ void QFileDialog::setVisible(bool visible) */ void QFileDialogPrivate::_q_goToUrl(const QUrl &url) { - QModelIndex idx = model->index(url.toLocalFile()); + //The shortcut in the side bar may have a parent that is not fetched yet (e.g. an hidden file) + //so we force the fetching + QFileSystemModelPrivate::QFileSystemNode *node = model->d_func()->node(url.toLocalFile(), true); + QModelIndex idx = model->d_func()->index(node); _q_enterDirectory(idx); } @@ -1437,6 +1440,8 @@ void QFileDialog::setIconProvider(QFileIconProvider *provider) { Q_D(QFileDialog); d->model->setIconProvider(provider); + //It forces the refresh of all entries in the side bar, then we can get new icons + d->qFileDialogUi->sidebar->setUrls(d->qFileDialogUi->sidebar->urls()); } /*! diff --git a/src/gui/dialogs/qfilesystemmodel.h b/src/gui/dialogs/qfilesystemmodel.h index 52ecaf9..995268b 100644 --- a/src/gui/dialogs/qfilesystemmodel.h +++ b/src/gui/dialogs/qfilesystemmodel.h @@ -158,6 +158,8 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_performDelayedSort()) Q_PRIVATE_SLOT(d_func(), void _q_fileSystemChanged(const QString &path, const QList<QPair<QString, QFileInfo> > &)) Q_PRIVATE_SLOT(d_func(), void _q_resolvedName(const QString &fileName, const QString &resolvedName)) + + friend class QFileDialogPrivate; }; inline bool QFileSystemModel::rmdir(const QModelIndex &aindex) const diff --git a/src/gui/dialogs/qfilesystemmodel_p.h b/src/gui/dialogs/qfilesystemmodel_p.h index 77c35a2..0a1265a 100644 --- a/src/gui/dialogs/qfilesystemmodel_p.h +++ b/src/gui/dialogs/qfilesystemmodel_p.h @@ -163,7 +163,11 @@ public: info->icon = iconProvider->icon(QFileInfo(path)); QHash<QString, QFileSystemNode *>::const_iterator iterator; for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) { - iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); + //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/) + if (!path.isEmpty()) + iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); + else + iterator.value()->updateIcon(iconProvider, iterator.value()->fileName); } } @@ -172,7 +176,11 @@ public: info->displayType = iconProvider->type(QFileInfo(path)); QHash<QString, QFileSystemNode *>::const_iterator iterator; for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) { - iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); + //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/) + if (!path.isEmpty()) + iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); + else + iterator.value()->retranslateStrings(iconProvider, iterator.value()->fileName); } } diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp index 1ddb8f4..456b480 100644 --- a/src/gui/dialogs/qmessagebox.cpp +++ b/src/gui/dialogs/qmessagebox.cpp @@ -1717,6 +1717,7 @@ void QMessageBox::aboutQt(QWidget *parent, const QString &title) "to comply with the terms of the GNU GPL version 3.0.</p>" "<p>Please see <a href=\"http://www.qtsoftware.com/products/licensing\">www.qtsoftware.com/products/licensing</a> " "for an overview of Qt licensing.</p>" + "<p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p>" "<p>Qt is a Nokia product. See <a href=\"http://www.qtsoftware.com/qt/\">www.qtsoftware.com/qt</a> " "for more information.</p>" ).arg(QLatin1String(QT_VERSION_STR)); diff --git a/src/gui/dialogs/qprintdialog_unix.cpp b/src/gui/dialogs/qprintdialog_unix.cpp index 76c22d0..87a4e65 100644 --- a/src/gui/dialogs/qprintdialog_unix.cpp +++ b/src/gui/dialogs/qprintdialog_unix.cpp @@ -727,7 +727,9 @@ void QUnixPrintWidgetPrivate::updateWidget() widget.printers->removeItem(widget.printers->count()-1); // remove separator filePrintersAdded = false; } - if (printer && filePrintersAdded && printer->printerName().isEmpty()) { + if (printer && filePrintersAdded && (printer->outputFormat() != QPrinter::NativeFormat + || printer->printerName().isEmpty())) + { if (printer->outputFormat() == QPrinter::PdfFormat) widget.printers->setCurrentIndex(widget.printers->count() - 2); else if (printer->outputFormat() == QPrinter::PostScriptFormat) diff --git a/src/gui/dialogs/qsidebar.cpp b/src/gui/dialogs/qsidebar.cpp index 1bd2b7d..26108d7 100644 --- a/src/gui/dialogs/qsidebar.cpp +++ b/src/gui/dialogs/qsidebar.cpp @@ -55,6 +55,18 @@ QT_BEGIN_NAMESPACE +void QSideBarDelegate::initStyleOption(QStyleOptionViewItem *option, + const QModelIndex &index) const +{ + QStyledItemDelegate::initStyleOption(option,index); + QVariant value = index.data(QUrlModel::EnabledRole); + if (value.isValid()) { + //If the bookmark/entry is not enabled then we paint it in gray + if (!qvariant_cast<bool>(value)) + option->state &= ~QStyle::State_Enabled; + } +} + /*! QUrlModel lets you have indexes from a QFileSystemModel to a list. When QFileSystemModel changes them QUrlModel will automatically update. @@ -88,9 +100,6 @@ Qt::ItemFlags QUrlModel::flags(const QModelIndex &index) const if (index.data(Qt::DecorationRole).isNull()) flags &= ~Qt::ItemIsEnabled; - if (invalidUrls.contains(index.data(UrlRole).toUrl())) - flags &= ~Qt::ItemIsEnabled; - return flags; } @@ -193,6 +202,11 @@ void QUrlModel::setUrl(const QModelIndex &index, const QUrl &url, const QModelIn newName = QFileInfo(url.toLocalFile()).fileName(); if (!invalidUrls.contains(url)) invalidUrls.append(url); + //The bookmark is invalid then we set to false the EnabledRole + setData(index, false, EnabledRole); + } else { + //The bookmark is valid then we set to true the EnabledRole + setData(index, true, EnabledRole); } // Make sure that we have at least 32x32 images @@ -234,7 +248,11 @@ void QUrlModel::addUrls(const QList<QUrl> &list, int row, bool move) if (!url.isValid() || url.scheme() != QLatin1String("file")) continue; for (int j = 0; move && j < rowCount(); ++j) { +#if defined(Q_OS_WIN) + if (index(j, 0).data(UrlRole).toUrl().toLocalFile().toLower() == url.toLocalFile().toLower()) { +#else if (index(j, 0).data(UrlRole) == url) { +#endif removeRow(j); if (j <= row) row--; @@ -356,6 +374,7 @@ void QSidebar::init(QFileSystemModel *model, const QList<QUrl> &newUrls) urlModel = new QUrlModel(this); urlModel->setFileSystemModel(model); setModel(urlModel); + setItemDelegate(new QSideBarDelegate(this)); connect(selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(clicked(const QModelIndex &))); diff --git a/src/gui/dialogs/qsidebar_p.h b/src/gui/dialogs/qsidebar_p.h index ecbbb37..56fd6d4 100644 --- a/src/gui/dialogs/qsidebar_p.h +++ b/src/gui/dialogs/qsidebar_p.h @@ -55,6 +55,7 @@ #include <qlistwidget.h> #include <qstandarditemmodel.h> +#include <qstyleditemdelegate.h> #include <qurl.h> #ifndef QT_NO_FILEDIALOG @@ -62,13 +63,23 @@ QT_BEGIN_NAMESPACE class QFileSystemModel; + +class QSideBarDelegate : public QStyledItemDelegate +{ + public: + QSideBarDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) {} + void initStyleOption(QStyleOptionViewItem *option, + const QModelIndex &index) const; +}; + class Q_AUTOTEST_EXPORT QUrlModel : public QStandardItemModel { Q_OBJECT public: enum Roles { - UrlRole = Qt::UserRole + 1 + UrlRole = Qt::UserRole + 1, + EnabledRole = Qt::UserRole + 2 }; QUrlModel(QObject *parent = 0); diff --git a/src/gui/embedded/qscreentransformed_qws.cpp b/src/gui/embedded/qscreentransformed_qws.cpp index f988789..46ac1d1 100644 --- a/src/gui/embedded/qscreentransformed_qws.cpp +++ b/src/gui/embedded/qscreentransformed_qws.cpp @@ -410,7 +410,9 @@ void QTransformedScreen::blit(const QImage &image, const QPoint &topLeft, #endif #ifdef QT_QWS_DEPTH_8 case 8: - if (image.depth() == 16) + if (image.format() == QImage::Format_RGB444) + SET_BLIT_FUNC(quint8, qrgb444, trans, func); + else if (image.depth() == 16) SET_BLIT_FUNC(quint8, quint16, trans, func); else SET_BLIT_FUNC(quint8, quint32, trans, func); diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index d1b8393..3e8d38f 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -3950,17 +3950,29 @@ bool QGraphicsItemPrivate::isProxyWidget() const */ void QGraphicsItem::update(const QRectF &rect) { - if ((rect.isEmpty() && !rect.isNull()) || d_ptr->discardUpdateRequest()) + if (rect.isEmpty() && !rect.isNull()) return; if (CacheMode(d_ptr->cacheMode) != NoCache) { QGraphicsItemCache *cache = d_ptr->extraItemCache(); + if (d_ptr->discardUpdateRequest(/* ignoreVisibleBit = */ false, + /* ignoreClipping = */ false, + /* ignoreDirtyBit = */ true)) { + return; + } + + // Invalidate cache. if (rect.isNull()) { cache->allExposed = true; cache->exposed.clear(); } else { cache->exposed.append(rect); } + // Only invalidate cache; item is already dirty. + if (d_ptr->dirty) + return; + } else if (d_ptr->discardUpdateRequest()) { + return; } // Effectively the same as updateHelper(rect); diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index 9881960..13f70e5 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -697,12 +697,6 @@ void QGraphicsScenePrivate::_q_removeItemLater(QGraphicsItem *item) { Q_Q(QGraphicsScene); - if (QGraphicsItem *parent = item->d_func()->parent) { - parent->itemChange(QGraphicsItem::ItemChildRemovedChange, - qVariantFromValue<QGraphicsItem *>(item)); - parent->d_func()->children.removeAll(item); - } - // Clear focus on the item to remove any reference in the focusWidget // chain. item->clearFocus(); @@ -4896,9 +4890,11 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte if (newCacheIndent != deviceData->cacheIndent || deviceRect.size() != pix.size()) { QPoint diff = newCacheIndent - deviceData->cacheIndent; QPixmap newPix(deviceRect.size()); + // ### Investigate removing this fill (test with Plasma and + // graphicssystem raster). + newPix.fill(Qt::transparent); if (!pix.isNull()) { QPainter newPixPainter(&newPix); - newPixPainter.setCompositionMode(QPainter::CompositionMode_Source); newPixPainter.drawPixmap(-diff, pix); newPixPainter.end(); } diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp index 4253f8d..eedb6a3 100644 --- a/src/gui/image/qpixmapcache.cpp +++ b/src/gui/image/qpixmapcache.cpp @@ -275,7 +275,8 @@ bool QPixmapCache::insert(const QString &key, const QPixmap &pm) /*! Returns the cache limit (in kilobytes). - The default cache limit is 2048 KB for Embedded, 10240 KB for Desktops. + The default cache limit is 2048 KB for Embedded, 10240 KB for + Desktops. \sa setCacheLimit() */ @@ -288,7 +289,8 @@ int QPixmapCache::cacheLimit() /*! Sets the cache limit to \a n kilobytes. - The default setting is 1024 kilobytes. + The default setting is 2048 KB for Embedded, 10240 KB for + Desktops. \sa cacheLimit() */ diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 09f0f91..d0b1790 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -832,12 +832,13 @@ QApplication::QApplication(Display *dpy, int &argc, char **argv, #endif // Q_WS_X11 +extern void qInitDrawhelperAsm(); /*! + \fn void QApplicationPrivate::initialize() + Initializes the QApplication object, called from the constructors. */ -extern void qInitDrawhelperAsm(); - void QApplicationPrivate::initialize() { QWidgetPrivate::mapper = new QWidgetMapper; @@ -2099,8 +2100,8 @@ void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason) if (that) QApplication::sendEvent(that->style(), &in); } + emit qApp->focusChanged(prev, focus_widget); } - emit qApp->focusChanged(prev, focus_widget); } } diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index b1270bc..f1fb001 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -398,7 +398,7 @@ extern bool qt_xdnd_dragging; // gui or non-gui from qapplication.cpp extern bool qt_is_gui_used; -/*! +/*! \internal Try to resolve a \a symbol from \a library with the version specified by \a vernum. @@ -836,7 +836,7 @@ bool QApplicationPrivate::x11_apply_settings() } int kdeSessionVersion = QString::fromLocal8Bit(qgetenv("KDE_SESSION_VERSION")).toInt(); - + if (!appFont) { QFont font(QApplication::font()); QString fontDescription; @@ -1948,11 +1948,17 @@ void qt_init(QApplicationPrivate *priv, int, { QString displayName = QLatin1String(XDisplayName(NULL)); - // apparently MITSHM only works for local displays, so do a quick check here - // to determine whether the display is local or not (not 100 % accurate) + // MITSHM only works for local displays, so do a quick check here + // to determine whether the display is local or not (not 100 % accurate). + // BGR server layouts are not supported either, since it requires the raster + // engine to work on a QImage with BGR layout. bool local = displayName.isEmpty() || displayName.lastIndexOf(QLatin1Char(':')) == 0; - if (local && (qgetenv("QT_X11_NO_MITSHM").toInt() == 0)) - X11->use_mitshm = mitshm_pixmaps; + if (local && (qgetenv("QT_X11_NO_MITSHM").toInt() == 0)) { + Visual *defaultVisual = DefaultVisual(X11->display, DefaultScreen(X11->display)); + X11->use_mitshm = mitshm_pixmaps && (defaultVisual->red_mask == 0xff0000 + && defaultVisual->green_mask == 0xff00 + && defaultVisual->blue_mask == 0xff); + } } #endif // QT_NO_MITSHM diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index e84af90..fae4821 100644 --- a/src/gui/kernel/qcocoaview_mac.mm +++ b/src/gui/kernel/qcocoaview_mac.mm @@ -292,9 +292,18 @@ extern "C" { QPoint posDrag(localPoint.x, localPoint.y); NSDragOperation nsActions = [sender draggingSourceOperationMask]; Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions); + QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions; + Qt::KeyboardModifiers modifiers = Qt::NoModifier; + if ([sender draggingSource] != nil) { + // modifier flags might have changed, update it here since we don't send any input events. + QApplicationPrivate::modifier_buttons = qt_cocoaModifiers2QtModifiers([[NSApp currentEvent] modifierFlags]); + modifiers = QApplication::keyboardModifiers(); + } else { + // when the source is from another application the above technique will not work. + modifiers = qt_cocoaDragOperation2QtModifiers(nsActions); + } // send the drag enter event to the widget. - QDragEnterEvent qDEEvent(posDrag, qtAllowed, mimeData, - QApplication::mouseButtons(), QApplication::keyboardModifiers()); + QDragEnterEvent qDEEvent(posDrag, qtAllowed, mimeData, QApplication::mouseButtons(), modifiers); QApplication::sendEvent(qwidget, &qDEEvent); if (!qDEEvent.isAccepted()) { // widget is not interested in this drag, so ignore this drop data. @@ -302,24 +311,23 @@ extern "C" { return NSDragOperationNone; } else { // send a drag move event immediately after a drag enter event (as per documentation). - QDragMoveEvent qDMEvent(posDrag, qtAllowed, mimeData, - QApplication::mouseButtons(), QApplication::keyboardModifiers()); + QDragMoveEvent qDMEvent(posDrag, qtAllowed, mimeData, QApplication::mouseButtons(), modifiers); qDMEvent.setDropAction(qDEEvent.dropAction()); qDMEvent.accept(); // accept by default, since enter event was accepted. QApplication::sendEvent(qwidget, &qDMEvent); if (!qDMEvent.isAccepted() || qDMEvent.dropAction() == Qt::IgnoreAction) { // since we accepted the drag enter event, the widget expects // future drage move events. - // ### check if we need to treat this like the drag enter event. + // ### check if we need to treat this like the drag enter event. nsActions = QT_PREPEND_NAMESPACE(qt_mac_mapDropAction)(qDEEvent.dropAction()); } else { nsActions = QT_PREPEND_NAMESPACE(qt_mac_mapDropAction)(qDMEvent.dropAction()); - } + } QT_PREPEND_NAMESPACE(qt_mac_copy_answer_rect)(qDMEvent); - return nsActions; + return nsActions; } } - + - (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender { // drag enter event was rejected, so ignore the move event. @@ -337,11 +345,19 @@ extern "C" { // send drag move event to the widget QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions; Qt::DropActions qtAllowed = QT_PREPEND_NAMESPACE(qt_mac_mapNSDragOperations)(nsActions); + Qt::KeyboardModifiers modifiers = Qt::NoModifier; + if ([sender draggingSource] != nil) { + // modifier flags might have changed, update it here since we don't send any input events. + QApplicationPrivate::modifier_buttons = qt_cocoaModifiers2QtModifiers([[NSApp currentEvent] modifierFlags]); + modifiers = QApplication::keyboardModifiers(); + } else { + // when the source is from another application the above technique will not work. + modifiers = qt_cocoaDragOperation2QtModifiers(nsActions); + } QMimeData *mimeData = dropData; if (QDragManager::self()->source()) mimeData = QDragManager::self()->dragPrivate()->data; - QDragMoveEvent qDMEvent(posDrag, qtAllowed, mimeData, - QApplication::mouseButtons(), QApplication::keyboardModifiers()); + QDragMoveEvent qDMEvent(posDrag, qtAllowed, mimeData, QApplication::mouseButtons(), modifiers); qDMEvent.setDropAction(QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec).lastAction); qDMEvent.accept(); QApplication::sendEvent(qwidget, &qDMEvent); @@ -370,12 +386,12 @@ extern "C" { - (BOOL)performDragOperation:(id <NSDraggingInfo>)sender { [self addDropData:sender]; - + NSPoint windowPoint = [sender draggingLocation]; NSPoint globalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:windowPoint]; NSPoint localPoint = [self convertPoint:windowPoint fromView:nil]; QPoint posDrop(localPoint.x, localPoint.y); - + NSDragOperation nsActions = [sender draggingSourceOperationMask]; Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions); QMimeData *mimeData = dropData; @@ -387,6 +403,8 @@ extern "C" { if (QDragManager::self()->object) QDragManager::self()->dragPrivate()->target = qwidget; QApplication::sendEvent(qwidget, &de); + if (QDragManager::self()->object) + QDragManager::self()->dragPrivate()->executed_action = de.dropAction(); if (!de.isAccepted()) return NO; else @@ -417,10 +435,9 @@ extern "C" { - (void) setFrameSize:(NSSize)newSize { [super setFrameSize:newSize]; - + // A change in size has required the view to be invalidated. - if ([self inLiveResize]) - { + if ([self inLiveResize]) { NSRect rects[4]; NSInteger count; [self getRectsExposedDuringLiveResize:rects count:&count]; @@ -428,9 +445,7 @@ extern "C" { { [self setNeedsDisplayInRect:rects[count]]; } - } - else - { + } else { [self setNeedsDisplay:YES]; } } @@ -565,7 +580,7 @@ extern "C" { if (!qAppInstance()->activeModalWidget() || QApplicationPrivate::tryModalHelper(qwidget, 0)) { QApplication::sendEvent(qwidget, &enterEvent); qt_mouseover = qwidget; - + // Update cursor and dispatch hover events. qt_mac_update_cursor_at_global_pos(flipPoint(globalPoint).toPoint()); if (qwidget->testAttribute(Qt::WA_Hover) && @@ -620,7 +635,7 @@ extern "C" { [viewsToLookAt addObject:qt_mac_nativeview_for(parentWidget)]; parentWidget = parentWidget->parentWidget(); } - + // Now walk through the subviews of each view and determine which subview should // get the event. We look through all the subviews at a given level with // the assumption that the last item to be found the candidate has a higher z-order. @@ -756,7 +771,7 @@ extern "C" { if (currentIManager && [currentIManager wantsToHandleMouseEvents]) { [currentIManager handleMouseEvent:theEvent]; } - + NSPoint windowPoint = [theEvent locationInWindow]; NSPoint globalPoint = [[theEvent window] convertBaseToScreen:windowPoint]; NSPoint localPoint = [self convertPoint:windowPoint fromView:nil]; @@ -765,7 +780,7 @@ extern "C" { Qt::MouseButton buttons = cocoaButton2QtButton([theEvent buttonNumber]); bool wheelOK = false; Qt::KeyboardModifiers keyMods = qt_cocoaModifiers2QtModifiers([theEvent modifierFlags]); - + // Mouse wheel deltas seem to tick in at increments of 0.1. Qt widgets // expect the delta to be a multiple of 120. const int ScrollFactor = 10 * 120; @@ -787,7 +802,7 @@ extern "C" { wheelOK = qwe2.isAccepted(); } } - + if (deltaY) { QWheelEvent qwe(qlocal, qglobal, deltaY, buttons, keyMods, Qt::Vertical); qt_sendSpontaneousEvent(qwidget, &qwe); @@ -800,7 +815,7 @@ extern "C" { wheelOK = qwe2.isAccepted(); } } - + if (deltaZ) { // Qt doesn't explicitly support wheels with a Z component. In a misguided attempt to // try to be ahead of the pack, I'm adding this extra value. @@ -889,6 +904,11 @@ extern "C" { Q_UNUSED(anImage); Q_UNUSED(aPoint); qMacDnDParams()->performedAction = operation; + if (QDragManager::self()->object + && QDragManager::self()->dragPrivate()->executed_action != Qt::ActionMask) { + qMacDnDParams()->performedAction = + qt_mac_mapDropAction(QDragManager::self()->dragPrivate()->executed_action); + } } - (QWidget *)qt_qwidget @@ -1202,13 +1222,13 @@ Qt::DropAction QDragManager::drag(QDrag *o) so we just bail early to prevent it */ if(!(GetCurrentEventButtonState() & kEventMouseButtonPrimary)) return Qt::IgnoreAction; - + if(object) { dragPrivate()->source->removeEventFilter(this); cancel(); beingCancelled = false; } - + object = o; dragPrivate()->target = 0; @@ -1220,7 +1240,7 @@ Qt::DropAction QDragManager::drag(QDrag *o) QMacPasteboard dragBoard((CFStringRef) NSDragPboard, QMacPasteboardMime::MIME_DND); dragPrivate()->data->setData(QLatin1String("application/x-qt-mime-type-name"), QByteArray()); dragBoard.setMimeData(dragPrivate()->data); - + // create the image QPoint hotspot; QPixmap pix = dragPrivate()->pixmap; @@ -1266,6 +1286,7 @@ Qt::DropAction QDragManager::drag(QDrag *o) NSSize mouseOffset = {0.0, 0.0}; NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard]; NSPoint windowPoint = [dndParams->theEvent locationInWindow]; + dragPrivate()->executed_action = Qt::ActionMask; // do the drag [dndParams->view retain]; [dndParams->view dragImage:image @@ -1277,6 +1298,7 @@ Qt::DropAction QDragManager::drag(QDrag *o) slideBack:YES]; [dndParams->view release]; [image release]; + dragPrivate()->executed_action = Qt::IgnoreAction; object = 0; Qt::DropAction performedAction(qt_mac_mapNSDragOperation(dndParams->performedAction)); // do post drag processing, if required. diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm index 52e76d8..f000292 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac.mm +++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm @@ -515,6 +515,18 @@ Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags) return qtMods; } +Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations) +{ + Qt::KeyboardModifiers qtMods =Qt::NoModifier; + if (dragOperations & NSDragOperationLink) + qtMods |= Qt::MetaModifier; + if (dragOperations & NSDragOperationGeneric) + qtMods |= Qt::ControlModifier; + if (dragOperations & NSDragOperationCopy) + qtMods |= Qt::AltModifier; + return qtMods; +} + static inline QEvent::Type cocoaEvent2QtEvent(NSUInteger eventType) { // Handle the trivial cases that can be determined from the type. diff --git a/src/gui/kernel/qt_cocoa_helpers_mac_p.h b/src/gui/kernel/qt_cocoa_helpers_mac_p.h index ef55aa4..63a301c 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac_p.h +++ b/src/gui/kernel/qt_cocoa_helpers_mac_p.h @@ -141,6 +141,7 @@ inline QApplication *qAppInstance() { return static_cast<QApplication *>(QCoreAp struct ::TabletProximityRec; void qt_dispatchTabletProximityEvent(const ::TabletProximityRec &proxRec); Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags); +Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations); inline int flipYCoordinate(int y) { return QApplication::desktop()->screenGeometry(0).height() - y; diff --git a/src/gui/kernel/qt_mac.cpp b/src/gui/kernel/qt_mac.cpp index b1247e8..44e10a8 100644 --- a/src/gui/kernel/qt_mac.cpp +++ b/src/gui/kernel/qt_mac.cpp @@ -131,7 +131,7 @@ QColor qcolorForTheme(ThemeBrush brush) QColor qcolorForThemeTextColor(ThemeTextColor themeColor) { -#ifdef QT_OS_MAC32 +#ifdef Q_OS_MAC32 RGBColor c; GetThemeTextColor(themeColor, 32, true, &c); QColor color = QColor(c.red / 265, c.green / 256, c.blue / 256); diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 31fed5e..eb2e9f7 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -2132,6 +2132,10 @@ QWidget *QWidget::find(WId id) If a widget is non-native (alien) and winId() is invoked on it, that widget will be provided a native handle. + On Mac OS X, the type returned depends on which framework Qt was linked + against. If Qt is using Carbon, the {WId} is actually an HIViewRef. If Qt + is using Cocoa, {WId} is a pointer to an NSView. + \note We recommend that you do not store this value as it is likely to change at run-time. @@ -2234,9 +2238,10 @@ WId QWidget::effectiveWinId() const The style sheet contains a textual description of customizations to the widget's style, as described in the \l{Qt Style Sheets} document. - \note Qt style sheets are currently not supported for QMacStyle - (the default style on Mac OS X). We plan to address this in some future - release. + Since Qt 4.5, Qt style sheets fully supports Mac OS X. + + \warning Qt style sheets are currently not supported for custom QStyle + subclasses. We plan to address this in some future release. \sa setStyle(), QApplication::styleSheet, {Qt Style Sheets} */ @@ -4708,10 +4713,13 @@ void QWidget::render(QPaintDevice *target, const QPoint &targetOffset, if (redirected) { target = redirected; offset -= redirectionOffset; - if (!inRenderWithPainter) { // Clip handled by shared painter (in qpainter.cpp). - const QRegion redirectedSystemClip = redirected->paintEngine()->systemClip(); - if (!redirectedSystemClip.isEmpty()) - paintRegion &= redirectedSystemClip.translated(-offset); + } + + if (!inRenderWithPainter) { // Clip handled by shared painter (in qpainter.cpp). + if (QPaintEngine *targetEngine = target->paintEngine()) { + const QRegion targetSystemClip = targetEngine->systemClip(); + if (!targetSystemClip.isEmpty()) + paintRegion &= targetSystemClip.translated(-offset); } } diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 2c3f7f1..a00f969 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -4001,6 +4001,33 @@ void QWidgetPrivate::setWSGeometry(bool dontShow, const QRect &oldRect) } } +void QWidgetPrivate::applyMaxAndMinSizeConstraints(int &w, int &h) +{ + if (QWExtra *extra = extraData()) { + w = qMin(w, extra->maxw); + h = qMin(h, extra->maxh); + w = qMax(w, extra->minw); + h = qMax(h, extra->minh); + + // Deal with size increment + if (QTLWExtra *top = topData()) { + if(top->incw) { + w = w/top->incw; + w *= top->incw; + } + if(top->inch) { + h = h/top->inch; + h *= top->inch; + } + } + } + + if (isRealWindow()) { + w = qMax(0, w); + h = qMax(0, h); + } +} + void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove) { Q_Q(QWidget); @@ -4011,7 +4038,9 @@ void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove) QMacCocoaAutoReleasePool pool; bool realWindow = isRealWindow(); + if (realWindow && !(w == 0 && h == 0) && !q->testAttribute(Qt::WA_DontShowOnScreen)) { + applyMaxAndMinSizeConstraints(w, h); topData()->isSetGeometry = 1; topData()->isMove = isMove; #ifndef QT_MAC_USE_COCOA @@ -4037,10 +4066,26 @@ void QWidgetPrivate::setGeometry_sys_helper(int x, int y, int w, int h, bool isM { Q_Q(QWidget); bool realWindow = isRealWindow(); - if(QWExtra *extra = extraData()) { // any size restrictions? - if(realWindow) { + + QPoint oldp = q->pos(); + QSize olds = q->size(); + const bool isResize = (olds != QSize(w, h)); + + if (!realWindow && !isResize && QPoint(x, y) == oldp) + return; + + if (isResize) + data.window_state = data.window_state & ~Qt::WindowMaximized; + + const bool visible = q->isVisible(); + data.crect = QRect(x, y, w, h); + + if (realWindow) { + if (QWExtra *extra = extraData()) { + applyMaxAndMinSizeConstraints(w, h); qt_mac_update_sizer(q); - if(q->windowFlags() & Qt::WindowMaximizeButtonHint) { + + if (q->windowFlags() & Qt::WindowMaximizeButtonHint) { #ifndef QT_MAC_USE_COCOA OSWindowRef window = qt_mac_window_for(q); if(extra->maxw && extra->maxh && extra->maxw == extra->minw @@ -4051,43 +4096,8 @@ void QWidgetPrivate::setGeometry_sys_helper(int x, int y, int w, int h, bool isM } #endif } - } - - w = qMin(w,extra->maxw); - h = qMin(h,extra->maxh); - w = qMax(w,extra->minw); - h = qMax(h,extra->minh); - - // Deal with size increment - if(QTLWExtra *top = topData()) { - if(top->incw) { - w = w/top->incw; - w *= top->incw; - } - if(top->inch) { - h = h/top->inch; - h *= top->inch; - } - } - } - if (realWindow) { - w = qMax(0, w); - h = qMax(0, h); - } - - QPoint oldp = q->pos(); - QSize olds = q->size(); - const bool isResize = (olds != QSize(w, h)); - if(!realWindow && !isResize && QPoint(x, y) == oldp) - return; - if(isResize && q->isMaximized()) - data.window_state = data.window_state & ~Qt::WindowMaximized; - const bool visible = q->isVisible(); - data.crect = QRect(x, y, w, h); - - if(realWindow) { - if(QWExtra *extra = extraData()) { //set constraints + // Update max and min constraints: const float max_f(20000); #ifndef QT_MAC_USE_COCOA #define SF(x) ((x > max_f) ? max_f : x) @@ -4627,8 +4637,11 @@ void QWidgetPrivate::setModal_sys() if (windowParent && q->windowModality() == Qt::WindowModal){ // Window should be window-modal, which implies a sheet. - if (!alreadySheet) + if (!alreadySheet) { + // NB: the following call will call setModal_sys recursivly: recreateMacWindow(); + windowRef = qt_mac_window_for(q); + } if ([windowRef isKindOfClass:[NSPanel class]]){ // If the primary window of the sheet parent is a child of a modal dialog, // the sheet parent should not be modally shaddowed. diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index 9e93f66..423e833 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -257,6 +257,7 @@ public: void macUpdateIsOpaque(); void setEnabled_helper_sys(bool enable); bool isRealWindow() const; + void applyMaxAndMinSizeConstraints(int &w, int &h); #endif void raise_sys(); diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp index 6589439..dd7b016 100644 --- a/src/gui/painting/qblendfunctions.cpp +++ b/src/gui/painting/qblendfunctions.cpp @@ -44,19 +44,6 @@ QT_BEGIN_NAMESPACE - -// This ifdef is made with the best of intention. GCC fails to -// optimzie the code properly so the bytemul approach is the fastest -// it gets. Both on ARM and on MSVC the code is optimized to be better -// than the bytemul approach... On the other hand... This code is -// almost never run on i386 so it may be downright silly to have this -// piece of code here... -#if defined (Q_CC_GNU) && (defined (QT_ARCH_I386) || defined (QT_ARCH_X86_64)) -# define QT_BLEND_USE_BYTEMUL -#endif - -// #define QT_DEBUG_DRAW - static const qreal aliasedCoordinateDelta = 0.5 - 0.015625; struct SourceOnlyAlpha @@ -286,7 +273,7 @@ static void qt_blend_rgb16_on_rgb16(uchar *dst, int dbpl, int const_alpha) { #ifdef QT_DEBUG_DRAW - printf("qt_blend_argb16_on_rgb16: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n", + printf("qt_blend_rgb16_on_rgb16: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n", dst, dbpl, src, sbpl, w, h, const_alpha); #endif @@ -347,11 +334,6 @@ template <typename T> void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl, if (alpha == 255) { *dst = spix; } else if (alpha != 0) { -#ifdef QT_BLEND_USE_BYTEMUL - // truncate green channel to avoid overflow - *dst = (alphaFunc.bytemul(spix) & 0xffdf) - + (quint16) qrgb565(*dst).byte_mul(qrgb565::ialpha(alpha)); -#else quint16 dpix = *dst; quint32 sia = 255 - alpha; @@ -363,12 +345,11 @@ template <typename T> void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl, quint32 siag = dg * sia; quint32 siab = db * sia; - quint32 rr = ((siar + (siar>>8) + (0x80 << 11)) >> 8) & 0xf800; - quint32 rg = ((siag + (siag>>8) + (0x80 << 5)) >> 8) & 0x07e0; - quint32 rb = ((siab + (siab>>8) + (0x80 >> 3)) >> 8); + quint32 rr = ((siar + (siar>>8) + (0x80 << 8)) >> 8) & 0xf800; + quint32 rg = ((siag + (siag>>8) + (0x80 << 3)) >> 8) & 0x07e0; + quint32 rb = ((siab + (siab>>8) + (0x80 >> 3)) >> 8) & 0x001f; *dst = alphaFunc.bytemul(spix) + rr + rg + rb; -#endif } ++dst; @@ -435,113 +416,45 @@ static void qt_blend_argb32_on_rgb16(uchar *destPixels, int dbpl, } quint16 *dst = (quint16 *) destPixels; - int dstExtraStride = dbpl / 2 - w; - - const quint32 *src = (const quint32 *) srcPixels; - int srcExtraStride = sbpl / 4 - w; + quint32 *src = (quint32 *) srcPixels; for (int y=0; y<h; ++y) { - int length = w; - const int dstAlign = ((quintptr)dst) & 0x3; - if (dstAlign) { - const quint8 alpha = qAlpha(*src); - if (alpha) { - quint16 s = convert_argb32_to_rgb16(*src); - if (alpha < 255) - s += BYTE_MUL_RGB16(*dst, 255 - alpha); - *dst = s; - } - ++dst; - ++src; - --length; - } + for (int x=0; x<w; ++x) { - const int length32 = length >> 1; - const int srcAlign = ((quintptr)src) & 0x3; - if (length32) { - if (srcAlign) { - for (int i = 0; i < length32; ++i) { - quint32 *dest32 = reinterpret_cast<quint32*>(dst); - const quint8 a1 = qAlpha(src[0]); - const quint8 a2 = qAlpha(src[1]); - quint32 s; - - if (!a1 && !a2) { - src += 2; - dst +=2; - continue; - } - - s = convert_argb32_to_rgb16(src[0]) - | (convert_argb32_to_rgb16(src[1]) << 16); - - if (a1 == a2) { - if (a1 < 255) { - const quint8 sa = ((255 - a1)+1) >> 3; - s += BYTE_MUL_RGB16_32(*dest32, sa); - } - } else { - if (a1 < 255) - s += BYTE_MUL_RGB16(dst[0], 255 - a1); - if (a2 < 255) - s += BYTE_MUL_RGB16(dst[1], 255 - a2) << 16; - } - - *dest32 = s; - src += 2; - dst += 2; - } - } else { - for (int i = 0; i < length32; ++i) { - quint32 *dest32 = reinterpret_cast<quint32*>(dst); - const quint8 a1 = qAlpha(src[0]); - const quint8 a2 = qAlpha(src[1]); - quint32 s; - - if (!a1 && !a2) { - src += 2; - dst +=2; - continue; - } - - const quint64 *src64 = - reinterpret_cast<const quint64*>(src); - s = qConvertRgb32To16x2(*src64); - - if (a1 == a2) { - if (a1 < 255) { - const quint8 sa = ((255 - a1)+1) >> 3; - s += BYTE_MUL_RGB16_32(*dest32, sa); - } - } else { - if (a1 < 255) - s += BYTE_MUL_RGB16(dst[0], 255 - a1); - if (a2 < 255) - s += BYTE_MUL_RGB16(dst[1], 255 - a2) << 16; - } - - *dest32 = s; - src += 2; - dst += 2; - } - } - } - const int tail = length & 0x1; - if (tail) { - const quint8 alpha = qAlpha(*src); - if (alpha) { - quint16 s = convert_argb32_to_rgb16(*src); - if (alpha < 255) - s += BYTE_MUL_RGB16(*dst, 255 - alpha); - *dst = s; + quint32 spix = src[x]; + quint32 alpha = spix >> 24; + + if (alpha == 255) { + dst[x] = convert_argb32_to_rgb16(spix); + } else if (alpha != 0) { + quint32 dpix = dst[x]; + + quint32 sia = 255 - alpha; + + quint32 sr = (spix >> 8) & 0xf800; + quint32 sg = (spix >> 5) & 0x07e0; + quint32 sb = (spix >> 3) & 0x001f; + + quint32 dr = (dpix & 0x0000f800); + quint32 dg = (dpix & 0x000007e0); + quint32 db = (dpix & 0x0000001f); + + quint32 siar = dr * sia; + quint32 siag = dg * sia; + quint32 siab = db * sia; + + quint32 rr = sr + ((siar + (siar>>8) + (0x80 << 8)) >> 8); + quint32 rg = sg + ((siag + (siag>>8) + (0x80 << 3)) >> 8); + quint32 rb = sb + ((siab + (siab>>8) + (0x80 >> 3)) >> 8); + + dst[x] = (rr & 0xf800) + | (rg & 0x07e0) + | (rb); } - ++dst; - ++src; } - dst += dstExtraStride; - src += srcExtraStride; + dst = (quint16 *) (((uchar *) dst) + dbpl); + src = (quint32 *) (((uchar *) src) + sbpl); } - } diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index efdc778..c11837a 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -370,7 +370,7 @@ Q_STATIC_TEMPLATE_FUNCTION void QT_FASTCALL destStore(QRasterBuffer *rasterBuffe Q_TEMPLATE_FIX(DST)) { DST *dest = reinterpret_cast<DST*>(rasterBuffer->scanLine(y)) + x; - const quint32 *src = reinterpret_cast<const quint32*>(buffer); + const quint32p *src = reinterpret_cast<const quint32p*>(buffer); while (length--) *dest++ = DST(*src++); } @@ -4763,7 +4763,7 @@ void QT_FASTCALL blendUntransformed(int count, const QSpan *spans, void *userDat static void blend_untransformed_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_RGB888) @@ -4777,7 +4777,7 @@ static void blend_untransformed_rgb888(int count, const QSpan *spans, static void blend_untransformed_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -4793,7 +4793,7 @@ static void blend_untransformed_argb6666(int count, const QSpan *spans, static void blend_untransformed_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -4809,7 +4809,7 @@ static void blend_untransformed_rgb666(int count, const QSpan *spans, static void blend_untransformed_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -4825,7 +4825,7 @@ static void blend_untransformed_argb8565(int count, const QSpan *spans, static void blend_untransformed_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -4841,7 +4841,7 @@ static void blend_untransformed_rgb565(int count, const QSpan *spans, static void blend_untransformed_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -4857,7 +4857,7 @@ static void blend_untransformed_argb8555(int count, const QSpan *spans, static void blend_untransformed_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -4873,7 +4873,7 @@ static void blend_untransformed_rgb555(int count, const QSpan *spans, static void blend_untransformed_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -4889,7 +4889,7 @@ static void blend_untransformed_argb4444(int count, const QSpan *spans, static void blend_untransformed_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -5084,7 +5084,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTiled(int count, const QSpan *spans, void * static void blend_tiled_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_RGB888) @@ -5097,7 +5097,7 @@ static void blend_tiled_rgb888(int count, const QSpan *spans, void *userData) static void blend_tiled_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -5112,7 +5112,7 @@ static void blend_tiled_argb6666(int count, const QSpan *spans, void *userData) static void blend_tiled_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -5127,7 +5127,7 @@ static void blend_tiled_rgb666(int count, const QSpan *spans, void *userData) static void blend_tiled_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -5142,7 +5142,7 @@ static void blend_tiled_argb8565(int count, const QSpan *spans, void *userData) static void blend_tiled_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -5157,7 +5157,7 @@ static void blend_tiled_rgb565(int count, const QSpan *spans, void *userData) static void blend_tiled_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -5172,7 +5172,7 @@ static void blend_tiled_argb8555(int count, const QSpan *spans, void *userData) static void blend_tiled_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -5187,7 +5187,7 @@ static void blend_tiled_rgb555(int count, const QSpan *spans, void *userData) static void blend_tiled_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -5202,7 +5202,7 @@ static void blend_tiled_argb4444(int count, const QSpan *spans, void *userData) static void blend_tiled_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -5599,7 +5599,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTransformedBilinear(int count, const QSpan static void blend_transformed_bilinear_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_RGB888) @@ -5612,7 +5612,7 @@ static void blend_transformed_bilinear_rgb888(int count, const QSpan *spans, voi static void blend_transformed_bilinear_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -5627,7 +5627,7 @@ static void blend_transformed_bilinear_argb6666(int count, const QSpan *spans, v static void blend_transformed_bilinear_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -5642,7 +5642,7 @@ static void blend_transformed_bilinear_rgb666(int count, const QSpan *spans, voi static void blend_transformed_bilinear_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -5658,7 +5658,7 @@ static void blend_transformed_bilinear_argb8565(int count, const QSpan *spans, v static void blend_transformed_bilinear_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_RGB16) @@ -5673,7 +5673,7 @@ static void blend_transformed_bilinear_rgb565(int count, const QSpan *spans, static void blend_transformed_bilinear_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -5688,7 +5688,7 @@ static void blend_transformed_bilinear_argb8555(int count, const QSpan *spans, v static void blend_transformed_bilinear_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -5703,7 +5703,7 @@ static void blend_transformed_bilinear_rgb555(int count, const QSpan *spans, voi static void blend_transformed_bilinear_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -5718,7 +5718,7 @@ static void blend_transformed_bilinear_argb4444(int count, const QSpan *spans, v static void blend_transformed_bilinear_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -6195,7 +6195,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTransformed(int count, const QSpan *spans, static void blend_transformed_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_RGB888) @@ -6209,7 +6209,7 @@ static void blend_transformed_rgb888(int count, const QSpan *spans, static void blend_transformed_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -6225,7 +6225,7 @@ static void blend_transformed_argb6666(int count, const QSpan *spans, static void blend_transformed_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -6241,7 +6241,7 @@ static void blend_transformed_rgb666(int count, const QSpan *spans, static void blend_transformed_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -6257,7 +6257,7 @@ static void blend_transformed_argb8565(int count, const QSpan *spans, static void blend_transformed_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -6273,7 +6273,7 @@ static void blend_transformed_rgb565(int count, const QSpan *spans, static void blend_transformed_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -6289,7 +6289,7 @@ static void blend_transformed_argb8555(int count, const QSpan *spans, static void blend_transformed_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -6305,7 +6305,7 @@ static void blend_transformed_rgb555(int count, const QSpan *spans, static void blend_transformed_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -6321,7 +6321,7 @@ static void blend_transformed_argb4444(int count, const QSpan *spans, static void blend_transformed_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -6619,7 +6619,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTransformedTiled(int count, const QSpan *sp static void blend_transformed_tiled_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_RGB888) @@ -6633,7 +6633,7 @@ static void blend_transformed_tiled_rgb888(int count, const QSpan *spans, static void blend_transformed_tiled_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -6649,7 +6649,7 @@ static void blend_transformed_tiled_argb6666(int count, const QSpan *spans, static void blend_transformed_tiled_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -6665,7 +6665,7 @@ static void blend_transformed_tiled_rgb666(int count, const QSpan *spans, static void blend_transformed_tiled_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -6681,7 +6681,7 @@ static void blend_transformed_tiled_argb8565(int count, const QSpan *spans, static void blend_transformed_tiled_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -6697,7 +6697,7 @@ static void blend_transformed_tiled_rgb565(int count, const QSpan *spans, static void blend_transformed_tiled_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -6713,7 +6713,7 @@ static void blend_transformed_tiled_argb8555(int count, const QSpan *spans, static void blend_transformed_tiled_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -6729,7 +6729,7 @@ static void blend_transformed_tiled_rgb555(int count, const QSpan *spans, static void blend_transformed_tiled_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -6745,7 +6745,7 @@ static void blend_transformed_tiled_argb4444(int count, const QSpan *spans, static void blend_transformed_tiled_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast<QSpanData *>(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) diff --git a/src/gui/painting/qmemrotate.cpp b/src/gui/painting/qmemrotate.cpp index 7ad0e42..4058143 100644 --- a/src/gui/painting/qmemrotate.cpp +++ b/src/gui/painting/qmemrotate.cpp @@ -537,6 +537,7 @@ QT_IMPL_MEMROTATE(quint32, quint24) QT_IMPL_MEMROTATE(quint32, quint18) QT_IMPL_MEMROTATE(quint32, quint8) QT_IMPL_MEMROTATE(quint16, quint8) +QT_IMPL_MEMROTATE(qrgb444, quint8) QT_IMPL_MEMROTATE(quint8, quint8) #ifdef QT_QWS_DEPTH_GENERIC QT_IMPL_MEMROTATE(quint32, qrgb_generic16) diff --git a/src/gui/painting/qmemrotate_p.h b/src/gui/painting/qmemrotate_p.h index bd6006b..c1eb93e 100644 --- a/src/gui/painting/qmemrotate_p.h +++ b/src/gui/painting/qmemrotate_p.h @@ -90,6 +90,7 @@ QT_DECL_MEMROTATE(quint32, quint24); QT_DECL_MEMROTATE(quint32, quint18); QT_DECL_MEMROTATE(quint32, quint8); QT_DECL_MEMROTATE(quint16, quint8); +QT_DECL_MEMROTATE(qrgb444, quint8); QT_DECL_MEMROTATE(quint8, quint8); #ifdef QT_QWS_DEPTH_GENERIC QT_DECL_MEMROTATE(quint32, qrgb_generic16); diff --git a/src/gui/painting/qpaintengine.cpp b/src/gui/painting/qpaintengine.cpp index ad09060..7de1ec4 100644 --- a/src/gui/painting/qpaintengine.cpp +++ b/src/gui/painting/qpaintengine.cpp @@ -949,8 +949,8 @@ void QPaintEngine::setSystemClip(const QRegion ®ion) Q_D(QPaintEngine); d->systemClip = region; // Be backward compatible and only call d->systemStateChanged() - // if we currently have a system transform set. - if (d->hasSystemTransform) { + // if we currently have a system transform/viewport set. + if (d->hasSystemTransform || d->hasSystemViewport) { d->transformSystemClip(); d->systemStateChanged(); } diff --git a/src/gui/painting/qpaintengine_p.h b/src/gui/painting/qpaintengine_p.h index eeba7ec..0b5e175 100644 --- a/src/gui/painting/qpaintengine_p.h +++ b/src/gui/painting/qpaintengine_p.h @@ -83,10 +83,12 @@ public: if (systemClip.isEmpty()) return; - if (systemTransform.type() <= QTransform::TxTranslate) - systemClip.translate(qRound(systemTransform.dx()), qRound(systemTransform.dy())); - else - systemClip = systemTransform.map(systemClip); + if (hasSystemTransform) { + if (systemTransform.type() <= QTransform::TxTranslate) + systemClip.translate(qRound(systemTransform.dx()), qRound(systemTransform.dy())); + else + systemClip = systemTransform.map(systemClip); + } // Make sure we're inside the viewport. if (hasSystemViewport) { @@ -101,7 +103,7 @@ public: inline void setSystemTransform(const QTransform &xform) { systemTransform = xform; - if ((hasSystemTransform = !xform.isIdentity())) + if ((hasSystemTransform = !xform.isIdentity()) || hasSystemViewport) transformSystemClip(); systemStateChanged(); } diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index addd63d..ba1e27c 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -1140,6 +1140,33 @@ void QRasterPaintEnginePrivate::updateMatrixData(QSpanData *spanData, const QBru } } +// #define QT_CLIPPING_RATIOS + +#ifdef QT_CLIPPING_RATIOS +int rectClips; +int regionClips; +int totalClips; + +static void checkClipRatios(QRasterPaintEnginePrivate *d) +{ + if (d->clip()->hasRectClip) + rectClips++; + if (d->clip()->hasRegionClip) + regionClips++; + totalClips++; + + if ((totalClips % 5000) == 0) { + printf("Clipping ratio: rectangular=%f%%, region=%f%%, complex=%f%%\n", + rectClips * 100.0 / (qreal) totalClips, + regionClips * 100.0 / (qreal) totalClips, + (totalClips - rectClips - regionClips) * 100.0 / (qreal) totalClips); + totalClips = 0; + rectClips = 0; + regionClips = 0; + } + +} +#endif /*! \internal @@ -1241,6 +1268,10 @@ void QRasterPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op) d->solid_color_filler.clip = d->clip(); d->solid_color_filler.adjustSpanMethods(); + +#ifdef QT_CLIPPING_RATIOS + checkClipRatios(d); +#endif } @@ -1315,6 +1346,11 @@ void QRasterPaintEngine::clip(const QRect &rect, Qt::ClipOperation op) d->solid_color_filler.clip = d->clip(); d->solid_color_filler.adjustSpanMethods(); + + +#ifdef QT_CLIPPING_RATIOS + checkClipRatios(d); +#endif } /*! @@ -4369,6 +4405,9 @@ void QClipData::fixup() */ void QClipData::setClipRect(const QRect &rect) { + if (rect == clipRect) + return; + // qDebug() << "setClipRect" << clipSpanHeight << count << allocated << rect; hasRectClip = true; clipRect = rect; @@ -4378,6 +4417,11 @@ void QClipData::setClipRect(const QRect &rect) ymin = qMin(rect.y(), clipSpanHeight); ymax = qMin(rect.y() + rect.height(), clipSpanHeight); + if (m_spans) { + delete m_spans; + m_spans = 0; + } + // qDebug() << xmin << xmax << ymin << ymax; } @@ -4401,6 +4445,12 @@ void QClipData::setClipRegion(const QRegion ®ion) ymin = rect.y(); ymax = rect.y() + rect.height(); } + + if (m_spans) { + delete m_spans; + m_spans = 0; + } + } /*! diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 2fa6a56..65d87fa 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -1484,7 +1484,9 @@ void QPainter::initFrom(const QWidget *widget) d->state->bgBrush = pal.brush(widget->backgroundRole()); d->state->deviceFont = QFont(widget->font(), const_cast<QWidget*> (widget)); d->state->font = d->state->deviceFont; - if (d->engine) { + if (d->extended) { + d->extended->penChanged(); + } else if (d->engine) { d->engine->setDirty(QPaintEngine::DirtyPen); d->engine->setDirty(QPaintEngine::DirtyBrush); d->engine->setDirty(QPaintEngine::DirtyFont); @@ -5165,6 +5167,9 @@ void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm) Q_D(QPainter); + if (!d->engine) + return; + #ifndef QT_NO_DEBUG qt_painter_thread_test(d->device->devType(), "drawPixmap()"); #endif @@ -5174,9 +5179,6 @@ void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm) return; } - if (!d->engine) - return; - qreal x = p.x(); qreal y = p.y(); diff --git a/src/gui/painting/qprintengine_win.cpp b/src/gui/painting/qprintengine_win.cpp index c8674b7..7601beb 100644 --- a/src/gui/painting/qprintengine_win.cpp +++ b/src/gui/painting/qprintengine_win.cpp @@ -1532,7 +1532,7 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const value = rect; } else { value = QTransform(1/d->stretch_x, 0, 0, 1/d->stretch_y, 0, 0) - .mapRect(d->fullPage ? d->devPaperRect : d->devPageRect); + .mapRect(d->fullPage ? d->devPhysicalPageRect : d->devPageRect); } break; diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp index 39e429d..af27fd5 100644 --- a/src/gui/painting/qtransform.cpp +++ b/src/gui/painting/qtransform.cpp @@ -1880,7 +1880,7 @@ const QMatrix &QTransform::toAffine() const QTransform::TransformationType QTransform::type() const { if (m_dirty >= m_type) { - if (m_dirty > TxShear && (!qFuzzyCompare(m_13 + 1, 1) || !qFuzzyCompare(m_23 + 1, 1))) + if (m_dirty > TxShear && (!qFuzzyCompare(m_13 + 1, 1) || !qFuzzyCompare(m_23 + 1, 1) || !qFuzzyCompare(m_33, 1))) m_type = TxProject; else if (m_dirty > TxScale && (!qFuzzyCompare(affine._m12 + 1, 1) || !qFuzzyCompare(affine._m21 + 1, 1))) { const qreal dot = affine._m11 * affine._m12 + affine._m21 * affine._m22; @@ -1888,7 +1888,7 @@ QTransform::TransformationType QTransform::type() const m_type = TxRotate; else m_type = TxShear; - } else if (m_dirty > TxTranslate && (!qFuzzyCompare(affine._m11, 1) || !qFuzzyCompare(affine._m22, 1) || !qFuzzyCompare(m_33, 1))) + } else if (m_dirty > TxTranslate && (!qFuzzyCompare(affine._m11, 1) || !qFuzzyCompare(affine._m22, 1))) m_type = TxScale; else if (m_dirty > TxNone && (!qFuzzyCompare(affine._dx + 1, 1) || !qFuzzyCompare(affine._dy + 1, 1))) m_type = TxTranslate; diff --git a/src/gui/styles/gtksymbols.cpp b/src/gui/styles/gtksymbols.cpp index acb8437..0842ec7 100644 --- a/src/gui/styles/gtksymbols.cpp +++ b/src/gui/styles/gtksymbols.cpp @@ -746,9 +746,9 @@ static void setupGtkFileChooser(GtkWidget* gtkFileChooser, QWidget *parent, foreach (const QString &rawfilter, filters) { GtkFileFilter *gtkFilter = QGtk::gtk_file_filter_new (); QString name = rawfilter.left(rawfilter.indexOf(QLatin1Char('('))); - QGtk::gtk_file_filter_set_name(gtkFilter, qPrintable(name)); - QStringList extensions = extract_filter(rawfilter); + QGtk::gtk_file_filter_set_name(gtkFilter, qPrintable(name.isEmpty() ? extensions.join(QLS(", ")) : name)); + foreach (const QString &fileExtension, extensions) { QGtk::gtk_file_filter_add_pattern (gtkFilter, qPrintable(fileExtension)); } diff --git a/src/gui/styles/qcommonstyle.cpp b/src/gui/styles/qcommonstyle.cpp index 3cae08a..819965b 100644 --- a/src/gui/styles/qcommonstyle.cpp +++ b/src/gui/styles/qcommonstyle.cpp @@ -1779,7 +1779,46 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, case CE_TabBarTab: if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { drawControl(CE_TabBarTabShape, tab, p, widget); - drawControl(CE_TabBarTabLabel, tab, p, widget); + + QStyleOptionTabV3 tabV3(*tab); + QRect labelRect = tabV3.rect; + QSize &left= tabV3.leftButtonSize; + QSize &right = tabV3.rightButtonSize; + const int spacing = 6 + 2; + + // left widget + if (!left.isEmpty()) { + if (tabV3.shape == QTabBar::RoundedEast || tabV3.shape == QTabBar::TriangularEast ) + labelRect.setTop(labelRect.top() + spacing + left.height()); + else if (tabV3.shape == QTabBar::RoundedWest|| tabV3.shape == QTabBar::TriangularWest) + labelRect.setBottom(labelRect.bottom() - spacing - left.height()); + else + labelRect.setLeft(labelRect.left() + spacing + left.width()); + } + + // right widget + if (!right.isEmpty()) { + if (tabV3.shape == QTabBar::RoundedEast || tabV3.shape == QTabBar::TriangularEast ) + labelRect.setBottom(labelRect.bottom() - spacing - right.height()); + else if (tabV3.shape == QTabBar::RoundedWest|| tabV3.shape == QTabBar::TriangularWest) + labelRect.setTop(labelRect.top() + spacing + right.height()); + else + labelRect.setRight(labelRect.right() - spacing - right.width()); + } + + tabV3.rect = visualRect(opt->direction, opt->rect, labelRect); + drawControl(CE_TabBarTabLabel, &tabV3, p, widget); + if (tabV3.state & State_HasFocus) { + const int OFFSET = 1 + pixelMetric(PM_DefaultFrameWidth); + int x1, x2; + x1 = tab->rect.left(); + x2 = tab->rect.right() - 1; + QStyleOptionFocusRect fropt; + fropt.QStyleOption::operator=(*tab); + fropt.rect.setRect(x1 + 1 + OFFSET, tab->rect.y() + OFFSET, + x2 - x1 - 2*OFFSET, tab->rect.height() - 2*OFFSET); + drawPrimitive(PE_FrameFocusRect, &fropt, p, widget); + } } break; case CE_TabBarTabShape: @@ -1981,12 +2020,8 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, (tabV2.state & State_Enabled) ? QIcon::Normal : QIcon::Disabled); - int offset = 4; + int offset = 6; int left = opt->rect.left(); - if (tabV2.leftButtonSize.isEmpty()) - offset += 2; - else - left += tabV2.leftButtonSize.width() + (6 + 2) + 2; QRect iconRect = QRect(left + offset, tr.center().y() - tabIcon.height() / 2, tabIconSize.width(), tabIconSize.height()); if (!verticalTabs) @@ -1997,20 +2032,6 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, drawItemText(p, tr, alignment, tab->palette, tab->state & State_Enabled, tab->text, QPalette::WindowText); if (verticalTabs) p->restore(); - - if (tabV2.state & State_HasFocus) { - const int OFFSET = 1 + pixelMetric(PM_DefaultFrameWidth); - - int x1, x2; - x1 = tabV2.rect.left(); - x2 = tabV2.rect.right() - 1; - - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*tab); - fropt.rect.setRect(x1 + 1 + OFFSET, tabV2.rect.y() + OFFSET, - x2 - x1 - 2*OFFSET, tabV2.rect.height() - 2*OFFSET); - drawPrimitive(PE_FrameFocusRect, &fropt, p, widget); - } } break; #endif // QT_NO_TABBAR @@ -2858,12 +2879,6 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt, tr.setRight(tr.right() - horizontalShift); } - // left widget - if (!tabV2.leftButtonSize.isEmpty()) { - tr.setLeft(tr.left() + 6 + 2 + - (verticalTabs ? tabV2.leftButtonSize.height() : tabV2.leftButtonSize.width())); - } - // icon if (!tabV2.icon.isNull()) { QSize iconSize = tabV2.iconSize; @@ -2885,12 +2900,6 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt, tr.setLeft(tr.left() + tabIconSize.width() + offset + 2); } - // right widget - if (!tabV2.rightButtonSize.isEmpty()) { - tr.setRight(tr.right() - 6 - 2 - - (verticalTabs ? tabV2.rightButtonSize.height() : tabV2.rightButtonSize.width())); - } - if (!verticalTabs) tr = visualRect(opt->direction, opt->rect, tr); r = tr; diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp index b7fa575..ca71da2 100644 --- a/src/gui/styles/qgtkstyle.cpp +++ b/src/gui/styles/qgtkstyle.cpp @@ -951,14 +951,15 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, "interior-focus", &interior_focus, "focus-line-width", &focus_line_width, NULL); + // See https://bugzilla.mozilla.org/show_bug.cgi?id=405421 for info about this hack + g_object_set_data(G_OBJECT(gtkEntry), "transparent-bg-hint", GINT_TO_POINTER(TRUE)); + if (!interior_focus && option->state & State_HasFocus) rect.adjust(focus_line_width, focus_line_width, -focus_line_width, -focus_line_width); - gtkPainter.paintShadow(gtkEntry, "entry", rect, option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, GTK_SHADOW_IN, gtkEntry->style, option->state & State_HasFocus ? QLS("focus") : QString()); - if (!interior_focus && option->state & State_HasFocus) gtkPainter.paintShadow(gtkEntry, "entry", option->rect, option->state & State_Enabled ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, diff --git a/src/gui/text/qfontdatabase_win.cpp b/src/gui/text/qfontdatabase_win.cpp index c9f5586..780ae28 100644 --- a/src/gui/text/qfontdatabase_win.cpp +++ b/src/gui/text/qfontdatabase_win.cpp @@ -699,6 +699,7 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp, const QFontDef &requ } bool stockFont = false; + bool preferClearTypeAA = false; HFONT hfont = 0; @@ -799,10 +800,12 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp, const QFontDef &requ #endif if (request.styleStrategy & QFont::PreferAntialias) { - if (QSysInfo::WindowsVersion >= QSysInfo::WV_XP) + if (QSysInfo::WindowsVersion >= QSysInfo::WV_XP) { qual = 5; // == CLEARTYPE_QUALITY; - else + preferClearTypeAA = true; + } else { qual = ANTIALIASED_QUALITY; + } } else if (request.styleStrategy & QFont::NoAntialias) { qual = NONANTIALIASED_QUALITY; } @@ -884,6 +887,9 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp, const QFontDef &requ } QFontEngineWin *few = new QFontEngineWin(font_name, hfont, stockFont, lf); + if (preferClearTypeAA) + few->glyphFormat = QFontEngineGlyphCache::Raster_RGBMask; + // Also check for OpenType tables when using complex scripts // ### TODO: This only works for scripts that require OpenType. More generally // for scripts that do not require OpenType we should just look at the list of @@ -1134,7 +1140,7 @@ static void getFamiliesAndSignatures(const QByteArray &fontData, QFontDatabasePr signature.fsUsb[1] = qFromBigEndian<quint32>(table + 46); signature.fsUsb[2] = qFromBigEndian<quint32>(table + 50); signature.fsUsb[3] = qFromBigEndian<quint32>(table + 54); - + signature.fsCsb[0] = qFromBigEndian<quint32>(table + 78); signature.fsCsb[1] = qFromBigEndian<quint32>(table + 82); } diff --git a/src/gui/util/qcompleter.cpp b/src/gui/util/qcompleter.cpp index 7571dfe..a622385 100644 --- a/src/gui/util/qcompleter.cpp +++ b/src/gui/util/qcompleter.cpp @@ -1080,7 +1080,7 @@ void QCompleter::setPopup(QAbstractItemView *popup) popup->hide(); popup->setParent(0, Qt::Popup); - Qt::FocusPolicy origPolicy; + Qt::FocusPolicy origPolicy = Qt::NoFocus; if (d->widget) origPolicy = d->widget->focusPolicy(); popup->setFocusPolicy(Qt::NoFocus); diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index 980c0e0..5940fba 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -265,6 +265,11 @@ bool QHttpNetworkConnectionPrivate::ensureConnection(QAbstractSocket *socket) if (socket->state() != QAbstractSocket::ConnectedState) { // connect to the host if not already connected. int index = indexOf(socket); + // resend this request after we receive the disconnected signal + if (socket->state() == QAbstractSocket::ClosingState) { + channels[index].resendCurrent = true; + return false; + } channels[index].state = ConnectingState; channels[index].pendingEncrypt = encrypt; @@ -982,6 +987,9 @@ void QHttpNetworkConnectionPrivate::_q_disconnected() channels[i].state = ReadingState; if (channels[i].reply) receiveReply(socket, channels[i].reply); + } else if (channels[i].state == IdleState && channels[i].resendCurrent) { + // re-sending request because the socket was in ClosingState + QMetaObject::invokeMethod(q, "_q_startNextRequest", Qt::QueuedConnection); } channels[i].state = IdleState; } diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp index 065a9de..e7d2252 100644 --- a/src/network/socket/qlocalserver_unix.cpp +++ b/src/network/socket/qlocalserver_unix.cpp @@ -148,9 +148,11 @@ void QLocalServerPrivate::closeServer() QT_CLOSE(listenSocket); listenSocket = -1; - if (socketNotifier) + if (socketNotifier) { + socketNotifier->setEnabled(false); // Otherwise, closed socket is checked before deleter runs socketNotifier->deleteLater(); - socketNotifier = 0; + socketNotifier = 0; + } if (!fullServerName.isEmpty()) QFile::remove(fullServerName); diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp index e759d0b..39c9284 100644 --- a/src/network/socket/qlocalsocket_win.cpp +++ b/src/network/socket/qlocalsocket_win.cpp @@ -298,7 +298,7 @@ qint64 QLocalSocketPrivate::bytesAvailable() if (PeekNamedPipe(handle, NULL, 0, NULL, &bytes, NULL)) { return bytes; } else { - if (ERROR_BROKEN_PIPE == GetLastError() && !pipeClosed) { + if (!pipeClosed) { pipeClosed = true; QTimer::singleShot(0, q, SLOT(_q_pipeClosed())); } diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp index 88fd379..ec6e33b 100644 --- a/src/opengl/qpaintengine_opengl.cpp +++ b/src/opengl/qpaintengine_opengl.cpp @@ -3716,8 +3716,14 @@ void QOpenGLPaintEngine::drawRects(const QRectF *rects, int rectCount) d->disableClipping(); GLuint program = qt_gl_program_cache()->getProgram(d->drawable.context(), FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA, 0, true); - QGLRectMaskGenerator maskGenerator(path, d->matrix, d->offscreen, program); - d->addItem(qt_mask_texture_cache()->getMask(maskGenerator, d)); + + if (d->matrix.type() >= QTransform::TxProject) { + QGLPathMaskGenerator maskGenerator(path, d->matrix, d->offscreen, program); + d->addItem(qt_mask_texture_cache()->getMask(maskGenerator, d)); + } else { + QGLRectMaskGenerator maskGenerator(path, d->matrix, d->offscreen, program); + d->addItem(qt_mask_texture_cache()->getMask(maskGenerator, d)); + } d->enableClipping(); } diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp index 837ccf2..b41adf9 100644 --- a/src/opengl/qwindowsurface_gl.cpp +++ b/src/opengl/qwindowsurface_gl.cpp @@ -86,7 +86,7 @@ QT_BEGIN_NAMESPACE // QGLGraphicsSystem // #ifdef Q_WS_WIN -Q_GUI_EXPORT bool qt_win_owndc_required; +extern Q_GUI_EXPORT bool qt_win_owndc_required; #endif QGLGraphicsSystem::QGLGraphicsSystem() : QGraphicsSystem() diff --git a/src/plugins/gfxdrivers/directfb/directfb.pro b/src/plugins/gfxdrivers/directfb/directfb.pro index 89a289c..1ee9030 100644 --- a/src/plugins/gfxdrivers/directfb/directfb.pro +++ b/src/plugins/gfxdrivers/directfb/directfb.pro @@ -3,7 +3,7 @@ include(../../qpluginbase.pri) QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/gfxdrivers -# These defines might be necessary if your DirectFB driver doesn't +# These defines might be necessary if your DirectFB driver doesn't # support all of the DirectFB API. # #DEFINES += QT_NO_DIRECTFB_WM @@ -14,6 +14,8 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/gfxdrivers #DEFINES += QT_NO_DIRECTFB_KEYBOARD #DEFINES += QT_DIRECTFB_TIMING #DEFINES += QT_NO_DIRECTFB_OPAQUE_DETECTION +#DEFINES += QT_DIRECTFB_WARN_ON_RASTERFALLBACKS +#DEFINES += QT_DIRECTFB_DISABLE_RASTERFALLBACKS target.path = $$[QT_INSTALL_PLUGINS]/gfxdrivers INSTALLS += target diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp index cd19f69..368b9f9 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp @@ -173,6 +173,22 @@ void QDirectFBKeyboardHandlerPrivate::readKeyboardData() Qt::KeyboardModifiers modifiers = Qt::NoModifier; + // Not implemented: + // if (input.modifiers & DIMM_SUPER) + // if (input.modifiers & DIMM_HYPER) + + if (!(input.flags & DIEF_KEYSYMBOL) || + !(input.flags & DIEF_KEYID) || + !(input.type & (DIET_KEYPRESS|DIET_KEYRELEASE))) + { + static bool first = true; + if (first) { + qWarning("QDirectFBKeyboardHandler - Getting unexpected non-keyboard related events"); + first = false; + } + break; + } + if (input.flags & DIEF_MODIFIERS) { if (input.modifiers & DIMM_SHIFT) modifiers |= Qt::ShiftModifier; @@ -185,31 +201,15 @@ void QDirectFBKeyboardHandlerPrivate::readKeyboardData() if (input.modifiers & DIMM_META) modifiers |= Qt::MetaModifier; } - // Not implemented: - // if (input.modifiers & DIMM_SUPER) - // if (input.modifiers & DIMM_HYPER) - if ( !(input.flags & DIEF_KEYSYMBOL) || - !(input.flags & DIEF_KEYID) || - !(input.type & (DIET_KEYPRESS | DIET_KEYRELEASE)) ) - { - static int warningCount = 0; - if (!warningCount) { - qWarning("QDirectFBKeyboardHandler - Getting unexpected non-keyboard related events"); - warningCount = 100; - } - else - warningCount--; - break; - } - bool press = input.type & DIET_KEYPRESS; + const bool press = input.type & DIET_KEYPRESS; DFBInputDeviceKeySymbol symbol = input.key_symbol; int unicode = -1; int keycode = 0; keycode = keymap()->value(symbol); - if (keycode == 0 && DFB_KEY_TYPE(symbol) == DIKT_UNICODE) + if (DFB_KEY_TYPE(symbol) == DIKT_UNICODE) unicode = symbol; if (unicode != -1 || keycode != 0) { @@ -314,6 +314,100 @@ KeyMap::KeyMap() insert(DIKS_DEAD_SEMIVOICED_SOUND , Qt::Key_Dead_Semivoiced_Sound); insert(DIKS_DEAD_TILDE , Qt::Key_Dead_Tilde); insert(DIKS_DEAD_VOICED_SOUND , Qt::Key_Dead_Voiced_Sound); + insert(DIKS_SPACE , Qt::Key_Space); + insert(DIKS_EXCLAMATION_MARK , Qt::Key_Exclam); + insert(DIKS_QUOTATION , Qt::Key_QuoteDbl); + insert(DIKS_NUMBER_SIGN , Qt::Key_NumberSign); + insert(DIKS_DOLLAR_SIGN , Qt::Key_Dollar); + insert(DIKS_PERCENT_SIGN , Qt::Key_Percent); + insert(DIKS_AMPERSAND , Qt::Key_Ampersand); + insert(DIKS_APOSTROPHE , Qt::Key_Apostrophe); + insert(DIKS_PARENTHESIS_LEFT , Qt::Key_ParenLeft); + insert(DIKS_PARENTHESIS_RIGHT , Qt::Key_ParenRight); + insert(DIKS_ASTERISK , Qt::Key_Asterisk); + insert(DIKS_PLUS_SIGN , Qt::Key_Plus); + insert(DIKS_COMMA , Qt::Key_Comma); + insert(DIKS_MINUS_SIGN , Qt::Key_Minus); + insert(DIKS_PERIOD , Qt::Key_Period); + insert(DIKS_SLASH , Qt::Key_Slash); + insert(DIKS_0 , Qt::Key_0); + insert(DIKS_1 , Qt::Key_1); + insert(DIKS_2 , Qt::Key_2); + insert(DIKS_3 , Qt::Key_3); + insert(DIKS_4 , Qt::Key_4); + insert(DIKS_5 , Qt::Key_5); + insert(DIKS_6 , Qt::Key_6); + insert(DIKS_7 , Qt::Key_7); + insert(DIKS_8 , Qt::Key_8); + insert(DIKS_9 , Qt::Key_9); + insert(DIKS_COLON , Qt::Key_Colon); + insert(DIKS_SEMICOLON , Qt::Key_Semicolon); + insert(DIKS_LESS_THAN_SIGN , Qt::Key_Less); + insert(DIKS_EQUALS_SIGN , Qt::Key_Equal); + insert(DIKS_GREATER_THAN_SIGN , Qt::Key_Greater); + insert(DIKS_QUESTION_MARK , Qt::Key_Question); + insert(DIKS_AT , Qt::Key_At); + insert(DIKS_CAPITAL_A , Qt::Key_A); + insert(DIKS_CAPITAL_B , Qt::Key_B); + insert(DIKS_CAPITAL_C , Qt::Key_C); + insert(DIKS_CAPITAL_D , Qt::Key_D); + insert(DIKS_CAPITAL_E , Qt::Key_E); + insert(DIKS_CAPITAL_F , Qt::Key_F); + insert(DIKS_CAPITAL_G , Qt::Key_G); + insert(DIKS_CAPITAL_H , Qt::Key_H); + insert(DIKS_CAPITAL_I , Qt::Key_I); + insert(DIKS_CAPITAL_J , Qt::Key_J); + insert(DIKS_CAPITAL_K , Qt::Key_K); + insert(DIKS_CAPITAL_L , Qt::Key_L); + insert(DIKS_CAPITAL_M , Qt::Key_M); + insert(DIKS_CAPITAL_N , Qt::Key_N); + insert(DIKS_CAPITAL_O , Qt::Key_O); + insert(DIKS_CAPITAL_P , Qt::Key_P); + insert(DIKS_CAPITAL_Q , Qt::Key_Q); + insert(DIKS_CAPITAL_R , Qt::Key_R); + insert(DIKS_CAPITAL_S , Qt::Key_S); + insert(DIKS_CAPITAL_T , Qt::Key_T); + insert(DIKS_CAPITAL_U , Qt::Key_U); + insert(DIKS_CAPITAL_V , Qt::Key_V); + insert(DIKS_CAPITAL_W , Qt::Key_W); + insert(DIKS_CAPITAL_X , Qt::Key_X); + insert(DIKS_CAPITAL_Y , Qt::Key_Y); + insert(DIKS_CAPITAL_Z , Qt::Key_Z); + insert(DIKS_SQUARE_BRACKET_LEFT , Qt::Key_BracketLeft); + insert(DIKS_BACKSLASH , Qt::Key_Backslash); + insert(DIKS_SQUARE_BRACKET_RIGHT , Qt::Key_BracketRight); + insert(DIKS_CIRCUMFLEX_ACCENT , Qt::Key_AsciiCircum); + insert(DIKS_UNDERSCORE , Qt::Key_Underscore); + insert(DIKS_SMALL_A , Qt::Key_A); + insert(DIKS_SMALL_B , Qt::Key_B); + insert(DIKS_SMALL_C , Qt::Key_C); + insert(DIKS_SMALL_D , Qt::Key_D); + insert(DIKS_SMALL_E , Qt::Key_E); + insert(DIKS_SMALL_F , Qt::Key_F); + insert(DIKS_SMALL_G , Qt::Key_G); + insert(DIKS_SMALL_H , Qt::Key_H); + insert(DIKS_SMALL_I , Qt::Key_I); + insert(DIKS_SMALL_J , Qt::Key_J); + insert(DIKS_SMALL_K , Qt::Key_K); + insert(DIKS_SMALL_L , Qt::Key_L); + insert(DIKS_SMALL_M , Qt::Key_M); + insert(DIKS_SMALL_N , Qt::Key_N); + insert(DIKS_SMALL_O , Qt::Key_O); + insert(DIKS_SMALL_P , Qt::Key_P); + insert(DIKS_SMALL_Q , Qt::Key_Q); + insert(DIKS_SMALL_R , Qt::Key_R); + insert(DIKS_SMALL_S , Qt::Key_S); + insert(DIKS_SMALL_T , Qt::Key_T); + insert(DIKS_SMALL_U , Qt::Key_U); + insert(DIKS_SMALL_V , Qt::Key_V); + insert(DIKS_SMALL_W , Qt::Key_W); + insert(DIKS_SMALL_X , Qt::Key_X); + insert(DIKS_SMALL_Y , Qt::Key_Y); + insert(DIKS_SMALL_Z , Qt::Key_Z); + insert(DIKS_CURLY_BRACKET_LEFT , Qt::Key_BraceLeft); + insert(DIKS_VERTICAL_BAR , Qt::Key_Bar); + insert(DIKS_CURLY_BRACKET_RIGHT , Qt::Key_BraceRight); + insert(DIKS_TILDE , Qt::Key_AsciiTilde); } #include "qdirectfbkeyboard.moc" diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp index 2a2ef5c..924090c 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp @@ -56,23 +56,16 @@ IDirectFBSurface *QDirectFBPaintDevice::directFBSurface() const } -// Locks the dfb surface and creates a QImage (lockedImage) from the pointer -void QDirectFBPaintDevice::lockDirectFB() { - +void QDirectFBPaintDevice::lockDirectFB() +{ if (lockedImage) return; // Already locked - void *mem; - int w, h; - DFBResult result = dfbSurface->Lock(dfbSurface, DSLF_WRITE, &mem, &bpl); - if (result != DFB_OK || !mem) { - DirectFBError("QDirectFBPixmapData::buffer()", result); - return; + if (uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl)) { + const QSize s = size(); + lockedImage = new QImage(mem, s.width(), s.height(), bpl, + QDirectFBScreen::getImageFormat(dfbSurface)); } - - dfbSurface->GetSize(dfbSurface, &w, &h); - lockedImage = new QImage(static_cast<uchar*>(mem), w, h, bpl, - QDirectFBScreen::getImageFormat(dfbSurface)); } diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp index d9346fd..ba5d71a 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -54,6 +54,70 @@ #include <private/qpixmapdata_p.h> #include <private/qpixmap_raster_p.h> +#ifdef QT_DIRECTFB_WARN_ON_RASTERFALLBACKS +template <typename T> inline const T *ptr(const T &t) { return &t; } +template <> inline const bool* ptr<bool>(const bool &) { return 0; } +template <typename device, typename T1, typename T2, typename T3> +static void rasterFallbackWarn(const char *msg, const char *func, const device *dev, + bool matrixScale, bool matrixRotShear, bool simplePen, + bool dfbHandledClip, bool forceRasterPrimitives, + const char *nameOne, const T1 &one, + const char *nameTwo, const T2 &two, + const char *nameThree, const T3 &three) +{ + QString out; + QDebug dbg(&out); + dbg << msg << (QByteArray(func) + "()") << "painting on"; + if (dev->devType() == QInternal::Widget) { + dbg << static_cast<const QWidget*>(dev); + } else { + dbg << dev << "of type" << dev->devType(); + } + + dbg << "matrixScale" << matrixScale + << "matrixRotShear" << matrixRotShear + << "simplePen" << simplePen + << "dfbHandledClip" << dfbHandledClip + << "forceRasterPrimitives" << forceRasterPrimitives; + + const T1 *t1 = ptr(one); + const T2 *t2 = ptr(two); + const T3 *t3 = ptr(three); + + if (t1) { + dbg << nameOne << *t1; + if (t2) { + dbg << nameTwo << *t2; + if (t3) { + dbg << nameThree << *t3; + } + } + } + qWarning("%s", qPrintable(out)); +} +#endif + +#if defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS && defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS +#define RASTERFALLBACK(one, two, three) rasterFallbackWarn("Disabled raster engine operation", \ + __FUNCTION__, state()->painter->device(), \ + d_func()->matrixScale, d_func()->matrixRotShear, \ + d_func()->simplePen, d_func()->dfbCanHandleClip(), \ + d_func()->forceRasterPrimitives, \ + #one, one, #two, two, #three, three); \ + return; +#elif defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS +#define RASTERFALLBACK(one, two, three) return; +#elif defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS +#define RASTERFALLBACK(one, two, three) rasterFallbackWarn("Falling back to raster engine for", \ + __FUNCTION__, state()->painter->device(), \ + d_func()->matrixScale, d_func()->matrixRotShear, \ + d_func()->simplePen, d_func()->dfbCanHandleClip(), \ + d_func()->forceRasterPrimitives, \ + #one, one, #two, two, #three, three); +#else +#define RASTERFALLBACK(one, two, three) +#endif + static inline uint ALPHA_MUL(uint x, uint a) { uint t = x * a; @@ -181,20 +245,17 @@ public: IDirectFBSurface *surface; QPen pen; - QBrush brush; bool antialiased; bool forceRasterPrimitives; bool simplePen; - bool simpleBrush; bool matrixRotShear; bool matrixScale; void setTransform(const QTransform &m); void setPen(const QPen &pen); - void setBrush(const QBrush &brush); void setCompositionMode(QPainter::CompositionMode mode); void setOpacity(quint8 value); void setRenderHints(QPainter::RenderHints hints); @@ -207,6 +268,7 @@ public: inline bool dfbCanHandleClip(const QRect &rect) const; inline bool dfbCanHandleClip(const QRectF &rect) const; inline bool dfbCanHandleClip() const; + inline bool isSimpleBrush(const QBrush &brush) const; void drawLines(const QLine *lines, int count) const; void drawLines(const QLineF *lines, int count) const; @@ -217,6 +279,7 @@ public: void fillRects(const QRectF *rects, int count) const; void drawRects(const QRectF *rects, int count) const; + void drawPixmap(const QRectF &dest, const QPixmap &pixmap, const QRectF &src); void drawTiledPixmap(const QRectF &dest, const QPixmap &pixmap); @@ -253,7 +316,7 @@ private: QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p) : surface(0), antialiased(false), forceRasterPrimitives(false), simplePen(false), - simpleBrush(false), matrixRotShear(false), matrixScale(false), lastLockedHeight(-1), + matrixRotShear(false), matrixScale(false), lastLockedHeight(-1), fbWidth(-1), fbHeight(-1), opacity(255), drawFlagsFromCompositionMode(0), blitFlagsFromCompositionMode(0), porterDuffRule(DSPD_SRC_OVER), dirtyClip(true), dfbHandledClip(false), dfbDevice(0), q(p) @@ -287,6 +350,11 @@ bool QDirectFBPaintEnginePrivate::dfbCanHandleClip() const return dfbHandledClip; } +bool QDirectFBPaintEnginePrivate::isSimpleBrush(const QBrush &brush) const +{ + return (brush.style() == Qt::NoBrush) || (brush.style() == Qt::SolidPattern && !antialiased); +} + void QDirectFBPaintEnginePrivate::setClipDirty() { dirtyClip = true; @@ -366,13 +434,6 @@ void QDirectFBPaintEnginePrivate::setPen(const QPen &p) && (pen.widthF() <= 1 && !matrixScale)); } -void QDirectFBPaintEnginePrivate::setBrush(const QBrush &b) -{ - brush = b; - simpleBrush = (brush.style() == Qt::NoBrush) || - (brush.style() == Qt::SolidPattern && !antialiased); -} - void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode mode) { blitFlagsFromCompositionMode = DSBLIT_NOFX; @@ -755,14 +816,6 @@ void QDirectFBPaintEngine::penChanged() QRasterPaintEngine::penChanged(); } -void QDirectFBPaintEngine::brushChanged() -{ - Q_D(QDirectFBPaintEngine); - d->setBrush(state()->brush); - - QRasterPaintEngine::brushChanged(); -} - void QDirectFBPaintEngine::opacityChanged() { Q_D(QDirectFBPaintEngine); @@ -801,7 +854,6 @@ void QDirectFBPaintEngine::setState(QPainterState *s) QRasterPaintEngine::setState(s); d->setClipDirty(); d->setPen(state()->pen); - d->setBrush(state()->brush); d->setOpacity(quint8(state()->opacity * 255)); d->setCompositionMode(state()->compositionMode()); d->setTransform(state()->transform()); @@ -834,8 +886,11 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount) { Q_D(QDirectFBPaintEngine); d->updateClip(); - if (!d->dfbCanHandleClip() || d->matrixRotShear || !d->simpleBrush - || !d->simplePen || d->forceRasterPrimitives) { + const QBrush &brush = state()->brush; + if (!d->dfbCanHandleClip() || d->matrixRotShear + || !d->simplePen || d->forceRasterPrimitives + || !d->isSimpleBrush(brush)) { + RASTERFALLBACK(rectCount, static_cast<bool>(false), static_cast<bool>(false)); d->lock(); QRasterPaintEngine::drawRects(rects, rectCount); return; @@ -843,8 +898,8 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount) d->unlock(); - if (d->brush != Qt::NoBrush) { - d->setDFBColor(d->brush.color()); + if (brush != Qt::NoBrush) { + d->setDFBColor(brush.color()); d->fillRects(rects, rectCount); } if (d->pen != Qt::NoPen) { @@ -857,8 +912,10 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount) { Q_D(QDirectFBPaintEngine); d->updateClip(); - if (!d->dfbCanHandleClip() || d->matrixRotShear || !d->simpleBrush - || !d->simplePen || d->forceRasterPrimitives) { + const QBrush &brush = state()->brush; + if (!d->dfbCanHandleClip() || d->matrixRotShear + || !d->simplePen || d->forceRasterPrimitives + || !d->isSimpleBrush(brush)) { d->lock(); QRasterPaintEngine::drawRects(rects, rectCount); return; @@ -866,8 +923,8 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount) d->unlock(); - if (d->brush != Qt::NoBrush) { - d->setDFBColor(d->brush.color()); + if (brush != Qt::NoBrush) { + d->setDFBColor(brush.color()); d->fillRects(rects, rectCount); } if (d->pen != Qt::NoPen) { @@ -881,6 +938,7 @@ void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount) Q_D(QDirectFBPaintEngine); d->updateClip(); if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) { + RASTERFALLBACK(lineCount, static_cast<bool>(false), static_cast<bool>(false)); d->lock(); QRasterPaintEngine::drawLines(lines, lineCount); return; @@ -898,6 +956,7 @@ void QDirectFBPaintEngine::drawLines(const QLineF *lines, int lineCount) Q_D(QDirectFBPaintEngine); d->updateClip(); if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) { + RASTERFALLBACK(lineCount, static_cast<bool>(false), static_cast<bool>(false)); d->lock(); QRasterPaintEngine::drawLines(lines, lineCount); return; @@ -923,6 +982,7 @@ void QDirectFBPaintEngine::drawImage(const QRectF &r, const QImage &image, || QDirectFBScreen::getSurfacePixelFormat(image.format()) == DSPF_UNKNOWN) #endif { + RASTERFALLBACK(r, image.size(), sr); d->lock(); QRasterPaintEngine::drawImage(r, image, sr, flags); return; @@ -946,9 +1006,11 @@ void QDirectFBPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap, d->updateClip(); if (pixmap.pixmapData()->classId() != QPixmapData::DirectFBClass) { + // not using RASTERFALLBACK since this is the way we do bitmaps? d->lock(); QRasterPaintEngine::drawPixmap(r, pixmap, sr); } else if (!d->dfbCanHandleClip(r) || d->matrixRotShear) { + RASTERFALLBACK(r, pixmap.size(), sr); const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer(); d->lock(); QRasterPaintEngine::drawImage(r, *img, sr); @@ -973,6 +1035,7 @@ void QDirectFBPaintEngine::drawTiledPixmap(const QRectF &r, d->lock(); QRasterPaintEngine::drawTiledPixmap(r, pixmap, sp); } else if (!d->dfbCanHandleClip(r) || d->matrixRotShear || !sp.isNull()) { + RASTERFALLBACK(r, pixmap.size(), sp); const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer(); d->lock(); QRasterPixmapData *data = new QRasterPixmapData(QPixmapData::PixmapType); @@ -995,6 +1058,7 @@ void QDirectFBPaintEngine::stroke(const QVectorPath &path, const QPen &pen) void QDirectFBPaintEngine::drawPath(const QPainterPath &path) { + RASTERFALLBACK(path.boundingRect(), static_cast<bool>(false), static_cast<bool>(false)); Q_D(QDirectFBPaintEngine); d->lock(); QRasterPaintEngine::drawPath(path); @@ -1002,6 +1066,7 @@ void QDirectFBPaintEngine::drawPath(const QPainterPath &path) void QDirectFBPaintEngine::drawPoints(const QPointF *points, int pointCount) { + RASTERFALLBACK(pointCount, static_cast<bool>(false), static_cast<bool>(false)); Q_D(QDirectFBPaintEngine); d->lock(); QRasterPaintEngine::drawPoints(points, pointCount); @@ -1009,6 +1074,7 @@ void QDirectFBPaintEngine::drawPoints(const QPointF *points, int pointCount) void QDirectFBPaintEngine::drawPoints(const QPoint *points, int pointCount) { + RASTERFALLBACK(pointCount, static_cast<bool>(false), static_cast<bool>(false)); Q_D(QDirectFBPaintEngine); d->lock(); QRasterPaintEngine::drawPoints(points, pointCount); @@ -1016,6 +1082,7 @@ void QDirectFBPaintEngine::drawPoints(const QPoint *points, int pointCount) void QDirectFBPaintEngine::drawEllipse(const QRectF &rect) { + RASTERFALLBACK(rect, static_cast<bool>(false), static_cast<bool>(false)); Q_D(QDirectFBPaintEngine); d->lock(); QRasterPaintEngine::drawEllipse(rect); @@ -1024,6 +1091,7 @@ void QDirectFBPaintEngine::drawEllipse(const QRectF &rect) void QDirectFBPaintEngine::drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode) { + RASTERFALLBACK(pointCount, mode, static_cast<bool>(false)); Q_D(QDirectFBPaintEngine); d->lock(); QRasterPaintEngine::drawPolygon(points, pointCount, mode); @@ -1032,6 +1100,7 @@ void QDirectFBPaintEngine::drawPolygon(const QPointF *points, int pointCount, void QDirectFBPaintEngine::drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode) { + RASTERFALLBACK(pointCount, mode, static_cast<bool>(false)); Q_D(QDirectFBPaintEngine); d->lock(); QRasterPaintEngine::drawPolygon(points, pointCount, mode); @@ -1040,6 +1109,7 @@ void QDirectFBPaintEngine::drawPolygon(const QPoint *points, int pointCount, void QDirectFBPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem) { + RASTERFALLBACK(p, textItem.text(), static_cast<bool>(false)); Q_D(QDirectFBPaintEngine); d->lock(); QRasterPaintEngine::drawTextItem(p, textItem); @@ -1047,6 +1117,7 @@ void QDirectFBPaintEngine::drawTextItem(const QPointF &p, void QDirectFBPaintEngine::fill(const QVectorPath &path, const QBrush &brush) { + RASTERFALLBACK(path, brush, static_cast<bool>(false)); Q_D(QDirectFBPaintEngine); d->lock(); QRasterPaintEngine::fill(path, brush); @@ -1080,6 +1151,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush) break; } } + RASTERFALLBACK(rect, brush, static_cast<bool>(false)); d->lock(); QRasterPaintEngine::fillRect(rect, brush); } @@ -1089,6 +1161,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QColor &color) Q_D(QDirectFBPaintEngine); d->updateClip(); if (!d->dfbCanHandleClip() || d->matrixRotShear || d->forceRasterPrimitives) { + RASTERFALLBACK(rect, color, static_cast<bool>(false)); d->lock(); QRasterPaintEngine::fillRect(rect, color); } else { @@ -1105,6 +1178,7 @@ void QDirectFBPaintEngine::drawColorSpans(const QSpan *spans, int count, { Q_D(QDirectFBPaintEngine); if (d->forceRasterPrimitives) { + RASTERFALLBACK(count, color, static_cast<bool>(false)); d->lock(); QRasterPaintEngine::drawColorSpans(spans, count, color); } else { diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h index 3c2cefa..e79ec61 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h @@ -96,7 +96,6 @@ public: virtual void clipEnabledChanged(); virtual void penChanged(); - virtual void brushChanged(); virtual void opacityChanged(); virtual void compositionModeChanged(); virtual void renderHintsChanged(); diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp index 0a1696a..ea9bb3a 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp @@ -157,10 +157,13 @@ static bool checkForAlphaPixels(const QImage &img) return false; } -void QDirectFBPixmapData::fromImage(const QImage &img, +void QDirectFBPixmapData::fromImage(const QImage &i, Qt::ImageConversionFlags flags) { - Q_ASSERT(img.depth() != 1); // these should be handled by QRasterPixmapData +#ifdef QT_NO_DIRECTFB_OPAQUE_DETECTION + Q_UNUSED(flags); +#endif + const QImage img = (i.depth() == 1 ? i.convertToFormat(screen->alphaPixmapFormat()) : i); if (img.hasAlphaChannel() #ifndef QT_NO_DIRECTFB_OPAQUE_DETECTION && (flags & Qt::NoOpaqueDetection || ::checkForAlphaPixels(img)) @@ -267,16 +270,17 @@ void QDirectFBPixmapData::fill(const QColor &color) if (forceRaster) { // in DSPF_RGB32 all dfb drawing causes the Alpha byte to be // set to 0. This causes issues for the raster engine. - char *mem; - int bpl; - const int h = QPixmapData::height(); - dfbSurface->Lock(dfbSurface, DSLF_WRITE, (void**)&mem, &bpl); - const int c = color.rgba(); - for (int i = 0; i < h; ++i) { - memset(mem, c, bpl); - mem += bpl; + uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl); + if (mem) { + const int h = QPixmapData::height(); + const int w = QPixmapData::width() * 4; // 4 bytes per 32 bit pixel + const int c = color.rgba(); + for (int i = 0; i < h; ++i) { + memset(mem, c, w); + mem += bpl; + } + dfbSurface->Unlock(dfbSurface); } - dfbSurface->Unlock(dfbSurface); } else { dfbSurface->Clear(dfbSurface, color.red(), color.green(), color.blue(), color.alpha()); diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp index 041d522..3e54e7f 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp @@ -159,15 +159,17 @@ IDirectFBSurface* QDirectFBScreen::createDFBSurface(const QImage &img, SurfaceCr IDirectFBSurface *surface = createDFBSurface(&desc, options); #ifdef QT_NO_DIRECTFB_PREALLOCATED if (surface) { - char *mem; int bpl; - surface->Lock(surface, DSLF_WRITE, (void**)&mem, &bpl); - const int h = img.height(); - for (int i = 0; i < h; ++i) { - memcpy(mem, img.scanLine(i), bpl); - mem += bpl; + uchar *mem = QDirectFBScreen::lockSurface(surface, DSLF_WRITE, &bpl); + if (mem) { + const int h = img.height(); + const int w = img.width() * img.depth() / 8; + for (int i = 0; i < h; ++i) { + memcpy(mem, img.scanLine(i), w); + mem += bpl; + } + surface->Unlock(surface); } - surface->Unlock(surface); } #endif #ifndef QT_NO_DIRECTFB_PALETTE @@ -317,15 +319,17 @@ IDirectFBSurface *QDirectFBScreen::copyToDFBSurface(const QImage &img, imgSurface->Release(imgSurface); #else // QT_NO_DIRECTFB_PREALLOCATED Q_ASSERT(image.format() == pixmapFormat); - char *mem; int bpl; - dfbSurface->Lock(dfbSurface, DSLF_WRITE, (void**)&mem, &bpl); - const int w = image.width() * image.depth() / 8; - for (int i = 0; i < image.height(); ++i) { - memcpy(mem, image.scanLine(i), w); - mem += bpl; + uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl); + if (mem) { + const int h = image.height(); + const int w = image.width() * image.depth() / 8; + for (int i=0; i<h; ++i) { + memcpy(mem, image.scanLine(i), w); + mem += bpl; + } + dfbSurface->Unlock(dfbSurface); } - dfbSurface->Unlock(dfbSurface); #endif return dfbSurface; } @@ -833,15 +837,15 @@ bool QDirectFBScreen::connect(const QString &displaySpec) description.flags = DFBSurfaceDescriptionFlags(description.flags | DSDESC_WIDTH); if (::setIntOption(displayArgs, QLatin1String("height"), &description.height)) description.flags = DFBSurfaceDescriptionFlags(description.flags | DSDESC_HEIGHT); - description.caps = DFBSurfaceCapabilities(DSCAPS_PRIMARY - | DSCAPS_DOUBLE - | DSCAPS_STATIC_ALLOC); - if (displayArgs.contains(QLatin1String("forcepremultiplied"), - Qt::CaseInsensitive)) { - description.caps = DFBSurfaceCapabilities(description.caps - | DSCAPS_PREMULTIPLIED); + uint caps = DSCAPS_PRIMARY|DSCAPS_DOUBLE; + if (displayArgs.contains(QLatin1String("static_alloc"))) + caps |= DSCAPS_STATIC_ALLOC; + + if (displayArgs.contains(QLatin1String("forcepremultiplied"), Qt::CaseInsensitive)) { + caps |= DSCAPS_PREMULTIPLIED; } + description.caps = DFBSurfaceCapabilities(caps); // We don't track the primary surface as it's released in disconnect d_ptr->dfbSurface = createDFBSurface(&description, DontTrackSurface); if (!d_ptr->dfbSurface) { @@ -952,16 +956,15 @@ void QDirectFBScreen::disconnect() bool QDirectFBScreen::initDevice() { - QWSServer *server = QWSServer::instance(); #ifndef QT_NO_DIRECTFB_MOUSE if (qgetenv("QWS_MOUSE_PROTO").isEmpty()) { - server->setDefaultMouse("None"); + QWSServer::instance()->setDefaultMouse("None"); d_ptr->mouse = new QDirectFBMouseHandler; } #endif #ifndef QT_NO_DIRECTFB_KEYBOARD if (qgetenv("QWS_KEYBOARD").isEmpty()) { - server->setDefaultKeyboard("None"); + QWSServer::instance()->setDefaultKeyboard("None"); d_ptr->keyboard = new QDirectFBKeyboardHandler(QString()); } #endif @@ -1188,23 +1191,23 @@ void QDirectFBScreen::blit(IDirectFBSurface *src, const QPoint &topLeft, points.data(), n); } +// This function is only ever called by QScreen::drawBackground which +// is only ever called by QScreen::compose which is never called with +// DirectFB so it's really a noop. void QDirectFBScreen::solidFill(const QColor &color, const QRegion ®ion) { if (region.isEmpty()) return; if (QDirectFBScreen::getImageFormat(d_ptr->dfbSurface) == QImage::Format_RGB32) { - uchar *mem; - int bpl; - d_ptr->dfbSurface->Lock(d_ptr->dfbSurface, DSLF_WRITE, (void**)&mem, &bpl); - QImage img(mem, w, h, bpl, QImage::Format_RGB32); - QPainter p(&img); - p.setBrush(color); - p.setPen(Qt::NoPen); - const QVector<QRect> rects = region.rects(); - p.drawRects(rects.constData(), rects.size()); - p.end(); + data = QDirectFBScreen::lockSurface(d_ptr->dfbSurface, DSLF_WRITE, &lstep); + if (!data) + return; + + QScreen::solidFill(color, region); d_ptr->dfbSurface->Unlock(d_ptr->dfbSurface); + data = 0; + lstep = 0; } else { d_ptr->dfbSurface->SetColor(d_ptr->dfbSurface, color.red(), color.green(), color.blue(), @@ -1241,3 +1244,15 @@ bool QDirectFBScreen::initSurfaceDescriptionPixelFormat(DFBSurfaceDescription *d } return true; } + +uchar *QDirectFBScreen::lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFlags flags, int *bpl) +{ + void *mem; + const DFBResult result = surface->Lock(surface, flags, static_cast<void**>(&mem), bpl); + if (result != DFB_OK) { + DirectFBError("QDirectFBPixmapData::lockSurface()", result); + } + + return reinterpret_cast<uchar*>(mem); +} + diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h index f394ac1..8dd38dc 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h @@ -127,6 +127,8 @@ public: const QImage &image); #endif + static uchar *lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFlags flags, int *bpl = 0); + private: void compose(const QRegion &r); void blit(IDirectFBSurface *src, const QPoint &topLeft, diff --git a/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp b/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp index 7fdf81f..c7249d3 100644 --- a/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp +++ b/src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp @@ -121,7 +121,7 @@ QSize QSvgIconEngine::actualSize(const QSize &size, QIcon::Mode mode, if (!pm.isNull() && pm.size() == size) return size; } - + QSvgRenderer renderer; d->loadDataForModeAndState(&renderer, mode, state); if (renderer.isValid()) { @@ -158,9 +158,13 @@ void QSvgIconEnginePrivate::loadDataForModeAndState(QSvgRenderer *renderer, QIco QPixmap QSvgIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) -{ +{ QPixmap pm; + QString pmckey(d->pmcKey(size, mode, state)); + if (QPixmapCache::find(pmckey, pm)) + return pm; + if (d->addedPixmaps) { pm = d->addedPixmaps->value(d->hashKey(mode, state)); if (!pm.isNull() && pm.size() == size) @@ -176,10 +180,6 @@ QPixmap QSvgIconEngine::pixmap(const QSize &size, QIcon::Mode mode, if (!actualSize.isNull()) actualSize.scale(size, Qt::KeepAspectRatio); - QString pmckey(d->pmcKey(actualSize, mode, state)); - if (QPixmapCache::find(pmckey, pm)) - return pm; - QImage img(actualSize, QImage::Format_ARGB32_Premultiplied); img.fill(0x00000000); QPainter p(&img); diff --git a/src/plugins/qpluginbase.pri b/src/plugins/qpluginbase.pri index 446efab..ae39021 100644 --- a/src/plugins/qpluginbase.pri +++ b/src/plugins/qpluginbase.pri @@ -1,6 +1,6 @@ TEMPLATE = lib isEmpty(QT_MAJOR_VERSION) { - VERSION=4.5.1 + VERSION=4.5.2 } else { VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION} } diff --git a/src/qbase.pri b/src/qbase.pri index e9da61d..f7c8a95 100644 --- a/src/qbase.pri +++ b/src/qbase.pri @@ -4,7 +4,7 @@ INCLUDEPATH *= $$QMAKE_INCDIR_QT/$$TARGET #just for today to have some compat isEmpty(QT_ARCH):!isEmpty(ARCH):QT_ARCH=$$ARCH #another compat that will rot for change #215700 TEMPLATE = lib isEmpty(QT_MAJOR_VERSION) { - VERSION=4.5.1 + VERSION=4.5.2 } else { VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION} } diff --git a/src/qt3support/dialogs/q3filedialog.cpp b/src/qt3support/dialogs/q3filedialog.cpp index 4874b6d..1ec0cfc 100644 --- a/src/qt3support/dialogs/q3filedialog.cpp +++ b/src/qt3support/dialogs/q3filedialog.cpp @@ -631,6 +631,7 @@ public: protected: void keyPressEvent(QKeyEvent *e); void focusOutEvent(QFocusEvent *e); + void emitDoRename(); signals: void cancelRename(); @@ -1143,16 +1144,20 @@ void QRenameEdit::keyPressEvent(QKeyEvent *e) void QRenameEdit::focusOutEvent(QFocusEvent *) { - if (!doRenameAlreadyEmitted) { - doRenameAlreadyEmitted = true; - emit doRename(); - } + if (!doRenameAlreadyEmitted) + emitDoRename(); } void QRenameEdit::slotReturnPressed() { + emitDoRename(); +} + +void QRenameEdit::emitDoRename() +{ doRenameAlreadyEmitted = true; emit doRename(); + doRenameAlreadyEmitted = false; } /************************************************************************ diff --git a/src/src.pro b/src/src.pro index fb28882..f40c6ad 100644 --- a/src/src.pro +++ b/src/src.pro @@ -13,7 +13,7 @@ wince*:{ contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_tools_uic3 } } -win32:!contains(QT_EDITION, OpenSource|Console): { +win32:{ SRC_SUBDIRS += src_activeqt !wince*: SRC_SUBDIRS += src_tools_idc } diff --git a/src/svg/qsvgstyle.cpp b/src/svg/qsvgstyle.cpp index b065395..bd0804c 100644 --- a/src/svg/qsvgstyle.cpp +++ b/src/svg/qsvgstyle.cpp @@ -808,6 +808,7 @@ void QSvgGradientStyle::resolveStops() static_cast<QSvgGradientStyle*>(prop); st->resolveStops(); m_gradient->setStops(st->qgradient()->stops()); + m_gradientStopsSet = st->gradientStopsSet(); } } m_link = QString(); diff --git a/src/svg/qsvgwidget.cpp b/src/svg/qsvgwidget.cpp index a4200ca..ac8595f 100644 --- a/src/svg/qsvgwidget.cpp +++ b/src/svg/qsvgwidget.cpp @@ -83,18 +83,6 @@ class QSvgWidgetPrivate : public QWidgetPrivate { Q_DECLARE_PUBLIC(QSvgWidget) public: - QSvgWidgetPrivate() - : QWidgetPrivate() - { - Q_Q(QSvgWidget); - renderer = new QSvgRenderer(q); - } - QSvgWidgetPrivate(const QString &file) - : QWidgetPrivate() - { - Q_Q(QSvgWidget); - renderer = new QSvgRenderer(file, q); - } QSvgRenderer *renderer; }; @@ -104,6 +92,7 @@ public: QSvgWidget::QSvgWidget(QWidget *parent) : QWidget(*new QSvgWidgetPrivate, parent, 0) { + d_func()->renderer = new QSvgRenderer(this); QObject::connect(d_func()->renderer, SIGNAL(repaintNeeded()), this, SLOT(update())); } @@ -113,8 +102,9 @@ QSvgWidget::QSvgWidget(QWidget *parent) of the specified \a file. */ QSvgWidget::QSvgWidget(const QString &file, QWidget *parent) - : QWidget(*new QSvgWidgetPrivate(file), parent, 0) + : QWidget(*new QSvgWidgetPrivate, parent, 0) { + d_func()->renderer = new QSvgRenderer(file, this); QObject::connect(d_func()->renderer, SIGNAL(repaintNeeded()), this, SLOT(update())); } diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index f17d95d..b5200dc 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -1481,7 +1481,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv) } #endif -#if defined(QTEST_NOEXITCODE) || (defined(QT_BUILD_INTERNAL) && !defined(QTEST_FORCE_EXITCODE)) +#if defined(QTEST_NOEXITCODE) return 0; #else diff --git a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro new file mode 100644 index 0000000..1618c3e --- /dev/null +++ b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro @@ -0,0 +1,4 @@ +load(qttest_p4) +SOURCES += tst_qbytearraymatcher.cpp + +QT = core diff --git a/tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp b/tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp new file mode 100644 index 0000000..c3f2fd9 --- /dev/null +++ b/tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include <QtTest/QtTest> + +#include <qbytearraymatcher.h> + +class tst_QByteArrayMatcher : public QObject +{ + Q_OBJECT + +private slots: + void interface(); + void task251958(); +}; + +static QByteArrayMatcher matcher1; + +void tst_QByteArrayMatcher::interface() +{ + const char needle[] = "abc123"; + QByteArray haystack(500, 'a'); + haystack.insert(6, "123"); + haystack.insert(31, "abc"); + haystack.insert(42, "abc123"); + haystack.insert(84, "abc123"); + + matcher1 = QByteArrayMatcher(QByteArray(needle)); + QByteArrayMatcher matcher2; + matcher2.setPattern(QByteArray(needle)); + + QByteArrayMatcher matcher3 = QByteArrayMatcher(QByteArray(needle)); + QByteArrayMatcher matcher4(needle, sizeof(needle - 1)); + QByteArrayMatcher matcher5(matcher2); + QByteArrayMatcher matcher6; + matcher6 = matcher3; + + QCOMPARE(matcher1.indexIn(haystack), 42); + QCOMPARE(matcher2.indexIn(haystack), 42); + QCOMPARE(matcher3.indexIn(haystack), 42); + QCOMPARE(matcher4.indexIn(haystack), 42); + QCOMPARE(matcher5.indexIn(haystack), 42); + QCOMPARE(matcher6.indexIn(haystack), 42); + + QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length()), 42); + + QCOMPARE(matcher1.indexIn(haystack, 43), 84); + QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 43), 84); + QCOMPARE(matcher1.indexIn(haystack, 85), -1); + QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 85), -1); + + QByteArrayMatcher matcher7(QByteArray("123")); + QCOMPARE(matcher7.indexIn(haystack), 6); + + matcher7 = QByteArrayMatcher(QByteArray("abc")); + QCOMPARE(matcher7.indexIn(haystack), 31); + + matcher7.setPattern(matcher4.pattern()); + QCOMPARE(matcher7.indexIn(haystack), 42); +} + + +static QByteArrayMatcher matcher; + +void tst_QByteArrayMatcher::task251958() +{ + const char p_data[] = { 0x0, 0x0, 0x1 }; + QByteArray pattern(p_data, sizeof(p_data)); + + QByteArray haystack(8, '\0'); + haystack[7] = 0x1; + + matcher = QByteArrayMatcher(pattern); + QCOMPARE(matcher.indexIn(haystack, 0), 5); + QCOMPARE(matcher.indexIn(haystack, 1), 5); + QCOMPARE(matcher.indexIn(haystack, 2), 5); + + matcher.setPattern(pattern); + QCOMPARE(matcher.indexIn(haystack, 0), 5); + QCOMPARE(matcher.indexIn(haystack, 1), 5); + QCOMPARE(matcher.indexIn(haystack, 2), 5); +} + +QTEST_APPLESS_MAIN(tst_QByteArrayMatcher) +#include "tst_qbytearraymatcher.moc" diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp index 695bfe7..13b13d6 100644 --- a/tests/auto/qfiledialog/tst_qfiledialog.cpp +++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp @@ -157,6 +157,8 @@ private slots: void task228844_ensurePreviousSorting(); void task239706_editableFilterCombo(); void task218353_relativePaths(); + void task251321_sideBarHiddenEntries(); + void task251341_sideBarRemoveEntries(); private: QByteArray userSettings; @@ -1852,5 +1854,119 @@ void tst_QFiledialog::task218353_relativePaths() appDir.rmdir("test"); } +void tst_QFiledialog::task251321_sideBarHiddenEntries() +{ + QNonNativeFileDialog fd; + + QDir current = QDir::currentPath(); + current.mkdir(".hidden"); + QDir hiddenDir = QDir(".hidden"); + hiddenDir.mkdir("subdir"); + QDir hiddenSubDir = QDir(".hidden/subdir"); + hiddenSubDir.mkdir("happy"); + hiddenSubDir.mkdir("happy2"); + + QList<QUrl> urls; + urls << QUrl::fromLocalFile(hiddenSubDir.absolutePath()); + fd.setSidebarUrls(urls); + fd.show(); + QTest::qWait(250); + + QSidebar *sidebar = qFindChild<QSidebar*>(&fd, "sidebar"); + sidebar->setFocus(); + sidebar->selectUrl(QUrl::fromLocalFile(hiddenSubDir.absolutePath())); + QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(0, 0)).center()); + QTest::qWait(250); + + QFileSystemModel *model = qFindChild<QFileSystemModel*>(&fd, "qt_filesystem_model"); + QCOMPARE(model->rowCount(model->index(hiddenSubDir.absolutePath())), 2); + + hiddenSubDir.rmdir("happy2"); + hiddenSubDir.rmdir("happy"); + hiddenDir.rmdir("subdir"); + current.rmdir(".hidden"); +} + +class MyQSideBar : public QSidebar +{ +public : + MyQSideBar(QWidget *parent = 0) : QSidebar(parent) + {} + + void removeSelection() { + QList<QModelIndex> idxs = selectionModel()->selectedIndexes(); + QList<QPersistentModelIndex> indexes; + for (int i = 0; i < idxs.count(); i++) + indexes.append(idxs.at(i)); + + for (int i = 0; i < indexes.count(); ++i) + if (!indexes.at(i).data(Qt::UserRole + 1).toUrl().path().isEmpty()) + model()->removeRow(indexes.at(i).row()); + } +}; + +void tst_QFiledialog::task251341_sideBarRemoveEntries() +{ + QNonNativeFileDialog fd; + + QDir current = QDir::currentPath(); + current.mkdir("testDir"); + QDir testSubDir = QDir("testDir"); + + QList<QUrl> urls; + urls << QUrl::fromLocalFile(testSubDir.absolutePath()); + urls << QUrl::fromLocalFile("NotFound"); + fd.setSidebarUrls(urls); + fd.show(); + QTest::qWait(250); + + QSidebar *sidebar = qFindChild<QSidebar*>(&fd, "sidebar"); + sidebar->setFocus(); + //We enter in the first bookmark + sidebar->selectUrl(QUrl::fromLocalFile(testSubDir.absolutePath())); + QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(0, 0)).center()); + QTest::qWait(250); + + QFileSystemModel *model = qFindChild<QFileSystemModel*>(&fd, "qt_filesystem_model"); + //There is no file + QCOMPARE(model->rowCount(model->index(testSubDir.absolutePath())), 0); + //Icon is not enabled QUrlModel::EnabledRole + QVariant value = sidebar->model()->index(0, 0).data(Qt::UserRole + 2); + QCOMPARE(qvariant_cast<bool>(value), true); + + sidebar->setFocus(); + //We enter in the second bookmark which is invalid + sidebar->selectUrl(QUrl::fromLocalFile("NotFound")); + QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(1, 0)).center()); + QTest::qWait(250); + + //We fallback to root because the entry in the bookmark is invalid + QCOMPARE(model->rowCount(model->index("NotFound")), model->rowCount(model->index(model->rootPath()))); + //Icon is not enabled QUrlModel::EnabledRole + value = sidebar->model()->index(1, 0).data(Qt::UserRole + 2); + QCOMPARE(qvariant_cast<bool>(value), false); + + MyQSideBar mySideBar; + mySideBar.init(model, urls); + mySideBar.show(); + mySideBar.selectUrl(QUrl::fromLocalFile(testSubDir.absolutePath())); + QTest::qWait(1000); + mySideBar.removeSelection(); + + //We remove the first entry + QList<QUrl> expected; + expected << QUrl::fromLocalFile("NotFound"); + QCOMPARE(mySideBar.urls(), expected); + + mySideBar.selectUrl(QUrl::fromLocalFile("NotFound")); + mySideBar.removeSelection(); + + //We remove the second entry + expected.clear(); + QCOMPARE(mySideBar.urls(), expected); + + current.rmdir("testDir"); +} + QTEST_MAIN(tst_QFiledialog) #include "tst_qfiledialog.moc" diff --git a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp index 826d278..59d57ce 100644 --- a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp +++ b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp @@ -45,6 +45,7 @@ #include <QFileIconProvider> #include "../../shared/util.h" #include <QTime> +#include <QStyle> #include <QtGlobal> //TESTED_CLASS= @@ -284,6 +285,33 @@ void tst_QFileSystemModel::readOnly() QVERIFY(model->flags(model->index(file.fileName())) & Qt::ItemIsEditable); } +class CustomFileIconProvider : public QFileIconProvider +{ +public: + CustomFileIconProvider() : QFileIconProvider() { + mb = qApp->style()->standardIcon(QStyle::SP_MessageBoxCritical); + dvd = qApp->style()->standardIcon(QStyle::SP_DriveDVDIcon); + } + + virtual QIcon icon(const QFileInfo &info) const + { + if (info.isDir()) + return mb; + + return QFileIconProvider::icon(info); + } + virtual QIcon icon(IconType type) const + { + if (type == QFileIconProvider::Folder) + return dvd; + + return QFileIconProvider::icon(type); + } +private: + QIcon mb; + QIcon dvd; +}; + void tst_QFileSystemModel::iconProvider() { QVERIFY(model->iconProvider()); @@ -292,6 +320,19 @@ void tst_QFileSystemModel::iconProvider() QCOMPARE(model->iconProvider(), p); model->setIconProvider(0); delete p; + + QFileSystemModel *myModel = new QFileSystemModel(); + myModel->setRootPath(QDir::homePath()); + //Let's wait to populate the model + QTest::qWait(250); + //We change the provider, icons must me updated + CustomFileIconProvider *custom = new CustomFileIconProvider(); + myModel->setIconProvider(custom); + + QPixmap mb = qApp->style()->standardIcon(QStyle::SP_MessageBoxCritical).pixmap(50, 50); + QCOMPARE(myModel->fileIcon(myModel->index(QDir::homePath())).pixmap(50, 50), mb); + delete myModel; + delete custom; } bool tst_QFileSystemModel::createFiles(const QString &test_path, const QStringList &initial_files, int existingFileCount, const QStringList &initial_dirs, const QString &dir) diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 5565aa6..77b7948 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -214,6 +214,7 @@ private slots: void tabChangesFocus(); void tabChangesFocus_data(); void cacheMode(); + void updateCachedItemAfterMove(); // task specific tests below me void task141694_textItemEnsureVisible(); @@ -3654,6 +3655,8 @@ void tst_QGraphicsItem::defaultItemTest_QGraphicsEllipseItem() class ItemChangeTester : public QGraphicsRectItem { public: + ItemChangeTester(){} + ItemChangeTester(QGraphicsItem *parent) : QGraphicsRectItem(parent) {} QVariant itemChangeReturnValue; QGraphicsScene *itemSceneChangeTargetScene; @@ -3928,6 +3931,39 @@ void tst_QGraphicsItem::itemChange() QCOMPARE(tester.changes.size(), ++changeCount); QCOMPARE(tester.changes.last(), QGraphicsItem::ItemChildRemovedChange); QCOMPARE(qVariantValue<QGraphicsItem *>(tester.values.last()), (QGraphicsItem *)&testerHelper); + + // ItemChildRemovedChange 1 + ItemChangeTester *test = new ItemChangeTester; + test->itemSceneChangeTargetScene = 0; + int count = 0; + QGraphicsScene *scene = new QGraphicsScene; + scene->addItem(test); + count = test->changes.size(); + //We test here the fact that when a child is deleted the parent receive only one ItemChildRemovedChange + QGraphicsRectItem *child = new QGraphicsRectItem(test); + //We received ItemChildAddedChange + QCOMPARE(test->changes.size(), ++count); + QCOMPARE(test->changes.last(), QGraphicsItem::ItemChildAddedChange); + delete child; + child = 0; + QCOMPARE(test->changes.size(), ++count); + QCOMPARE(test->changes.last(), QGraphicsItem::ItemChildRemovedChange); + + ItemChangeTester *childTester = new ItemChangeTester(test); + //Changes contains all sceneHasChanged and so on, we don't want to test that + int childCount = childTester->changes.size(); + //We received ItemChildAddedChange + QCOMPARE(test->changes.size(), ++count); + child = new QGraphicsRectItem(childTester); + //We received ItemChildAddedChange + QCOMPARE(childTester->changes.size(), ++childCount); + QCOMPARE(childTester->changes.last(), QGraphicsItem::ItemChildAddedChange); + //Delete the child of the top level with all its children + delete childTester; + //Only one removal + QCOMPARE(test->changes.size(), ++count); + QCOMPARE(test->changes.last(), QGraphicsItem::ItemChildRemovedChange); + delete scene; } { // ItemChildRemovedChange 2 @@ -6038,5 +6074,46 @@ void tst_QGraphicsItem::cacheMode() QCOMPARE(testerChild2->repaints, 6); } +void tst_QGraphicsItem::updateCachedItemAfterMove() +{ + // A simple item that uses ItemCoordinateCache + EventTester *tester = new EventTester; + tester->setCacheMode(QGraphicsItem::ItemCoordinateCache); + + // Add to a scene, show in a view, ensure it's painted and reset its + // repaint counter. + QGraphicsScene scene; + scene.addItem(tester); + QGraphicsView view(&scene); + view.show(); +#ifdef Q_WS_X11 + qt_x11_wait_for_window_manager(&view); +#endif + QTest::qWait(125); + tester->repaints = 0; + + // Move the item, should not cause repaints + tester->setPos(10, 0); + QTest::qWait(125); + QCOMPARE(tester->repaints, 0); + + // Move then update, should cause one repaint + tester->setPos(20, 0); + tester->update(); + QTest::qWait(125); + QCOMPARE(tester->repaints, 1); + + // Hiding the item doesn't cause a repaint + tester->hide(); + QTest::qWait(125); + QCOMPARE(tester->repaints, 1); + + // Moving a hidden item doesn't cause a repaint + tester->setPos(30, 0); + tester->update(); + QTest::qWait(125); + QCOMPARE(tester->repaints, 1); +} + QTEST_MAIN(tst_QGraphicsItem) #include "tst_qgraphicsitem.moc" diff --git a/tests/auto/qlocalsocket/test/test.pro b/tests/auto/qlocalsocket/test/test.pro index 8ce7c50..7befdf9 100644 --- a/tests/auto/qlocalsocket/test/test.pro +++ b/tests/auto/qlocalsocket/test/test.pro @@ -1,7 +1,5 @@ load(qttest_p4) -include(../src/src.pri) - DEFINES += QLOCALSERVER_DEBUG DEFINES += QLOCALSOCKET_DEBUG !wince*: { @@ -14,14 +12,16 @@ DEFINES += QLOCALSOCKET_DEBUG QT = core network SOURCES += ../tst_qlocalsocket.cpp -TARGET = ../tst_qlocalsocket -win32 { +TARGET = tst_qlocalsocket +CONFIG(debug_and_release) { CONFIG(debug, debug|release) { - TARGET = ../../debug/tst_qlocalsocket -} else { - TARGET = ../../release/tst_qlocalsocket + DESTDIR = ../debug + } else { + DESTDIR = ../release } +} else { + DESTDIR = .. } wince* { diff --git a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp index f741b96..deabda6 100644 --- a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp +++ b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp @@ -95,6 +95,7 @@ private slots: void longPath(); void waitForDisconnect(); + void waitForDisconnectByServer(); void removeServer(); @@ -112,6 +113,8 @@ tst_QLocalSocket::tst_QLocalSocket() #endif )) qWarning() << "lackey executable doesn't exists!"; + + QLocalServer::removeServer("tst_localsocket"); } tst_QLocalSocket::~tst_QLocalSocket() @@ -783,6 +786,25 @@ void tst_QLocalSocket::waitForDisconnect() QVERIFY(timer.elapsed() < 2000); } +void tst_QLocalSocket::waitForDisconnectByServer() +{ + QString name = "tst_localsocket"; + LocalServer server; + QVERIFY(server.listen(name)); + LocalSocket socket; + QSignalSpy spy(&socket, SIGNAL(disconnected())); + QVERIFY(spy.isValid()); + socket.connectToServer(name); + QVERIFY(socket.waitForConnected(3000)); + QVERIFY(server.waitForNewConnection(3000)); + QLocalSocket *serverSocket = server.nextPendingConnection(); + QVERIFY(serverSocket); + serverSocket->close(); + QVERIFY(serverSocket->state() == QLocalSocket::UnconnectedState); + QVERIFY(socket.waitForDisconnected(3000)); + QCOMPARE(spy.count(), 1); +} + void tst_QLocalSocket::removeServer() { // this is a hostile takeover, but recovering from a crash results in the same diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp index 8b43f9b..c81bf67 100644 --- a/tests/auto/qpainter/tst_qpainter.cpp +++ b/tests/auto/qpainter/tst_qpainter.cpp @@ -3792,8 +3792,11 @@ void tst_QPainter::imageBlending() void tst_QPainter::paintOnNullPixmap() { + QPixmap pix(16, 16); + QPixmap textPixmap; QPainter p(&textPixmap); + p.drawPixmap(10, 10, pix); p.end(); QPixmap textPixmap2(16,16); diff --git a/tests/auto/qsidebar/tst_qsidebar.cpp b/tests/auto/qsidebar/tst_qsidebar.cpp index 7a262e6..705e222 100644 --- a/tests/auto/qsidebar/tst_qsidebar.cpp +++ b/tests/auto/qsidebar/tst_qsidebar.cpp @@ -176,6 +176,32 @@ void tst_QSidebar::addUrls() qsidebar.addUrls(urls, -1); qsidebar.addUrls(moreUrls, -1); QCOMPARE(qsidebar.urls()[0], urls[0]); + + QList<QUrl> doubleUrls; + //tow exact same paths, we have only one entry + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath()); + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath()); + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(doubleUrls, 1); + QCOMPARE(qsidebar.urls().size(), 1); + +#if defined(Q_OS_WIN) + //Windows is case insensitive so no duplicate entries in that case + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath()); + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath().toUpper()); + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(doubleUrls, 1); + QCOMPARE(qsidebar.urls().size(), 1); +#else + //Two different paths we should have two entries + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath()); + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath().toUpper()); + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(doubleUrls, 1); + QCOMPARE(qsidebar.urls().size(), 2); +#endif + + } void tst_QSidebar::goToUrl() diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp index 4a17031..4da99da 100644 --- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp +++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp @@ -534,16 +534,42 @@ void tst_QSvgRenderer::gradientStops() const QCOMPARE(image, refImage); } + const char *svgs[] = { + "<svg>" + "<defs>" + "<linearGradient id=\"gradient\">" + "<stop offset=\"0\" stop-color=\"red\" stop-opacity=\"0\"/>" + "<stop offset=\"1\" stop-color=\"blue\"/>" + "</linearGradient>" + "</defs>" + "<rect fill=\"url(#gradient)\" height=\"8\" width=\"256\" x=\"0\" y=\"0\"/>" + "</svg>", + "<svg>" + "<defs>" + "<linearGradient id=\"gradient\" xlink:href=\"#gradient0\">" + "</linearGradient>" + "<linearGradient id=\"gradient0\">" + "<stop offset=\"0\" stop-color=\"red\" stop-opacity=\"0\"/>" + "<stop offset=\"1\" stop-color=\"blue\"/>" + "</linearGradient>" + "</defs>" + "<rect fill=\"url(#gradient)\" height=\"8\" width=\"256\" x=\"0\" y=\"0\"/>" + "</svg>", + "<svg>" + "<defs>" + "<linearGradient id=\"gradient0\">" + "<stop offset=\"0\" stop-color=\"red\" stop-opacity=\"0\"/>" + "<stop offset=\"1\" stop-color=\"blue\"/>" + "</linearGradient>" + "<linearGradient id=\"gradient\" xlink:href=\"#gradient0\">" + "</linearGradient>" + "</defs>" + "<rect fill=\"url(#gradient)\" height=\"8\" width=\"256\" x=\"0\" y=\"0\"/>" + "</svg>" + }; + for (int i = 0 ; i < sizeof(svgs) / sizeof(svgs[0]) ; ++i) { - QByteArray data("<svg>" - "<defs>" - "<linearGradient id=\"gradient\">" - "<stop offset=\"0\" stop-color=\"red\" stop-opacity=\"0\"/>" - "<stop offset=\"1\" stop-color=\"blue\"/>" - "</linearGradient>" - "</defs>" - "<rect fill=\"url(#gradient)\" height=\"8\" width=\"256\" x=\"0\" y=\"0\"/>" - "</svg>"); + QByteArray data = svgs[i]; QSvgRenderer renderer(data); QImage image(256, 8, QImage::Format_ARGB32_Premultiplied); diff --git a/tests/auto/qtextcodec/tst_qtextcodec.cpp b/tests/auto/qtextcodec/tst_qtextcodec.cpp index b1bfb86..cf4135b 100644 --- a/tests/auto/qtextcodec/tst_qtextcodec.cpp +++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp @@ -68,6 +68,8 @@ private slots: void flagEFBFBF() const; void decode0D() const; void codecForIndex() const; + void aliasForUTF16() const; + void mibForTSCII() const; void utf8Codec_data(); void utf8Codec(); @@ -453,6 +455,16 @@ void tst_QTextCodec::codecForIndex() const { } +void tst_QTextCodec::aliasForUTF16() const +{ + QVERIFY(QTextCodec::codecForName("UTF-16")->aliases().isEmpty()); +} + +void tst_QTextCodec::mibForTSCII() const +{ + QCOMPARE(QTextCodec::codecForName("TSCII")->mibEnum(), 2107); +} + static QString fromInvalidUtf8Sequence(const QByteArray &ba) { return QString().fill(QChar::ReplacementCharacter, ba.size()); diff --git a/tests/auto/qtransform/tst_qtransform.cpp b/tests/auto/qtransform/tst_qtransform.cpp index 8516ddb..74c405e 100644 --- a/tests/auto/qtransform/tst_qtransform.cpp +++ b/tests/auto/qtransform/tst_qtransform.cpp @@ -593,6 +593,16 @@ void tst_QTransform::types() m3.translate(5.0f, 5.0f); QCOMPARE(m3.type(), QTransform::TxScale); QCOMPARE(m3.inverted().type(), QTransform::TxScale); + + m3.setMatrix(1.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 2.0f); + QCOMPARE(m3.type(), QTransform::TxProject); + + m3.setMatrix(0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 2.0f); + QCOMPARE(m3.type(), QTransform::TxProject); } diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index a052034..767553a 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -283,6 +283,8 @@ private slots: void render_task217815(); void render_windowOpacity(); void render_systemClip(); + void render_systemClip2_data(); + void render_systemClip2(); void setContentsMargins(); @@ -6897,6 +6899,102 @@ void tst_QWidget::render_systemClip() #endif } +void tst_QWidget::render_systemClip2_data() +{ + QTest::addColumn<bool>("autoFillBackground"); + QTest::addColumn<bool>("usePaintEvent"); + QTest::addColumn<QColor>("expectedColor"); + + QTest::newRow("Only auto-fill background") << true << false << QColor(Qt::blue); + QTest::newRow("Only draw in paintEvent") << false << true << QColor(Qt::green); + QTest::newRow("Auto-fill background and draw in paintEvent") << true << true << QColor(Qt::green); +} + +void tst_QWidget::render_systemClip2() +{ + QFETCH(bool, autoFillBackground); + QFETCH(bool, usePaintEvent); + QFETCH(QColor, expectedColor); + + Q_ASSERT_X(expectedColor != QColor(Qt::red), Q_FUNC_INFO, + "Qt::red is the reference color for the image, pick another color"); + + class MyWidget : public QWidget + { + public: + bool usePaintEvent; + void paintEvent(QPaintEvent *) + { + if (usePaintEvent) + QPainter(this).fillRect(rect(), Qt::green); + } + }; + + MyWidget widget; + widget.usePaintEvent = usePaintEvent; + widget.setPalette(Qt::blue); + // NB! widget.setAutoFillBackground(autoFillBackground) won't do the + // trick here since the widget is a top-level. The background is filled + // regardless, unless Qt::WA_OpaquePaintEvent or Qt::WA_NoSystemBackground + // is set. We therefore use the opaque attribute to turn off auto-fill. + if (!autoFillBackground) + widget.setAttribute(Qt::WA_OpaquePaintEvent); + widget.resize(100, 100); + + QImage image(widget.size(), QImage::Format_RGB32); + image.fill(QColor(Qt::red).rgb()); + + QPaintEngine *paintEngine = image.paintEngine(); + QVERIFY(paintEngine); + + QRegion systemClip(QRegion(50, 0, 50, 10)); + systemClip += QRegion(90, 10, 10, 40); + paintEngine->setSystemClip(systemClip); + + // Render entire widget directly onto device. + widget.render(&image); + +#ifndef RENDER_DEBUG + image.save("systemclip_with_device.png"); +#endif + // All pixels within the system clip should now be + // the expectedColor, and the rest should be red. + for (int i = 0; i < image.height(); ++i) { + for (int j = 0; j < image.width(); ++j) { + if (systemClip.contains(QPoint(j, i))) + QCOMPARE(image.pixel(j, i), expectedColor.rgb()); + else + QCOMPARE(image.pixel(j, i), QColor(Qt::red).rgb()); + } + } + + // Refill image with red. + image.fill(QColor(Qt::red).rgb()); + + // Do the same with an untransformed painter. + QPainter painter(&image); + //Make sure we're using the same paint engine and has the right clip set. + paintEngine->setSystemClip(systemClip); + QCOMPARE(painter.paintEngine(), paintEngine); + QCOMPARE(paintEngine->systemClip(), systemClip); + + widget.render(&painter); + +#ifndef RENDER_DEBUG + image.save("systemclip_with_untransformed_painter.png"); +#endif + // All pixels within the system clip should now be + // the expectedColor, and the rest should be red. + for (int i = 0; i < image.height(); ++i) { + for (int j = 0; j < image.width(); ++j) { + if (systemClip.contains(QPoint(j, i))) + QCOMPARE(image.pixel(j, i), expectedColor.rgb()); + else + QCOMPARE(image.pixel(j, i), QColor(Qt::red).rgb()); + } + } +} + void tst_QWidget::setContentsMargins() { QLabel label("why does it always rain on me?"); diff --git a/tools/activeqt/activeqt.pro b/tools/activeqt/activeqt.pro index a0e7de3..c50010c 100644 --- a/tools/activeqt/activeqt.pro +++ b/tools/activeqt/activeqt.pro @@ -2,10 +2,7 @@ TEMPLATE = subdirs CONFIG += ordered -contains(QT_EDITION, OpenSource|Console) { - message("You are not licensed to use ActiveQt.") -} else { - SUBDIRS = dumpdoc \ - dumpcpp \ - testcon -} +SUBDIRS = dumpdoc \ + dumpcpp \ + testcon + diff --git a/tools/assistant/tools/assistant/assistant.qch b/tools/assistant/tools/assistant/assistant.qch Binary files differindex 550cd89..64763f7 100644 --- a/tools/assistant/tools/assistant/assistant.qch +++ b/tools/assistant/tools/assistant/assistant.qch diff --git a/tools/assistant/tools/assistant/centralwidget.cpp b/tools/assistant/tools/assistant/centralwidget.cpp index 1b0e671..0a94a3d 100644 --- a/tools/assistant/tools/assistant/centralwidget.cpp +++ b/tools/assistant/tools/assistant/centralwidget.cpp @@ -72,7 +72,8 @@ QT_BEGIN_NAMESPACE namespace { - HelpViewer* helpViewerFromTabPosition(const QTabWidget *widget, const QPoint &point) + HelpViewer* helpViewerFromTabPosition(const QTabWidget *widget, + const QPoint &point) { QTabBar *tabBar = qFindChild<QTabBar*>(widget); for (int i = 0; i < tabBar->count(); ++i) { @@ -87,38 +88,32 @@ namespace { FindWidget::FindWidget(QWidget *parent) : QWidget(parent) { - QString system = QLatin1String("win"); QHBoxLayout *hboxLayout = new QHBoxLayout(this); -#ifdef Q_OS_MAC - system = QLatin1String("mac"); -#else - hboxLayout->setSpacing(6); + QString resourcePath = QLatin1String(":/trolltech/assistant/images/"); + +#ifndef Q_OS_MAC hboxLayout->setMargin(0); + hboxLayout->setSpacing(6); + resourcePath.append(QLatin1String("win")); +#else + resourcePath.append(QLatin1String("mac")); #endif - toolClose = new QToolButton(this); - toolClose->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/closetab.png").arg(system))); - toolClose->setAutoRaise(true); + toolClose = setupToolButton(QLatin1String(""), + resourcePath + QLatin1String("/closetab.png")); hboxLayout->addWidget(toolClose); editFind = new QLineEdit(this); - editFind->setMinimumSize(QSize(150, 0)); - connect(editFind, SIGNAL(textChanged(const QString&)), - this, SLOT(updateButtons())); hboxLayout->addWidget(editFind); + editFind->setMinimumSize(QSize(150, 0)); + connect(editFind, SIGNAL(textChanged(QString)), this, SLOT(updateButtons())); - toolPrevious = new QToolButton(this); - toolPrevious->setAutoRaise(true); - toolPrevious->setText(tr("Previous")); - toolPrevious->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - toolPrevious->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/previous.png").arg(system))); + toolPrevious = setupToolButton(tr("Previous"), + resourcePath + QLatin1String("/previous.png")); hboxLayout->addWidget(toolPrevious); - toolNext = new QToolButton(this); - toolNext->setAutoRaise(true); - toolNext->setText(tr("Next")); - toolNext->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - toolNext->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/next.png").arg(system))); + toolNext = setupToolButton(tr("Next"), + resourcePath + QLatin1String("/next.png")); hboxLayout->addWidget(toolNext); checkCase = new QCheckBox(tr("Case Sensitive"), this); @@ -131,15 +126,17 @@ FindWidget::FindWidget(QWidget *parent) #endif labelWrapped = new QLabel(this); + labelWrapped->setScaledContents(true); + labelWrapped->setTextFormat(Qt::RichText); labelWrapped->setMinimumSize(QSize(0, 20)); labelWrapped->setMaximumSize(QSize(105, 20)); - labelWrapped->setTextFormat(Qt::RichText); - labelWrapped->setScaledContents(true); - labelWrapped->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); - labelWrapped->setText(tr("<img src=\":/trolltech/assistant/images/wrap.png\"> Search wrapped")); + labelWrapped->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignVCenter); + labelWrapped->setText(tr("<img src=\":/trolltech/assistant/images/wrap.png\"" + "> Search wrapped")); hboxLayout->addWidget(labelWrapped); - QSpacerItem *spacerItem = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + QSpacerItem *spacerItem = new QSpacerItem(20, 20, QSizePolicy::Expanding, + QSizePolicy::Minimum); hboxLayout->addItem(spacerItem); setMinimumWidth(minimumSizeHint().width()); labelWrapped->hide(); @@ -162,38 +159,54 @@ void FindWidget::updateButtons() } } +QToolButton* FindWidget::setupToolButton(const QString &text, const QString &icon) +{ + QToolButton* toolButton = new QToolButton(this); + + toolButton->setText(text); + toolButton->setAutoRaise(true); + toolButton->setIcon(QIcon(icon)); + toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + + return toolButton; +} + + +// -- + CentralWidget::CentralWidget(QHelpEngine *engine, MainWindow *parent) : QWidget(parent) + , lastTabPage(0) + , collectionFile(engine->collectionFile()) , findBar(0) , tabWidget(0) + , findWidget(0) , helpEngine(engine) , printer(0) + , usesDefaultCollection(parent->usesDefaultCollection()) , m_searchWidget(0) { - staticCentralWidget = this; - - lastTabPage = 0; globalActionList.clear(); - collectionFile = helpEngine->collectionFile(); - usesDefaultCollection = parent->usesDefaultCollection(); - - QString system = QLatin1String("win"); + staticCentralWidget = this; QVBoxLayout *vboxLayout = new QVBoxLayout(this); + QString resourcePath = QLatin1String(":/trolltech/assistant/images/"); -#ifdef Q_OS_MAC - system = QLatin1String("mac"); -#else +#ifndef Q_OS_MAC vboxLayout->setMargin(0); + resourcePath.append(QLatin1String("win")); +#else + resourcePath.append(QLatin1String("mac")); #endif tabWidget = new QTabWidget(this); - connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(currentPageChanged(int))); + connect(tabWidget, SIGNAL(currentChanged(int)), this, + SLOT(currentPageChanged(int))); QToolButton *newTabButton = new QToolButton(this); newTabButton->setAutoRaise(true); newTabButton->setToolTip(tr("Add new page")); - newTabButton->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/addtab.png").arg(system))); + newTabButton->setIcon(QIcon(resourcePath + QLatin1String("/addtab.png"))); tabWidget->setCornerWidget(newTabButton, Qt::TopLeftCorner); connect(newTabButton, SIGNAL(clicked()), this, SLOT(newTab())); @@ -202,7 +215,7 @@ CentralWidget::CentralWidget(QHelpEngine *engine, MainWindow *parent) closeTabButton->setEnabled(false); closeTabButton->setAutoRaise(true); closeTabButton->setToolTip(tr("Close current page")); - closeTabButton->setIcon(QIcon(QString::fromUtf8(":/trolltech/assistant/images/%1/closetab.png").arg(system))); + closeTabButton->setIcon(QIcon(resourcePath + QLatin1String("/closetab.png"))); tabWidget->setCornerWidget(closeTabButton, Qt::TopRightCorner); connect(closeTabButton, SIGNAL(clicked()), this, SLOT(closeTab())); @@ -216,19 +229,20 @@ CentralWidget::CentralWidget(QHelpEngine *engine, MainWindow *parent) vboxLayout->addWidget(findBar); findBar->hide(); findWidget->editFind->installEventFilter(this); - connect(findWidget->toolClose, SIGNAL(clicked()), findBar, SLOT(hide())); + connect(findWidget->toolClose, SIGNAL(clicked()), findBar, SLOT(hide())); connect(findWidget->toolNext, SIGNAL(clicked()), this, SLOT(findNext())); connect(findWidget->editFind, SIGNAL(returnPressed()), this, SLOT(findNext())); - connect(findWidget->editFind, SIGNAL(textChanged(const QString&)), this, SLOT(findCurrentText(const QString&))); + connect(findWidget->editFind, SIGNAL(textChanged(QString)), this, + SLOT(findCurrentText(QString))); connect(findWidget->toolPrevious, SIGNAL(clicked()), this, SLOT(findPrevious())); QTabBar *tabBar = qFindChild<QTabBar*>(tabWidget); if (tabBar) { tabBar->installEventFilter(this); tabBar->setContextMenuPolicy(Qt::CustomContextMenu); - connect(tabBar, SIGNAL(customContextMenuRequested(const QPoint&)), - this, SLOT(showTabBarContextMenu(const QPoint&))); + connect(tabBar, SIGNAL(customContextMenuRequested(QPoint)), this, + SLOT(showTabBarContextMenu(QPoint))); } QPalette p = qApp->palette(); @@ -247,17 +261,12 @@ CentralWidget::~CentralWidget() QString zoomCount; QString currentPages; - QLatin1Char sep('|'); + QLatin1Char separator('|'); for (int i = 1; i < tabWidget->count(); ++i) { HelpViewer *viewer = qobject_cast<HelpViewer*>(tabWidget->widget(i)); if (viewer && viewer->source().isValid()) { - currentPages.append(viewer->source().toString()).append(sep); -#if !defined(QT_NO_WEBKIT) - zoomCount.append(QString::number(viewer->textSizeMultiplier())). - append(sep); -#else - zoomCount.append(QString::number(viewer->zoom())).append(sep); -#endif + currentPages += viewer->source().toString() + separator; + zoomCount += QString::number(viewer->zoom()) + separator; } } engine.setCustomValue(QLatin1String("LastTabPage"), lastTabPage); @@ -277,7 +286,11 @@ CentralWidget *CentralWidget::instance() void CentralWidget::newTab() { HelpViewer* viewer = currentHelpViewer(); +#if !defined(QT_NO_WEBKIT) + if (viewer && viewer->hasLoadFinished()) +#else if (viewer) +#endif setSourceInNewTab(viewer->source()); } @@ -359,8 +372,9 @@ void CentralWidget::setSource(const QUrl &url) lastTabPage = tabWidget->addTab(viewer, QString()); tabWidget->setCurrentIndex(lastTabPage); connectSignals(); - } else + } else { viewer = lastViewer; + } viewer->setSource(url); currentPageChanged(lastTabPage); @@ -371,37 +385,35 @@ void CentralWidget::setSource(const QUrl &url) void CentralWidget::setLastShownPages() { + const QLatin1String key("LastShownPages"); + QString value = helpEngine->customValue(key, QString()).toString(); + const QStringList lastShownPageList = value.split(QLatin1Char('|'), + QString::SkipEmptyParts); + + const int pageCount = lastShownPageList.count(); + if (pageCount == 0 && usesDefaultCollection) + return setSource(QUrl(QLatin1String("help"))); + #if !defined(QT_NO_WEBKIT) - QLatin1String zoom("LastPagesZoomWebView"); + const QLatin1String zoom("LastPagesZoomWebView"); #else - QLatin1String zoom("LastPagesZoomTextBrowser"); + const QLatin1String zoom("LastPagesZoomTextBrowser"); #endif - const QStringList lastShownPageList = - helpEngine->customValue(QLatin1String("LastShownPages")).toString(). - split(QLatin1Char('|'), QString::SkipEmptyParts); - - if (!lastShownPageList.isEmpty()) { - QVector<QString>zoomList = helpEngine->customValue(zoom).toString(). - split(QLatin1Char('|'), QString::SkipEmptyParts).toVector(); - if (zoomList.isEmpty()) - zoomList.fill(QLatin1String("0.0"), lastShownPageList.size()); - else if(zoomList.count() < lastShownPageList.count()) { - zoomList.insert(zoomList.count(), - lastShownPageList.count() - zoomList.count(), QLatin1String("0.0")); - } + value = helpEngine->customValue(zoom, QString()).toString(); + QVector<QString> zoomVector = value.split(QLatin1Char('|'), + QString::SkipEmptyParts).toVector(); - QVector<QString>::const_iterator zIt = zoomList.constBegin(); - QStringList::const_iterator it = lastShownPageList.constBegin(); - for (; it != lastShownPageList.constEnd(); ++it, ++zIt) - setSourceInNewTab((*it), (*zIt).toFloat()); + const int zoomCount = zoomVector.count(); + zoomVector.insert(zoomCount, pageCount - zoomCount, QLatin1String("0.0")); - tabWidget->setCurrentIndex(helpEngine->customValue( - QLatin1String("LastTabPage"), 1).toInt()); - } else { - if (usesDefaultCollection) - setSource(QUrl(QLatin1String("help"))); - } + QVector<QString>::const_iterator zIt = zoomVector.constBegin(); + QStringList::const_iterator it = lastShownPageList.constBegin(); + for (; it != lastShownPageList.constEnd(); ++it, ++zIt) + setSourceInNewTab((*it), (*zIt).toFloat()); + + const QLatin1String lastTab("LastTabPage"); + tabWidget->setCurrentIndex(helpEngine->customValue(lastTab, 1).toInt()); } bool CentralWidget::hasSelection() const @@ -479,7 +491,8 @@ void CentralWidget::printPreview() #ifndef QT_NO_PRINTER initPrinter(); QPrintPreviewDialog preview(printer, this); - connect(&preview, SIGNAL(paintRequested(QPrinter *)), SLOT(printPreview(QPrinter *))); + connect(&preview, SIGNAL(paintRequested(QPrinter*)), + SLOT(printPreview(QPrinter*))); preview.exec(); #endif } @@ -630,13 +643,18 @@ void CentralWidget::connectSignals() { const HelpViewer* viewer = currentHelpViewer(); if (viewer) { - connect(viewer, SIGNAL(copyAvailable(bool)), this, SIGNAL(copyAvailable(bool))); - connect(viewer, SIGNAL(forwardAvailable(bool)), this, SIGNAL(forwardAvailable(bool))); - connect(viewer, SIGNAL(backwardAvailable(bool)), this, SIGNAL(backwardAvailable(bool))); - connect(viewer, SIGNAL(sourceChanged(const QUrl&)), this, SIGNAL(sourceChanged(const QUrl&))); - connect(viewer, SIGNAL(highlighted(const QString&)), this, SIGNAL(highlighted(const QString&))); - - connect(viewer, SIGNAL(sourceChanged(const QUrl&)), this, SLOT(setTabTitle(const QUrl&))); + connect(viewer, SIGNAL(copyAvailable(bool)), this, + SIGNAL(copyAvailable(bool))); + connect(viewer, SIGNAL(forwardAvailable(bool)), this, + SIGNAL(forwardAvailable(bool))); + connect(viewer, SIGNAL(backwardAvailable(bool)), this, + SIGNAL(backwardAvailable(bool))); + connect(viewer, SIGNAL(sourceChanged(QUrl)), this, + SIGNAL(sourceChanged(QUrl))); + connect(viewer, SIGNAL(highlighted(QString)), this, + SIGNAL(highlighted(QString))); + connect(viewer, SIGNAL(sourceChanged(QUrl)), this, + SLOT(setTabTitle(QUrl))); } } @@ -660,26 +678,21 @@ void CentralWidget::activateTab(bool onlyHelpViewer) void CentralWidget::setTabTitle(const QUrl& url) { - int tab = lastTabPage; - HelpViewer* viewer = currentHelpViewer(); - + Q_UNUSED(url) #if !defined(QT_NO_WEBKIT) - if (!viewer || viewer->source() != url) { - QTabBar *tabBar = qFindChild<QTabBar*>(tabWidget); - for (tab = 0; tab < tabBar->count(); ++tab) { - viewer = qobject_cast<HelpViewer*>(tabWidget->widget(tab)); - if (viewer && viewer->source() == url) - break; - } + QTabBar *tabBar = qFindChild<QTabBar*>(tabWidget); + for (int tab = 0; tab < tabBar->count(); ++tab) { + HelpViewer* viewer = qobject_cast<HelpViewer*>(tabWidget->widget(tab)); + if (viewer) + tabWidget->setTabText(tab, viewer->documentTitle().trimmed()); } #else - Q_UNUSED(url) -#endif - + HelpViewer* viewer = currentHelpViewer(); if (viewer) { - tabWidget->setTabText(tab, + tabWidget->setTabText(lastTabPage, quoteTabTitle(viewer->documentTitle().trimmed())); } +#endif } void CentralWidget::currentPageChanged(int index) @@ -696,8 +709,11 @@ void CentralWidget::currentPageChanged(int index) enabled = tabWidget->count() > 1; } - tabWidget->cornerWidget(Qt::TopRightCorner)->setEnabled(enabled); - tabWidget->cornerWidget(Qt::TopLeftCorner)->setEnabled(m_searchWidget ? enabled : true); + QWidget *widget = tabWidget->cornerWidget(Qt::TopLeftCorner); + widget->setEnabled(m_searchWidget ? enabled : true); + + widget = tabWidget->cornerWidget(Qt::TopRightCorner); + widget->setEnabled(enabled); emit currentViewerChanged(); } @@ -872,8 +888,10 @@ void CentralWidget::find(QString ttf, bool forward, bool backward) QTextDocument::FindFlags options; - if (cursor.hasSelection()) - cursor.setPosition(forward ? cursor.position() : cursor.anchor(), QTextCursor::MoveAnchor); + if (cursor.hasSelection()) { + cursor.setPosition(forward ? cursor.position() : cursor.anchor(), + QTextCursor::MoveAnchor); + } QTextCursor newCursor = cursor; @@ -967,10 +985,10 @@ void CentralWidget::createSearchWidget(QHelpSearchEngine *searchEngine) { if (!m_searchWidget) { m_searchWidget = new SearchWidget(searchEngine, this); - connect(m_searchWidget, SIGNAL(requestShowLink(const QUrl&)), this, - SLOT(setSourceFromSearch(const QUrl&))); - connect(m_searchWidget, SIGNAL(requestShowLinkInNewTab(const QUrl&)), this, - SLOT(setSourceFromSearchInNewTab(const QUrl&))); + connect(m_searchWidget, SIGNAL(requestShowLink(QUrl)), this, + SLOT(setSourceFromSearch(QUrl))); + connect(m_searchWidget, SIGNAL(requestShowLinkInNewTab(QUrl)), this, + SLOT(setSourceFromSearchInNewTab(QUrl))); } tabWidget->insertTab(0, m_searchWidget, tr("Search")); } diff --git a/tools/assistant/tools/assistant/centralwidget.h b/tools/assistant/tools/assistant/centralwidget.h index 75bd8be..a34ba65 100644 --- a/tools/assistant/tools/assistant/centralwidget.h +++ b/tools/assistant/tools/assistant/centralwidget.h @@ -83,6 +83,9 @@ private slots: void updateButtons(); private: + QToolButton* setupToolButton(const QString &text, const QString &icon); + +private: QLineEdit *editFind; QCheckBox *checkCase; QLabel *labelWrapped; diff --git a/tools/assistant/tools/assistant/doc/HOWTO b/tools/assistant/tools/assistant/doc/HOWTO index 0e5b67b..a014347 100644 --- a/tools/assistant/tools/assistant/doc/HOWTO +++ b/tools/assistant/tools/assistant/doc/HOWTO @@ -1,9 +1,8 @@ How to build/ update a new assistant.qch for Assistant internal help -- in case of update: +- update: - open assistant.qdocconf, update year and qt version -- all other cases: - ..\..\..\..\qdoc3\debug\qdoc3.exe assistant.qdocconf will generate an folder html containing all required stuff @@ -12,6 +11,6 @@ How to build/ update a new assistant.qch for Assistant internal help - rebuild assistant -- to test you changes: +- to test your changes: - remove assistant.qch in your cache directory - restart assistant diff --git a/tools/assistant/tools/assistant/doc/assistant.qdocconf b/tools/assistant/tools/assistant/doc/assistant.qdocconf index 0d2271d..aca97ed 100644 --- a/tools/assistant/tools/assistant/doc/assistant.qdocconf +++ b/tools/assistant/tools/assistant/doc/assistant.qdocconf @@ -10,8 +10,7 @@ description = "Qt Assistant" HTML.{postheader,address} = "" HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \ "<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \ - "<td width=\"30%\" align=\"left\">Copyright © 2009 Nokia Corporation " \ - "and/or its subsidiary(-ies)</td>\n" \ + "<td width=\"30%\" align=\"left\">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \ "<td width=\"40%\" align=\"center\">Trademarks</td>\n" \ - "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt 4.5.1</div></td>\n" \ + "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt 4.5.2</div></td>\n" \ "</tr></table></div></address>" diff --git a/tools/assistant/tools/assistant/helpviewer.cpp b/tools/assistant/tools/assistant/helpviewer.cpp index f7225fa..5726136 100644 --- a/tools/assistant/tools/assistant/helpviewer.cpp +++ b/tools/assistant/tools/assistant/helpviewer.cpp @@ -269,7 +269,10 @@ bool HelpPage::acceptNavigationRequest(QWebFrame *, } HelpViewer::HelpViewer(QHelpEngine *engine, CentralWidget *parent) - : QWebView(parent), helpEngine(engine), parentWidget(parent) + : QWebView(parent) + , helpEngine(engine) + , parentWidget(parent) + , loadFinished(false) { setAcceptDrops(false); @@ -295,10 +298,12 @@ HelpViewer::HelpViewer(QHelpEngine *engine, CentralWidget *parent) connect(page(), SIGNAL(linkHovered(QString, QString, QString)), this, SIGNAL(highlighted(QString))); connect(this, SIGNAL(urlChanged(QUrl)), this, SIGNAL(sourceChanged(QUrl))); + connect(this, SIGNAL(loadFinished(bool)), this, SLOT(setLoadFinished(bool))); } void HelpViewer::setSource(const QUrl &url) { + loadFinished = false; if (url.toString() == QLatin1String("help")) { load(QUrl(QLatin1String("qthelp://com.trolltech.com." "assistantinternal_1.0.0/assistant/assistant.html"))); @@ -385,6 +390,12 @@ void HelpViewer::mousePressEvent(QMouseEvent *event) QWebView::mousePressEvent(event); } +void HelpViewer::setLoadFinished(bool ok) +{ + loadFinished = ok; + emit sourceChanged(url()); +} + #else // !defined(QT_NO_WEBKIT) HelpViewer::HelpViewer(QHelpEngine *engine, CentralWidget *parent) diff --git a/tools/assistant/tools/assistant/helpviewer.h b/tools/assistant/tools/assistant/helpviewer.h index eea7340..37545c7 100644 --- a/tools/assistant/tools/assistant/helpviewer.h +++ b/tools/assistant/tools/assistant/helpviewer.h @@ -92,6 +92,10 @@ public: { return pageAction(QWebPage::Forward)->isEnabled(); } inline bool isBackwardAvailable() const { return pageAction(QWebPage::Back)->isEnabled(); } + inline bool hasLoadFinished() const + { return loadFinished; } + inline qreal zoom() const + { return textSizeMultiplier(); } public Q_SLOTS: void home(); @@ -111,10 +115,12 @@ protected: private Q_SLOTS: void actionChanged(); + void setLoadFinished(bool ok); private: QHelpEngine *helpEngine; CentralWidget* parentWidget; + bool loadFinished; }; #else diff --git a/tools/assistant/tools/assistant/indexwindow.cpp b/tools/assistant/tools/assistant/indexwindow.cpp index 0beb5ee..a2c0950 100644 --- a/tools/assistant/tools/assistant/indexwindow.cpp +++ b/tools/assistant/tools/assistant/indexwindow.cpp @@ -197,6 +197,8 @@ void IndexWindow::open(QHelpIndexWidget* indexWidget, const QModelIndex &index) url = tc.link(); } else if (links.count() == 1) { url = links.constBegin().value(); + } else { + return; } if (url.path().endsWith(QLatin1String(".pdf"), Qt::CaseInsensitive)) diff --git a/tools/assistant/tools/assistant/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp index bcafacc..6e22413 100644 --- a/tools/assistant/tools/assistant/mainwindow.cpp +++ b/tools/assistant/tools/assistant/mainwindow.cpp @@ -86,9 +86,9 @@ QT_BEGIN_NAMESPACE MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent) : QMainWindow(parent) + , m_filterCombo(0) , m_toolBarMenu(0) , m_cmdLine(cmdLine) - , m_searchWidget(0) , m_progressWidget(0) , m_qtDocInstaller(0) , m_connectedInitSignals(false) @@ -125,20 +125,7 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent) connect(searchEngine, SIGNAL(indexingStarted()), this, SLOT(indexingStarted())); connect(searchEngine, SIGNAL(indexingFinished()), this, SLOT(indexingFinished())); -#ifdef QT_CLUCENE_SUPPORT m_centralWidget->createSearchWidget(searchEngine); -#else - QDockWidget *dock = new QDockWidget(tr("Search"), this); - dock->setObjectName(QLatin1String("SearchWindow")); - m_searchWidget = new SearchWidget(searchEngine, this); - dock->setWidget(m_searchWidget); - addDockWidget(Qt::LeftDockWidgetArea, dock); - - connect(m_searchWidget, SIGNAL(requestShowLink(const QUrl&)), - m_centralWidget, SLOT(setSource(const QUrl&))); - connect(m_searchWidget, SIGNAL(requestShowLinkInNewTab(const QUrl&)), - m_centralWidget, SLOT(setSourceInNewTab(const QUrl&))); -#endif QString defWindowTitle = tr("Qt Assistant"); setWindowTitle(defWindowTitle); @@ -228,6 +215,20 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent) else if (m_cmdLine->bookmarks() == CmdLineParser::Activate) showBookmarks(); + if (!m_cmdLine->currentFilter().isEmpty()) { + const QString &curFilter = m_cmdLine->currentFilter(); + m_helpEngine->setCurrentFilter(curFilter); + if (m_filterCombo) { + int idx = m_filterCombo->findText(curFilter); + if (idx >= 0) { + bool blocked = m_filterCombo->signalsBlocked(); + m_filterCombo->blockSignals(true); + m_filterCombo->setCurrentIndex(idx); + m_filterCombo->blockSignals(blocked); + } + } + } + if (usesDefaultCollection()) QTimer::singleShot(0, this, SLOT(lookForNewQtDocumentation())); else @@ -304,6 +305,7 @@ bool MainWindow::initHelpDB() hc.addCustomFilter(tr("Unfiltered"), QStringList()); hc.setCustomValue(unfiltered, 1); } + m_helpEngine->blockSignals(true); m_helpEngine->setCurrentFilter(tr("Unfiltered")); m_helpEngine->blockSignals(false); @@ -318,10 +320,10 @@ bool MainWindow::initHelpDB() void MainWindow::lookForNewQtDocumentation() { m_qtDocInstaller = new QtDocInstaller(m_helpEngine->collectionFile()); - connect(m_qtDocInstaller, SIGNAL(errorMessage(const QString&)), - this, SLOT(displayInstallationError(const QString&))); - connect(m_qtDocInstaller, SIGNAL(docsInstalled(bool)), - this, SLOT(qtDocumentationInstalled(bool))); + connect(m_qtDocInstaller, SIGNAL(errorMessage(QString)), this, + SLOT(displayInstallationError(QString))); + connect(m_qtDocInstaller, SIGNAL(docsInstalled(bool)), this, + SLOT(qtDocumentationInstalled(bool))); QString versionKey = QString(QLatin1String("qtVersion%1$$$qt")). arg(QLatin1String(QT_VERSION_STR)); @@ -353,8 +355,8 @@ void MainWindow::checkInitState() if (!m_connectedInitSignals) { connect(m_helpEngine->contentModel(), SIGNAL(contentsCreated()), this, SLOT(checkInitState())); - connect(m_helpEngine->indexModel(), SIGNAL(indexCreated()), - this, SLOT(checkInitState())); + connect(m_helpEngine->indexModel(), SIGNAL(indexCreated()), this, + SLOT(checkInitState())); m_connectedInitSignals = true; } } else { @@ -601,8 +603,8 @@ void MainWindow::setupFilterToolbar() connect(m_helpEngine, SIGNAL(setupFinished()), this, SLOT(setupFilterCombo())); - connect(m_filterCombo, SIGNAL(activated(const QString&)), this, - SLOT(filterDocumentation(const QString&))); + connect(m_filterCombo, SIGNAL(activated(QString)), this, + SLOT(filterDocumentation(QString))); setupFilterCombo(); } @@ -626,12 +628,12 @@ void MainWindow::setupAddressToolbar() toolBarMenu()->addAction(addressToolBar->toggleViewAction()); // address lineedit - connect(m_addressLineEdit, SIGNAL(returnPressed()), - this, SLOT(gotoAddress())); - connect(m_centralWidget, SIGNAL(currentViewerChanged()), - this, SLOT(showNewAddress())); - connect(m_centralWidget, SIGNAL(sourceChanged(const QUrl&)), - this, SLOT(showNewAddress(const QUrl&))); + connect(m_addressLineEdit, SIGNAL(returnPressed()), this, + SLOT(gotoAddress())); + connect(m_centralWidget, SIGNAL(currentViewerChanged()), this, + SLOT(showNewAddress())); + connect(m_centralWidget, SIGNAL(sourceChanged(QUrl)), this, + SLOT(showNewAddress(QUrl))); } void MainWindow::updateAboutMenuText() @@ -712,10 +714,10 @@ void MainWindow::showPreferences() { PreferencesDialog dia(m_helpEngine, this); - connect(&dia, SIGNAL(updateApplicationFont()), - this, SLOT(updateApplicationFont())); - connect(&dia, SIGNAL(updateBrowserFont()), - m_centralWidget, SLOT(updateBrowserFont())); + connect(&dia, SIGNAL(updateApplicationFont()), this, + SLOT(updateApplicationFont())); + connect(&dia, SIGNAL(updateBrowserFont()), m_centralWidget, + SLOT(updateBrowserFont())); dia.showDialog(); } @@ -869,19 +871,12 @@ void MainWindow::activateCurrentCentralWidgetTab() void MainWindow::showSearch() { - if (m_searchWidget) - activateDockWidget(m_searchWidget); - else - m_centralWidget->activateSearch(); + m_centralWidget->activateSearch(); } void MainWindow::hideSearch() { - if (m_searchWidget) { - m_searchWidget->parentWidget()->parentWidget()->hide(); - } else { - m_centralWidget->removeSearchWidget(); - } + m_centralWidget->removeSearchWidget(); } void MainWindow::updateApplicationFont() @@ -950,8 +945,7 @@ QWidget* MainWindow::setupBookmarkWidget() { m_bookmarkManager = new BookmarkManager(m_helpEngine); m_bookmarkWidget = new BookmarkWidget(m_bookmarkManager, this); - connect(m_bookmarkWidget, SIGNAL(addBookmark()), - this, SLOT(addBookmark())); + connect(m_bookmarkWidget, SIGNAL(addBookmark()), this, SLOT(addBookmark())); return m_bookmarkWidget; } diff --git a/tools/assistant/tools/assistant/mainwindow.h b/tools/assistant/tools/assistant/mainwindow.h index c716b1c..1bd8005 100644 --- a/tools/assistant/tools/assistant/mainwindow.h +++ b/tools/assistant/tools/assistant/mainwindow.h @@ -62,8 +62,6 @@ class BookmarkWidget; class CmdLineParser; class QtDocInstaller; -class SearchWidget; - class MainWindow : public QMainWindow { Q_OBJECT @@ -159,7 +157,6 @@ private: QMenu *m_toolBarMenu; CmdLineParser *m_cmdLine; - SearchWidget *m_searchWidget; QWidget *m_progressWidget; QtDocInstaller *m_qtDocInstaller; diff --git a/tools/assistant/tools/assistant/searchwidget.cpp b/tools/assistant/tools/assistant/searchwidget.cpp index 000c73d..677e18e 100644 --- a/tools/assistant/tools/assistant/searchwidget.cpp +++ b/tools/assistant/tools/assistant/searchwidget.cpp @@ -70,16 +70,18 @@ SearchWidget::SearchWidget(QHelpSearchEngine *engine, QWidget *parent) QHelpSearchQueryWidget *queryWidget = searchEngine->queryWidget(); vLayout->addWidget(queryWidget); - vLayout->addWidget(resultWidget); - + vLayout->addWidget(resultWidget); + setFocusProxy(queryWidget); connect(queryWidget, SIGNAL(search()), this, SLOT(search())); - connect(resultWidget, SIGNAL(requestShowLink(const QUrl&)), - this, SIGNAL(requestShowLink(const QUrl&))); + connect(resultWidget, SIGNAL(requestShowLink(QUrl)), this, + SIGNAL(requestShowLink(QUrl))); - connect(searchEngine, SIGNAL(searchingStarted()), this, SLOT(searchingStarted())); - connect(searchEngine, SIGNAL(searchingFinished(int)), this, SLOT(searchingFinished(int))); + connect(searchEngine, SIGNAL(searchingStarted()), this, + SLOT(searchingStarted())); + connect(searchEngine, SIGNAL(searchingFinished(int)), this, + SLOT(searchingFinished(int))); QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget); browser->viewport()->installEventFilter(this); @@ -92,10 +94,6 @@ SearchWidget::~SearchWidget() void SearchWidget::zoomIn() { -#ifndef QT_CLUCENE_SUPPORT - return; -#endif - QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget); if (browser && zoomCount != 10) { zoomCount++; @@ -105,10 +103,6 @@ void SearchWidget::zoomIn() void SearchWidget::zoomOut() { -#ifndef QT_CLUCENE_SUPPORT - return; -#endif - QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget); if (browser && zoomCount != -5) { zoomCount--; @@ -118,10 +112,6 @@ void SearchWidget::zoomOut() void SearchWidget::resetZoom() { -#ifndef QT_CLUCENE_SUPPORT - return; -#endif - if (zoomCount == 0) return; @@ -152,7 +142,8 @@ void SearchWidget::searchingFinished(int hits) bool SearchWidget::eventFilter(QObject* o, QEvent *e) { QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget); - if (browser && o == browser->viewport() && e->type() == QEvent::MouseButtonRelease){ + if (browser && o == browser->viewport() + && e->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = static_cast<QMouseEvent*>(e); QUrl link = resultWidget->linkAt(me->pos()); if (!link.isEmpty() || link.isValid()) { @@ -179,7 +170,6 @@ void SearchWidget::contextMenuEvent(QContextMenuEvent *contextMenuEvent) QMenu menu; QPoint point = contextMenuEvent->globalPos(); -#ifdef QT_CLUCENE_SUPPORT QTextBrowser* browser = qFindChild<QTextBrowser*>(resultWidget); if (!browser) return; @@ -190,22 +180,25 @@ void SearchWidget::contextMenuEvent(QContextMenuEvent *contextMenuEvent) QUrl link = browser->anchorAt(point); - QAction *copyAction = menu.addAction(tr("&Copy") + - QString(QLatin1String("\t") + QString(QKeySequence(Qt::CTRL | Qt::Key_C)))); + QKeySequence keySeq(QKeySequence::Copy); + QAction *copyAction = menu.addAction(tr("&Copy") + QLatin1String("\t") + + keySeq.toString(QKeySequence::NativeText)); copyAction->setEnabled(QTextCursor(browser->textCursor()).hasSelection()); QAction *copyAnchorAction = menu.addAction(tr("Copy &Link Location")); copyAnchorAction->setEnabled(!link.isEmpty() && link.isValid()); - QAction *newTabAction = menu.addAction(tr("Open Link in New Tab") + - QString(QLatin1String("\t") + QString(QKeySequence(Qt::CTRL))) + + keySeq = QKeySequence(Qt::CTRL); + QAction *newTabAction = menu.addAction(tr("Open Link in New Tab") + + QLatin1String("\t") + keySeq.toString(QKeySequence::NativeText) + QLatin1String("LMB")); newTabAction->setEnabled(!link.isEmpty() && link.isValid()); menu.addSeparator(); - QAction *selectAllAction = menu.addAction(tr("Select All") + - QString(QLatin1String("\t") + QString(QKeySequence(Qt::CTRL | Qt::Key_A)))); + keySeq = QKeySequence::SelectAll; + QAction *selectAllAction = menu.addAction(tr("Select All") + + QLatin1String("\t") + keySeq.toString(QKeySequence::NativeText)); QAction *usedAction = menu.exec(mapToGlobal(contextMenuEvent->pos())); if (usedAction == copyAction) { @@ -222,25 +215,10 @@ void SearchWidget::contextMenuEvent(QContextMenuEvent *contextMenuEvent) } else if (usedAction == newTabAction) { emit requestShowLinkInNewTab(link); - } + } else if (usedAction == selectAllAction) { browser->selectAll(); } -#else - point = resultWidget->mapFromGlobal(point); - QUrl link = resultWidget->linkAt(point); - if (link.isEmpty() || !link.isValid()) - return; - - QAction *curTab = menu.addAction(tr("Open Link")); - QAction *newTab = menu.addAction(tr("Open Link in New Tab")); - - QAction *action = menu.exec(mapToGlobal(contextMenuEvent->pos())); - if (curTab == action) - emit requestShowLink(link); - else if (newTab == action) - emit requestShowLinkInNewTab(link); -#endif } QT_END_NAMESPACE diff --git a/tools/assistant/translations/qt_help.pro b/tools/assistant/translations/qt_help.pro index 1684ac5..efad6bf 100644 --- a/tools/assistant/translations/qt_help.pro +++ b/tools/assistant/translations/qt_help.pro @@ -43,7 +43,6 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/qt_help_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_pl.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_untranslated.ts \ - $$[QT_INSTALL_TRANSLATIONS]/qt_help_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_TW.ts error("This is a dummy profile to be used for translations ONLY.") diff --git a/tools/assistant/translations/translations.pro b/tools/assistant/translations/translations.pro index 84bde8c..58de554 100644 --- a/tools/assistant/translations/translations.pro +++ b/tools/assistant/translations/translations.pro @@ -44,6 +44,5 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_pl.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_untranslated.ts \ - $$[QT_INSTALL_TRANSLATIONS]/assistant_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_zh_TW.ts diff --git a/tools/assistant/translations/translations_adp.pro b/tools/assistant/translations/translations_adp.pro index f6ab62e..e3edca4 100644 --- a/tools/assistant/translations/translations_adp.pro +++ b/tools/assistant/translations/translations_adp.pro @@ -35,7 +35,6 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_pl.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_untranslated.ts \ - $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_TW.ts error("This is a dummy profile to be used for translations ONLY.") diff --git a/tools/designer/src/uitools/quiloader.cpp b/tools/designer/src/uitools/quiloader.cpp index d3d1d54..67bd29c 100644 --- a/tools/designer/src/uitools/quiloader.cpp +++ b/tools/designer/src/uitools/quiloader.cpp @@ -259,9 +259,9 @@ public: const int row_cnt = tablew->rowCount(); const int col_cnt = tablew->columnCount(); for (int j = 0; j < col_cnt; ++j) - reTranslateTableItem(tablew->verticalHeaderItem(j), m_className); + reTranslateTableItem(tablew->horizontalHeaderItem(j), m_className); for (int i = 0; i < row_cnt; ++i) { - reTranslateTableItem(tablew->horizontalHeaderItem(i), m_className); + reTranslateTableItem(tablew->verticalHeaderItem(i), m_className); for (int j = 0; j < col_cnt; ++j) reTranslateTableItem(tablew->item(i, j), m_className); } diff --git a/tools/designer/translations/translations.pro b/tools/designer/translations/translations.pro index 7294956..8395259 100644 --- a/tools/designer/translations/translations.pro +++ b/tools/designer/translations/translations.pro @@ -133,7 +133,6 @@ HEADERS += ../../shared/findwidget/abstractfindwidget.h \ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/designer_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_pl.ts \ - $$[QT_INSTALL_TRANSLATIONS]/designer_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_zh_TW.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_untranslated.ts diff --git a/tools/linguist/linguist/linguist.pro b/tools/linguist/linguist/linguist.pro index 417ef67..968293a 100644 --- a/tools/linguist/linguist/linguist.pro +++ b/tools/linguist/linguist/linguist.pro @@ -100,7 +100,6 @@ RESOURCES += linguist.qrc TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/linguist_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_pl.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_untranslated.ts \ - $$[QT_INSTALL_TRANSLATIONS]/linguist_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_zh_TW.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_de.ts \ diff --git a/tools/linguist/linguist/messageeditor.cpp b/tools/linguist/linguist/messageeditor.cpp index dc8b8e4..53cbbea 100644 --- a/tools/linguist/linguist/messageeditor.cpp +++ b/tools/linguist/linguist/messageeditor.cpp @@ -133,19 +133,12 @@ void MessageEditor::setupEditorPage() QFrame *editorPage = new QFrame; editorPage->setObjectName(QLatin1String("editorPage")); - // Due to CSS being rather broken on the Mac style at the moment, only - // use the border-image on non-Mac systems. editorPage->setStyleSheet(QLatin1String( -#ifndef Q_WS_MAC "QFrame#editorPage { border-image: url(:/images/transbox.png) 12 16 16 12 repeat;" " border-width: 12px 16px 16px 12px; }" -#endif "QFrame#editorPage { background-color: white; }" "QLabel { font-weight: bold; }" )); -#ifdef Q_WS_MAC - editorPage->setFrameStyle(QFrame::StyledPanel | QFrame::Raised); -#endif editorPage->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); m_source = new FormWidget(tr("Source text"), false); diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro index 3268585..2bba8fb 100644 --- a/tools/qdoc3/qdoc3.pro +++ b/tools/qdoc3/qdoc3.pro @@ -99,10 +99,3 @@ SOURCES += apigenerator.cpp \ webxmlgenerator.cpp \ yyindent.cpp - -win32 { - QT_WINCONFIG = release - CONFIG(debug, debug|release) { - QT_WINCONFIG = debug - } -} diff --git a/tools/qdoc3/test/assistant.qdocconf b/tools/qdoc3/test/assistant.qdocconf index 7bb6bbf..a3213c6 100644 --- a/tools/qdoc3/test/assistant.qdocconf +++ b/tools/qdoc3/test/assistant.qdocconf @@ -13,11 +13,11 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Assistant qhp.Assistant.file = assistant.qhp -qhp.Assistant.namespace = com.trolltech.assistant.450 +qhp.Assistant.namespace = com.trolltech.assistant.452 qhp.Assistant.virtualFolder = qdoc qhp.Assistant.indexTitle = Qt Assistant Manual qhp.Assistant.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png -qhp.Assistant.filterAttributes = qt 4.5.0 tools assistant +qhp.Assistant.filterAttributes = qt 4.5.2 tools assistant qhp.Assistant.customFilters.Assistant.name = Qt Assistant Manual qhp.Assistant.customFilters.Assistant.filterAttributes = qt tools assistant qhp.Assistant.subprojects = manual examples diff --git a/tools/qdoc3/test/carbide-eclipse-integration.qdocconf b/tools/qdoc3/test/carbide-eclipse-integration.qdocconf index 683048d..7fe489e 100644 --- a/tools/qdoc3/test/carbide-eclipse-integration.qdocconf +++ b/tools/qdoc3/test/carbide-eclipse-integration.qdocconf @@ -6,7 +6,7 @@ macro.TheEclipseIntegration = Carbide.c++ 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 © 2009 <a href=\"http://doc.trolltech.com/trolltech.html\">Nokia Corporation</a></td>\n" \ - "<td width=\"30%\" align=\"center\"><a href=\"http://doc.trolltech.com\">Trademarks</a></td>\n" \ - "<td width=\"40%\" align=\"right\"><div align=\"right\">Carbide.c++</div></td>\n" \ + "<td width=\"30%\" align=\"left\">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \ + "<td width=\"40%\" align=\"center\"><a href=\"http://doc.trolltech.com\">Trademarks</a></td>\n" \ + "<td width=\"30%\" align=\"right\"><div align=\"right\">Carbide.c++</div></td>\n" \ "</tr></table></div></address>" diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf index 26636cd..63226f6 100644 --- a/tools/qdoc3/test/designer.qdocconf +++ b/tools/qdoc3/test/designer.qdocconf @@ -13,11 +13,11 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Designer qhp.Designer.file = designer.qhp -qhp.Designer.namespace = com.trolltech.designer.450 +qhp.Designer.namespace = com.trolltech.designer.452 qhp.Designer.virtualFolder = qdoc qhp.Designer.indexTitle = Qt Designer Manual qhp.Designer.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png -qhp.Designer.filterAttributes = qt 4.5.0 tools designer +qhp.Designer.filterAttributes = qt 4.5.2 tools designer qhp.Designer.customFilters.Designer.name = Qt Designer Manual qhp.Designer.customFilters.Designer.filterAttributes = qt tools designer qhp.Designer.subprojects = manual examples diff --git a/tools/qdoc3/test/jambi.qdocconf b/tools/qdoc3/test/jambi.qdocconf index 3644b69..5288b22 100644 --- a/tools/qdoc3/test/jambi.qdocconf +++ b/tools/qdoc3/test/jambi.qdocconf @@ -41,7 +41,7 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0 HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \ "<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \ - "<td width=\"30%\">Copyright © \$THISYEAR\$ <a href=\"trolltech.html\">Trolltech</a></td>\n" \ + "<td width=\"30%\" align=\"left\">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \ "<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \ "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt Jambi \\version</div></td>\n" \ "</tr></table></div></address>" diff --git a/tools/qdoc3/test/linguist.qdocconf b/tools/qdoc3/test/linguist.qdocconf index 5e889a8..8e33e4b 100644 --- a/tools/qdoc3/test/linguist.qdocconf +++ b/tools/qdoc3/test/linguist.qdocconf @@ -13,11 +13,11 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Linguist qhp.Linguist.file = linguist.qhp -qhp.Linguist.namespace = com.trolltech.linguist.450 +qhp.Linguist.namespace = com.trolltech.linguist.452 qhp.Linguist.virtualFolder = qdoc qhp.Linguist.indexTitle = Qt Linguist Manual qhp.Linguist.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png -qhp.Linguist.filterAttributes = qt 4.5.0 tools linguist +qhp.Linguist.filterAttributes = qt 4.5.2 tools linguist qhp.Linguist.customFilters.Linguist.name = Qt Linguist Manual qhp.Linguist.customFilters.Linguist.filterAttributes = qt tools linguist qhp.Linguist.subprojects = manual examples diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf index c357cfb..4e735b0 100644 --- a/tools/qdoc3/test/qmake.qdocconf +++ b/tools/qdoc3/test/qmake.qdocconf @@ -13,11 +13,11 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = qmake qhp.qmake.file = qmake.qhp -qhp.qmake.namespace = com.trolltech.qmake.450 +qhp.qmake.namespace = com.trolltech.qmake.452 qhp.qmake.virtualFolder = qdoc qhp.qmake.indexTitle = QMake Manual qhp.qmake.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png -qhp.qmake.filterAttributes = qt 4.5.0 tools qmake +qhp.qmake.filterAttributes = qt 4.5.2 tools qmake qhp.qmake.customFilters.qmake.name = qmake Manual qhp.qmake.customFilters.qmake.filterAttributes = qt tools qmake qhp.qmake.subprojects = manual diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf index 25cdc5a..f7cd498 100644 --- a/tools/qdoc3/test/qt-build-docs.qdocconf +++ b/tools/qdoc3/test/qt-build-docs.qdocconf @@ -20,10 +20,10 @@ edition.DesktopLight.groups = -graphicsview-api qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.450 +qhp.Qt.namespace = com.trolltech.qt.452 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation -qhp.Qt.indexRoot = +qhp.Qt.indexRoot = # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML @@ -33,11 +33,11 @@ qhp.Qt.extraFiles = classic.css \ images/taskmenuextension-example.png \ images/coloreditorfactoryimage.png \ images/dynamiclayouts-example.png \ - images/stylesheet-coffee-plastique.png + images/stylesheet-coffee-plastique.png -qhp.Qt.filterAttributes = qt 4.5.0 qtrefdoc -qhp.Qt.customFilters.Qt.name = Qt 4.5.0 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.0 +qhp.Qt.filterAttributes = qt 4.5.2 qtrefdoc +qhp.Qt.customFilters.Qt.name = Qt 4.5.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.2 qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes @@ -105,7 +105,8 @@ exampledirs = $QT_SOURCE_TREE/doc/src \ $QT_SOURCE_TREE/examples \ $QT_SOURCE_TREE/examples/tutorials \ $QT_SOURCE_TREE \ - $QT_SOURCE_TREE/qmake/examples + $QT_SOURCE_TREE/qmake/examples \ + $QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/docs imagedirs = $QT_SOURCE_TREE/doc/src/images \ $QT_SOURCE_TREE/examples outputdir = $QT_BUILD_TREE/doc/html diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf index f09192a..dc027d0 100644 --- a/tools/qdoc3/test/qt-html-templates.qdocconf +++ b/tools/qdoc3/test/qt-html-templates.qdocconf @@ -25,8 +25,7 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0 HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \ "<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \ - "<td width=\"30%\" align=\"left\">Copyright © %THISYEAR% Nokia Corporation " \ - "and/or its subsidiary(-ies)</td>\n" \ + "<td width=\"30%\" align=\"left\">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \ "<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \ "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \ "</tr></table></div></address>" diff --git a/tools/qdoc3/test/qt-inc.qdocconf b/tools/qdoc3/test/qt-inc.qdocconf index 97893dc..7255a67 100644 --- a/tools/qdoc3/test/qt-inc.qdocconf +++ b/tools/qdoc3/test/qt-inc.qdocconf @@ -20,7 +20,8 @@ headerdirs = $QDOC_CURRENT_DIR exampledirs = $QTDIR/doc/src \ $QTDIR/examples \ $QTDIR \ - $QTDIR/qmake/examples + $QTDIR/qmake/examples \ + $QTDIR/src/3rdparty/webkit/WebKit/qt/docs imagedirs = $QTDIR/doc/src/images \ $QTDIR/examples outputdir = $QTDIR/doc/html @@ -140,7 +141,7 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0 HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \ "<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \ - "<td width=\"30%\">Copyright © %THISYEAR% <a href=\"trolltech.html\">Trolltech</a></td>\n" \ + "<td width=\"30%\" align=\"left\">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \ "<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \ "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \ "</tr></table></div></address>" diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf index 4d401a4..57eaf7a 100644 --- a/tools/qdoc3/test/qt.qdocconf +++ b/tools/qdoc3/test/qt.qdocconf @@ -22,10 +22,10 @@ edition.DesktopLight.groups = -graphicsview-api qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.451 +qhp.Qt.namespace = com.trolltech.qt.452 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation -qhp.Qt.indexRoot = +qhp.Qt.indexRoot = # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML @@ -35,11 +35,11 @@ qhp.Qt.extraFiles = classic.css \ images/taskmenuextension-example.png \ images/coloreditorfactoryimage.png \ images/dynamiclayouts-example.png \ - images/stylesheet-coffee-plastique.png + images/stylesheet-coffee-plastique.png -qhp.Qt.filterAttributes = qt 4.5.0 qtrefdoc -qhp.Qt.customFilters.Qt.name = Qt 4.5.0 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.0 +qhp.Qt.filterAttributes = qt 4.5.2 qtrefdoc +qhp.Qt.customFilters.Qt.name = Qt 4.5.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.2 qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes @@ -107,7 +107,8 @@ exampledirs = $QTDIR/doc/src \ $QTDIR/examples \ $QTDIR/examples/tutorials \ $QTDIR \ - $QTDIR/qmake/examples + $QTDIR/qmake/examples \ + $QTDIR/src/3rdparty/webkit/WebKit/qt/docs imagedirs = $QTDIR/doc/src/images \ $QTDIR/examples outputdir = $QTDIR/doc/html diff --git a/tools/qdoc3/test/standalone-eclipse-integration.qdocconf b/tools/qdoc3/test/standalone-eclipse-integration.qdocconf index c3c4291..08b6070 100644 --- a/tools/qdoc3/test/standalone-eclipse-integration.qdocconf +++ b/tools/qdoc3/test/standalone-eclipse-integration.qdocconf @@ -5,7 +5,7 @@ macro.TheEclipseIntegration = The Qt Eclipse Integration 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 © 2009 <a href=\"http://doc.trolltech.com\">Nokia Corporation</a></td>\n" \ - "<td width=\"30%\" align=\"center\"><a href=\"http://doc.trolltech.com/trademarks.html\">Trademarks</a></td>\n" \ - "<td width=\"40%\" align=\"right\"><div align=\"right\">Qt Eclipse Integration 1.4.3</div></td>\n" \ + "<td width=\"30%\" align=\"left\">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \ + "<td width=\"40%\" align=\"center\"><a href=\"http://doc.trolltech.com/trademarks.html\">Trademarks</a></td>\n" \ + "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt Eclipse Integration 1.4.3</div></td>\n" \ "</tr></table></div></address>" diff --git a/tools/tools.pro b/tools/tools.pro index ffc5d63..3325a57 100644 --- a/tools/tools.pro +++ b/tools/tools.pro @@ -15,7 +15,7 @@ no-png { SUBDIRS += linguist wince*: SUBDIRS = qtestlib designer unix:!mac:!embedded:contains(QT_CONFIG, qt3support):SUBDIRS += qtconfig - win32:!wince*:!contains(QT_EDITION, OpenSource|Console):SUBDIRS += activeqt + win32:!wince*:SUBDIRS += activeqt } mac { diff --git a/translations/assistant_adp_tr_TR.ts b/translations/assistant_adp_tr_TR.ts deleted file mode 100644 index bb86689..0000000 --- a/translations/assistant_adp_tr_TR.ts +++ /dev/null @@ -1,967 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.0"> -<context> - <name>AssistantServer</name> - <message> - <location filename="../tools/assistant/compat/main.cpp" line="+225"/> - <source>Qt Assistant</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Failed to bind to port %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FontPanel</name> - <message> - <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/> - <source>Font</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>&Writing system</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Family</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Style</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Point size</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FontSettingsDialog</name> - <message> - <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+63"/> - <source>Font Settings</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Font settings for:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Application</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Use custom settings</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>HelpDialog</name> - <message> - <location filename="../tools/assistant/compat/helpdialog.cpp" line="+279"/> - <source>Open Link in Current Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Open Link in New Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Open Link in New Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+73"/> - <location line="+82"/> - <source>Prepare...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-64"/> - <location line="+16"/> - <location line="+661"/> - <source>Qt Assistant</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-677"/> - <source>Failed to load keyword index file -Assistant will not work!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>Cannot open the index file %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+58"/> - <location line="+124"/> - <location line="+8"/> - <source>Warning</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-131"/> - <location line="+124"/> - <source>Documentation file %1 does not exist! -Skipping file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-112"/> - <location line="+133"/> - <source>Parse Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-13"/> - <source>Documentation file %1 is not compatible! -Skipping file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+48"/> - <location line="+469"/> - <source>Done</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-47"/> - <source>Failed to save fulltext search index -Assistant will not work!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>Indexing files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Reading dictionary...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+46"/> - <location line="+9"/> - <source>Full Text Search</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-8"/> - <source>Using a wildcard within phrases is not allowed.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>The closing quotation mark is missing.</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+7"/> - <source>%n document(s) found.</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location filename="../tools/assistant/compat/helpdialog.ui"/> - <source>Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source><b>Help</b><p>Choose the topic you want help on from the contents list, or search the index for keywords.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Displays help topics organized by category, index or bookmarks. Another tab inherits the full text search.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Con&tents</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source><b>Help topics organized by category.</b><p>Double-click an item to see the topics in that category. To view a topic, just double-click it.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>column 1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Index</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Look For:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Enter keyword</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source><b>Enter a keyword.</b><p>The list will select an item that matches the entered string best.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source><b>List of available help topics.</b><p>Double-click on an item to open its help page. If more than one is found, you must specify which page you want.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Bookmarks</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Displays the list of bookmarks.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add new bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add the currently displayed page as a new bookmark.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&New</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Delete bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Delete the selected bookmark.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Search</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Searching f&or:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Enter searchword(s).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source><b>Enter search word(s).</b><p>Enter here the word(s) you are looking for. The words may contain wildcards (*). For a sequence of words quote them.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source><b>Found documents</b><p>This list contains all found documents from the last search. The documents are ordered, i.e. the first document has the most matches.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Found &Documents:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Display the help page.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Display the help page for the full text search.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>He&lp</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Start searching.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Pressing this button starts the search.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Preparing...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>HelpWindow</name> - <message> - <location filename="../tools/assistant/compat/helpwindow.cpp" line="+97"/> - <source>Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Unable to launch web browser. -</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>OK</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <source>Failed to open link: '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source><div align="center"><h1>The page could not be found</h1><br><h3>'%1'</h3></div></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Error...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+56"/> - <source>Copy &Link Location</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Open Link in New Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Open Link in New Window Shift+LMB</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Index</name> - <message> - <location filename="../tools/assistant/compat/index.cpp" line="+385"/> - <source>Untitled</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MainWindow</name> - <message> - <location filename="../tools/assistant/compat/mainwindow.cpp" line="+103"/> - <source>Sidebar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <source>&Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Minimize</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+M</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>Initializing Qt Assistant...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+26"/> - <source>SHIFT+CTRL+=</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Ctrl+T</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+I</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+B</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+S</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+[</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Views</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+80"/> - <source>Displays the main page of a specific documentation set.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+49"/> - <location line="+1"/> - <source>Qt Assistant</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>Failed to open about application contents in file: '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+201"/> - <source>...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+238"/> - <location line="+6"/> - <source>Save Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>Cannot open file for writing!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/assistant/compat/mainwindow.ui"/> - <source>Qt Assistant by Nokia</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Go</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Boo&kmarks</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Go</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Edit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Print...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Print the currently displayed page.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+P</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>E&xit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Quit Qt Assistant.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Copy the selected text to the clipboard.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+C</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Find in Text...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Open the Find dialog. Qt Assistant will search the currently displayed page for the text you enter.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+F</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Find &Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>F3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Find &Previous</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Shift+F3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Home</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Go to the home page. Qt Assistant's home page is the Qt Reference Documentation.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Home</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Previous</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Go to the previous page.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Alt+Left</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Go to the next page.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Alt+Right</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>About Qt Assistant</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Display further information about Qt Assistant.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>About Qt</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Zoom &in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Zoom in on the document, i.e. increase the font size.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl++</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Zoom &out</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Zoom out on the document, i.e. decrease the font size.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+-</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>New Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Open a new window.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+N</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Close</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Close the current window.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+W</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Add Bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add the currently displayed page as a new bookmark.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>What's This?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>"What's This?" context sensitive help.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Shift+F1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Alt+N</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Next Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Alt+Right</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Previous Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Alt+Left</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Close Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Alt+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Qt Assistant Manual</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>F1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Save Page As...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Alt+S</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Sync with Table of Contents</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Select the page in contents tab.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Font Settings...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QObject</name> - <message> - <location filename="../tools/assistant/compat/config.cpp" line="+350"/> - <source>Qt Assistant by Nokia</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TabbedBrowser</name> - <message> - <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+149"/> - <source>...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+86"/> - <source>Add page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Close page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+243"/> - <source>New Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Close Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Close Other Tabs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/assistant/compat/tabbedbrowser.ui"/> - <source>TabbedBrowser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Untitled</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Previous</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Case Sensitive</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Whole words</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TopicChooser</name> - <message> - <location filename="../tools/assistant/compat/topicchooser.cpp" line="+56"/> - <source>Choose a topic for <b>%1</b></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/assistant/compat/topicchooser.ui"/> - <source>Choose Topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Select a topic from the list and click the <b>Display</b>-button to open the online help.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Topics</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Displays a list of available help topics for the keyword.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Open the topic selected in the list.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Display</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Close the Dialog.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Close</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/translations/assistant_tr_TR.ts b/translations/assistant_tr_TR.ts deleted file mode 100644 index 0ca29df..0000000 --- a/translations/assistant_tr_TR.ts +++ /dev/null @@ -1,1059 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.0"> -<context> - <name>AboutDialog</name> - <message> - <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/> - <source>&Close</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>AboutLabel</name> - <message> - <location line="-14"/> - <source>Warning</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Unable to launch external application. -</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>OK</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BookmarkDialog</name> - <message> - <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/> - <source>Add Bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Bookmark:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add in Folder:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>+</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>New Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+185"/> - <location line="+18"/> - <location line="+36"/> - <location line="+24"/> - <location line="+32"/> - <source>Bookmarks</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-69"/> - <source>Delete Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Rename Folder</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BookmarkManager</name> - <message> - <location line="+450"/> - <source>Bookmarks</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+36"/> - <source>Remove</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>You are going to delete a Folder, this will also<br>remove it's content. Are you sure to continue?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+109"/> - <location line="+9"/> - <source>New Folder</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BookmarkWidget</name> - <message> - <location line="-437"/> - <source>Delete Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Rename Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Show Bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Show Bookmark in New Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Delete Bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Rename Bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+38"/> - <source>Filter:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>Add</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CentralWidget</name> - <message> - <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+195"/> - <source>Add new page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Close current page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+265"/> - <source>Print Document</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+147"/> - <location line="+2"/> - <source>unknown</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+96"/> - <source>Add New Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Close This Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Close Other Pages</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Add Bookmark for this Page...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+257"/> - <source>Search</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ContentWindow</name> - <message> - <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+155"/> - <source>Open Link</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Open Link in New Tab</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterNameDialogClass</name> - <message> - <location filename="../tools/assistant/tools/assistant/filternamedialog.ui"/> - <source>Add Filter Name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Filter Name:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FindWidget</name> - <message> - <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-863"/> - <source>Previous</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Case Sensitive</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Whole words</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FontPanel</name> - <message> - <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/> - <source>Font</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>&Writing system</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Family</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Style</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Point size</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>HelpViewer</name> - <message> - <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+281"/> - <source>Open Link in New Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+139"/> - <source><title>Error 404...</title><div align="center"><br><br><h1>The page could not be found</h1><br><h3>'%1'</h3></div></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+61"/> - <source>Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Unable to launch external application. -</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>OK</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+63"/> - <source>Copy &Link Location</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Open Link in New Tab Ctrl+LMB</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>IndexWindow</name> - <message> - <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/> - <source>&Look for:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+68"/> - <source>Open Link</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Open Link in New Tab</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>InstallDialog</name> - <message> - <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+75"/> - <location filename="../tools/assistant/tools/assistant/installdialog.ui"/> - <source>Install Documentation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+30"/> - <source>Downloading documentation info...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+48"/> - <source>Download canceled.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+26"/> - <location line="+78"/> - <location line="+27"/> - <source>Done.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-90"/> - <source>The file %1 already exists. Do you want to overwrite it?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Unable to save the file %1: %2.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Downloading %1...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <location line="+42"/> - <location line="+38"/> - <source>Download failed: %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-70"/> - <source>Documentation info file is corrupt!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+37"/> - <source>Download failed: Downloaded file is corrupted.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Installing documentation %1...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+22"/> - <source>Error while installing documentation: -%1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/assistant/tools/assistant/installdialog.ui"/> - <source>Available Documentation:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Install</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Close</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Installation Path:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MainWindow</name> - <message> - <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/> - <location line="+350"/> - <source>Index</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-344"/> - <location line="+342"/> - <source>Contents</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-337"/> - <location line="+341"/> - <source>Bookmarks</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-329"/> - <location line="+331"/> - <source>Search</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-319"/> - <location line="+192"/> - <location line="+470"/> - <source>Qt Assistant</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-501"/> - <location line="+4"/> - <source>Unfiltered</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <source>Looking for Qt Documentation...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+61"/> - <source>&File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Page Set&up...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Print Preview...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Print...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>New &Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Close Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Quit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>CTRL+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Edit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Copy selected Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>&Find in Text...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Find &Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Find &Previous</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Preferences...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Zoom &in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Zoom &out</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Normal &Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Ctrl+0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>ALT+C</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>ALT+I</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>ALT+O</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>ALT+S</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&Go</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Home</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+Home</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Back</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>&Forward</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Sync with Table of Contents</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Next Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+Alt+Right</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Previous Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+Alt+Left</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Bookmarks</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Add Bookmark...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>CTRL+D</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>About...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Navigation Toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+22"/> - <source>&Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Zoom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Minimize</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+M</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+48"/> - <source>Toolbars</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Filter Toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Filtered by:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>Address Toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Address:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+110"/> - <source>Could not find the associated content item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+81"/> - <source>About %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+115"/> - <source>Updating search index</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>PreferencesDialog</name> - <message> - <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+237"/> - <location line="+7"/> - <location line="+6"/> - <source>Add Documentation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-13"/> - <source>Qt Compressed Help Files (*.qch)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>The specified file is not a valid Qt Help File!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>The namespace %1 is already registered!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>Remove Documentation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Some documents currently opened in Assistant reference the documentation you are attempting to remove. Removing the documentation will close those documents.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>OK</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+86"/> - <source>Use custom settings</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>PreferencesDialogClass</name> - <message> - <location filename="../tools/assistant/tools/assistant/preferencesdialog.ui"/> - <source>Preferences</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Fonts</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Font settings:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Application</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Filter:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Attributes:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Remove</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Documentation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Registered Documentation:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Options</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Homepage</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Current Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Restore to default</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QObject</name> - <message> - <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+158"/> - <location line="+1"/> - <source>Bookmark</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+110"/> - <source>The specified collection file does not exist!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Missing collection file!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Invalid URL!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Missing URL!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <location line="+19"/> - <location line="+19"/> - <source>Unknown widget: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-34"/> - <location line="+19"/> - <location line="+19"/> - <source>Missing widget!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <location line="+12"/> - <source>The specified Qt help file does not exist!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-7"/> - <location line="+12"/> - <source>Missing help file!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Missing filter argument!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>Unknown option: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+30"/> - <location line="+2"/> - <source>Qt Assistant</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/assistant/tools/assistant/main.cpp" line="+190"/> - <source>Could not register documentation file -%1 - -Reason: -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Documentation successfully registered.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Documentation successfully unregistered.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Could not unregister documentation file -%1 - -Reason: -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Cannot load sqlite database driver!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>The specified collection file could not be read!</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RemoteControl</name> - <message> - <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+157"/> - <source>Debugging Remote Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Received Command: %1 %2</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>SearchWidget</name> - <message> - <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+193"/> - <source>&Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Copy &Link Location</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <location line="+36"/> - <source>Open Link in New Tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-29"/> - <source>Select All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+28"/> - <source>Open Link</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TopicChooser</name> - <message> - <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/> - <source>Choose a topic for <b>%1</b>:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/assistant/tools/assistant/topicchooser.ui"/> - <source>Choose Topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Topics</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Display</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Close</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/translations/designer_tr_TR.ts b/translations/designer_tr_TR.ts deleted file mode 100644 index 73ea53e..0000000 --- a/translations/designer_tr_TR.ts +++ /dev/null @@ -1,6950 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.0"> -<context> - <name></name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+73"/> - <source>The moose in the noose -ate the goose who was loose.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+647"/> - <source><object></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <source><signal></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source><slot></source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>AbstractFindWidget</name> - <message> - <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+127"/> - <source>&Previous</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>&Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+24"/> - <source>&Case sensitive</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Whole &words</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source><img src=":/trolltech/shared/images/wrap.png">&nbsp;Search wrapped</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>AddLinkDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/addlinkdialog.ui"/> - <source>Insert Link</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Title:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>URL:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>AppFontDialog</name> - <message> - <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/> - <source>Additional Fonts</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>AppFontManager</name> - <message> - <location line="-267"/> - <source>'%1' is not a file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>The font file '%1' does not have read permissions.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>The font file '%1' is already loaded.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>The font file '%1' could not be loaded.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>'%1' is not a valid font id.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>There is no loaded font matching the id '%1'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>The font '%1' (%2) could not be unloaded.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>AppFontWidget</name> - <message> - <location line="+26"/> - <source>Fonts</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+58"/> - <source>Add font files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Remove current font file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Remove all font files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>Add Font Files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Font files (*.ttf)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>Error Adding Fonts</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+24"/> - <source>Error Removing Fonts</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+22"/> - <source>Remove Fonts</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>Would you like to remove all fonts?</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>AppearanceOptionsWidget</name> - <message> - <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.ui"/> - <source>Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>User Interface Mode</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>AssistantClient</name> - <message> - <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/> - <source>Unable to send request: Assistant is not responding.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+39"/> - <source>The binary '%1' does not exist.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Unable to launch assistant (%1).</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BrushManagerProxy</name> - <message> - <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+221"/> - <source>The element '%1' is missing the required attribute '%2'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Empty brush name encountered.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>An unexpected element '%1' was encountered.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>An error occurred when reading the brush definition file '%1' at line line %2, column %3: %4</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+43"/> - <source>An error occurred when reading the resource file '%1' at line %2, column %3: %4</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BrushPropertyManager</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+52"/> - <source>No brush</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Solid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Dense 1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Dense 2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Dense 3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Dense 4</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Dense 5</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Dense 6</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Dense 7</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Horizontal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Vertical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cross</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Backward diagonal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Forward diagonal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Crossing diagonal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+83"/> - <source>Style</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Color</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+105"/> - <source>[%1, %2]</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Command</name> - <message> - <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/> - <location line="+258"/> - <source>Change signal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-256"/> - <location line="+268"/> - <source>Change slot</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-220"/> - <source>Change signal-slot connection</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+234"/> - <source>Change sender</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <source>Change receiver</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+225"/> - <source>Create button group</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <source>Break button group</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Break button group '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>Add buttons to group</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+458"/> - <source>Add '%1' to '%2'</source> - <extracomment>Command description for adding buttons to a QButtonGroup</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>Remove buttons from group</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Remove '%1' from '%2'</source> - <extracomment>Command description for removing buttons from a QButtonGroup</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/> - <source>Add connection</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+54"/> - <source>Adjust connection</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>Delete connections</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+58"/> - <source>Change source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Change target</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+349"/> - <source>Morph %1/'%2' into %3</source> - <extracomment>MorphWidgetCommand description</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/> - <source>Insert '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+133"/> - <source>Change Z-order of '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>Raise '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> - <source>Lower '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+113"/> - <source>Delete '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+119"/> - <source>Reparent '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+53"/> - <source>Promote to custom widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+42"/> - <source>Demote from custom widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+79"/> - <source>Lay out using grid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Lay out vertically</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Lay out horizontally</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+41"/> - <source>Break layout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+105"/> - <source>Simplify Grid Layout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+135"/> - <location line="+235"/> - <location line="+78"/> - <source>Move Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-279"/> - <location line="+123"/> - <location line="+188"/> - <location line="+666"/> - <source>Delete Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-939"/> - <location line="+123"/> - <source>Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-121"/> - <location line="+309"/> - <location line="+672"/> - <source>page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-978"/> - <location line="+123"/> - <location line="+186"/> - <location line="+667"/> - <source>Insert Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-856"/> - <source>tab</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+209"/> - <source>Change Tab order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+28"/> - <source>Create Menu Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+44"/> - <source>Delete Menu Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+47"/> - <source>Create Status Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+42"/> - <source>Delete Status Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+45"/> - <source>Add Tool Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+59"/> - <source>Add Dock Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+53"/> - <source>Adjust Size of '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+57"/> - <source>Change Form Layout Item Geometry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+95"/> - <source>Change Layout Item Geometry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+138"/> - <source>Delete Subwindow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+44"/> - <source>Insert Subwindow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>subwindow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Subwindow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+391"/> - <source>Change Table Contents</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+107"/> - <source>Change Tree Contents</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+74"/> - <location line="+146"/> - <source>Add action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-120"/> - <location line="+126"/> - <source>Remove action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+53"/> - <source>Add menu</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Remove menu</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Create submenu</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+31"/> - <source>Delete Tool Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="+154"/> - <source>Change layout of '%1' from %2 to %3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1161"/> - <source>Set action text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Insert action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+89"/> - <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+891"/> - <source>Move action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-404"/> - <source>Change Title</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Insert Menu</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1209"/> - <source>Changed '%1' of '%2'</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+3"/> - <source>Changed '%1' of %n objects</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+76"/> - <source>Reset '%1' of '%2'</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+3"/> - <source>Reset '%1' of %n objects</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+89"/> - <source>Add dynamic property '%1' to '%2'</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+3"/> - <source>Add dynamic property '%1' to %n objects</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+86"/> - <source>Remove dynamic property '%1' from '%2'</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+3"/> - <source>Remove dynamic property '%1' from %n objects</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/> - <source>Change script</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/> - <source>Change signals/slots</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ConnectDialog</name> - <message> - <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui"/> - <source>Configure Connection</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>GroupBox</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Edit...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Show signals and slots inherited from QWidget</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DPI_Chooser</name> - <message> - <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+69"/> - <source>Standard (96 x 96)</source> - <extracomment>Embedded device standard screen resolution</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Greenphone (179 x 185)</source> - <extracomment>Embedded device screen resolution</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>High (192 x 192)</source> - <extracomment>Embedded device high definition screen resolution</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Designer</name> - <message> - <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+439"/> - <source>Qt Designer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>This file contains top level spacers.<br>They have <b>NOT</b> been saved into the form.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Perhaps you forgot to create a layout?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+173"/> - <source>Invalid ui file: The root element <ui> is missing.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>An error has occurred while reading the ui file at line %1, column %2: %3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+26"/> - <source>This file cannot be read because it was created using %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>This file was created using Designer from Qt-%1 and cannot be read.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+30"/> - <source>The converted file could not be read.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>This file was created using Designer from Qt-%1 and will be converted to a new form by Qt Designer.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>The old form has not been touched, but you will have to save the form under a new name.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>This file was created using Designer from Qt-%1 and could not be read: -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Please run it through <b>uic3&nbsp;-convert</b> to convert it to Qt-4's ui format.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+51"/> - <source>This file cannot be read because the extra info extension failed to load.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+695"/> - <source>Custom Widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Promoted Widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/> - <source>Unable to launch %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>%1 timed out.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DesignerMetaEnum</name> - <message> - <location line="-513"/> - <source>%1 is not a valid enumeration value of '%2'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>'%1' could not be converted to an enumeration value of type '%2'.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DesignerMetaFlags</name> - <message> - <location line="+78"/> - <source>'%1' could not be converted to a flag value of type '%2'.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DeviceProfile</name> - <message> - <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="+397"/> - <source>'%1' is not a number.</source> - <extracomment>Reading a number for an embedded device profile</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>An invalid tag <%1> was encountered.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DeviceProfileDialog</name> - <message> - <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui"/> - <source>&Family</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Point Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Style</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Device DPI</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DeviceSkin</name> - <message> - <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/> - <source>The image file '%1' could not be loaded.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+64"/> - <source>The skin directory '%1' does not contain a configuration file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>The skin configuration file '%1' could not be opened.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>The skin configuration file '%1' could not be read: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+70"/> - <source>Syntax error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <source>The skin "up" image file '%1' does not exist.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>The skin "down" image file '%1' does not exist.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>The skin "closed" image file '%1' does not exist.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The skin cursor image file '%1' does not exist.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+25"/> - <source>Syntax error in area definition: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+38"/> - <source>Mismatch in number of areas, expected %1, got %2.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>EmbeddedOptionsControl</name> - <message> - <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+311"/> - <source><html><table><tr><td><b>Font</b></td><td>%1, %2</td></tr><tr><td><b>Style</b></td><td>%3</td></tr><tr><td><b>Resolution</b></td><td>%4 x %5</td></tr></table></html></source> - <extracomment>Format embedded device profile description</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>EmbeddedOptionsPage</name> - <message> - <location line="+103"/> - <source>Embedded Design</source> - <extracomment>Tab in preferences dialog</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>Device Profiles</source> - <extracomment>EmbeddedOptionsControl group box"</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FontPanel</name> - <message> - <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/> - <source>Font</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>&Writing system</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Family</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Style</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Point size</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FontPropertyManager</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/> - <source>PreferDefault</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>NoAntialias</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>PreferAntialias</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+61"/> - <source>Antialiasing</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FormBuilder</name> - <message> - <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+351"/> - <source>Invalid stretch value for '%1': '%2'</source> - <extracomment>Parsing layout stretch values</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+62"/> - <source>Invalid minimum size for '%1': '%2'</source> - <extracomment>Parsing grid layout minimum size values</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FormEditorOptionsPage</name> - <message> - <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+91"/> - <source>%1 %</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Preview Zoom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Default Zoom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>Forms</source> - <extracomment>Tab in preferences dialog</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>Default Grid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FormLayoutRowDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui"/> - <source>Add Form Layout Row</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Label text:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Field &type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Field name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Buddy:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Row:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Label &name:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FormWindow</name> - <message> - <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1705"/> - <source>Unexpected element <%1></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Error while pasting clipboard contents at line %1, column %2: %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FormWindowSettings</name> - <message> - <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui"/> - <source>Form Settings</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Layout &Default</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Spacing:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Margin:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Layout Function</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ma&rgin:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Spa&cing:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Pixmap Function</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Include Hints</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Grid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Embedded Design</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Author</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>IconSelector</name> - <message> - <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+353"/> - <source>All Pixmaps (</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ItemPropertyBrowser</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+66"/> - <source>XX Icon Selected off</source> - <extracomment>Sample string to determinate the width for the first column of the list item property browser</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>LanguageResourceDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-235"/> - <source>Choose Resource</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MainWindowBase</name> - <message> - <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/> - <source>Main</source> - <extracomment>Not currently used (main tool bar)</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Edit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Tools</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Qt Designer</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>NewForm</name> - <message> - <location filename="../tools/designer/src/designer/newform.cpp" line="+78"/> - <source>Show this Dialog on Startup</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>C&reate</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Recent</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>New Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>&Close</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Open...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&Recent Forms</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+64"/> - <source>Read error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>A temporary form file could not be created in %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>The temporary form file %1 could not be written.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>NewFormWidget</name> - <message> - <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+495"/> - <source>Unable to open the form template file '%1': %2</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ObjectInspectorModel</name> - <message> - <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+364"/> - <source>Object</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Class</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+35"/> - <source>separator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+98"/> - <source><noname></source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ObjectNameDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+162"/> - <source>Change Object Name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Object Name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>PluginDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/> - <source>Plugin Information</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>PreferencesDialog</name> - <message> - <location filename="../tools/designer/src/designer/preferencesdialog.ui"/> - <source>Preferences</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>PreviewConfigurationWidget</name> - <message> - <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+155"/> - <source>Default</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+22"/> - <source>None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Browse...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui"/> - <source>Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Print/Preview Configuration</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Style</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Style sheet</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Device skin</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>PromotionModel</name> - <message> - <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+116"/> - <source>Not used</source> - <extracomment>Usage of promoted widgets</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Q3WizardContainer</name> - <message> - <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+172"/> - <location line="+5"/> - <source>Page</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QAbstractFormBuilder</name> - <message> - <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/> - <source>Unexpected element <%1></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>An error has occurred while reading the ui file at line %1, column %2: %3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Invalid ui file: The root element <ui> is missing.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+119"/> - <source>The creation of a widget of the class '%1' failed.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+295"/> - <source>Attempt to add child that is not of class QWizardPage to QWizard.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+86"/> - <source>Attempt to add a layout to a widget '%1' (%2) which already has a layout of non-box type %3. -This indicates an inconsistency in the ui-file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+144"/> - <source>Empty widget item in %1 '%2'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+684"/> - <source>Flags property are not supported yet.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+81"/> - <source>While applying tab stops: The widget '%1' could not be found.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+749"/> - <source>Invalid QButtonGroup reference '%1' referenced by '%2'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+518"/> - <source>This version of the uitools library is linked without script support.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QAxWidgetPlugin</name> - <message> - <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/> - <source>ActiveX control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>ActiveX control widget</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QAxWidgetTaskMenu</name> - <message> - <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/> - <source>Set Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Reset Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+41"/> - <source>Licensed Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>The control requires a design-time license</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QCoreApplication</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/> - <source>%1 is not a promoted class.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+65"/> - <source>The base class %1 is invalid.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>The class %1 already exists.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Promoted Widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+126"/> - <source>The class %1 cannot be removed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>The class %1 cannot be removed because it is still referenced.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>The class %1 cannot be renamed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>The class %1 cannot be renamed to an empty name.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>There is already a class named %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>Cannot set an empty include file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/> - <source>Exception at line %1: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+36"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+50"/> - <source>An error occurred while running the script for %1: %2 -Script: %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesigner</name> - <message> - <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/> - <source>%1 - warning</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+96"/> - <source>Qt Designer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>This application cannot be used for the Console edition of Qt</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerActions</name> - <message> - <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+128"/> - <source>Saved %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+26"/> - <source>%1 already exists. -Do you want to replace it?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+24"/> - <source>Edit Widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&New...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Open...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Save</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Save &As...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Save A&ll</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Save As &Template...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <location line="+896"/> - <source>&Close</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-895"/> - <source>Save &Image...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Print...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Quit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>View &Code...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Minimize</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Bring All to Front</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Preferences...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Additional Fonts...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+58"/> - <source>ALT+CTRL+S</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>CTRL+SHIFT+S</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <source>CTRL+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+85"/> - <source>CTRL+R</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <source>CTRL+M</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+31"/> - <source>Qt Designer &Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Current Widget Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>What's New in Qt Designer?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>About Plugins</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <location line="+601"/> - <source>About Qt Designer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-595"/> - <source>About Qt</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+38"/> - <source>Clear &Menu</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>&Recent Forms</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+77"/> - <location line="+197"/> - <source>Open Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-196"/> - <location line="+37"/> - <location line="+160"/> - <source>Designer UI files (*.%1);;All Files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-160"/> - <location line="+248"/> - <source>Save Form As</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-161"/> - <source>Designer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>Feature not implemented yet!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Code generation failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+44"/> - <source>Read error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>%1 -Do you want to update the file location or generate a new form?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>&Update</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&New Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+77"/> - <location line="+40"/> - <source>Save Form?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-39"/> - <source>Could not open file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>The file %1 could not be opened. -Reason: %2 -Would you like to retry or select a different file?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Select New File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+30"/> - <source>Could not write file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>It was not possible to write the entire file %1 to disk. -Reason:%2 -Would you like to retry?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+158"/> - <location line="+34"/> - <source>Assistant</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>&Close Preview</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+41"/> - <location line="+23"/> - <source>The backup file %1 could not be written.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+107"/> - <source>The backup directory %1 could not be created.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>The temporary backup directory %1 could not be created.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+30"/> - <source>Preview failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+24"/> - <source>Image files (*.%1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <location line="+17"/> - <source>Save Image</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-4"/> - <source>Saved image %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>The file %1 could not be written.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>Please close all forms to enable the loading of additional fonts.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+52"/> - <source>Printed %1.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerAppearanceOptionsPage</name> - <message> - <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/> - <source>Appearance</source> - <extracomment>Tab in preferences dialog</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerAppearanceOptionsWidget</name> - <message> - <location line="-53"/> - <source>Docked Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Multiple Top-Level Windows</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Toolwindow Font</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerAxWidget</name> - <message> - <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="-71"/> - <source>Reset control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Set control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/> - <source>Control loaded</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+40"/> - <source>A COM exception occurred when executing a meta call of type %1, index %2 of "%3".</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerFormBuilder</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+88"/> - <source>Script errors occurred:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+304"/> - <source>The preview failed to build.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+63"/> - <source>Designer</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerFormWindow</name> - <message> - <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+217"/> - <source>%1 - %2[*]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>Save Form?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Do you want to save the changes to this document before closing?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>If you don't save, your changes will be lost.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerMenu</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1160"/> - <source>Type Here</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Add Separator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+372"/> - <source>Insert separator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Remove separator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Remove action '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+25"/> - <location line="+628"/> - <source>Add separator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-326"/> - <source>Insert action</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerMenuBar</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-381"/> - <source>Type Here</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+304"/> - <source>Remove Menu '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Remove Menu Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+70"/> - <source>Menu</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerPluginManager</name> - <message> - <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+249"/> - <source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <source>The XML of the custom widget %1 does not contain any of the elements <widget> or <ui>.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The class attribute for the class %1 is missing.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>The class attribute for the class %1 does not match the class name %2.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerPropertySheet</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+747"/> - <source>Dynamic Properties</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerResource</name> - <message> - <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="-246"/> - <source>The layout type '%1' is not supported, defaulting to grid.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+342"/> - <source>The container extension of the widget '%1' (%2) returned a widget not managed by Designer '%3' (%4) when queried for page #%5. -Container pages should only be added by specifying them in XML returned by the domXml() method of the custom widget.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+599"/> - <source>Unexpected element <%1></source> - <extracomment>Parsing clipboard contents</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Error while pasting clipboard contents at line %1, column %2: %3</source> - <extracomment>Parsing clipboard contents</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Error while pasting clipboard contents: The root element <ui> is missing.</source> - <extracomment>Parsing clipboard contents</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerSharedSettings</name> - <message> - <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/> - <source>The template path %1 could not be created.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+184"/> - <source>An error has been encountered while parsing device profile XML: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerToolWindow</name> - <message> - <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/> - <source>Property Editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+54"/> - <source>Action Editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+42"/> - <source>Object Inspector</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+35"/> - <source>Resource Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>Signal/Slot Editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+41"/> - <source>Widget Box</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerWidgetBox</name> - <message> - <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="+349"/> - <source>An error has been encountered at line %1 of %2: %3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+139"/> - <source>Unexpected element <%1> encountered when parsing for <widget> or <ui></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>Unexpected end of file encountered when parsing widgets.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>A widget element could not be found.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QDesignerWorkbench</name> - <message> - <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/> - <source>&File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Edit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>F&orm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Preview in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>&View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&Settings</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>Toolbars</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+464"/> - <source>Save Forms?</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+1"/> - <source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+3"/> - <source>If you do not review your documents, all your changes will be lost.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Discard Changes</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Review Changes</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+95"/> - <source>Backup Information</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>The last session of Designer was not terminated correctly. Backup files were left behind. Do you want to load them?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+111"/> - <source>The file <b>%1</b> could not be opened.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+46"/> - <source>The file <b>%1</b> is not a valid Designer ui file.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QFormBuilder</name> - <message> - <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+160"/> - <source>An empty class name was passed on to %1 (object name: '%2').</source> - <extracomment>Empty class name passed to widget factory method</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+56"/> - <source>QFormBuilder was unable to create a custom widget of the class '%1'; defaulting to base class '%2'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>QFormBuilder was unable to create a widget of the class '%1'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+64"/> - <source>The layout type `%1' is not supported.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/> - <source>The set-type property %1 could not be read.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>The enumeration-type property %1 could not be read.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+190"/> - <source>Reading properties of the type %1 is not supported yet.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+266"/> - <source>The property %1 could not be written. The type %2 is not supported yet.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/uilib/properties_p.h" line="+132"/> - <source>The enumeration-value '%1' is invalid. The default value '%2' will be used instead.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>The flag-value '%1' is invalid. Zero will be used instead.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QStackedWidgetEventFilter</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/> - <source>Previous Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Next Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Before Current Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>After Current Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change Page Order...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+72"/> - <source>Change Page Order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+49"/> - <source>Page %1 of %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Insert Page</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QStackedWidgetPreviewEventFilter</name> - <message> - <location line="-150"/> - <source>Go to previous page of %1 '%2' (%3/%4).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Go to next page of %1 '%2' (%3/%4).</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QTabWidgetEventFilter</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/> - <source>Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Before Current Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>After Current Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+283"/> - <source>Page %1 of %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Insert Page</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QToolBoxHelper</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/> - <source>Delete Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Before Current Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>After Current Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change Page Order...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+116"/> - <source>Change Page Order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+44"/> - <source>Page %1 of %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Insert Page</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtBoolEdit</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/> - <location line="+10"/> - <location line="+25"/> - <source>True</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-25"/> - <location line="+25"/> - <source>False</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtBoolPropertyManager</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1477"/> - <source>True</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>False</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtCharEdit</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1601"/> - <source>Clear Char</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtColorEditWidget</name> - <message> - <location line="+611"/> - <source>...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtColorPropertyManager</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4777"/> - <source>Red</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Green</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Blue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Alpha</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtCursorDatabase</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-206"/> - <source>Arrow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Up Arrow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Cross</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Wait</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>IBeam</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Size Vertical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Size Horizontal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Size Backslash</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Size Slash</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Size All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Blank</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Split Vertical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Split Horizontal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Pointing Hand</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Forbidden</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Open Hand</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Closed Hand</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>What's This</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Busy</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtFontEditWidget</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+201"/> - <source>...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> - <source>Select Font</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtFontPropertyManager</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-353"/> - <source>Family</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>Point Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Bold</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Italic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Underline</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Strikeout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Kerning</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtGradientDialog</name> - <message> - <location filename="../tools/shared/qtgradienteditor/qtgradientdialog.ui"/> - <source>Edit Gradient</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtGradientEditor</name> - <message> - <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+435"/> - <source>Start X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Start Y</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Final X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Final Y</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <location line="+24"/> - <source>Central X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-20"/> - <location line="+24"/> - <source>Central Y</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-20"/> - <source>Focal X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Focal Y</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Radius</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>Angle</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui"/> - <source>Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Gradient Editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag & drop.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>4</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>5</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Gradient Stops Editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag & drop the handle to reposition it. Use right mouse button to popup context menu with extra actions.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Zoom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Reset Zoom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Position</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Hue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>H</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Saturation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>S</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Sat</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Value</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>V</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Val</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Alpha</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>A</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Type</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Spread</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Color</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Current stop's color</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Show HSV specification</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>HSV</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Show RGB specification</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>RGB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Current stop's position</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Zoom In</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Zoom Out</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toggle details extension</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>></source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Linear Type</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Radial Type</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Conical Type</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Pad Spread</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Repeat Spread</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Reflect Spread</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtGradientStopsWidget</name> - <message> - <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+949"/> - <source>New Stop</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Flip All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Select All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Zoom In</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Zoom Out</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Reset Zoom</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtGradientView</name> - <message> - <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/> - <source>Grad</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+26"/> - <source>Remove Gradient</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Are you sure you want to remove the selected gradient?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+74"/> - <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/> - <source>New...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/> - <source>Edit...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/> - <source>Remove</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/> - <source>Gradient View</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtGradientViewDialog</name> - <message> - <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.h" line="+62"/> - <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/> - <source>Select Gradient</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtKeySequenceEdit</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+221"/> - <source>Clear Shortcut</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtLocalePropertyManager</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3561"/> - <source>%1, %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+53"/> - <source>Language</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Country</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtPointFPropertyManager</name> - <message> - <location line="+415"/> - <source>(%1, %2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+71"/> - <source>X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Y</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtPointPropertyManager</name> - <message> - <location line="-322"/> - <source>(%1, %2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+37"/> - <source>X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Y</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtPropertyBrowserUtils</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-136"/> - <source>[%1, %2, %3] (%4)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+30"/> - <source>[%1, %2]</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtRectFPropertyManager</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1716"/> - <source>[(%1, %2), %3 x %4]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+156"/> - <source>X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Y</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Width</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Height</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtRectPropertyManager</name> - <message> - <location line="-614"/> - <source>[(%1, %2), %3 x %4]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+120"/> - <source>X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Y</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Width</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Height</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtResourceEditorDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+76"/> - <source>%1 already exists. -Do you want to replace it?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>The file does not appear to be a resource file; element '%1' was found where '%2' was expected.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+902"/> - <source>%1 [read-only]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <location line="+198"/> - <source>%1 [missing]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-72"/> - <source><no prefix></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+320"/> - <location line="+567"/> - <source>New Resource File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-565"/> - <location line="+25"/> - <source>Resource files (*.qrc)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-2"/> - <source>Import Resource File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+112"/> - <source>newPrefix</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source><p><b>Warning:</b> The file</p><p>%1</p><p>is outside of the current resource file's parent directory.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source><p>To resolve the issue, press:</p><table><tr><th align="left">Copy</th><td>to copy the file to the resource file's parent directory.</td></tr><tr><th align="left">Copy As...</th><td>to copy the file into a subdirectory of the resource file's parent directory.</td></tr><tr><th align="left">Keep</th><td>to use its current location.</td></tr></table></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+25"/> - <source>Add Files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <source>Incorrect Path</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <location line="+19"/> - <location line="+212"/> - <location line="+7"/> - <source>Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-236"/> - <source>Copy As...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Keep</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+87"/> - <source>Clone Prefix</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Enter the suffix which you want to add to the names of the cloned files. -This could for example be a language extension like "_de".</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+113"/> - <location line="+4"/> - <source>Copy As</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source><p>The selected file:</p><p>%1</p><p>is outside of the current resource file's directory:</p><p>%2</p><p>Please select another path within this directory.<p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> - <source>Could not overwrite %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Could not copy -%1 -to -%2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+35"/> - <source>A parse error occurred at line %1, column %2 of %3: -%4</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Save Resource File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Could not write %1: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>Edit Resources</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+35"/> - <source>New...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Open...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Open Resource File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <location line="+11"/> - <source>Remove</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-10"/> - <location line="+11"/> - <source>Move Up</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-10"/> - <location line="+11"/> - <source>Move Down</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-9"/> - <location line="+1"/> - <source>Add Prefix</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Add Files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change Prefix</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change Language</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change Alias</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Clone Prefix...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+37"/> - <source>Prefix / Path</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Language / Alias</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+119"/> - <source><html><p><b>Warning:</b> There have been problems while reloading the resources:</p><pre>%1</pre></html></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Resource Warning</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui"/> - <source>Dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>New File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>N</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Remove File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>R</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>I</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>New Resource</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>A</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Remove Resource or File</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtResourceView</name> - <message> - <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+435"/> - <source>Size: %1 x %2 -%3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <source>Edit Resources...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Reload</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Copy Path</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtResourceViewDialog</name> - <message> - <location line="+247"/> - <source>Select Resource</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtSizeFPropertyManager</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-537"/> - <source>%1 x %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+130"/> - <source>Width</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Height</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtSizePolicyPropertyManager</name> - <message> - <location line="+1719"/> - <location line="+1"/> - <source><Invalid></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>[%1, %2, %3, %4]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+45"/> - <source>Horizontal Policy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Vertical Policy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Horizontal Stretch</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Vertical Stretch</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtSizePropertyManager</name> - <message> - <location line="-2298"/> - <source>%1 x %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+96"/> - <source>Width</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Height</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtToolBarDialog</name> - <message> - <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1244"/> - <source>Custom Toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+545"/> - <source>< S E P A R A T O R ></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui"/> - <source>Customize Toolbars</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Actions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toolbars</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add new toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>New</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Remove selected toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Remove</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Rename toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move action up</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Up</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Remove action from toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source><-</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add action to toolbar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>-></source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move action down</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Down</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Current Toolbar Actions</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QtTreePropertyBrowser</name> - <message> - <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/> - <source>Property</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Value</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>SaveFormAsTemplate</name> - <message> - <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/> - <source>Add path...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>Template Exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>A template with the name %1 already exists. -Do you want overwrite the template?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Overwrite Template</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Open Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>There was an error opening template %1 for writing. Reason: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>Write Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>There was an error writing the template %1 to disk. Reason: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <source>Pick a directory to save templates in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/designer/saveformastemplate.ui"/> - <source>Save Form As Template</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Category:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScriptErrorDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+63"/> - <source>An error occurred while running the scripts for "%1": -</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>SelectSignalDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui"/> - <source>Go to slot</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Select signal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>signal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>class</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>SignalSlotConnection</name> - <message> - <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-358"/> - <source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>SignalSlotDialogClass</name> - <message> - <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui"/> - <source>Signals and slots</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Slots</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Add</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Signals</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Spacer</name> - <message> - <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/> - <source>Horizontal Spacer '%1', %2 x %3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>Vertical Spacer '%1', %2 x %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TemplateOptionsPage</name> - <message> - <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/> - <source>Template Paths</source> - <extracomment>Tab in preferences dialog</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ToolBarManager</name> - <message> - <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/> - <source>Configure Toolbars...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Style</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Dock views</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Toolbars</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>VersionDialog</name> - <message> - <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+171"/> - <source><h3>%1</h3><br/><br/>Version %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Qt Designer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source><br/>Qt Designer is a graphical user interface designer for Qt applications.<br/></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>%1<br/>%2<br/>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).<br/><br/>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.<br/> </source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WidgetDataBase</name> - <message> - <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="+814"/> - <source>The file contains a custom widget '%1' whose base class (%2) differs from the current entry in the widget database (%3). The widget database is left unchanged.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ActionEditor</name> - <message> - <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+127"/> - <source>New...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Edit...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Go to slot...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cut</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Paste</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Select all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Actions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+44"/> - <source>Configure Action Editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Icon View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Detailed View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+245"/> - <source>New action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+98"/> - <source>Edit action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> - <source>Remove action '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>Remove actions</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+186"/> - <source>Used In</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ActionModel</name> - <message> - <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/> - <source>Name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Used</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Shortcut</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Checkable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>ToolTip</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::BuddyEditor</name> - <message> - <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+265"/> - <source>Add buddy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+52"/> - <source>Remove buddies</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+24"/> - <source>Remove %n buddies</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message numerus="yes"> - <location line="+51"/> - <source>Add %n buddies</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+47"/> - <source>Set automatically</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::BuddyEditorPlugin</name> - <message> - <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+77"/> - <source>Edit Buddies</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::BuddyEditorTool</name> - <message> - <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+60"/> - <source>Edit Buddies</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ButtonGroupMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+7"/> - <source>Select members</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Break</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ButtonTaskMenu</name> - <message> - <location line="+121"/> - <source>Assign to button group</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Button group</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>New button group</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change text...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+101"/> - <source>Button group '%1'</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::CodeDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+99"/> - <source>Save...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Copy All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>&Find in Text...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+75"/> - <source>A temporary form file could not be created in %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>The temporary form file %1 could not be written.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <source>%1 - [Code]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>Save Code</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>Header Files (*.%1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>The file %1 could not be opened: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>The file %1 could not be written: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>%1 - Error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ColorAction</name> - <message> - <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+250"/> - <source>Text Color</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ComboBoxTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+72"/> - <source>Edit Items...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+38"/> - <source>Change Combobox Contents</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::CommandLinkButtonTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+156"/> - <source>Change description...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ConnectionEdit</name> - <message> - <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+1313"/> - <source>Select All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Deselect All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Delete</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ConnectionModel</name> - <message> - <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-465"/> - <source>Sender</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Signal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Receiver</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Slot</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+90"/> - <source><sender></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source><signal></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source><receiver></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source><slot></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+108"/> - <source>The connection already exists!<br>%1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Signal and Slot Editor</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ContainerWidgetTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+84"/> - <source>Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+25"/> - <source>Insert</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Insert Page Before Current Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Insert Page After Current Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Add Subwindow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+38"/> - <source>Subwindow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Page</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Page %1 of %2</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::DPI_Chooser</name> - <message> - <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+27"/> - <source>System (%1 x %2)</source> - <extracomment>System resolution</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>User defined</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <source> x </source> - <extracomment>DPI X/Y separator</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::DesignerPropertyManager</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+644"/> - <location line="+6"/> - <source>AlignLeft</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-5"/> - <source>AlignHCenter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>AlignRight</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>AlignJustify</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>AlignTop</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <location line="+4"/> - <source>AlignVCenter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-3"/> - <source>AlignBottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+565"/> - <source>%1, %2</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+6"/> - <source>Customized (%n roles)</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+1"/> - <source>Inherited</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+566"/> - <source>Horizontal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Vertical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Normal Off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Normal On</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Disabled Off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Disabled On</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Active Off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Active On</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Selected Off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Selected On</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <location line="+21"/> - <source>translatable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-15"/> - <location line="+21"/> - <source>disambiguation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-15"/> - <location line="+21"/> - <source>comment</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::DeviceProfileDialog</name> - <message> - <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/> - <source>Device Profiles (*.%1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+31"/> - <source>Default</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+67"/> - <source>Save Profile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>Save Profile - Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>Unable to open the file '%1' for writing: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Open profile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <location line="+6"/> - <source>Open Profile - Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-6"/> - <source>Unable to open the file '%1' for reading: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>'%1' is not a valid profile: %2</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::Dialog</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui"/> - <source>Dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>StringList</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>New String</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&New</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Delete String</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Value:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move String Up</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Up</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move String Down</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Down</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::EmbeddedOptionsControl</name> - <message> - <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="-260"/> - <source>None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Add a profile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Edit the selected profile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Delete the selected profile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+22"/> - <source>Add Profile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>New profile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+35"/> - <source>Edit Profile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+26"/> - <source>Delete Profile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Would you like to delete the profile '%1'?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+55"/> - <source>Default</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::FilterWidget</name> - <message> - <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/> - <source><Filter></source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::FormEditor</name> - <message> - <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/> - <source>Resource File Changed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>The file "%1" has changed outside Designer. Do you want to reload it?</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::FormLayoutMenu</name> - <message> - <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+24"/> - <source>Add form layout row...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::FormWindow</name> - <message> - <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/> - <source>Edit contents</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>F2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+774"/> - <source>Insert widget '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+67"/> - <source>Resize</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+218"/> - <location line="+15"/> - <source>Key Move</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+211"/> - <source>Paste %n action(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message numerus="yes"> - <location line="+2"/> - <source>Paste %n widget(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+1"/> - <source>Paste (%1 widgets, %2 actions)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+56"/> - <source>Cannot paste widgets. Designer could not find a container without a layout to paste into.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Break the layout of the container you want to paste into, select this container and then paste again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Paste error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+183"/> - <source>Raise widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>Lower widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+201"/> - <source>Select Ancestor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+41"/> - <source>Lay out</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+493"/> - <location line="+55"/> - <source>Drop widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-13"/> - <source>A QMainWindow-based form does not contain a central widget.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::FormWindowBase</name> - <message> - <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+397"/> - <source>Delete '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>Delete</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::FormWindowManager</name> - <message> - <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+368"/> - <source>Cu&t</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Cuts the selected widgets and puts them on the clipboard</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>&Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Copies the selected widgets to the clipboard</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>&Paste</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Pastes the clipboard's contents</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>&Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Deletes the selected widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Select &All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Selects all widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Bring to &Front</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <location line="+1"/> - <source>Raises the selected widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Send to &Back</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <location line="+1"/> - <source>Lowers the selected widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Adjust &Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Adjusts the size of the selected widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Lay Out &Horizontally</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Lays out the selected widgets horizontally</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Lay Out &Vertically</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Lays out the selected widgets vertically</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Lay Out in a &Form Layout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Lays out the selected widgets in a form layout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Lay Out in a &Grid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Lays out the selected widgets in a grid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Lay Out Horizontally in S&plitter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Lays out the selected widgets horizontally in a splitter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Lay Out Vertically in Sp&litter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Lays out the selected widgets vertically in a splitter</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>&Break Layout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Breaks the selected layout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Si&mplify Grid Layout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Removes empty columns and rows</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>&Preview...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Preview current form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>Form &Settings...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+78"/> - <source>Break Layout</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+26"/> - <source>Adjust Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+43"/> - <source>Could not create form preview</source> - <comment>Title of warning message box</comment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+341"/> - <source>Form Settings - %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::FormWindowSettings</name> - <message> - <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/> - <source>None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Device Profile: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::GridPanel</name> - <message> - <location filename="../tools/designer/src/lib/shared/gridpanel.ui"/> - <source>Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Grid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Visible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Grid &X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Snap</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Reset</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Grid &Y</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::GroupBoxTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+86"/> - <source>Change title...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::HtmlTextEdit</name> - <message> - <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="-58"/> - <source>Insert HTML entity</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::IconSelector</name> - <message> - <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+211"/> - <source>The pixmap file '%1' cannot be read.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>The file '%1' does not appear to be a valid pixmap file: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>The file '%1' could not be read: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> - <source>Choose a Pixmap</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Pixmap Read Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+55"/> - <source>...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Normal Off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Normal On</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Disabled Off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Disabled On</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Active Off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Active On</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Selected Off</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Selected On</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Choose Resource...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Choose File...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Reset</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Reset All</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ItemListEditor</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+358"/> - <source>Properties &<<</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui"/> - <source>Properties &>></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui"/> - <source>Items List</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>New Item</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&New</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Delete Item</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move Item Up</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>U</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move Item Down</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>D</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::LabelTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+89"/> - <source>Change rich text...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change plain text...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::LineEditTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+84"/> - <source>Change text...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ListWidgetEditor</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+73"/> - <source>New Item</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <source>Edit List Widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>Edit Combobox</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ListWidgetTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+71"/> - <source>Edit Items...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+38"/> - <source>Change List Contents</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::MdiContainerWidgetTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+118"/> - <source>Next Subwindow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Previous Subwindow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Tile</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cascade</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::MenuTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+60"/> - <source>Remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::MorphMenu</name> - <message> - <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+264"/> - <source>Morph into</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::NewActionDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/newactiondialog.ui"/> - <source>New Action...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Text:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Object &name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Icon:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Shortcut:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Checkable:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>ToolTip:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::NewDynamicPropertyDialog</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/> - <source>Set Property Name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>The current object already has a property named '%1'. -Please select another, unique one.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>The '_q_' prefix is reserved for the Qt library. -Please select another name.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui"/> - <source>Create Dynamic Property</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Property Name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>horizontalSpacer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Property Type</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::NewFormWidget</name> - <message> - <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="-391"/> - <source>Default size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>QVGA portrait (240x320)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>QVGA landscape (320x240)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>VGA portrait (480x640)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>VGA landscape (640x480)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+66"/> - <source>Widgets</source> - <extracomment>New Form Dialog Categories</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Custom Widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <source>None</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+57"/> - <source>Error loading form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+312"/> - <source>Internal error: No template selected.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/newformwidget.ui"/> - <source>0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Choose a template for a preview</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Embedded Design</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Device:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Screen Size:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::NewPromotedClassPanel</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+96"/> - <source>Add</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>New Promoted Class</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Base class name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Promoted class name:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Header file:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Global include</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Reset</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ObjectInspector</name> - <message> - <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+758"/> - <source>&Find in Text...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ObjectInspector::ObjectInspectorPrivate</name> - <message> - <location line="-438"/> - <source>Change Current Page</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::OrderDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+113"/> - <source>Index %1 (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>%1 %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/lib/shared/orderdialog.ui"/> - <source>Change Page Order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Page Order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move page up</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move page down</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PaletteEditor</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui"/> - <source>Edit Palette</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Tune Palette</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Show Details</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Compute Details</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Quick</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Preview</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Disabled</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Inactive</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Active</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PaletteEditorButton</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+61"/> - <source>Change Palette</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PaletteModel</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+381"/> - <source>Color Role</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Active</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Inactive</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Disabled</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PixmapEditor</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="-1541"/> - <source>Choose Resource...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Choose File...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Copy Path</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Paste Path</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <location line="+16"/> - <source>...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PlainTextEditorDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+69"/> - <source>Edit text</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PluginDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="+72"/> - <source>Components</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>Plugin Information</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Refresh</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Scan for newly installed custom widget plugins.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+48"/> - <source>Qt Designer couldn't find any plugins</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Qt Designer found the following plugins</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+55"/> - <source>New custom widget plugins have been found.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PreviewActionGroup</name> - <message> - <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/> - <source>%1 Style</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PreviewConfigurationWidget::PreviewConfigurationWidgetPrivate</name> - <message> - <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+118"/> - <source>Load Custom Device Skin</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>All QVFB Skins (*.%1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 - Duplicate Skin</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>The skin '%1' already exists.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 - Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>%1 is not a valid skin directory: -%2</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PreviewDeviceSkin</name> - <message> - <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+218"/> - <source>&Close</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PreviewManager</name> - <message> - <location line="+345"/> - <source>%1 - [Preview]</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PreviewWidget</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui"/> - <source>Preview Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>LineEdit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>ComboBox</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>PushButton</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>ButtonGroup2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>CheckBox1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>CheckBox2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>ButtonGroup</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>RadioButton1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>RadioButton2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>RadioButton3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PromotionModel</name> - <message> - <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+17"/> - <source>Name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Header file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Global include</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Usage</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PromotionTaskMenu</name> - <message> - <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+85"/> - <source>Promoted widgets...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Promote to ...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change signals/slots...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Promote to</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Demote to %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PropertyEditor</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+188"/> - <source>Add Dynamic Property...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Remove Dynamic Property</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Sorting</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Color Groups</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Tree View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Drop Down Button View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+49"/> - <source>String...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Bool...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Other...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Configure Property Editor</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+533"/> - <source>Object: %1 -Class: %2</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::PropertyLineEdit</name> - <message> - <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+88"/> - <source>Insert line break</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::QDesignerPromotionDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+85"/> - <source>Promoted Widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Promoted Classes</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+60"/> - <source>Promote</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+152"/> - <source>Change signals/slots...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 - Error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::QDesignerResource</name> - <message> - <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+277"/> - <source>Loading qrc file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>The specified qrc file <p><b>%1</b></p><p>could not be found. Do you want to update the file location?</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>New location for %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Resource files (*.qrc)</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::QDesignerTaskMenu</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+68"/> - <source>Change objectName...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change toolTip...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change whatsThis...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change styleSheet...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Create Menu Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Add Tool Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Create Status Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Remove Status Bar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change script...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change signals/slots...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Go to slot...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Size Constraints</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Set Minimum Width</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Set Minimum Height</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Set Minimum Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Set Maximum Width</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Set Maximum Height</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Set Maximum Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+235"/> - <source>Edit ToolTip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Edit WhatsThis</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+144"/> - <source>no signals available</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+67"/> - <source>Set size constraint on %n widget(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> -</context> -<context> - <name>qdesigner_internal::QDesignerWidgetBox</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+127"/> - <location line="+13"/> - <source>Unexpected element <%1></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>A parse error occurred at line %1, column %2 of the XML code specified for the widget %3: %4 -%5</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>The XML code specified for the widget %1 does not contain any widget elements. -%2</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::QtGradientEditor</name> - <message> - <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+289"/> - <source>Linear</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Radial</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Conical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> - <source>Pad</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Repeat</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Reflect</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::QtGradientStopsController</name> - <message> - <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+177"/> - <source>H</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>S</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>V</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <location line="+4"/> - <source>Hue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-3"/> - <source>Sat</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Val</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Saturation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Value</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+22"/> - <source>R</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>G</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>B</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Red</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Green</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Blue</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::RichTextEditorDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+436"/> - <source>Edit text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>Rich Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>&OK</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::RichTextEditorToolBar</name> - <message> - <location line="-302"/> - <source>Bold</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>CTRL+B</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Italic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>CTRL+I</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Underline</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>CTRL+U</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>Left Align</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Center</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Right Align</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Justify</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Superscript</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Subscript</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Insert &Link</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Insert &Image</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ScriptDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+68"/> - <source>Edit script</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source><html>Enter a Qt Script snippet to be executed while loading the form.<br>The widget and its children are accessible via the variables <i>widget</i> and <i>childWidgets</i>, respectively.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+50"/> - <source>Syntax error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ScriptErrorDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+27"/> - <source>Script errors</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::SignalSlotDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+199"/> - <source>There is already a slot with the signature '%1'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>There is already a signal with the signature '%1'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>%1 - Duplicate Signature</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+21"/> - <location line="+76"/> - <source>Signals/Slots of %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::SignalSlotEditorPlugin</name> - <message> - <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+76"/> - <source>Edit Signals/Slots</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>F4</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::SignalSlotEditorTool</name> - <message> - <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+62"/> - <source>Edit Signals/Slots</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::StatusBarTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+85"/> - <source>Remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::StringListEditorButton</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+60"/> - <source>Change String List</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::StyleSheetEditorDialog</name> - <message> - <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+94"/> - <location line="+283"/> - <source>Valid Style Sheet</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-281"/> - <source>Add Resource...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Add Gradient...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Add Color...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Add Font...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Edit Style Sheet</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+279"/> - <source>Invalid Style Sheet</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TabOrderEditor</name> - <message> - <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+363"/> - <source>Start from Here</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Restart</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Tab Order List...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+44"/> - <source>Tab Order List</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Tab Order</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TabOrderEditorPlugin</name> - <message> - <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+77"/> - <source>Edit Tab Order</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TabOrderEditorTool</name> - <message> - <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+61"/> - <source>Edit Tab Order</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TableWidgetEditor</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+71"/> - <source>New Column</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>New Row</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>&Columns</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Rows</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+137"/> - <source>Properties &<<</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui"/> - <source>Properties &>></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui"/> - <source>Edit Table Widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Items</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Table Items</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TableWidgetTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+68"/> - <source>Edit Items...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TemplateOptionsWidget</name> - <message> - <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="-18"/> - <source>Pick a directory to save templates in</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui"/> - <source>Form</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Additional Template Paths</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TextEditTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+62"/> - <source>Edit HTML</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change HTML...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Edit Text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Change Plain Text...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TextEditor</name> - <message> - <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="-201"/> - <source>Choose Resource...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Choose File...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+115"/> - <source>Choose a File</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ToolBarEventFilter</name> - <message> - <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+153"/> - <source>Insert Separator before '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Append Separator</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Remove action '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Remove Toolbar '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+58"/> - <source>Insert Separator</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TreeWidgetEditor</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+72"/> - <source>New Column</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>&Columns</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> - <source>Per column properties</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Common properties</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+53"/> - <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/> - <source>New Item</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/> - <source>New Subitem</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+175"/> - <source>Properties &<<</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/> - <source>Properties &>></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/> - <source>Edit Tree Widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Items</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Tree Items</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&New</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>New &Subitem</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Delete Item</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Delete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move Item Left (before Parent Item)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>L</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move Item Right (as a First Subitem of the Next Sibling Item)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>R</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move Item Up</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>U</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move Item Down</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>D</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::TreeWidgetTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+67"/> - <source>Edit Items...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::WidgetBox</name> - <message> - <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+113"/> - <source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::WidgetBoxTreeWidget</name> - <message> - <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-268"/> - <source>Scratchpad</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+370"/> - <source>Custom Widgets</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+260"/> - <source>Expand all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Collapse all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>List View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Icon View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Remove</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Edit name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::WidgetDataBase</name> - <message> - <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="-411"/> - <source>A custom widget plugin whose class name (%1) matches that of an existing class has been found.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::WidgetEditorTool</name> - <message> - <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+71"/> - <source>Edit Widgets</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::WidgetFactory</name> - <message> - <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+267"/> - <source>The custom widget factory registered for widgets of class %1 returned 0.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+44"/> - <source>A class name mismatch occurred when creating a widget using the custom widget factory registered for widgets of class %1. It returned a widget of class %2.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+99"/> - <source>%1 Widget</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+90"/> - <source>The current page of the container '%1' (%2) could not be determined while creating a layout.This indicates an inconsistency in the ui-file, probably a layout being constructed on a container widget.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+53"/> - <source>Attempt to add a layout to a widget '%1' (%2) which already has an unmanaged layout of type %3. -This indicates an inconsistency in the ui-file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+211"/> - <source>Cannot create style '%1'.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::WizardContainerWidgetTaskMenu</name> - <message> - <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="-49"/> - <source>Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Back</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>qdesigner_internal::ZoomMenu</name> - <message> - <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+84"/> - <source>%1 %</source> - <extracomment>Zoom factor</extracomment> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/translations/linguist_tr_TR.ts b/translations/linguist_tr_TR.ts deleted file mode 100644 index 1a1baa8..0000000 --- a/translations/linguist_tr_TR.ts +++ /dev/null @@ -1,1955 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.0"> -<context> - <name></name> - <message> - <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/> - <source>(New Entry)</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>AboutDialog</name> - <message> - <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/> - <source>Qt Linguist</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BatchTranslationDialog</name> - <message> - <location filename="../tools/linguist/linguist/batchtranslation.ui"/> - <source>Qt Linguist - Batch Translation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Options</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Set translated entries to finished</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Retranslate entries with existing translation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Note that the modified entries will be reset to unfinished if 'Set translated entries to finished' above is unchecked.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Translate also finished entries</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Phrase book preference</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move up</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move down</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>The batch translator will search through the selected phrase books in the order given above.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Run</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/> - <source>Batch Translation of '%1' - Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+37"/> - <source>Searching, please wait...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+42"/> - <source>Linguist batch translator</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+1"/> - <source>Batch translated %n entries</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> -</context> -<context> - <name>DataModel</name> - <message> - <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/> - <source><qt>Duplicate messages found in '%1':</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source><p>[more duplicates omitted]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source><p>* Context: %1<br>* Source: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source><br>* Comment: %3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+70"/> - <source>Linguist does not know the plural rules for '%1'. -Will assume a single universal form.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+56"/> - <source>Cannot create '%2': %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+56"/> - <source>Universal Form</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ErrorsView</name> - <message> - <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/> - <source>Accelerator possibly superfluous in translation.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Accelerator possibly missing in translation.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Translation does not end with the same punctuation as the source text.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>A phrase book suggestion for '%1' was ignored.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Translation does not refer to the same place markers as in the source text.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Translation does not contain the necessary %n place marker.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FindDialog</name> - <message> - <location filename="../tools/linguist/linguist/finddialog.cpp" line="+42"/> - <source></source> - <comment>Choose Edit|Find from the menu bar or press Ctrl+F to pop up the Find dialog</comment> - <translation></translation> - </message> - <message> - <location filename="../tools/linguist/linguist/finddialog.ui"/> - <source>Find</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>This window allows you to search for some text in the translation source file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Find what:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Type in the text to search for.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Options</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Source texts are searched when checked.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Source texts</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Translations are searched when checked.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Translations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Texts such as 'TeX' and 'tex' are considered as different when checked.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Match case</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Comments and contexts are searched when checked.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Comments</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ignore &accelerators</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Click here to find the next occurrence of the text you typed in.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Find Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Click here to close this window.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>LRelease</name> - <message numerus="yes"> - <location filename="../tools/linguist/shared/qm.cpp" line="+715"/> - <source> Generated %n translation(s) (%1 finished and %2 unfinished) -</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message numerus="yes"> - <location line="+4"/> - <source> Ignored %n untranslated source text(s) -</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> -</context> -<context> - <name>MainWindow</name> - <message> - <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1315"/> - <source></source> - <comment>This is the application's main window.</comment> - <translation></translation> - </message> - <message> - <location line="+165"/> - <source>Source text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <location line="+25"/> - <source>Index</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-2"/> - <location line="+61"/> - <source>Context</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-60"/> - <source>Items</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+77"/> - <source>This panel lists the source contexts.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Strings</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+39"/> - <source>Phrases and guesses</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>Sources and Forms</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Warnings</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+59"/> - <source> MOD </source> - <comment>status bar: file(s) modified</comment> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+125"/> - <source>Loading...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <location line="+22"/> - <source>Loading File - Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-21"/> - <source>The file '%1' does not seem to be related to the currently open file(s) '%2'. - -Close the open file(s) first?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+22"/> - <source>The file '%1' does not seem to be related to the file '%2' which is being loaded as well. - -Skip loading the first named file?</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+61"/> - <source>%n translation unit(s) loaded.</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+93"/> - <source>Related files (%1);;</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Open Translation Files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <location line="+31"/> - <source>File saved.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <location line="+1164"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>Release</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-1163"/> - <source>Qt message files for released applications (*.qm) -All files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <location line="+12"/> - <source>File created.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+27"/> - <location line="+355"/> - <source>Printing...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-347"/> - <source>Context: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <source>finished</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>unresolved</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>obsolete</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <location line="+307"/> - <source>Printing... (page %1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-300"/> - <location line="+307"/> - <source>Printing completed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-305"/> - <location line="+307"/> - <source>Printing aborted</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-232"/> - <source>Search wrapped.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <location line="+278"/> - <location line="+40"/> - <location line="+24"/> - <location line="+22"/> - <location line="+516"/> - <location line="+1"/> - <location line="+274"/> - <location line="+40"/> - <location line="+10"/> - <source>Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-1204"/> - <location line="+102"/> - <source>Cannot find the string '%1'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-82"/> - <source>Search And Translate in '%1' - Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <location line="+23"/> - <location line="+24"/> - <source>Translate - Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="-46"/> - <source>Translated %n entry(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+23"/> - <source>No more occurrences of '%1'. Start over?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+30"/> - <source>Create New Phrase Book</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Qt phrase books (*.qph) -All files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Phrase book created.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>Open Phrase Book</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Qt phrase books (*.qph);;All files (*)</source> - <translation type="unfinished"></translation> - </message> - <message numerus="yes"> - <location line="+7"/> - <source>%n phrase(s) loaded.</source> - <translation type="unfinished"> - <numerusform></numerusform> - </translation> - </message> - <message> - <location line="+93"/> - <location line="+3"/> - <location line="+7"/> - <source>Add to phrase book</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-9"/> - <source>No appropriate phrasebook found.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Adding entry to phrasebook %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Select phrase book to add to</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>Unable to launch Qt Assistant (%1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>Version %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source><center><img src=":/images/splash.png"/></img><p>%1</p></center><p>Qt Linguist is a tool for adding translations to Qt applications.</p><p>%2</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+41"/> - <source>Do you want to save the modified files?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+22"/> - <source>Do you want to save '%1'?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+43"/> - <source>Qt Linguist[*]</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1[*] - Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+267"/> - <location line="+12"/> - <source>No untranslated translation units left.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>&Window</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Minimize</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Ctrl+M</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Display the manual for %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Display information about %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+70"/> - <source>&Save '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Save '%1' &As...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Release '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Release '%1' As...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Close '%1'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <location line="+15"/> - <source>&Save</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-14"/> - <location line="+11"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>Save &As...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-9"/> - <location line="+10"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>Release As...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-9"/> - <location line="+13"/> - <source>&Close</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-10"/> - <source>Save All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>&Release All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Close All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>&Release</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>Translation File &Settings for '%1'...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>&Batch Translation of '%1'...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Search And &Translate in '%1'...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>Translation File &Settings...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>&Batch Translation...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Search And &Translate...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+51"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>Edit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>Translation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>Validation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+84"/> - <source>Cannot read from phrase book '%1'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source>Close this phrase book.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>Enables you to add, modify, or delete entries in this phrase book.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Print the entries in this phrase book.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>Cannot create phrase book '%1'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>Do you want to save phrase book '%1'?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+314"/> - <source>All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/linguist/mainwindow.ui"/> - <source>MainWindow</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Phrases</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Close Phrase Book</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Edit Phrase Book</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Print Phrase Book</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>V&alidation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&View</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Vie&ws</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Toolbars</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Help</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Translation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Recently Opened &Files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Edit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Open...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Open a Qt translation source file (TS file) for editing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+O</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>E&xit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Close this window and exit.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Q</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Save</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Save changes made to this Qt translation source file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Save As...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Save changes made to this Qt translation source file into a new file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Create a Qt message file suitable for released applications from the current message file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Print...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Print a list of all the translation units in the current translation source file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+P</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Undo</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Undo the last editing operation performed on the current translation.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Z</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Redo</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Redo an undone editing operation performed on the translation.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Y</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Cu&t</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Copy the selected translation text to the clipboard and deletes it.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+X</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Copy the selected translation text to the clipboard.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+C</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Paste</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Paste the clipboard text into the translation.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+V</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Select &All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Select the whole translation text.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+A</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Find...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Search for some text in the translation source file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+F</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Find &Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Continue the search where it was left.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>F3</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Prev Unfinished</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Previous unfinished item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move to the previous unfinished item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+K</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Next Unfinished</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Next unfinished item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move to the next unfinished item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+J</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>P&rev</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move to previous item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move to the previous item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Shift+K</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ne&xt</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Next item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Move to the next item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+Shift+J</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Done and Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Mark item as done and move to the next unfinished item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Mark this item as done and move to the next unfinished item.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Copy from source text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Copies the source text into the translation field.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+B</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Accelerators</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toggle the validity check of accelerators.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toggle the validity check of accelerators, i.e. whether the number of ampersands in the source and translation text is the same. If the check fails, a message is shown in the warnings window.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Ending Punctuation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toggle the validity check of ending punctuation.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toggle the validity check of ending punctuation. If the check fails, a message is shown in the warnings window.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Phrase matches</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toggle checking that phrase suggestions are used.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toggle checking that phrase suggestions are used. If the check fails, a message is shown in the warnings window.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Place &Marker Matches</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toggle the validity check of place markers.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Toggle the validity check of place markers, i.e. whether %1, %2, ... are used consistently in the source text and translation text. If the check fails, a message is shown in the warnings window.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&New Phrase Book...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Create a new phrase book.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+N</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Open Phrase Book...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Open a phrase book to assist translation.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+H</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Reset Sorting</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Sort the items back in the same order as in the message file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Display guesses</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Set whether or not to display translation guesses.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Statistics</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Display translation statistics.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Manual</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>F1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>About Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>About Qt</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Display information about the Qt toolkit by Trolltech.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&What's This?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>What's This?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Enter What's This? mode.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Shift+F1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Search And Translate...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Replace the translation on all entries that matches the search source text.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Batch translate all entries using the information in the phrase books.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Create a Qt message file suitable for released applications from the current message file. The filename will automatically be determined from the name of the .ts file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Open/Refresh Form &Preview</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Form Preview Tool</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>F5</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Add to Phrase Book</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+T</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Open Read-O&nly...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Save All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+S</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Close</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Close All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Ctrl+W</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MessageEditor</name> - <message> - <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/> - <source>German</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Japanese</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>French</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Polish</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Chinese</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+50"/> - <source>This whole panel allows you to view and edit the translation of some source text.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+25"/> - <source>Source text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>This area shows the source text.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Source text (Plural)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>This area shows the plural form of the source text.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Developer comments</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>This area shows a comment that may guide you, and the context in which the text occurs.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+59"/> - <source>Here you can enter comments for your own use. They have no effect on the translated applications.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+205"/> - <source>%1 translation (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+19"/> - <source>This is where you can enter or modify the translation of the above source text.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>%1 translation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>%1 translator comments</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+138"/> - <source>'%1' -Line: %2</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MessageModel</name> - <message> - <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/> - <source>Completion status for %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+15"/> - <source><file header></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source><context comment></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+71"/> - <source><unnamed context></source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MsgEdit</name> - <message> - <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-549"/> - <source></source> - <comment>This is the right panel of the main window.</comment> - <translation></translation> - </message> -</context> -<context> - <name>PhraseBookBox</name> - <message> - <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="-17"/> - <source></source> - <comment>Go to Phrase > Edit Phrase Book... The dialog that pops up is a PhraseBookBox.</comment> - <translation></translation> - </message> - <message> - <location line="+25"/> - <source>%1[*] - Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+90"/> - <source>Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cannot save phrase book '%1'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/linguist/phrasebookbox.ui"/> - <source>Edit Phrase Book</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>This window allows you to add, modify, or delete entries in a phrase book.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Translation:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>This is the phrase in the target language corresponding to the source phrase.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>S&ource phrase:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>This is a definition for the source phrase.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>This is the phrase in the source language.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Definition:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Click here to add the phrase to the phrase book.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&New Entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Click here to remove the entry from the phrase book.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Remove Entry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Settin&gs...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Click here to save the changes made.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Save</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Click here to close this window.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Close</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>PhraseModel</name> - <message> - <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+117"/> - <source>Source phrase</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Translation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Definition</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>PhraseView</name> - <message> - <location filename="../tools/linguist/linguist/phraseview.cpp" line="+121"/> - <source>Insert</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+3"/> - <source>Edit</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+113"/> - <source>Guess (%1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Guess</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QObject</name> - <message> - <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1806"/> - <source>Translation files (%1);;</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>All files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/> - <location line="+18"/> - <location line="+67"/> - <location line="+39"/> - <location line="+17"/> - <location line="+15"/> - <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/> - <source>Qt Linguist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/shared/cpp.cpp" line="+1072"/> - <source>C++ source files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/shared/java.cpp" line="+646"/> - <source>Java source files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/shared/po.cpp" line="+651"/> - <source>GNU Gettext localization files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/shared/qm.cpp" line="+12"/> - <source>Compiled Qt translations</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/shared/qph.cpp" line="+192"/> - <source>Qt Linguist 'Phrase Book'</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/> - <source>Qt Script source files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/shared/ts.cpp" line="+752"/> - <source>Qt translation sources (format 1.1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Qt translation sources (format 2.0)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Qt translation sources (latest format)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/shared/ui.cpp" line="+213"/> - <source>Qt Designer form files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+9"/> - <source>Qt Jambi form files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/shared/xliff.cpp" line="+817"/> - <source>XLIFF localization files</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>SourceCodeView</name> - <message> - <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+70"/> - <source><i>Source code not available</i></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> - <source><i>File %1 not available</i></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source><i>File %1 not readable</i></source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Statistics</name> - <message> - <location filename="../tools/linguist/linguist/statistics.ui"/> - <source>Statistics</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Close</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Translation</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Words:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Characters:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Characters (with spaces):</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TranslateDialog</name> - <message> - <location filename="../tools/linguist/linguist/translatedialog.ui"/> - <source>This window allows you to search for some text in the translation source file.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Type in the text to search for.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Find &source text:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>&Translate to:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Search options</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Texts such as 'TeX' and 'tex' are considered as different when checked.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Match &case</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Mark new translation as &finished</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Click here to find the next occurrence of the text you typed in.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Find Next</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Translate</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Translate All</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Click here to close this window.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TranslationSettingsDialog</name> - <message> - <location filename="../tools/linguist/linguist/translationsettings.ui"/> - <source>Source language</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Language</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Country/Region</source> - <translation type="unfinished"></translation> - </message> - <message> - <location/> - <source>Target language</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/> - <source>Any Country</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <location line="+8"/> - <source>Settings for '%1' - Qt Linguist</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/translations/qt_ar.ts b/translations/qt_ar.ts index b9c1adc..b5a60e2 100644 --- a/translations/qt_ar.ts +++ b/translations/qt_ar.ts @@ -1190,7 +1190,7 @@ to <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -2998,7 +2998,7 @@ Do you want to delete it anyway?</source> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1963"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/> <location line="+852"/> <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/> <location line="+8"/> @@ -3006,17 +3006,12 @@ Do you want to delete it anyway?</source> <translation>موافقة</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation type="unfinished"></translation> </message> <message> - <location line="-507"/> + <location line="-508"/> <source>Help</source> <translation type="unfinished">مساعدة</translation> </message> @@ -3030,6 +3025,11 @@ Do you want to delete it anyway?</source> <source>Hide Details...</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QMultiInputContext</name> diff --git a/translations/qt_de.ts b/translations/qt_de.ts index 4806231..70cf6f3 100644 --- a/translations/qt_de.ts +++ b/translations/qt_de.ts @@ -1170,7 +1170,7 @@ nach <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -2949,7 +2949,7 @@ Möchten sie die Datei trotzdem löschen?</translation> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1963"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/> <location line="+852"/> <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/> <location line="+8"/> @@ -2957,17 +2957,12 @@ Möchten sie die Datei trotzdem löschen?</translation> <translation>OK</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation>Über Qt</translation> </message> <message> - <location line="-507"/> + <location line="-508"/> <source>Help</source> <translation>Hilfe</translation> </message> @@ -2985,6 +2980,11 @@ Möchten sie die Datei trotzdem löschen?</translation> <source>Hide Details...</source> <translation>Details ausblenden...</translation> </message> + <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QMultiInputContext</name> diff --git a/translations/qt_es.ts b/translations/qt_es.ts index f9299cb..ee1e88c 100644 --- a/translations/qt_es.ts +++ b/translations/qt_es.ts @@ -1194,7 +1194,7 @@ a <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -3056,7 +3056,7 @@ All other platforms</comment> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1110"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/> <source>Help</source> <translation>Ayuda</translation> </message> @@ -3069,12 +3069,7 @@ All other platforms</comment> <translation>Aceptar</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation>Acerca de Qt</translation> </message> @@ -3087,7 +3082,7 @@ All other platforms</comment> <translation type="obsolete"><h3>Acerca de Qt</h3>%1<p>Qt es un toolkit en C++ para desarrollo de aplicaciones multiplataforma.</p><p>Qt proporciona portabilidad del código entre MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux y todas las variantes comerciales de Unix importantes. Qt también está disponible para sistemas empotrados bajo el nombre Qtopia Core.</p><p>Qt es un producto de Trolltech. Visite <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> para obtener más información.</p></translation> </message> <message> - <location line="-1604"/> + <location line="-1605"/> <source>Show Details...</source> <translation>Mostrar los detalles...</translation> </message> @@ -3097,6 +3092,11 @@ All other platforms</comment> <translation>Ocultar los detalles...</translation> </message> <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <source><p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p></source> <translation type="obsolete"><p>Este programa utiliza Qt Open Source Edition versión %1.</p><p>Qt Open Source Edition está dirigida al desarrollo de aplicaciones libres. Para desarrollar aplicaciones privativas (de código cerrado) necesita una licencia comercial de Qt.</p><p>Visite <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> para obtener una visión global de las licencias de Qt.</p></translation> </message> diff --git a/translations/qt_fr.ts b/translations/qt_fr.ts index a035963..37b334b 100644 --- a/translations/qt_fr.ts +++ b/translations/qt_fr.ts @@ -1350,7 +1350,7 @@ en <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -3199,7 +3199,7 @@ Voulez-vous quand même le supprimer?</translation> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1963"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/> <location line="+852"/> <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/> <location line="+8"/> @@ -3207,17 +3207,12 @@ Voulez-vous quand même le supprimer?</translation> <translation>OK</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation>À propos de Qt</translation> </message> <message> - <location line="-507"/> + <location line="-508"/> <source>Help</source> <translation>Aide</translation> </message> @@ -3240,6 +3235,11 @@ Voulez-vous quand même le supprimer?</translation> <translation>Cacher les détails...</translation> </message> <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <source><h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for more information.</p></source> <translation type="obsolete"><h3>A propos de Qt</h3>%1<p>Qt est un framework de développement d'applications multi-plateforme.</p><p>Qt fournit la portabilité du code source surMS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, et toutes les variantes majeures d'Unix. Qt est aussi disponible pour l'embarqué avec Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt est un produit de Nokia. Allez à <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> pour plus d'informations.</p></translation> </message> diff --git a/translations/qt_help_tr_TR.ts b/translations/qt_help_tr_TR.ts deleted file mode 100644 index 7e2d8d1..0000000 --- a/translations/qt_help_tr_TR.ts +++ /dev/null @@ -1,355 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.0"> -<context> - <name>QCLuceneResultWidget</name> - <message> - <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/> - <source>Search Results</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Note:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>The search results may not be complete since the documentation is still being indexed!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Your search did not match any documents.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>(The reason for this might be that the documentation is still being indexed.)</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QHelpCollectionHandler</name> - <message> - <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/> - <source>The collection file is not set up yet!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+22"/> - <source>Cannot load sqlite database driver!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <location line="+48"/> - <source>Cannot open collection file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-39"/> - <source>Cannot create tables in file %1!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>The specified collection file already exists!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Cannot create directory: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+23"/> - <source>Cannot copy collection file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+119"/> - <source>Unknown filter!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+55"/> - <source>Cannot register filter %1!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+44"/> - <source>Cannot open documentation file %1!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Invalid documentation file!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>The namespace %1 was not registered!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+120"/> - <source>Namespace %1 already exists!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>Cannot register namespace!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+24"/> - <source>Cannot open database to optimize!</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QHelpDBReader</name> - <message> - <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+95"/> - <source>Cannot open database '%1' '%2': %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QHelpEngineCore</name> - <message> - <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+516"/> - <source>The specified namespace does not exist!</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QHelpEngineCorePrivate</name> - <message> - <location line="-394"/> - <source>Cannot open documentation file %1: %2!</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QHelpGenerator</name> - <message> - <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/> - <source>Invalid help data!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>No output file name specified!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>The file %1 cannot be overwritten!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Building up file structure...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Cannot open data base file %1!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+11"/> - <source>Cannot register namespace %1!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+6"/> - <source>Insert custom filters...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Insert help data for filter section (%1 of %2)...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <source>Documentation successfully generated.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+76"/> - <source>Some tables already exist!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+61"/> - <source>Cannot create tables!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+86"/> - <source>Cannot register virtual folder!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+10"/> - <source>Insert files...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+41"/> - <source>The file %1 does not exist! Skipping it.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+7"/> - <source>Cannot open file %1! Skipping it.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+134"/> - <source>The filter %1 is already registered!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Cannot register filter %1!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+24"/> - <source>Insert indices...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+80"/> - <source>Insert contents...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+8"/> - <source>Cannot insert contents!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Cannot register contents!</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QHelpSearchQueryWidget</name> - <message> - <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+200"/> - <source>Search for:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Search</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>Advanced search</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+18"/> - <source>words <B>similar</B> to:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source><B>without</B> the words:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>with <B>exact phrase</B>:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>with <B>all</B> of the words:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>with <B>at least one</B> of the words:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QHelpSearchResultWidget</name> - <message> - <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/> - <source>0 - 0 of 0 Hits</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QHelpSearchResultWidgetPrivate</name> - <message> - <location line="-61"/> - <source>%1 - %2 of %3 Hits</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>QObject</name> - <message> - <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/> - <source>Untitled</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+80"/> - <source>Unknown token.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>Unknown token. Expected "QtHelpProject"!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Error in line %1: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+13"/> - <source>A virtual folder must not contain a '/' character!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+4"/> - <source>A namespace must not contain a '/' character!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>Missing namespace in QtHelpProject.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Missing virtual folder in QtHelpProject</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+88"/> - <source>Missing attribute in keyword at line %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+83"/> - <source>The input file %1 could not be opened!</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/translations/qt_iw.ts b/translations/qt_iw.ts index 52ecc9a..3b4897d 100644 --- a/translations/qt_iw.ts +++ b/translations/qt_iw.ts @@ -1187,7 +1187,7 @@ to <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -2958,7 +2958,7 @@ Do you want to delete it anyway?</source> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1963"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/> <location line="+852"/> <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/> <location line="+8"/> @@ -2966,17 +2966,12 @@ Do you want to delete it anyway?</source> <translation>אישור</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation type="unfinished"></translation> </message> <message> - <location line="-507"/> + <location line="-508"/> <source>Help</source> <translation type="unfinished">עזרה</translation> </message> @@ -2990,6 +2985,11 @@ Do you want to delete it anyway?</source> <source>Hide Details...</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QMultiInputContext</name> diff --git a/translations/qt_ja_JP.ts b/translations/qt_ja_JP.ts index f3e7584..7c8b874 100644 --- a/translations/qt_ja_JP.ts +++ b/translations/qt_ja_JP.ts @@ -1194,7 +1194,7 @@ to <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -3036,7 +3036,7 @@ Do you want to delete it anyway?</source> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1110"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/> <source>Help</source> <translation>ヘルプ</translation> </message> @@ -3065,12 +3065,12 @@ Do you want to delete it anyway?</source> <p>Qt オープンソース版はオープンソースのアプリケーションの開発用です。ソースコードを公開しない商用アプリケーションを開発するには商用版のライセンスが必要です。</p><p>Qtのライセンスについては<tt>http://qtsoftware.com/company/model.html</tt>を参照してください。</p></translation> </message> <message> - <location line="+508"/> + <location line="+509"/> <source>About Qt</source> <translation>Qt について</translation> </message> <message> - <location line="-1604"/> + <location line="-1605"/> <source>Show Details...</source> <translation>詳細を表示...</translation> </message> @@ -3081,7 +3081,7 @@ Do you want to delete it anyway?</source> </message> <message> <location line="+1570"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> <translation type="unfinished"></translation> </message> </context> diff --git a/translations/qt_pl.ts b/translations/qt_pl.ts index efc8401..7f9ec8d 100644 --- a/translations/qt_pl.ts +++ b/translations/qt_pl.ts @@ -1267,7 +1267,7 @@ na <translation>Ni&e dla wszystkich</translation> </message> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="-41"/> <source>OK</source> @@ -2995,7 +2995,7 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> <translation>Informacje o Qt</translation> </message> <message> - <location line="-507"/> + <location line="-508"/> <source>Help</source> <translation>Pomoc</translation> </message> @@ -3014,7 +3014,7 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> </message> <message> <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> <translation type="unfinished"></translation> </message> <message> diff --git a/translations/qt_pt.ts b/translations/qt_pt.ts index 5a93718..b00aaa0 100644 --- a/translations/qt_pt.ts +++ b/translations/qt_pt.ts @@ -1194,7 +1194,7 @@ para <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -3044,7 +3044,7 @@ Deseja apagar de qualquer forma?</translation> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1110"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/> <source>Help</source> <translation>Ajuda</translation> </message> @@ -3057,12 +3057,7 @@ Deseja apagar de qualquer forma?</translation> <translation>OK</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation>Acerca do Qt</translation> </message> @@ -3075,7 +3070,7 @@ Deseja apagar de qualquer forma?</translation> <translation type="obsolete"><h3>Acerca do Qt</h3>%1<p>Qt é um conjunto de ferramentas para desenvolvimento de aplicações multiplataforma.</p>O Qt oferece portabilidade de código fonte único em MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux e todas as principais variantes comerciais de Unix. O Qt está igualmente disponível para dispositivos embebidos como Qtopia Core.</p><p>O Qt é um produto Trolltech. Veja <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> para mais informação.</p></translation> </message> <message> - <location line="-1604"/> + <location line="-1605"/> <source>Show Details...</source> <translation>Mostrar Detalhes...</translation> </message> @@ -3085,6 +3080,11 @@ Deseja apagar de qualquer forma?</translation> <translation>Não Mostrar Detalhes...</translation> </message> <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <source><p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p></source> <translation type="obsolete"><p>Este programa usa Qt Open Source Edition versão %1.</p><p>Qt Open Source Edition é indicado para o desenvolvimento de aplicações/programas open source. Se pretender desenvolver aplicações sem disponibilizar o codigo fonte, então precisará de obter uma licença comercial.</p><p>Por favor consulte <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a>para obter mais informação acerca de licenças Qt.</p></translation> </message> diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts index 1db3e46..28e786b 100644 --- a/translations/qt_ru.ts +++ b/translations/qt_ru.ts @@ -1190,7 +1190,7 @@ to <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -2998,7 +2998,7 @@ Do you want to delete it anyway?</source> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1963"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/> <location line="+852"/> <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/> <location line="+8"/> @@ -3006,17 +3006,12 @@ Do you want to delete it anyway?</source> <translation>OK</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation type="unfinished"></translation> </message> <message> - <location line="-507"/> + <location line="-508"/> <source>Help</source> <translation type="unfinished">Справка</translation> </message> @@ -3030,6 +3025,11 @@ Do you want to delete it anyway?</source> <source>Hide Details...</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QMultiInputContext</name> diff --git a/translations/qt_sk.ts b/translations/qt_sk.ts index 5045022..1bf53e7 100644 --- a/translations/qt_sk.ts +++ b/translations/qt_sk.ts @@ -1194,7 +1194,7 @@ na <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -3044,7 +3044,7 @@ Chcete ho aj tak zmazať?</translation> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1963"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/> <location line="+852"/> <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/> <location line="+8"/> @@ -3052,17 +3052,12 @@ Chcete ho aj tak zmazať?</translation> <translation>OK</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation>Informácie o Qt</translation> </message> <message> - <location line="-507"/> + <location line="-508"/> <source>Help</source> <translation>Pomocník</translation> </message> @@ -3085,6 +3080,11 @@ Chcete ho aj tak zmazať?</translation> <translation>Skryť detaily...</translation> </message> <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <source><p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p></source> <translation type="obsolete"><p>Tento program používa Qt Open Source Edition verziu %1.</p><p>Qt Open Source Edition je určená pre vývoj Open Source aplikácií. Pre vývoj vlastnených (closed source) aplikácií potrebujete komerčnú Qt licenciu.</p><p>Prosím pozrite <a href="http://qtsoftware.com/company/model.html">qtsoftware.com/company/model.html</a> pre prehľad Qt licencovania.</p></translation> </message> diff --git a/translations/qt_sv.ts b/translations/qt_sv.ts index 1b75722..d6affce 100644 --- a/translations/qt_sv.ts +++ b/translations/qt_sv.ts @@ -1194,7 +1194,7 @@ till <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -3000,7 +3000,7 @@ Vill du ta bort den ändå?</translation> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1110"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/> <source>Help</source> <translation>Hjälp</translation> </message> @@ -3013,12 +3013,7 @@ Vill du ta bort den ändå?</translation> <translation>OK</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation>Om Qt</translation> </message> @@ -3031,7 +3026,7 @@ Vill du ta bort den ändå?</translation> <translation type="obsolete"><h3>Om Qt</h3>%1<p>Qt är ett C++-verktygssamling för utveckling av krossplattformsprogram.</p><p>Qt tillhandahåller portabilitet för samma källkod mellan MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, och alla andra stora kommersiella Unix-varianter. Qt finns också tillgängligt för inbäddade enheter som Qtopia Core.</p><p>Qt är en produkt från Trolltech. Se <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> för mer information.</p></translation> </message> <message> - <location line="-1604"/> + <location line="-1605"/> <source>Show Details...</source> <translation>Visa detaljer...</translation> </message> @@ -3040,6 +3035,11 @@ Vill du ta bort den ändå?</translation> <source>Hide Details...</source> <translation>Dölj detaljer,,,</translation> </message> + <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QMultiInputContext</name> diff --git a/translations/qt_uk.ts b/translations/qt_uk.ts index d6a7d80..9c1b1f4 100644 --- a/translations/qt_uk.ts +++ b/translations/qt_uk.ts @@ -1200,7 +1200,7 @@ to <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -3055,7 +3055,7 @@ Do you want to delete it anyway?</source> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1110"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/> <source>Help</source> <translation>Довідка</translation> </message> @@ -3068,12 +3068,7 @@ Do you want to delete it anyway?</source> <translation>Гаразд</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation>Про Qt</translation> </message> @@ -3086,7 +3081,7 @@ Do you want to delete it anyway?</source> <translation type="obsolete"><h3>Про Qt</h3>%1<p>Qt - це інструментарій C++ для міжплатформової розробки.</p><p>Qt забезпечує мобільність єдиних джерельних текстів між MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux та всіма основними комерційними версіями Unix. Qt існує також для вбудованих пристроїв, таких, як Qtopia Core.</p><p>Qt - це продукт компанії Trolltech. Більше інформації можна знайти на <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a>.</p></translation> </message> <message> - <location line="-1604"/> + <location line="-1605"/> <source>Show Details...</source> <translation>Показати подробиці...</translation> </message> @@ -3096,6 +3091,11 @@ Do you want to delete it anyway?</source> <translation>Сховати подробиці...</translation> </message> <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <source><p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p></source> <translation type="obsolete"><p>Ця програма використовує Qt Open Source Edition версії %1.</p><p>Qt Open Source Edition призначено для розробки відкритих програмних засобів. Для розробки власницьких (закритих) програм вам потрібна комерційна ліцензія для Qt.</p><p>Перегляньте <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> щодо огляду ліцензій Qt.</p></translation> </message> diff --git a/translations/qt_untranslated.ts b/translations/qt_untranslated.ts index 083a56f..35a2802 100644 --- a/translations/qt_untranslated.ts +++ b/translations/qt_untranslated.ts @@ -1157,7 +1157,7 @@ to <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -2921,7 +2921,7 @@ Do you want to delete it anyway?</source> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1110"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/> <source>Help</source> <translation type="unfinished"></translation> </message> @@ -2934,17 +2934,12 @@ Do you want to delete it anyway?</source> <translation type="unfinished"></translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation type="unfinished"></translation> </message> <message> - <location line="-1604"/> + <location line="-1605"/> <source>Show Details...</source> <translation type="unfinished"></translation> </message> @@ -2953,6 +2948,11 @@ Do you want to delete it anyway?</source> <source>Hide Details...</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QMultiInputContext</name> diff --git a/translations/qt_zh_CN.ts b/translations/qt_zh_CN.ts index 061919d..b0a7947 100644 --- a/translations/qt_zh_CN.ts +++ b/translations/qt_zh_CN.ts @@ -1202,7 +1202,7 @@ to <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -3044,7 +3044,7 @@ Do you want to delete it anyway?</source> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1110"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/> <source>Help</source> <translation>帮助</translation> </message> @@ -3057,12 +3057,7 @@ Do you want to delete it anyway?</source> <translation>确定</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation>关于Qt</translation> </message> @@ -3071,7 +3066,7 @@ Do you want to delete it anyway?</source> <translation type="obsolete"><p>这个程序使用的是Qt %1版。</p></translation> </message> <message> - <location line="-1604"/> + <location line="-1605"/> <source>Show Details...</source> <translation>显示细节……</translation> </message> @@ -3081,6 +3076,11 @@ Do you want to delete it anyway?</source> <translation>隐藏细节……</translation> </message> <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <source><h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for more information.</p></source> <translation type="obsolete"><h3>关于Qt</h3>%1<p>Qt是一个用于跨平台应用程序开发的C++工具包。</p><p>对于MS&nbsp;Windows、Mac&nbsp;OS&nbsp;X、Linux和所有主流商业Unix,Qt提供了单一源程序的可移植性。Qt也有用于嵌入式Linux和Windows CE的版本。</p><p>Qt是Nokia的产品。有关更多信息,请参考<a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a>。</p></translation> </message> diff --git a/translations/qt_zh_TW.ts b/translations/qt_zh_TW.ts index 9fb871b..bcb6f8d 100644 --- a/translations/qt_zh_TW.ts +++ b/translations/qt_zh_TW.ts @@ -1223,7 +1223,7 @@ to <context> <name>QDialogButtonBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1865"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/> <location line="+464"/> <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/> <source>OK</source> @@ -3073,7 +3073,7 @@ Do you want to delete it anyway?</source> <context> <name>QMessageBox</name> <message> - <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1110"/> + <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/> <source>Help</source> <translation>說明</translation> </message> @@ -3086,12 +3086,7 @@ Do you want to delete it anyway?</source> <translation>確定</translation> </message> <message> - <location line="+475"/> - <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+33"/> + <location line="+509"/> <source>About Qt</source> <translation>關於 Qt</translation> </message> @@ -3104,7 +3099,7 @@ Do you want to delete it anyway?</source> <translation type="obsolete"><h3>關於 Qt</h3>%1<p>Qt 為一個跨平台的 C++ 開發工具。</p><p>Qt 提供各平台相容機制,只要寫一份程式碼,就可以在 MS&nbsp;Windows、Mac&nbsp;OS&nbsp;X、Linux 與各主要的商業 Unix 平台上編譯。Qt 也可以用 Qtopia Core 用於嵌入式系統。</p><p>Qt 為 Trolltech 的產品。詳情請參考 <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a>。</p></translation> </message> <message> - <location line="-1604"/> + <location line="-1605"/> <source>Show Details...</source> <translation>顯示詳情...</translation> </message> @@ -3114,6 +3109,11 @@ Do you want to delete it anyway?</source> <translation>隱藏詳情...</translation> </message> <message> + <location line="+1570"/> + <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <source><h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for more information.</p></source> <translation type="obsolete"><h3>關於 Qt</h3>%1<p>Qt 為一個跨平台的 C++ 開發工具。</p><p>Qt 提供各平台相容機制,只要寫一份程式碼,就可以在 MS&nbsp;Windows、Mac&nbsp;OS&nbsp;X、Linux 與各主要的商業 Unix 平台上編譯。Qt 也有用於嵌入式 Linux 與 Windows CE 的版本。</p><p>Qt 為 Nokia 的產品。詳情請參考 <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a>。</p></translation> </message> diff --git a/util/qlalr/doc/qlalr.qdocconf b/util/qlalr/doc/qlalr.qdocconf index d97ff7d..a97ef6a 100644 --- a/util/qlalr/doc/qlalr.qdocconf +++ b/util/qlalr/doc/qlalr.qdocconf @@ -59,7 +59,7 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0 HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \ "<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \ - "<td width=\"30%\">Copyright © \$THISYEAR\$ <a href=\"trolltech.html\">Trolltech</a></td>\n" \ + "<td width=\"30%\" align=\"left\">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \ "<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \ "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \ "</tr></table></div></address>" diff --git a/util/scripts/make_qfeatures_dot_h b/util/scripts/make_qfeatures_dot_h index c434649..5ca8c88 100755 --- a/util/scripts/make_qfeatures_dot_h +++ b/util/scripts/make_qfeatures_dot_h @@ -2,9 +2,9 @@ # # Usage: make_qfeatures_dot_h # -# Generates core/base/qfeatures.h from core/base/qfeatures.txt. +# Generates src/corelib/global/qfeatures.h from src/corelib/global/qfeatures.txt. # -# The tools/qfeatures.txt file can contain redundancies, and this program +# The qfeatures.txt file can contain redundancies, and this program # will show them. # @@ -85,11 +85,42 @@ open OUT, ">$ENV{QTDIR}/src/corelib/global/qfeatures.h" print OUT "/**************************************************************************** ** -** Copyright (C) 1992-\$THISYEAR\$ \$TROLLTECH\$. All rights reserved. +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info\@nokia.com) ** -** This file is part of the \$MODULE\$ of the Qt Toolkit. +** This file is part of the QtCore module of the Qt Toolkit. ** -** \$TROLLTECH_DUAL_LICENSE\$ +** \$QT_BEGIN_LICENSE:LGPL\$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales\@nokia.com. +** \$QT_END_LICENSE\$ ** ****************************************************************************/ |