diff options
101 files changed, 10483 insertions, 827 deletions
@@ -7577,6 +7577,9 @@ FNR == 1 { if ( \$3 == "moc" || \$3 ~ /^Qt/ ) { target_file = first matched_target = 1 + } else if ( \$3 == "lrelease" || \$3 == "qm_phony_target" ) { + target_file = second + matched_target = 1 } } @@ -7661,6 +7664,7 @@ for part in $CFG_BUILD_PARTS; do case "$part" in tools) PART_ROOTS="$PART_ROOTS tools" ;; libs) PART_ROOTS="$PART_ROOTS src" ;; + translations) PART_ROOTS="$PART_ROOTS tools/linguist/lrelease translations" ;; examples) PART_ROOTS="$PART_ROOTS examples demos" ;; *) ;; esac @@ -7688,7 +7692,7 @@ for file in .projects .projects.3; do *s60main/s60main.pro) continue ;; *examples/activeqt/*) continue ;; */qmake/qmake.pro) continue ;; - *tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*) SPEC=$QMAKESPEC ;; + *tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*|*linguist/lrelease*) SPEC=$QMAKESPEC ;; *) SPEC=$XQMAKESPEC ;; esac dir=`dirname "$a" | sed -e "s;$sepath;.;g"` diff --git a/configure.exe b/configure.exe Binary files differindex 7fe4a93..77c7863 100755 --- a/configure.exe +++ b/configure.exe diff --git a/dist/changes-4.6.0 b/dist/changes-4.6.0 index a0ae663..3a130ca 100644 --- a/dist/changes-4.6.0 +++ b/dist/changes-4.6.0 @@ -19,14 +19,20 @@ Merge Request: http://qt.gitorious.org * General * **************************************************************************** - - QtDBus - * The minimum required version of the D-Bus reference library is - now 0.93. - * Support for reading and writing of custom property types added. - * Support for getting return arguments in remote method invocation - via QMetaMethod::invokeMethod. +New features +------------ - - [MR#1742] Added new multimedia keys to the Qt::Key enum. + - QState, QStateMachine + * New classes for state machine framework added to QtCore. + + - QAbstractAnimation + * New animation framework added to QtCore + + - QTouchEvent + * New class for handling multitouch events added to QtGui + + - QGesture, QGestureRecognizer + * New gesture framework added to QtGui - QMatrix4x4, QGenericMatrix, QVector2D, QVector3D, QVector4D, QQuaternion * New classes to support 3D applications. @@ -37,7 +43,14 @@ Merge Request: http://qt.gitorious.org - QGraphicsEffect * New classes for applying graphics effects to graphics items and widgets. - - Boxes demo ported to use new 3D math and shader program classes. + - QWebElement + * New class for DOM access added to QtWebKit + + - QAudioInput, QAudioOutput + * New audio input and output classes. + + - QAbstractVideoSurface, QVideoFrame + * New abstract video output classes. - OpenVG graphics system added. @@ -45,28 +58,29 @@ Merge Request: http://qt.gitorious.org - Improved support for input methods in graphics view. - - QAudioInput, QAudioOutput - * New audio input and output classes. - - - QAbstractVideoSurface, QVideoFrame - * New abstract video output classes. + - [MR#1742] Added new multimedia keys to the Qt::Key enum. - - New state machine framework added to QtCore. + - Boxes demo ported to use new 3D math and shader program classes. - QtTest now supports outputting XUnit XML documents, for integrating with existing continuous integration systems. This is enabled by running the test program with the -xunitxml option. -Third party components ----------------------- + - QtDBus + * The minimum required version of the D-Bus reference library is + now 0.93. + * Support for reading and writing of custom property types added. + * Support for getting return arguments in remote method invocation + via QMetaMethod::invokeMethod. - - Updated FreeType to version 2.3.9. - - Updated harfbuzz to the latest version from fd.org. +Optimizations +------------- - - Updated sqlite to version 3.6.19. + - Optimized rendering strategy in QGraphicsView + * See list of Important Behavior Changes below - - Updated libpng to version 1.2.40 + - Improved delivery of posted events on Windows **************************************************************************** @@ -74,6 +88,7 @@ Third party components **************************************************************************** QtCore +------ - QByteArray * New overloads for QByteArray::insert() and QByteArray::prepend(). @@ -170,6 +185,7 @@ QtCore * [256468] Fixed comment indentation. QtGui +----- - Qt::escape * Now escape the double quote ("). @@ -435,6 +451,7 @@ QtGui with Qt::WA_NoSystemBackground and window opacity set. QtDBus +------ - QDBusConnection * Made sending of invalid/incomplete messages consistently fail with error @@ -447,6 +464,7 @@ QtDBus deleted or to change owners. QtNetwork +--------- - QAbstractSocket * Only disconnect from host when all bytes have been written. @@ -483,6 +501,7 @@ QtNetwork cases the connection stalled when a buffer limit was used. QtOpenGL +-------- - QGLColormap * setEntry() was inserting entries instead of replacing them. @@ -531,6 +550,7 @@ QtOpenGL - Added lots of OpenGL autotests. QtScript +-------- - Many optimizations. - Improved ECMA script compliance. @@ -538,6 +558,7 @@ QtScript to a QtScript array index. QtSql +----- - [QTBUG-3162] Views for Sql table models should not reset state on failed queries. @@ -571,6 +592,7 @@ QtSql - Add proper iODBC linking support. QtSvg +----- - QSvgHandler * [245602] [204686] Fixed gradient and solid-color referencing. @@ -582,6 +604,7 @@ QtSvg * [257052] Changed drawImage() to ignore aspect ratio. QtWebKit +-------- - Many bug fixes. @@ -614,60 +637,43 @@ QtWebKit * Support for render hints. QtXml +----- - QDomDocument * Set the codec to UTF-8 if codec not present or unknown. QtXmlPatterns +------------- - QXmlQuery * [245219] Added QXmlQuery::setFocus(const QString &focus). Qt Plugins +---------- - Tiff plugin * [258526] Rotate the image if the tiff file contains an orientation tag. * [254317] Add support for mono and indexed format - - QPlainTextEdit - * Fixed crash when clicking on a text edit which was smaller than the - height of the font used. - - - QPrinter - * [QTBUG-4497] Removed redundant SetPen command in the postscript code - when reusing a QPrinter object. +Third party components +---------------------- + + - Updated FreeType to version 2.3.9. + + - Updated harfbuzz to the latest version from fd.org. + + - Updated sqlite to version 3.6.19. + + - Updated libpng to version 1.2.40 - - QTextLayout - * [QTBUG-4468] Count tabs as multiple characters when applying a fixed - column width. - * [176401] Take into account the negative right bearing of the last - character in an item of text if the glyph extends beyond its ascent. - - - QTextDocument - * [207189] Support setting font size using short hand syntax in the - CSS "font" property. - * [201228] Remove implicit margin on bullet lists when exporting to - HTML. - * [240086] Fixed bug which caused floating objects which span several - pages to float into the second page of the document even when it's - the only existing object, causing the document to contain a blank - first page. - * [240325] Even when wrap mode is set to Qt::TextWordWrap, the layout - would sometimes break outside word boundaries when floating objects - affected the width available to the text. This has been fixed. - - - QFontEngine - * [QTBUG-2354] Support certain 'Microsoft' platform symbol fonts which - also contain a regular unicode table for exactly the symbol range of - code points. - - - QFontMetrics - * [176401] Account for right bearing in bounding rect. **************************************************************************** * Platform Specific Changes * **************************************************************************** + - Added support for the Symbian platform with integration for the S60 + framework. + - Added community supported Qt ports for QNX and VxWorks. See platform notes in the Qt documentation for details. @@ -904,6 +910,60 @@ Qt for Embedded Linux - Add powerpc mkspec and remove "empty" ppc mkspec . +DirectFB +-------- + + - When running Qt/DirectFB the DirectFB window id of a top level QWidget can + be queried using property("_q_DirectFBWindowID") + + - Allow setting the background color of the primary layer in DirectFB with + connect options. QWS_DISPLAY=directfb:bgcolor=red or + QWS_DISPLAY=directfb:bgcolor=\#aabbccdd + + - Add support for rendering mouse cursor using a top level window when cursor + support is not working in IDirectFBDisplayLayer. Define + QT_DIRECTFB_WINDOW_AS_CURSOR to enable. + + - Add experimental support for optimized locking/unlocking of surfaces. Enable + by defining QT_DIRECTFB_SUBSURFACE. + + - Fix a bug to conceptually allow using QDirectFBScreen as a subscreen of a + proxy screen. Don't make QDirectFBScreen::instance() assume that + QScreen::instance() is a QDirectFBScreen. + + - Optimize move/resize operations with DirectFB. With a properly configured + DirectFB these operations are handled for us and we don't need to force a + repaint of the window. + + - Support top level window opacity in DirectFB + + - Fix a bug when loading RGB32 images that would lead to rendering issues. + + - Fix a bug when painting with invalid pens/brushes. + + - Fix a bug that would show up when QWidget::scroll is called. + + - Implement support for loading pixmaps using IDirectFBImageProvider. + + - Disable color table support by default. This seems to work incorrectly on + most boards and loading these images will generally require an image + conversion anyway. + + - Fix a crash when resizing windows. + + - Compile with versions < 1.0. We still recommend using newer versions. + + - Considerable code cleanup + + - Various optimizations regarding painting, loading of images and creation of + surfaces. + + - Allow forcibly falling back to raster engine for painting operations by + exporting QT_DIRECTFB_FORCE_RASTER=1 + + - Reenable support for RGB32 primary surface. + + Qt for Windows CE ----------------- @@ -973,61 +1033,6 @@ Qt for Windows CE **************************************************************************** -* DirectFB * -**************************************************************************** - - - When running Qt/DirectFB the DirectFB window id of a top level QWidget can - be queried using property("_q_DirectFBWindowID") - - - Allow setting the background color of the primary layer in DirectFB with - connect options. QWS_DISPLAY=directfb:bgcolor=red or - QWS_DISPLAY=directfb:bgcolor=\#aabbccdd - - - Add support for rendering mouse cursor using a top level window when cursor - support is not working in IDirectFBDisplayLayer. Define - QT_DIRECTFB_WINDOW_AS_CURSOR to enable. - - - Add experimental support for optimized locking/unlocking of surfaces. Enable - by defining QT_DIRECTFB_SUBSURFACE. - - - Fix a bug to conceptually allow using QDirectFBScreen as a subscreen of a - proxy screen. Don't make QDirectFBScreen::instance() assume that - QScreen::instance() is a QDirectFBScreen. - - - Optimize move/resize operations with DirectFB. With a properly configured - DirectFB these operations are handled for us and we don't need to force a - repaint of the window. - - - Support top level window opacity in DirectFB - - - Fix a bug when loading RGB32 images that would lead to rendering issues. - - - Fix a bug when painting with invalid pens/brushes. - - - Fix a bug that would show up when QWidget::scroll is called. - - - Implement support for loading pixmaps using IDirectFBImageProvider. - - - Disable color table support by default. This seems to work incorrectly on - most boards and loading these images will generally require an image - conversion anyway. - - - Fix a crash when resizing windows. - - - Compile with versions < 1.0. We still recommend using newer versions. - - - Considerable code cleanup - - - Various optimizations regarding painting, loading of images and creation of - surfaces. - - - Allow forcibly falling back to raster engine for painting operations by - exporting QT_DIRECTFB_FORCE_RASTER=1 - - - Reenable support for RGB32 primary surface. - - -**************************************************************************** * Important Behavior Changes * **************************************************************************** diff --git a/doc/src/frameworks-technologies/graphicsview.qdoc b/doc/src/frameworks-technologies/graphicsview.qdoc index 1503f53..ba89c7d 100644 --- a/doc/src/frameworks-technologies/graphicsview.qdoc +++ b/doc/src/frameworks-technologies/graphicsview.qdoc @@ -437,13 +437,10 @@ \section2 Animation Graphics View supports animation at several levels. You can easily - assemble animation paths by associating a QGraphicsItemAnimation with - your item. This allows timeline controlled animations that operate at - a steady speed on all platforms (although the frame rate may vary - depending on the platform's performance). QGraphicsItemAnimation - allows you to create a path for an item's position, rotation, scale, - shear and translation. The animation can be controlled by a QSlider, - or more commonly by QTimeLine. + assemble animation by using the Animation Framework. For that you'll + need your items to inherit from QGraphicsObject and associate + QPropertyAnimation with them. QPropertyAnimation allows to animate any + QObject property. Another option is to create a custom item that inherits from QObject and QGraphicsItem. The item can the set up its own timers, and control @@ -454,9 +451,6 @@ QGraphicsScene::advance(), which in turn calls QGraphicsItem::advance(). - See also the \l{Drag and Drop Robot Example}{Drag and Drop Robot} - example for an illustration of timeline-based animation techniques. - \section2 OpenGL Rendering To enable OpenGL rendering, you simply set a new QGLWidget as the diff --git a/doc/src/getting-started/examples.qdoc b/doc/src/getting-started/examples.qdoc index eec0492..b5dc03d 100644 --- a/doc/src/getting-started/examples.qdoc +++ b/doc/src/getting-started/examples.qdoc @@ -706,6 +706,7 @@ \o \l{tools/customtypesending}{Custom Type Sending}\raisedaster \o \l{tools/echoplugin}{Echo Plugin}\raisedaster \o \l{tools/i18n}{I18N} + \o \l{tools/inputpanel}{Input Panel}\raisedaster \o \l{tools/plugandpaint}{Plug & Paint}\raisedaster \o Plug & Paint Plugins: \l{tools/plugandpaintplugins/basictools}{Basic Tools}\raisedaster and \l{tools/plugandpaintplugins/extrafilters}{Extra Filters}\raisedaster diff --git a/doc/src/getting-started/known-issues.qdoc b/doc/src/getting-started/known-issues.qdoc index 0716e25..3c92257 100644 --- a/doc/src/getting-started/known-issues.qdoc +++ b/doc/src/getting-started/known-issues.qdoc @@ -59,34 +59,6 @@ \section1 Installation Issues - \section2 Building the Source Package on Windows 7 - - \list - \o When building Qt 4.5.0 with Windows 7, the build fails with an error - message regarding failing to embed manifest. This a known issue with - Windows 7, explained in the Windows 7 SDK Beta - \l{http://download.microsoft.com/download/8/8/0/8808A472-6450-4723-9C87-977069714B27/ReleaseNotes.Htm} - {release notes}. A workaround for this issue is to patch the - \bold{embed_manifest_exe.prf} file with the following: - - \code - diff --git a/mkspecs/features/win32/embed_manifest_exe.prf b/mkspecs/features/win32/embed_manifest_exe.prf - index e1747f1..05f116e 100644 - --- a/mkspecs/features/win32/embed_manifest_exe.prf - +++ b/mkspecs/features/win32/embed_manifest_exe.prf - @@ -8,4 +8,9 @@ if(win32-msvc2005|win32-msvc2008):!equals(TEMPLATE_PREFIX, "vc"):equals(TEMPLATE - QMAKE_POST_LINK = $$quote(mt.exe -nologo -manifest \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.ma - nifest\" -outputresource:$(DESTDIR_TARGET);1$$escape_expand(\n\t)) - QMAKE_POST_LINK += $$QMAKE_PREV_POST_LINK - QMAKE_CLEAN += \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.manifest\" - + isEmpty(RC_FILE) { - + system("echo.>$$replace(OUT_PWD,/,\\)\\$$replace(OBJECTS_DIR,/,\\)\\Windows7WorkAround.rc") - + RC_FILE = $$replace(OUT_PWD,/,\\)\\$$replace(OBJECTS_DIR,/,\\)\\Windows7WorkAround.rc - + } - + - } - \endcode - \section2 Installing the Source Package on Unix systems \o If you download a Zip source package, you will need to convert diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc index 3abcf7c..ef29990 100644 --- a/doc/src/modules.qdoc +++ b/doc/src/modules.qdoc @@ -316,6 +316,37 @@ The QtScript module is part of the \l{Qt Full Framework Edition} and the \l{Open Source Versions of Qt}. + + \section1 License Information + + Qt Commercial Edition licensees that wish to distribute applications that + use the QtScript module need to be aware of their obligations under the + GNU Library General Public License (LGPL). + + Developers using the Open Source Edition can choose to redistribute + the module under the appropriate version of the GNU LGPL. + + \legalese + QtScript is licensed under the GNU Library General Public License. + Individual contributor names and copyright dates can be found + inline in the code. + + 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. + \endlegalese + */ /*! diff --git a/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp b/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp index fb1f363..ea42e70 100644 --- a/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp +++ b/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp @@ -41,19 +41,15 @@ //! [0] QRegion r1(10, 10, 20, 20); -r1.isNull(); // false r1.isEmpty(); // false -QRegion r2(40, 40, 20, 20); QRegion r3; -r3.isNull(); // true r3.isEmpty(); // true +QRegion r2(40, 40, 20, 20); r3 = r1.intersected(r2); // r3: intersection of r1 and r2 -r3.isNull(); // false r3.isEmpty(); // true r3 = r1.united(r2); // r3: union of r1 and r2 -r3.isNull(); // false r3.isEmpty(); // false //! [0] diff --git a/examples/help/contextsensitivehelp/doc/source.html b/examples/help/contextsensitivehelp/doc/source.html index 2140765..68b2f8c 100644 --- a/examples/help/contextsensitivehelp/doc/source.html +++ b/examples/help/contextsensitivehelp/doc/source.html @@ -4,8 +4,8 @@ <title>Water Source</title> </head> <body> - The current pipe system connects to four different sources. Be aware that only - a limited amount of water can be taken from some sources. + The current pipe system connects to four different sources. Be aware + that only a limited amount of water can be taken from some sources. <br> <table border=1> <tr> @@ -13,7 +13,7 @@ <td>Amount</td> </tr> <tr> - <td>Foundain</td> + <td>Fountain</td> <td>4000</td> </tr> <tr> diff --git a/examples/help/contextsensitivehelp/doc/wateringmachine.qch b/examples/help/contextsensitivehelp/doc/wateringmachine.qch Binary files differindex e74f9b8..35d29be 100644 --- a/examples/help/contextsensitivehelp/doc/wateringmachine.qch +++ b/examples/help/contextsensitivehelp/doc/wateringmachine.qch diff --git a/examples/help/contextsensitivehelp/doc/wateringmachine.qhc b/examples/help/contextsensitivehelp/doc/wateringmachine.qhc Binary files differindex 3227c3a2..b5653c3 100644 --- a/examples/help/contextsensitivehelp/doc/wateringmachine.qhc +++ b/examples/help/contextsensitivehelp/doc/wateringmachine.qhc diff --git a/examples/help/contextsensitivehelp/doc/wateringmachine.qhp b/examples/help/contextsensitivehelp/doc/wateringmachine.qhp index 745d881..6dd08e7 100644 --- a/examples/help/contextsensitivehelp/doc/wateringmachine.qhp +++ b/examples/help/contextsensitivehelp/doc/wateringmachine.qhp @@ -1,25 +1,25 @@ -<?xml version="1.0" encoding="utf-8" ?> +<?xml version="1.0" encoding="utf-8" ?> <QtHelpProject version="1.0"> - <virtualFolder>wateringmachine</virtualFolder> - <namespace>wateringcompany.com.1_0_0.premium</namespace> - <filterSection> - <keywords> - <keyword name="plants" id="plants" ref="plants.html"/> - <keyword name="temperature" id="temperature" ref="temperature.html"/> - <keyword name="rain" id="rain" ref="rain.html"/> - <keyword name="time" id="time" ref="time.html"/> - <keyword name="amount" id="amount" ref="amount.html"/> - <keyword name="source" id="source" ref="source.html"/> - <keyword name="filtering" id="filtering" ref="filter.html"/> - </keywords> - <files> - <file>plants.html</file> - <file>temperature.html</file> - <file>rain.html</file> - <file>time.html</file> - <file>amount.html</file> - <file>source.html</file> - <file>filter.html</file> - </files> - </filterSection> + <virtualFolder>wateringmachine</virtualFolder> + <namespace>wateringcompany.com.1-0-0.premium</namespace> + <filterSection> + <keywords> + <keyword name="plants" id="plants" ref="plants.html"/> + <keyword name="temperature" id="temperature" ref="temperature.html"/> + <keyword name="rain" id="rain" ref="rain.html"/> + <keyword name="time" id="time" ref="time.html"/> + <keyword name="amount" id="amount" ref="amount.html"/> + <keyword name="source" id="source" ref="source.html"/> + <keyword name="filtering" id="filtering" ref="filter.html"/> + </keywords> + <files> + <file>plants.html</file> + <file>temperature.html</file> + <file>rain.html</file> + <file>time.html</file> + <file>amount.html</file> + <file>source.html</file> + <file>filter.html</file> + </files> + </filterSection> </QtHelpProject> diff --git a/examples/help/contextsensitivehelp/wateringconfigdialog.ui b/examples/help/contextsensitivehelp/wateringconfigdialog.ui index a7f5349..d7a473a 100644 --- a/examples/help/contextsensitivehelp/wateringconfigdialog.ui +++ b/examples/help/contextsensitivehelp/wateringconfigdialog.ui @@ -258,7 +258,7 @@ <widget class="QComboBox" name="sourceComboBox" > <item> <property name="text" > - <string>Foundain</string> + <string>Fountain</string> </property> </item> <item> diff --git a/projects.pro b/projects.pro index aa1eb71..497acd0 100644 --- a/projects.pro +++ b/projects.pro @@ -45,7 +45,12 @@ for(PROJECT, $$list($$lower($$unique(QT_BUILD_PARTS)))) { } else:isEqual(PROJECT, docs) { contains(QT_BUILD_PARTS, tools):include(doc/doc.pri) } else:isEqual(PROJECT, translations) { - contains(QT_BUILD_PARTS, tools):include(translations/translations.pri) + contains(QT_BUILD_PARTS, tools) { + include(translations/translations.pri) # ts targets + } else { + SUBDIRS += tools/linguist/lrelease + } + SUBDIRS += translations # qm build step } else:isEqual(PROJECT, qmake) { # SUBDIRS += qmake } else { diff --git a/src/3rdparty/phonon/ds9/backend.cpp b/src/3rdparty/phonon/ds9/backend.cpp index 6ed0145..fbc4bdc 100644 --- a/src/3rdparty/phonon/ds9/backend.cpp +++ b/src/3rdparty/phonon/ds9/backend.cpp @@ -41,6 +41,8 @@ namespace Phonon { namespace DS9 { + QMutex *Backend::directShowMutex = 0; + bool Backend::AudioMoniker::operator==(const AudioMoniker &other) { return other->IsEqual(*this) == S_OK; @@ -50,6 +52,8 @@ namespace Phonon Backend::Backend(QObject *parent, const QVariantList &) : QObject(parent) { + directShowMutex = &m_directShowMutex; + ::CoInitialize(0); //registering meta types @@ -62,11 +66,8 @@ namespace Phonon m_audioOutputs.clear(); m_audioEffects.clear(); ::CoUninitialize(); - } - QMutex *Backend::directShowMutex() - { - return &qobject_cast<Backend*>(qt_plugin_instance())->m_directShowMutex; + directShowMutex = 0; } QObject *Backend::createObject(BackendInterface::Class c, QObject *parent, const QList<QVariant> &args) diff --git a/src/3rdparty/phonon/ds9/backend.h b/src/3rdparty/phonon/ds9/backend.h index 8b020c2..7c3c109 100644 --- a/src/3rdparty/phonon/ds9/backend.h +++ b/src/3rdparty/phonon/ds9/backend.h @@ -64,7 +64,7 @@ namespace Phonon Filter getAudioOutputFilter(int index) const; - static QMutex *directShowMutex(); + static QMutex *directShowMutex; Q_SIGNALS: void objectDescriptionChanged(ObjectDescriptionType); diff --git a/src/3rdparty/phonon/ds9/backendnode.cpp b/src/3rdparty/phonon/ds9/backendnode.cpp index 855357a..3afcafa 100644 --- a/src/3rdparty/phonon/ds9/backendnode.cpp +++ b/src/3rdparty/phonon/ds9/backendnode.cpp @@ -58,7 +58,24 @@ namespace Phonon BackendNode::~BackendNode() { //this will remove the filter from the graph - mediaObjectDestroyed(); + FILTER_INFO info; + for(int i = 0; i < FILTER_COUNT; ++i) { + const Filter &filter = m_filters[i]; + if (!filter) + continue; + filter->QueryFilterInfo(&info); + if (info.pGraph) { + HRESULT hr = info.pGraph->RemoveFilter(filter); + + if (hr == VFW_E_NOT_STOPPED && m_mediaObject) { + m_mediaObject->ensureStopped(); + + hr = info.pGraph->RemoveFilter(filter); + } + Q_ASSERT(SUCCEEDED(hr)); + info.pGraph->Release(); + } + } } void BackendNode::setMediaObject(MediaObject *mo) diff --git a/src/3rdparty/phonon/ds9/mediaobject.cpp b/src/3rdparty/phonon/ds9/mediaobject.cpp index 7eb535e..34f92c2 100644 --- a/src/3rdparty/phonon/ds9/mediaobject.cpp +++ b/src/3rdparty/phonon/ds9/mediaobject.cpp @@ -177,7 +177,7 @@ namespace Phonon void WorkerThread::handleTask() { - QMutexLocker locker(Backend::directShowMutex()); + QMutexLocker locker(Backend::directShowMutex); { QMutexLocker locker(&m_mutex); if (m_finished || m_queue.isEmpty()) { diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc index 09dfae5..411762a 100644 --- a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc +++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc @@ -25,13 +25,10 @@ Qt Commercial Edition licensees that wish to distribute applications that use the QtWebKit module need to be aware of their obligations under the - GNU Lesser General Public License (LGPL). + GNU Library General Public License (LGPL). Developers using the Open Source Edition can choose to redistribute - the module under the appropriate version of the GNU LGPL; version 2.1 - for applications and libraries licensed under the GNU GPL version 2, - or version 3 for applications and libraries licensed under the GNU - GPL version 2. + the module under the appropriate version of the GNU LGPL. \legalese WebKit is licensed under the GNU Library General Public License. diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp index c735778..d529f67 100644 --- a/src/corelib/animation/qvariantanimation.cpp +++ b/src/corelib/animation/qvariantanimation.cpp @@ -104,15 +104,32 @@ QT_BEGIN_NAMESPACE \o \l{QMetaType::}{QLine} \o \l{QMetaType::}{QLineF} \o \l{QMetaType::}{QPoint} + \o \l{QMetaType::}{QPointF} \o \l{QMetaType::}{QSize} \o \l{QMetaType::}{QSizeF} \o \l{QMetaType::}{QRect} \o \l{QMetaType::}{QRectF} + \o \l{QMetaType::}{QColor} \endlist If you need to interpolate other variant types, including custom types, you have to implement interpolation for these yourself. - You do this by reimplementing interpolated(), which returns + To do this, you can register an interpolator function for a given + type. This function takes 3 parameters: the start value, the end value + and the current progress. + + Example: + \code + QVariant myColorInterpolator(const QColor &start, const QColor &end, qreal progress) + { + ... + return QColor(...); + } + ... + qRegisterAnimationInterpolator<QColor>(myColorInterpolator); + \endcode + + Another option is to reimplement interpolated(), which returns interpolation values for the value being interpolated. \omit We need some snippets around here. \endomit diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h index 77785e8..1c52d4c 100644 --- a/src/corelib/global/qfeatures.h +++ b/src/corelib/global/qfeatures.h @@ -217,6 +217,9 @@ // Session Manager //#define QT_NO_SESSIONMANAGER +// QSettings +//#define QT_NO_SETTINGS + // QSharedMemory //#define QT_NO_SHAREDMEMORY @@ -352,6 +355,11 @@ #define QT_NO_IMAGEFORMAT_XPM #endif +// QLibrary +#if !defined(QT_NO_LIBRARY) && (defined(QT_NO_SETTINGS)) +#define QT_NO_LIBRARY +#endif + // QMenu #if !defined(QT_NO_MENU) && (defined(QT_NO_ACTION)) #define QT_NO_MENU @@ -367,6 +375,11 @@ #define QT_NO_PHONON_SEEKSLIDER #endif +// Phonon::AbstractMediaStream +#if !defined(QT_NO_PHONON_SETTINGSGROUP) && (defined(QT_NO_SETTINGS)) +#define QT_NO_PHONON_SETTINGSGROUP +#endif + // Phonon::VideoPlayer #if !defined(QT_NO_PHONON_VIDEOPLAYER) && (defined(QT_NO_PHONON_VIDEO)) #define QT_NO_PHONON_VIDEOPLAYER @@ -422,11 +435,6 @@ #define QT_NO_SCROLLBAR #endif -// QSettings -#if !defined(QT_NO_SETTINGS) && (defined(QT_NO_TEXTSTREAM)) -#define QT_NO_SETTINGS -#endif - // SOCKS5 #if !defined(QT_NO_SOCKS5) && (defined(QT_NO_NETWORKPROXY)) #define QT_NO_SOCKS5 @@ -507,14 +515,14 @@ #define QT_NO_HTTP #endif -// QLibrary -#if !defined(QT_NO_LIBRARY) && (defined(QT_NO_SETTINGS)) -#define QT_NO_LIBRARY +// QInputContext +#if !defined(QT_NO_IM) && (defined(QT_NO_LIBRARY)) +#define QT_NO_IM #endif -// Phonon::AbstractMediaStream -#if !defined(QT_NO_PHONON_SETTINGSGROUP) && (defined(QT_NO_SETTINGS)) -#define QT_NO_PHONON_SETTINGSGROUP +// Phonon::PlatformPlugin +#if !defined(QT_NO_PHONON_PLATFORMPLUGIN) && (defined(QT_NO_LIBRARY)) +#define QT_NO_PHONON_PLATFORMPLUGIN #endif // QScrollArea @@ -562,21 +570,11 @@ #define QT_NO_GRAPHICSVIEW #endif -// QInputContext -#if !defined(QT_NO_IM) && (defined(QT_NO_LIBRARY)) -#define QT_NO_IM -#endif - // QMdiArea #if !defined(QT_NO_MDIAREA) && (defined(QT_NO_SCROLLAREA)) #define QT_NO_MDIAREA #endif -// Phonon::PlatformPlugin -#if !defined(QT_NO_PHONON_PLATFORMPLUGIN) && (defined(QT_NO_LIBRARY)) -#define QT_NO_PHONON_PLATFORMPLUGIN -#endif - // Phonon::VolumeSlider #if !defined(QT_NO_PHONON_VOLUMESLIDER) && (defined(QT_NO_SLIDER) || defined(QT_NO_TOOLBUTTON)) #define QT_NO_PHONON_VOLUMESLIDER @@ -587,6 +585,11 @@ #define QT_NO_PRINTER #endif +// QWSInputMethod +#if !defined(QT_NO_QWS_INPUTMETHODS) && (defined(QT_NO_IM)) +#define QT_NO_QWS_INPUTMETHODS +#endif + // QSpinBox #if !defined(QT_NO_SPINBOX) && (defined(QT_NO_SPINWIDGET) || defined(QT_NO_LINEEDIT) || defined(QT_NO_VALIDATOR)) #define QT_NO_SPINBOX @@ -627,6 +630,11 @@ #define QT_NO_TABDIALOG #endif +// QTextCodecPlugin +#if !defined(QT_NO_TEXTCODECPLUGIN) && (defined(QT_NO_TEXTCODEC) || defined(QT_NO_LIBRARY)) +#define QT_NO_TEXTCODECPLUGIN +#endif + // QColorDialog #if !defined(QT_NO_COLORDIALOG) && (defined(QT_NO_SPINBOX)) #define QT_NO_COLORDIALOG @@ -647,11 +655,6 @@ #define QT_NO_MENUBAR #endif -// QWSInputMethod -#if !defined(QT_NO_QWS_INPUTMETHODS) && (defined(QT_NO_IM)) -#define QT_NO_QWS_INPUTMETHODS -#endif - // Sound Server #if !defined(QT_NO_QWS_SOUNDSERVER) && (defined(QT_NO_SOUND) || defined(QT_NO_HOSTINFO) || defined(QT_NO_QWS_MULTIPROCESS)) #define QT_NO_QWS_SOUNDSERVER @@ -672,11 +675,6 @@ #define QT_NO_TABWIDGET #endif -// QTextCodecPlugin -#if !defined(QT_NO_TEXTCODECPLUGIN) && (defined(QT_NO_TEXTCODEC) || defined(QT_NO_LIBRARY)) -#define QT_NO_TEXTCODECPLUGIN -#endif - // QTextEdit #if !defined(QT_NO_TEXTEDIT) && (defined(QT_NO_SCROLLAREA) || defined(QT_NO_PROPERTIES)) #define QT_NO_TEXTEDIT @@ -757,6 +755,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 @@ -787,11 +790,6 @@ #define QT_NO_TREEWIDGET #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) || defined(QT_NO_FILESYSTEMMODEL)) #define QT_NO_DIRMODEL diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt index ec4945f..251391e 100644 --- a/src/corelib/global/qfeatures.txt +++ b/src/corelib/global/qfeatures.txt @@ -216,7 +216,7 @@ SeeAlso: ??? Feature: SETTINGS Description: Supports persistent application settings. Section: File I/O -Requires: TEXTSTREAM +Requires: Name: QSettings SeeAlso: ??? diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp index 15325ae..77a86bb 100644 --- a/src/corelib/global/qlibraryinfo.cpp +++ b/src/corelib/global/qlibraryinfo.cpp @@ -46,7 +46,11 @@ #include "qlibraryinfo.h" #include "qscopedpointer.h" -#ifdef QT_BUILD_QMAKE +#if defined(QT_BUILD_QMAKE) || defined(QT_BOOTSTRAPPED) +# define BOOTSTRAPPING +#endif + +#ifdef BOOTSTRAPPING QT_BEGIN_NAMESPACE extern QString qmake_libraryInfoFile(); QT_END_NAMESPACE @@ -91,7 +95,7 @@ public: QLibrarySettings::QLibrarySettings() : settings(QLibraryInfoPrivate::findConfiguration()) { -#ifndef QT_BUILD_QMAKE +#ifndef BOOTSTRAPPING qAddPostRoutine(QLibraryInfoPrivate::cleanup); #endif } @@ -99,7 +103,7 @@ QLibrarySettings::QLibrarySettings() QSettings *QLibraryInfoPrivate::findConfiguration() { QString qtconfig = QLatin1String(":/qt/etc/qt.conf"); -#ifdef QT_BUILD_QMAKE +#ifdef BOOTSTRAPPING if(!QFile::exists(qtconfig)) qtconfig = qmake_libraryInfoFile(); #else @@ -425,7 +429,7 @@ QLibraryInfo::location(LibraryLocation loc) if (QDir::isRelativePath(ret)) { if (loc == PrefixPath) { // we make the prefix path absolute to the executable's directory -#ifdef QT_BUILD_QMAKE +#ifdef BOOTSTRAPPING return QFileInfo(qmake_libraryInfoFile()).absolutePath(); #else if (QCoreApplication::instance()) { diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp index 19e86a6..b10d603 100644 --- a/src/corelib/io/qdatastream.cpp +++ b/src/corelib/io/qdatastream.cpp @@ -42,7 +42,7 @@ #include "qdatastream.h" #include "qdatastream_p.h" -#ifndef QT_NO_DATASTREAM +#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED) #include "qbuffer.h" #include "qstring.h" #include <stdio.h> diff --git a/src/corelib/io/qdatastream.h b/src/corelib/io/qdatastream.h index f61a59c..2e4e7c1 100644 --- a/src/corelib/io/qdatastream.h +++ b/src/corelib/io/qdatastream.h @@ -66,7 +66,7 @@ template <typename T> class QSet; template <class Key, class T> class QHash; template <class Key, class T> class QMap; -#ifndef QT_NO_DATASTREAM +#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED) class QDataStreamPrivate; class Q_CORE_EXPORT QDataStream { diff --git a/src/corelib/io/qdatastream_p.h b/src/corelib/io/qdatastream_p.h index 157fee9..98dd21f 100644 --- a/src/corelib/io/qdatastream_p.h +++ b/src/corelib/io/qdatastream_p.h @@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE -#ifndef QT_NO_DATASTREAM +#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED) class QDataStreamPrivate { public: diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp index c9b2603..d4077bc 100644 --- a/src/corelib/io/qfile.cpp +++ b/src/corelib/io/qfile.cpp @@ -1339,7 +1339,7 @@ QFile::setPermissions(const QString &fileName, Permissions permissions) static inline qint64 _qfile_writeData(QAbstractFileEngine *engine, QRingBuffer *buffer) { - qint64 ret = engine->write(buffer->readPointer(), buffer->size()); + qint64 ret = engine->write(buffer->readPointer(), buffer->nextDataBlockSize()); if (ret > 0) buffer->free(ret); return ret; diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp index 9ab831f..3cf9b7e 100644 --- a/src/corelib/io/qfsfileengine.cpp +++ b/src/corelib/io/qfsfileengine.cpp @@ -762,12 +762,10 @@ qint64 QFSFileEnginePrivate::writeFdFh(const char *data, qint64 len) // Buffered stdlib mode. size_t result; - bool eof; do { result = fwrite(data + writtenBytes, 1, size_t(len - writtenBytes), fh); writtenBytes += result; - eof = feof(fh); - } while (!eof && (result == 0 ? errno == EINTR : writtenBytes < len)); + } while (result == 0 ? errno == EINTR : writtenBytes < len); } else if (fd != -1) { // Unbuffered stdio mode. @@ -783,7 +781,7 @@ qint64 QFSFileEnginePrivate::writeFdFh(const char *data, qint64 len) || (result > 0 && (writtenBytes += result) < len)); } - if (writtenBytes == 0) { + if (len && writtenBytes == 0) { writtenBytes = -1; q->setError(errno == ENOSPC ? QFile::ResourceError : QFile::WriteError, qt_error_string(errno)); } diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index 4494d2a..e4e6a15 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -619,7 +619,8 @@ qint64 QIODevice::size() const */ bool QIODevice::seek(qint64 pos) { - if (d_func()->openMode == NotOpen) { + Q_D(QIODevice); + if (d->openMode == NotOpen) { qWarning("QIODevice::seek: The device is not open"); return false; } @@ -628,7 +629,6 @@ bool QIODevice::seek(qint64 pos) return false; } - Q_D(QIODevice); #if defined QIODEVICE_DEBUG printf("%p QIODevice::seek(%d), before: d->pos = %d, d->buffer.size() = %d\n", this, int(pos), int(d->pos), d->buffer.size()); @@ -640,21 +640,16 @@ bool QIODevice::seek(qint64 pos) d->devicePos = pos; } - if (offset > 0 && !d->buffer.isEmpty()) { - // When seeking forwards, we need to pop bytes off the front of the - // buffer. - do { - int bytesToSkip = int(qMin<qint64>(offset, INT_MAX)); - d->buffer.skip(bytesToSkip); - offset -= bytesToSkip; - } while (offset > 0); - } else if (offset < 0) { + if (offset < 0 + || offset >= qint64(d->buffer.size())) // When seeking backwards, an operation that is only allowed for // random-access devices, the buffer is cleared. The next read // operation will then refill the buffer. We can optimize this, if we // find that seeking backwards becomes a significant performance hit. d->buffer.clear(); - } + else if (!d->buffer.isEmpty()) + d->buffer.skip(int(offset)); + #if defined QIODEVICE_DEBUG printf("%p \tafter: d->pos == %d, d->buffer.size() == %d\n", this, int(d->pos), d->buffer.size()); @@ -762,22 +757,20 @@ qint64 QIODevice::read(char *data, qint64 maxSize) // Short circuit for getChar() if (maxSize == 1) { - int chint = d->buffer.getChar(); - if (chint != -1) { + int chint; + while ((chint = d->buffer.getChar()) != -1) { + if (!sequential) + ++d->pos; + char c = char(uchar(chint)); - if (c == '\r' && (d->openMode & Text)) { - d->buffer.ungetChar(c); - } else { - if (data) - *data = c; - if (!sequential) - ++d->pos; + if (c == '\r' && (d->openMode & Text)) + continue; + *data = c; #if defined QIODEVICE_DEBUG - printf("%p \tread 0x%hhx (%c) returning 1 (shortcut)\n", this, - int(c), isprint(c) ? c : '?'); + printf("%p \tread 0x%hhx (%c) returning 1 (shortcut)\n", this, + int(c), isprint(c) ? c : '?'); #endif - return qint64(1); - } + return qint64(1); } } @@ -911,10 +904,10 @@ qint64 QIODevice::read(char *data, qint64 maxSize) QByteArray QIODevice::read(qint64 maxSize) { Q_D(QIODevice); - CHECK_MAXLEN(read, QByteArray()); - QByteArray tmp; - qint64 readSoFar = 0; - char buffer[4096]; + QByteArray result; + + CHECK_MAXLEN(read, result); + #if defined QIODEVICE_DEBUG printf("%p QIODevice::read(%d), d->pos = %d, d->buffer.size() = %d\n", this, int(maxSize), int(d->pos), int(d->buffer.size())); @@ -922,16 +915,34 @@ QByteArray QIODevice::read(qint64 maxSize) Q_UNUSED(d); #endif - do { - qint64 bytesToRead = qMin(int(maxSize - readSoFar), int(sizeof(buffer))); - qint64 readBytes = read(buffer, bytesToRead); - if (readBytes <= 0) - break; - tmp.append(buffer, (int) readBytes); - readSoFar += readBytes; - } while (readSoFar < maxSize && bytesAvailable() > 0); + if (maxSize != qint64(int(maxSize))) { + qWarning("QIODevice::read: maxSize argument exceeds QByteArray size limit"); + maxSize = INT_MAX; + } + + qint64 readBytes = 0; + if (maxSize) { + result.resize(int(maxSize)); + if (!result.size()) { + // If resize fails, read incrementally. + qint64 readResult; + do { + result.resize(int(qMin(maxSize, result.size() + QIODEVICE_BUFFERSIZE))); + readResult = read(result.data() + readBytes, result.size() - readBytes); + if (readResult > 0 || readBytes == 0) + readBytes += readResult; + } while (readResult == QIODEVICE_BUFFERSIZE); + } else { + readBytes = read(result.data(), result.size()); + } + } + + if (readBytes <= 0) + result.clear(); + else + result.resize(int(readBytes)); - return tmp; + return result; } /*! @@ -952,28 +963,30 @@ QByteArray QIODevice::readAll() this, int(d->pos), int(d->buffer.size())); #endif - QByteArray tmp; - if (d->isSequential() || size() == 0) { - // Read it in chunks. Use bytesAvailable() as an unreliable hint for - // sequential devices, but try to read 4K as a minimum. - int chunkSize = qMax(qint64(4096), bytesAvailable()); - qint64 totalRead = 0; - forever { - tmp.resize(tmp.size() + chunkSize); - qint64 readBytes = read(tmp.data() + totalRead, chunkSize); - tmp.chop(chunkSize - (readBytes < 0 ? 0 : readBytes)); - if (readBytes <= 0) - return tmp; - totalRead += readBytes; - chunkSize = qMax(qint64(4096), bytesAvailable()); - } + QByteArray result; + qint64 readBytes = 0; + if (d->isSequential() || (readBytes = size()) == 0) { + // Size is unknown, read incrementally. + qint64 readResult; + do { + result.resize(result.size() + QIODEVICE_BUFFERSIZE); + readResult = read(result.data() + readBytes, result.size() - readBytes); + if (readResult > 0 || readBytes == 0) + readBytes += readResult; + } while (readResult > 0); } else { // Read it all in one go. - tmp.resize(int(bytesAvailable())); - qint64 readBytes = read(tmp.data(), tmp.size()); - tmp.resize(readBytes < 0 ? 0 : int(readBytes)); + // If resize fails, don't read anything. + result.resize(int(readBytes - d->pos)); + readBytes = read(result.data(), result.size()); } - return tmp; + + if (readBytes <= 0) + result.clear(); + else + result.resize(int(readBytes)); + + return result; } /*! @@ -1122,11 +1135,9 @@ qint64 QIODevice::readLine(char *data, qint64 maxSize) QByteArray QIODevice::readLine(qint64 maxSize) { Q_D(QIODevice); - CHECK_MAXLEN(readLine, QByteArray()); - QByteArray tmp; - const int BufferGrowth = 4096; - qint64 readSoFar = 0; - qint64 readBytes = 0; + QByteArray result; + + CHECK_MAXLEN(readLine, result); #if defined QIODEVICE_DEBUG printf("%p QIODevice::readLine(%d), d->pos = %d, d->buffer.size() = %d\n", @@ -1135,25 +1146,34 @@ QByteArray QIODevice::readLine(qint64 maxSize) Q_UNUSED(d); #endif - do { - if (maxSize != 0) - tmp.resize(int(readSoFar + qMin(int(maxSize), BufferGrowth))); - else - tmp.resize(int(readSoFar + BufferGrowth)); - readBytes = readLine(tmp.data() + readSoFar, tmp.size() - readSoFar); - if (readBytes <= 0) - break; - - readSoFar += readBytes; - } while ((!maxSize || readSoFar < maxSize) && - readSoFar + 1 == tmp.size() && // +1 due to the ending null - tmp.at(readSoFar - 1) != '\n'); + if (maxSize > INT_MAX) { + qWarning("QIODevice::read: maxSize argument exceeds QByteArray size limit"); + maxSize = INT_MAX; + } - if (readSoFar == 0 && readBytes == -1) - tmp.clear(); // return Null if we found an error + result.resize(int(maxSize)); + qint64 readBytes = 0; + if (!result.size()) { + // If resize fails or maxSize == 0, read incrementally + if (maxSize == 0) + maxSize = INT_MAX; + qint64 readResult; + do { + result.resize(int(qMin(maxSize, result.size() + QIODEVICE_BUFFERSIZE))); + readResult = readLine(result.data() + readBytes, result.size() - readBytes); + if (readResult > 0 || readBytes == 0) + readBytes += readResult; + } while (readResult == QIODEVICE_BUFFERSIZE + && result[int(readBytes)] != '\n'); + } else + readBytes = readLine(result.data(), result.size()); + + if (readBytes <= 0) + result.clear(); else - tmp.resize(int(readSoFar)); - return tmp; + result.resize(readBytes); + + return result; } /*! @@ -1384,40 +1404,8 @@ bool QIODevicePrivate::putCharHelper(char c) */ bool QIODevice::getChar(char *c) { - Q_D(QIODevice); - const OpenMode openMode = d->openMode; - if (!(openMode & ReadOnly)) { - if (openMode == NotOpen) - qWarning("QIODevice::getChar: Closed device"); - else - qWarning("QIODevice::getChar: WriteOnly device"); - return false; - } - - // Shortcut for QIODevice::read(c, 1) - QRingBuffer *buffer = &d->buffer; - const int chint = buffer->getChar(); - if (chint != -1) { - char ch = char(uchar(chint)); - if ((openMode & Text) && ch == '\r') { - buffer->ungetChar(ch); - } else { - if (c) - *c = ch; - if (!d->isSequential()) - ++d->pos; - return true; - } - } - - // Fall back to read(). char ch; - if (read(&ch, 1) == 1) { - if (c) - *c = ch; - return true; - } - return false; + return (1 == read(c ? c : &ch, 1)); } /*! diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp index d8557e5..bf9b6bd 100644 --- a/src/corelib/tools/qbytearray.cpp +++ b/src/corelib/tools/qbytearray.cpp @@ -48,9 +48,7 @@ #include "qlocale_p.h" #include "qunicodetables_p.h" #include "qscopedpointer.h" -#ifndef QT_NO_DATASTREAM #include <qdatastream.h> -#endif #ifndef QT_NO_COMPRESS #include <zlib.h> @@ -2640,7 +2638,7 @@ void QByteArray::clear() d->ref.ref(); } -#ifndef QT_NO_DATASTREAM +#if !defined(QT_NO_DATASTREAM) || (defined(QT_BOOTSTRAPPED) && !defined(QT_BUILD_QMAKE)) /*! \relates QByteArray diff --git a/src/corelib/tools/qbytearray.h b/src/corelib/tools/qbytearray.h index e258481..7dd6f4f 100644 --- a/src/corelib/tools/qbytearray.h +++ b/src/corelib/tools/qbytearray.h @@ -572,7 +572,7 @@ inline QByteArray &QByteArray::setNum(float n, char f, int prec) { return setNum(double(n),f,prec); } -#ifndef QT_NO_DATASTREAM +#if !defined(QT_NO_DATASTREAM) || (defined(QT_BOOTSTRAPPED) && !defined(QT_BUILD_QMAKE)) Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QByteArray &); Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QByteArray &); #endif diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index f7321ef..086a2f3 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -7204,7 +7204,7 @@ QString QString::fromRawData(const QChar *unicode, int size) */ -#ifndef QT_NO_DATASTREAM +#if !defined(QT_NO_DATASTREAM) || (defined(QT_BOOTSTRAPPED) && !defined(QT_BUILD_QMAKE)) /*! \fn QDataStream &operator<<(QDataStream &stream, const QString &string) \relates QString diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 74f93a4..668be35 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -1065,7 +1065,7 @@ inline QChar &QString::ref(uint i) } #endif -#ifndef QT_NO_DATASTREAM +#if !defined(QT_NO_DATASTREAM) || (defined(QT_BOOTSTRAPPED) && !defined(QT_BUILD_QMAKE)) Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QString &); Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QString &); #endif diff --git a/src/gui/graphicsview/qgraphicsitemanimation.cpp b/src/gui/graphicsview/qgraphicsitemanimation.cpp index be2f300..b67ee2e 100644 --- a/src/gui/graphicsview/qgraphicsitemanimation.cpp +++ b/src/gui/graphicsview/qgraphicsitemanimation.cpp @@ -45,6 +45,7 @@ support for QGraphicsItem. \since 4.2 \ingroup graphicsview-api + \deprecated The QGraphicsItemAnimation class animates a QGraphicsItem. You can schedule changes to the item's transformation matrix at diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp index 23bef12..c691fe2 100644 --- a/src/gui/itemviews/qabstractitemview.cpp +++ b/src/gui/itemviews/qabstractitemview.cpp @@ -138,10 +138,22 @@ void QAbstractItemViewPrivate::init() #endif } +void QAbstractItemViewPrivate::setHoverIndex(const QPersistentModelIndex &index) +{ + Q_Q(QAbstractItemView); + if (hover == index) + return; + + q->update(hover); //update the old one + hover = index; + q->update(hover); //update the new one +} + void QAbstractItemViewPrivate::checkMouseMove(const QPersistentModelIndex &index) { //we take a persistent model index because the model might change by emitting signals Q_Q(QAbstractItemView); + setHoverIndex(index); if (viewportEnteredNeeded || enteredIndex != index) { viewportEnteredNeeded = false; @@ -1536,22 +1548,13 @@ bool QAbstractItemView::viewportEvent(QEvent *event) { Q_D(QAbstractItemView); switch (event->type()) { - case QEvent::HoverEnter: { - QHoverEvent *he = static_cast<QHoverEvent*>(event); - d->hover = indexAt(he->pos()); - update(d->hover); - break; } - case QEvent::HoverLeave: { - update(d->hover); // update old - d->hover = QModelIndex(); - break; } - case QEvent::HoverMove: { - QHoverEvent *he = static_cast<QHoverEvent*>(event); - QModelIndex old = d->hover; - d->hover = indexAt(he->pos()); - if (d->hover != old) - d->viewport->update(visualRect(old)|visualRect(d->hover)); - break; } + case QEvent::HoverMove: + case QEvent::HoverEnter: + d->setHoverIndex(indexAt(static_cast<QHoverEvent*>(event)->pos())); + break; + case QEvent::HoverLeave: + d->setHoverIndex(QModelIndex()); + break; case QEvent::Enter: d->viewportEnteredNeeded = true; break; diff --git a/src/gui/itemviews/qabstractitemview_p.h b/src/gui/itemviews/qabstractitemview_p.h index c691f61..f1ba874 100644 --- a/src/gui/itemviews/qabstractitemview_p.h +++ b/src/gui/itemviews/qabstractitemview_p.h @@ -152,6 +152,8 @@ public: const QEvent *event) const; virtual void selectAll(QItemSelectionModel::SelectionFlags command); + void setHoverIndex(const QPersistentModelIndex &index); + void checkMouseMove(const QPersistentModelIndex &index); inline void checkMouseMove(const QPoint &pos) { checkMouseMove(q_func()->indexAt(pos)); } diff --git a/src/gui/itemviews/qlistview.cpp b/src/gui/itemviews/qlistview.cpp index 052308c..d03cdd3 100644 --- a/src/gui/itemviews/qlistview.cpp +++ b/src/gui/itemviews/qlistview.cpp @@ -966,15 +966,19 @@ void QListView::paintEvent(QPaintEvent *e) bool alternateBase = false; int previousRow = -2; // trigger the alternateBase adjustment on first pass + int maxSize = (flow() == TopToBottom) + ? qMax(viewport()->size().width(), d->contentsSize().width()) - 2 * d->spacing() + : qMax(viewport()->size().height(), d->contentsSize().height()) - 2 * d->spacing(); + QVector<QModelIndex>::const_iterator end = toBeRendered.constEnd(); for (QVector<QModelIndex>::const_iterator it = toBeRendered.constBegin(); it != end; ++it) { Q_ASSERT((*it).isValid()); option.rect = visualRect(*it); if (flow() == TopToBottom) - option.rect.setWidth(qMin(d->contentsSize().width() - 2 * d->spacing(), option.rect.width())); + option.rect.setWidth(qMin(maxSize, option.rect.width())); else - option.rect.setHeight(qMin(d->contentsSize().height() - 2 * d->spacing(), option.rect.height())); + option.rect.setHeight(qMin(maxSize, option.rect.height())); option.state = state; if (selections && selections->isSelected(*it)) diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp index 02e5fff..a3877b7 100644 --- a/src/gui/itemviews/qtableview.cpp +++ b/src/gui/itemviews/qtableview.cpp @@ -1064,14 +1064,29 @@ QTableView::~QTableView() void QTableView::setModel(QAbstractItemModel *model) { Q_D(QTableView); - connect(model, SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(_q_updateSpanInsertedRows(QModelIndex,int,int))); - connect(model, SIGNAL(columnsInserted(QModelIndex,int,int)), - this, SLOT(_q_updateSpanInsertedColumns(QModelIndex,int,int))); - connect(model, SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(_q_updateSpanRemovedRows(QModelIndex,int,int))); - connect(model, SIGNAL(columnsRemoved(QModelIndex,int,int)), - this, SLOT(_q_updateSpanRemovedColumns(QModelIndex,int,int))); + if (model == d->model) + return; + //let's disconnect from the old model + if (d->model && d->model != QAbstractItemModelPrivate::staticEmptyModel()) { + disconnect(d->model, SIGNAL(rowsInserted(QModelIndex,int,int)), + this, SLOT(_q_updateSpanInsertedRows(QModelIndex,int,int))); + disconnect(d->model, SIGNAL(columnsInserted(QModelIndex,int,int)), + this, SLOT(_q_updateSpanInsertedColumns(QModelIndex,int,int))); + disconnect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SLOT(_q_updateSpanRemovedRows(QModelIndex,int,int))); + disconnect(d->model, SIGNAL(columnsRemoved(QModelIndex,int,int)), + this, SLOT(_q_updateSpanRemovedColumns(QModelIndex,int,int))); + } + if (model) { //and connect to the new one + connect(model, SIGNAL(rowsInserted(QModelIndex,int,int)), + this, SLOT(_q_updateSpanInsertedRows(QModelIndex,int,int))); + connect(model, SIGNAL(columnsInserted(QModelIndex,int,int)), + this, SLOT(_q_updateSpanInsertedColumns(QModelIndex,int,int))); + connect(model, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SLOT(_q_updateSpanRemovedRows(QModelIndex,int,int))); + connect(model, SIGNAL(columnsRemoved(QModelIndex,int,int)), + this, SLOT(_q_updateSpanRemovedColumns(QModelIndex,int,int))); + } d->verticalHeader->setModel(model); d->horizontalHeader->setModel(model); QAbstractItemView::setModel(model); diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp index 8d50870b..3ad9fbb 100644 --- a/src/gui/itemviews/qtreeview.cpp +++ b/src/gui/itemviews/qtreeview.cpp @@ -215,6 +215,13 @@ void QTreeView::setModel(QAbstractItemModel *model) Q_D(QTreeView); if (model == d->model) return; + if (d->model && d->model != QAbstractItemModelPrivate::staticEmptyModel()) { + disconnect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SLOT(rowsRemoved(QModelIndex,int,int))); + + disconnect(d->model, SIGNAL(modelAboutToBeReset()), this, SLOT(_q_modelAboutToBeReset())); + } + if (d->selectionModel) { // support row editing disconnect(d->selectionModel, SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), d->model, SLOT(submit())); diff --git a/src/gui/kernel/qsoftkeymanager.cpp b/src/gui/kernel/qsoftkeymanager.cpp index 22ac319..775d773 100644 --- a/src/gui/kernel/qsoftkeymanager.cpp +++ b/src/gui/kernel/qsoftkeymanager.cpp @@ -210,6 +210,10 @@ bool QSoftKeyManager::event(QEvent *e) #ifdef Q_WS_S60 void QSoftKeyManagerPrivate::updateSoftKeys_sys(const QList<QAction*> &softkeys) { + // lets not update softkeys if s60 native dialog or menu is shown + if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog()) + return; + CEikButtonGroupContainer* nativeContainer = S60->buttonGroupContainer(); nativeContainer->DrawableWindow()->SetOrdinalPosition(0); nativeContainer->DrawableWindow()->SetPointerCapturePriority(1); //keep softkeys available in modal dialog diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 0d8da0c..709f6f3 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -4677,8 +4677,10 @@ void QWidgetPrivate::resolveLayoutDirection() By default, this property is set to Qt::LeftToRight. When the layout direction is set on a widget, it will propagate to - the widget's children. Children added after the call to \c - setLayoutDirection() will not inherit the parent's layout + the widget's children, but not to a child that is a window and not + to a child for which setLayoutDirection() has been explicitly + called. Also, child widgets added \e after setLayoutDirection() + has been called for the parent do not inherit the parent's layout direction. \sa QApplication::layoutDirection @@ -11869,8 +11871,7 @@ void QWidget::ungrabGesture(Qt::GestureType gesture) isVisible() returns false for a widget, that widget cannot call grabMouse(). - \sa releaseMouse() grabKeyboard() releaseKeyboard() grabKeyboard() - focusWidget() + \sa releaseMouse() grabKeyboard() releaseKeyboard() */ /*! diff --git a/src/gui/styles/qcleanlooksstyle.cpp b/src/gui/styles/qcleanlooksstyle.cpp index 973e682..b08847d 100644 --- a/src/gui/styles/qcleanlooksstyle.cpp +++ b/src/gui/styles/qcleanlooksstyle.cpp @@ -3817,6 +3817,7 @@ QSize QCleanlooksStyle::sizeFromContents(ContentsType type, const QStyleOption * newSize.setWidth(80); if (!btn->icon.isNull() && btn->iconSize.height() > 16) newSize -= QSize(0, 2); + newSize += QSize(0, 1); } if (const QPushButton *button = qobject_cast<const QPushButton *>(widget)) { if (qobject_cast<const QDialogButtonBox *>(button->parentWidget())) { diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp index 70b7aa3..5566cc6 100644 --- a/src/gui/styles/qgtkstyle.cpp +++ b/src/gui/styles/qgtkstyle.cpp @@ -2521,7 +2521,7 @@ void QGtkStyle::drawControl(ControlElement element, bool selected = menuItem->state & State_Selected && menuItem->state & State_Enabled; if (selected) { - QRect rect = option->rect.adjusted(0, 0, -1, -1); + QRect rect = option->rect.adjusted(0, 0, 0, -1); #ifndef QT_NO_COMBOBOX if (qobject_cast<const QComboBox*>(widget)) rect = option->rect; @@ -2628,7 +2628,7 @@ void QGtkStyle::drawControl(ControlElement element, int pixw = pixmap.width(); int pixh = pixmap.height(); QRect pmr(0, 0, pixw, pixh); - pmr.moveCenter(vCheckRect.center()); + pmr.moveCenter(vCheckRect.center() - QPoint(0, 1)); painter->setPen(menuItem->palette.text().color()); if (!ignoreCheckMark && checkable && checked) { QStyleOption opt = *option; @@ -2670,8 +2670,8 @@ void QGtkStyle::drawControl(ControlElement element, menuitem->rect.getRect(&x, &y, &w, &h); int tab = menuitem->tabWidth; int xm = windowsItemFrame + checkcol + windowsItemHMargin; - int xpos = menuitem->rect.x() + xm; - QRect textRect(xpos, y + windowsItemVMargin, w - xm - windowsRightBorder - tab + 1, h - 2 * windowsItemVMargin); + int xpos = menuitem->rect.x() + xm + 1; + QRect textRect(xpos, y + windowsItemVMargin - 1, w - xm - windowsRightBorder - tab + 1, h - 2 * windowsItemVMargin); QRect vTextRect = visualRect(opt->direction, menuitem->rect, textRect); QString s = menuitem->text; @@ -2718,13 +2718,19 @@ void QGtkStyle::drawControl(ControlElement element, QFontMetrics fm(menuitem->font); int arrow_size = fm.ascent() + fm.descent() - 2 * gtkMenuItem->style->ythickness; gfloat arrow_scaling = 0.8; + int extra = 0; + if (!d->gtk_check_version(2, 16, 0)) { + // "arrow-scaling" is actually hardcoded and fails on hardy (see gtk+-2.12/gtkmenuitem.c) + // though the current documentation states otherwise + d->gtk_widget_style_get(gtkMenuItem, "arrow-scaling", &arrow_scaling, NULL); + // in versions < 2.16 ythickness was previously subtracted from the arrow_size + extra = 2 * gtkMenuItem->style->ythickness; + } - // "arrow-scaling" is actually hardcoded and fails on hardy (see gtk+-2.12/gtkmenuitem.c) - // though the current documentation states otherwise int horizontal_padding; d->gtk_widget_style_get(gtkMenuItem, "horizontal-padding", &horizontal_padding, NULL); - const int dim = static_cast<int>(arrow_size * arrow_scaling); + const int dim = static_cast<int>(arrow_size * arrow_scaling) + extra; int xpos = menuItem->rect.left() + menuItem->rect.width() - horizontal_padding - dim; QRect vSubMenuRect = visualRect(option->direction, menuItem->rect, QRect(xpos, menuItem->rect.top() + @@ -3123,7 +3129,7 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, case CT_ToolButton: if (const QStyleOptionToolButton *toolbutton = qstyleoption_cast<const QStyleOptionToolButton *>(option)) { GtkWidget *gtkButton = d->gtkWidget(QLS("GtkToolButton.GtkButton")); - newSize = size + QSize(2 * gtkButton->style->xthickness, 1 + 2 * gtkButton->style->ythickness); + newSize = size + QSize(2 * gtkButton->style->xthickness, 2 + 2 * gtkButton->style->ythickness); if (widget && qobject_cast<QToolBar *>(widget->parentWidget())) { QSize minSize(0, 25); if (toolbutton->toolButtonStyle != Qt::ToolButtonTextOnly) @@ -3155,7 +3161,7 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, GtkWidget *gtkMenuItem = d->gtkWidget(QLS("GtkMenu.GtkMenuItem")); GtkStyle* style = gtkMenuItem->style; - newSize += QSize(textMargin + style->xthickness - 2, style->ythickness - 4); + newSize += QSize(textMargin + style->xthickness - 1, style->ythickness - 3); // Cleanlooks assumes a check column of 20 pixels so we need to // expand it a bit @@ -3175,7 +3181,7 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, case CT_SpinBox: // QSpinBox does some nasty things that depends on CT_LineEdit - newSize = size + QSize(0, -d->gtkWidget(QLS("GtkSpinButton"))->style->ythickness * 2 + 2); + newSize = size + QSize(0, -d->gtkWidget(QLS("GtkSpinButton"))->style->ythickness * 2); break; case CT_PushButton: @@ -3206,13 +3212,9 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, } break; - case CT_MenuBarItem://cleanlooks adds 2 pixels - newSize = QWindowsStyle::sizeFromContents(type, option, size, widget) + QSize(0, 1); - break; - case CT_LineEdit: { GtkWidget *gtkEntry = d->gtkWidget(QLS("GtkEntry")); - newSize = size + QSize(2*gtkEntry->style->xthickness, 2*gtkEntry->style->ythickness); + newSize = size + QSize(2*gtkEntry->style->xthickness, 2 + 2*gtkEntry->style->ythickness); } break; @@ -3227,7 +3229,7 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, newSize = size + QSize(12 + arrowButtonRect.width() + 2*gtkCombo->style->xthickness, 4 + 2*gtkCombo->style->ythickness); if (!(widget && qobject_cast<QToolBar *>(widget->parentWidget()))) - newSize += QSize(0, 3); + newSize += QSize(0, 2); } break; @@ -3240,7 +3242,7 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, if (!tab->icon.isNull()) newSize += QSize(6, 0); } - newSize += QSize(1, 0); + newSize += QSize(1, 1); break; default: diff --git a/src/gui/styles/qgtkstyle_p.cpp b/src/gui/styles/qgtkstyle_p.cpp index 7119a4f..5f4ebae 100644 --- a/src/gui/styles/qgtkstyle_p.cpp +++ b/src/gui/styles/qgtkstyle_p.cpp @@ -202,12 +202,16 @@ Ptr_gnome_vfs_init QGtkStylePrivate::gnome_vfs_init = 0; typedef int (*x11ErrorHandler)(Display*, XErrorEvent*); -static void gtkStyleSetCallback(GtkWidget*, QGtkStylePrivate* stylePrivate) +Q_DECLARE_METATYPE(QGtkStylePrivate*); + +static void gtkStyleSetCallback(GtkWidget*) { + qRegisterMetaType<QGtkStylePrivate *>(); + // We have to let this function return and complete the event // loop to ensure that all gtk widgets have been styled before // updating - QMetaObject::invokeMethod(styleScheduler(), "updateTheme", Qt::QueuedConnection, Q_ARG(QGtkStylePrivate*, stylePrivate)); + QMetaObject::invokeMethod(styleScheduler(), "updateTheme", Qt::QueuedConnection); } static void update_toolbar_style(GtkWidget *gtkToolBar, GParamSpec *, gpointer) @@ -251,10 +255,18 @@ bool QGtkStyleFilter::eventFilter(QObject *obj, QEvent *e) return QObject::eventFilter(obj, e); } +QList<QGtkStylePrivate *> QGtkStylePrivate::instances; + QGtkStylePrivate::QGtkStylePrivate() : QCleanlooksStylePrivate() , filter(this) { + instances.append(this); +} + +QGtkStylePrivate::~QGtkStylePrivate() +{ + instances.removeOne(this); } void QGtkStylePrivate::init() @@ -285,7 +297,7 @@ GtkStyle* QGtkStylePrivate::gtkStyle(const QString &path) /*! \internal * Get references to gtk functions after we dynamically load the library. */ -void QGtkStylePrivate::resolveGtk() +void QGtkStylePrivate::resolveGtk() const { // enforce the "0" suffix, so we'll open libgtk-x11-2.0.so.0 QLibrary libgtk(QLS("gtk-x11-2.0"), 0, 0); @@ -413,7 +425,7 @@ void QGtkStylePrivate::resolveGtk() * Initializes a number of gtk menu widgets. * The widgets are cached. */ -void QGtkStylePrivate::initGtkMenu() +void QGtkStylePrivate::initGtkMenu() const { // Create menubar GtkWidget *gtkMenuBar = QGtkStylePrivate::gtk_menu_bar_new(); @@ -444,7 +456,7 @@ void QGtkStylePrivate::initGtkMenu() } -void QGtkStylePrivate::initGtkTreeview() +void QGtkStylePrivate::initGtkTreeview() const { GtkWidget *gtkTreeView = gtk_tree_view_new(); gtk_tree_view_append_column((GtkTreeView*)gtkTreeView, gtk_tree_view_column_new()); @@ -458,7 +470,7 @@ void QGtkStylePrivate::initGtkTreeview() * Initializes a number of gtk widgets that we can later on use to determine some of our styles. * The widgets are cached. */ -void QGtkStylePrivate::initGtkWidgets() +void QGtkStylePrivate::initGtkWidgets() const { // From gtkmain.c uid_t ruid = getuid (); @@ -509,7 +521,7 @@ void QGtkStylePrivate::initGtkWidgets() if (!gtkWidgetMap()->contains(QLS("GtkButton"))) { GtkWidget *gtkButton = QGtkStylePrivate::gtk_button_new(); addWidget(gtkButton); - g_signal_connect(gtkButton, "style-set", G_CALLBACK(gtkStyleSetCallback), this); + g_signal_connect(gtkButton, "style-set", G_CALLBACK(gtkStyleSetCallback), 0); addWidget(QGtkStylePrivate::gtk_tool_button_new(NULL, NULL)); addWidget(QGtkStylePrivate::gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE)); addWidget(QGtkStylePrivate::gtk_hbutton_box_new()); @@ -613,7 +625,7 @@ bool QGtkStylePrivate::getGConfBool(const QString &key, bool fallback) return retVal; } -QString QGtkStylePrivate::getThemeName() const +QString QGtkStylePrivate::getThemeName() { QString themeName; // We try to parse the gtkrc file first @@ -730,7 +742,7 @@ void QGtkStylePrivate::addAllSubWidgets(GtkWidget *widget, gpointer v) } // Updates window/windowtext palette based on the indicated gtk widget -QPalette QGtkStylePrivate::gtkWidgetPalette(const QString >kWidgetName) +QPalette QGtkStylePrivate::gtkWidgetPalette(const QString >kWidgetName) const { GtkWidget *gtkWidget = QGtkStylePrivate::gtkWidget(gtkWidgetName); Q_ASSERT(gtkWidget); @@ -751,7 +763,7 @@ QPalette QGtkStylePrivate::gtkWidgetPalette(const QString >kWidgetName) } -void QGtkStyleUpdateScheduler::updateTheme( QGtkStylePrivate* stylePrivate ) +void QGtkStyleUpdateScheduler::updateTheme() { static QString oldTheme(QLS("qt_not_set")); QPixmapCache::clear(); @@ -760,20 +772,22 @@ void QGtkStyleUpdateScheduler::updateTheme( QGtkStylePrivate* stylePrivate ) if (QApplication::font() != font) qApp->setFont(font); - if (oldTheme != stylePrivate->getThemeName()) { - oldTheme = stylePrivate->getThemeName(); - QPalette newPalette = qApp->style()->standardPalette(); - QApplicationPrivate::setSystemPalette(newPalette); - QApplication::setPalette(newPalette); - stylePrivate->initGtkWidgets(); - stylePrivate->applyCustomPaletteHash(); - QList<QWidget*> widgets = QApplication::allWidgets(); - // Notify all widgets that size metrics might have changed - foreach (QWidget *widget, widgets) { - QEvent e(QEvent::StyleChange); - QApplication::sendEvent(widget, &e); - } - } + if (oldTheme != QGtkStylePrivate::getThemeName()) { + oldTheme = QGtkStylePrivate::getThemeName(); + QPalette newPalette = qApp->style()->standardPalette(); + QApplicationPrivate::setSystemPalette(newPalette); + QApplication::setPalette(newPalette); + if (!QGtkStylePrivate::instances.isEmpty()) { + QGtkStylePrivate::instances.last()->initGtkWidgets(); + QGtkStylePrivate::instances.last()->applyCustomPaletteHash(); + } + QList<QWidget*> widgets = QApplication::allWidgets(); + // Notify all widgets that size metrics might have changed + foreach (QWidget *widget, widgets) { + QEvent e(QEvent::StyleChange); + QApplication::sendEvent(widget, &e); + } + } QIconLoader::instance()->updateSystemTheme(); } diff --git a/src/gui/styles/qgtkstyle_p.h b/src/gui/styles/qgtkstyle_p.h index fa16769..f6ab8a3 100644 --- a/src/gui/styles/qgtkstyle_p.h +++ b/src/gui/styles/qgtkstyle_p.h @@ -255,16 +255,17 @@ class QGtkStylePrivate : public QCleanlooksStylePrivate Q_DECLARE_PUBLIC(QGtkStyle) public: QGtkStylePrivate(); + ~QGtkStylePrivate(); QGtkStyleFilter filter; static GtkWidget* gtkWidget(const QString &path); static GtkStyle* gtkStyle(const QString &path = QLatin1String("GtkWindow")); - virtual void resolveGtk(); - virtual void initGtkMenu(); - virtual void initGtkTreeview(); - virtual void initGtkWidgets(); + virtual void resolveGtk() const; + virtual void initGtkMenu() const; + virtual void initGtkTreeview() const; + virtual void initGtkWidgets() const; static void cleanupGtkWidgets(); @@ -276,7 +277,7 @@ public: static bool getGConfBool(const QString &key, bool fallback = 0); static QString getGConfString(const QString &key, const QString &fallback = QString()); - virtual QString getThemeName() const; + static QString getThemeName(); virtual int getSpinboxArrowSize() const; static void setupGtkFileChooser(GtkWidget* gtkFileChooser, QWidget *parent, @@ -412,7 +413,7 @@ public: static Ptr_gnome_icon_lookup_sync gnome_icon_lookup_sync; static Ptr_gnome_vfs_init gnome_vfs_init; - virtual QPalette gtkWidgetPalette(const QString >kWidgetName); + virtual QPalette gtkWidgetPalette(const QString >kWidgetName) const; protected: typedef QHash<QString, GtkWidget*> WidgetMap; @@ -434,6 +435,10 @@ protected: static void addWidget(GtkWidget *widget); virtual void init(); + +private: + static QList<QGtkStylePrivate *> instances; + friend class QGtkStyleUpdateScheduler; }; // Helper to ensure that we have polished all our gtk widgets @@ -442,7 +447,7 @@ class QGtkStyleUpdateScheduler : public QObject { Q_OBJECT public slots: - void updateTheme( QGtkStylePrivate* stylePrivate ); + void updateTheme(); }; QT_END_NAMESPACE diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp index b8c1b33..3d3f1e1 100644 --- a/src/gui/text/qfontmetrics.cpp +++ b/src/gui/text/qfontmetrics.cpp @@ -1367,10 +1367,13 @@ qreal QFontMetricsF::rightBearing(QChar ch) const */ qreal QFontMetricsF::width(const QString &text) const { + int pos = text.indexOf(QLatin1Char('\x9c')); + int len = (pos != -1) ? pos : text.length(); + QTextEngine layout(text, d.data()); layout.ignoreBidi = true; layout.itemize(); - return layout.width(0, text.length()).toReal(); + return layout.width(0, len).toReal(); } /*! @@ -1587,7 +1590,7 @@ QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString& */ QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops, int *tabArray) const { - return boundingRect(QRectF(), flags, text, tabStops, tabArray).size(); + return boundingRect(QRectF(), flags | Qt::TextLongestVariant, text, tabStops, tabArray).size(); } /*! @@ -1642,7 +1645,20 @@ QRectF QFontMetricsF::tightBoundingRect(const QString &text) const */ QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags) const { - QStackTextEngine engine(text, QFont(d.data())); + QString _text = text; + if (!(flags & Qt::TextLongestVariant)) { + int posA = 0; + int posB = _text.indexOf(QLatin1Char('\x9c')); + while (posB >= 0) { + QString portion = _text.mid(posA, posB - posA); + if (size(flags, portion).width() <= width) + return portion; + posA = posB + 1; + posB = _text.indexOf(QLatin1Char('\x9c'), posA); + } + _text = _text.mid(posA); + } + QStackTextEngine engine(_text, QFont(d.data())); return engine.elidedText(mode, QFixed::fromReal(width), flags); } diff --git a/src/gui/widgets/qcommandlinkbutton.cpp b/src/gui/widgets/qcommandlinkbutton.cpp index 9adf280..8f47f25 100644 --- a/src/gui/widgets/qcommandlinkbutton.cpp +++ b/src/gui/widgets/qcommandlinkbutton.cpp @@ -326,7 +326,8 @@ int QCommandLinkButton::heightForWidth(int width) const Q_D(const QCommandLinkButton); int heightWithoutDescription = d->descriptionOffset() + d->bottomMargin(); // find the width available for the description area - return heightWithoutDescription + d->descriptionHeight(width); + return qMax(heightWithoutDescription + d->descriptionHeight(width), + iconSize().height() + d->topMargin() + d->bottomMargin()); } /*! \reimp */ diff --git a/src/gui/widgets/qsizegrip.cpp b/src/gui/widgets/qsizegrip.cpp index cf193dc..6575dbb 100644 --- a/src/gui/widgets/qsizegrip.cpp +++ b/src/gui/widgets/qsizegrip.cpp @@ -99,6 +99,7 @@ public: int dyMax; Qt::Corner m_corner; bool gotMousePress; + QWidget *tlw; #ifdef Q_WS_MAC void updateMacSizer(bool hide) const; #endif @@ -113,6 +114,19 @@ public: return m_corner == Qt::BottomLeftCorner || m_corner == Qt::TopLeftCorner; } + void updateTopLevelWidget() + { + Q_Q(QSizeGrip); + QWidget *w = qt_sizegrip_topLevelWidget(q); + if (tlw == w) + return; + if (tlw) + tlw->removeEventFilter(q); + tlw = w; + if (tlw) + tlw->installEventFilter(q); + } + // This slot is invoked by QLayout when the size grip is added to // a layout or reparented after the tlw is shown. This re-implementation is basically // the same as QWidgetPrivate::_q_showIfNotHidden except that it checks @@ -121,7 +135,7 @@ public: { Q_Q(QSizeGrip); bool showSizeGrip = !(q->isHidden() && q->testAttribute(Qt::WA_WState_ExplicitShowHide)); - QWidget *tlw = qt_sizegrip_topLevelWidget(q); + updateTopLevelWidget(); if (tlw && showSizeGrip) { Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen; #ifndef Q_WS_MAC @@ -232,6 +246,7 @@ void QSizeGripPrivate::init() Q_Q(QSizeGrip); dxMax = 0; dyMax = 0; + tlw = 0; m_corner = q->isLeftToRight() ? Qt::BottomRightCorner : Qt::BottomLeftCorner; gotMousePress = false; @@ -240,8 +255,7 @@ void QSizeGripPrivate::init() ? Qt::SizeFDiagCursor : Qt::SizeBDiagCursor); #endif q->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed)); - QWidget *tlw = qt_sizegrip_topLevelWidget(q); - tlw->installEventFilter(q); + updateTopLevelWidget(); } @@ -524,19 +538,18 @@ void QSizeGrip::setVisible(bool visible) /*! \reimp */ bool QSizeGrip::eventFilter(QObject *o, QEvent *e) { + Q_D(QSizeGrip); if ((isHidden() && testAttribute(Qt::WA_WState_ExplicitShowHide)) - || e->type() != QEvent::WindowStateChange) { + || e->type() != QEvent::WindowStateChange + || o != d->tlw) { return QWidget::eventFilter(o, e); } - QWidget *tlw = qt_sizegrip_topLevelWidget(this); - if (o != tlw) - return QWidget::eventFilter(o, e); Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen; #ifndef Q_WS_MAC sizeGripNotVisibleState |= Qt::WindowMaximized; #endif // Don't show the size grip if the tlw is maximized or in full screen mode. - setVisible(!(tlw->windowState() & sizeGripNotVisibleState)); + setVisible(!(d->tlw->windowState() & sizeGripNotVisibleState)); setAttribute(Qt::WA_WState_ExplicitShowHide, false); return QWidget::eventFilter(o, e); } diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp index 5de6c70..9645fa8 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp +++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp @@ -152,13 +152,23 @@ bool QAudioDeviceInfoInternal::open() { int err = 0; QString dev = device; - if(!dev.contains(QLatin1String("default"))) { + QList<QByteArray> devices = availableDevices(mode); + + if(dev.compare(QLatin1String("default")) == 0) { +#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) + dev = QLatin1String(devices.first().constData()); +#else + dev = QLatin1String("hw:0,0"); +#endif + } else { #if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) - dev = QString(QLatin1String("default:CARD=%1")).arg(dev); + dev = device; #else int idx = 0; char *name; + QString shortName = device.mid(device.indexOf(QLatin1String("="),0)+1); + while(snd_card_get_name(idx,&name) == 0) { if(dev.contains(QLatin1String(name))) break; @@ -195,16 +205,25 @@ bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const snd_pcm_hw_params_t *params; QString dev = device; - // open() - if(!dev.contains(QLatin1String("default"))) { + QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput); + + if(dev.compare(QLatin1String("default")) == 0) { #if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) - dev = QString(QLatin1String("default:CARD=%1")).arg(dev); + dev = QLatin1String(devices.first().constData()); +#else + dev = QLatin1String("hw:0,0"); +#endif + } else { +#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) + dev = device; #else int idx = 0; char *name; - + + QString shortName = device.mid(device.indexOf(QLatin1String("="),0)+1); + while(snd_card_get_name(idx,&name) == 0) { - if(dev.contains(QLatin1String(name))) + if(shortName.compare(QLatin1String(name)) == 0) break; idx++; } @@ -386,6 +405,7 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) { QList<QByteArray> devices; QByteArray filter; + #if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) // Create a list of all current audio devices that support mode void **hints, **n; @@ -408,12 +428,10 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) descr = snd_device_name_get_hint(*n, "DESC"); io = snd_device_name_get_hint(*n, "IOID"); if((name != NULL) && (descr != NULL) && ((io == NULL) || (io == filter))) { - QString str = QLatin1String(name); - - if(str.contains(QLatin1String("default"))) { - int pos = str.indexOf(QLatin1String("="),0); - devices.append(str.mid(pos+1).toLocal8Bit().constData()); - } + QString deviceName = QLatin1String(name); + QString deviceDescription = QLatin1String(descr); + if(deviceDescription.contains(QLatin1String("Default Audio Device"))) + devices.append(deviceName.toLocal8Bit().constData()); } if(name != NULL) free(name); @@ -448,7 +466,7 @@ QByteArray QAudioDeviceInfoInternal::defaultInputDevice() if(devices.size() == 0) return QByteArray(); - return QByteArray("default"); + return devices.first(); } QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() @@ -457,7 +475,7 @@ QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() if(devices.size() == 0) return QByteArray(); - return QByteArray("default"); + return devices.first(); } QT_END_NAMESPACE diff --git a/src/multimedia/audio/qaudioinput.cpp b/src/multimedia/audio/qaudioinput.cpp index e794eaf..8b368d5 100644 --- a/src/multimedia/audio/qaudioinput.cpp +++ b/src/multimedia/audio/qaudioinput.cpp @@ -47,7 +47,6 @@ #include "qaudiodevicefactory_p.h" - QT_BEGIN_NAMESPACE /*! diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp index 8a8f0db..3dbe66c 100644 --- a/src/multimedia/audio/qaudioinput_alsa_p.cpp +++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp @@ -52,6 +52,7 @@ #include <QtCore/qcoreapplication.h> #include "qaudioinput_alsa_p.h" +#include "qaudiodeviceinfo_alsa_p.h" QT_BEGIN_NAMESPACE @@ -80,8 +81,7 @@ QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device, const QAudioFor pullMode = true; resuming = false; - QStringList list1 = QString(QLatin1String(device)).split(QLatin1String(":")); - m_device = QByteArray(list1.at(0).toLocal8Bit().constData()); + m_device = device; timer = new QTimer(this); connect(timer,SIGNAL(timeout()),SLOT(userFeed())); @@ -259,22 +259,31 @@ bool QAudioInputPrivate::open() unsigned int freakuency=settings.frequency(); QString dev = QString(QLatin1String(m_device.constData())); - if(!dev.contains(QLatin1String("default"))) { -#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) - dev = QString(QLatin1String("default:CARD=%1")).arg(QLatin1String(m_device.constData())); + QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioInput); + if(dev.compare(QLatin1String("default")) == 0) { +#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) + dev = QLatin1String(devices.first()); +#else + dev = QLatin1String("hw:0,0"); +#endif + } else { +#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) + dev = QLatin1String(m_device); #else int idx = 0; char *name; + QString shortName = QLatin1String(m_device.mid(m_device.indexOf('=',0)+1).constData()); + while(snd_card_get_name(idx,&name) == 0) { - if(m_device.contains(name)) + if(qstrncmp(shortName.toLocal8Bit().constData(),name,shortName.length()) == 0) break; idx++; } dev = QString(QLatin1String("hw:%1,0")).arg(idx); #endif } - + // Step 1: try and open the device while((count < 5) && (err < 0)) { err=snd_pcm_open(&handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_CAPTURE,0); @@ -614,7 +623,7 @@ qint64 QAudioInputPrivate::elapsedUSecs() const if (deviceState == QAudio::StoppedState) return 0; -#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) +#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) snd_pcm_status_t* status; snd_pcm_status_alloca(&status); diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp index e9784d2..020a104 100644 --- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp +++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp @@ -52,6 +52,7 @@ #include <QtCore/qcoreapplication.h> #include "qaudiooutput_alsa_p.h" +#include "qaudiodeviceinfo_alsa_p.h" QT_BEGIN_NAMESPACE @@ -281,21 +282,31 @@ bool QAudioOutputPrivate::open() unsigned int freakuency=settings.frequency(); QString dev = QLatin1String(m_device.constData()); - if(!dev.contains(QLatin1String("default"))) { -#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) - dev = QString(QLatin1String("default:CARD=%1")).arg(QLatin1String(m_device.constData())); + QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput); + if(dev.compare(QLatin1String("default")) == 0) { +#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) + dev = QLatin1String(devices.first().constData()); +#else + dev = QLatin1String("hw:0,0"); +#endif + } else { +#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) + dev = QLatin1String(m_device); #else int idx = 0; char *name; + QString shortName = QLatin1String(m_device.mid(m_device.indexOf('=',0)+1).constData()); + while(snd_card_get_name(idx,&name) == 0) { - if(m_device.contains(name)) + if(qstrncmp(shortName.toLocal8Bit().constData(),name,shortName.length()) == 0) break; idx++; } dev = QString(QLatin1String("hw:%1,0")).arg(idx); #endif } + // Step 1: try and open the device while((count < 5) && (err < 0)) { err=snd_pcm_open(&handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_PLAYBACK,0); @@ -666,7 +677,7 @@ qint64 QAudioOutputPrivate::elapsedUSecs() const if (deviceState == QAudio::StoppedState) return 0; -#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) +#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) snd_pcm_status_t* status; snd_pcm_status_alloca(&status); diff --git a/src/openvg/qpixmapdata_vg.cpp b/src/openvg/qpixmapdata_vg.cpp index 3254aa3..19c90ed 100644 --- a/src/openvg/qpixmapdata_vg.cpp +++ b/src/openvg/qpixmapdata_vg.cpp @@ -92,7 +92,6 @@ QVGPixmapData::~QVGPixmapData() vgDestroyImage(vgImage); if (vgImageOpacity != VG_INVALID_HANDLE) vgDestroyImage(vgImageOpacity); - } else { #endif } #if !defined(QT_NO_EGL) @@ -202,6 +201,14 @@ QPaintEngine* QVGPixmapData::paintEngine() const return source.paintEngine(); } +// This function works around QImage::bits() making a deep copy if the +// QImage is not const. We force it to be const and then get the bits. +// XXX: Should add a QImage::constBits() in the future to replace this. +static inline const uchar *qt_vg_imageBits(const QImage& image) +{ + return image.bits(); +} + VGImage QVGPixmapData::toVGImage() { if (!isValid()) @@ -213,7 +220,7 @@ VGImage QVGPixmapData::toVGImage() context = qt_vg_create_context(0); #endif - if (recreate) { + if (recreate && prevSize != QSize(w, h)) { if (vgImage != VG_INVALID_HANDLE) { vgDestroyImage(vgImage); vgImage = VG_INVALID_HANDLE; @@ -222,6 +229,8 @@ VGImage QVGPixmapData::toVGImage() vgDestroyImage(vgImageOpacity); vgImageOpacity = VG_INVALID_HANDLE; } + } else if (recreate) { + cachedOpacity = -1.0f; // Force opacity image to be refreshed later. } if (vgImage == VG_INVALID_HANDLE) { @@ -232,11 +241,12 @@ VGImage QVGPixmapData::toVGImage() if (!source.isNull() && recreate) { vgImageSubData (vgImage, - source.bits(), source.bytesPerLine(), + qt_vg_imageBits(source), source.bytesPerLine(), VG_sARGB_8888_PRE, 0, 0, w, h); } recreate = false; + prevSize = QSize(w, h); return vgImage; } @@ -244,43 +254,14 @@ VGImage QVGPixmapData::toVGImage() VGImage QVGPixmapData::toVGImage(qreal opacity) { #if !defined(QT_SHIVAVG) - if (!isValid()) + // Force the primary VG image to be recreated if necessary. + if (toVGImage() == VG_INVALID_HANDLE) return VG_INVALID_HANDLE; -#if !defined(QT_NO_EGL) - // Increase the reference count on the shared context. - if (!context) - context = qt_vg_create_context(0); -#endif - - if (recreate) { - if (vgImage != VG_INVALID_HANDLE) { - vgDestroyImage(vgImage); - vgImage = VG_INVALID_HANDLE; - } - if (vgImageOpacity != VG_INVALID_HANDLE) { - vgDestroyImage(vgImageOpacity); - vgImageOpacity = VG_INVALID_HANDLE; - } - } - - if (vgImage == VG_INVALID_HANDLE) { - vgImage = vgCreateImage - (VG_sARGB_8888_PRE, w, h, VG_IMAGE_QUALITY_FASTER); - } - - if (!source.isNull() && recreate) { - vgImageSubData - (vgImage, - source.bits(), source.bytesPerLine(), - VG_sARGB_8888_PRE, 0, 0, w, h); - } - - recreate = false; - if (opacity == 1.0f) return vgImage; + // Create an alternative image for the selected opacity. if (vgImageOpacity == VG_INVALID_HANDLE || cachedOpacity != opacity) { if (vgImageOpacity == VG_INVALID_HANDLE) { vgImageOpacity = vgCreateImage @@ -405,6 +386,7 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type) vgDestroyImage(vgImageOpacity); vgImageOpacity = VG_INVALID_HANDLE; } + prevSize = QSize(); TInt err = 0; @@ -465,6 +447,7 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type) is_null = (w <= 0 || h <= 0); source = QImage(); recreate = false; + prevSize = QSize(w, h); setSerialNumber(++qt_vg_pixmap_serial); // release stuff eglDestroyImageKHR(context->display(), eglImage); diff --git a/src/openvg/qpixmapdata_vg_p.h b/src/openvg/qpixmapdata_vg_p.h index f6fac88..fe19f35 100644 --- a/src/openvg/qpixmapdata_vg_p.h +++ b/src/openvg/qpixmapdata_vg_p.h @@ -109,6 +109,7 @@ protected: #endif protected: + QSize prevSize; VGImage vgImage; VGImage vgImageOpacity; qreal cachedOpacity; diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp index c9a010f..021d52e 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp @@ -138,7 +138,7 @@ void QDirectFBWindowSurface::createWindow(const QRect &rect) DFBWindowDescription description; memset(&description, 0, sizeof(DFBWindowDescription)); - description.caps = DWCAPS_NODECORATION|DWCAPS_DOUBLEBUFFER; + description.caps = DWCAPS_NODECORATION; description.flags = DWDESC_CAPS|DWDESC_SURFACE_CAPS|DWDESC_PIXELFORMAT|DWDESC_HEIGHT|DWDESC_WIDTH|DWDESC_POSX|DWDESC_POSY; #if (Q_DIRECTFB_VERSION >= 0x010200) description.flags |= DWDESC_OPTIONS; diff --git a/src/tools/bootstrap/bootstrap.pri b/src/tools/bootstrap/bootstrap.pri index b4f9b2f..b3ee948 100644 --- a/src/tools/bootstrap/bootstrap.pri +++ b/src/tools/bootstrap/bootstrap.pri @@ -38,7 +38,7 @@ DEPENDPATH += $$INCLUDEPATH \ $$QT_SOURCE_TREE/src/xml hpux-acc*|hpuxi-acc* { - LIBS += ../bootstrap/libbootstrap.a + LIBS += $$QT_BUILD_TREE/src/tools/bootstrap/libbootstrap.a } else { contains(CONFIG, debug_and_release_target) { CONFIG(debug, debug|release) { diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index 1f81a6c..722981c 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -31,6 +31,7 @@ win32:DEFINES += QT_NODLL INCLUDEPATH += $$QT_BUILD_TREE/include \ $$QT_BUILD_TREE/include/QtCore \ $$QT_BUILD_TREE/include/QtXml \ + $$QT_BUILD_TREE/src/corelib/global # qlibraryinfo.cpp includes qconfig.cpp DEPENDPATH += $$INCLUDEPATH \ ../../corelib/global \ @@ -48,10 +49,12 @@ SOURCES += \ ../../corelib/codecs/qtsciicodec.cpp \ ../../corelib/codecs/qutfcodec.cpp \ ../../corelib/global/qglobal.cpp \ + ../../corelib/global/qlibraryinfo.cpp \ ../../corelib/global/qmalloc.cpp \ ../../corelib/global/qnumeric.cpp \ ../../corelib/io/qabstractfileengine.cpp \ ../../corelib/io/qbuffer.cpp \ + ../../corelib/io/qdatastream.cpp \ ../../corelib/io/qdir.cpp \ ../../corelib/io/qdiriterator.cpp \ ../../corelib/io/qfile.cpp \ @@ -62,6 +65,7 @@ SOURCES += \ ../../corelib/io/qtemporaryfile.cpp \ ../../corelib/io/qtextstream.cpp \ ../../corelib/io/qurl.cpp \ + ../../corelib/io/qsettings.cpp \ ../../corelib/kernel/qmetatype.cpp \ ../../corelib/kernel/qvariant.cpp \ ../../corelib/tools/qbitarray.cpp \ @@ -86,11 +90,12 @@ unix:SOURCES += ../../corelib/io/qfsfileengine_unix.cpp \ ../../corelib/io/qfsfileengine_iterator_unix.cpp win32:SOURCES += ../../corelib/io/qfsfileengine_win.cpp \ - ../../corelib/io/qfsfileengine_iterator_win.cpp + ../../corelib/io/qfsfileengine_iterator_win.cpp \ + ../../corelib/io/qsettings_win.cpp macx: { QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.4 #enables weak linking for 10.4 (exported) - SOURCES += ../../corelib/kernel/qcore_mac.cpp + SOURCES += ../../corelib/kernel/qcore_mac.cpp ../../corelib/io/qsettings_mac.cpp LIBS += -framework CoreServices } diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp index 83ea75f..88dfa98 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -670,10 +670,13 @@ void WriteInitialization::acceptWidget(DomWidget *node) m_layoutWidget = false; if (className == QLatin1String("QWidget") && !node->hasAttributeNative()) { - if (m_widgetChain.top() - && m_widgetChain.top()->attributeClass() != QLatin1String("QMainWindow") - && !m_uic->isContainer(m_widgetChain.top()->attributeClass())) + if (const DomWidget* parentWidget = m_widgetChain.top()) { + const QString parentClass = parentWidget->attributeClass(); + if (parentClass != QLatin1String("QMainWindow") + && !m_uic->isCustomWidgetContainer(parentClass) + && !m_uic->isContainer(parentClass)) m_layoutWidget = true; + } } m_widgetChain.push(node); m_layoutChain.push(0); @@ -718,7 +721,7 @@ void WriteInitialization::acceptWidget(DomWidget *node) m_output << m_indent << parentWidget << "->addDockWidget(" << area << varName << ");\n"; } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QStatusBar"))) { m_output << m_indent << parentWidget << "->setStatusBar(" << varName << ");\n"; - } else if (className == QLatin1String("QWidget")) { + } else { m_output << m_indent << parentWidget << "->setCentralWidget(" << varName << ");\n"; } } diff --git a/src/tools/uic/customwidgetsinfo.cpp b/src/tools/uic/customwidgetsinfo.cpp index 70adba2..ca3fd19 100644 --- a/src/tools/uic/customwidgetsinfo.cpp +++ b/src/tools/uic/customwidgetsinfo.cpp @@ -88,6 +88,14 @@ bool CustomWidgetsInfo::extends(const QString &classNameIn, const QLatin1String return false; } +bool CustomWidgetsInfo::isCustomWidgetContainer(const QString &className) const +{ + if (const DomCustomWidget *dcw = m_customWidgets.value(className, 0)) + if (dcw->hasElementContainer()) + return dcw->elementContainer() != 0; + return false; +} + QString CustomWidgetsInfo::realClassName(const QString &className) const { if (className == QLatin1String("Line")) diff --git a/src/tools/uic/customwidgetsinfo.h b/src/tools/uic/customwidgetsinfo.h index 1471118..d5be5a2 100644 --- a/src/tools/uic/customwidgetsinfo.h +++ b/src/tools/uic/customwidgetsinfo.h @@ -78,6 +78,8 @@ public: bool extends(const QString &className, const QLatin1String &baseClassName) const; + bool isCustomWidgetContainer(const QString &className) const; + private: typedef QMap<QString, DomCustomWidget*> NameCustomWidgetMap; NameCustomWidgetMap m_customWidgets; diff --git a/src/tools/uic/uic.cpp b/src/tools/uic/uic.cpp index 32e5e3d..71b6ac1 100644 --- a/src/tools/uic/uic.cpp +++ b/src/tools/uic/uic.cpp @@ -363,6 +363,11 @@ bool Uic::isContainer(const QString &className) const || customWidgetsInfo()->extends(className, QLatin1String("QDockWidget")); } +bool Uic::isCustomWidgetContainer(const QString &className) const +{ + return customWidgetsInfo()->isCustomWidgetContainer(className); +} + bool Uic::isStatusBar(const QString &className) const { return customWidgetsInfo()->extends(className, QLatin1String("QStatusBar")); diff --git a/src/tools/uic/uic.h b/src/tools/uic/uic.h index 3e072a4..5175ea9 100644 --- a/src/tools/uic/uic.h +++ b/src/tools/uic/uic.h @@ -115,6 +115,7 @@ public: bool isStatusBar(const QString &className) const; bool isButton(const QString &className) const; bool isContainer(const QString &className) const; + bool isCustomWidgetContainer(const QString &className) const; bool isMenuBar(const QString &className) const; bool isMenu(const QString &className) const; diff --git a/src/tools/uic3/uic.cpp b/src/tools/uic3/uic.cpp index 7872866..6761eaf 100644 --- a/src/tools/uic3/uic.cpp +++ b/src/tools/uic3/uic.cpp @@ -322,6 +322,11 @@ bool Uic::isContainer(const QString &className) const || customWidgetsInfo()->extends(className, QLatin1String("QDockWidget")); } +bool Uic::isCustomWidgetContainer(const QString &className) const +{ + return customWidgetsInfo()->isCustomWidgetContainer(className); +} + bool Uic::isStatusBar(const QString &className) const { return customWidgetsInfo()->extends(className, QLatin1String("QStatusBar")); diff --git a/src/tools/uic3/uic.h b/src/tools/uic3/uic.h index 50aa71c..63a1f8d 100644 --- a/src/tools/uic3/uic.h +++ b/src/tools/uic3/uic.h @@ -114,6 +114,7 @@ public: bool isStatusBar(const QString &className) const; bool isButton(const QString &className) const; bool isContainer(const QString &className) const; + bool isCustomWidgetContainer(const QString &className) const; bool isMenuBar(const QString &className) const; bool isMenu(const QString &className) const; diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 46f26f8..da1f7ca 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -10,7 +10,8 @@ TEMPLATE = subdirs linguist \ moc \ uic \ - uic3 + uic3 \ + guiapplauncher Q3SUBDIRS += \ q3accel \ q3action \ diff --git a/tests/auto/guiapplauncher/README.txt b/tests/auto/guiapplauncher/README.txt new file mode 100644 index 0000000..317f9d0 --- /dev/null +++ b/tests/auto/guiapplauncher/README.txt @@ -0,0 +1,14 @@ +This test launches gui applications (tools, demos and prominent examples), +keeps them running a while (grabbing their top level from the window manager) +and sends them a Close event via window manager. + +It checks that they do not crash nor produce unexpected error output. + +Note: Do not play with the machine while it is running as otherwise +the top-level find algorithm might get confused (especially on Windows). + +Environment variables are checked to turned off some tests (see code). + +It is currently implemented for X11 (Skips unless DISPLAY is set) and +Windows, pending an implementation of the WindowManager class and deployment +on the other platforms. diff --git a/tests/auto/guiapplauncher/guiapplauncher.pro b/tests/auto/guiapplauncher/guiapplauncher.pro new file mode 100644 index 0000000..27c3553 --- /dev/null +++ b/tests/auto/guiapplauncher/guiapplauncher.pro @@ -0,0 +1,20 @@ +# ------------------------------------------------- +# Project created by QtCreator 2009-11-10T14:39:06 +# ------------------------------------------------- + +# Link against gui for X11,etc. + +DEFINES += SRCDIR=\\\"$$PWD/\\\" +TARGET = tst_guiapplauncher +CONFIG += console +CONFIG -= app_bundle +CONFIG += qtestlib +TEMPLATE = app +SOURCES += tst_guiapplauncher.cpp \ + windowmanager.cpp +HEADERS += windowmanager.h + +win32 { + # process enumeration,etc. + LIBS+=user32.lib +} diff --git a/tests/auto/guiapplauncher/test.ts b/tests/auto/guiapplauncher/test.ts new file mode 100644 index 0000000..79c9c76 --- /dev/null +++ b/tests/auto/guiapplauncher/test.ts @@ -0,0 +1,973 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="de"> +<context> + <name>AssistantServer</name> + <message> + <location filename="../tools/assistant/compat/main.cpp" line="+225"/> + <source>Qt Assistant</source> + <translation>Qt Assistant</translation> + </message> + <message> + <location line="+1"/> + <source>Failed to bind to port %1</source> + <translation>Kann Port %1 nicht binden</translation> + </message> +</context> +<context> + <name>FontPanel</name> + <message> + <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/> + <source>Font</source> + <translation>Schrift</translation> + </message> + <message> + <location line="+11"/> + <source>&Writing system</source> + <translation>S&kript</translation> + </message> + <message> + <location line="+3"/> + <source>&Family</source> + <translation>&Schriftart</translation> + </message> + <message> + <location line="+4"/> + <source>&Style</source> + <translation>S&chriftschnitt</translation> + </message> + <message> + <location line="+4"/> + <source>&Point size</source> + <translation>Schriftg&rad</translation> + </message> +</context> +<context> + <name>FontSettingsDialog</name> + <message> + <location filename="../tools/assistant/compat/fontsettingsdialog.cpp" line="+63"/> + <source>Font Settings</source> + <translation>Schriftart</translation> + </message> + <message> + <location line="+7"/> + <source>Font settings for:</source> + <translation>Schriftart für:</translation> + </message> + <message> + <location line="+4"/> + <source>Browser</source> + <translation>Hilfeseiten</translation> + </message> + <message> + <location line="+1"/> + <source>Application</source> + <translation>Anwendung</translation> + </message> + <message> + <location line="+6"/> + <source>Use custom settings</source> + <translation>Erweitere Einstellungen nutzen</translation> + </message> +</context> +<context> + <name>HelpDialog</name> + <message> + <location filename="../tools/assistant/compat/helpdialog.ui"/> + <source>Con&tents</source> + <translation>Inhal&t</translation> + </message> + <message> + <location filename="../tools/assistant/compat/helpdialog.cpp" line="+376"/> + <location line="+16"/> + <location line="+661"/> + <source>Qt Assistant</source> + <translation>Qt Assistant</translation> + </message> + <message> + <location line="-771"/> + <source>Open Link in New Window</source> + <translation>Öffne Link in neuem Fenster</translation> + </message> + <message> + <location line="+76"/> + <location line="+82"/> + <source>Prepare...</source> + <translation>Initialisiere...</translation> + </message> + <message> + <location line="-47"/> + <source>Cannot open the index file %1</source> + <translation>Kann Indexdatei %1 nicht öffnen</translation> + </message> + <message> + <location line="+58"/> + <location line="+124"/> + <location line="+8"/> + <source>Warning</source> + <translation>Warnung</translation> + </message> + <message> + <location line="-131"/> + <location line="+124"/> + <source>Documentation file %1 does not exist! +Skipping file.</source> + <translation>Dokumentation %1 existiert nicht! +Überspringe Datei.</translation> + </message> + <message> + <location line="-112"/> + <location line="+133"/> + <source>Parse Error</source> + <translation>Syntaxfehler</translation> + </message> + <message> + <location line="+35"/> + <location line="+469"/> + <source>Done</source> + <translation>Fertig</translation> + </message> + <message> + <location line="-18"/> + <source>Indexing files...</source> + <translation>Indiziere Dokumentation...</translation> + </message> + <message> + <location line="+15"/> + <source>Reading dictionary...</source> + <translation>Lese Suchindex...</translation> + </message> + <message> + <location line="+46"/> + <location line="+9"/> + <source>Full Text Search</source> + <translation>Volltextsuche</translation> + </message> + <message> + <location line="-8"/> + <source>Using a wildcard within phrases is not allowed.</source> + <translation>Wildcards innerhalb von Phrasen sind nicht zugelassen.</translation> + </message> + <message> + <location line="+9"/> + <source>The closing quotation mark is missing.</source> + <translation>Das schließende Anführungszeichen fehlt.</translation> + </message> + <message numerus="yes"> + <location line="+7"/> + <source>%n document(s) found.</source> + <translation> + <numerusform>%n Dokumente gefunden.</numerusform> + <numerusform></numerusform> + </translation> + </message> + <message> + <location line="-882"/> + <source>Open Link in Current Tab</source> + <translation>Link im Aktuellen Tab öffnen</translation> + </message> + <message> + <location line="+6"/> + <source>Open Link in New Tab</source> + <translation>Link in einem neuen Tab öffnen</translation> + </message> + <message> + <location line="+91"/> + <source>Failed to load keyword index file +Assistant will not work!</source> + <translation>Die Indexdatei konnte nicht geladen werden. +Der Assistent ist nicht einsatzbereit!</translation> + </message> + <message> + <location line="+208"/> + <source>Documentation file %1 is not compatible! +Skipping file.</source> + <translation>Dokumentation %1 ist nicht kompatibel! Datei wird übersprungen.</translation> + </message> + <message> + <location line="+470"/> + <source>Failed to save fulltext search index +Assistant will not work!</source> + <translation>Der Index für die Volltextsuche konnte nicht gespeichert werden. +Assistent ist nicht einsatzbereit!</translation> + </message> + <message> + <location filename="../tools/assistant/compat/helpdialog.ui"/> + <source>Help</source> + <translation>Hilfe</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><b>Hilfe</b><p>Wählen Sie ein Hilfethema aus dem Inhalt oder suchen Sie im Index nach Schlüsselwörtern.</p></translation> + </message> + <message> + <location/> + <source>Displays help topics organized by category, index or bookmarks. Another tab inherits the full text search.</source> + <translation>Zeigt Hilfethemen geordnet nach Kategorie, Index oder Lesezeichen an. Ein weiterer Abschnitt enthält die Volltextsuche.</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><b>Hilfethemen geordnet nach Kategorie.</b><p>Doppelklicken Sie einen Eintrag, um die Themen dieser Kategorie zu sehen. Doppelklicken Sie ein Thema, um es angezeigt zu bekommen.</p></translation> + </message> + <message> + <location/> + <source>column 1</source> + <translation>Spalte 1</translation> + </message> + <message> + <location/> + <source>&Index</source> + <translation>&Index</translation> + </message> + <message> + <location/> + <source>&Look For:</source> + <translation>Suchen &nach:</translation> + </message> + <message> + <location/> + <source>Enter keyword</source> + <translation>Geben Sie ein Schlüsselwort ein</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><b>Geben Sie ein Schlüsselwort ein.</b><p>Es wird dann der Eintrag aus der Liste ausgewählt, der am besten mit dem eingegebenen Begriff übereinstimmt.</p></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><b>Liste aller verfügbaren Hilfethemen.</b><p>Doppelklicken Sie auf einen Eintrag, um die Hilfe zu öffnen. Wenn mehr als eine Seite gefunden wurde, wählen Sie die gewünschte Seite aus.</p></translation> + </message> + <message> + <location/> + <source>&Bookmarks</source> + <translation>L&esezeichen</translation> + </message> + <message> + <location/> + <source>Displays the list of bookmarks.</source> + <translation>Zeigt alle Lesezeichen an.</translation> + </message> + <message> + <location/> + <source>Add new bookmark</source> + <translation>Füge neues Lesezeichen hinzu</translation> + </message> + <message> + <location/> + <source>Add the currently displayed page as a new bookmark.</source> + <translation>Füge aktuelle Seite zu den Lesezeichen hinzu.</translation> + </message> + <message> + <location/> + <source>&New</source> + <translation>&Neu</translation> + </message> + <message> + <location/> + <source>Delete bookmark</source> + <translation>Lösche Lesezeichen</translation> + </message> + <message> + <location/> + <source>Delete the selected bookmark.</source> + <translation>Lösche markiertes Lesezeichen.</translation> + </message> + <message> + <location/> + <source>&Delete</source> + <translation>&Löschen</translation> + </message> + <message> + <location/> + <source>&Search</source> + <translation>&Suche</translation> + </message> + <message> + <location/> + <source>Searching f&or:</source> + <translation>Suche &nach:</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><b>Geben Sie Suchbegriffe ein.</b><p>Geben Sie hier die gesuchten Begriffe ein. Die Begriffe können Wildcards (*) enthalten. Eine Phrase muß in Anführungszeichen stehen.</p></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><b>Gefundene Dokumente</b><p>Diese Liste beinhaltet alle gefundenen Dokumente der letzten Suche. Die Dokumente sind nach der Häufigkeit der Treffer geordnet.</p></translation> + </message> + <message> + <location/> + <source>Found &Documents:</source> + <translation>Gefundene &Dokumente:</translation> + </message> + <message> + <location/> + <source>Display the help page for the full text search.</source> + <translation>Zeigt die Hilfeseite für die Volltextsuche an.</translation> + </message> + <message> + <location/> + <source>He&lp</source> + <translation>Hi&lfe</translation> + </message> + <message> + <location/> + <source>Pressing this button starts the search.</source> + <translation>Startet die Suche.</translation> + </message> + <message> + <location/> + <source>Preparing...</source> + <translation>Initialisiere...</translation> + </message> + <message> + <location/> + <source>Enter searchword(s)</source> + <translation>Geben Sie Suchbegriffe ein</translation> + </message> + <message> + <location/> + <source>Display the help page</source> + <translation>Hilfeseite anzeigen</translation> + </message> + <message> + <location/> + <source>Start searching</source> + <translation>Suche beginnen</translation> + </message> +</context> +<context> + <name>HelpWindow</name> + <message> + <location filename="../tools/assistant/compat/helpwindow.cpp" line="+97"/> + <source>Help</source> + <translation>Hilfe</translation> + </message> + <message> + <location line="+93"/> + <source>Open Link in New Window Shift+LMB</source> + <translation>Öffne Link in neuem Fenster</translation> + </message> + <message> + <location line="-2"/> + <source>Open Link in New Tab</source> + <translation>Link in einem neuen Tab öffnen</translation> + </message> + <message> + <location line="-90"/> + <source>Unable to launch web browser. +</source> + <translation>Der Webbrowser konnte nicht gestartet werden. +</translation> + </message> + <message> + <location line="+1"/> + <source>OK</source> + <translation>OK</translation> + </message> + <message> + <location line="+27"/> + <source>Failed to open link: '%1'</source> + <translation>Der Link '%1' konnte nicht geöffnet werden</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><div align="center"><h1>Die Seite wurde nicht gefunden</h1><br><h3>'%1'</h3></div></translation> + </message> + <message> + <location line="+2"/> + <source>Error...</source> + <translation>Fehler ...</translation> + </message> + <message> + <location line="+56"/> + <source>Copy &Link Location</source> + <translation>Link-Adresse kopieren</translation> + </message> +</context> +<context> + <name>Index</name> + <message> + <location filename="../tools/assistant/compat/index.cpp" line="+385"/> + <source>Untitled</source> + <translation>Unbenannt</translation> + </message> +</context> +<context> + <name>MainWindow</name> + <message> + <location filename="../tools/assistant/compat/mainwindow.ui"/> + <source>Toolbar</source> + <translation>Werkzeugleiste</translation> + </message> + <message> + <location/> + <source>&Print...</source> + <translation>&Drucken...</translation> + </message> + <message> + <location/> + <source>E&xit</source> + <translation>&Beenden</translation> + </message> + <message> + <location/> + <source>&Copy</source> + <translation>&Kopieren</translation> + </message> + <message> + <location/> + <source>&Find in Text...</source> + <translation>Text&suche...</translation> + </message> + <message> + <location/> + <source>&Home</source> + <translation>St&artseite</translation> + </message> + <message> + <location/> + <source>&Previous</source> + <translation>&Vorherige</translation> + </message> + <message> + <location/> + <source>&Next</source> + <translation>&Nächste</translation> + </message> + <message> + <location/> + <source>About Qt</source> + <translation>Über Qt</translation> + </message> + <message> + <location/> + <source>Zoom &in</source> + <translation>Vergrößern</translation> + </message> + <message> + <location/> + <source>Zoom &out</source> + <translation>Ver&kleinern</translation> + </message> + <message> + <location/> + <source>New Window</source> + <translation>Neues Fenster...</translation> + </message> + <message> + <location filename="../tools/assistant/compat/mainwindow.cpp" line="+198"/> + <source>Ctrl+T</source> + <translation>Strg+T +</translation> + </message> + <message> + <location line="+1"/> + <source>Ctrl+I</source> + <translation>Strg+I</translation> + </message> + <message> + <location line="+1"/> + <source>Ctrl+B</source> + <translation>Strg+E</translation> + </message> + <message> + <location line="+129"/> + <location line="+1"/> + <source>Qt Assistant</source> + <translation>Qt Assistant</translation> + </message> + <message> + <location filename="../tools/assistant/compat/mainwindow.ui"/> + <source>&Add Bookmark</source> + <translation>&Füge Lesezeichen hinzu</translation> + </message> + <message> + <location/> + <source>&File</source> + <translation>&Datei</translation> + </message> + <message> + <location/> + <source>&Edit</source> + <translation>&Bearbeiten</translation> + </message> + <message> + <location/> + <source>&View</source> + <translation>&Ansicht</translation> + </message> + <message> + <location/> + <source>&Go</source> + <translation>&Gehe zu</translation> + </message> + <message> + <location/> + <source>Boo&kmarks</source> + <translation>&Lesezeichen</translation> + </message> + <message> + <location/> + <source>Qt Assistant by Nokia</source> + <translation>Qt Assistant von Nokia</translation> + </message> + <message> + <location/> + <source>&Help</source> + <translation>&Hilfe</translation> + </message> + <message> + <location/> + <source>Print the currently displayed page.</source> + <translation>Drucke aktuelle Seite.</translation> + </message> + <message> + <location/> + <source>Ctrl+P</source> + <translation>Strg+P</translation> + </message> + <message> + <location/> + <source>Quit Qt Assistant.</source> + <translation>Qt Assistant beenden.</translation> + </message> + <message> + <location/> + <source>Ctrl+Q</source> + <translation>Strg+Q</translation> + </message> + <message> + <location/> + <source>Copy the selected text to the clipboard.</source> + <translation>Den markierten Text in die Zwischenablage kopieren.</translation> + </message> + <message> + <location/> + <source>Ctrl+C</source> + <translation>Strg+C</translation> + </message> + <message> + <location/> + <source>Open the Find dialog. Qt Assistant will search the currently displayed page for the text you enter.</source> + <translation>Den Suchdialog öffnen. Qt Assistant sucht in der aktuellen Seite nach dem eingegebenen Text.</translation> + </message> + <message> + <location/> + <source>Ctrl+F</source> + <translation>Strg+F</translation> + </message> + <message> + <location/> + <source>Go to the home page. Qt Assistant's home page is the Qt Reference Documentation.</source> + <translation>Zur Startseite gehen. Startseite im Qt Assistant ist die Qt-Referenzdokumentation.</translation> + </message> + <message> + <location/> + <source>Ctrl+Home</source> + <translation>Strg+Pos1</translation> + </message> + <message> + <location/> + <source>Go to the previous page.</source> + <translation>Gehe zur vorherigen Seite.</translation> + </message> + <message> + <location/> + <source>Alt+Left</source> + <translation>Alt+Links</translation> + </message> + <message> + <location/> + <source>Go to the next page.</source> + <translation>Gehe zur nächsten Seite.</translation> + </message> + <message> + <location/> + <source>Alt+Right</source> + <translation>Alt+Rechts</translation> + </message> + <message> + <location/> + <source>Display further information about Qt Assistant.</source> + <translation>Zeigt das Handbuch zum Qt Designer an.</translation> + </message> + <message> + <location/> + <source>Zoom in on the document, i.e. increase the font size.</source> + <translation>Vergrößert die Schrift.</translation> + </message> + <message> + <location/> + <source>Ctrl++</source> + <translation>Strg++</translation> + </message> + <message> + <location/> + <source>Zoom out on the document, i.e. decrease the font size.</source> + <translation>Verkleinert die Schrift.</translation> + </message> + <message> + <location/> + <source>Ctrl+-</source> + <translation>Strg+-</translation> + </message> + <message> + <location/> + <source>Open a new window.</source> + <translation>Öffnet ein neues Fenster.</translation> + </message> + <message> + <location/> + <source>Ctrl+N</source> + <translation>Strg+N</translation> + </message> + <message> + <location/> + <source>&Close</source> + <translation>&Schließen</translation> + </message> + <message> + <location/> + <source>Close the current window.</source> + <translation>Schließt das aktuelle Fenster.</translation> + </message> + <message> + <location/> + <source>Qt Assistant Manual</source> + <translation>Handbuch zu Qt Assistant</translation> + </message> + <message> + <location/> + <source>F1</source> + <translation>F1</translation> + </message> + <message> + <location/> + <source>Add the currently displayed page as a new bookmark.</source> + <translation>Aktuelle Seite zu den Lesezeichen hinzufügen.</translation> + </message> + <message> + <location/> + <source>What's This?</source> + <translation>Direkthilfe</translation> + </message> + <message> + <location/> + <source>"What's This?" context sensitive help.</source> + <translation>Kontextbezogene Direkthilfe.</translation> + </message> + <message> + <location/> + <source>Shift+F1</source> + <translation>Umschalt+F1</translation> + </message> + <message> + <location filename="../tools/assistant/compat/mainwindow.cpp" line="-129"/> + <source>Ctrl+S</source> + <translation>Strg+S</translation> + </message> + <message> + <location line="-33"/> + <source>Initializing Qt Assistant...</source> + <translation>Qt Assistant wird initialisiert...</translation> + </message> + <message> + <location filename="../tools/assistant/compat/mainwindow.ui"/> + <source>Go</source> + <translation>Gehe zu</translation> + </message> + <message> + <location/> + <source>Find &Next</source> + <translation>Weitersuchen</translation> + </message> + <message> + <location/> + <source>F3</source> + <translation>F3</translation> + </message> + <message> + <location/> + <source>Find &Previous</source> + <translation>Vorheriges suchen</translation> + </message> + <message> + <location/> + <source>Shift+F3</source> + <translation>Umschalt+F3</translation> + </message> + <message> + <location/> + <source>About Qt Assistant</source> + <translation>Über Qt Assistent</translation> + </message> + <message> + <location/> + <source>Add Tab</source> + <translation>Tab einfügen</translation> + </message> + <message> + <location/> + <source>Ctrl+Alt+N</source> + <translation></translation> + </message> + <message> + <location/> + <source>Next Tab</source> + <translation>Nächster Tab</translation> + </message> + <message> + <location/> + <source>Ctrl+Alt+Right</source> + <translation></translation> + </message> + <message> + <location/> + <source>Previous Tab</source> + <translation>Voriger Tab</translation> + </message> + <message> + <location/> + <source>Ctrl+Alt+Left</source> + <translation></translation> + </message> + <message> + <location/> + <source>Close Tab</source> + <translation>Tab schließen</translation> + </message> + <message> + <location/> + <source>Ctrl+Alt+Q</source> + <translation></translation> + </message> + <message> + <location filename="../tools/assistant/compat/mainwindow.cpp" line="+181"/> + <source>Failed to open about application contents in file: '%1'</source> + <translation>Fehler beim Öffnen des Inhalts in Datei: '%1'</translation> + </message> + <message> + <location line="-246"/> + <source>Sidebar</source> + <translation>Sidebar</translation> + </message> + <message> + <location line="+18"/> + <source>&Window</source> + <translation>&Fenster</translation> + </message> + <message> + <location line="+2"/> + <source>Minimize</source> + <translation>Minimieren</translation> + </message> + <message> + <location line="+1"/> + <source>Ctrl+M</source> + <translation>Strg+M</translation> + </message> + <message> + <location line="+70"/> + <source>SHIFT+CTRL+=</source> + <translation>Umschalt+Strg+=</translation> + </message> + <message> + <location filename="../tools/assistant/compat/mainwindow.ui"/> + <source>Ctrl+W</source> + <translation>Strg+W</translation> + </message> + <message> + <location filename="../tools/assistant/compat/mainwindow.cpp" line="+8"/> + <source>Ctrl+]</source> + <translation>Strg+AltGr+]</translation> + </message> + <message> + <location line="+1"/> + <source>Ctrl+[</source> + <translation>Strg+AltGr+[</translation> + </message> + <message> + <location line="+7"/> + <source>Views</source> + <translation>Menüleisten/Sidebar</translation> + </message> + <message> + <location line="+80"/> + <source>Displays the main page of a specific documentation set.</source> + <translation>Zeigt die Hauptseite eines Dokumentensets an.</translation> + </message> + <message> + <location line="+262"/> + <source>...</source> + <translation>...</translation> + </message> + <message> + <location line="+238"/> + <location line="+6"/> + <source>Save Page</source> + <translation>Seite speichern</translation> + </message> + <message> + <location line="+0"/> + <source>Cannot open file for writing!</source> + <translation>Die Datei konnte nicht zum Schreiben geöffnet werden.</translation> + </message> + <message> + <location filename="../tools/assistant/compat/mainwindow.ui"/> + <source>Save Page As...</source> + <translation>Seite speichern als...</translation> + </message> + <message> + <location/> + <source>Ctrl+Alt+S</source> + <translation>Strg+Alt+S</translation> + </message> + <message> + <location/> + <source>Sync with Table of Contents</source> + <translation>Seite mit Inhalt-Tab syncronisieren</translation> + </message> + <message> + <location/> + <source>Select the page in contents tab.</source> + <translation>Wählt die Seite im Inhalt-Tab aus.</translation> + </message> + <message> + <location/> + <source>Font Settings...</source> + <translation>Schriftart...</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <location filename="../tools/assistant/compat/config.cpp" line="+350"/> + <source>Qt Assistant by Nokia</source> + <translation>Qt Assistant von Nokia</translation> + </message> +</context> +<context> + <name>TabbedBrowser</name> + <message> + <location filename="../tools/assistant/compat/tabbedbrowser.ui"/> + <source>TabbedBrowser</source> + <translation></translation> + </message> + <message> + <location/> + <source>Untitled</source> + <translation>Unbenannt</translation> + </message> + <message> + <location filename="../tools/assistant/compat/tabbedbrowser.cpp" line="+235"/> + <source>Add page</source> + <translation>Seite einfügen</translation> + </message> + <message> + <location line="+9"/> + <source>Close page</source> + <translation>Seite schließen</translation> + </message> + <message> + <location line="-95"/> + <source>...</source> + <translation>...</translation> + </message> + <message> + <location line="+338"/> + <source>New Tab</source> + <translation>Neuer Tab</translation> + </message> + <message> + <location line="+1"/> + <source>Close Tab</source> + <translation>Tab schließen</translation> + </message> + <message> + <location line="+1"/> + <source>Close Other Tabs</source> + <translation>Andere Tabs schließen</translation> + </message> + <message> + <location filename="../tools/assistant/compat/tabbedbrowser.ui"/> + <source>Previous</source> + <translation>Vorheriger</translation> + </message> + <message> + <location/> + <source>Next</source> + <translation>Nächster</translation> + </message> + <message> + <location/> + <source>Case Sensitive</source> + <translation>Groß-/Kleinschreibung beachten</translation> + </message> + <message> + <location/> + <source>Whole words</source> + <translation>Ganze Wörter</translation> + </message> + <message> + <location/> + <source><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped</source> + <translation><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Seitenende</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>Wählen Sie ein Thema für <b>%1</b></translation> + </message> + <message> + <location filename="../tools/assistant/compat/topicchooser.ui"/> + <source>Choose Topic</source> + <translation>Thema wählen</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>Wählen Sie ein Thema aus der Liste aus und klicken Sie <b>Anzeigen</b> um die Hilfe zu öffnen.</translation> + </message> + <message> + <location/> + <source>&Topics</source> + <translation>&Themen</translation> + </message> + <message> + <location/> + <source>Displays a list of available help topics for the keyword.</source> + <translation>Zeigt eine Liste der verfügbaren Hilfethemen für diesen Begriff an.</translation> + </message> + <message> + <location/> + <source>&Display</source> + <translation>&Anzeigen</translation> + </message> + <message> + <location/> + <source>Open the topic selected in the list.</source> + <translation>Öffne das gewählte Thema aus der Liste.</translation> + </message> + <message> + <location/> + <source>&Close</source> + <translation>&Schließen</translation> + </message> + <message> + <location/> + <source>Close the Dialog.</source> + <translation>Schließt den Dialog.</translation> + </message> +</context> +</TS> diff --git a/tests/auto/guiapplauncher/test.ui b/tests/auto/guiapplauncher/test.ui new file mode 100644 index 0000000..02efcd4 --- /dev/null +++ b/tests/auto/guiapplauncher/test.ui @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>600</height> + </rect> + </property> + <property name="windowTitle"> + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralwidget"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QPlainTextEdit" name="plainTextEdit"/> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>23</height> + </rect> + </property> + <widget class="QMenu" name="menuFile"> + <property name="title"> + <string>File</string> + </property> + <addaction name="actionExit"/> + </widget> + <addaction name="menuFile"/> + </widget> + <widget class="QStatusBar" name="statusbar"/> + <action name="actionExit"> + <property name="text"> + <string>Exit</string> + </property> + </action> + </widget> + <resources/> + <connections> + <connection> + <sender>actionExit</sender> + <signal>triggered()</signal> + <receiver>MainWindow</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel"> + <x>-1</x> + <y>-1</y> + </hint> + <hint type="destinationlabel"> + <x>399</x> + <y>299</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/guiapplauncher/tst_guiapplauncher.cpp b/tests/auto/guiapplauncher/tst_guiapplauncher.cpp new file mode 100644 index 0000000..a61bd5e --- /dev/null +++ b/tests/auto/guiapplauncher/tst_guiapplauncher.cpp @@ -0,0 +1,526 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (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 Technology Preview License Agreement accompanying +** this package. +** +** 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.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "windowmanager.h" + +#include <QtCore/QDir> +#include <QtCore/QString> +#include <QtTest/QtTest> +#include <QtCore/QProcess> +#include <QtCore/QByteArray> +#include <QtCore/QLibraryInfo> +#include <QtCore/QVariant> +#include <QtCore/QDateTime> +#include <QtCore/QMap> + +// AppLaunch: Launch gui applications, keep them running a while +// (grabbing their top level from the window manager) and send +// them a Close event via window manager. Verify that they do not +// not crash nor produces unexpected error output. +// Note: Do not play with the machine while it is running as otherwise +// the top-level find algorithm might get confused (especially on Windows). +// Environment variables are checked to turned off some tests +// It is currently implemented for X11 and Windows, pending an +// implementation of the WindowManager class and deployment on +// the other platforms. + +enum { defaultUpTimeMS = 3000, defaultTopLevelWindowTimeoutMS = 30000, + defaultTerminationTimeoutMS = 35000 }; + +// List the examples to test (Gui examples only). +struct Example { + const char *name; + const char *directory; + const char *binary; + unsigned priority; // 0-highest + int upTimeMS; +}; + +const struct Example examples[] = { + {"animation/animatedtiles Example", "animation/animatedtiles", "animatedtiles", 0, -1}, + {"animation/appchooser Example", "animation/appchooser", "appchooser", 10, -1}, + {"animation/easing Example", "animation/easing", "easing", 10, -1}, + {"animation/moveblocks Example", "animation/moveblocks", "moveblocks", 10, -1}, + {"animation/states Example", "animation/states", "states", 10, -1}, + {"animation/stickman Example", "animation/stickman", "stickman", 10, -1}, + {"designer/calculatorbuilder Example", "designer/calculatorbuilder", "calculatorbuilder", 10, -1}, + {"dialogs/standarddialogs Example", "dialogs/standarddialogs", "standarddialogs", 10, -1}, + {"draganddrop/dropsite Example", "draganddrop/dropsite", "dropsite", 10, -1}, + {"draganddrop/fridgemagnets Example", "draganddrop/fridgemagnets", "fridgemagnets", 10, -1}, + {"draganddrop/puzzle Example", "draganddrop/puzzle", "puzzle", 10, -1}, + {"effects/blurpicker Example", "effects/blurpicker", "blurpicker", 10, -1}, + {"effects/customshader Example", "effects/customshader", "customshader", 10, -1}, + {"effects/fademessage Example", "effects/fademessage", "fademessage", 10, -1}, + {"effects/lighting Example", "effects/lighting", "lighting", 10, -1}, + {"graphicsview/anchorlayout Example", "graphicsview/anchorlayout", "anchorlayout", 10, -1}, + {"graphicsview/basicgraphicslayouts Example", "graphicsview/basicgraphicslayouts", "basicgraphicslayouts", 0, -1}, + {"graphicsview/collidingmice Example", "graphicsview/collidingmice", "collidingmice", 10, -1}, + {"graphicsview/diagramscene Example", "graphicsview/diagramscene", "diagramscene", 10, -1}, + {"graphicsview/dragdroprobot Example", "graphicsview/dragdroprobot", "dragdroprobot", 10, -1}, + {"graphicsview/elasticnodes Example", "graphicsview/elasticnodes", "elasticnodes", 10, -1}, + {"graphicsview/flowlayout Example", "graphicsview/flowlayout", "flowlayout", 10, -1}, + {"graphicsview/padnavigator Example", "graphicsview/padnavigator", "padnavigator", 0, -1}, + {"graphicsview/portedasteroids Example", "graphicsview/portedasteroids", "portedasteroids", 10, -1}, + {"graphicsview/portedcanvas Example", "graphicsview/portedcanvas", "portedcanvas", 10, -1}, + {"graphicsview/weatheranchorlayout Example", "graphicsview/weatheranchorlayout", "weatheranchorlayout", 10, -1}, + {"itemviews/addressbook Example", "itemviews/addressbook", "addressbook", 0, -1}, + {"itemviews/basicsortfiltermodel Example", "itemviews/basicsortfiltermodel", "basicsortfiltermodel", 10, -1}, + {"itemviews/chart Example", "itemviews/chart", "chart", 0, -1}, + {"itemviews/coloreditorfactory Example", "itemviews/coloreditorfactory", "coloreditorfactory", 10, -1}, + {"itemviews/combowidgetmapper Example", "itemviews/combowidgetmapper", "combowidgetmapper", 6, -1}, + {"itemviews/customsortfiltermodel Example", "itemviews/customsortfiltermodel", "customsortfiltermodel", 6, -1}, + {"itemviews/dirview Example", "itemviews/dirview", "dirview", 0, -1}, + {"itemviews/editabletreemodel Example", "itemviews/editabletreemodel", "editabletreemodel", 0, -1}, + {"itemviews/fetchmore Example", "itemviews/fetchmore", "fetchmore", 10, -1}, + {"itemviews/frozencolumn Example", "itemviews/frozencolumn", "frozencolumn", 10, -1}, + {"itemviews/pixelator Example", "itemviews/pixelator", "pixelator", 10, -1}, + {"itemviews/puzzle Example", "itemviews/puzzle", "puzzle", 10, -1}, + {"itemviews/simpledommodel Example", "itemviews/simpledommodel", "simpledommodel", 10, -1}, + {"itemviews/simpletreemodel Example", "itemviews/simpletreemodel", "simpletreemodel", 10, -1}, + {"itemviews/simplewidgetmapper Example", "itemviews/simplewidgetmapper", "simplewidgetmapper", 10, -1}, + {"itemviews/spinboxdelegate Example", "itemviews/spinboxdelegate", "spinboxdelegate", 0, -1}, + {"itemviews/stardelegate Example", "itemviews/stardelegate", "stardelegate", 10, -1}, + {"layouts/basiclayouts Example", "layouts/basiclayouts", "basiclayouts", 0, -1}, + {"layouts/borderlayout Example", "layouts/borderlayout", "borderlayout", 10, -1}, + {"layouts/dynamiclayouts Example", "layouts/dynamiclayouts", "dynamiclayouts", 10, -1}, + {"layouts/flowlayout Example", "layouts/flowlayout", "flowlayout", 10, -1}, + {"mainwindows/application Example", "mainwindows/application", "application", 6, -1}, + {"mainwindows/dockwidgets Example", "mainwindows/dockwidgets", "dockwidgets", 0, -1}, + {"mainwindows/mdi Example", "mainwindows/mdi", "mdi", 0, -1}, + {"mainwindows/menus Example", "mainwindows/menus", "menus", 10, -1}, + {"mainwindows/recentfiles Example", "mainwindows/recentfiles", "recentfiles", 10, -1}, + {"mainwindows/sdi Example", "mainwindows/sdi", "sdi", 10, -1}, + {"multitouch/dials Example", "multitouch/dials", "dials", 10, -1}, + {"multitouch/fingerpaint Example", "multitouch/fingerpaint", "fingerpaint", 10, -1}, + {"multitouch/knobs Example", "multitouch/knobs", "knobs", 10, -1}, + {"multitouch/pinchzoom Example", "multitouch/pinchzoom", "pinchzoom", 10, -1}, + {"opengl/2dpainting Example", "opengl/2dpainting", "2dpainting", 10, -1}, + {"opengl/grabber Example", "opengl/grabber", "grabber", 10, -1}, + {"opengl/hellogl Example", "opengl/hellogl", "hellogl", 10, -1}, + {"opengl/overpainting Example", "opengl/overpainting", "overpainting", 10, -1}, + {"opengl/samplebuffers Example", "opengl/samplebuffers", "samplebuffers", 10, -1}, + {"opengl/textures Example", "opengl/textures", "textures", 10, -1}, + {"painting/basicdrawing Example", "painting/basicdrawing", "basicdrawing", 10, -1}, + {"painting/concentriccircles Example", "painting/concentriccircles", "concentriccircles", 0, -1}, + {"painting/fontsampler Example", "painting/fontsampler", "fontsampler", 0, -1}, + {"painting/imagecomposition Example", "painting/imagecomposition", "imagecomposition", 10, -1}, + {"painting/painterpaths Example", "painting/painterpaths", "painterpaths", 10, -1}, + {"painting/svggenerator Example", "painting/svggenerator", "svggenerator", 10, -1}, + {"painting/svgviewer Example", "painting/svgviewer", "svgviewer", 0, -1}, + {"painting/transformations Example", "painting/transformations", "transformations", 0, -1}, + {"qtconcurrent/imagescaling Example", "qtconcurrent/imagescaling", "imagescaling", 10, -1}, + {"richtext/calendar Example", "richtext/calendar", "calendar", 0, -1}, + {"richtext/orderform Example", "richtext/orderform", "orderform", 10, -1}, + {"richtext/syntaxhighlighter Example", "richtext/syntaxhighlighter", "syntaxhighlighter", 0, -1}, + {"richtext/textobject Example", "richtext/textobject", "textobject", 10, -1}, + {"script/calculator Example", "script/calculator", "calculator", 6, -1}, + {"script/qstetrix Example", "script/qstetrix", "qstetrix", 0, -1}, + {"statemachine/eventtransitions Example", "statemachine/eventtransitions", "eventtransitions", 10, -1}, + {"statemachine/rogue Example", "statemachine/rogue", "rogue", 10, -1}, + {"statemachine/trafficlight Example", "statemachine/trafficlight", "trafficlight", 0, -1}, + {"statemachine/twowaybutton Example", "statemachine/twowaybutton", "twowaybutton", 10, -1}, + {"tutorials/addressbook/part7 Example", "tutorials/addressbook/part7", "part7", 0, -1}, + {"webkit/fancybrowser Example", "webkit/fancybrowser", "fancybrowser", 0, 7000}, + {"widgets/analogclock Example", "widgets/analogclock", "analogclock", 6, -1}, + {"widgets/calculator Example", "widgets/calculator", "calculator", 6, -1}, + {"widgets/calendarwidget Example", "widgets/calendarwidget", "calendarwidget", 10, -1}, + {"widgets/charactermap Example", "widgets/charactermap", "charactermap", 10, -1}, + {"widgets/codeeditor Example", "widgets/codeeditor", "codeeditor", 0, -1}, + {"widgets/digitalclock Example", "widgets/digitalclock", "digitalclock", 10, -1}, + {"widgets/groupbox Example", "widgets/groupbox", "groupbox", 10, -1}, + {"widgets/icons Example", "widgets/icons", "icons", 10, -1}, + {"widgets/imageviewer Example", "widgets/imageviewer", "imageviewer", 10, -1}, + {"widgets/lineedits Example", "widgets/lineedits", "lineedits", 10, -1}, + {"widgets/scribble Example", "widgets/scribble", "scribble", 10, -1}, + {"widgets/sliders Example", "widgets/sliders", "sliders", 10, -1}, + {"widgets/spinboxes Example", "widgets/spinboxes", "spinboxes", 10, -1}, + {"widgets/styles Example", "widgets/styles", "styles", 0, -1}, + {"widgets/stylesheet Example", "widgets/stylesheet", "stylesheet", 0, -1}, + {"widgets/tablet Example", "widgets/tablet", "tablet", 10, -1}, + {"widgets/tetrix Example", "widgets/tetrix", "tetrix", 0, -1}, + {"widgets/tooltips Example", "widgets/tooltips", "tooltips", 10, -1}, + {"widgets/validators Example", "widgets/validators", "validators", 10, -1}, + {"widgets/wiggly Example", "widgets/wiggly", "wiggly", 10, -1} +}; + +const struct Example demos[] = { + {"Affine Demo", "affine", "affine", 0, -1}, + {"Books Demo", "books", "books", 0, -1}, + {"Browser Demo", "browser", "browser", 0, 0000}, + {"Chip Demo", "chip", "chip", 0, -1}, + {"Composition Demo", "composition", "composition", 0, -1}, + {"Deform Demo", "deform", "deform", 0, -1}, + {"Embeddeddialogs Demo", "embeddeddialogs", "embeddeddialogs", 0, -1}, + {"Gradients Demo", "gradients", "gradients", 0, -1}, + {"Interview Demo", "interview", "interview", 0, -1}, + {"Mainwindow Demo", "mainwindow", "mainwindow", 0, -1}, + {"PathStroke Demo", "pathstroke", "pathstroke", 0, -1}, + {"Spreadsheet Demo", "spreadsheet", "spreadsheet", 0, -1}, + {"Sub-Attac Demo", "sub-attaq", "sub-attaq", 0, -1}, + {"TextEdit Demo", "textedit", "textedit", 0, -1}, + {"Undo Demo", "undo", "undo", 0, -1} +}; + +// Data struct used in tests, specifying paths and timeouts +struct AppLaunchData { + AppLaunchData(); + void clear(); + + QString binary; + QStringList args; + QString workingDirectory; + int upTimeMS; + int topLevelWindowTimeoutMS; + int terminationTimeoutMS; + bool splashScreen; +}; + +AppLaunchData::AppLaunchData() : + upTimeMS(defaultUpTimeMS), + topLevelWindowTimeoutMS(defaultTopLevelWindowTimeoutMS), + terminationTimeoutMS(defaultTerminationTimeoutMS), + splashScreen(false) +{ +} + +void AppLaunchData::clear() +{ + binary.clear(); + args.clear(); + workingDirectory.clear(); + upTimeMS = defaultUpTimeMS; + topLevelWindowTimeoutMS = defaultTopLevelWindowTimeoutMS; + terminationTimeoutMS = defaultTerminationTimeoutMS; + splashScreen = false; +} + +Q_DECLARE_METATYPE(AppLaunchData) + + +class tst_GuiAppLauncher : public QObject +{ + Q_OBJECT + +public: + // Test name (static const char title!) + data + typedef QPair<const char*, AppLaunchData> TestDataEntry; + typedef QList<TestDataEntry> TestDataEntries; + + enum { TestTools = 0x1, TestDemo = 0x2, TestExamples = 0x4, + TestAll = TestTools|TestDemo|TestExamples }; + + tst_GuiAppLauncher(); + +private Q_SLOTS: + void initTestCase(); + + void run(); + void run_data(); + + void cleanupTestCase(); + +private: + QString workingDir() const; + +private: + bool runApp(const AppLaunchData &data, QString *errorMessage) const; + TestDataEntries testData() const; + + const unsigned m_testMask; + const unsigned m_examplePriority; + const QString m_dir; + const QSharedPointer<WindowManager> m_wm; +}; + +// Test mask from enviroment as test lib does not allow options. +static inline unsigned testMask() +{ + unsigned testMask = tst_GuiAppLauncher::TestAll; + if (!qgetenv("QT_TEST_NOTOOLS").isEmpty()) + testMask &= ~ tst_GuiAppLauncher::TestTools; + if (!qgetenv("QT_TEST_NOEXAMPLES").isEmpty()) + testMask &= ~tst_GuiAppLauncher::TestExamples; + if (!qgetenv("QT_TEST_NODEMOS").isEmpty()) + testMask &= ~tst_GuiAppLauncher::TestDemo; + return testMask; +} + +static inline unsigned testExamplePriority() +{ + const QByteArray priorityD = qgetenv("QT_TEST_EXAMPLE_PRIORITY"); + if (!priorityD.isEmpty()) { + bool ok; + const unsigned rc = priorityD.toUInt(&ok); + if (ok) + return rc; + } + return 5; +} + +tst_GuiAppLauncher::tst_GuiAppLauncher() : + m_testMask(testMask()), + m_examplePriority(testExamplePriority()), + m_dir(QLatin1String(SRCDIR)), + m_wm(WindowManager::create()) +{ +} + +void tst_GuiAppLauncher::initTestCase() +{ + QString message = QString::fromLatin1("### App Launcher test on %1 in %2 (%3)"). + arg(QDateTime::currentDateTime().toString(), QDir::currentPath()). + arg(QLibraryInfo::buildKey()); + qDebug("%s", qPrintable(message)); + qWarning("### PLEASE LEAVE THE MACHINE UNATTENDED WHILE THIS TEST IS RUNNING\n"); + + // Does a window manager exist on the platform? + if (!m_wm->openDisplay(&message)) { + QSKIP(message.toLatin1().constData(), SkipAll); + } + + // Paranoia: Do we have our test file? + const QDir workDir(m_dir); + if (!workDir.exists()) { + message = QString::fromLatin1("Invalid working directory %1").arg(m_dir); + QFAIL(message.toLocal8Bit().constData()); + } +} + +void tst_GuiAppLauncher::run() +{ + QString errorMessage; + QFETCH(AppLaunchData, data); + const bool rc = runApp(data, &errorMessage); + if (!rc) // Wait for windows to disappear after kill + WindowManager::sleepMS(500); + QVERIFY2(rc, qPrintable(errorMessage)); +} + +// Cross platform galore! +static inline QString guiBinary(QString in) +{ +#ifdef Q_OS_MAC + return in + QLatin1String(".app/Contents/MacOS/") + in; +#endif + in[0] = in.at(0).toLower(); +#ifdef Q_OS_WIN + in += QLatin1String(".exe"); +#endif + return in; +} + +void tst_GuiAppLauncher::run_data() +{ + QTest::addColumn<AppLaunchData>("data"); + foreach(const TestDataEntry &data, testData()) + QTest::newRow(data.first) << data.second; +} + +// Read out the examples array structures and convert to test data. +static tst_GuiAppLauncher::TestDataEntries exampleData(unsigned priority, + const QString &path, + bool debug, + const Example *exArray, + unsigned n) +{ + Q_UNUSED(debug) + tst_GuiAppLauncher::TestDataEntries rc; + const QChar slash = QLatin1Char('/'); + AppLaunchData data; + for (unsigned e = 0; e < n; e++) { + const Example &example = exArray[e]; + if (example.priority <= priority) { + data.clear(); + const QString examplePath = path + slash + QLatin1String(example.directory); + data.binary = examplePath + slash; +#ifdef Q_OS_WIN + data.binary += debug? QLatin1String("debug/") : QLatin1String("release/"); +#endif + data.binary += guiBinary(QLatin1String(example.binary)); + data.workingDirectory = examplePath; + if (example.upTimeMS > 0) + data.upTimeMS = example.upTimeMS; + rc.append(tst_GuiAppLauncher::TestDataEntry(example.name, data)); + } + } + return rc; +} + +tst_GuiAppLauncher::TestDataEntries tst_GuiAppLauncher::testData() const +{ + TestDataEntries rc; + const QChar slash = QLatin1Char('/'); + const QString binPath = QLibraryInfo::location(QLibraryInfo::BinariesPath) + slash; + const bool debug = QLibraryInfo::buildKey().contains(QLatin1String("debug")); + Q_UNUSED(debug) + + AppLaunchData data; + + if (m_testMask & TestTools) { + data.binary = binPath + guiBinary(QLatin1String("Designer")); + data.args.append(m_dir + QLatin1String("test.ui")); + rc.append(TestDataEntry("Qt Designer", data)); + + data.clear(); + data.binary = binPath + guiBinary(QLatin1String("Linguist")); + data.splashScreen = true; + data.upTimeMS = 5000; // Slow loading + data.args.append(m_dir + QLatin1String("test.ts")); + rc.append(TestDataEntry("Qt Linguist", data)); + } + + if (m_testMask & TestDemo) { + data.clear(); + data.upTimeMS = 5000; // Startup animation + data.binary = binPath + guiBinary(QLatin1String("qtdemo")); + rc.append(TestDataEntry("Qt Demo", data)); + + const QString demosPath = QLibraryInfo::location(QLibraryInfo::DemosPath); + if (!demosPath.isEmpty()) + rc += exampleData(m_examplePriority, demosPath, debug, demos, sizeof(demos)/sizeof(Example)); + } + + if (m_testMask & TestExamples) { + const QString examplesPath = QLibraryInfo::location(QLibraryInfo::ExamplesPath); + if (!examplesPath.isEmpty()) + rc += exampleData(m_examplePriority, examplesPath, debug, examples, sizeof(examples)/sizeof(Example)); + } + qDebug("Running %d tests...", rc.size()); + return rc; +} + +static inline void ensureTerminated(QProcess *p) +{ + if (p->state() != QProcess::Running) + return; + p->terminate(); + if (p->waitForFinished(300)) + return; + p->kill(); + if (!p->waitForFinished(500)) + qWarning("Unable to terminate process"); +} + +static const QStringList &stderrWhiteList() +{ + static QStringList rc; + if (rc.empty()) { + rc << QLatin1String("QPainter::begin: Paint device returned engine == 0, type: 2") + << QLatin1String("QPainter::setRenderHint: Painter must be active to set rendering hints") + << QLatin1String("QPainter::setPen: Painter not active") + << QLatin1String("QPainter::setBrush: Painter not active") + << QLatin1String("QPainter::end: Painter not active, aborted"); + } + return rc; +} + +bool tst_GuiAppLauncher::runApp(const AppLaunchData &data, QString *errorMessage) const +{ + qDebug("Launching: %s\n", qPrintable(data.binary)); + QProcess process; + process.setProcessChannelMode(QProcess::MergedChannels); + if (!data.workingDirectory.isEmpty()) + process.setWorkingDirectory(data.workingDirectory); + process.start(data.binary, data.args); + process.closeWriteChannel(); + if (!process.waitForStarted()) { + *errorMessage = QString::fromLatin1("Unable to execute %1: %2").arg(data.binary, process.errorString()); + return false; + } + // Get window id. + const QString winId = m_wm->waitForTopLevelWindow(data.splashScreen ? 2 : 1, process.pid(), data.topLevelWindowTimeoutMS, errorMessage); + if (winId.isEmpty()) { + ensureTerminated(&process); + return false; + } + qDebug("Window: %s\n", qPrintable(winId)); + // Wait a bit, then send close + WindowManager::sleepMS(data.upTimeMS); + if (m_wm->sendCloseEvent(winId, process.pid(), errorMessage)) { + qDebug("Sent close to window: %s\n", qPrintable(winId)); + } else { + ensureTerminated(&process); + return false; + } + // Terminate + if (!process.waitForFinished(data.terminationTimeoutMS)) { + *errorMessage = QString::fromLatin1("%1: Timeout %2ms").arg(data.binary).arg(data.terminationTimeoutMS); + ensureTerminated(&process); + return false; + } + if (process.exitStatus() != QProcess::NormalExit) { + *errorMessage = QString::fromLatin1("%1: Startup crash").arg(data.binary); + return false; + } + + const int exitCode = process.exitCode(); + // check stderr + const QStringList stderrOutput = QString::fromLocal8Bit(process.readAllStandardOutput()).split(QLatin1Char('\n')); + foreach(const QString &stderrLine, stderrOutput) { + // Skip expected QPainter warnings from oxygen. + if (stderrWhiteList().contains(stderrLine)) { + qWarning("%s: stderr: %s\n", qPrintable(data.binary), qPrintable(stderrLine)); + } else { + if (!stderrLine.isEmpty()) { // Split oddity gives empty messages + *errorMessage = QString::fromLatin1("%1: Unexpected output (ex=%2): '%3'").arg(data.binary).arg(exitCode).arg(stderrLine); + return false; + } + } + } + + if (exitCode != 0) { + *errorMessage = QString::fromLatin1("%1: Exit code %2").arg(data.binary).arg(exitCode); + return false; + } + return true; +} + +void tst_GuiAppLauncher::cleanupTestCase() +{ +} + +#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN) +QTEST_NOOP_MAIN +#else +QTEST_APPLESS_MAIN(tst_GuiAppLauncher) +#endif + +#include "tst_guiapplauncher.moc" diff --git a/tests/auto/guiapplauncher/windowmanager.cpp b/tests/auto/guiapplauncher/windowmanager.cpp new file mode 100644 index 0000000..758a14e --- /dev/null +++ b/tests/auto/guiapplauncher/windowmanager.cpp @@ -0,0 +1,508 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (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 Technology Preview License Agreement accompanying +** this package. +** +** 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.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "windowmanager.h" +#include <QtCore/QTime> +#include <QtCore/QThread> +#include <QtCore/QDebug> +#include <QtCore/QTextStream> + +#ifdef Q_WS_X11 +# include <string.h> // memset +# include <X11/Xlib.h> +# include <X11/Xatom.h> // XA_WM_STATE +# include <X11/Xutil.h> +# include <X11/Xmd.h> // CARD32 +#endif + +#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) +# include <windows.h> +#endif + +// Export the sleep function +class FriendlySleepyThread : public QThread { +public: + static void sleepMS(int milliSeconds) { msleep(milliSeconds); } +}; + +#ifdef Q_WS_X11 +// X11 Window manager + +// Register our own error handler to prevent the defult crashing +// behaviour. It simply counts errors in global variables that +// can be checked after calls. + +static unsigned x11ErrorCount = 0; +static const char *currentX11Function = 0; + +int xErrorHandler(Display *, XErrorEvent *e) +{ + x11ErrorCount++; + + QString msg; + QTextStream str(&msg); + str << "An X11 error (#" << x11ErrorCount<< ") occurred: "; + if (currentX11Function) + str << ' ' << currentX11Function << "()"; + str << " code: " << e->error_code; + str.setIntegerBase(16); + str << " resource: 0x" << e->resourceid; + qWarning("%s", qPrintable(msg)); + + return 0; +} + +static bool isMapped(Display *display, Atom xa_wm_state, Window window, bool *isMapped) +{ + Atom actual_type; + int actual_format; + unsigned long nitems; + unsigned long bytes_after; + unsigned char *prop; + + *isMapped = false; + currentX11Function = "XGetWindowProperty"; + const int retv = XGetWindowProperty(display, window, xa_wm_state, 0L, 1L, False, xa_wm_state, + &actual_type, &actual_format, &nitems, &bytes_after, &prop); + + if (retv != Success || actual_type == None || actual_type != xa_wm_state + || nitems != 1 || actual_format != 32) + return false; + + const CARD32 state = * reinterpret_cast<CARD32 *>(prop); + + switch ((int) state) { + case WithdrawnState: + *isMapped = false; + break; + case NormalState: + case IconicState: + *isMapped = true; + break; + default: + *isMapped = true; + break; + } + return true; +} + +// Wait until a X11 top level has been mapped, courtesy of xtoolwait. +static Window waitForTopLevelMapped(Display *display, unsigned count, int timeOutMS, QString * errorMessage) +{ + unsigned mappingsCount = count; + Atom xa_wm_state; + XEvent event; + + // Discard all pending events + currentX11Function = "XSync"; + XSync(display, True); + + // Listen for top level creation + currentX11Function = "XSelectInput"; + XSelectInput(display, DefaultRootWindow(display), SubstructureNotifyMask); + + /* We assume that the window manager provides the WM_STATE property on top-level + * windows, as required by ICCCM 2.0. + * If the window manager has not yet completed its initialisation, the WM_STATE atom + * might not exist, in which case we create it. */ + +#ifdef XA_WM_STATE /* probably in X11R7 */ + xa_wm_state = XA_WM_STATE; +#else + xa_wm_state = XInternAtom(display, "WM_STATE", False); +#endif + + QTime elapsedTime; + elapsedTime.start(); + while (mappingsCount) { + if (elapsedTime.elapsed() > timeOutMS) { + *errorMessage = QString::fromLatin1("X11: Timed out waiting for toplevel %1ms").arg(timeOutMS); + return 0; + } + currentX11Function = "XNextEvent"; + unsigned errorCount = x11ErrorCount; + XNextEvent(display, &event); + if (x11ErrorCount > errorCount) { + *errorMessage = QString::fromLatin1("X11: Error in XNextEvent"); + return 0; + } + switch (event.type) { + case CreateNotify: + // Window created, listen for its mapping now + if (!event.xcreatewindow.send_event && !event.xcreatewindow.override_redirect) + XSelectInput(display, event.xcreatewindow.window, PropertyChangeMask); + break; + case PropertyNotify: + // Watch for map + if (!event.xproperty.send_event && event.xproperty.atom == xa_wm_state) { + bool mapped; + if (isMapped(display, xa_wm_state, event.xproperty.window, &mapped)) { + if (mapped && --mappingsCount == 0) + return event.xproperty.window; + // Past splash screen, listen for next window to be created + XSelectInput(display, DefaultRootWindow(display), SubstructureNotifyMask); + } else { + // Some temporary window disappeared. Listen for next creation + XSelectInput(display, DefaultRootWindow(display), SubstructureNotifyMask); + } + // Main app window opened? + } + break; + default: + break; + } + } + *errorMessage = QString::fromLatin1("X11: Timed out waiting for toplevel %1ms").arg(timeOutMS); + return 0; +} + + +class X11_WindowManager : public WindowManager +{ +public: + X11_WindowManager(); + ~X11_WindowManager(); + +protected: + virtual bool isDisplayOpenImpl() const; + virtual bool openDisplayImpl(QString *errorMessage); + virtual QString waitForTopLevelWindowImpl(unsigned count, Q_PID, int timeOutMS, QString *errorMessage); + virtual bool sendCloseEventImpl(const QString &winId, Q_PID pid, QString *errorMessage); + +private: + Display *m_display; + const QByteArray m_displayVariable; + XErrorHandler m_oldErrorHandler; +}; + +X11_WindowManager::X11_WindowManager() : + m_display(0), + m_displayVariable(qgetenv("DISPLAY")), + m_oldErrorHandler(0) +{ +} + +X11_WindowManager::~X11_WindowManager() +{ + if (m_display) { + XSetErrorHandler(m_oldErrorHandler); + XCloseDisplay(m_display); + } +} + +bool X11_WindowManager::isDisplayOpenImpl() const +{ + return m_display != 0; +} + +bool X11_WindowManager::openDisplayImpl(QString *errorMessage) +{ + if (m_displayVariable.isEmpty()) { + *errorMessage = QLatin1String("X11: Display not set"); + return false; + } + m_display = XOpenDisplay(NULL); + if (!m_display) { + *errorMessage = QString::fromLatin1("X11: Cannot open display %1.").arg(QString::fromLocal8Bit(m_displayVariable)); + return false; + } + + m_oldErrorHandler = XSetErrorHandler(xErrorHandler); + return true; +} + +QString X11_WindowManager::waitForTopLevelWindowImpl(unsigned count, Q_PID, int timeOutMS, QString *errorMessage) +{ + const Window w = waitForTopLevelMapped(m_display, count, timeOutMS, errorMessage); + if (w == 0) + return QString(); + return QLatin1String("0x") + QString::number(w, 16); +} + + bool X11_WindowManager::sendCloseEventImpl(const QString &winId, Q_PID, QString *errorMessage) + { + // Get win id + bool ok; + const Window window = winId.toULong(&ok, 16); + if (!ok) { + *errorMessage = QString::fromLatin1("Invalid win id %1.").arg(winId); + return false; + } + // Send a window manager close event + XEvent ev; + memset(&ev, 0, sizeof (ev)); + ev.xclient.type = ClientMessage; + ev.xclient.window = window; + ev.xclient.message_type = XInternAtom(m_display, "WM_PROTOCOLS", true); + ev.xclient.format = 32; + ev.xclient.data.l[0] = XInternAtom(m_display, "WM_DELETE_WINDOW", false); + ev.xclient.data.l[1] = CurrentTime; + // Window disappeared or some error triggered? + unsigned errorCount = x11ErrorCount; + currentX11Function = "XSendEvent"; + XSendEvent(m_display, window, False, NoEventMask, &ev); + if (x11ErrorCount > errorCount) { + *errorMessage = QString::fromLatin1("Error sending event to win id %1.").arg(winId); + return false; + } + currentX11Function = "XSync"; + errorCount = x11ErrorCount; + XSync(m_display, False); + if (x11ErrorCount > errorCount) { + *errorMessage = QString::fromLatin1("Error sending event to win id %1 (XSync).").arg(winId); + return false; + } + return true; + } + +#endif + +#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) +// Windows + + QString winErrorMessage(unsigned long error) +{ + QString rc = QString::fromLatin1("#%1: ").arg(error); + ushort *lpMsgBuf; + + const int len = FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, error, 0, (LPTSTR)&lpMsgBuf, 0, NULL); + if (len) { + rc = QString::fromUtf16(lpMsgBuf, len); + LocalFree(lpMsgBuf); + } else { + rc += QString::fromLatin1("<unknown error>"); + } + return rc; +} + + class Win_WindowManager : public WindowManager + { + public: + Win_WindowManager() {} + + protected: + virtual bool isDisplayOpenImpl() const; + virtual bool openDisplayImpl(QString *errorMessage); + virtual QString waitForTopLevelWindowImpl(unsigned count, Q_PID, int timeOutMS, QString *errorMessage); + virtual bool sendCloseEventImpl(const QString &winId, Q_PID pid, QString *errorMessage); + + private: + }; + +bool Win_WindowManager::isDisplayOpenImpl() const +{ + return true; +} + +bool Win_WindowManager::openDisplayImpl(QString *) +{ + return true; +} + +// Enumerate window looking for toplevel of process id +struct FindProcessWindowEnumContext { + FindProcessWindowEnumContext(DWORD pid) : window(0),processId(pid) {} + + HWND window; + DWORD processId; +}; + +/* Check for the active main window of the Application + * of class QWidget. */ +static inline bool isQtMainWindow(HWND hwnd) +{ + static char buffer[MAX_PATH]; + if (!GetClassNameA(hwnd, buffer, MAX_PATH) || qstrcmp(buffer, "QWidget")) + return false; + WINDOWINFO windowInfo; + if (!GetWindowInfo(hwnd, &windowInfo)) + return false; + if (!(windowInfo.dwWindowStatus & WS_ACTIVECAPTION)) + return false; + // Check the style for a real mainwindow + const DWORD excluded = WS_DISABLED | WS_POPUP; + const DWORD required = WS_CAPTION | WS_SYSMENU | WS_VISIBLE; + return (windowInfo.dwStyle & excluded) == 0 + && (windowInfo.dwStyle & required) == required; +} + +static BOOL CALLBACK findProcessWindowEnumWindowProc(HWND hwnd, LPARAM lParam) +{ + DWORD processId = 0; + FindProcessWindowEnumContext *context= reinterpret_cast<FindProcessWindowEnumContext *>(lParam); + GetWindowThreadProcessId(hwnd, &processId); + if (context->processId == processId && isQtMainWindow(hwnd)) { + context->window = hwnd; + return FALSE; + } + return TRUE; +} + +QString Win_WindowManager::waitForTopLevelWindowImpl(unsigned /* count */, Q_PID pid, int timeOutMS, QString *errorMessage) +{ + QTime elapsed; + elapsed.start(); + // First, wait until the application is up + if (WaitForInputIdle(pid->hProcess, timeOutMS) != 0) { + *errorMessage = QString::fromLatin1("WaitForInputIdle time out after %1ms").arg(timeOutMS); + return QString(); + } + // Try to locate top level app window. App still might be in splash screen or initialization + // phase. + const int remainingMilliSeconds = qMax(timeOutMS - elapsed.elapsed(), 500); + const int attempts = 10; + const int intervalMilliSeconds = remainingMilliSeconds / attempts; + for (int a = 0; a < attempts; a++) { + FindProcessWindowEnumContext context(pid->dwProcessId); + EnumWindows(findProcessWindowEnumWindowProc, reinterpret_cast<LPARAM>(&context)); + if (context.window) + return QLatin1String("0x") + QString::number(reinterpret_cast<quintptr>(context.window), 16); + sleepMS(intervalMilliSeconds); + } + *errorMessage = QString::fromLatin1("Unable to find toplevel of process %1 after %2ms.").arg(pid->dwProcessId).arg(timeOutMS); + return QString(); +} + +bool Win_WindowManager::sendCloseEventImpl(const QString &winId, Q_PID, QString *errorMessage) +{ + // Convert window back. + quintptr winIdIntPtr; + QTextStream str(const_cast<QString*>(&winId), QIODevice::ReadOnly); + str.setIntegerBase(16); + str >> winIdIntPtr; + if (str.status() != QTextStream::Ok) { + *errorMessage = QString::fromLatin1("Invalid win id %1.").arg(winId); + return false; + } + if (!PostMessage(reinterpret_cast<HWND>(winIdIntPtr), WM_CLOSE, 0, 0)) { + *errorMessage = QString::fromLatin1("Cannot send event to 0x%1: %2").arg(winIdIntPtr, 0, 16).arg(winErrorMessage(GetLastError())); + return false; + } + return true; +} +#endif + +// ------- Default implementation + +WindowManager::WindowManager() +{ +} + +WindowManager::~WindowManager() +{ +} + +QSharedPointer<WindowManager> WindowManager::create() +{ +#ifdef Q_WS_X11 + return QSharedPointer<WindowManager>(new X11_WindowManager); +#endif +#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) + return QSharedPointer<WindowManager>(new Win_WindowManager); +#else + return QSharedPointer<WindowManager>(new WindowManager); +#endif +} + +static inline QString msgNoDisplayOpen() { return QLatin1String("No display opened."); } + +bool WindowManager::openDisplay(QString *errorMessage) +{ + if (isDisplayOpen()) + return true; + return openDisplayImpl(errorMessage); +} + +bool WindowManager::isDisplayOpen() const +{ + return isDisplayOpenImpl(); +} + + + +QString WindowManager::waitForTopLevelWindow(unsigned count, Q_PID pid, int timeOutMS, QString *errorMessage) +{ + if (!isDisplayOpen()) { + *errorMessage = msgNoDisplayOpen(); + return QString(); + } + return waitForTopLevelWindowImpl(count, pid, timeOutMS, errorMessage); +} + +bool WindowManager::sendCloseEvent(const QString &winId, Q_PID pid, QString *errorMessage) +{ + if (!isDisplayOpen()) { + *errorMessage = msgNoDisplayOpen(); + return false; + } + return sendCloseEventImpl(winId, pid, errorMessage); +} + +// Default Implementation +bool WindowManager::openDisplayImpl(QString *errorMessage) +{ + *errorMessage = QLatin1String("Not implemented."); + return false; +} + +bool WindowManager::isDisplayOpenImpl() const +{ + return false; +} + +QString WindowManager::waitForTopLevelWindowImpl(unsigned, Q_PID, int, QString *errorMessage) +{ + *errorMessage = QLatin1String("Not implemented."); + return QString(); +} + +bool WindowManager::sendCloseEventImpl(const QString &, Q_PID, QString *errorMessage) +{ + *errorMessage = QLatin1String("Not implemented."); + return false; +} + +void WindowManager::sleepMS(int milliSeconds) +{ + FriendlySleepyThread::sleepMS(milliSeconds); +} diff --git a/tests/auto/guiapplauncher/windowmanager.h b/tests/auto/guiapplauncher/windowmanager.h new file mode 100644 index 0000000..56e2eb9 --- /dev/null +++ b/tests/auto/guiapplauncher/windowmanager.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (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 Technology Preview License Agreement accompanying +** this package. +** +** 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.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef WINDOWMANAGER_H +#define WINDOWMANAGER_H + +#include <QtCore/QSharedPointer> +#include <QtCore/QString> +#include <QtCore/QProcess> + +/* WindowManager: Provides functions to retrieve the top level window of + * an application and send it a close event. */ + +class WindowManager +{ + Q_DISABLE_COPY(WindowManager) +public: + static QSharedPointer<WindowManager> create(); + + virtual ~WindowManager(); + + bool openDisplay(QString *errorMessage); + bool isDisplayOpen() const; + + // Count: Number of toplevels, 1 for normal apps, 2 for apps with a splash screen + QString waitForTopLevelWindow(unsigned count, Q_PID pid, int timeOutMS, QString *errorMessage); + bool sendCloseEvent(const QString &winId, Q_PID pid, QString *errorMessage); + + static void sleepMS(int milliSeconds); + +protected: + WindowManager(); + + virtual bool openDisplayImpl(QString *errorMessage); + virtual bool isDisplayOpenImpl() const; + virtual QString waitForTopLevelWindowImpl(unsigned count, Q_PID pid, int timeOutMS, QString *errorMessage); + virtual bool sendCloseEventImpl(const QString &winId, Q_PID pid, QString *errorMessage); +}; + +#endif // WINDOWMANAGER_H diff --git a/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp b/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp index 33226bf..f833196 100644 --- a/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp +++ b/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp @@ -51,6 +51,7 @@ #include <qtimer.h> #include <QDialog> #include <QGridLayout> +#include <QPainter> Q_DECLARE_METATYPE(QCommandLinkButton*) @@ -83,7 +84,8 @@ private slots: void clicked(); void toggled(); void defaultAndAutoDefault(); - void setAutoRepeat(); + void setAutoRepeat(); + void heightForWithWithIcon(); protected slots: void resetCounters(); @@ -106,17 +108,17 @@ private: void tst_QCommandLinkButton::getSetCheck() { QCommandLinkButton obj1; - + QString text("mytext"); QVERIFY(obj1.description().isEmpty()); obj1.setDescription(text); QVERIFY(obj1.description() == text); - + QVERIFY(obj1.text().isEmpty()); obj1.setText(text); QVERIFY(obj1.text() == text); - - + + QMenu *var1 = new QMenu; obj1.setMenu(var1); QCOMPARE(var1, obj1.menu()); @@ -393,8 +395,8 @@ void tst_QCommandLinkButton::setAccel() QTest::qWait(100); } - QVERIFY(testWidget->isActiveWindow()); - + QVERIFY(testWidget->isActiveWindow()); + QTest::keyClick( testWidget, 'A', Qt::AltModifier ); QTest::qWait( 500 ); QVERIFY( click_count == 1 ); @@ -556,5 +558,33 @@ void tst_QCommandLinkButton::defaultAndAutoDefault() } } +void tst_QCommandLinkButton::heightForWithWithIcon() +{ + QWidget mainWin; + + QPixmap pixmap(64, 64); + { + pixmap.fill(Qt::white); + QPainter painter(&pixmap); + painter.setBrush(Qt::black); + painter.drawEllipse(0, 0, 63, 63); + } + + QCommandLinkButton *largeIconButton = new QCommandLinkButton(QString("Large Icon"), + QString("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris nibh lectus, adipiscing eu."), + &mainWin); + largeIconButton->setIconSize(QSize(64, 64)); + largeIconButton->setIcon(pixmap); + + QVBoxLayout *layout = new QVBoxLayout(); + layout->addWidget(largeIconButton); + layout->addStretch(); + mainWin.setLayout(layout); + mainWin.showMaximized(); + QTest::qWaitForWindowShown(&mainWin); + QVERIFY(largeIconButton->height() > 68); //enough room for the icon + +} + QTEST_MAIN(tst_QCommandLinkButton) #include "tst_qcommandlinkbutton.moc" diff --git a/tests/auto/qfile/tst_qfile.cpp b/tests/auto/qfile/tst_qfile.cpp index b3d6fd9..cf46ce1 100644 --- a/tests/auto/qfile/tst_qfile.cpp +++ b/tests/auto/qfile/tst_qfile.cpp @@ -210,6 +210,7 @@ private slots: void task167217(); void openDirectory(); + void writeNothing(); public: // disabled this test for the moment... it hangs @@ -750,6 +751,7 @@ void tst_QFile::readAllStdin() QProcess process; process.start("stdinprocess/stdinprocess all"); + QVERIFY( process.waitForStarted() ); for (int i = 0; i < 5; ++i) { QTest::qWait(1000); process.write(lotsOfData); @@ -2489,13 +2491,13 @@ void tst_QFile::readEof() } QByteArray ret = file.read(10); - QVERIFY(ret.isNull()); + QVERIFY(ret.isEmpty()); QVERIFY(file.error() == QFile::NoError); QVERIFY(file.atEnd()); // Do it again to ensure that we get the same result ret = file.read(10); - QVERIFY(ret.isNull()); + QVERIFY(ret.isEmpty()); QVERIFY(file.error() == QFile::NoError); QVERIFY(file.atEnd()); } @@ -2840,5 +2842,16 @@ void tst_QFile::openStandardStreams() } } +void tst_QFile::writeNothing() +{ + for (int i = 0; i < 3; ++i) { + QFile file("file.txt"); + QVERIFY( openFile(file, QIODevice::WriteOnly | QIODevice::Unbuffered, FileType(i)) ); + QVERIFY( 0 == file.write((char *)0, 0) ); + QCOMPARE( file.error(), QFile::NoError ); + closeFile(file); + } +} + QTEST_MAIN(tst_QFile) #include "tst_qfile.moc" diff --git a/tests/auto/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/qfontmetrics/tst_qfontmetrics.cpp index e80f8e0..efb1b56 100644 --- a/tests/auto/qfontmetrics/tst_qfontmetrics.cpp +++ b/tests/auto/qfontmetrics/tst_qfontmetrics.cpp @@ -72,6 +72,7 @@ private slots: void veryNarrowElidedText(); void averageCharWidth(); void elidedMultiLength(); + void elidedMultiLengthF(); void bearingIncludedInBoundingRect(); }; @@ -218,13 +219,13 @@ void tst_QFontMetrics::averageCharWidth() QVERIFY(fmf.averageCharWidth() != 0); } -void tst_QFontMetrics::elidedMultiLength() +template<class FontMetrics> void elidedMultiLength_helper() { QString text1 = "Long Text 1\x9cShorter\x9csmall"; QString text1_long = "Long Text 1"; QString text1_short = "Shorter"; QString text1_small = "small"; - QFontMetrics fm = QFontMetrics(QFont()); + FontMetrics fm = FontMetrics(QFont()); int width_long = fm.size(0, text1_long).width(); QCOMPARE(fm.elidedText(text1,Qt::ElideRight, 8000), text1_long); QCOMPARE(fm.elidedText(text1,Qt::ElideRight, width_long + 1), text1_long); @@ -238,7 +239,16 @@ void tst_QFontMetrics::elidedMultiLength() QString text1_el = QString::fromLatin1("s") + ellipsisChar; int width_small = fm.width(text1_el); QCOMPARE(fm.elidedText(text1,Qt::ElideRight, width_small + 1), text1_el); +} +void tst_QFontMetrics::elidedMultiLength() +{ + elidedMultiLength_helper<QFontMetrics>(); +} + +void tst_QFontMetrics::elidedMultiLengthF() +{ + elidedMultiLength_helper<QFontMetricsF>(); } void tst_QFontMetrics::bearingIncludedInBoundingRect() diff --git a/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp b/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp index bca59c3..baa1ba1 100644 --- a/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp +++ b/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp @@ -167,7 +167,7 @@ public: { setContentsMargins( 0,0,0,0 ); if (name.isEmpty()) - setData(0, QString::fromAscii("w%1").arg(int(this))); + setData(0, QString::fromAscii("w%1").arg(quintptr(this))); else setData(0, name); } diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp index 596ac9b..605b3e3 100644 --- a/tests/auto/qlistview/tst_qlistview.cpp +++ b/tests/auto/qlistview/tst_qlistview.cpp @@ -1895,6 +1895,8 @@ void tst_QListView::taskQTBUG_5877_skippingItemInPageDownUp() vu.setModel(&model); vu.show(); + QTest::qWaitForWindowShown(&vu); + int itemHeight = vu.visualRect(model.index(0, 0)).height(); int visibleRowCount = vu.height() / itemHeight; int scrolledRowCount = visibleRowCount - 1; diff --git a/tests/auto/qstatusbar/tst_qstatusbar.cpp b/tests/auto/qstatusbar/tst_qstatusbar.cpp index 9774559..92d9185 100644 --- a/tests/auto/qstatusbar/tst_qstatusbar.cpp +++ b/tests/auto/qstatusbar/tst_qstatusbar.cpp @@ -77,6 +77,7 @@ private slots: void insertPermanentWidget(); void setSizeGripEnabled(); void task194017_hiddenWidget(); + void QTBUG4334_hiddenOnMaximizedWindow(); private: QStatusBar *testWidget; @@ -257,6 +258,19 @@ void tst_QStatusBar::task194017_hiddenWidget() QVERIFY(!label->isVisible()); } +void tst_QStatusBar::QTBUG4334_hiddenOnMaximizedWindow() +{ + QMainWindow main; + QStatusBar statusbar; + statusbar.setSizeGripEnabled(true); + main.setStatusBar(&statusbar); + main.showMaximized(); + QTest::qWaitForWindowShown(&main); + QVERIFY(!statusbar.findChild<QSizeGrip*>()->isVisible()); + main.showNormal(); + QTest::qWaitForWindowShown(&main); + QVERIFY(statusbar.findChild<QSizeGrip*>()->isVisible()); +} QTEST_MAIN(tst_QStatusBar) #include "tst_qstatusbar.moc" diff --git a/tests/auto/uic/baseline/mainwindowbase.ui.h b/tests/auto/uic/baseline/mainwindowbase.ui.h index 46270a7..8472dbb 100644 --- a/tests/auto/uic/baseline/mainwindowbase.ui.h +++ b/tests/auto/uic/baseline/mainwindowbase.ui.h @@ -221,7 +221,6 @@ public: hboxLayout->setSpacing(4); hboxLayout->setContentsMargins(8, 8, 8, 8); hboxLayout->setObjectName(QString::fromUtf8("hboxLayout")); - hboxLayout->setContentsMargins(0, 0, 0, 0); helpview = new QTextEdit(widget); helpview->setObjectName(QString::fromUtf8("helpview")); helpview->setMinimumSize(QSize(200, 0)); diff --git a/tools/assistant/tools/assistant/main.cpp b/tools/assistant/tools/assistant/main.cpp index 12bc5b1..9568df0 100644 --- a/tools/assistant/tools/assistant/main.cpp +++ b/tools/assistant/tools/assistant/main.cpp @@ -189,6 +189,7 @@ QString indexFilesFolder(const QString &collectionFile) int main(int argc, char *argv[]) { +#ifndef Q_OS_WIN // First do a quick search for arguments that imply command-line mode. const char * cmdModeArgs[] = { "-help", "-register", "-unregister", "-remove-search-index" @@ -202,8 +203,10 @@ int main(int argc, char *argv[]) } } } - QApplication a(argc, argv, useGui); +#else + QApplication a(argc, argv); +#endif a.addLibraryPath(a.applicationDirPath() + QLatin1String("/plugins")); CmdLineParser cmd; diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 735e030..cd3feec 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2595,7 +2595,7 @@ void Configure::generateOutputVars() if (!opensslLibs.isEmpty()) qmakeVars += opensslLibs; else if (dictionary[ "OPENSSL" ] == "linked") { - if(dictionary[ "XQMAKESPEC" ].startsWith("symbian") ) + if(dictionary.contains("XQMAKESPEC") && dictionary[ "XQMAKESPEC" ].startsWith("symbian") ) qmakeVars += QString("OPENSSL_LIBS = -llibssl -llibcrypto"); else qmakeVars += QString("OPENSSL_LIBS = -lssleay32 -llibeay32"); @@ -3402,7 +3402,8 @@ void Configure::buildHostTools() QString pwd = QDir::currentPath(); QStringList hostToolsDirs; hostToolsDirs - << "src/tools"; + << "src/tools" + << "tools/linguist/lrelease"; if(dictionary["XQMAKESPEC"].startsWith("wince")) hostToolsDirs << "tools/checksdk"; diff --git a/tools/designer/src/lib/uilib/abstractformbuilder.cpp b/tools/designer/src/lib/uilib/abstractformbuilder.cpp index 24d2c01..eb3dc1c 100644 --- a/tools/designer/src/lib/uilib/abstractformbuilder.cpp +++ b/tools/designer/src/lib/uilib/abstractformbuilder.cpp @@ -285,23 +285,8 @@ void QAbstractFormBuilder::initialize(const DomUI *ui) if (!customWidgets.empty()) { QFormBuilderExtra *formBuilderPrivate = QFormBuilderExtra::instance(this); const DomCustomWidgetList::const_iterator cend = customWidgets.constEnd(); - for (DomCustomWidgetList::const_iterator it = customWidgets.constBegin(); it != cend; ++it) { - const DomCustomWidget *cw = *it; -#ifndef QT_FORMBUILDER_NO_SCRIPT - if (const DomScript *domScript = cw->elementScript()) { - const QString script = domScript->text(); - if (!script.isEmpty()) - formBuilderPrivate->storeCustomWidgetScript(cw->elementClass(), script); - } -#endif - const QString addPageMethod = cw->elementAddPageMethod(); - if (!addPageMethod.isEmpty()) - formBuilderPrivate->storeCustomWidgetAddPageMethod(cw->elementClass(), addPageMethod); - - const QString extends = cw->elementExtends(); - if (!extends.isEmpty()) - formBuilderPrivate->storeCustomWidgetBaseClass(cw->elementClass(), extends); - } + for (DomCustomWidgetList::const_iterator it = customWidgets.constBegin(); it != cend; ++it) + formBuilderPrivate->storeCustomWidgetData((*it)->elementClass(), *it); } } } diff --git a/tools/designer/src/lib/uilib/formbuilder.cpp b/tools/designer/src/lib/uilib/formbuilder.cpp index 0a722ba..2de8388 100644 --- a/tools/designer/src/lib/uilib/formbuilder.cpp +++ b/tools/designer/src/lib/uilib/formbuilder.cpp @@ -123,6 +123,8 @@ QWidget *QFormBuilder::create(DomWidget *ui_widget, QWidget *parentWidget) QFormBuilderExtra *fb = QFormBuilderExtra::instance(this); if (!fb->parentWidgetIsSet()) fb->setParentWidget(parentWidget); + // Is this a QLayoutWidget with a margin of 0: Not a known page-based + // container and no method for adding pages registered. fb->setProcessingLayoutWidget(false); if (ui_widget->attributeClass() == QFormBuilderStrings::instance().qWidgetClass && !ui_widget->hasAttributeNative() && parentWidget @@ -147,8 +149,11 @@ QWidget *QFormBuilder::create(DomWidget *ui_widget, QWidget *parentWidget) #ifndef QT_NO_DOCKWIDGET && !qobject_cast<QDockWidget *>(parentWidget) #endif - ) - fb->setProcessingLayoutWidget(true); + ) { + const QString parentClassName = QLatin1String(parentWidget->metaObject()->className()); + if (!fb->isCustomWidgetContainer(parentClassName)) + fb->setProcessingLayoutWidget(true); + } return QAbstractFormBuilder::create(ui_widget, parentWidget); } diff --git a/tools/designer/src/lib/uilib/formbuilderextra.cpp b/tools/designer/src/lib/uilib/formbuilderextra.cpp index 0e803fb..ce71d59 100644 --- a/tools/designer/src/lib/uilib/formbuilderextra.cpp +++ b/tools/designer/src/lib/uilib/formbuilderextra.cpp @@ -65,6 +65,23 @@ void uiLibWarning(const QString &message) { qWarning("Designer: %s", qPrintable(message)); } + +QFormBuilderExtra::CustomWidgetData::CustomWidgetData() : + isContainer(false) +{ +} + +QFormBuilderExtra::CustomWidgetData::CustomWidgetData(const DomCustomWidget *dcw) : + addPageMethod(dcw->elementAddPageMethod()), + baseClass(dcw->elementExtends()), + isContainer(dcw->hasElementContainer() && dcw->elementContainer() != 0) +{ +#ifndef QT_FORMBUILDER_NO_SCRIPT + if (const DomScript *domScript = dcw->elementScript()) + script = domScript->text(); +#endif +} + QFormBuilderExtra::QFormBuilderExtra() : m_layoutWidget(false), m_resourceBuilder(0), @@ -85,8 +102,8 @@ void QFormBuilderExtra::clear() m_parentWidgetIsSet = false; #ifndef QT_FORMBUILDER_NO_SCRIPT m_FormScriptRunner.clearErrors(); - m_customWidgetScriptHash.clear(); #endif + m_customWidgetDataHash.clear(); m_buttonGroups.clear(); } @@ -160,45 +177,44 @@ QFormScriptRunner &QFormBuilderExtra::formScriptRunner() return m_FormScriptRunner; } -void QFormBuilderExtra::storeCustomWidgetScript(const QString &className, const QString &script) -{ - m_customWidgetScriptHash.insert(className, script); -} - QString QFormBuilderExtra::customWidgetScript(const QString &className) const { - const CustomWidgetScriptHash::const_iterator it = m_customWidgetScriptHash.constFind(className); - if ( it == m_customWidgetScriptHash.constEnd()) - return QString(); - return it.value(); + const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className); + if (it != m_customWidgetDataHash.constEnd()) + return it.value().script; + return QString(); } #endif -void QFormBuilderExtra::storeCustomWidgetBaseClass(const QString &className, const QString &baseClassName) +void QFormBuilderExtra::storeCustomWidgetData(const QString &className, const DomCustomWidget *d) { - m_customWidgetBaseClassHash.insert(className, baseClassName); + if (d) + m_customWidgetDataHash.insert(className, CustomWidgetData(d)); } QString QFormBuilderExtra::customWidgetBaseClass(const QString &className) const { - const QHash<QString, QString>::const_iterator it = m_customWidgetBaseClassHash.constFind(className); - if (it == m_customWidgetBaseClassHash.constEnd()) - return QString(); - return it.value(); + const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className); + if (it != m_customWidgetDataHash.constEnd()) + return it.value().baseClass; + return QString(); } -void QFormBuilderExtra::storeCustomWidgetAddPageMethod(const QString &className, const QString &ct) +QString QFormBuilderExtra::customWidgetAddPageMethod(const QString &className) const { - m_customWidgetAddPageMethodHash.insert(className, ct); + const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className); + if (it != m_customWidgetDataHash.constEnd()) + return it.value().addPageMethod; + return QString(); } -QString QFormBuilderExtra::customWidgetAddPageMethod(const QString &className) const +bool QFormBuilderExtra::isCustomWidgetContainer(const QString &className) const { - const QHash<QString, QString>::const_iterator it = m_customWidgetAddPageMethodHash.constFind(className); - if (it == m_customWidgetAddPageMethodHash.constEnd()) - return QString(); - return it.value(); + const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className); + if (it != m_customWidgetDataHash.constEnd()) + return it.value().isContainer; + return false; } namespace { diff --git a/tools/designer/src/lib/uilib/formbuilderextra_p.h b/tools/designer/src/lib/uilib/formbuilderextra_p.h index ce4d25b..3bcd1eb 100644 --- a/tools/designer/src/lib/uilib/formbuilderextra_p.h +++ b/tools/designer/src/lib/uilib/formbuilderextra_p.h @@ -82,6 +82,7 @@ namespace QFormInternal class DomButtonGroups; class DomButtonGroup; +class DomCustomWidget; class QAbstractFormBuilder; class QResourceBuilder; @@ -92,6 +93,16 @@ class QDESIGNER_UILIB_EXPORT QFormBuilderExtra QFormBuilderExtra(); ~QFormBuilderExtra(); public: + struct CustomWidgetData { + CustomWidgetData(); + explicit CustomWidgetData(const DomCustomWidget *dc); + + QString addPageMethod; + QString script; + QString baseClass; + bool isContainer; + }; + void clear(); bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value); @@ -107,7 +118,6 @@ public: #ifndef QT_FORMBUILDER_NO_SCRIPT QFormScriptRunner &formScriptRunner(); - void storeCustomWidgetScript(const QString &className, const QString &script); QString customWidgetScript(const QString &className) const; #endif @@ -123,11 +133,10 @@ public: static QFormBuilderExtra *instance(const QAbstractFormBuilder *afb); static void removeInstance(const QAbstractFormBuilder *afb); - void storeCustomWidgetAddPageMethod(const QString &className, const QString &ct); + void storeCustomWidgetData(const QString &className, const DomCustomWidget *d); QString customWidgetAddPageMethod(const QString &className) const; - - void storeCustomWidgetBaseClass(const QString &className, const QString &baseClassName); QString customWidgetBaseClass(const QString &className) const; + bool isCustomWidgetContainer(const QString &className) const; // --- Hash used in creating button groups on demand. Store a map of name and pair of dom group and real group void registerButtonGroups(const DomButtonGroups *groups); @@ -169,13 +178,9 @@ private: #ifndef QT_FORMBUILDER_NO_SCRIPT QFormScriptRunner m_FormScriptRunner; - - typedef QHash<QString, QString> CustomWidgetScriptHash; - CustomWidgetScriptHash m_customWidgetScriptHash; #endif - QHash<QString, QString> m_customWidgetAddPageMethodHash; - QHash<QString, QString> m_customWidgetBaseClassHash; + QHash<QString, CustomWidgetData> m_customWidgetDataHash; ButtonGroupHash m_buttonGroups; diff --git a/tools/designer/translations/translations.pro b/tools/designer/translations/translations.pro index 2323882..03c1415 100644 --- a/tools/designer/translations/translations.pro +++ b/tools/designer/translations/translations.pro @@ -130,6 +130,7 @@ HEADERS += ../../shared/findwidget/abstractfindwidget.h \ TR_DIR = $$PWD/../../../translations TRANSLATIONS = \ $$TR_DIR/designer_de.ts \ + $$TR_DIR/designer_fr.ts \ $$TR_DIR/designer_ja.ts \ $$TR_DIR/designer_pl.ts \ $$TR_DIR/designer_ru.ts \ diff --git a/tools/linguist/lrelease/lrelease.pro b/tools/linguist/lrelease/lrelease.pro index 01091b3..e4c18ee 100644 --- a/tools/linguist/lrelease/lrelease.pro +++ b/tools/linguist/lrelease/lrelease.pro @@ -2,21 +2,14 @@ TEMPLATE = app TARGET = lrelease DESTDIR = ../../../bin -QT -= gui - -CONFIG += qt warn_on console -CONFIG -= app_bundle - -build_all:!build_pass { - CONFIG -= build_all - CONFIG += release -} - DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII SOURCES += main.cpp +include(../../../src/tools/bootstrap/bootstrap.pri) include(../shared/formats.pri) include(../shared/proparser.pri) +win32-msvc*:LIBS += advapi32.lib # for qsettings_win.cpp + target.path=$$[QT_INSTALL_BINS] INSTALLS += target diff --git a/tools/linguist/lrelease/main.cpp b/tools/linguist/lrelease/main.cpp index 742c2e6..c45459a 100644 --- a/tools/linguist/lrelease/main.cpp +++ b/tools/linguist/lrelease/main.cpp @@ -42,7 +42,10 @@ #include "translator.h" #include "proreader.h" +#ifndef QT_BOOTSTRAPPED #include <QtCore/QCoreApplication> +#include <QtCore/QTranslator> +#endif #include <QtCore/QDebug> #include <QtCore/QDir> #include <QtCore/QFile> @@ -51,7 +54,14 @@ #include <QtCore/QString> #include <QtCore/QStringList> #include <QtCore/QTextStream> -#include <QtCore/QTranslator> + +#ifdef QT_BOOTSTRAPPED +static void initBinaryDir( +#ifndef Q_OS_WIN + const char *argv0 +#endif + ); +#endif static void printOut(const QString & out) { @@ -157,11 +167,18 @@ static bool releaseTsFile(const QString& tsFileName, int main(int argc, char **argv) { +#ifdef QT_BOOTSTRAPPED + initBinaryDir( +#ifndef Q_OS_WIN + argv[0] +#endif + ); +#else QCoreApplication app(argc, argv); - QStringList args = app.arguments(); QTranslator translator; if (translator.load(QLatin1String("lrelease_") + QLocale::system().name())) app.installTranslator(&translator); +#endif ConversionData cd; cd.m_verbose = true; // the default is true starting with Qt 4.2 @@ -171,50 +188,50 @@ int main(int argc, char **argv) QString outputFile; for (int i = 1; i < argc; ++i) { - if (args[i] == QLatin1String("-compress")) { + if (!strcmp(argv[i], "-compress")) { cd.m_saveMode = SaveStripped; continue; - } else if (args[i] == QLatin1String("-idbased")) { + } else if (!strcmp(argv[i], "-idbased")) { cd.m_idBased = true; continue; - } else if (args[i] == QLatin1String("-nocompress")) { + } else if (!strcmp(argv[i], "-nocompress")) { cd.m_saveMode = SaveEverything; continue; - } else if (args[i] == QLatin1String("-removeidentical")) { + } else if (!strcmp(argv[i], "-removeidentical")) { removeIdentical = true; continue; - } else if (args[i] == QLatin1String("-nounfinished")) { + } else if (!strcmp(argv[i], "-nounfinished")) { cd.m_ignoreUnfinished = true; continue; - } else if (args[i] == QLatin1String("-markuntranslated")) { + } else if (!strcmp(argv[i], "-markuntranslated")) { if (i == argc - 1) { printUsage(); return 1; } - cd.m_unTrPrefix = args[++i]; - } else if (args[i] == QLatin1String("-silent")) { + cd.m_unTrPrefix = QString::fromLocal8Bit(argv[++i]); + } else if (!strcmp(argv[i], "-silent")) { cd.m_verbose = false; continue; - } else if (args[i] == QLatin1String("-verbose")) { + } else if (!strcmp(argv[i], "-verbose")) { cd.m_verbose = true; continue; - } else if (args[i] == QLatin1String("-version")) { + } else if (!strcmp(argv[i], "-version")) { printOut(QCoreApplication::tr( "lrelease version %1\n").arg(QLatin1String(QT_VERSION_STR)) ); return 0; - } else if (args[i] == QLatin1String("-qm")) { + } else if (!strcmp(argv[i], "-qm")) { if (i == argc - 1) { printUsage(); return 1; } - outputFile = args[++i]; - } else if (args[i] == QLatin1String("-help")) { + outputFile = QString::fromLocal8Bit(argv[++i]); + } else if (!strcmp(argv[i], "-help")) { printUsage(); return 0; - } else if (args[i].startsWith(QLatin1Char('-'))) { + } else if (argv[i][0] == '-') { printUsage(); return 1; } else { - inputFiles << args[i]; + inputFiles << QString::fromLocal8Bit(argv[i]); } } @@ -261,3 +278,79 @@ int main(int argc, char **argv) return 0; } + +#ifdef QT_BOOTSTRAPPED + +#ifdef Q_OS_WIN +# include <windows.h> +#endif + +static QString binDir; + +static void initBinaryDir( +#ifndef Q_OS_WIN + const char *_argv0 +#endif + ) +{ +#ifdef Q_OS_WIN + wchar_t module_name[MAX_PATH]; + GetModuleFileName(0, module_name, MAX_PATH); + QFileInfo filePath = QString::fromWCharArray(module_name); + binDir = filePath.filePath(); +#else + QString argv0 = QFile::decodeName(QByteArray(_argv0)); + QString absPath; + + if (!argv0.isEmpty() && argv0.at(0) == QLatin1Char('/')) { + /* + If argv0 starts with a slash, it is already an absolute + file path. + */ + absPath = argv0; + } else if (argv0.contains(QLatin1Char('/'))) { + /* + If argv0 contains one or more slashes, it is a file path + relative to the current directory. + */ + absPath = QDir::current().absoluteFilePath(argv0); + } else { + /* + Otherwise, the file path has to be determined using the + PATH environment variable. + */ + QByteArray pEnv = qgetenv("PATH"); + QDir currentDir = QDir::current(); + QStringList paths = QString::fromLocal8Bit(pEnv.constData()).split(QLatin1String(":")); + for (QStringList::const_iterator p = paths.constBegin(); p != paths.constEnd(); ++p) { + if ((*p).isEmpty()) + continue; + QString candidate = currentDir.absoluteFilePath(*p + QLatin1Char('/') + argv0); + QFileInfo candidate_fi(candidate); + if (candidate_fi.exists() && !candidate_fi.isDir()) { + binDir = candidate_fi.canonicalPath(); + return; + } + } + return; + } + + QFileInfo fi(absPath); + if (fi.exists()) + binDir = fi.canonicalPath(); +#endif +} + +QT_BEGIN_NAMESPACE + +// The name is hard-coded in QLibraryInfo +QString qmake_libraryInfoFile() +{ + if (binDir.isEmpty()) + return QString(); + return QDir(binDir).filePath(QString::fromLatin1("qt.conf")); +} + +QT_END_NAMESPACE + +#endif // QT_BOOTSTRAPPED diff --git a/tools/linguist/phrasebooks/french.qph b/tools/linguist/phrasebooks/french.qph index a34effe..d710abd 100644 --- a/tools/linguist/phrasebooks/french.qph +++ b/tools/linguist/phrasebooks/french.qph @@ -1351,8 +1351,8 @@ <target>Impossible de créer le répertoire : %1</target> </phrase> <phrase> - <source>&Case sensitive</source> - <target>&Sensible à la casse</target> + <source></source> + <target></target> </phrase> <phrase> <source>Whole &words</source> @@ -1366,4 +1366,40 @@ <source>Fonts</source> <target>Polices</target> </phrase> +<phrase> + <source>Insert</source> + <target>Insérer</target> +</phrase> +<phrase> + <source>Size</source> + <target>Taille</target> +</phrase> +<phrase> + <source>List View</source> + <target>Affichage liste</target> +</phrase> +<phrase> + <source>Read-only</source> + <target>Lecture seule</target> +</phrase> +<phrase> + <source>Minimize</source> + <target>Réduire</target> +</phrase> +<phrase> + <source>Maximize</source> + <target>Maximiser</target> +</phrase> +<phrase> + <source>Retry</source> + <target>Réessayer</target> +</phrase> +<phrase> + <source>Dock</source> + <target>Attacher</target> +</phrase> +<phrase> + <source>&Redo</source> + <target>&Rétablir</target> +</phrase> </QPH> diff --git a/tools/linguist/shared/proparserutils.h b/tools/linguist/shared/proparserutils.h index 9a83733..1ed3d6c 100644 --- a/tools/linguist/shared/proparserutils.h +++ b/tools/linguist/shared/proparserutils.h @@ -43,10 +43,35 @@ #define PROPARSERUTILS_H #include <QtCore/QDir> +#ifndef QT_BOOTSTRAPPED #include <QtCore/QLibraryInfo> +#endif QT_BEGIN_NAMESPACE +#ifdef QT_BOOTSTRAPPED +// this is a stripped down version of the one found in QtCore +class QLibraryInfo +{ +public: + enum LibraryLocation + { + PrefixPath, + DocumentationPath, + HeadersPath, + LibrariesPath, + BinariesPath, + PluginsPath, + DataPath, + TranslationsPath, + SettingsPath, + DemosPath, + ExamplesPath + }; + static QString location(LibraryLocation); +}; +#endif + // Pre- and postcondition macros #define PRE(cond) do {if (!(cond))qt_assert(#cond,__FILE__,__LINE__);} while (0) #define POST(cond) do {if (!(cond))qt_assert(#cond,__FILE__,__LINE__);} while (0) diff --git a/tools/linguist/shared/qm.cpp b/tools/linguist/shared/qm.cpp index 99aedef..e4c26bc 100644 --- a/tools/linguist/shared/qm.cpp +++ b/tools/linguist/shared/qm.cpp @@ -41,7 +41,9 @@ #include "translator.h" +#ifndef QT_BOOTSTRAPPED #include <QtCore/QCoreApplication> +#endif #include <QtCore/QDebug> #include <QtCore/QDir> #include <QtCore/QFile> diff --git a/tools/linguist/shared/translator.cpp b/tools/linguist/shared/translator.cpp index bc27daf..05fc6e5 100644 --- a/tools/linguist/shared/translator.cpp +++ b/tools/linguist/shared/translator.cpp @@ -56,6 +56,16 @@ QT_BEGIN_NAMESPACE +#ifdef QT_BOOTSTRAPPED +QString QObject::tr(const char *sourceText, const char *, int n) +{ + QString ret = QString::fromLatin1(sourceText); + if (n >= 0) + ret.replace(QLatin1String("%n"), QString::number(n)); + return ret; +} +#endif + Translator::Translator() : m_codecName("ISO-8859-1"), m_locationsType(AbsoluteLocations) diff --git a/tools/linguist/shared/translator.h b/tools/linguist/shared/translator.h index eec704a..f29317b 100644 --- a/tools/linguist/shared/translator.h +++ b/tools/linguist/shared/translator.h @@ -54,6 +54,18 @@ QT_BEGIN_NAMESPACE +#ifdef QT_BOOTSTRAPPED +struct QObject { + static QString tr(const char *sourceText, const char * = 0, int n = -1); +}; +struct QCoreApplication : public QObject { + enum Encoding { CodecForTr }; + static QString translate(const char *, const char *sourceText, const char * = 0, + Encoding = CodecForTr, int n = -1) + { return tr(sourceText, 0, n); } +}; +#endif + class QIODevice; // A struct of "interesting" data passed to and from the load and save routines diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 462a66f..8711c6b 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -2300,7 +2300,8 @@ void HtmlGenerator::generateCompactList(const Node *relative, << " </b>"; } out() << "</td>\n"; - + + out() << "<td>"; if ((currentParagraphNo[i] < NumParagraphs) && !paragraphName[currentParagraphNo[i]].isEmpty()) { NodeMap::Iterator it; @@ -2308,7 +2309,6 @@ void HtmlGenerator::generateCompactList(const Node *relative, for (j = 0; j < currentOffsetInParagraph[i]; j++) ++it; - out() << "<td>"; // Previously, we used generateFullName() for this, but we // require some special formatting. out() << "<a href=\"" @@ -2322,8 +2322,8 @@ void HtmlGenerator::generateCompactList(const Node *relative, generateFullName(it.value()->parent(), relative, marker); out() << ")"; } - out() << "</td>\n"; - } + } + out() << "</td>\n"; currentOffset[i]++; currentOffsetInParagraph[i]++; diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf index 8c039eb..7a4934f 100644 --- a/tools/qdoc3/test/qt-html-templates.qdocconf +++ b/tools/qdoc3/test/qt-html-templates.qdocconf @@ -15,16 +15,6 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0 " <a href=\"overviews.html\">" \ "<font color=\"#004faf\">Overviews</font></a>" \ "</td>" \ - "<td class=\"searchBar\" align=\"right\" valign=\"center\">" \ - "<form action=\"http://www.google.com/cse\" id=\"cse-search-box\">" \ - "<div>" \ - "<input type=\"hidden\" name=\"cx\" value=\"000136343326384750312:dhbxnqlakyu\" />" \ - "<input type=\"hidden\" name=\"ie\" value=\"UTF-8\" />" \ - "<input type=\"text\" name=\"q\" size=\"31\" />" \ - "<input type=\"submit\" name=\"sa\" value=\"Search\" />" \ - "</div>" \ - "</form>" \ - "</td>\n" \ "</tr></table>" HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \ @@ -32,10 +22,4 @@ HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \ "<td width=\"40%\" align=\"left\">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \ "<td width=\"20%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \ "<td width=\"40%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \ - \ - "<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>" \ - "<script type=\"text/javascript\">google.load(\"elements\", \"1\", {packages: \"transliteration\"});</script>" \ - "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/t13n?form=cse-search-box&t13n_langs=en\"></script>" \ - \ - "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en\"></script>"\ "</tr></table></div></address>" diff --git a/tools/qttracereplay/main.cpp b/tools/qttracereplay/main.cpp index 7261082..4760c43 100644 --- a/tools/qttracereplay/main.cpp +++ b/tools/qttracereplay/main.cpp @@ -177,6 +177,12 @@ int main(int argc, char **argv) return 1; } + QFile file(argv[1]); + if (!file.exists()) { + printf("%s does not exist\n", argv[1]); + return 1; + } + ReplayWidget *widget = new ReplayWidget(argv[1]); if (!widget->updates.isEmpty()) { diff --git a/translations/assistant_fr.ts b/translations/assistant_fr.ts index 9c5d651..4c6c5a0 100644 --- a/translations/assistant_fr.ts +++ b/translations/assistant_fr.ts @@ -39,12 +39,12 @@ <message> <location/> <source>Bookmark:</source> - <translation>Signet :</translation> + <translation>Signet :</translation> </message> <message> <location/> <source>Add in Folder:</source> - <translation>Ajouter dans le dossier :</translation> + <translation>Ajouter dans le dossier :</translation> </message> <message> <location/> @@ -91,7 +91,7 @@ <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>Vous allez supprimer un dossier, ceci va aussi<br>supprimer son contenu. Voulez-vous continuer?</translation> + <translation>Vous allez supprimer un dossier, ceci va aussi<br>supprimer son contenu. Voulez-vous continuer ?</translation> </message> <message> <location line="+143"/> @@ -135,7 +135,7 @@ <message> <location line="+38"/> <source>Filter:</source> - <translation>Filtre :</translation> + <translation>Filtre :</translation> </message> <message> <location line="+24"/> @@ -220,7 +220,7 @@ <message> <location/> <source>Filter Name:</source> - <translation>Nom du filtre :</translation> + <translation>Nom du filtre :</translation> </message> </context> <context> @@ -325,7 +325,7 @@ <message> <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/> <source>&Look for:</source> - <translation>&Rechercher :</translation> + <translation>&Rechercher :</translation> </message> <message> <location line="+68"/> @@ -349,7 +349,7 @@ <message> <location/> <source>Available Documentation:</source> - <translation>Documentation disponible :</translation> + <translation>Documentation disponible :</translation> </message> <message> <location/> @@ -369,7 +369,7 @@ <message> <location/> <source>Installation Path:</source> - <translation>Chemin d'installation :</translation> + <translation>Chemin d'installation :</translation> </message> <message> <location/> @@ -396,12 +396,12 @@ <message> <location line="-90"/> <source>The file %1 already exists. Do you want to overwrite it?</source> - <translation>Le fichier %1 existe déjà. Voulez-vous l'écraser?</translation> + <translation>Le fichier %1 existe déjà. Voulez-vous l'écraser ?</translation> </message> <message> <location line="+11"/> <source>Unable to save the file %1: %2.</source> - <translation>Impossible de sauver le fichier %1 : %2.</translation> + <translation>Impossible de sauver le fichier %1 : %2.</translation> </message> <message> <location line="+8"/> @@ -413,17 +413,17 @@ <location line="+42"/> <location line="+38"/> <source>Download failed: %1.</source> - <translation>Échec du téléchargement : %1.</translation> + <translation>Échec du téléchargement : %1.</translation> </message> <message> <location line="-70"/> <source>Documentation info file is corrupt!</source> - <translation>Le fichier d'information de documentation est corrompu!</translation> + <translation>Le fichier d'information de documentation est corrompu !</translation> </message> <message> <location line="+37"/> <source>Download failed: Downloaded file is corrupted.</source> - <translation>Échec du téléchargement : le fichier téléchargé est corrompu.</translation> + <translation>Échec du téléchargement : le fichier téléchargé est corrompu.</translation> </message> <message> <location line="+2"/> @@ -434,7 +434,7 @@ <location line="+22"/> <source>Error while installing documentation: %1</source> - <translation>Erreur durant l'installation de la documentation : + <translation>Erreur durant l'installation de la documentation : %1</translation> </message> </context> @@ -599,7 +599,7 @@ <message> <location line="+2"/> <source>&Go</source> - <translation>&Aller</translation> + <translation>A&ller</translation> </message> <message> <location line="+1"/> @@ -654,7 +654,7 @@ <message> <location line="+3"/> <source>&Bookmarks</source> - <translation>&Signets</translation> + <translation>Si&gnets</translation> </message> <message> <location line="+1"/> @@ -669,7 +669,7 @@ <message> <location line="+2"/> <source>&Help</source> - <translation>&Aide</translation> + <translation>Ai&de</translation> </message> <message> <location line="+1"/> @@ -714,7 +714,7 @@ <message> <location line="+2"/> <source>Filtered by:</source> - <translation>Filtre :</translation> + <translation>Filtre :</translation> </message> <message> <location line="+25"/> @@ -724,7 +724,7 @@ <message> <location line="+4"/> <source>Address:</source> - <translation>Adresse :</translation> + <translation>Adresse :</translation> </message> <message> <location line="+114"/> @@ -759,12 +759,12 @@ <message> <location line="+29"/> <source>The namespace %1 is already registered!</source> - <translation>L'espace de nom %1 existe déjà!</translation> + <translation>L'espace de nom %1 existe déjà !</translation> </message> <message> <location line="+8"/> <source>The specified file is not a valid Qt Help File!</source> - <translation>Le fichier spécifié n'est pas un fichier d'aide Qt valide!</translation> + <translation>Le fichier spécifié n'est pas un fichier d'aide Qt valide !</translation> </message> <message> <location line="+23"/> @@ -807,7 +807,7 @@ <message> <location/> <source>Font settings:</source> - <translation>Configuration des polices :</translation> + <translation>Configuration des polices :</translation> </message> <message> <location/> @@ -827,12 +827,12 @@ <message> <location/> <source>Filter:</source> - <translation>Filtre :</translation> + <translation>Filtre :</translation> </message> <message> <location/> <source>Attributes:</source> - <translation>Attributs :</translation> + <translation>Attributs :</translation> </message> <message> <location/> @@ -858,7 +858,7 @@ <location/> <source>Registered Documentation:</source> <translatorcomment>documentation enregistrée ? ← je préfère référencée pour les deux...</translatorcomment> - <translation>Documentation référencée :</translation> + <translation>Documentation référencée :</translation> </message> <message> <location/> @@ -873,7 +873,7 @@ <message> <location/> <source>On help start:</source> - <translation>Au démarrage :</translation> + <translation>Au démarrage :</translation> </message> <message> <location/> @@ -916,58 +916,58 @@ <message> <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/> <source>The specified collection file does not exist!</source> - <translation>Le fichier de collection spécifié n'existe pas!</translation> + <translation>Le fichier de collection spécifié n'existe pas !</translation> </message> <message> <location line="+4"/> <source>Missing collection file!</source> - <translation>Fichier de collection manquant!</translation> + <translation>Fichier de collection manquant !</translation> </message> <message> <location line="+9"/> <source>Invalid URL!</source> - <translation>URL invalide!</translation> + <translation>URL invalide !</translation> </message> <message> <location line="+4"/> <source>Missing URL!</source> - <translation>URL manquante!</translation> + <translation>URL manquante !</translation> </message> <message> <location line="+17"/> <location line="+19"/> <location line="+19"/> <source>Unknown widget: %1</source> - <translation>Widget inconnu : %1</translation> + <translation>Widget inconnu : %1</translation> </message> <message> <location line="-34"/> <location line="+19"/> <location line="+19"/> <source>Missing widget!</source> - <translation>Widget manquant!</translation> + <translation>Widget manquant !</translation> </message> <message> <location line="+7"/> <location line="+12"/> <source>The specified Qt help file does not exist!</source> - <translation>Le fichier d'aide Qt spécifié n'existe pas!</translation> + <translation>Le fichier d'aide Qt spécifié n'existe pas !</translation> </message> <message> <location line="-7"/> <location line="+12"/> <source>Missing help file!</source> - <translation>Fichier d'aide manquant!</translation> + <translation>Fichier d'aide manquant !</translation> </message> <message> <location line="+7"/> <source>Missing filter argument!</source> - <translation>Argument de filtre manquant!</translation> + <translation>Argument de filtre manquant !</translation> </message> <message> <location line="+12"/> <source>Unknown option: %1</source> - <translation>Option inconnue : %1</translation> + <translation>Option inconnue : %1</translation> </message> <message> <location line="+30"/> @@ -985,7 +985,7 @@ Reason: <translation>Impossible d'enregistrer le fichier de documentation %1 -Raison : +Raison : %2</translation> </message> <message> @@ -1008,18 +1008,18 @@ Reason: <translation>Impossible d'enregistrer le fichier de documentation %1 -Raison : +Raison : %2</translation> </message> <message> <location line="+37"/> <source>Cannot load sqlite database driver!</source> - <translation>Impossible de charger le driver de la base de données sqlite!</translation> + <translation>Impossible de charger le driver de la base de données sqlite !</translation> </message> <message> <location line="+9"/> <source>The specified collection file could not be read!</source> - <translation>Le fichier de collection spécifié ne peut pas être lu!</translation> + <translation>Le fichier de collection spécifié ne peut pas être lu !</translation> </message> </context> <context> @@ -1032,7 +1032,7 @@ Raison : <message> <location line="+1"/> <source>Received Command: %1 %2</source> - <translation>Commande reçue : %1 %2</translation> + <translation>Commande reçue : %1 %2</translation> </message> </context> <context> @@ -1083,7 +1083,7 @@ Raison : <message> <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/> <source>Choose a topic for <b>%1</b>:</source> - <translation>Choisir le domaine pour <b>%1</b> :</translation> + <translation>Choisir le domaine pour <b>%1</b> :</translation> </message> </context> </TS> diff --git a/translations/designer_fr.ts b/translations/designer_fr.ts new file mode 100644 index 0000000..7c18290 --- /dev/null +++ b/translations/designer_fr.ts @@ -0,0 +1,7046 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="fr_FR"> +<context> + <name>AbstractFindWidget</name> + <message> + <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="127"/> + <source>&Previous</source> + <translation>&Précédent</translation> + </message> + <message> + <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="135"/> + <source>&Next</source> + <translation>&Suivant</translation> + </message> + <message> + <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="159"/> + <source>&Case sensitive</source> + <translation>&Sensible à la casse</translation> + </message> + <message> + <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="167"/> + <source>Whole &words</source> + <translation>M&ots complets</translation> + </message> + <message> + <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="179"/> + <source><img src=":/trolltech/shared/images/wrap.png">&nbsp;Search wrapped</source> + <translation><img src=":/trolltech/shared/images/wrap.png">&nbsp;Recherche à partir du début</translation> + </message> +</context> +<context> + <name>AddLinkDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/addlinkdialog.ui" line="5"/> + <source>Insert Link</source> + <translation>Insérer lien</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/addlinkdialog.ui" line="19"/> + <source>Title:</source> + <translation>Titre :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/addlinkdialog.ui" line="36"/> + <source>URL:</source> + <translation>URL :</translation> + </message> +</context> +<context> + <name>AppFontDialog</name> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="418"/> + <source>Additional Fonts</source> + <translation>Polices additionnelles</translation> + </message> +</context> +<context> + <name>AppFontManager</name> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="151"/> + <source>'%1' is not a file.</source> + <translation>'%1' n'est pas un fichier.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="155"/> + <source>The font file '%1' does not have read permissions.</source> + <translation>Le fichier de la police '%1' n'a pas les permissions de lecture.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="163"/> + <source>The font file '%1' is already loaded.</source> + <translation>Le fichier de la police '%1' est déjà chargé.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="170"/> + <source>The font file '%1' could not be loaded.</source> + <translatorcomment>passé composé plutôt</translatorcomment> + <translation>Le fichier de la police '%1' n'a pas pu chargé.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="187"/> + <source>'%1' is not a valid font id.</source> + <translation>'%1' n'est pas un identifiant de police valide.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="198"/> + <source>There is no loaded font matching the id '%1'.</source> + <translation>Il n'y a pas de police chargée correspondant à l'identifiant '%1'.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="213"/> + <source>The font '%1' (%2) could not be unloaded.</source> + <translation>La police '%1' (%2) ne peut pas être déchargée.</translation> + </message> +</context> +<context> + <name>AppFontWidget</name> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="239"/> + <source>Fonts</source> + <translation>Polices</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="297"/> + <source>Add font files</source> + <translation>Ajouter des fichiers de polices</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="302"/> + <source>Remove current font file</source> + <translation>Retirer le fichier de police courant</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="306"/> + <source>Remove all font files</source> + <translation>Retirer tous les fichiers de polices</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="325"/> + <source>Add Font Files</source> + <translation>Ajouter des fichiers de polices</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="326"/> + <source>Font files (*.ttf)</source> + <translation>Fichier de polices (*.ttf)</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="339"/> + <source>Error Adding Fonts</source> + <translation>Erreur dans l'ajout de polices</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="363"/> + <source>Error Removing Fonts</source> + <translatorcomment>s/de/des/ pour être cohérent avec le suivant...</translatorcomment> + <translation>Erreur lors de la suppression des polices</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="385"/> + <source>Remove Fonts</source> + <translation>Retirer les polices</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="385"/> + <source>Would you like to remove all fonts?</source> + <translation>Voulez-vous supprimer toutes les polices ?</translation> + </message> +</context> +<context> + <name>AppearanceOptionsWidget</name> + <message> + <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.ui" line="14"/> + <source>Form</source> + <translation>Formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.ui" line="20"/> + <source>User Interface Mode</source> + <translation>Mode de l'interface utilisateur</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>Impossible d'envoyer la requête : Assistant ne répond pas.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/assistantclient.cpp" line="139"/> + <source>The binary '%1' does not exist.</source> + <translation>Le binaire '%1' n'existe pas.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/assistantclient.cpp" line="148"/> + <source>Unable to launch assistant (%1).</source> + <translation>Impossible de démarrer Assistant (%1).</translation> + </message> +</context> +<context> + <name>BrushPropertyManager</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="52"/> + <source>No brush</source> + <translation>Pas de pinceau</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="53"/> + <source>Solid</source> + <translatorcomment>c'est plutôt continu ou "trait continu" pour moi</translatorcomment> + <translation>Trait continu</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="54"/> + <source>Dense 1</source> + <translation>Dense 1</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="55"/> + <source>Dense 2</source> + <translation>Dense 2</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="56"/> + <source>Dense 3</source> + <translation>Dense 3</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="57"/> + <source>Dense 4</source> + <translation>Dense 4</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="58"/> + <source>Dense 5</source> + <translation>Dense 5</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="59"/> + <source>Dense 6</source> + <translation>Dense 6</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="60"/> + <source>Dense 7</source> + <translation>Dense 7</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="61"/> + <source>Horizontal</source> + <translation>Horizontal</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="62"/> + <source>Vertical</source> + <translation>Vertical</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="63"/> + <source>Cross</source> + <translation>Croix</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="64"/> + <source>Backward diagonal</source> + <translation>Diagonale arrière</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="65"/> + <source>Forward diagonal</source> + <translation>Diagonale avant</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="66"/> + <source>Crossing diagonal</source> + <translation>Diagonale croisée</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="149"/> + <source>Style</source> + <translation>Style</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="160"/> + <source>Color</source> + <translation>Couleur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="265"/> + <source>[%1, %2]</source> + <translation>[%1, %2]</translation> + </message> +</context> +<context> + <name>Command</name> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="208"/> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="466"/> + <source>Change signal</source> + <translation>Modifier le signal</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="210"/> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="478"/> + <source>Change slot</source> + <translation>Modifier le slot</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="258"/> + <source>Change signal-slot connection</source> + <translation>Modfier la connection signal-slot</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="492"/> + <source>Change sender</source> + <translatorcomment>expéditeur/source</translatorcomment> + <translation>Modifier l'envoyeur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="510"/> + <source>Change receiver</source> + <translatorcomment>destinataire++/cible?</translatorcomment> + <translation>Modifier le destinataire</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="221"/> + <source>Create button group</source> + <translation>Créer un groupe de boutons</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="248"/> + <source>Break button group</source> + <translation>Dissocier le groupe de bouton</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="257"/> + <source>Break button group '%1'</source> + <translation>Dissossier le groupe de bouton '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="274"/> + <source>Add buttons to group</source> + <translation>Ajouter les boutons au groupe</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="282"/> + <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>Ajouter '%1' à '%2'</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="296"/> + <source>Remove buttons from group</source> + <translation>Retirer les boutons du groupe</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="311"/> + <source>Remove '%1' from '%2'</source> + <extracomment>Command description for removing buttons from a QButtonGroup</extracomment> + <translation>Retirer '%1' de '%2'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="143"/> + <source>Add connection</source> + <translation>Ajouter une connexion</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="197"/> + <source>Adjust connection</source> + <translation>Réajuster les connexions</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="216"/> + <source>Delete connections</source> + <translation>Supprimer les connexions</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="274"/> + <source>Change source</source> + <translation>Modifier la source</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="276"/> + <source>Change target</source> + <translation>Modifier la cible</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>Transformer %1/'%2' en %3</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="149"/> + <source>Insert '%1'</source> + <translation>Insérer '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="282"/> + <source>Change Z-order of '%1'</source> + <translatorcomment>l'ordre de '%1' sur l'axe z? profondeur ?</translatorcomment> + <translation>Modifier la profondeur de '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="316"/> + <source>Raise '%1'</source> + <translation>Élever '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="349"/> + <source>Lower '%1'</source> + <translation>Abaisser '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="462"/> + <source>Delete '%1'</source> + <translation>Supprimer '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="581"/> + <source>Reparent '%1'</source> + <translation>Reparenter '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="634"/> + <source>Promote to custom widget</source> + <translation>Promouvoir en widget personnalisé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="676"/> + <source>Demote from custom widget</source> + <translation>Annuler la promotion en widget personnalisé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="755"/> + <source>Lay out using grid</source> + <translation>Mettre en page à l'aide d'une grille</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="758"/> + <source>Lay out vertically</source> + <translation>Mettre en page verticalement</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="761"/> + <source>Lay out horizontaly</source> + <translation>Mettre en page horizontalement</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="802"/> + <source>Break layout</source> + <translation>Casser la mise en page</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="907"/> + <source>Simplify Grid Layout</source> + <translation>Simplifier la mise en page en grille</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1042"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1277"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1355"/> + <source>Move Page</source> + <translation>Déplacer la page</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1076"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1199"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1387"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2053"/> + <source>Delete Page</source> + <translation>Supprimer la page</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1114"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1237"/> + <source>Page</source> + <translation>Page</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1119"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1242"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1428"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2095"/> + <source>Insert Page</source> + <translation>Insérer une page</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1448"/> + <source>Change Tab order</source> + <translation>Modifier l'ordre des tabulations</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1476"/> + <source>Create Menu Bar</source> + <translation>Créer une barre de menu</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1520"/> + <source>Delete Menu Bar</source> + <translation>Supprimer la barre de menu</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1567"/> + <source>Create Status Bar</source> + <translation>Créer une barre d'état</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1609"/> + <source>Delete Status Bar</source> + <translation>Supprimer la barre d'état</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1654"/> + <source>Add Tool Bar</source> + <translation>Ajouter une barre d'outil</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1713"/> + <source>Add Dock Window</source> + <translation>Ajouter une fenêtre ancrable</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1766"/> + <source>Adjust Size of '%1'</source> + <translation>Ajuster les dimensions de '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1823"/> + <source>Change Form Layout Item Geometry</source> + <translation>Modifier la géométrie de l'élément de formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="1918"/> + <source>Change Layout Item Geometry</source> + <translation>Modifier la géométrie de l'élément de mise en page</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2056"/> + <source>Delete Subwindow</source> + <translation>Supprimer la sous-fenêtre</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2097"/> + <source>page</source> + <translation>page</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2100"/> + <source>Insert Subwindow</source> + <translation>Insérer une sous-fenêtre</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2102"/> + <source>subwindow</source> + <translation>sous-fenêtre</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2103"/> + <source>Subwindow</source> + <translation>Sous fenêtre</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2494"/> + <source>Change Table Contents</source> + <translation>Modifier le contenu de la table</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2601"/> + <source>Change Tree Contents</source> + <translation>Modifier le contenu de l'arbre</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2675"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2821"/> + <source>Add action</source> + <translation>Ajouter une action</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2701"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2827"/> + <source>Remove action</source> + <translation>Supprimer l'action</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2880"/> + <source>Add menu</source> + <translation>Ajouter un menu</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2886"/> + <source>Remove menu</source> + <translation>Supprimer le menu</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2892"/> + <source>Create submenu</source> + <translation>Créer une sous-fenêtre</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="2923"/> + <source>Delete Tool Bar</source> + <translation>Supprimer la barre d'outils</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>Modifier la mise en page de '%1' de %2 à %3</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="1195"/> + <source>Set action text</source> + <translation>Définir le texte de l'action</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="1198"/> + <source>Insert action</source> + <translation>Insérer action</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="1287"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="907"/> + <source>Move action</source> + <translation>Déplacer action</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="483"/> + <source>Change Title</source> + <translation>Modifier le titre</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="485"/> + <source>Insert Menu</source> + <translation>Insérer menu</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="1213"/> + <source>Changed '%1' of '%2'</source> + <translation>Modifier '%1' de '%2'</translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="1216"/> + <source>Changed '%1' of %n objects</source> + <translation> + <numerusform>Modifier '%1' de %n objet</numerusform> + <numerusform>Modifier '%1' de %n objets</numerusform> + </translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="1292"/> + <source>Reset '%1' of '%2'</source> + <translation>Réinitialiser '%1' de '%2'</translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="1295"/> + <source>Reset '%1' of %n objects</source> + <translation> + <numerusform>Réinitialiser '%1' de %n objet</numerusform> + <numerusform>Réinitialiser '%1' de %n objets</numerusform> + </translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="1384"/> + <source>Add dynamic property '%1' to '%2'</source> + <translation>Ajouter la propriété dynamique '%1' à '%2'</translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="1387"/> + <source>Add dynamic property '%1' to %n objects</source> + <translation> + <numerusform>Ajouter la propriété dynamique '%1' à %n objet</numerusform> + <numerusform>Ajouter la propriété dynamique '%1' à %n objets</numerusform> + </translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="1473"/> + <source>Remove dynamic property '%1' from '%2'</source> + <translation>Supprimer la propriété dynamique '%1' de '%2'</translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="1476"/> + <source>Remove dynamic property '%1' from %n objects</source> + <translation> + <numerusform>Supprimer la propriété dynamique '%1' de %n objet</numerusform> + <numerusform>Supprimer la propriété dynamique '%1' de %n objets</numerusform> + </translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="55"/> + <source>Change script</source> + <translation>Modifier le script</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="202"/> + <source>Change signals/slots</source> + <translation>Modifier signaux/slots</translation> + </message> +</context> +<context> + <name>ConnectDialog</name> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui" line="13"/> + <source>Configure Connection</source> + <translation>Configurer connexion</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui" line="19"/> + <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui" line="59"/> + <source>GroupBox</source> + <translation>GroupBox</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui" line="34"/> + <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui" line="74"/> + <source>Edit...</source> + <translation>Éditer...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui" line="99"/> + <source>Show signals and slots inherited from QWidget</source> + <translation>Afficher les signaux et slots hérités de QWidget</translation> + </message> +</context> +<context> + <name>ConnectionDelegate</name> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="643"/> + <source><object></source> + <translation><objet></translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="661"/> + <source><signal></source> + <translation><signal></translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="661"/> + <source><slot></source> + <translation><slot></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>Standard (96 x 96)</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="71"/> + <source>Greenphone (179 x 185)</source> + <extracomment>Embedded device screen resolution</extracomment> + <translation>Greenphone (179 x 185)</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="73"/> + <source>High (192 x 192)</source> + <extracomment>Embedded device high definition screen resolution</extracomment> + <translatorcomment>"haute resolution" would be missleading</translatorcomment> + <translation>Grand (192 x 192)</translation> + </message> +</context> +<context> + <name>Designer</name> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="449"/> + <source>Qt Designer</source> + <translation>Qt Designer</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="459"/> + <source>This file contains top level spacers.<br>They have <b>NOT</b> been saved into the form.</source> + <translation>Ce fichier contient des ressorts de premier niveau. <br>Ils ne sont <b>PAS</b> sauvegardé dans le formulaire.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="461"/> + <source>Perhaps you forgot to create a layout?</source> + <translation>Peut-être avez-vous oublié de créer un layout ?</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="634"/> + <source>Invalid UI file: The root element <ui> is missing.</source> + <translation>Fichier UI invalide. L'élément racine <ui> est manquant.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="640"/> + <source>An error has occurred while reading the UI file at line %1, column %2: %3</source> + <translation>Une erreur est survenue lors de la lecture du fichier UI à la ligne %1, colonne %2: %3</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="666"/> + <source>This file cannot be read because it was created using %1.</source> + <translation>Ce fichier ne peut pas être lu car il a été créé à l'aide de %1.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="680"/> + <source>This file was created using Designer from Qt-%1 and cannot be read.</source> + <translation>Ce fichier a été créé à l'aide du Designer de Qt-%1 et ne peut être lu.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="710"/> + <source>The converted file could not be read.</source> + <translation>Le fichier converti ne peut pas être lu.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="714"/> + <source>This file was created using Designer from Qt-%1 and will be converted to a new form by Qt Designer.</source> + <translation>Ce fichier a été créé par le Designer de Qt-%1 et sera converti au nouveau format par Qt Designer.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="717"/> + <source>The old form has not been touched, but you will have to save the form under a new name.</source> + <translation>L'ancienne interface n'a pas été modifiée, vous devez sauvergarder l'interface sous un nouveau nom.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="728"/> + <source>This file was created using Designer from Qt-%1 and could not be read: +%2</source> + <translation>Le fichier a été créé à l'aide de Designer de Qt-%1 et ne peut pas être lu : +%2</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="731"/> + <source>Please run it through <b>uic3&nbsp;-convert</b> to convert it to Qt-4's ui format.</source> + <translation>Veuillez le faire passer par <b>uic3&nbsp;-convert</b> pour le convertir au format de fichier de Qt 4.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="762"/> + <source>This file cannot be read because the extra info extension failed to load.</source> + <translation>Ce fichier ne peut pas être lu car les informations d'extension n'ont pu être chargées.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="682"/> + <source>Unable to launch %1.</source> + <translation>Impossible de lancer %1.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="686"/> + <source>%1 timed out.</source> + <translation>%1 est arrivé à échéance.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qsimpleresource.cpp" line="339"/> + <source>Custom Widgets</source> + <translation>Widgets personnalisés</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qsimpleresource.cpp" line="351"/> + <source>Promoted Widgets</source> + <translation>Widgets promus</translation> + </message> +</context> +<context> + <name>DesignerMetaEnum</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="173"/> + <source>%1 is not a valid enumeration value of '%2'.</source> + <translation>%1 n'est pas une valeur d'énumeration valide de '%2'.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="178"/> + <source>'%1' could not be converted to an enumeration value of type '%2'.</source> + <translation>'%1' ne peut pas être converti en une valeur d'énumération de type '%2'.</translation> + </message> +</context> +<context> + <name>DesignerMetaFlags</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="256"/> + <source>'%1' could not be converted to a flag value of type '%2'.</source> + <translation>'%1' ne peut pas être converti en un drapeau de type '%2'.</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>'%1' n'est pas un nombre.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="420"/> + <source>An invalid tag <%1> was encountered.</source> + <translation>La balise invalide <%1> a été rencontré.</translation> + </message> +</context> +<context> + <name>DeviceProfileDialog</name> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui" line="20"/> + <source>&Family</source> + <translation>&Famille</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui" line="33"/> + <source>&Point Size</source> + <translation>&Taille en points</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui" line="46"/> + <source>Style</source> + <translation>Style</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui" line="59"/> + <source>Device DPI</source> + <translation>PPP/DPI de l'appareil</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui" line="69"/> + <source>Name</source> + <translation>Nom</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>Le fichier image '%1' n'a pas pu être chargé.</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="143"/> + <source>The skin directory '%1' does not contain a configuration file.</source> + <translation>Le repertoire de revêtement '%1' ne contient pas un fichier de configuration.</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="148"/> + <source>The skin configuration file '%1' could not be opened.</source> + <translation>Le fichier de configuration de revêtement '%1' ne peut pas être ouvert.</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="154"/> + <source>The skin configuration file '%1' could not be read: %2</source> + <translation>Le fichier de configuration de revêtement '%1' ne peut pas être lu: %2</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="224"/> + <source>Syntax error: %1</source> + <translation>Erreur de syntaxe : %1</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="245"/> + <source>The skin "up" image file '%1' does not exist.</source> + <translation>Le fichier image "up" de revêtement '%1' n'existe pas.</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="255"/> + <source>The skin "down" image file '%1' does not exist.</source> + <translation>Le fichier image "down" de revêtement '%1' n'existe pas.</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="266"/> + <source>The skin "closed" image file '%1' does not exist.</source> + <translation>Le fichier image "closed" de revêtement '%1' n'existe pas.</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="278"/> + <source>The skin cursor image file '%1' does not exist.</source> + <translation>Le fichier image de revêtement '%1' n'existe pas.</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="303"/> + <source>Syntax error in area definition: %1</source> + <translation>Erreur de syntaxe dans la zone de définition : %1</translation> + </message> + <message> + <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="341"/> + <source>Mismatch in number of areas, expected %1, got %2.</source> + <translation>Incohérence dans le nombre de zones, %1 attendu, %2 reçu.</translation> + </message> +</context> +<context> + <name>EmbeddedOptionsControl</name> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="307"/> + <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><html><table><tr><td><b>Police</b></td><td>%1, %2</td></tr><tr><td><b>Style</b></td><td>%3</td></tr><tr><td><b>Résolution</b></td><td>%4 x %5</td></tr></table></html></translation> + </message> +</context> +<context> + <name>EmbeddedOptionsPage</name> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="410"/> + <source>Embedded Design</source> + <extracomment>Tab in preferences dialog</extracomment> + <translation>Design pour appareil mobile</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="420"/> + <source>Device Profiles</source> + <extracomment>EmbeddedOptionsControl group box"</extracomment> + <translation>Profils des appareils</translation> + </message> +</context> +<context> + <name>FontPanel</name> + <message> + <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="63"/> + <source>Font</source> + <translation>Police</translation> + </message> + <message> + <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="74"/> + <source>&Writing system</source> + <translation>&Système d'écriture</translation> + </message> + <message> + <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="77"/> + <source>&Family</source> + <translation>&Famille</translation> + </message> + <message> + <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="81"/> + <source>&Style</source> + <translation>&Style</translation> + </message> + <message> + <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="85"/> + <source>&Point size</source> + <translation>&Taille en points</translation> + </message> +</context> +<context> + <name>FontPropertyManager</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="62"/> + <source>PreferDefault</source> + <translation>PreferDefault</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="63"/> + <source>NoAntialias</source> + <translation>NoAntialias</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="64"/> + <source>PreferAntialias</source> + <translation>PreferAntialias</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="125"/> + <source>Antialiasing</source> + <translation>Antialiasing</translation> + </message> +</context> +<context> + <name>FormBuilder</name> + <message> + <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="359"/> + <source>Invalid stretch value for '%1': '%2'</source> + <extracomment>Parsing layout stretch values</extracomment> + <translation>Valeur d'extension invalide pour '%1' : '%2'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="421"/> + <source>Invalid minimum size for '%1': '%2'</source> + <extracomment>Parsing grid layout minimum size values</extracomment> + <translation>Taille minimum invalide pour '%1' : '%2'</translation> + </message> +</context> +<context> + <name>FormEditorOptionsPage</name> + <message> + <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="91"/> + <source>%1 %</source> + <translation>%1 %</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="95"/> + <source>Preview Zoom</source> + <translation>Zoom de visualisation</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="97"/> + <source>Default Zoom</source> + <translation>Zoom par défaut</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="126"/> + <source>Forms</source> + <extracomment>Tab in preferences dialog</extracomment> + <translation>Formulaires</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="139"/> + <source>Default Grid</source> + <translation>Grille par défaut</translation> + </message> +</context> +<context> + <name>FormLayoutRowDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui" line="6"/> + <source>Add Form Layout Row</source> + <translation>Ajouter une ligne de mise en page au formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui" line="17"/> + <source>&Label text:</source> + <translation>&Texte du label :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui" line="40"/> + <source>Field &type:</source> + <translation>&Type du champ :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui" line="60"/> + <source>&Field name:</source> + <translation>&Nom du champ :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui" line="70"/> + <source>&Buddy:</source> + <translatorcomment>copain c'est un peu beaucoup ptet</translatorcomment> + <translation>&Copain :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui" line="87"/> + <source>&Row:</source> + <translation>&Ligne :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui" line="103"/> + <source>Label &name:</source> + <translation>&Nom du label :</translation> + </message> +</context> +<context> + <name>FormWindow</name> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1701"/> + <source>Unexpected element <%1></source> + <translation>Element inattendu : <%1></translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1708"/> + <source>Error while pasting clipboard contents at line %1, column %2: %3</source> + <translation>Erreur lors du collage du contenu du presse-papier à la ligne %1, colonne %2 : %3</translation> + </message> +</context> +<context> + <name>FormWindowSettings</name> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="54"/> + <source>Form Settings</source> + <translation>Configuration du formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="68"/> + <source>Layout &Default</source> + <translation>Mise en page par &défaut</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="83"/> + <source>&Spacing:</source> + <translation>&Espacements :</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="93"/> + <source>&Margin:</source> + <translation>&Marge :</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="112"/> + <source>&Layout Function</source> + <translation>&Fonction de mise en page</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="133"/> + <source>Ma&rgin:</source> + <translation>Ma&rge :</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="143"/> + <source>Spa&cing:</source> + <translation>Espa&cement :</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="166"/> + <source>&Pixmap Function</source> + <translation>Function de &pixmap</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="219"/> + <source>&Include Hints</source> + <translation>Indication d'&include</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="237"/> + <source>Grid</source> + <translation>Grille</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="244"/> + <source>Embedded Design</source> + <translation>Design pour appareil mobile</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui" line="260"/> + <source>&Author</source> + <translation>&Auteur</translation> + </message> +</context> +<context> + <name>IconSelector</name> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="352"/> + <source>All Pixmaps (</source> + <translation>Tous les pixmaps (</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>XX Icon Selected off</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>Principal</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="125"/> + <source>File</source> + <translation>Fichier</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="126"/> + <source>Edit</source> + <translation>Édition</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="127"/> + <source>Tools</source> + <translation>Outils</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="128"/> + <source>Form</source> + <translation>Formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="135"/> + <source>Qt Designer</source> + <translation>Qt Designer</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>Afficher cette boîte de dialogue au démarrage</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/newform.cpp" line="79"/> + <source>C&reate</source> + <translation>C&réer</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/newform.cpp" line="80"/> + <source>Recent</source> + <translation>Récent</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/newform.cpp" line="83"/> + <source>New Form</source> + <translation>Nouveau formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/newform.cpp" line="112"/> + <source>&Close</source> + <translation>&Fermer</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/newform.cpp" line="115"/> + <source>&Open...</source> + <translation>&Ouvrir...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/newform.cpp" line="119"/> + <source>&Recent Forms</source> + <translation>&Formulaires récents</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/newform.cpp" line="183"/> + <source>Read error</source> + <translation>Erreur de lecture</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/newform.cpp" line="206"/> + <source>A temporary form file could not be created in %1.</source> + <translation>Un fichier temporaire de formulaire n'a pas pu être créé dans %1.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/newform.cpp" line="212"/> + <source>The temporary form file %1 could not be written.</source> + <translation>Le fichier temporaire de formulaire %1 n'a pas pu être écrit.</translation> + </message> +</context> +<context> + <name>ObjectInspectorModel</name> + <message> + <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="360"/> + <source>Object</source> + <translation>Objet</translation> + </message> + <message> + <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="361"/> + <source>Class</source> + <translation>Classe</translation> + </message> + <message> + <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="396"/> + <source>separator</source> + <translation>séparateur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="494"/> + <source><noname></source> + <translation><sans nom></translation> + </message> +</context> +<context> + <name>ObjectNameDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="158"/> + <source>Change Object Name</source> + <translation>Modifier le nom de l'objet</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="162"/> + <source>Object Name</source> + <translation>Nom de l'objet</translation> + </message> +</context> +<context> + <name>PluginDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/plugindialog.ui" line="54"/> + <source>Plugin Information</source> + <translation>Information du plugin</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/plugindialog.ui" line="80"/> + <source>1</source> + <translation>1</translation> + </message> +</context> +<context> + <name>PreferencesDialog</name> + <message> + <location filename="../tools/designer/src/designer/preferencesdialog.ui" line="20"/> + <source>Preferences</source> + <translation>Préférences</translation> + </message> +</context> +<context> + <name>PreviewConfigurationWidget</name> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui" line="5"/> + <source>Form</source> + <translation>Formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui" line="8"/> + <source>Print/Preview Configuration</source> + <translation>Configuration d'impression/prévisualisation</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui" line="17"/> + <source>Style</source> + <translation>Style</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui" line="27"/> + <source>Style sheet</source> + <translation>Feuille de style</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui" line="46"/> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui" line="53"/> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui" line="74"/> + <source>...</source> + <translation>...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui" line="62"/> + <source>Device skin</source> + <translation>Revêtement de l'appareil</translation> + </message> +</context> +<context> + <name>PromotionModel</name> + <message> + <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="112"/> + <source>Not used</source> + <extracomment>Usage of promoted widgets</extracomment> + <translation>Non utilisé</translation> + </message> +</context> +<context> + <name>Q3WizardContainer</name> + <message> + <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="172"/> + <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="177"/> + <source>Page</source> + <translation>Page</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>Élément imprévu <%1></translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="211"/> + <source>An error has occurred while reading the UI file at line %1, column %2: %3</source> + <translation>Une erreur s'est produite lors de la lecture du fichier UI à la ligne %1, colonne %2 : %3</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="217"/> + <source>Invalid UI file: The root element <ui> is missing.</source> + <translation>Fichier UI invalide : l'élément racine <ui> est manquant.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="336"/> + <source>The creation of a widget of the class '%1' failed.</source> + <translation>La création d'un widget de la classe '%1' a échoué.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="632"/> + <source>Attempt to add child that is not of class QWizardPage to QWizard.</source> + <translation>Tentative d'ajout d'enfant qui n'est pas de la classe QWizardPage à QWizard.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="718"/> + <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>Tentative d'ajout d'un layout au widget '%1' (%2) qui a déjà un layout dont le type n'est pas boîte %3. +Ceci indique une incohérence dans le fichier ui.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="862"/> + <source>Empty widget item in %1 '%2'.</source> + <translation>Widget vide dans %1 '%2'.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="1542"/> + <source>Flags property are not supported yet.</source> + <translation>Les propriétés de type drapeau ne sont pas supportées.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="1623"/> + <source>While applying tab stops: The widget '%1' could not be found.</source> + <translation>Lors de l'application des arrêts de tabulation : le widget '%1' ne peut pas être trouvé.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="2531"/> + <source>Invalid QButtonGroup reference '%1' referenced by '%2'.</source> + <translation>Référence invalide '%1' à QButtonGroup, référencé par '%2'.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="3042"/> + <source>This version of the uitools library is linked without script support.</source> + <translation>Cette version de la bibliothèque uitools n'a pas le support des scripts.</translation> + </message> +</context> +<context> + <name>QAxWidgetPlugin</name> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="75"/> + <source>ActiveX control</source> + <translation>Control ActiveX</translation> + </message> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="80"/> + <source>ActiveX control widget</source> + <translation>Widget control ActiveX</translation> + </message> +</context> +<context> + <name>QAxWidgetTaskMenu</name> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="119"/> + <source>Set Control</source> + <translation>Définir le contrôle</translation> + </message> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="120"/> + <source>Reset Control</source> + <translation>Réinitialiser le contrôle</translation> + </message> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="161"/> + <source>Licensed Control</source> + <translation>Contrôle licencié</translation> + </message> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="162"/> + <source>The control requires a design-time license</source> + <translation>Le contrôle requiert une license par interface</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>%1 n'est pas une classe promue.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="148"/> + <source>The base class %1 is invalid.</source> + <translation>La classe de base %1 est invalide.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="155"/> + <source>The class %1 already exists.</source> + <translation>La classe %1 existe déjà.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="164"/> + <source>Promoted Widgets</source> + <translation>Widgets promus</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="290"/> + <source>The class %1 cannot be removed</source> + <translation>La classe %1 ne peut pas être retirée</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="299"/> + <source>The class %1 cannot be removed because it is still referenced.</source> + <translation>La classe %1 ne peut pas être retirée car elle est toujours référencée.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="309"/> + <source>The class %1 cannot be renamed</source> + <translation>La classe %1 ne peut pas être renommée</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="316"/> + <source>The class %1 cannot be renamed to an empty name.</source> + <translation>La classe %1 ne peut pas être renommé avec un nom vide.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="321"/> + <source>There is already a class named %1.</source> + <translation>Une classe existe déjà avec le nom %1.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="350"/> + <source>Cannot set an empty include file.</source> + <translation>Impossible de créer un fichier include vide.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="88"/> + <source>Exception at line %1: %2</source> + <translation>Exception à la ligne %1 : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="124"/> + <source>Unknown error</source> + <translation>Erreur inconnue</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="174"/> + <source>An error occurred while running the script for %1: %2 +Script: %3</source> + <translation>Une erreur s'est produite lors de l'exécution du script de %1 : %2 +Script : %3</translation> + </message> +</context> +<context> + <name>QDesigner</name> + <message> + <location filename="../tools/designer/src/designer/qdesigner.cpp" line="141"/> + <source>%1 - warning</source> + <translation>Avertissement - %1</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner.cpp" line="237"/> + <source>Qt Designer</source> + <translation>Qt Designer</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner.cpp" line="238"/> + <source>This application cannot be used for the Console edition of Qt</source> + <translation>Cette application ne peut pas être utilisée avec l'édition console de Qt</translation> + </message> +</context> +<context> + <name>QDesignerActions</name> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="128"/> + <source>Saved %1.</source> + <translation>%1 sauvé.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="154"/> + <source>%1 already exists. +Do you want to replace it?</source> + <translation>%1 existe déjà. +Voulez-vous le remplacer ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="178"/> + <source>Edit Widgets</source> + <translation>Éditer les widgets</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="179"/> + <source>&New...</source> + <translation>&Nouveau...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="180"/> + <source>&Open...</source> + <translation>&Ouvrir...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="181"/> + <source>&Save</source> + <translation>&Enregistrer</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="182"/> + <source>Save &As...</source> + <translation>Enregistrer &sous...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="183"/> + <source>Save A&ll</source> + <translation>Enregistrer &tout</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="184"/> + <source>Save As &Template...</source> + <translation>Sauver comme &modèle...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="185"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1086"/> + <source>&Close</source> + <translation>&Fermer</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="186"/> + <source>Save &Image...</source> + <translation>Enregistrer &image...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="187"/> + <source>&Print...</source> + <translation>Im&primer...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="188"/> + <source>&Quit</source> + <translation>&Quitter</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="190"/> + <source>View &Code...</source> + <translation>&Visualizer le code...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="191"/> + <source>&Minimize</source> + <translation>&Minimiser</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="193"/> + <source>Bring All to Front</source> + <translation>Amener tout au premier plan</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="195"/> + <source>Preferences...</source> + <translation>Préférences...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="196"/> + <source>Additional Fonts...</source> + <translation>Polices additionnelles...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="258"/> + <source>ALT+CTRL+S</source> + <translation>ALT+CTRL+S</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="260"/> + <source>CTRL+SHIFT+S</source> + <translation>CTRL+SHIFT+S</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="373"/> + <source>CTRL+R</source> + <translation>CTRL+R</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="391"/> + <source>CTRL+M</source> + <translation>CTRL+M</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="422"/> + <source>Qt Designer &Help</source> + <translation>&Aide de Qt Designer</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="429"/> + <source>Current Widget Help</source> + <translation>Aide du widget courant</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="436"/> + <source>What's New in Qt Designer?</source> + <translation>Quoi de neuf dans Qt Designer ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="443"/> + <source>About Plugins</source> + <translation>À propos des plugins</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="449"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1050"/> + <source>About Qt Designer</source> + <translation>À propos de Qt Designer</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="455"/> + <source>About Qt</source> + <translation>À propos de Qt</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="493"/> + <source>Clear &Menu</source> + <translation>Réinitialiser le &menu</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="499"/> + <source>&Recent Forms</source> + <translation>Formulaires &récents</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="576"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="773"/> + <source>Open Form</source> + <translation>Ouvrir le formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="577"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="614"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="774"/> + <source>Designer UI files (*.%1);;All Files (*)</source> + <translation>Fichier UI de Qt Designer (*.%1);;Tous les fichiers(*)</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="614"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="862"/> + <source>Save Form As</source> + <translation>Enregistrer le formulaire sous</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="701"/> + <source>Designer</source> + <translation>Designer</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="701"/> + <source>Feature not implemented yet!</source> + <translation>Cette fonctionnalité n'est pas encore implémentée !</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="716"/> + <source>Code generation failed</source> + <translation>La génération du code à échoué</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="760"/> + <source>Read error</source> + <translation>Erreur de lecture</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="761"/> + <source>%1 +Do you want to update the file location or generate a new form?</source> + <translation>%1 +Voulez vous mettre à jour l'emplacement du fichier ou générer un nouveau formulaire ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="764"/> + <source>&Update</source> + <translation>&Mettre à jour</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="765"/> + <source>&New Form</source> + <translation>&Nouveau formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="842"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="882"/> + <source>Save Form?</source> + <translation>Sauver le formulaire ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="843"/> + <source>Could not open file</source> + <translation>Impossible d'ouvrir le fichier</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="847"/> + <source>The file %1 could not be opened. +Reason: %2 +Would you like to retry or select a different file?</source> + <translation>Le fichier %1 ne peut pas être ouvert. +Raison : %2 +Voulez-vous réessayer ou sélectionner un fichier différent ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="853"/> + <source>Select New File</source> + <translation>Sélectionner un nouveau fichier</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="883"/> + <source>Could not write file</source> + <translation>Impossible d'écrire le fichier</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="886"/> + <source>It was not possible to write the entire file %1 to disk. +Reason:%2 +Would you like to retry?</source> + <translation>Il n'a pas été possible d'écrire l'intégralité du fichier %1 sur le disque. +Raison : %2 +Voulez-vous réessayer ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1044"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1078"/> + <source>Assistant</source> + <translation>Assistant</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1084"/> + <source>&Close Preview</source> + <translation>&Fermer la prévisualisation</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1125"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1148"/> + <source>The backup file %1 could not be written.</source> + <translation>Le fichier de backup %1 n'a pas pu être écrit.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1255"/> + <source>The backup directory %1 could not be created.</source> + <translation>Le dossier de backup %1 n'a pas pu être créé.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1261"/> + <source>The temporary backup directory %1 could not be created.</source> + <translation>Le dossier temporaire de backup %1 n'a pas pu être créé.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1291"/> + <source>Preview failed</source> + <translation>La prévisualisation a échoué</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1315"/> + <source>Image files (*.%1)</source> + <translation>Fichiers image (*.%1)</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1324"/> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1341"/> + <source>Save Image</source> + <translation>Sauver image</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1337"/> + <source>Saved image %1.</source> + <translation>Image %1 sauvée.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1342"/> + <source>The file %1 could not be written.</source> + <translation>Le fichier %1 n'a pas pu être écrit.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1355"/> + <source>Please close all forms to enable the loading of additional fonts.</source> + <translation>Veuillez fermer tous les formulaires pour activer le chargement de polices additionnelles.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="1407"/> + <source>Printed %1.</source> + <translation>Impression de %1 terminée.</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>Apparence</translation> + </message> +</context> +<context> + <name>QDesignerAppearanceOptionsWidget</name> + <message> + <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="85"/> + <source>Docked Window</source> + <translation>Fenêtre ancrable</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="86"/> + <source>Multiple Top-Level Windows</source> + <translation>Fenêtres multiples</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="91"/> + <source>Toolwindow Font</source> + <translation>Police des fenêtre d'outils</translation> + </message> +</context> +<context> + <name>QDesignerAxWidget</name> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="91"/> + <source>Reset control</source> + <translation>Réinitialiser les contrôles</translation> + </message> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="93"/> + <source>Set control</source> + <translation>Définir les contrôles</translation> + </message> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="179"/> + <source>Control loaded</source> + <translation>Contrôle chargé</translation> + </message> + <message> + <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="219"/> + <source>A COM exception occurred when executing a meta call of type %1, index %2 of "%3".</source> + <translation>Une exception COM a été levée lors de l'execution du meta-appel de type %1, indice %2 de "%3".</translation> + </message> +</context> +<context> + <name>QDesignerFormBuilder</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="89"/> + <source>Script errors occurred:</source> + <translation>Erreurs du script :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="396"/> + <source>The preview failed to build.</source> + <translation>La construction de la prévisualisation a échoué.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="461"/> + <source>Designer</source> + <translation>Designer</translation> + </message> +</context> +<context> + <name>QDesignerFormWindow</name> + <message> + <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="217"/> + <source>%1 - %2[*]</source> + <translation>%1 - %2[*]</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="227"/> + <source>Save Form?</source> + <translation>Enregistrer le formulaire ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="228"/> + <source>Do you want to save the changes to this document before closing?</source> + <translation>Voulez-vous enregistrer les changements de ce document avant de le fermer ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="230"/> + <source>If you don't save, your changes will be lost.</source> + <translation>Si vous ne sauvegardez pas, les changements seront perdus.</translation> + </message> +</context> +<context> + <name>QDesignerMenu</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="106"/> + <source>Type Here</source> + <translation>Taper ici</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="109"/> + <source>Add Separator</source> + <translation>Ajouter séparateur</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="480"/> + <source>Insert separator</source> + <translation>Insérer séparateur</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="485"/> + <source>Remove separator</source> + <translation>Retirer séparateur</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="487"/> + <source>Remove action '%1'</source> + <translation>Supprimer l'action '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="512"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="1162"/> + <source>Add separator</source> + <translation>Ajouter séparateur</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="814"/> + <source>Insert action</source> + <translation>Insérer action</translation> + </message> +</context> +<context> + <name>QDesignerMenuBar</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="110"/> + <source>Type Here</source> + <translation>Taper ici</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="408"/> + <source>Remove Menu '%1'</source> + <translation>Supprimer menu '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="420"/> + <source>Remove Menu Bar</source> + <translation>Supprimer barre de menu</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="490"/> + <source>Menu</source> + <translation>Menu</translation> + </message> +</context> +<context> + <name>QDesignerPluginManager</name> + <message> + <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="271"/> + <source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source> + <translation>Une erreur XML a été rencontrée lors de l'analyse grammaticale du XML provenant du widget personnalisé %1 : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="276"/> + <source>A required attribute ('%1') is missing.</source> + <translation>Un attribut obligatoire ('%1') est manquant.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="314"/> + <source>An invalid property specification ('%1') was encountered. Supported types: %2</source> + <translation>Une spécification invalide de propriété ('%1') a été rencontrée. Types supportés : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="334"/> + <source>'%1' is not a valid string property specification.</source> + <translation>'%1' n'est pas une spécification valide de propriété chaîne de caractères.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="374"/> + <source>The XML of the custom widget %1 does not contain any of the elements <widget> or <ui>.</source> + <translation>Le XML du widget personnalisé %1 ne contient aucun des éléments <widget> ou <ui>.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="386"/> + <source>The class attribute for the class %1 is missing.</source> + <translation>L'attribut de classe est manquant pour la classe %1.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="390"/> + <source>The class attribute for the class %1 does not match the class name %2.</source> + <translation>L'attribut de classe pour la classe %1 ne correspond pas au nom de la classe %2.</translation> + </message> +</context> +<context> + <name>QDesignerPropertySheet</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="754"/> + <source>Dynamic Properties</source> + <translation>Propriétés dynamiques</translation> + </message> +</context> +<context> + <name>QDesignerResource</name> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="1223"/> + <source>The layout type '%1' is not supported, defaulting to grid.</source> + <translation>Le type de layout '%1' n'est pas supporté, replacement par une grille.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="1466"/> + <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>L'extension du widget '%1' (%2) a retourné un widget non géré par Designer '%3' (%4) lors de la requête pour la page #%5. +Les pages du conteneur ne devraient être ajoutées que par spécification dans le XML retourné par la méthode domXml() du widget personnalisé.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="2065"/> + <source>Unexpected element <%1></source> + <extracomment>Parsing clipboard contents</extracomment> + <translation>Élément inattendu <%1></translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="2071"/> + <source>Error while pasting clipboard contents at line %1, column %2: %3</source> + <extracomment>Parsing clipboard contents</extracomment> + <translation>Erreur lors du collage du contenu du presse-papier à la ligne %1, colonne %2 : %3</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="2077"/> + <source>Error while pasting clipboard contents: The root element <ui> is missing.</source> + <extracomment>Parsing clipboard contents</extracomment> + <translation>Erreur lors du collage du contenu du presse-papier. L'élément racine <ui> est manquant.</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>Le chemin du modèle %1 n'a pas pu être créé.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="267"/> + <source>An error has been encountered while parsing device profile XML: %1</source> + <translation>Une erreur a été rencontrée lors de l'analyse grammaticale du XML du profil de l'appareil : %1</translation> + </message> +</context> +<context> + <name>QDesignerToolWindow</name> + <message> + <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="190"/> + <source>Property Editor</source> + <translation>Éditeur de propriétés</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="244"/> + <source>Action Editor</source> + <translation>Éditeur d'actions</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="286"/> + <source>Object Inspector</source> + <translation>Inspecteur d'objet</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="321"/> + <source>Resource Browser</source> + <translatorcomment>plural</translatorcomment> + <translation>Explorateur de ressources</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="355"/> + <source>Signal/Slot Editor</source> + <translation>Éditeur de signaux et slots</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="396"/> + <source>Widget Box</source> + <translation>Boîte de widget</translation> + </message> +</context> +<context> + <name>QDesignerWorkbench</name> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="199"/> + <source>&File</source> + <translation>&Fichier</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="201"/> + <source>Edit</source> + <translation>Édition</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="205"/> + <source>F&orm</source> + <translation>F&ormulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="206"/> + <source>Preview in</source> + <translation>Prévisualisation avec</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="210"/> + <source>&View</source> + <translation>Afficha&ge</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="212"/> + <source>&Settings</source> + <translation>&Configuration</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="214"/> + <source>&Window</source> + <translation>Fe&nêtre</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="216"/> + <source>&Help</source> + <translation>&Aide</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="239"/> + <source>Toolbars</source> + <translation>Barre d'outils</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="416"/> + <source>Widget Box</source> + <translation>Boîte de widget</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="704"/> + <source>Save Forms?</source> + <translation>Enregistrer les formulaires ?</translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="705"/> + <source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source> + <translation> + <numerusform>Il y a %n formulaire avec des changements non-enregistrés. Voulez-vous vérifier les changements avant de quitter?</numerusform> + <numerusform>Il y a %n formulaires avec des changements non-enregistrés. Voulez-vous vérifier les changements avant de quitter?</numerusform> + </translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="708"/> + <source>If you do not review your documents, all your changes will be lost.</source> + <translation>Si vous ne vérifiez pas vos documents, tous les changements seront perdus.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="709"/> + <source>Discard Changes</source> + <translation>Abandonner les changements</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="711"/> + <source>Review Changes</source> + <translation>Vérifier les changements</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="806"/> + <source>Backup Information</source> + <translation>Informations de sauvegarde</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="807"/> + <source>The last session of Designer was not terminated correctly. Backup files were left behind. Do you want to load them?</source> + <translation>La dernière session de Designer n'a pas été fermée correctement. Des fichiers de sauvegarde existent. Voulez-vous les charger ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="918"/> + <source>The file <b>%1</b> could not be opened.</source> + <translation>Le fichier <b>%1</b> n'a pas pu être ouvert.</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="964"/> + <source>The file <b>%1</b> is not a valid Designer UI file.</source> + <translation>Le fichier <b>%1</b> n'est pas un fichier valide d'UI de Designer.</translation> + </message> +</context> +<context> + <name>QFormBuilder</name> + <message> + <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="163"/> + <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>Un nom de classe vide a été passé à %1 (nom d'objet '%2').</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="219"/> + <source>QFormBuilder was unable to create a custom widget of the class '%1'; defaulting to base class '%2'.</source> + <translation>QFormBuilder n'a pas pu créer le widget personnalisé de classe '%1'; passage à la classe de base '%2'.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="225"/> + <source>QFormBuilder was unable to create a widget of the class '%1'.</source> + <translation>QFormBuilder n'a pas pu créer un widget de classe '%1'.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="286"/> + <source>The layout type `%1' is not supported.</source> + <translation>Le type de layout '%1' n'est pas supporté.</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>Le type du setteur de propriété %1 n'a pas pu être lu.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="129"/> + <source>The enumeration-type property %1 could not be read.</source> + <translation>Le type d'énumeration de propriété %1 n'a pas pu être lu.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="319"/> + <source>Reading properties of the type %1 is not supported yet.</source> + <translation>La lecture des propriétés de type %1 n'est pas supporté.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="585"/> + <source>The property %1 could not be written. The type %2 is not supported yet.</source> + <translation>La propriété %1 ne peut pas être écrite. Le type %2 n'est pas encore supporté.</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>Page précédente</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="195"/> + <source>Next Page</source> + <translation>Page suivante</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="196"/> + <source>Delete</source> + <translation>Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="197"/> + <source>Before Current Page</source> + <translation>Avant la page courante</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="198"/> + <source>After Current Page</source> + <translation>Après la page courante</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="199"/> + <source>Change Page Order...</source> + <translation>Modifier l'ordre des pages...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="271"/> + <source>Change Page Order</source> + <translation>Modifier l'ordre des pages</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="320"/> + <source>Page %1 of %2</source> + <translation>Page %1 de %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="330"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="334"/> + <source>Insert Page</source> + <translation>Insérer page</translation> + </message> +</context> +<context> + <name>QStackedWidgetPreviewEventFilter</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="181"/> + <source>Go to previous page of %1 '%2' (%3/%4).</source> + <translation>Aller à la page précédente de %1 '%2' (%3/%4).</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="185"/> + <source>Go to next page of %1 '%2' (%3/%4).</source> + <translation>Aller à la page suivante de %1 '%2' (%3/%4).</translation> + </message> +</context> +<context> + <name>QTabWidgetEventFilter</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="89"/> + <source>Delete</source> + <translation>Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="90"/> + <source>Before Current Page</source> + <translation>Avant la page courante</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="91"/> + <source>After Current Page</source> + <translation>Après la page courante</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="374"/> + <source>Page %1 of %2</source> + <translation>Page %1 de %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="384"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="388"/> + <source>Insert Page</source> + <translation>Insérer page</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>Supprimer page</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="65"/> + <source>Before Current Page</source> + <translation>Avant la page courante</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="66"/> + <source>After Current Page</source> + <translation>Après la page courante</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="67"/> + <source>Change Page Order...</source> + <translation>Modifier l'ordre des pages...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="183"/> + <source>Change Page Order</source> + <translation>Modifier l'ordre de pages</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="227"/> + <source>Page %1 of %2</source> + <translation>Page %1 de %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="239"/> + <source>Insert Page</source> + <translation>Insérer page</translation> + </message> +</context> +<context> + <name>QtBoolEdit</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="226"/> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="236"/> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="261"/> + <source>True</source> + <translation>Vrai</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="236"/> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="261"/> + <source>False</source> + <translation>Faux</translation> + </message> +</context> +<context> + <name>QtBoolPropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="1469"/> + <source>True</source> + <translation>Vrai</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="1470"/> + <source>False</source> + <translation>Faux</translation> + </message> +</context> +<context> + <name>QtCharEdit</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="1581"/> + <source>Clear Char</source> + <translation>Effacer caractère</translation> + </message> +</context> +<context> + <name>QtColorEditWidget</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="2186"/> + <source>...</source> + <translation>...</translation> + </message> +</context> +<context> + <name>QtColorPropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="6213"/> + <source>Red</source> + <translation>Rouge</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="6221"/> + <source>Green</source> + <translation>Vert</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="6229"/> + <source>Blue</source> + <translation>Bleu</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="6237"/> + <source>Alpha</source> + <translation>Alpha</translation> + </message> +</context> +<context> + <name>QtCursorDatabase</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="55"/> + <source>Arrow</source> + <translation>Flèche</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="57"/> + <source>Up Arrow</source> + <translation>Flèche vers le haut</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="59"/> + <source>Cross</source> + <translation>Croix</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="61"/> + <source>Wait</source> + <translation>Attendre</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="63"/> + <source>IBeam</source> + <translation>IBeam</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="65"/> + <source>Size Vertical</source> + <translation>Redimensionner verticalement</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="67"/> + <source>Size Horizontal</source> + <translation>Redimensionner horizontalement</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="69"/> + <source>Size Backslash</source> + <translation>Redimensionner diagonale droite</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="71"/> + <source>Size Slash</source> + <translation>Redimensionner diagonale gauche</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="73"/> + <source>Size All</source> + <translation>Redimensionner</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="75"/> + <source>Blank</source> + <translation>Vide</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="77"/> + <source>Split Vertical</source> + <translation>Scinder verticalement</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="79"/> + <source>Split Horizontal</source> + <translation>Scinder horizontalement</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="81"/> + <source>Pointing Hand</source> + <translation>Pointeur index</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="83"/> + <source>Forbidden</source> + <translation>Interdit</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="85"/> + <source>Open Hand</source> + <translation>Main ouverte</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="87"/> + <source>Closed Hand</source> + <translation>Main fermée</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="89"/> + <source>What's This</source> + <translation>Qu'est-ce que c'est ?</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="91"/> + <source>Busy</source> + <translation>Occupé</translation> + </message> +</context> +<context> + <name>QtFontEditWidget</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="2384"/> + <source>...</source> + <translation>...</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="2404"/> + <source>Select Font</source> + <translation>Selectionner police</translation> + </message> +</context> +<context> + <name>QtFontPropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5886"/> + <source>Family</source> + <translation>Famille</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5899"/> + <source>Point Size</source> + <translation>Taille en points</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5907"/> + <source>Bold</source> + <translation>Gras</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5914"/> + <source>Italic</source> + <translation>Italique</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5921"/> + <source>Underline</source> + <translation>Souligné</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5928"/> + <source>Strikeout</source> + <translation>Barré</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5935"/> + <source>Kerning</source> + <translation>Crénage</translation> + </message> +</context> +<context> + <name>QtGradientDialog</name> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientdialog.ui" line="53"/> + <source>Edit Gradient</source> + <translation>Modifier le gradient</translation> + </message> +</context> +<context> + <name>QtGradientEditor</name> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="53"/> + <source>Form</source> + <translation>Formulaire</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="101"/> + <source>Gradient Editor</source> + <translation>Éditeur de gradient</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="104"/> + <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>Cette zone montre une prévisualisation du gradient édité. Elle permet aussi d'éditer les paramètres spécifiques au type de gradient tel que les points de départ et d'arrivée, le rayon, etc. par glisser-déposer.</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="120"/> + <source>1</source> + <translation>1</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="155"/> + <source>2</source> + <translation>2</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="190"/> + <source>3</source> + <translation>3</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="225"/> + <source>4</source> + <translation>4</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="260"/> + <source>5</source> + <translation>5</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="295"/> + <source>Gradient Stops Editor</source> + <translation>Éditeur de point d'arrêt du gradient</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="298"/> + <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>Cette zone vous permet d'éditer les points d'arrêt du gardient. Double-cliquez sur un point d'arrêt existant pour le dupliquer. Double-cliquez à l'exterieur d'un point d'arrêt pour en créer un nouveau. Glissez-déposez un point pour le repositionner. Utilisez le bouton droit de la souris pour afficher le menu contextuel avec des actions supplémentaires.</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="311"/> + <source>Zoom</source> + <translation>Zoom</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="330"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="333"/> + <source>Reset Zoom</source> + <translation>Réinitialiser le zoom</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="346"/> + <source>Position</source> + <translation>Position</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="365"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="414"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="436"/> + <source>Hue</source> + <translation>Teinte</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="368"/> + <source>H</source> + <translation>T</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="455"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="504"/> + <source>Saturation</source> + <translation>Saturation</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="458"/> + <source>S</source> + <translation>S</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="526"/> + <source>Sat</source> + <translation>Sat</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="545"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="594"/> + <source>Value</source> + <translation>Valeur</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="548"/> + <source>V</source> + <translation>V</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="616"/> + <source>Val</source> + <translation>Val</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="635"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="684"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="706"/> + <source>Alpha</source> + <translation>Alpha</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="638"/> + <source>A</source> + <translation>A</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="719"/> + <source>Type</source> + <translation>Type</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="732"/> + <source>Spread</source> + <translation>Étendue</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="751"/> + <source>Color</source> + <translation>Couleur</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="764"/> + <source>Current stop's color</source> + <translation>Couleur du point d'arrêt courant</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="786"/> + <source>Show HSV specification</source> + <translation>Montrer les spécifications TSV/HSV</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="789"/> + <source>HSV</source> + <translation>TSV/HSV</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="811"/> + <source>Show RGB specification</source> + <translation>Affichier les spécifications RGB</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="814"/> + <source>RGB</source> + <translation>RGB</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="842"/> + <source>Current stop's position</source> + <translation>Position du point d'arrêt courant</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1030"/> + <source>%</source> + <translation>%</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1141"/> + <source>Zoom In</source> + <translation>Zoomer</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1148"/> + <source>Zoom Out</source> + <translation>Dézoomer</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1183"/> + <source>Toggle details extension</source> + <translation>Inverser les détails d'exention</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1186"/> + <source>></source> + <translation>></translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1205"/> + <source>Linear Type</source> + <translation>Type linéaire</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1208"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1230"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1252"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1274"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1296"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1318"/> + <source>...</source> + <translation>...</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1227"/> + <source>Radial Type</source> + <translation>Type radial</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1249"/> + <source>Conical Type</source> + <translation>Type conique</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1271"/> + <source>Pad Spread</source> + <translation>Étendue par remplissage</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1293"/> + <source>Repeat Spread</source> + <translation>Étendue par répétition</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui" line="1315"/> + <source>Reflect Spread</source> + <translation>Étendue par réflexion</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="431"/> + <source>Start X</source> + <translation>X de départ</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="435"/> + <source>Start Y</source> + <translation>Y de départ</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="439"/> + <source>Final X</source> + <translation>X de fin</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="443"/> + <source>Final Y</source> + <translation>Y de fin</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="450"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="474"/> + <source>Central X</source> + <translation>X central</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="454"/> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="478"/> + <source>Central Y</source> + <translation>Y central</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="458"/> + <source>Focal X</source> + <translation>X focal</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="462"/> + <source>Focal Y</source> + <translation>Y focal</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="466"/> + <source>Radius</source> + <translation>Rayon</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="482"/> + <source>Angle</source> + <translation>Angle</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="770"/> + <source>Linear</source> + <translation>Linéaire</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="771"/> + <source>Radial</source> + <translation>Radial</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="772"/> + <source>Conical</source> + <translation>Conique</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="792"/> + <source>Pad</source> + <translation>Remplissage</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="793"/> + <source>Repeat</source> + <translation>Répéter</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="794"/> + <source>Reflect</source> + <translation>Réflexion</translation> + </message> +</context> +<context> + <name>QtGradientStopsWidget</name> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="947"/> + <source>New Stop</source> + <translation>Nouveau point d'arrêt</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="948"/> + <source>Delete</source> + <translation>Supprimer</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="949"/> + <source>Flip All</source> + <translation>Tout renverser</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="950"/> + <source>Select All</source> + <translation>Tout sélectionner</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="951"/> + <source>Zoom In</source> + <translation>Zoomer</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="952"/> + <source>Zoom Out</source> + <translation>Dézoomer</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="953"/> + <source>Reset Zoom</source> + <translation>Réinitialiser le zoom</translation> + </message> +</context> +<context> + <name>QtGradientView</name> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui" line="13"/> + <source>Gradient View</source> + <translation>Vue du gradient</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui" line="39"/> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="208"/> + <source>New...</source> + <translation>Nouveau...</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui" line="58"/> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="209"/> + <source>Edit...</source> + <translation>Éditer...</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui" line="77"/> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="210"/> + <source>Rename</source> + <translation>Renommer</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui" line="96"/> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="211"/> + <source>Remove</source> + <translation>Retirer</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="107"/> + <source>Grad</source> + <translation>Gradient</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="133"/> + <source>Remove Gradient</source> + <translation>Retirer gradient</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="134"/> + <source>Are you sure you want to remove the selected gradient?</source> + <translation>Êtes-vous sûr de vouloir supprimer le gradient sélectionné ?</translation> + </message> +</context> +<context> + <name>QtGradientViewDialog</name> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui" line="53"/> + <source>Select Gradient</source> + <translation>Sélectionner gradient</translation> + </message> +</context> +<context> + <name>QtKeySequenceEdit</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="312"/> + <source>Clear Shortcut</source> + <translation>Effacer les racourcis</translation> + </message> +</context> +<context> + <name>QtLocalePropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="2394"/> + <source>%1, %2</source> + <translation>%1, %2</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="2447"/> + <source>Language</source> + <translation>Langue</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="2455"/> + <source>Country</source> + <translation>Pays</translation> + </message> +</context> +<context> + <name>QtPointFPropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="2866"/> + <source>(%1, %2)</source> + <translation>(%1, %2)</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="2937"/> + <source>X</source> + <translation>X</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="2945"/> + <source>Y</source> + <translation>Y</translation> + </message> +</context> +<context> + <name>QtPointPropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="2625"/> + <source>(%1, %2)</source> + <translation>(%1, %2)</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="2662"/> + <source>X</source> + <translation>X</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="2669"/> + <source>Y</source> + <translation>Y</translation> + </message> +</context> +<context> + <name>QtPropertyBrowserUtils</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="176"/> + <source>[%1, %2, %3] (%4)</source> + <translation>[%1, %2, %3] (%4)</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="206"/> + <source>[%1, %2]</source> + <translation>[%1, %2]</translation> + </message> +</context> +<context> + <name>QtRectFPropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4375"/> + <source>[(%1, %2), %3 x %4]</source> + <translation>[(%1, %2), %3 x %4]</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4531"/> + <source>X</source> + <translation>X</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4539"/> + <source>Y</source> + <translation>Y</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4547"/> + <source>Width</source> + <translation>Largeur</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4556"/> + <source>Height</source> + <translation>Hauteur</translation> + </message> +</context> +<context> + <name>QtRectPropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="3944"/> + <source>[(%1, %2), %3 x %4]</source> + <translation>[(%1, %2), %3 x %4]</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4064"/> + <source>X</source> + <translation>X</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4071"/> + <source>Y</source> + <translation>Y</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4078"/> + <source>Width</source> + <translation>Largeur</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="4086"/> + <source>Height</source> + <translation>Hauteur</translation> + </message> +</context> +<context> + <name>QtResourceEditorDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="13"/> + <source>Dialog</source> + <translation>Dialogue</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="39"/> + <source>New File</source> + <translation>Nouveau fichier</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="42"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="92"/> + <source>N</source> + <translation>N</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="49"/> + <source>Remove File</source> + <translation>Supprimer fichier</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="52"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="109"/> + <source>R</source> + <translation>S</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="75"/> + <source>I</source> + <translation></translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="89"/> + <source>New Resource</source> + <translation>Nouvelle ressource</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="99"/> + <source>A</source> + <translation>A</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui" line="106"/> + <source>Remove Resource or File</source> + <translation>Supprimer ressource ou fichier</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="76"/> + <source>%1 already exists. +Do you want to replace it?</source> + <translation>%1 existe déjà. +Voulez-vous le remplacer ?</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="81"/> + <source>The file does not appear to be a resource file; element '%1' was found where '%2' was expected.</source> + <translation>Le fichier n'est pas un fichier ressource; l'élément '%1' a été trouvé à la place de %2.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="983"/> + <source>%1 [read-only]</source> + <translation>%1 [lecture seule]</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="985"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1183"/> + <source>%1 [missing]</source> + <translation>%1 [manquant]</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1111"/> + <source><no prefix></source> + <translation><pas de préfixe></translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1431"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1997"/> + <source>New Resource File</source> + <translation>Nouveau fichier de ressource</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1433"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1458"/> + <source>Resource files (*.qrc)</source> + <translation>Fichier de ressource (*.qrc)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1456"/> + <source>Import Resource File</source> + <translation>Importer fichier de ressource</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1568"/> + <source>newPrefix</source> + <translation>newPrefix</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1584"/> + <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><p><b>Avertissement :</b> le fichier</p><p>%1</p><p>est en dehors du répertoire parent du fichier de ressource courant.</p></translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1592"/> + <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><p>Pour résoudre le problème, appuyez sur :</p><table><tr><th align="left">Copier</th><td>Pour copier le fichier dans le répertoire parent du fichier de ressource.</td></tr><tr><th align="left">Copier sous...</th><td>Pour copier le fichier ressource dans un sous-répertoire du répertoire parent du fichier de ressource.</td></tr><tr><th align="left">Conserver</th><td>pour conserver l'emplacement courant.</td></tr></table></translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1617"/> + <source>Add Files</source> + <translation>Ajouter fichiers</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1638"/> + <source>Incorrect Path</source> + <translation>Chemin incorrect</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1641"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1660"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1872"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1879"/> + <source>Copy</source> + <translation>Copier</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1643"/> + <source>Copy As...</source> + <translation>Copier sous...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1645"/> + <source>Keep</source> + <translation>Conserver</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1647"/> + <source>Skip</source> + <translation>Passer</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1734"/> + <source>Clone Prefix</source> + <translation>Cloner le préfixe</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1735"/> + <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>Entrez le suffixe que vous voulez ajouter aux noms des fichiers clonés. +Ceci peut être une extension de langue par exemple, comme "_fr'.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1848"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1852"/> + <source>Copy As</source> + <translation>Copier sous</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1853"/> + <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><p>Le fichier sélectionné</p><p>%1</p><p>est en dehors du répertoire du fichier de ressource courant :</p><p>%2</p><p>Veuillez sélectionner un chemin dans le répertoire courant.</p></translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1873"/> + <source>Could not overwrite %1.</source> + <translation>Impossible d'écraser %1.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1880"/> + <source>Could not copy +%1 +to +%2</source> + <translation>Impossible de copier +%1 +vers +%2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1915"/> + <source>A parse error occurred at line %1, column %2 of %3: +%4</source> + <translation>Une erreur d'analyse grammaticale est apparue à la ligne %1, colonne %2 de %3 : +%4</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1927"/> + <source>Save Resource File</source> + <translation>Enregistrer le fichier de ressource</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1928"/> + <source>Could not write %1: %2</source> + <translation>Impossible d'écrire %1 : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1961"/> + <source>Edit Resources</source> + <translation>Éditer les ressources</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1996"/> + <source>New...</source> + <translation>Nouveau...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1998"/> + <source>Open...</source> + <translation>Ouvrir...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="1999"/> + <source>Open Resource File</source> + <translation>Ouvrir fichier de ressource</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2000"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2011"/> + <source>Remove</source> + <translation>Retirer</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2001"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2012"/> + <source>Move Up</source> + <translation>Vers le Haut</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2002"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2013"/> + <source>Move Down</source> + <translation>Vers le Bas</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2004"/> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2005"/> + <source>Add Prefix</source> + <translation>Ajouter préfixe</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2006"/> + <source>Add Files...</source> + <translation>Ajouter fichiers...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2007"/> + <source>Change Prefix</source> + <translation>Modifier le préfixe</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2008"/> + <source>Change Language</source> + <translation>Modifier la langue</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2009"/> + <source>Change Alias</source> + <translation>Modifier l'alias</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2010"/> + <source>Clone Prefix...</source> + <translation>Cloner le préfixe...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2047"/> + <source>Prefix / Path</source> + <translation>Préfixe / chemin</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2048"/> + <source>Language / Alias</source> + <translation>Langue / Alias</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2165"/> + <source><html><p><b>Warning:</b> There have been problems while reloading the resources:</p><pre>%1</pre></html></source> + <translation><html><p><b>Avertissement:</b> Des problèmes sont apparus lors du rafraichissement des données des ressources :</p><pre>%1</pre></html></translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="2167"/> + <source>Resource Warning</source> + <translation>Avertissement relatif aux ressources</translation> + </message> +</context> +<context> + <name>QtResourceView</name> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="566"/> + <source>Size: %1 x %2 +%3</source> + <translation>Taille : %1 x %2 +%3</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="586"/> + <source>Edit Resources...</source> + <translation>Éditer ressources...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="592"/> + <source>Reload</source> + <translation>Recharger</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="599"/> + <source>Copy Path</source> + <translation>Copier le chemin</translation> + </message> +</context> +<context> + <name>QtResourceViewDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="849"/> + <source>Select Resource</source> + <translation>Séléctionner ressource</translation> + </message> +</context> +<context> + <name>QtSizeFPropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="3551"/> + <source>%1 x %2</source> + <translation>%1 x %2</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="3681"/> + <source>Width</source> + <translation>Largeur</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="3690"/> + <source>Height</source> + <translation>Hauteur</translation> + </message> +</context> +<context> + <name>QtSizePolicyPropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5399"/> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5400"/> + <source><Invalid></source> + <translation><Invalide></translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5401"/> + <source>[%1, %2, %3, %4]</source> + <translation>[%1, %2, %3, %4]</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5446"/> + <source>Horizontal Policy</source> + <translation>Politique horizontale</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5455"/> + <source>Vertical Policy</source> + <translation>Politique verticale</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5464"/> + <source>Horizontal Stretch</source> + <translation>Étirement horizontal</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="5472"/> + <source>Vertical Stretch</source> + <translation>Étirement vertical</translation> + </message> +</context> +<context> + <name>QtSizePropertyManager</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="3186"/> + <source>%1 x %2</source> + <translation>%1 x %2</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="3282"/> + <source>Width</source> + <translation>Largeur</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="3290"/> + <source>Height</source> + <translation>Hauteur</translation> + </message> +</context> +<context> + <name>QtToolBarDialog</name> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="13"/> + <source>Customize Toolbars</source> + <translation>Personnaliser les barres d'outils</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="26"/> + <source>1</source> + <translation>1</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="34"/> + <source>Actions</source> + <translation>Actions</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="49"/> + <source>Toolbars</source> + <translation>Barres d'outils</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="56"/> + <source>Add new toolbar</source> + <translation>Ajouter une nouvelle barre d'outils</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="59"/> + <source>New</source> + <translation>Nouveau</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="66"/> + <source>Remove selected toolbar</source> + <translation>Supprimer la barre d'outils sélectionnée</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="69"/> + <source>Remove</source> + <translation>Supprimer</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="76"/> + <source>Rename toolbar</source> + <translation>Renommer la barre d'outils</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="79"/> + <source>Rename</source> + <translation>Renommer</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="102"/> + <source>Move action up</source> + <translation>Déplacer l'action vers le haut</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="105"/> + <source>Up</source> + <translation>Monter</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="118"/> + <source>Remove action from toolbar</source> + <translation>Retirer l'action de la barre d'outils</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="121"/> + <source><-</source> + <translation><-</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="134"/> + <source>Add action to toolbar</source> + <translation>Ajouter l'action à la barre d'outil</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="137"/> + <source>-></source> + <translation>-></translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="150"/> + <source>Move action down</source> + <translation>Déplacer l'action vers le bas</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="153"/> + <source>Down</source> + <translation>Descendre</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui" line="178"/> + <source>Current Toolbar Actions</source> + <translation>Actions de la barre d'outils courante</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="1240"/> + <source>Custom Toolbar</source> + <translation>Barre d'outils personnalisée</translation> + </message> + <message> + <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="1784"/> + <source>< S E P A R A T O R ></source> + <translation>< S É P A R A T E U R ></translation> + </message> +</context> +<context> + <name>QtTreePropertyBrowser</name> + <message> + <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="442"/> + <source>Property</source> + <translation>Propriété</translation> + </message> + <message> + <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="443"/> + <source>Value</source> + <translation>Valeur</translation> + </message> +</context> +<context> + <name>SaveFormAsTemplate</name> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.ui" line="45"/> + <source>Save Form As Template</source> + <translation>Enregistrer le formulaire comme un modèle</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.ui" line="59"/> + <source>&Name:</source> + <translation>&Nom :</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.ui" line="94"/> + <source>&Category:</source> + <translation>&Catégorie :</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="72"/> + <source>Add path...</source> + <translation>Ajouter chemin...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="95"/> + <source>Template Exists</source> + <translation>Le modèle existe</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="96"/> + <source>A template with the name %1 already exists. +Do you want overwrite the template?</source> + <translation>Un modèle existe déjà avec le nom %1. +Voulez-vous le remplacer ?</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="99"/> + <source>Overwrite Template</source> + <translation>Remplacer modèle</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="106"/> + <source>Open Error</source> + <translation>Erreur d'ouverture</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="107"/> + <source>There was an error opening template %1 for writing. Reason: %2</source> + <translation>Une erreur s'est produite à l'ouverture du modèle %1 en écriture. Raison : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="120"/> + <source>Write Error</source> + <translation>Erreur d'écriture</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="121"/> + <source>There was an error writing the template %1 to disk. Reason: %2</source> + <translation>Une erreur s'est produite lors de l'écriture du modèle %1 sur le disque. Raison : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="148"/> + <source>Pick a directory to save templates in</source> + <translation>Sélectionner le dossier dans lequel le modèle sera enregistré</translation> + </message> +</context> +<context> + <name>ScriptErrorDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="59"/> + <source>An error occurred while running the scripts for "%1": +</source> + <translation>Une erreur est apparue lors de l'execution des scripts de "%1" : +</translation> + </message> +</context> +<context> + <name>SelectSignalDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui" line="14"/> + <source>Go to slot</source> + <translation>Aller au slot</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui" line="20"/> + <source>Select signal</source> + <translation>Sélectionner signal</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui" line="33"/> + <source>signal</source> + <translation>signal</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui" line="38"/> + <source>class</source> + <translation>classe</translation> + </message> +</context> +<context> + <name>SignalSlotConnection</name> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="152"/> + <source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source> + <translation>ENVOYER(%1), SIGNAL(%2), RECEVEUR(%3), SLOT(%4)</translation> + </message> +</context> +<context> + <name>SignalSlotDialogClass</name> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="13"/> + <source>Signals and slots</source> + <translation>Signaux et slots</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="19"/> + <source>Slots</source> + <translation>Slots</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="30"/> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="79"/> + <source>Add</source> + <translation>Ajouter</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="33"/> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="43"/> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="82"/> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="92"/> + <source>...</source> + <translation>...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="40"/> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="89"/> + <source>Delete</source> + <translation>Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui" line="68"/> + <source>Signals</source> + <translation>Signaux</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>Ressort horizontal '%1', %2 x %3</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="275"/> + <source>Vertical Spacer '%1', %2 x %3</source> + <translation>Ressort vertical '%1', %2 x %3</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>Chemins des modèles</translation> + </message> +</context> +<context> + <name>ToolBarManager</name> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="224"/> + <source>Configure Toolbars...</source> + <translation>Configurer les barres d'outils...</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="239"/> + <source>Window</source> + <translation>Fenêtre</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="240"/> + <source>Help</source> + <translation>Aide</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="247"/> + <source>Style</source> + <translation>Style</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="249"/> + <source>Dock views</source> + <translation>Ancrer les vues</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/mainwindow.cpp" line="255"/> + <source>Toolbars</source> + <translation>Barres d'outils</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><h3>%1</h3><br/><br/>Version %2</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/versiondialog.cpp" line="172"/> + <source>Qt Designer</source> + <translation>Qt Designer</translation> + </message> + <message> + <location filename="../tools/designer/src/designer/versiondialog.cpp" line="173"/> + <source><br/>Qt Designer is a graphical user interface designer for Qt applications.<br/></source> + <translation><br/>Qt Designer est une interface de création d'interface graphique pour les applications Qt.<br/></translation> + </message> + <message> + <location filename="../tools/designer/src/designer/versiondialog.cpp" line="175"/> + <source>%1<br/>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</source> + <translation>%1<br/>Copyright (C) 2009 Nokia Corporation et/ou ses filiales.</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>Le fichier contient un widget personnalisé '%1' dont la classe de base (%2) est différente de l'entrée dans la base de données de widget (%3). La base de données de widget n'a pas été modifiée.</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ActionEditor</name> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="123"/> + <source>New...</source> + <translation>Nouveau...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="124"/> + <source>Edit...</source> + <translation>Éditer...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="125"/> + <source>Go to slot...</source> + <translation>Aller au slot...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="126"/> + <source>Copy</source> + <translation>Copier</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="127"/> + <source>Cut</source> + <translation>Couper</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="128"/> + <source>Paste</source> + <translation>Coller</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="129"/> + <source>Select all</source> + <translation>Tout sélectionner</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="130"/> + <source>Delete</source> + <translation>Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="139"/> + <source>Actions</source> + <translation>Actions</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="188"/> + <source>Configure Action Editor</source> + <translation>Configurer l'éditeur d'action</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="191"/> + <source>Icon View</source> + <translation>Vue en icônes</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="197"/> + <source>Detailed View</source> + <translation>Vue détaillée</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="443"/> + <source>New action</source> + <translation>Nouvelle action</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="541"/> + <source>Edit action</source> + <translation>Editer action</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="610"/> + <source>Remove action '%1'</source> + <translation>Supprimer action '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="610"/> + <source>Remove actions</source> + <translation>Supprimer les actions</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="796"/> + <source>Used In</source> + <translation>Utilisé dans</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>Nom</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="96"/> + <source>Used</source> + <translation>Utilisé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="97"/> + <source>Text</source> + <translation>Texte</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="98"/> + <source>Shortcut</source> + <translation>Raccourci</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="99"/> + <source>Checkable</source> + <translation>Vérifiable</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="100"/> + <source>ToolTip</source> + <translation>Info-bulle</translation> + </message> +</context> +<context> + <name>qdesigner_internal::BrushManagerProxy</name> + <message> + <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="219"/> + <source>The element '%1' is missing the required attribute '%2'.</source> + <translation>L'attribut requis '%2' est manquant pour l'élément '%1'.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="230"/> + <source>Empty brush name encountered.</source> + <translation>Un nom vide de pinceau a été rencontré.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="240"/> + <source>An unexpected element '%1' was encountered.</source> + <translation>L'élément inattendu '%1' a été rencontré.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="247"/> + <source>An error occurred when reading the brush definition file '%1' at line line %2, column %3: %4</source> + <translation>Une erreur est apparue lors de la lecture du fichier '%1' de définition des pinceaux à la ligne %2, colonne %3: %4</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="290"/> + <source>An error occurred when reading the resource file '%1' at line %2, column %3: %4</source> + <translation>Une erreur est survenue lors de la lecture du fichier de ressource '%1' à la ligne %2, colonne %3 : %4</translation> + </message> +</context> +<context> + <name>qdesigner_internal::BuddyEditor</name> + <message> + <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="261"/> + <source>Add buddy</source> + <translation>Ajouter un copain</translation> + </message> + <message> + <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="313"/> + <source>Remove buddies</source> + <translation>Supprimer les copains</translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="337"/> + <source>Remove %n buddies</source> + <translation> + <numerusform>Supprimer %n copain</numerusform> + <numerusform>Supprimer %n copains</numerusform> + </translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="388"/> + <source>Add %n buddies</source> + <translation> + <numerusform>Ajouter %n copain</numerusform> + <numerusform>Ajouter %n copains</numerusform> + </translation> + </message> + <message> + <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="435"/> + <source>Set automatically</source> + <translation>Définir automatiquement</translation> + </message> +</context> +<context> + <name>qdesigner_internal::BuddyEditorPlugin</name> + <message> + <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="73"/> + <source>Edit Buddies</source> + <translation>Éditer les copains</translation> + </message> +</context> +<context> + <name>qdesigner_internal::BuddyEditorTool</name> + <message> + <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="56"/> + <source>Edit Buddies</source> + <translation>Éditer les copains</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ButtonGroupMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="318"/> + <source>Select members</source> + <translation>Sélectionner les membres</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="319"/> + <source>Break</source> + <translation>Casser</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ButtonTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="440"/> + <source>Assign to button group</source> + <translation>Assigner au groupe de boutons</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="442"/> + <source>Button group</source> + <translation>Groupe de boutons</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="443"/> + <source>New button group</source> + <translation>Nouveau groupe de boutons</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="444"/> + <source>Change text...</source> + <translation>Modifier le texte...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="445"/> + <source>None</source> + <translation>Aucun</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="546"/> + <source>Button group '%1'</source> + <translation>Groupe de boutons '%1'</translation> + </message> +</context> +<context> + <name>qdesigner_internal::CodeDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="95"/> + <source>Save...</source> + <translation>Enregistrer...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="99"/> + <source>Copy All</source> + <translation>Tout copier</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="104"/> + <source>&Find in Text...</source> + <translation>&Rechercher dans le texte...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="179"/> + <source>A temporary form file could not be created in %1.</source> + <translation>Un fichier temporaire de formulaire n'a pas pu être créé dans %1.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="185"/> + <source>The temporary form file %1 could not be written.</source> + <translation>Le fichier temporaire de formulaire %1 n'a pas pu être écrit.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="206"/> + <source>%1 - [Code]</source> + <translation>%1 - [Code]</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="229"/> + <source>Save Code</source> + <translation>Enregistrer le code</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="229"/> + <source>Header Files (*.%1)</source> + <translation>Fichiers headers (*.%1)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="235"/> + <source>The file %1 could not be opened: %2</source> + <translation>Le fichier %1 ne peut pas être ouvert : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="240"/> + <source>The file %1 could not be written: %2</source> + <translation>Le fichier %1 ne peut pas être écrit : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="251"/> + <source>%1 - Error</source> + <translation>%1 - Erreur</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ColorAction</name> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="246"/> + <source>Text Color</source> + <translation>Couleur du texte</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ComboBoxTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="68"/> + <source>Edit Items...</source> + <translation>Éditer les éléments...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="106"/> + <source>Change Combobox Contents</source> + <translation>Modifier le contenu du Combobox</translation> + </message> +</context> +<context> + <name>qdesigner_internal::CommandLinkButtonTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="702"/> + <source>Change description...</source> + <translation>Modifier la description...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ConnectionEdit</name> + <message> + <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="1589"/> + <source>Select All</source> + <translation>Tout sélectionner</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="1592"/> + <source>Deselect All</source> + <translation>Désélectionner tout</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="1597"/> + <source>Delete</source> + <translation>Supprimer</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ConnectionModel</name> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="196"/> + <source>Sender</source> + <translation>Émetteur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="197"/> + <source>Signal</source> + <translation>Signal</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="198"/> + <source>Receiver</source> + <translation>Receveur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="199"/> + <source>Slot</source> + <translation>Slot</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="289"/> + <source><sender></source> + <translation><émetteur></translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="290"/> + <source><signal></source> + <translation><signal></translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="291"/> + <source><receiver></source> + <translation><receveur></translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="292"/> + <source><slot></source> + <translation><slot></translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="400"/> + <source>The connection already exists!<br>%1</source> + <translation>La connexion existe déjà !<br>%1</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="402"/> + <source>Signal and Slot Editor</source> + <translation>Éditeur de signaux et slots</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ContainerWidgetTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="79"/> + <source>Delete</source> + <translation>Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="104"/> + <source>Insert</source> + <translation>Insérer</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="107"/> + <source>Insert Page Before Current Page</source> + <translation>Insérer la page avant la page courante</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="111"/> + <source>Insert Page After Current Page</source> + <translation>Insérer la page après la page courante</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="119"/> + <source>Add Subwindow</source> + <translation>Ajouter sous-fenêtre</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="157"/> + <source>Subwindow</source> + <translation>Sous fenêtre</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="159"/> + <source>Page</source> + <translation>Page</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="160"/> + <source>Page %1 of %2</source> + <translation>Page %1 de %2</translation> + </message> +</context> +<context> + <name>qdesigner_internal::DPI_Chooser</name> + <message> + <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="100"/> + <source>System (%1 x %2)</source> + <extracomment>System resolution</extracomment> + <translation>Système (%1 x %2)</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="107"/> + <source>User defined</source> + <translation>Défini par l'utilisateur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="125"/> + <source> x </source> + <extracomment>DPI X/Y separator</extracomment> + <translation> x </translation> + </message> +</context> +<context> + <name>qdesigner_internal::DesignerPropertyManager</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="647"/> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="653"/> + <source>AlignLeft</source> + <translation>AlignementGauche</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="648"/> + <source>AlignHCenter</source> + <translation>AlignementCentreH</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="649"/> + <source>AlignRight</source> + <translation>AlignementDroite</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="650"/> + <source>AlignJustify</source> + <translation>AlignementJustifié</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="659"/> + <source>AlignTop</source> + <translation>AlignementSommet</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="660"/> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="664"/> + <source>AlignVCenter</source> + <translation>AlignementCentreV</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="661"/> + <source>AlignBottom</source> + <translation>AlignementDessous</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1226"/> + <source>%1, %2</source> + <translation>%1, %2</translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1232"/> + <source>Customized (%n roles)</source> + <translation> + <numerusform>Personnalisé (%n rôle)</numerusform> + <numerusform>Personnalisé (%n rôles)</numerusform> + </translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1233"/> + <source>Inherited</source> + <translatorcomment>pour la palette</translatorcomment> + <translation>Héritée</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1799"/> + <source>Horizontal</source> + <translation>Horizontal</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1808"/> + <source>Vertical</source> + <translation>Vertical</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1823"/> + <source>Normal Off</source> + <translation>Arrêt normal</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1824"/> + <source>Normal On</source> + <translation>Marche normal</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1825"/> + <source>Disabled Off</source> + <translation>Arrêt désactivé</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1826"/> + <source>Disabled On</source> + <translation>Marche désactivé</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1827"/> + <source>Active Off</source> + <translation>Arrêt activé</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1828"/> + <source>Active On</source> + <translation>Marche activé</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1829"/> + <source>Selected Off</source> + <translation>Arrêt sélectionné</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1830"/> + <source>Selected On</source> + <translation>Marche sélectionné</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1837"/> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1858"/> + <source>translatable</source> + <translation>Traduisible</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1843"/> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1864"/> + <source>disambiguation</source> + <translation>désambiguation</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1849"/> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="1870"/> + <source>comment</source> + <translation>commentaire</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>Profils d'appareil (*.%1)</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="94"/> + <source>Default</source> + <translation>Par défaut</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="161"/> + <source>Save Profile</source> + <translation>Enregistrer le profil</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="171"/> + <source>Save Profile - Error</source> + <translation>Enregistrer le profile - Erreur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="171"/> + <source>Unable to open the file '%1' for writing: %2</source> + <translation>Impossible d'ouvrir le fichier '%1' en écriture : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="179"/> + <source>Open profile</source> + <translation>Ouvrir profil</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="185"/> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="191"/> + <source>Open Profile - Error</source> + <translation>Ouvrir profil - Erreur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="185"/> + <source>Unable to open the file '%1' for reading: %2</source> + <translation>Impossible d'ouvrir le fichier '%1' en lecture : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="191"/> + <source>'%1' is not a valid profile: %2</source> + <translation>'%1' n'est pas un profil valide : %2</translation> + </message> +</context> +<context> + <name>qdesigner_internal::Dialog</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="53"/> + <source>Dialog</source> + <translation>Boîte de dialogue</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="65"/> + <source>StringList</source> + <translation>Liste de chaîne de caractères</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="93"/> + <source>New String</source> + <translation>Nouvelle chaîne de caractères</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="96"/> + <source>&New</source> + <translation>&Nouveau</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="106"/> + <source>Delete String</source> + <translation>Supprimer la chaîne de caractères</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="109"/> + <source>&Delete</source> + <translation>&Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="142"/> + <source>&Value:</source> + <translation>&Valeur : </translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="180"/> + <source>Move String Up</source> + <translation>Déplacer la chaîne de caractères vers le haut</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="183"/> + <source>Up</source> + <translation>Vers le haut</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="190"/> + <source>Move String Down</source> + <translation>Déplacer la chaîne de caractères vers le bas</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui" line="193"/> + <source>Down</source> + <translation>Vers le bas</translation> + </message> +</context> +<context> + <name>qdesigner_internal::EmbeddedOptionsControl</name> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="160"/> + <source>None</source> + <translation>Aucun</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="164"/> + <source>Add a profile</source> + <translation>Ajouter un profil</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="170"/> + <source>Edit the selected profile</source> + <translation>Éditer le profile sélectionné</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="174"/> + <source>Delete the selected profile</source> + <translation>Supprimer le profil sélectionné</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="196"/> + <source>Add Profile</source> + <translation>Ajouter profil</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="203"/> + <source>New profile</source> + <translation>Nouveau profil</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="238"/> + <source>Edit Profile</source> + <translation>Éditer profil</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="264"/> + <source>Delete Profile</source> + <translation>Supprimer profil</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="265"/> + <source>Would you like to delete the profile '%1'?</source> + <translation>Voulez-vous supprimer le profil '%1' ?</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="320"/> + <source>Default</source> + <translation>Par défaut</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><Filtre></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>Fichier de ressource modifié</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="191"/> + <source>The file "%1" has changed outside Designer. Do you want to reload it?</source> + <translation>Le fichier "%1" a été modifié en dehors de Designer. Voulez-vous le recharger ?</translation> + </message> +</context> +<context> + <name>qdesigner_internal::FormLayoutMenu</name> + <message> + <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="482"/> + <source>Add form layout row...</source> + <translation>Ajouter une ligne au layout du formulaire...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::FormWindow</name> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="441"/> + <source>Edit contents</source> + <translation>Éditer le contenu</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="442"/> + <source>F2</source> + <translation>F2</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1216"/> + <source>Insert widget '%1'</source> + <translation>Insérer le widget '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1283"/> + <source>Resize</source> + <translation>Redimensionner</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1501"/> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1516"/> + <source>Key Move</source> + <translation>Déplacement au clavier</translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1727"/> + <source>Paste %n action(s)</source> + <translation> + <numerusform>Coller %n action</numerusform> + <numerusform>Coller %n actions</numerusform> + </translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1729"/> + <source>Paste %n widget(s)</source> + <translation> + <numerusform>Coller %n widget</numerusform> + <numerusform>Coller %n widgets</numerusform> + </translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1730"/> + <source>Paste (%1 widgets, %2 actions)</source> + <translation>Coller (%1 widgets, %2 actions)</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1786"/> + <source>Cannot paste widgets. Designer could not find a container without a layout to paste into.</source> + <translation>Impossible de coller les widgets. Designer n'a pas trouvé de conteneur sans layout pour coller.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1788"/> + <source>Break the layout of the container you want to paste into, select this container and then paste again.</source> + <translation>Retirez le layout du conteneur dans lequel vous voulez coller, sélectionnez ce conteneur et collez à nouveau.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1792"/> + <source>Paste error</source> + <translation>Erreur de collage</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1975"/> + <source>Raise widgets</source> + <translation>Élever widgets</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="1992"/> + <source>Lower widgets</source> + <translation>Descendre widgets</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="2196"/> + <source>Select Ancestor</source> + <translation>Sélectionner les ancêtres</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="2237"/> + <source>Lay out</source> + <translation>Mettre en page</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="2730"/> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="2785"/> + <source>Drop widget</source> + <translation>Supprimer widget</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="2772"/> + <source>A QMainWindow-based form does not contain a central widget.</source> + <translation>Un formulaire basé sur QMainWindow ne contenant pas de widget central.</translation> + </message> +</context> +<context> + <name>qdesigner_internal::FormWindowBase</name> + <message> + <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="393"/> + <source>Delete '%1'</source> + <translation>Supprimer '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="393"/> + <source>Delete</source> + <translation>Supprimer</translation> + </message> +</context> +<context> + <name>qdesigner_internal::FormWindowManager</name> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="364"/> + <source>Cu&t</source> + <translation>Co&uper</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="367"/> + <source>Cuts the selected widgets and puts them on the clipboard</source> + <translation>Coupe les widgets sélectionnés et les place dans le presse-papiers</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="372"/> + <source>&Copy</source> + <translation>Cop&ier</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="375"/> + <source>Copies the selected widgets to the clipboard</source> + <translation>Copie les widgets sélectionnés dans le presse-papiers</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="380"/> + <source>&Paste</source> + <translation>C&oller</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="383"/> + <source>Pastes the clipboard's contents</source> + <translation>Colle le contenu du presse-papiers</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="388"/> + <source>&Delete</source> + <translation>&Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="390"/> + <source>Deletes the selected widgets</source> + <translation>Supprime les widgets sélectionnés</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="395"/> + <source>Select &All</source> + <translation>Tout &sélectionner</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="398"/> + <source>Selects all widgets</source> + <translation>Sélectionne tous les widgets</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="403"/> + <source>Bring to &Front</source> + <translation>Amener au premier &plan</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="406"/> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="407"/> + <source>Raises the selected widgets</source> + <translation>Élève les widgets sélectionnés</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="411"/> + <source>Send to &Back</source> + <translation>Placer en &arrière plan</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="414"/> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="415"/> + <source>Lowers the selected widgets</source> + <translation>Descend les widgets sélectionnés</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="419"/> + <source>Adjust &Size</source> + <translation>Ajuster les &dimensions</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="422"/> + <source>Adjusts the size of the selected widget</source> + <translation>Ajuster les dimensions du widget sélectionné</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="428"/> + <source>Lay Out &Horizontally</source> + <translation>Mettre en page &horizontalement</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="431"/> + <source>Lays out the selected widgets horizontaly</source> + <translation>Mettre en page horizontalement les widgets sélectionnés</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="437"/> + <source>Lay Out &Vertically</source> + <translation>Mettre en page &verticalement</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="440"/> + <source>Lays out the selected widgets vertically</source> + <translation>Mettre en page verticalement les widgets sélectionnés</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="447"/> + <source>Lay Out in a &Form Layout</source> + <translation>Mettre en page dans un layout de &formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="450"/> + <source>Lays out the selected widgets in a form layout</source> + <translation>Mettre en page les widgets sélectionnés dans un layout de formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="457"/> + <source>Lay Out in a &Grid</source> + <translation>Mettre en page dans une &grille</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="460"/> + <source>Lays out the selected widgets in a grid</source> + <translation>Mettre en page les widgets sélectionnés dans une grille</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="467"/> + <source>Lay Out Horizontally in S&plitter</source> + <translation>Mettre en page horizontalement avec un sé&parateur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="470"/> + <source>Lays out the selected widgets horizontaly in a splitter</source> + <translation>Met en page les widgets sélectionnés horizontalement à l'aide d'un séparateur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="477"/> + <source>Lay Out Vertically in Sp&litter</source> + <translation>Mettre en page verticalement avec un sépa&rateur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="480"/> + <source>Lays out the selected widgets vertically in a splitter</source> + <translation>Met en page les widgets sélectionnés verticalement à l'aide d'un séparateur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="487"/> + <source>&Break Layout</source> + <translation>&Casser la mise en page</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="490"/> + <source>Breaks the selected layout</source> + <translation>Retire le layout sélectionné</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="495"/> + <source>Si&mplify Grid Layout</source> + <translation>Si&mplifier le layout de grille</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="497"/> + <source>Removes empty columns and rows</source> + <translation>Supprime les lignes et colonnes vides</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="503"/> + <source>&Preview...</source> + <translation>&Prévisualisation...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="505"/> + <source>Preview current form</source> + <translation>Prévisualise le formulaire courant</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="520"/> + <source>Form &Settings...</source> + <translation>Paramètres du &formulaire...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="612"/> + <source>Break Layout</source> + <translation>Casser la mise en page</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="638"/> + <source>Adjust Size</source> + <translation>Ajuster les dimensions</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="681"/> + <source>Could not create form preview</source> + <comment>Title of warning message box</comment> + <translation>Impossible de créer la prévisualisation du formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="1022"/> + <source>Form Settings - %1</source> + <translation>Paramètres du formulaire - %1</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>Aucun</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="194"/> + <source>Device Profile: %1</source> + <translation>Profil de périphérique : %1</translation> + </message> +</context> +<context> + <name>qdesigner_internal::GridPanel</name> + <message> + <location filename="../tools/designer/src/lib/shared/gridpanel.ui" line="13"/> + <source>Form</source> + <translation>Formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/gridpanel.ui" line="31"/> + <source>Grid</source> + <translation>Grille</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/gridpanel.ui" line="43"/> + <source>Visible</source> + <translation>Visible</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/gridpanel.ui" line="50"/> + <source>Grid &X</source> + <translation>Grille &X</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/gridpanel.ui" line="76"/> + <location filename="../tools/designer/src/lib/shared/gridpanel.ui" line="133"/> + <source>Snap</source> + <translation>Grille aimantée</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/gridpanel.ui" line="85"/> + <source>Reset</source> + <translation>Réinitialisé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/gridpanel.ui" line="107"/> + <source>Grid &Y</source> + <translation>Grille &Y</translation> + </message> +</context> +<context> + <name>qdesigner_internal::GroupBoxTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="82"/> + <source>Change title...</source> + <translation>Modifier le titre...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::HtmlTextEdit</name> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="188"/> + <source>Insert HTML entity</source> + <translation>Insérer une entité HTML</translation> + </message> +</context> +<context> + <name>qdesigner_internal::IconSelector</name> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="328"/> + <source>The pixmap file '%1' cannot be read.</source> + <translation>Le fichier pixmap '%1' ne peut pas être lu.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="334"/> + <source>The file '%1' does not appear to be a valid pixmap file: %2</source> + <translation>Le fichier '%1' n'est pas un fichier de pixmap valide : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="343"/> + <source>The file '%1' could not be read: %2</source> + <translation>Le fichier '%1' ne peut pas être lu : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="376"/> + <source>Choose a Pixmap</source> + <translation>Choisissez un pixmap</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="383"/> + <source>Pixmap Read Error</source> + <translation>Erreur de lecture de pixmap</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="437"/> + <source>...</source> + <translation>...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="443"/> + <source>Normal Off</source> + <translation>Arrêt normal</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="444"/> + <source>Normal On</source> + <translation>Marche normal</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="445"/> + <source>Disabled Off</source> + <translation>Arrêt désactivé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="446"/> + <source>Disabled On</source> + <translation>Marche désactivé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="447"/> + <source>Active Off</source> + <translation>Arrêt activé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="448"/> + <source>Active On</source> + <translation>Marche activé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="449"/> + <source>Selected Off</source> + <translation>Arrêt sélectionné</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="450"/> + <source>Selected On</source> + <translation>Marche sélectionné</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="458"/> + <source>Choose Resource...</source> + <translation>Choisir ressource...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="459"/> + <source>Choose File...</source> + <translation>Choisir un fichier...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="460"/> + <source>Reset</source> + <translation>Réinitialiser</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="461"/> + <source>Reset All</source> + <translation>Réinitialisé tout</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ItemListEditor</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="68"/> + <source>Items List</source> + <translation>Liste d'éléments</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="77"/> + <source>New Item</source> + <translation>Nouvel élément</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="80"/> + <source>&New</source> + <translation>&Nouveau</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="87"/> + <source>Delete Item</source> + <translation>Supprimer élément</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="90"/> + <source>&Delete</source> + <translation>&Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="110"/> + <source>Move Item Up</source> + <translation>Déplacer l'élément vers le haut</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="113"/> + <source>U</source> + <translation>Monter</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="120"/> + <source>Move Item Down</source> + <translation>Déplacer l'élément vers le bas</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="123"/> + <source>D</source> + <translation>Descendre</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui" line="143"/> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="426"/> + <source>Properties &>></source> + <translation>Propriétés &>></translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="424"/> + <source>Properties &<<</source> + <translation>Propriétés &<<</translation> + </message> +</context> +<context> + <name>qdesigner_internal::LabelTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="85"/> + <source>Change rich text...</source> + <translation>Modifier texte riche...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="86"/> + <source>Change plain text...</source> + <translation>Modifier texte simple...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::LanguageResourceDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="118"/> + <source>Choose Resource</source> + <translation>Choisir ressource</translation> + </message> +</context> +<context> + <name>qdesigner_internal::LineEditTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="80"/> + <source>Change text...</source> + <translation>Modifier texte...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ListWidgetEditor</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="69"/> + <source>New Item</source> + <translation>Nouvel élément</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="101"/> + <source>Edit List Widget</source> + <translation>Éditer le widget de liste</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="120"/> + <source>Edit Combobox</source> + <translation>Éditer le Combobox</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ListWidgetTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="67"/> + <source>Edit Items...</source> + <translation>Éditer les éléments...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="105"/> + <source>Change List Contents</source> + <translation>Modifier le contenu de la liste</translation> + </message> +</context> +<context> + <name>qdesigner_internal::MdiContainerWidgetTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="278"/> + <source>Next Subwindow</source> + <translation>Sous-fenêtre suivante</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="279"/> + <source>Previous Subwindow</source> + <translation>Sous-fenêtre précédente</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="280"/> + <source>Tile</source> + <translation>Côte à côte</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="281"/> + <source>Cascade</source> + <translation>Cascade</translation> + </message> +</context> +<context> + <name>qdesigner_internal::MenuTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="56"/> + <source>Remove</source> + <translation>Supprimer</translation> + </message> +</context> +<context> + <name>qdesigner_internal::MorphMenu</name> + <message> + <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="613"/> + <source>Morph into</source> + <translation>Transformer en</translation> + </message> +</context> +<context> + <name>qdesigner_internal::NewActionDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="46"/> + <source>New Action...</source> + <translation>Nouvelle action...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="54"/> + <source>&Text:</source> + <translation>&Texte :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="74"/> + <source>Object &name:</source> + <translation>&Nom de l'objet :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="87"/> + <source>&Icon:</source> + <translation>&Icône :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="117"/> + <source>Shortcut:</source> + <translation>Raccourci :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="131"/> + <source>Checkable:</source> + <translation>Peut être cochée :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="138"/> + <source>ToolTip:</source> + <translation>Info-bulle :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="157"/> + <location filename="../tools/designer/src/lib/shared/newactiondialog.ui" line="178"/> + <source>...</source> + <translation>...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::NewDynamicPropertyDialog</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui" line="13"/> + <source>Create Dynamic Property</source> + <translation>Créer une propriété dynamique</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui" line="37"/> + <source>Property Name</source> + <translation>Nom de la propriété</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui" line="49"/> + <source>horizontalSpacer</source> + <translation>Espaceur horizontal</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui" line="73"/> + <source>Property Type</source> + <translation>Type de la propriété</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="134"/> + <source>Set Property Name</source> + <translation>Définir le nom de la propriété</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="145"/> + <source>The current object already has a property named '%1'. +Please select another, unique one.</source> + <translation>L'objet courant possède déjà une propriété nommée '%1'. +Veuillez-sélectionner un autre nom.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="149"/> + <source>The '_q_' prefix is reserved for the Qt library. +Please select another name.</source> + <translation>Le préfixe «_q_» est réservé pour la bibliothèque Qt. +Veuillez sélectionner un autre nom.</translation> + </message> +</context> +<context> + <name>qdesigner_internal::NewFormWidget</name> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.ui" line="82"/> + <source>0</source> + <translation>0</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.ui" line="101"/> + <source>Choose a template for a preview</source> + <translation>Choisir un modèle pour la prévisualisation</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.ui" line="145"/> + <source>Embedded Design</source> + <translation>Design pour appareil mobile</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.ui" line="157"/> + <source>Device:</source> + <translation>Appareil :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.ui" line="164"/> + <source>Screen Size:</source> + <translation>Dimensions de l'écran :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="104"/> + <source>Default size</source> + <translation>Dimensions par défaut</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="105"/> + <source>QVGA portrait (240x320)</source> + <translation>QVGA portrait (240x320)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="106"/> + <source>QVGA landscape (320x240)</source> + <translation>QVGA paysage (320x240)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="107"/> + <source>VGA portrait (480x640)</source> + <translation>VGA portrait (480x640)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="108"/> + <source>VGA landscape (640x480)</source> + <translation>VGA paysage (640x480)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="174"/> + <source>Widgets</source> + <extracomment>New Form Dialog Categories</extracomment> + <translation>Widgets</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="175"/> + <source>Custom Widgets</source> + <translation>Widgets personnalisé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="193"/> + <source>None</source> + <translation>Aucun</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="250"/> + <source>Error loading form</source> + <translation>Erreur de chargement du formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="494"/> + <source>Unable to open the form template file '%1': %2</source> + <translation>Impossible d'ouvrir le fichier de modèle de formulaire '%1' : %2</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="561"/> + <source>Internal error: No template selected.</source> + <translation>Erreur interne : aucun modèle sélectionné.</translation> + </message> +</context> +<context> + <name>qdesigner_internal::NewPromotedClassPanel</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="92"/> + <source>Add</source> + <translation>Ajouter</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="94"/> + <source>New Promoted Class</source> + <translation>Nouvelle classe promue</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="109"/> + <source>Base class name:</source> + <translation>Nom de la classe de base :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="110"/> + <source>Promoted class name:</source> + <translation>Nom de la classe promue :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="111"/> + <source>Header file:</source> + <translation>Fichier d'en-tête :</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="112"/> + <source>Global include</source> + <translation>En-tête global</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="123"/> + <source>Reset</source> + <translation>Réinitialiser</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ObjectInspector</name> + <message> + <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="754"/> + <source>&Find in Text...</source> + <translation>&Rechercher dans le texte...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ObjectInspector::ObjectInspectorPrivate</name> + <message> + <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="316"/> + <source>Change Current Page</source> + <translation>Modifier la page courante</translation> + </message> +</context> +<context> + <name>qdesigner_internal::OrderDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/orderdialog.ui" line="53"/> + <source>Change Page Order</source> + <translation>Modifier l'ordre des pages</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/orderdialog.ui" line="59"/> + <source>Page Order</source> + <translation>Ordre des pages</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/orderdialog.ui" line="116"/> + <source>Move page up</source> + <translation>Déplacer la page vers le haut</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/orderdialog.ui" line="123"/> + <source>Move page down</source> + <translation>Déplacer la page vers le bas</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="109"/> + <source>Index %1 (%2)</source> + <translation>Indice %1 (%2)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="112"/> + <source>%1 %2</source> + <translation>%1 %2</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PaletteEditor</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="61"/> + <source>Edit Palette</source> + <translation>Éditer la palette</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="85"/> + <source>Tune Palette</source> + <translation>Ajuster la palette</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="122"/> + <source>Show Details</source> + <translation>Afficher les détails</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="129"/> + <source>Compute Details</source> + <translation>Calculer les détails</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="139"/> + <source>Quick</source> + <translation>Rapide</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="157"/> + <source>Preview</source> + <translation>Prévisualisation</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="169"/> + <source>Disabled</source> + <translation>Désactivé</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="176"/> + <source>Inactive</source> + <translation>Inactif</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui" line="183"/> + <source>Active</source> + <translation>Actif</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PaletteEditorButton</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="57"/> + <source>Change Palette</source> + <translation>Modifier la palette</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PaletteModel</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="374"/> + <source>Color Role</source> + <translation>Rôle de la couleur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="376"/> + <source>Active</source> + <translation>Actif</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="378"/> + <source>Inactive</source> + <translation>Inactif</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="380"/> + <source>Disabled</source> + <translation>Désactivé</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PixmapEditor</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="329"/> + <source>Choose Resource...</source> + <translation>Choisir ressource...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="330"/> + <source>Choose File...</source> + <translation>Choisir fichier...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="331"/> + <source>Copy Path</source> + <translation>Chemin de copie</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="332"/> + <source>Paste Path</source> + <translation>Chemin de collage</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="338"/> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="354"/> + <source>...</source> + <translation>...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PlainTextEditorDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="65"/> + <source>Edit text</source> + <translation>Éditer le texte</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>Composants</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="85"/> + <source>Plugin Information</source> + <translation>Information sur les plugins</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="89"/> + <source>Refresh</source> + <translation>Rafraîchir</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="90"/> + <source>Scan for newly installed custom widget plugins.</source> + <translation>Recherche des plugins personnalisés récemment installés.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="138"/> + <source>Qt Designer couldn't find any plugins</source> + <translation>Qt Designer n'a trouvé aucun plugin</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="141"/> + <source>Qt Designer found the following plugins</source> + <translation>Qt Designer a trouvé les plugins suivants</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="196"/> + <source>New custom widget plugins have been found.</source> + <translation>De nouveaux plugins de widgets ont été trouvés.</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>Style %1</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PreviewConfigurationWidget</name> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="139"/> + <source>Default</source> + <translation>Par défaut</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="161"/> + <source>None</source> + <translation>Aucun</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="167"/> + <source>Browse...</source> + <translation>Parcourir...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PreviewConfigurationWidget::PreviewConfigurationWidgetPrivate</name> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="285"/> + <source>Load Custom Device Skin</source> + <translation>Charger le revêtement d'appareil personnalisé</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="287"/> + <source>All QVFB Skins (*.%1)</source> + <translation>Tous les revêtements QVFB (*.%1)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="303"/> + <source>%1 - Duplicate Skin</source> + <translation>%1 - Revêtement doublon</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="304"/> + <source>The skin '%1' already exists.</source> + <translation>Le revêtement '%1' existe déjà.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="318"/> + <source>%1 - Error</source> + <translation>%1 - -Erreur</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="319"/> + <source>%1 is not a valid skin directory: +%2</source> + <translation>%1 n'est pas un répertoire de revêtements valide : +%2</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PreviewDeviceSkin</name> + <message> + <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="259"/> + <source>&Portrait</source> + <translation>&Portrait</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="261"/> + <source>Landscape (&CCW)</source> + <extracomment>Rotate form preview counter-clockwise</extracomment> + <translation>Paysage (&dans le sens horaire)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="263"/> + <source>&Landscape (CW)</source> + <extracomment>Rotate form preview clockwise</extracomment> + <translation>Paysage (&dans le sens anti-horaire)</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="264"/> + <source>&Close</source> + <translation>&Fermer</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PreviewManager</name> + <message> + <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="690"/> + <source>%1 - [Preview]</source> + <translation>%1 - [prévisualisation]</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PreviewMdiArea</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="72"/> + <source>The moose in the noose +ate the goose who was loose.</source> + <extracomment>Palette editor background</extracomment> + <translation>Au site de Bologne, +je préfère les mines de Pompéi.</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PreviewWidget</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="61"/> + <source>Preview Window</source> + <translation>Fenêtre de prévisualisation</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="81"/> + <source>LineEdit</source> + <translation>LineEdit</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="89"/> + <source>ComboBox</source> + <translation>ComboBox</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="108"/> + <source>PushButton</source> + <translation>PushButton</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="166"/> + <source>ButtonGroup2</source> + <translation>ButtonGroup2</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="178"/> + <source>CheckBox1</source> + <translation>CheckBox1</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="188"/> + <source>CheckBox2</source> + <translation>CheckBox2</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="198"/> + <source>ButtonGroup</source> + <translation>ButtonGroup</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="210"/> + <source>RadioButton1</source> + <translation>RadioButton1</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="220"/> + <source>RadioButton2</source> + <translation>RadioButton2</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui" line="227"/> + <source>RadioButton3</source> + <translation>BoutonRadio1</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PromotionModel</name> + <message> + <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="129"/> + <source>Name</source> + <translation>Nom</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="130"/> + <source>Header file</source> + <translation>Fichier d'en-tête</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="131"/> + <source>Global include</source> + <translation>En-tête global</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="132"/> + <source>Usage</source> + <translation>Usage</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>Widgets promus...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="86"/> + <source>Promote to ...</source> + <translation>Promouvoir en...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="87"/> + <source>Change signals/slots...</source> + <translation>Modifier signaux/slots...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="88"/> + <source>Promote to</source> + <translation>Promouvoir en</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="89"/> + <source>Demote to %1</source> + <translation>Rétrograder en %1</translation> + </message> +</context> +<context> + <name>qdesigner_internal::PropertyEditor</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="183"/> + <source>Add Dynamic Property...</source> + <translation>Ajouter une propriété dynamique...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="184"/> + <source>Remove Dynamic Property</source> + <translation>Supprimer la propriété dynamique</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="185"/> + <source>Sorting</source> + <translation>Tri</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="186"/> + <source>Color Groups</source> + <translation>Groupes de couleur</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="187"/> + <source>Tree View</source> + <translation>Vue arborescente</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="188"/> + <source>Drop Down Button View</source> + <translation type="unfinished">Liste déroulante</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="238"/> + <source>String...</source> + <translation>Chaîne de caractères...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="241"/> + <source>Bool...</source> + <translation>Booléen...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="245"/> + <source>Other...</source> + <translation>Autre...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="252"/> + <source>Configure Property Editor</source> + <translation>Configurer l'éditeur de propriétés</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="785"/> + <source>Object: %1 +Class: %2</source> + <translation>Objet : %1 +Classe : %2</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>Insérer saut de ligne</translation> + </message> +</context> +<context> + <name>qdesigner_internal::QDesignerPromotionDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="208"/> + <source>Promoted Widgets</source> + <translation>Widgets promus</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="215"/> + <source>Promoted Classes</source> + <translation>Classes promues</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="275"/> + <source>Promote</source> + <translation>Promouvoir</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="427"/> + <source>Change signals/slots...</source> + <translation>Modifier signaux/slots...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="444"/> + <source>%1 - Error</source> + <translation>%1 - Erreur</translation> + </message> +</context> +<context> + <name>qdesigner_internal::QDesignerResource</name> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="2354"/> + <source>Loading qrc file</source> + <translation>Chargement du fichier qrc</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="2355"/> + <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>Le fichier qrc spécifié <p><b>%1</b></p><p>n'a pas pu être trouvé. Voulez-vous mettre à jour l'emplacement du fichier?</p></translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="2361"/> + <source>New location for %1</source> + <translation>Nouvel emplacement pour %1</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="2362"/> + <source>Resource files (*.qrc)</source> + <translation>Fichier de ressource (*.qrc)</translation> + </message> +</context> +<context> + <name>qdesigner_internal::QDesignerTaskMenu</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="230"/> + <source>Change objectName...</source> + <translation>Modifier objectName...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="231"/> + <source>Change toolTip...</source> + <translation>Modifier toolTip...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="232"/> + <source>Change whatsThis...</source> + <translation>Modifier whatsThis...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="233"/> + <source>Change styleSheet...</source> + <translation>Modifier la feuille de style...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="236"/> + <source>Create Menu Bar</source> + <translation>Créer une barre de menus</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="237"/> + <source>Add Tool Bar</source> + <translation>Ajouter une barre d'outils</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="238"/> + <source>Create Status Bar</source> + <translation>Créer une barre de status</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="239"/> + <source>Remove Status Bar</source> + <translation>Supprimer la barre de status</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="240"/> + <source>Change script...</source> + <translation>Modifier le script...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="241"/> + <source>Change signals/slots...</source> + <translation>Modifier signaux/slots...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="242"/> + <source>Go to slot...</source> + <translation>Aller au slot...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="245"/> + <source>Size Constraints</source> + <translation>Contrainte de taille</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="249"/> + <source>Set Minimum Width</source> + <translation>Définir la largeur minimum</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="253"/> + <source>Set Minimum Height</source> + <translation>Définir la hauteur minimum</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="257"/> + <source>Set Minimum Size</source> + <translation>Définir la taille minimum</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="263"/> + <source>Set Maximum Width</source> + <translation>Définir la largeur maximum</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="267"/> + <source>Set Maximum Height</source> + <translation>Définir la hauteur maximum</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="271"/> + <source>Set Maximum Size</source> + <translation>Définir la taille maximum</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="506"/> + <source>Edit ToolTip</source> + <translation>Éditer l'info-bulle</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="511"/> + <source>Edit WhatsThis</source> + <translation>Éditer «Qu'est-ce»</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="655"/> + <source>no signals available</source> + <translation>Aucun signal disponible</translation> + </message> + <message numerus="yes"> + <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="722"/> + <source>Set size constraint on %n widget(s)</source> + <translation> + <numerusform>Définir les contraintes de dimensions sur %n widget</numerusform> + <numerusform>Définir les contraintes de dimensions sur %n widgets</numerusform> + </translation> + </message> +</context> +<context> + <name>qdesigner_internal::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>Une erreur a été rencontrée à la ligne %1 de %2 : %3</translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="488"/> + <source>Unexpected element <%1> encountered when parsing for <widget> or <ui></source> + <translation>L'élément inattendu <%1> a été rencontré lors de l'analyse des élements <widget> et <ui></translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="507"/> + <source>Unexpected end of file encountered when parsing widgets.</source> + <translation>Fin de fichier inattendue lors de l'analyse grammaticale des widgets.</translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="516"/> + <source>A widget element could not be found.</source> + <translation>Un élement de widget n'a pas pu être trouvé.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="123"/> + <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="136"/> + <source>Unexpected element <%1></source> + <translation>Élément <%1> inattendu</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="143"/> + <source>A parse error occurred at line %1, column %2 of the XML code specified for the widget %3: %4 +%5</source> + <translation>Une erreur d'analyse grammaticale est apparue à la ligne %1, colonne %2 du code XML spécifiant le widget %3 : %4 +%5</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="152"/> + <source>The XML code specified for the widget %1 does not contain any widget elements. +%2</source> + <translation>Le code XML spécifié pour le widget %1 ne contient aucun élément widget. +%2</translation> + </message> +</context> +<context> + <name>qdesigner_internal::QtGradientStopsController</name> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="173"/> + <source>H</source> + <translation>T</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="174"/> + <source>S</source> + <translation>S</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="175"/> + <source>V</source> + <translation>V</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="181"/> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="185"/> + <source>Hue</source> + <translation>Teinte</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="182"/> + <source>Sat</source> + <translation>Sat</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="183"/> + <source>Val</source> + <translation>Val</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="186"/> + <source>Saturation</source> + <translation>Saturation</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="187"/> + <source>Value</source> + <translation>Valeur</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="209"/> + <source>R</source> + <translation>R</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="210"/> + <source>G</source> + <translation>V</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="211"/> + <source>B</source> + <translation>B</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="217"/> + <source>Red</source> + <translation>Rouge</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="218"/> + <source>Green</source> + <translation>Vert</translation> + </message> + <message> + <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="219"/> + <source>Blue</source> + <translation>Bleu</translation> + </message> +</context> +<context> + <name>qdesigner_internal::RichTextEditorDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="624"/> + <source>Edit text</source> + <translation>Éditer le texte</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="647"/> + <source>Rich Text</source> + <translation>Texte riche</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="648"/> + <source>Source</source> + <translation>Source</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="654"/> + <source>&OK</source> + <translation>&OK</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="656"/> + <source>&Cancel</source> + <translation>&Annuler</translation> + </message> +</context> +<context> + <name>qdesigner_internal::RichTextEditorToolBar</name> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="354"/> + <source>Bold</source> + <translation>Gras</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="355"/> + <source>CTRL+B</source> + <translation>CTRL+B</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="360"/> + <source>Italic</source> + <translation>Italique</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="361"/> + <source>CTRL+I</source> + <translation>CTRL+I</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="366"/> + <source>Underline</source> + <translation>Souligné</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="367"/> + <source>CTRL+U</source> + <translation>CTRL+U</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="380"/> + <source>Left Align</source> + <translation>Aligner à gauche</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="385"/> + <source>Center</source> + <translation>Centrer</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="390"/> + <source>Right Align</source> + <translation>Aligner à droite</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="395"/> + <source>Justify</source> + <translation>Justifier</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="404"/> + <source>Superscript</source> + <translation>Exposant</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="410"/> + <source>Subscript</source> + <translation>Indice</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="419"/> + <source>Insert &Link</source> + <translation>Insérer &lien</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="424"/> + <source>Insert &Image</source> + <translation>Insérer &image</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ScriptDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="66"/> + <source>Edit script</source> + <translation>Éditer le script</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="71"/> + <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><html>Entrez un snippet de code Qt Script à exécuter lors du chargement du formulaire.<br>Le widget et ses enfants sont accessibles via les variables <i>widget</i> et <i>childWidgets</i>, respectivement.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="122"/> + <source>Syntax error</source> + <translation>Erreur de syntaxe</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ScriptErrorDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="86"/> + <source>Script errors</source> + <translation>Erreurs de script</translation> + </message> +</context> +<context> + <name>qdesigner_internal::SignalSlotDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="401"/> + <source>There is already a slot with the signature '%1'.</source> + <translation>Un slot existe déjà avec la signature '%1'.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="406"/> + <source>There is already a signal with the signature '%1'.</source> + <translation>Un signal existe déjà avec la signature '%1'.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="413"/> + <source>%1 - Duplicate Signature</source> + <translation>%1 - Signature double</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="434"/> + <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="510"/> + <source>Signals/Slots of %1</source> + <translation>Signaux/slots de %1</translation> + </message> +</context> +<context> + <name>qdesigner_internal::SignalSlotEditorPlugin</name> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="72"/> + <source>Edit Signals/Slots</source> + <translation>Éditer signaux/slots</translation> + </message> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="74"/> + <source>F4</source> + <translation>F4</translation> + </message> +</context> +<context> + <name>qdesigner_internal::SignalSlotEditorTool</name> + <message> + <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="58"/> + <source>Edit Signals/Slots</source> + <translation>Éditer signaux/slots</translation> + </message> +</context> +<context> + <name>qdesigner_internal::StatusBarTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="81"/> + <source>Remove</source> + <translation>Supprimer</translation> + </message> +</context> +<context> + <name>qdesigner_internal::StringListEditorButton</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="56"/> + <source>Change String List</source> + <translation>Modifier la liste de chaîne de caractères</translation> + </message> +</context> +<context> + <name>qdesigner_internal::StyleSheetEditorDialog</name> + <message> + <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="90"/> + <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="370"/> + <source>Valid Style Sheet</source> + <translation>Feuille de style valide</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="92"/> + <source>Add Resource...</source> + <translation>Ajouter ressource...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="93"/> + <source>Add Gradient...</source> + <translation>Ajouter gradient...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="94"/> + <source>Add Color...</source> + <translation>Ajouter couleur...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="95"/> + <source>Add Font...</source> + <translation>Ajouter police...</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="97"/> + <source>Edit Style Sheet</source> + <translation>Éditer feuille de style</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="373"/> + <source>Invalid Style Sheet</source> + <translation>Feuille de style invalide</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>Démarrer à partir d'ici</translation> + </message> + <message> + <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="366"/> + <source>Restart</source> + <translation>Redémarrer</translation> + </message> + <message> + <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="368"/> + <source>Tab Order List...</source> + <translation>Ordre de la liste de tabulation...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="412"/> + <source>Tab Order List</source> + <translation>Ordre de la liste de tabulation</translation> + </message> + <message> + <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="413"/> + <source>Tab Order</source> + <translation>Ordre des tabulations</translation> + </message> +</context> +<context> + <name>qdesigner_internal::TabOrderEditorPlugin</name> + <message> + <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="73"/> + <source>Edit Tab Order</source> + <translation>Éditer l'ordre des tabulations</translation> + </message> +</context> +<context> + <name>qdesigner_internal::TabOrderEditorTool</name> + <message> + <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="57"/> + <source>Edit Tab Order</source> + <translation>Éditer l'ordre des tabulations</translation> + </message> +</context> +<context> + <name>qdesigner_internal::TableWidgetEditor</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui" line="53"/> + <source>Edit Table Widget</source> + <translation>Éditer le widget de table</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui" line="63"/> + <source>&Items</source> + <translation>&Éléments</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui" line="75"/> + <source>Table Items</source> + <translation>Éléments de la table</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui" line="97"/> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="218"/> + <source>Properties &>></source> + <translation>Propriétés &>></translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="67"/> + <source>New Column</source> + <translation>Nouvelle colonne</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="70"/> + <source>New Row</source> + <translation>Nouvelle ligne</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="78"/> + <source>&Columns</source> + <translation>&Colonne</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="79"/> + <source>&Rows</source> + <translation>&Lignes</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="216"/> + <source>Properties &<<</source> + <translation>Propriétés &<<</translation> + </message> +</context> +<context> + <name>qdesigner_internal::TableWidgetTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="64"/> + <source>Edit Items...</source> + <translation>Éditer les éléments...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::TemplateOptionsWidget</name> + <message> + <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui" line="13"/> + <source>Form</source> + <translation>Formulaire</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui" line="19"/> + <source>Additional Template Paths</source> + <translation>Chemins de modèles additionnels</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui" line="28"/> + <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui" line="35"/> + <source>...</source> + <translation>...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="138"/> + <source>Pick a directory to save templates in</source> + <translation>Choisir un répertoire où enregistrer les modèles</translation> + </message> +</context> +<context> + <name>qdesigner_internal::TextEditTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="58"/> + <source>Edit HTML</source> + <translation>Éditer le HTML</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="59"/> + <source>Change HTML...</source> + <translation>Modifier le HTML...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="68"/> + <source>Edit Text</source> + <translation>Éditer le texte</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="69"/> + <source>Change Plain Text...</source> + <translation>Modifier le texte simple...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::TextEditor</name> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="150"/> + <source>Choose Resource...</source> + <translation>Choisir ressource...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="151"/> + <source>Choose File...</source> + <translation>Choisir fichier...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="156"/> + <source>...</source> + <translation>...</translation> + </message> + <message> + <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="274"/> + <source>Choose a File</source> + <translation>Choisir un fichier</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ToolBarEventFilter</name> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="148"/> + <source>Insert Separator before '%1'</source> + <translation>Insérer un séparateur avant '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="157"/> + <source>Append Separator</source> + <translation>Ajouter un séparateur à la fin</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="169"/> + <source>Remove action '%1'</source> + <translation>Supprimer l'action '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="176"/> + <source>Remove Toolbar '%1'</source> + <translation>Supprimer la barre d'outils '%1'</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="234"/> + <source>Insert Separator</source> + <translation>Insérer un séparateur</translation> + </message> +</context> +<context> + <name>qdesigner_internal::TreeWidgetEditor</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="53"/> + <source>Edit Tree Widget</source> + <translation>Éditer un widget d'arborescence</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="63"/> + <source>&Items</source> + <translation>&Éléments</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="87"/> + <source>Tree Items</source> + <translation>Élément de l'arbre</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="91"/> + <source>1</source> + <translation>1</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="101"/> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="199"/> + <source>New Item</source> + <translation>Nouvel élément</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="104"/> + <source>&New</source> + <translation>&Nouveau</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="111"/> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="218"/> + <source>New Subitem</source> + <translation>Nouveau sous-élément</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="114"/> + <source>New &Subitem</source> + <translation>Nouveau &sous-élément</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="121"/> + <source>Delete Item</source> + <translation>Supprimer l'élément</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="124"/> + <source>&Delete</source> + <translation>&Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="144"/> + <source>Move Item Left (before Parent Item)</source> + <translation>Déplacer l'élément à gauche (avant l'élément parent)</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="147"/> + <source>L</source> + <translation>G</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="154"/> + <source>Move Item Right (as a First Subitem of the Next Sibling Item)</source> + <translation>Déplacer l'élément sur la droite (comme un premier sous-élément de l'élément à droite)</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="157"/> + <source>R</source> + <translation>D</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="164"/> + <source>Move Item Up</source> + <translation>Déplacer l'élément vers le haut</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="167"/> + <source>U</source> + <translation>H</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="174"/> + <source>Move Item Down</source> + <translation>Déplacer l'élément vers le bas</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="177"/> + <source>D</source> + <translation>B</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui" line="197"/> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="395"/> + <source>Properties &>></source> + <translation>Propriétés &>></translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="68"/> + <source>New Column</source> + <translation>Nouvelle colonne</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="76"/> + <source>&Columns</source> + <translation>&Colonnes</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="145"/> + <source>Per column properties</source> + <translation>Propriétés par colonnes</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="146"/> + <source>Common properties</source> + <translation>Propritétés de colonnes</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="393"/> + <source>Properties &<<</source> + <translation>Propriétés &<<</translation> + </message> +</context> +<context> + <name>qdesigner_internal::TreeWidgetTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="63"/> + <source>Edit Items...</source> + <translation>Éditer les éléments...</translation> + </message> +</context> +<context> + <name>qdesigner_internal::WidgetBox</name> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="115"/> + <source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source> + <translation>Avertissement : La création du widget a échoué dans la boîte de widget. Ceci peut être causé par un code XML invalide d'un widget personnalisé.</translation> + </message> +</context> +<context> + <name>qdesigner_internal::WidgetBoxTreeWidget</name> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="248"/> + <source>Scratchpad</source> + <translation>bloc-notes</translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="618"/> + <source>Custom Widgets</source> + <translation>Widgets personnalisés</translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="881"/> + <source>Expand all</source> + <translation>Tout étendre</translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="882"/> + <source>Collapse all</source> + <translation>Tout replier</translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="885"/> + <source>List View</source> + <translation>Vue de liste</translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="886"/> + <source>Icon View</source> + <translation>Vue en icônes</translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="901"/> + <source>Remove</source> + <translation>Supprimer</translation> + </message> + <message> + <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="903"/> + <source>Edit name</source> + <translation>Éditer le nom</translation> + </message> +</context> +<context> + <name>qdesigner_internal::WidgetDataBase</name> + <message> + <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="403"/> + <source>A custom widget plugin whose class name (%1) matches that of an existing class has been found.</source> + <translation>Un plugin de widgets personnalisés dont un nom de classe (%1) correspond à une classe existante à été trouvé.</translation> + </message> +</context> +<context> + <name>qdesigner_internal::WidgetEditorTool</name> + <message> + <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="67"/> + <source>Edit Widgets</source> + <translation>Éditer les widgets</translation> + </message> +</context> +<context> + <name>qdesigner_internal::WidgetFactory</name> + <message> + <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="263"/> + <source>The custom widget factory registered for widgets of class %1 returned 0.</source> + <translation>La fabrique (factory) de widget personnalisé, enregistrée pour les widgets de classe %1, a retourné 0.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="307"/> + <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>Une discordance de nom de classe est apparue lors de la création d'un nouveau widget à l'aide de la fabrique de widget personnalisé enregistrée pour la classe %1. La fabrique a retourné un widget de classe %2.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="406"/> + <source>%1 Widget</source> + <translation>%1 Widget</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="496"/> + <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>Le conteneur '%1' de la page courante (%2) n'a pas pu être déterminé lors de la création du layout. Ceci indique une incohérence dans le fichier ui, probablement un layout étant construit sur un widget conteneur.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="549"/> + <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>Temptative d'ajout d'un layout sur le widget '%1' (%2) qui a déjà un layout non pris en charge de type %3. +Ceci indique une inconsistance dans le fichier ui.</translation> + </message> + <message> + <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="760"/> + <source>Cannot create style '%1'.</source> + <translation>Impossible de créer le style '%1'.</translation> + </message> +</context> +<context> + <name>qdesigner_internal::WizardContainerWidgetTaskMenu</name> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="232"/> + <source>Next</source> + <translation>Suivant</translation> + </message> + <message> + <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="233"/> + <source>Back</source> + <translation>Précédent</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>%1 %</translation> + </message> +</context> +<context> + <name>qdesigner_internal::ZoomablePreviewDeviceSkin</name> + <message> + <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="420"/> + <source>&Zoom</source> + <translation>&Zoom</translation> + </message> +</context> +</TS> diff --git a/translations/qt_fr.ts b/translations/qt_fr.ts index 9ea1f0b..20534c1 100644 --- a/translations/qt_fr.ts +++ b/translations/qt_fr.ts @@ -50,7 +50,7 @@ </message> <message> <source>remote media URL:</source> - <translation type="obsolete">URL distante :</translation> + <translation type="obsolete">URL distante :</translation> </message> <message> <source>run tests</source> @@ -58,7 +58,7 @@ </message> <message> <source>testing: %p%</source> - <translation type="obsolete">test de : %P%</translation> + <translation type="obsolete">test de : %P%</translation> </message> </context> <context> @@ -197,7 +197,7 @@ have libgstreamer-plugins-base installed.</source> </message> <message> <source>Unknown media format: %1</source> - <translation type="obsolete">Format inconnu : %1</translation> + <translation type="obsolete">Format inconnu : %1</translation> </message> <message> <source>Unable to flush media pipeline</source> @@ -332,13 +332,13 @@ have libgstreamer-plugins-base installed.</source> <message> <location line="+8"/> <source>Read: %1</source> - <translation>Lecture : %1</translation> + <translation>Lecture : %1</translation> </message> <message> <location line="+6"/> <location line="+30"/> <source>Write: %1</source> - <translation>Écriture : %1</translation> + <translation>Écriture : %1</translation> </message> <message> <location line="-22"/> @@ -388,19 +388,19 @@ have libgstreamer-plugins-base installed.</source> <message> <location line="-1991"/> <source>Look &in:</source> - <translation>Chercher &dans :</translation> + <translation>Chercher &dans :</translation> </message> <message> <location line="+1"/> <location line="+1981"/> <location line="+16"/> <source>File &name:</source> - <translation>&Nom de fichier :</translation> + <translation>&Nom de fichier :</translation> </message> <message> <location line="-1996"/> <source>File &type:</source> - <translation>&Type de fichier :</translation> + <translation>&Type de fichier :</translation> </message> <message> <location line="+7"/> @@ -581,7 +581,7 @@ have libgstreamer-plugins-base installed.</source> <message> <location line="+1"/> <source><qt>Are you sure you wish to delete %1 "%2"?</qt></source> - <translation><qt>Voulez-vous vraiment supprimer %1 "%2"?</qt></translation> + <translation><qt>Voulez-vous vraiment supprimer %1 "%2" ?</qt></translation> </message> <message> <location line="+2"/> @@ -622,7 +622,7 @@ have libgstreamer-plugins-base installed.</source> <message> <location line="-2"/> <source>Directory:</source> - <translation>Dossier :</translation> + <translation>Dossier :</translation> </message> <message> <location line="+40"/> @@ -774,7 +774,7 @@ en <message> <location line="+1"/> <source>&Redo</source> - <translation>A&nnuler Annuler</translation> + <translation>&Rétablir</translation> </message> <message> <location line="+5"/> @@ -1038,7 +1038,7 @@ en <message> <location line="+2"/> <source>Incompatible Qt Library Error</source> - <translation>Erreur : bibliothèque Qt incompatible</translation> + <translation>Erreur : bibliothèque Qt incompatible</translation> </message> <message> <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/> @@ -1071,7 +1071,7 @@ en <message> <location/> <source>COM &Object:</source> - <translation>&Objet COM :</translation> + <translation>&Objet COM :</translation> </message> </context> <context> @@ -1097,37 +1097,37 @@ en <message> <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/> <source>Hu&e:</source> - <translation>&Teinte :</translation> + <translation>&Teinte :</translation> </message> <message> <location line="+1"/> <source>&Sat:</source> - <translation>&Saturation :</translation> + <translation>&Saturation :</translation> </message> <message> <location line="+1"/> <source>&Val:</source> - <translation>&Valeur :</translation> + <translation>&Valeur :</translation> </message> <message> <location line="+1"/> <source>&Red:</source> - <translation>&Rouge :</translation> + <translation>&Rouge :</translation> </message> <message> <location line="+1"/> <source>&Green:</source> - <translation>&Vert :</translation> + <translation>&Vert :</translation> </message> <message> <location line="+1"/> <source>Bl&ue:</source> - <translation>Ble&u :</translation> + <translation>Ble&u :</translation> </message> <message> <location line="+1"/> <source>A&lpha channel:</source> - <translation>Canal a&lpha :</translation> + <translation>Canal a&lpha :</translation> </message> <message> <location line="+101"/> @@ -1339,7 +1339,7 @@ en <message> <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/> <source>What's This?</source> - <translation>Qu'est-ce que c'est ?</translation> + <translation>Qu'est-ce que c'est ?</translation> </message> <message> <location line="-115"/> @@ -1572,7 +1572,7 @@ en <message> <location line="-108"/> <source>Cannot remove source file</source> - <translation type="unfinished"></translation> + <translation>Impossible de supprimer le fichier source</translation> </message> <message> <location line="+120"/> @@ -1669,7 +1669,7 @@ en <location line="+1054"/> <source>%1 already exists. Do you want to replace it?</source> - <translation>Le fichier %1 existe déjà. Voulez-vous l'écraser ?</translation> + <translation>Le fichier %1 existe déjà. Voulez-vous l'écraser ?</translation> </message> <message> <location line="+20"/> @@ -1683,7 +1683,7 @@ Veuillez vérifier que le nom du fichier est correct.</translation> <message> <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+402"/> <source>My Computer</source> - <translation>Mon ordinateur</translation> + <translation>Poste de travail</translation> </message> <message> <location filename="../src/gui/dialogs/qfiledialog.ui"/> @@ -1695,13 +1695,13 @@ Veuillez vérifier que le nom du fichier est correct.</translation> <location/> <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/> <source>Files of type:</source> - <translation>Fichiers de type :</translation> + <translation>Fichiers de type :</translation> </message> <message> <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1496"/> <location line="+648"/> <source>Directory:</source> - <translation>Dossier :</translation> + <translation>Dossier :</translation> </message> <message> <source> @@ -1726,12 +1726,12 @@ Veuillez vérifier que le nom du dossier est correct.</translation> <source>'%1' is write protected. Do you want to delete it anyway?</source> <translation>'%1' est protégé en écriture. -Voulez-vous quand même le supprimer?</translation> +Voulez-vous quand même le supprimer ?</translation> </message> <message> <location line="+5"/> <source>Are sure you want to delete '%1'?</source> - <translation>Etes-vous sûr de vouloir supprimer '%1'?</translation> + <translation>Etes-vous sûr de vouloir supprimer '%1' ?</translation> </message> <message> <location line="+15"/> @@ -1805,7 +1805,7 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/> <location line="+652"/> <source>File &name:</source> - <translation>&Nom de fichier :</translation> + <translation>&Nom de fichier :</translation> </message> <message> <location filename="../src/gui/dialogs/qfiledialog.ui"/> @@ -2243,7 +2243,7 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/> <source>Listing directory failed: %1</source> - <translation>Échec du listage du dossier : + <translation>Échec du listage du dossier : %1</translation> </message> <message> @@ -2251,7 +2251,7 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/> <source>Changing directory failed: %1</source> - <translation>Échec du changement de dossier : + <translation>Échec du changement de dossier : %1</translation> </message> <message> @@ -2259,7 +2259,7 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/> <source>Downloading file failed: %1</source> - <translation>Échec du téléchargement du fichier : + <translation>Échec du téléchargement du fichier : %1</translation> </message> <message> @@ -2267,7 +2267,7 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/> <source>Uploading file failed: %1</source> - <translation>Échec du télédéchargement : + <translation>Échec du télédéchargement : %1</translation> </message> <message> @@ -2275,7 +2275,7 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/> <source>Removing file failed: %1</source> - <translation>Échec de la suppression d'un fichier : + <translation>Échec de la suppression d'un fichier : %1</translation> </message> <message> @@ -2283,7 +2283,7 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/> <source>Creating directory failed: %1</source> - <translation>Échec de la création d'un dossier : + <translation>Échec de la création d'un dossier : %1</translation> </message> <message> @@ -2291,7 +2291,7 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/> <source>Removing directory failed: %1</source> - <translation>Échec de la suppression d'un dossier : + <translation>Échec de la suppression d'un dossier : %1</translation> </message> <message> @@ -2440,7 +2440,7 @@ Voulez-vous quand même le supprimer?</translation> <message> <location line="+28"/> <source>Unknown authentication method</source> - <translation type="unfinished"></translation> + <translation>Méthode d'authentification inconnue</translation> </message> <message> <location line="+97"/> @@ -2718,7 +2718,7 @@ Voulez-vous quand même le supprimer?</translation> <message> <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/> <source>Enter a value:</source> - <translation>Entrer une valeur :</translation> + <translation>Entrer une valeur :</translation> </message> </context> <context> @@ -2738,7 +2738,7 @@ Voulez-vous quand même le supprimer?</translation> <message> <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/> <source>Could not mmap '%1': %2</source> - <translation>Impossible d'établir la projection en mémoire de '%1' : %2</translation> + <translation>Impossible d'établir la projection en mémoire de '%1' : %2</translation> </message> <message> <location line="+22"/> @@ -2748,7 +2748,7 @@ Voulez-vous quand même le supprimer?</translation> <message> <location line="+6"/> <source>Could not unmap '%1': %2</source> - <translation>Impossible de supprimer la projection en mémoire de '%1' : %2</translation> + <translation>Impossible de supprimer la projection en mémoire de '%1' : %2</translation> </message> <message> <location line="+302"/> @@ -2785,19 +2785,19 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/> <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/> <source>Cannot load library %1: %2</source> - <translation>Impossible de charger la bibliothèque %1 : %2</translation> + <translation>Impossible de charger la bibliothèque %1 : %2</translation> </message> <message> <location line="+16"/> <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+26"/> <source>Cannot unload library %1: %2</source> - <translation>Impossible de décharger la bibliothèque %1 : %2</translation> + <translation>Impossible de décharger la bibliothèque %1 : %2</translation> </message> <message> <location line="+31"/> <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+15"/> <source>Cannot resolve symbol "%1" in %2: %3</source> - <translation>Impossible de résoudre le symbole "%1" dans %2 : %3</translation> + <translation>Impossible de résoudre le symbole "%1" dans %2 : %3</translation> </message> </context> <context> @@ -2815,7 +2815,7 @@ Voulez-vous quand même le supprimer?</translation> <message> <location line="+4"/> <source>&Redo</source> - <translation>A&nnuler Annuler</translation> + <translation>&Rétablir</translation> </message> <message> <location line="+7"/> @@ -2925,7 +2925,7 @@ Voulez-vous quand même le supprimer?</translation> <message> <location line="+4"/> <source>%1: Unknown error</source> - <translation>%1 : erreur inconnue</translation> + <translation>%1 : erreur inconnue</translation> </message> <message> <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+4"/> @@ -3424,22 +3424,22 @@ Voulez-vous quand même le supprimer?</translation> <message> <location line="+42"/> <source>Error opening %1: %2</source> - <translation>Erreur lors de l'ouverture de %1 : %2</translation> + <translation>Erreur lors de l'ouverture de %1 : %2</translation> </message> <message> <location line="+56"/> <source>Write error writing to %1: %2</source> - <translation>Erreur d'écriture de %1 : %2</translation> + <translation>Erreur d'écriture de %1 : %2</translation> </message> <message> <location line="+33"/> <source>Cannot open %1: Path is a directory</source> - <translation>Impossible d'ouvrir %1 : le chemin est un dossier</translation> + <translation>Impossible d'ouvrir %1 : le chemin est un dossier</translation> </message> <message> <location line="+21"/> <source>Read error reading from %1: %2</source> - <translation>Erreur de lecture de %1 : %2</translation> + <translation>Erreur de lecture de %1 : %2</translation> </message> </context> <context> @@ -3452,22 +3452,22 @@ Voulez-vous quand même le supprimer?</translation> <message> <location line="+14"/> <source>Cannot open %1: is a directory</source> - <translation>Impossible d'ouvrir %1 : le chemin est un dossier</translation> + <translation>Impossible d'ouvrir %1 : le chemin est un dossier</translation> </message> <message> <location line="+130"/> <source>Logging in to %1 failed: authentication required</source> - <translation>Connexion à %1 a échoué : authentification requise</translation> + <translation>Connexion à %1 a échoué : authentification requise</translation> </message> <message> <location line="+39"/> <source>Error while downloading %1: %2</source> - <translation>Erreur lors du téléchargement de %1 : %2</translation> + <translation>Erreur lors du téléchargement de %1 : %2</translation> </message> <message> <location line="+2"/> <source>Error while uploading %1: %2</source> - <translation>Erreur lors de l'envoi de %1 : %2</translation> + <translation>Erreur lors de l'envoi de %1 : %2</translation> </message> </context> <context> @@ -3673,22 +3673,22 @@ Voulez-vous quand même le supprimer?</translation> <message> <location line="+53"/> <source>Invalid URI: %1</source> - <translation>URI invalide : %1</translation> + <translation>URI invalide : %1</translation> </message> <message> <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/> <source>Write error writing to %1: %2</source> - <translation>Erreur d'écriture sur %1 : %2</translation> + <translation>Erreur d'écriture sur %1 : %2</translation> </message> <message> <location line="+57"/> <source>Read error reading from %1: %2</source> - <translation>Erreur de lecture sur %1 : %2</translation> + <translation>Erreur de lecture sur %1 : %2</translation> </message> <message> <location line="+31"/> <source>Socket error on %1: %2</source> - <translation>Erreur de socket sur %1 : %2</translation> + <translation>Erreur de socket sur %1 : %2</translation> </message> <message> <location line="+15"/> @@ -3801,22 +3801,22 @@ Voulez-vous quand même le supprimer?</translation> <message> <location/> <source>Page size:</source> - <translation>Dimensions :</translation> + <translation>Dimensions :</translation> </message> <message> <location/> <source>Width:</source> - <translation>Largeur :</translation> + <translation>Largeur :</translation> </message> <message> <location/> <source>Height:</source> - <translation>Hauteur :</translation> + <translation>Hauteur :</translation> </message> <message> <location/> <source>Paper source:</source> - <translation>Source du papier :</translation> + <translation>Source du papier :</translation> </message> <message> <location/> @@ -3924,7 +3924,7 @@ Voulez-vous quand même le supprimer?</translation> </message> <message> <source>Number of copies:</source> - <translation type="obsolete">Nombre de copies :</translation> + <translation type="obsolete">Nombre de copies :</translation> </message> <message> <source>Paper format</source> @@ -4067,7 +4067,7 @@ Voulez-vous quand même le supprimer?</translation> <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="-647"/> <location line="+225"/> <source>Aliases: %1</source> - <translation>Alias : %1</translation> + <translation>Alias : %1</translation> </message> <message> <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-25"/> @@ -4101,15 +4101,15 @@ Voulez-vous quand même le supprimer?</translation> </message> <message> <source>Page size:</source> - <translation type="obsolete">Dimensions :</translation> + <translation type="obsolete">Dimensions :</translation> </message> <message> <source>Orientation:</source> - <translation type="obsolete">Orientation :</translation> + <translation type="obsolete">Orientation :</translation> </message> <message> <source>Paper source:</source> - <translation type="obsolete">Source du papier :</translation> + <translation type="obsolete">Source du papier :</translation> </message> <message> <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/> @@ -4137,7 +4137,7 @@ Voulez-vous quand même le supprimer?</translation> </message> <message> <source>Size:</source> - <translation type="obsolete">Taille :</translation> + <translation type="obsolete">Taille :</translation> </message> <message> <source>Properties</source> @@ -4145,7 +4145,7 @@ Voulez-vous quand même le supprimer?</translation> </message> <message> <source>Printer info:</source> - <translation type="obsolete">Informations sur l'imprimante :</translation> + <translation type="obsolete">Informations sur l'imprimante :</translation> </message> <message> <source>Browse</source> @@ -4195,7 +4195,7 @@ Veuillez choisir un nom de fichier différent.</translation> <source>%1 already exists. Do you want to overwrite it?</source> <translation>%1 existe. -Voulez-vous l'écraser?</translation> +Voulez-vous l'écraser ?</translation> </message> <message> <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-228"/> @@ -4205,7 +4205,7 @@ Voulez-vous l'écraser?</translation> <message> <location line="+1"/> <source><qt>Do you want to overwrite it?</qt></source> - <translation><qt>voulez-vous l'écraser?</qt></translation> + <translation><qt>voulez-vous l'écraser ?</qt></translation> </message> <message> <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-8"/> @@ -4666,7 +4666,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location/> <source>&Name:</source> - <translation>&Nom :</translation> + <translation>&Nom :</translation> </message> <message> <location/> @@ -4676,7 +4676,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location/> <source>Location:</source> - <translation>Emplacement :</translation> + <translation>Emplacement :</translation> </message> <message> <location/> @@ -4716,7 +4716,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+235"/> <source>Resource error (fork failure): %1</source> - <translation>Erreur de ressouce (fork) : %1</translation> + <translation>Erreur de ressouce (fork) : %1</translation> </message> <message> <location line="+259"/> @@ -4754,7 +4754,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+912"/> <source>No program defined</source> - <translation type="unfinished"></translation> + <translation>Aucun programme défini</translation> </message> <message> <location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/> @@ -5027,99 +5027,99 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/> <source>%1: unable to set key on lock</source> - <translation>%1 : impossible d'affecter la clé au verrou</translation> + <translation>%1 : impossible d'affecter la clé au verrou</translation> </message> <message> <location line="+81"/> <source>%1: create size is less then 0</source> - <translation>%1 : taille de création est inférieur à 0</translation> + <translation>%1 : taille de création est inférieur à 0</translation> </message> <message> <location line="+168"/> <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/> <source>%1: unable to lock</source> - <translation>%1 : impossible de vérrouiller</translation> + <translation>%1 : impossible de vérrouiller</translation> </message> <message> <location line="+22"/> <source>%1: unable to unlock</source> - <translation>%1 : impossible de déverrouiller</translation> + <translation>%1 : impossible de déverrouiller</translation> </message> <message> <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/> <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/> <source>%1: permission denied</source> - <translation>%1 : permission refusée</translation> + <translation>%1 : permission refusée</translation> </message> <message> <location line="+4"/> <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-22"/> <source>%1: already exists</source> - <translation>%1 : existe déjà</translation> + <translation>%1 : existe déjà</translation> </message> <message> <location line="+4"/> <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/> <source>%1: doesn't exists</source> - <translation>%1 : n'existe pas</translation> + <translation>%1 : n'existe pas</translation> </message> <message> <location line="+6"/> <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/> <source>%1: out of resources</source> - <translation>%1 : plus de ressources disponibles</translation> + <translation>%1 : plus de ressources disponibles</translation> </message> <message> <location line="+4"/> <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+7"/> <source>%1: unknown error %2</source> - <translation>%1 : erreur inconnue %2</translation> + <translation>%1 : erreur inconnue %2</translation> </message> <message> <location line="+21"/> <source>%1: key is empty</source> - <translation>%1 : clé vide</translation> + <translation>%1 : clé vide</translation> </message> <message> <location line="+8"/> <source>%1: unix key file doesn't exists</source> - <translation>%1 : le fichier de clé unix n'existe pas</translation> + <translation>%1 : le fichier de clé unix n'existe pas</translation> </message> <message> <location line="+7"/> <source>%1: ftok failed</source> - <translation>%1 : ftok a échoué</translation> + <translation>%1 : ftok a échoué</translation> </message> <message> <location line="+51"/> <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+15"/> <source>%1: unable to make key</source> - <translation>%1 : impossible de créer la clé</translation> + <translation>%1 : impossible de créer la clé</translation> </message> <message> <location line="+20"/> <source>%1: system-imposed size restrictions</source> - <translation>%1 : le système impose des restrictions sur la taille</translation> + <translation>%1 : le système impose des restrictions sur la taille</translation> </message> <message> <location line="+53"/> <source>%1: not attached</source> - <translation>%1 : non attaché</translation> + <translation>%1 : non attaché</translation> </message> <message> <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-27"/> <source>%1: invalid size</source> - <translation>%1 : taille invalide</translation> + <translation>%1 : taille invalide</translation> </message> <message> <location line="+68"/> <source>%1: key error</source> - <translation>%1 : erreur de clé</translation> + <translation>%1 : erreur de clé</translation> </message> <message> <location line="+38"/> <source>%1: size query failed</source> - <translation>%1 : la requête de taille a échoué</translation> + <translation>%1 : la requête de taille a échoué</translation> </message> </context> <context> @@ -5648,7 +5648,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+1"/> <source>Proxy authentication failed: %1</source> - <translation>L'authentification proxy a échoué : %1</translation> + <translation>L'authentification proxy a échoué : %1</translation> </message> <message> <location line="+9"/> @@ -5683,7 +5683,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+5"/> <source>Unknown SOCKSv5 proxy error code 0x%1</source> - <translation>Erreur proxy SOCKSv5 inconnue : 0x%1</translation> + <translation>Erreur proxy SOCKSv5 inconnue : 0x%1</translation> </message> <message> <source>Socks5 timeout error connecting to socks server</source> @@ -5718,7 +5718,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+1"/> <source>Delete this record?</source> - <translation>Supprimer cet enregistrement ?</translation> + <translation>Supprimer cet enregistrement ?</translation> </message> <message> <location line="+1"/> @@ -5747,7 +5747,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+4"/> <source>Save edits?</source> - <translation>Enregistrer les modifications ?</translation> + <translation>Enregistrer les modifications ?</translation> </message> <message> <location line="+3"/> @@ -5762,7 +5762,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+1"/> <source>Cancel your edits?</source> - <translation>Annuler vos modifications ?</translation> + <translation>Annuler vos modifications ?</translation> </message> </context> <context> @@ -5770,17 +5770,17 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/> <source>Unable to write data: %1</source> - <translation>Impossible d'écrire les données : %1</translation> + <translation>Impossible d'écrire les données : %1</translation> </message> <message> <location line="+119"/> <source>Error while reading: %1</source> - <translation>Erreur lors de la lecture : %1</translation> + <translation>Erreur lors de la lecture : %1</translation> </message> <message> <location line="+96"/> <source>Error during SSL handshake: %1</source> - <translation>Erreur lors de la poignée de main SSL : %1</translation> + <translation>Erreur lors de la poignée de main SSL : %1</translation> </message> <message> <location line="-524"/> @@ -5800,7 +5800,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+15"/> <source>Error creating SSL session: %1</source> - <translation>Erreur lors de la création de la session SSL : %1</translation> + <translation>Erreur lors de la création de la session SSL : %1</translation> </message> <message> <location line="-61"/> @@ -5844,12 +5844,12 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+4"/> <source>%1: already exists</source> - <translation>%1 : existe déjà</translation> + <translation>%1 : existe déjà</translation> </message> <message> <location line="+4"/> <source>%1: does not exist</source> - <translation>%1 : n'existe pas</translation> + <translation>%1 : n'existe pas</translation> </message> <message> <location line="+9"/> @@ -6396,7 +6396,7 @@ Veuillez choisir un nom de fichier différent.</translation> <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="-291"/> <source>This is a searchable index. Enter search keywords: </source> <comment>text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index'</comment> - <translation>Ceci est un index. Veuillez saisir les mots-clé :</translation> + <translation>Ceci est un index. Veuillez saisir les mots-clé :</translation> </message> <message> <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+58"/> @@ -6550,7 +6550,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+3"/> <source>Select all</source> - <translation type="unfinished"></translation> + <translation>Sélectionner tout</translation> </message> <message> <location line="+3"/> @@ -6625,12 +6625,12 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+33"/> <source>Insert a new paragraph</source> - <translation type="unfinished"></translation> + <translation>Insérer un nouveau paragraphe</translation> </message> <message> <location line="+3"/> <source>Insert a new line</source> - <translation type="unfinished"></translation> + <translation>Insérer une nouvelle ligne</translation> </message> </context> <context> @@ -6638,7 +6638,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/> <source>What's This?</source> - <translation>Qu'est-ce que c'est ?</translation> + <translation>Qu'est-ce que c'est ?</translation> </message> </context> <context> @@ -7152,7 +7152,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+115"/> <source>Overflow: Date can't be represented.</source> - <translation>Overflow : la date ne peut pas être représentée.</translation> + <translation>Overflow : la date ne peut pas être représentée.</translation> </message> <message> <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/> @@ -7304,7 +7304,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+8"/> <source>Failure when casting from %1 to %2: %3</source> - <translation>Echec en castant de %1 ver %2 : %3</translation> + <translation>Echec en castant de %1 ver %2 : %3</translation> </message> <message> <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/> @@ -7481,7 +7481,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+30"/> <source>%1 is an invalid flag for regular expressions. Valid flags are:</source> - <translation>%1 est un flag invalide pour des expressions régulières. Les flags valides sont :</translation> + <translation>%1 est un flag invalide pour des expressions régulières. Les flags valides sont :</translation> </message> <message> <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+17"/> @@ -7804,7 +7804,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+15"/> <source>Two namespace declaration attributes have the same name: %1.</source> - <translation>Deux attributs de déclarations de namespace ont le même nom : %1.</translation> + <translation>Deux attributs de déclarations de namespace ont le même nom : %1.</translation> </message> <message> <location line="+89"/> @@ -7943,7 +7943,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+69"/> <source>In a namespace constructor, the value for a namespace cannot be an empty string.</source> - <translation type="unfinished"></translation> + <translation>Dans un constructeur d'espace de noms, la valeur pour un espace de noms ne peut pas être une chaîne vide.</translation> </message> <message> <location line="+11"/> @@ -8008,7 +8008,7 @@ Veuillez choisir un nom de fichier différent.</translation> <message> <location line="+108"/> <source>Unknown XSL-T attribute %1.</source> - <translation>Attribut XSL-T inconnu : %1.</translation> + <translation>Attribut XSL-T inconnu : %1.</translation> </message> <message> <location line="+23"/> diff --git a/translations/translations.pri b/translations/translations.pri index c77876a..5eb7328 100644 --- a/translations/translations.pri +++ b/translations/translations.pri @@ -8,13 +8,8 @@ defineReplace(prependAll) { return ($$result) } -defineReplace(fixPath) { - win32:1 ~= s|/|\\| - return ($$1) -} - -LUPDATE = $$fixPath($$QT_BUILD_TREE/bin/lupdate) -locations relative -no-ui-lines -LRELEASE = $$fixPath($$QT_BUILD_TREE/bin/lrelease) +LUPDATE = $$QT_BUILD_TREE/bin/lupdate -locations relative -no-ui-lines +win32:isEmpty(QMAKE_SH):LUPDATE ~= s|/|\\|g ###### Qt Libraries @@ -41,27 +36,18 @@ ts-qt.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ -ts $$prependAll($$QT_SOURCE_TREE/translations/qt_,$$QT_TS,.ts)) ts-qt.depends = sub-tools -qm-qt.commands = $$LRELEASE $$prependAll($$QT_SOURCE_TREE/translations/qt_,$$QT_TS,.ts) -qm-qt.depends = sub-tools - ###### Designer ts-designer.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/designer/translations/translations.pro) ts-designer.depends = sub-tools -qm-designer.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/designer/translations/translations.pro -qm-designer.depends = sub-tools - ###### Linguist ts-linguist.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/linguist/linguist/linguist.pro) ts-linguist.depends = sub-tools -qm-linguist.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/linguist/linguist/linguist.pro -qm-linguist.depends = sub-tools - ###### Assistant ts-assistant.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ @@ -72,36 +58,21 @@ ts-assistant.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/assistant/translations/translations_adp.pro) ts-assistant.depends = sub-tools -qm-assistant.commands = ($$LRELEASE $$QT_SOURCE_TREE/tools/assistant/translations/translations.pro \ - && $$LRELEASE \ - $$QT_SOURCE_TREE/tools/assistant/translations/qt_help.pro \ - && $$LRELEASE \ - $$QT_SOURCE_TREE/tools/assistant/translations/translations_adp.pro) -qm-assistant.depends = sub-tools - ###### Qtconfig ts-qtconfig.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/qtconfig/translations/translations.pro) ts-qtconfig.depends = sub-tools -qm-qtconfig.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/qtconfig/translations/translations.pro -qm-qtconfig.depends = sub-tools - ###### Qvfp ts-qvfb.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \ ../tools/qvfb/translations/translations.pro) ts-qvfb.depends = sub-tools -qm-qvfb.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/qvfb/translations/translations.pro -qm-qvfb.depends = sub-tools - ###### Overall Rules ts.depends = ts-qt ts-designer ts-linguist ts-assistant ts-qtconfig ts-qvfb -qm.depends = qm-qt qm-designer qm-linguist qm-assistant qm-qtconfig qm-qvfb QMAKE_EXTRA_TARGETS += ts-qt ts-designer ts-linguist ts-assistant ts-qtconfig ts-qvfb \ - qm-qt qm-designer qm-linguist qm-assistant qm-qtconfig qm-qvfb \ - ts qm + ts diff --git a/translations/translations.pro b/translations/translations.pro new file mode 100644 index 0000000..60f84e6 --- /dev/null +++ b/translations/translations.pro @@ -0,0 +1,42 @@ +TRANSLATIONS = $$files(*.ts) + +LRELEASE = $$QT_BUILD_TREE/bin/lrelease +win32:isEmpty(QMAKE_SH):LRELEASE ~= s|/|\\|g + +contains(TEMPLATE_PREFIX, vc):vcproj = 1 + +TEMPLATE = app +TARGET = qm_phony_target +CONFIG -= qt separate_debug_info +QT = +LIBS = + +updateqm.input = TRANSLATIONS +updateqm.output = ${QMAKE_FILE_BASE}.qm +isEmpty(vcproj):updateqm.variable_out = PRE_TARGETDEPS +updateqm.commands = @echo lrelease ${QMAKE_FILE_IN}; $$LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT} +updateqm.name = LRELEASE ${QMAKE_FILE_IN} +updateqm.CONFIG += no_link +QMAKE_EXTRA_COMPILERS += updateqm + +isEmpty(vcproj) { + QMAKE_LINK = @: IGNORE THIS LINE + OBJECTS_DIR = + win32:CONFIG -= embed_manifest_exe +} else { + CONFIG += console + PHONY_DEPS = . + phony_src.input = PHONY_DEPS + phony_src.output = phony.c + phony_src.variable_out = GENERATED_SOURCES + phony_src.commands = echo int main() { return 0; } > phony.c + phony_src.name = CREATE phony.c + phony_src.CONFIG += combine + QMAKE_EXTRA_COMPILERS += phony_src +} + +translations.path = $$[QT_INSTALL_TRANSLATIONS] +translations.files = $$TRANSLATIONS +translations.files ~= s,\\.ts$,.qm,g +translations.CONFIG += no_check_exist +INSTALLS += translations |