diff --git a/dist/changes-2.1.0 b/dist/changes-2.1.0 index c64f208e9276de4e028927296bc82dc088d0d236..4f712c2474145d749877544659c894e1ca5c7251 100644 --- a/dist/changes-2.1.0 +++ b/dist/changes-2.1.0 @@ -11,12 +11,21 @@ General Editing + * FakeVim: Fix issues with non-letter keys on non-US keyboards + * FakeVim: Fix performance of find/replace + C++ Support Project support Debugging + * Fix display of certain structures within containers + * Fix display of typedefs of typedefs of simple types such as qulonglong + * Fix behaviour of 'step' and 'next' when a lower frame was selected + * Fix std::string display for objects with (the legal) ref count -1 + * Improve gdb version string parsing + QML/JS Support * New QmlDesigner * Allows visual manipulation of .qml files diff --git a/doc/images/qmldesigner-new-project-location.png b/doc/images/qmldesigner-new-project-location.png index 6cecd80d46b1b498230a5ebe1662b0323ff19aa4..9ebf56d5afc8d5a680eb7ee7cfe72ae59f3c91cb 100644 Binary files a/doc/images/qmldesigner-new-project-location.png and b/doc/images/qmldesigner-new-project-location.png differ diff --git a/doc/images/qmldesigner-new-project-summary.png b/doc/images/qmldesigner-new-project-summary.png index 046777d0a071bab3c7ce15ac74d176a3f58d78b2..958ce937fcbff2e06b7b8b2b67b50980e5d365f8 100644 Binary files a/doc/images/qmldesigner-new-project-summary.png and b/doc/images/qmldesigner-new-project-summary.png differ diff --git a/doc/images/qmldesigner-new-project.png b/doc/images/qmldesigner-new-project.png index 739381cd699a75e6df2a3e6046e85e65ef534633..f74bd4310ccb5fb56e1341b3cd3b6f2ff092ec36 100644 Binary files a/doc/images/qmldesigner-new-project.png and b/doc/images/qmldesigner-new-project.png differ diff --git a/doc/images/qmldesigner-visual-editor.png b/doc/images/qmldesigner-visual-editor.png index 0620b51c69c177360b26f6c120e4299b62cabce5..2bb23b8401b3417a6a76bf351d0f7e42b49e38fc 100644 Binary files a/doc/images/qmldesigner-visual-editor.png and b/doc/images/qmldesigner-visual-editor.png differ diff --git a/doc/images/qtcreator-breakdown.png b/doc/images/qtcreator-breakdown.png index d813528269c1ba76e70cf88d75f76c8c1004c878..3a8bde3ded32e8c82f915df182e4d1658d818de4 100644 Binary files a/doc/images/qtcreator-breakdown.png and b/doc/images/qtcreator-breakdown.png differ diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 7352be4e5a7cf13a85cccb0326c361ea6dd62f26..07b9397f59aeb4ad6e369888461421df2c36f247 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -47,7 +47,7 @@ \list \o \l{Introducing Qt Creator} \o \l{Operating Systems and Supported Platforms} - \o \l{Quick Tour} + \o \l{Qt Creator User Interface} \o \l{Getting Started} \list \o \l{Building and Running an Example Application} @@ -55,16 +55,6 @@ \o \l{Creating a Mobile Application with Nokia Qt SDK} \o \l{Creating a Qt Quick Application} \endlist - \o \l{Using the Editor} - \list - \o \l{Finding and Replacing} - \o \l{Refactoring} - \o \l{Searching With the Locator} - \o \l{Pasting and Fetching Code Snippets} - \o \l{Configuring the Editor} - \o \l{Using FakeVim Mode} - \o \l{Using an External Editor} - \endlist \o \l{Managing Projects} \list \o \l{Creating a Project} @@ -75,6 +65,36 @@ \o \l{Setting Up Development Environment for Symbian} \o \l{Managing Sessions} \endlist + \o \l{Using the Editor} + \list + \o \l{Finding and Replacing} + \o \l{Refactoring} + \o \l{Searching With the Locator} + \o \l{Pasting and Fetching Code Snippets} + \o \l{Configuring the Editor} + \o \l{Using FakeVim Mode} + \o \l{Using an External Editor} + \endlist + \o \l{Developing Application UI} + \list + \o \l{Optimizing Applications for Mobile Devices} + \o \l{Adding Qt Designer Plugins} + \if defined(qtquick) + \o \l{Developing Qt Quick Applications} + \list + \o \l {Creating Qt Quick Projects} + \o \l {Designing Application UI} + \o \l {Creating Components} + \o \l {Creating Buttons} + \o \l {Creating Scalable Buttons and Borders} + \o \l {Creating Screens} + \o \l {Creating List Views} + \o \l {Animating Screens} + \o \l {Adding User Interaction Methods} + \o \l {Implementing Application Logic} + \endlist + \endif + \endlist \o \l{Building and Running Applications} \list \o \l{Building for Multiple Targets} @@ -86,6 +106,7 @@ \o \l{Developing Qt Quick Applications} \o \l{Optimizing Applications for Mobile Devices} \o \l{Using the Maemo Emulator} + \o \l{Debugging} \list \o \l {Debugging Qt Applications} @@ -100,8 +121,10 @@ \o \l{Using the QML Inspector} \endlist \endlist + \o \l{Using the Maemo Emulator} \o \l{Using Version Control Systems} - \o \l{Adding Qt Designer Plugins} + + \o \l{Getting Help} \o \l{Tips and Tricks} \o \l{Keyboard Shortcuts} \o \l{Known Issues} @@ -296,13 +319,32 @@ \page creator-quick-tour.html \nextpage creator-getting-started.html - \title Quick Tour - - The figure below shows some of the components of Qt Creator in - \gui{Edit} mode. + \title Qt Creator User Interface \image qtcreator-breakdown.png + When you start Qt Creator, it opens to the \gui Welcome mode, where you can: + + \list + + \o Open tutorials and example projects + + \o View tips and hints on using Qt Creator + + \o Create and open projects + + \o Send feedback to the development team + + \o Open recent sessions and projects + + \o Read news from the Qt labs + + \o Ask for support + + \endlist + + You can use the mode selector to change to another Qt Creator mode. + Qt Creator has been localized into several languages. If the system language is one of the supported languages, it is automatically selected. To change the language, select \gui {Tools > Options > Environment} and select a language @@ -316,15 +358,22 @@ executed, and debugging your applications. To change modes, click the icons, or use the \l{keyboard-shortcuts}{corresponding keyboard shortcut}. + You can use Qt Creator in the following modes: + \list - \o \gui Welcome mode for opening recent sessions and projects. \o \gui{\l{Using the Editor}{Edit}} mode for editing project and source files. + \if defined(qtquick) \o \gui{\l{Developing Application UI}{Design}} mode for designing and developing + application user interfaces. This mode is available for UI files (.ui or + .qml). + \else + \o \gui{\l{Using Qt Designer}{Design}} mode for designing and developing application user interfaces. + \endif \o \gui{\l{Debugging}{Debug}} mode for inspecting the state of your program while debugging. \o \gui{\l{Managing Projects}{Projects}} mode for configuring project building and - execution. + execution. This mode is available when a project is open. \o \gui{\l{Getting Help}{Help}} mode for viewing Qt documentation. \endlist @@ -335,6 +384,7 @@ \section1 Browsing Project Contents + The sidebar is available in the \gui Edit and \gui Debug modes. Use the sidebar to browse files, projects and bookmarks. \image qtcreator-sidebar.png @@ -451,8 +501,24 @@ \image qtcreator-compile-pane.png + \section1 Navigating with Keyboard + + Qt Creator caters not only to developers who are used to using the mouse, + but also to developers who are more comfortable with the keyboard. A wide + range of \l{keyboard-shortcuts}{keyboard} and + \l{Searching With the Locator}{navigation} shortcuts are available to help + speed up the process of developing your application. + +*/ + + +/*! + \contentspage index.html + \previouspage creator-version-control.html + \page creator-help.html + \nextpage creator-tips.html - \section1 Getting Help + \title Getting Help Qt Creator comes fully integrated with Qt documentation and examples using the Qt Help plugin. @@ -469,7 +535,7 @@ \gui Help mode, select \gui Tools > \gui Options... > \gui Help. \endlist - \section2 Adding External Documentation + \section1 Adding External Documentation You can display external documentation in the \gui Help mode. To augment or replace the documentation that ships with Qt Creator and Qt: @@ -483,7 +549,7 @@ \gui Options... > \gui Help > \gui Documentation > \gui Add. \endlist - \section2 Using Documentation Filters + \section1 Using Documentation Filters You can filter the documents displayed in the \gui Help mode to find relevant information faster. Select from a list of filters in the @@ -524,15 +590,16 @@ To remove filters, select them in \gui Filters, and click \gui Remove. - \section1 Navigating with Keyboard +*/ - Qt Creator caters not only to developers who are used to using the mouse, - but also to developers who are more comfortable with the keyboard. A wide - range of \l{keyboard-shortcuts}{keyboard} and - \l{Searching With the Locator}{navigation} shortcuts are available to help - speed up the process of developing your application. - \section1 Developing Application UI +/*! + \contentspage index.html + \previouspage creator-editor-external.html + \page creator-design-mode.html + \nextpage creator-usability.html + + \title Developing Application UI To help you design the user interface of your application, two visual editors are integrated into Qt Creator: @@ -622,12 +689,17 @@ \endlist + For more information on using the \QMLD visual editor, see + \l{Developing Qt Quick Applications}. + + \endif + */ /*! \contentspage index.html - \previouspage creator-qml-application.html + \previouspage creator-project-managing-sessions.html \page creator-editor-using.html \nextpage creator-editor-finding.html @@ -945,7 +1017,7 @@ \contentspage index.html \previouspage creator-editor-fakevim.html \page creator-editor-external.html - \nextpage creator-project-managing.html + \nextpage creator-design-mode.html \title Using an External Editor @@ -1301,7 +1373,7 @@ /*! \contentspage index.html - \previouspage creator-editor-external.html + \previouspage creator-qml-application.html \page creator-project-managing.html \nextpage creator-project-creating.html @@ -1404,7 +1476,8 @@ \title Creating a Project You use wizards to create and import several types of projects and files, such - as Qt GUI or console applications and Qt Quick applications. You can also use + as Qt GUI or console applications and Qt Quick applications. + You can also use wizards to add individual files to your projects. For example, you can create the following types of files: @@ -1864,7 +1937,7 @@ /*! \contentspage index.html - \previouspage creator-project-managing-sessions.html + \previouspage quick-application-logic.html \page creator-building-running.html \nextpage creator-building-targets.html @@ -2446,7 +2519,7 @@ \contentspage index.html \previouspage creator-editor-settings.html \page creator-build-dependencies.html - \nextpage creator-visual-editor.html + \nextpage creator-debugging.html \title Specifying Dependencies @@ -2799,7 +2872,7 @@ \contentspage index.html \previouspage creator-mobile-example.html \page creator-qml-application.html - \nextpage creator-editor-using.html + \nextpage creator-project-managing.html \title Creating a Qt Quick Application @@ -2830,7 +2903,7 @@ \image qmldesigner-new-project-location.png "Introduction and Project Location dialog" - \o In the \gui{Name} field, type \bold {Hello World}. + \o In the \gui{Name} field, type \bold {HelloWorld}. \o In the \gui {Create in} field, enter the path for the project files. For example, \c {C:\Qt\examples}, and then click \gui{Next}. @@ -3266,9 +3339,9 @@ /*! \contentspage index.html - \previouspage creator-qml-inspector.html + \previouspage creator-maemo-emulator.html \page creator-version-control.html - \nextpage adding-plugins.html + \nextpage creator-help.html \title Using Version Control Systems @@ -3777,7 +3850,7 @@ \contentspage index.html \previouspage creator-developing-symbian.html \page creator-project-managing-sessions.html - \nextpage creator-building-running.html + \nextpage creator-editor-using.html \title Managing Sessions @@ -3808,7 +3881,7 @@ /*! \contentspage index.html - \previouspage creator-maemo-emulator.html + \previouspage creator-build-dependencies.html \page creator-debugging.html \nextpage creator-debugging-cpp.html @@ -3909,7 +3982,7 @@ \contentspage index.html \previouspage creator-debugging-qml.html \page creator-qml-inspector.html - \nextpage creator-version-control.html + \nextpage creator-maemo-emulator.html \title Using the QML Inspector @@ -4400,14 +4473,10 @@ \note Populating the cache might take a long time on a slow network connection. - - \omit In v2.1 and later: - \note The first time you start debugging by using the Debugging tools for Windows, Qt Creator prompts you to add the Symbol Server. - \endomit */ /*! @@ -5228,9 +5297,9 @@ /*! \contentspage index.html - \previouspage creator-build-dependencies.html + \previouspage adding-plugins.html \page creator-visual-editor.html - \nextpage creator-usability.html + \nextpage quick-projects.html \title Developing Qt Quick Applications @@ -5245,6 +5314,22 @@ You can use the code editor (\gui Edit mode) or the visual editor (\gui Design mode) to develop Qt Quick applications. + The following sections describe typical tasks you can do with Qt Creator. + + \list + + \o \l {Creating Qt Quick Projects} + \o \l {Designing Application UI} + \o \l {Creating Components} + \o \l {Creating Buttons} + \o \l {Creating Scalable Buttons and Borders} + \o \l {Creating Screens} + \o \l {Creating List Views} + \o \l {Animating Screens} + \o \l {Adding User Interaction Methods} + \o \l {Implementing Application Logic} + + \endlist \note The \QMLD visual editor is provided as an experimental plugin that you must enable to be able to edit QML files in the \gui Design mode. Enabling the @@ -5254,7 +5339,17 @@ \gui {Help > About Plugins... > Qt Quick > QmlDesigner}. You must restart Qt Creator to enable or disable the visual editor. - \section1 Creating Qt Quick Projects +*/ + + +/*! + + \contentspage index.html + \previouspage creator-visual-editor.html + \page quick-projects.html + \nextpage quick-ui.html + + \title Creating Qt Quick Projects Select \gui {File > New File or Project > Qt Quick Project > Qt QML Application}. @@ -5282,11 +5377,31 @@ To import a QML project to Qt Creator, select \gui {File > New File or Project > Qt Quick Project > Import Existing Qt QML Directory}. - \section1 Designing Application UI +*/ + + +/*! + + \contentspage index.html + \previouspage quick-projects.html + \page quick-ui.html + \nextpage quick-components.html + + \title Designing Application UI One .qml file can define a component, screen, or the whole application. - \section2 Creating Components +*/ + + +/*! + + \contentspage index.html + \previouspage quick-ui.html + \page quick-components.html + \nextpage quick-buttons.html + + \title Creating Components A QML component provides a way of defining a new type that you can re-use in other QML files. A component is like a black box; it interacts with the outside world @@ -5322,7 +5437,17 @@ The following sections describe some use cases for the QML elements. - \section3 Creating Buttons +*/ + + +/*! + + \contentspage index.html + \previouspage quick-components.html + \page quick-buttons.html + \nextpage quick-scalable-image.html + + \title Creating Buttons To create a button component: @@ -5387,7 +5512,17 @@ use the \l{http://doc.qt.nokia.com/4.7-snapshot/qml-borderimage.html}{Border Image} element. - \section3 Creating Scalable Buttons and Borders +*/ + + +/*! + + \contentspage index.html + \previouspage quick-buttons.html + \page quick-scalable-image.html + \nextpage quick-screens.html + + \title Creating Scalable Buttons and Borders You can use the \l{http://doc.qt.nokia.com/4.7-snapshot/qml-borderimage.html}{Border Image} element to display an image, such as a PNG file, as a border and a background. @@ -5538,7 +5673,17 @@ \endlist - \section2 Creating Screens +*/ + + +/*! + + \contentspage index.html + \previouspage quick-scalable-image.html + \page quick-screens.html + \nextpage quick-list-views.html + + \title Creating Screens You can use the \gui Library items and your own components to create screens. @@ -5574,7 +5719,17 @@ \endlist - \section3 Creating List Views +*/ + + +/*! + + \contentspage index.html + \previouspage quick-screens.html + \page quick-list-views.html + \nextpage quick-animations.html + + \title Creating List Views You use list views and list models to create lists. You use delegates to handle list items. Typically, the list model is provided by a QAbstractListModel C++ model object, @@ -5684,7 +5839,17 @@ \endlist - \section2 Navigating Between Screens +*/ + + +/*! + + \contentspage index.html + \previouspage quick-list-views.html + \page quick-animations.html + \nextpage quick-user-interaction.html + + \title Animating Screens To make movement between states smooth, you can specify transitions. You can use different types of animated transitions. For example, you can animate changes @@ -5695,9 +5860,21 @@ You can use the \c ParallelAnimation element to start several animations at the same time. Or use the \c SequentialAnimation element to run them one after another. + You can use the code editor to specify transitions. For more information, see + \l{http://doc.qt.nokia.com/4.7-snapshot/qml-transition.html}{QML Transition Element}. + +*/ + + +/*! + + \contentspage index.html + \previouspage quick-animations.html + \page quick-user-interaction.html + \nextpage quick-application-logic.html - \section2 Adding User Interaction Methods + \title Adding User Interaction Methods You can add the following basic interaction methods to scenes: @@ -5721,7 +5898,17 @@ For instance, the \gui {MouseArea} element has signal handlers to handle mouse press, release, and click. - \section1 Implementing Application Logic +*/ + + +/*! + + \contentspage index.html + \previouspage quick-user-interaction.html + \page quick-application-logic.html + \nextpage creator-building-running.html + + \title Implementing Application Logic A user interface is only a part of an application, and not really useful by itself. You can use Qt or JavaScript to implement the application logic. For more information on @@ -6191,9 +6378,9 @@ /*! \contentspage index.html - \previouspage creator-usability.html + \previouspage creator-qml-inspector.html \page creator-maemo-emulator.html - \nextpage creator-debugging.html + \nextpage creator-version-control.html \title Using the Maemo Emulator @@ -6434,9 +6621,9 @@ /*! \contentspage index.html - \previouspage creator-version-control.html + \previouspage creator-usability.html \page adding-plugins.html - \nextpage creator-tips.html + \nextpage creator-visual-editor.html \title Adding Qt Designer Plugins @@ -6489,9 +6676,9 @@ /*! \contentspage index.html - \previouspage creator-visual-editor.html + \previouspage creator-design-mode.html \page creator-usability.html - \nextpage creator-maemo-emulator.html + \nextpage adding-plugins.html \title Optimizing Applications for Mobile Devices @@ -6580,7 +6767,7 @@ /*! \contentspage index.html - \previouspage adding-plugins.html + \previouspage creator-help.html \page creator-tips.html \nextpage creator-keyboard-shortcuts.html diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index 86bdd8cca0fd5fb80a7b26ba499764518fceac2c..106d537acf913aa9e15e855b4c288605e6e47717 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -210,7 +210,7 @@ class SubItem: if len(type) > 0 and type != self.d.currentChildType: self.d.put('type="%s",' % type) # str(type.unqualified()) ? if not self.d.currentValueEncoding is None: - self.d.put('valueencoded="%d",', self.d.currentValueEncoding) + self.d.put('valueencoded="%d",' % self.d.currentValueEncoding) if not self.d.currentValue is None: self.d.put('value="%s",' % self.d.currentValue) except: @@ -761,7 +761,6 @@ def stripTypedefs(typeobj): type = type.strip_typedefs().unqualified() return type - ####################################################################### # # Item @@ -1106,7 +1105,7 @@ class Dumper: def childRange(self): return xrange(qmin(self.currentMaxNumChilds, self.currentNumChilds)) - # convenience + # Convenience function. def putItemCount(self, count): # This needs to override the default value, so don't use 'put' directly. self.putValue('<%s items>' % count) @@ -1129,7 +1128,7 @@ class Dumper: self.put('numchild="%s",' % numchild) def putValue(self, value, encoding = None, priority = 0): - # higher priority values override lower ones + # Higher priority values override lower ones. if priority >= self.currentValuePriority: self.currentValue = value self.currentValuePriority = priority @@ -1155,7 +1154,7 @@ class Dumper: def putByteArrayValue(self, value): str = encodeByteArray(value) - self.put('valueencoded="%d",value="%s",' % (Hex2EncodedLatin1, str)) + self.putValue(str, Hex2EncodedLatin1) def putName(self, name): self.put('name="%s",' % name) @@ -1299,8 +1298,15 @@ class Dumper: elif typedefStrippedType.code == gdb.TYPE_CODE_PTR: #warn("POINTER: %s" % format) isHandled = False + target = stripTypedefs(type.target()) - if not format is None: + if (not isHandled) and target.code == gdb.TYPE_CODE_VOID: + self.putType(item.value.type) + self.putValue(str(value)) + self.putNumChild(0) + isHandled = True + + if (not isHandled) and (not format is None): self.putAddress(value.address) self.putType(item.value.type) isHandled = True @@ -1340,8 +1346,7 @@ class Dumper: self.putNumChild(0) isHandled = True - target = stripTypedefs(type.target()) - if (not isHandled) and target.code == TYPE_CODE_VOID: + if (not isHandled): self.putType(item.value.type) self.putValue(str(value)) self.putNumChild(0) @@ -1377,7 +1382,7 @@ class Dumper: self.putAddress(item.value) self.putPointerValue(value.address) - elif str(type).startswith("<anon"): + elif str(typedefStrippedType).startswith("<anon"): # Anonymous union. We need a dummy name to distinguish # multiple anonymous unions in the struct. self.putType(item.value.type) @@ -1394,7 +1399,14 @@ class Dumper: # Insufficient, see http://sourceware.org/bugzilla/show_bug.cgi?id=10953 #fields = value.type.fields() - fields = value.type.strip_typedefs().fields() + + # Insufficient, see http://sourceware.org/bugzilla/show_bug.cgi?id=11777 + #fields = stripTypedefs(value.type).fields() + + # This seems to work. + type = stripTypedefs(type) + type = lookupType(str(type)) + fields = type.fields() self.putType(item.value.type) try: @@ -1419,8 +1431,8 @@ class Dumper: charptr = lookupType("unsigned char").pointer() addr1 = (baseptr+1).cast(charptr) addr0 = baseptr.cast(charptr) - self.put('addrbase="%s",', cleanAddress(addr0)) - self.put('addrstep="%s",', addr1 - addr0) + self.put('addrbase="%s",' % cleanAddress(addr0)) + self.put('addrstep="%s",' % (addr1 - addr0)) innerType = None if len(fields) == 1 and fields[0].name is None: @@ -1431,7 +1443,10 @@ class Dumper: def putFields(self, item, innerType = None): value = item.value - fields = stripTypedefs(value.type).fields() + type = stripTypedefs(value.type) + # http://sourceware.org/bugzilla/show_bug.cgi?id=11777 + type = lookupType(str(type)) + fields = stripTypedefs(type).fields() baseNumber = 0 for field in fields: #warn("FIELD: %s" % field) @@ -1442,9 +1457,9 @@ class Dumper: continue # A static class member(?). if field.name is None: - innerType = value.type.target() + innerType = type.target() p = value.cast(innerType.pointer()) - for i in xrange(value.type.sizeof / innerType.sizeof): + for i in xrange(type.sizeof / innerType.sizeof): self.putItem(Item(p.dereference(), item.iname, i, None)) p = p + 1 continue @@ -1463,7 +1478,7 @@ class Dumper: item.iname, "@%d" % baseNumber, field.name) baseNumber += 1 with SubItem(self): - self.put('iname="%s",', child.iname) + self.put('iname="%s",' % child.iname) self.putItemHelper(child) elif len(field.name) == 0: # Anonymous union. We need a dummy name to distinguish diff --git a/share/qtcreator/gdbmacros/gdbmacros.py b/share/qtcreator/gdbmacros/gdbmacros.py index 93dccf931bc938120587eb19623744118e76b908..4ff2a80639695d6fceb30fb254e1b7a5180c5800 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.py +++ b/share/qtcreator/gdbmacros/gdbmacros.py @@ -1377,6 +1377,22 @@ def qdump__QRectF(d, item): d.putItem(Item(h, None, None, "h")) +def qdump__QRegion(d, item): + p = item.value["d"].dereference()["qt_rgn"] + if isNull(p): + d.putValue("<empty>") + d.putNumChild(0) + else: + n = str(p.dereference()["numRects"]) + d.putItemCount(n) + d.putNumChild(n) + if d.isExpanded(item): + with Children(d): + d.putFields(Item(p.dereference(), item.iname)) + +# qt_rgn might be 0 +# gdb.parse_and_eval("region")["d"].dereference()["qt_rgn"].dereference() + def qdump__QSet(d, item): def hashDataFirstNode(value): diff --git a/share/qtcreator/translations/qtcreator_fr.ts b/share/qtcreator/translations/qtcreator_fr.ts index 00bca849bb8b1f010f5abb656bc63770fb5481e2..021069680b205b3371b6c55f3aabfaf7b1c68c80 100644 --- a/share/qtcreator/translations/qtcreator_fr.ts +++ b/share/qtcreator/translations/qtcreator_fr.ts @@ -4,7 +4,7 @@ <context> <name>Application</name> <message> - <location filename="../../../src/app/main.cpp" line="+129"/> + <location filename="../../../src/app/main.cpp" line="+132"/> <source>Failed to load core: %1</source> <translation>Échec dans le chargement du core : %1</translation> </message> @@ -14,12 +14,12 @@ <translation>Impossible de passer les arguments de la ligne de commande à l'instance en cours d'execution. Elle semble ne pas répondre.</translation> </message> <message> - <location line="+135"/> + <location line="+125"/> <source>Could not find 'Core.pluginspec' in %1</source> <translation>'Core.pluginspec' introuvable dans %1</translation> </message> <message> - <location line="+36"/> + <location line="+42"/> <source>Qt Creator - Plugin loader messages</source> <translation>Qt Creator - Messages du chargeur de plugin</translation> </message> @@ -54,19 +54,21 @@ <translation>Lancer le débogueur</translation> </message> <message> - <location/> <source>Attach to Process ID:</source> - <translation>Attacher au processus de PID :</translation> + <translation type="obsolete">Attacher au processus de PID :</translation> </message> <message> - <location/> <source>Filter:</source> - <translation>Filtre :</translation> + <translation type="obsolete">Filtre :</translation> </message> <message> - <location/> <source>Clear</source> - <translation>Effacer</translation> + <translation type="obsolete">Effacer</translation> + </message> + <message> + <location/> + <source>Attach to process ID:</source> + <translation>Attacher au processus de PID :</translation> </message> </context> <context> @@ -95,7 +97,7 @@ <context> <name>BINEditor::Internal::BinEditorPlugin</name> <message> - <location filename="../../../src/plugins/bineditor/bineditorplugin.cpp" line="+446"/> + <location filename="../../../src/plugins/bineditor/bineditorplugin.cpp" line="+439"/> <source>&Undo</source> <translation>Annu&ler</translation> </message> @@ -133,7 +135,7 @@ <translation>Nouveau dossier</translation> </message> <message> - <location filename="../../../src/shared/help/bookmarkmanager.cpp" line="+171"/> + <location filename="../../../src/shared/help/bookmarkmanager.cpp" line="+178"/> <location line="+18"/> <location line="+39"/> <location line="+18"/> @@ -159,7 +161,7 @@ <translation type="obsolete">Signet</translation> </message> <message> - <location line="+429"/> + <location line="+432"/> <source>Bookmarks</source> <translation>Signets</translation> </message> @@ -175,7 +177,7 @@ </message> <message> <location line="+111"/> - <location line="+9"/> + <location line="+8"/> <source>New Folder</source> <translation>Nouveau dossier</translation> </message> @@ -183,7 +185,7 @@ <context> <name>BookmarkWidget</name> <message> - <location line="-426"/> + <location line="-428"/> <source>Delete Folder</source> <translation>Supprimer le dossier</translation> </message> @@ -213,12 +215,11 @@ <translation>Renommer le signet</translation> </message> <message> - <location line="+38"/> <source>Filter:</source> - <translation>Filtre :</translation> + <translation type="obsolete">Filtre :</translation> </message> <message> - <location line="+26"/> + <location line="+72"/> <source>Add</source> <translation>Ajouter</translation> </message> @@ -231,37 +232,55 @@ <context> <name>Bookmarks::Internal::BookmarkView</name> <message> - <location filename="../../../src/plugins/bookmarks/bookmarkmanager.cpp" line="+207"/> - <location line="+565"/> + <location filename="../../../src/plugins/bookmarks/bookmarkmanager.cpp" line="+210"/> + <location line="+568"/> <source>Bookmarks</source> <translation>Signets</translation> </message> <message> - <location line="-542"/> - <source>&Remove Bookmark</source> - <translation>&Supprimer le Signet</translation> + <location line="-547"/> + <source>Move Up</source> + <translation>Déplacer vers le haut</translation> + </message> + <message> + <location line="+1"/> + <source>Move Down</source> + <translation>Déplacer vers le bas</translation> + </message> + <message> + <location line="+1"/> + <source>&Remove</source> + <translation>&Supprimer</translation> </message> <message> <location line="+1"/> + <source>Remove All</source> + <translation>Supprimer tout</translation> + </message> + <message> + <source>&Remove Bookmark</source> + <translation type="obsolete">&Supprimer le Signet</translation> + </message> + <message> <source>Remove all Bookmarks</source> - <translation>Supprimer tous les signets</translation> + <translation type="obsolete">Supprimer tous les signets</translation> </message> </context> <context> <name>Bookmarks::Internal::BookmarksPlugin</name> <message> - <location filename="../../../src/plugins/bookmarks/bookmarksplugin.cpp" line="+82"/> + <location filename="../../../src/plugins/bookmarks/bookmarksplugin.cpp" line="+84"/> <source>&Bookmarks</source> <translation>&Signets</translation> </message> <message> <location line="+4"/> - <location line="+79"/> + <location line="+62"/> <source>Toggle Bookmark</source> <translation>Activer/Désactiver le signet</translation> </message> <message> - <location line="-75"/> + <location line="-58"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> @@ -271,14 +290,12 @@ <translation>Meta+M</translation> </message> <message> - <location line="+10"/> <source>Move Up</source> - <translation>Déplacer vers le haut</translation> + <translation type="obsolete">Déplacer vers le haut</translation> </message> <message> - <location line="+5"/> <source>Move Down</source> - <translation>Déplacer vers le bas</translation> + <translation type="obsolete">Déplacer vers le bas</translation> </message> <message> <location line="+10"/> @@ -312,14 +329,22 @@ </message> <message> <location line="+10"/> - <source>Previous Bookmark In Document</source> + <source>Previous Bookmark in Document</source> <translation>Signet précédent dans le document</translation> </message> <message> <location line="+5"/> - <source>Next Bookmark In Document</source> + <source>Next Bookmark in Document</source> <translation>Signet suivant dans le document</translation> </message> + <message> + <source>Previous Bookmark In Document</source> + <translation type="obsolete">Signet précédent dans le document</translation> + </message> + <message> + <source>Next Bookmark In Document</source> + <translation type="obsolete">Signet suivant dans le document</translation> + </message> </context> <context> <name>BreakByFunctionDialog</name> @@ -346,29 +371,43 @@ <source>Ignore count:</source> <translation>Nombre de passages à ignorer :</translation> </message> + <message> + <source>File name:</source> + <translation type="obsolete">Nom du fichier :</translation> + </message> + <message> + <source>Line number:</source> + <translation type="obsolete">Numéro de ligne :</translation> + </message> + <message> + <source>Function:</source> + <translation type="obsolete">Fonction :</translation> + </message> </context> <context> <name>CMakeProjectManager::Internal::CMakeBuildEnvironmentWidget</name> <message> - <location filename="../../../src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp" line="+49"/> <source>Clear system environment</source> - <translation>Nettoyer l'environnement système</translation> + <translation type="obsolete">Nettoyer l'environnement système</translation> </message> <message> - <location line="+14"/> <source>Build Environment</source> - <translation>Environnement de compilation</translation> + <translation type="obsolete">Environnement de compilation</translation> </message> </context> <context> <name>CMakeProjectManager::Internal::CMakeBuildConfigurationFactory</name> <message> - <location filename="../../../src/plugins/cmakeprojectmanager/cmakeproject.cpp" line="+89"/> <source>Create</source> - <translation>Créer</translation> + <translation type="obsolete">Créer</translation> </message> <message> - <location line="+10"/> + <location filename="../../../src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp" line="+180"/> + <source>Build</source> + <translation>Compilation</translation> + </message> + <message> + <location line="+24"/> <source>New configuration</source> <translation>Nouvelle configuration</translation> </message> @@ -381,7 +420,7 @@ <context> <name>CMakeProjectManager::Internal::CMakeBuildSettingsWidget</name> <message> - <location line="+704"/> + <location filename="../../../src/plugins/cmakeprojectmanager/cmakeproject.cpp" line="+625"/> <source>&Change</source> <translation>&Modifier</translation> </message> @@ -389,7 +428,7 @@ <context> <name>CMakeProjectManager::Internal::CMakeOpenProjectWizard</name> <message> - <location filename="../../../src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp" line="+123"/> + <location filename="../../../src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp" line="+132"/> <source>CMake Wizard</source> <translation>Assistant CMake</translation> </message> @@ -397,13 +436,17 @@ <context> <name>CMakeProjectManager::Internal::CMakeRunConfigurationWidget</name> <message> - <location filename="../../../src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp" line="+247"/> + <location filename="../../../src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp" line="+310"/> <source>Arguments:</source> <translation>Arguments :</translation> </message> <message> - <location line="+5"/> <source>Select the working directory</source> + <translation type="obsolete">Sélectionner le répertoire de travail</translation> + </message> + <message> + <location line="+5"/> + <source>Select Working Directory</source> <translation>Sélectionner le répertoire de travail</translation> </message> <message> @@ -417,7 +460,7 @@ <translation>Répertoire de travail :</translation> </message> <message> - <location line="+13"/> + <location line="+14"/> <source>Run Environment</source> <translation>Environnement d'éxecution</translation> </message> @@ -437,16 +480,15 @@ <translation>Environnement de compilation</translation> </message> <message> - <location line="+91"/> <source>Running executable: <b>%1</b> %2</source> - <translation>Exécution en cours : <b>%1</b> %2</translation> + <translation type="obsolete">Exécution en cours : <b>%1</b> %2</translation> </message> <message> <source>Environment</source> <translation type="obsolete">Environnement</translation> </message> <message> - <location line="-97"/> + <location line="-6"/> <source>Base environment for this runconfiguration:</source> <translation>Environnement de base pour cette configuration d'éxecution :</translation> </message> @@ -458,6 +500,11 @@ <source>Qt Creator has detected an <b>in-source-build in %1</b> which prevents shadow builds. Qt Creator will not allow you to change the build directory. If you want a shadow build, clean your source directory and re-open the project.</source> <translation>Qt Creator a détecté une <b>compilation dans les sources de %1</b> qui empêche les shadow builds. Qt Creator ne permettra pas de changer le répertoire de compilation. Si vous voulez effectuer un "shadow build", nettoyez le répertoire source et rouvrez le projet.</translation> </message> + <message> + <location line="+5"/> + <source>Build Location</source> + <translation type="unfinished">Emplacement de compilation</translation> + </message> <message> <source>Qt Creator has detected an in-source-build which prevents shadow builds. Qt Creator will not allow you to change the build directory. If you want a shadow build, clean your source directory and re-open the project.</source> <translation type="obsolete">Qt Creator a détecté une compilation dans les sources qui empêche les shadow builds. Qt Creator ne permettra pas de changer le répertoire de compilation. Si vous voulez effectuer un "shadow build", nettoyez le répertoire source et rouvrez le projet.</translation> @@ -466,7 +513,7 @@ <context> <name>CMakeProjectManager::Internal::CMakeRunPage</name> <message> - <location line="+57"/> + <location line="+55"/> <source>Please specify the path to the cmake executable. No cmake executable was found in the path.</source> <translation>Veuillez spécifier l'emplacement de l'exécutable cmake. Aucun exécutable cmake n'a été trouvé dans la liste de répertoires standards.</translation> </message> @@ -486,17 +533,18 @@ <translation>%1 n'est pas un cmake valide.</translation> </message> <message> + <location line="+17"/> <location line="+17"/> <source>Run CMake</source> <translation>Exécuter CMake</translation> </message> <message> - <location line="+8"/> + <location line="-9"/> <source>Arguments</source> <translation>Arguments</translation> </message> <message> - <location line="+19"/> + <location line="+20"/> <source>The directory %1 already contains a cbp file, which is recent enough. You can pass special arguments or change the used toolchain here and rerun cmake. Or simply finish the wizard directly</source> <translatorcomment>toolchain -> chaine de compilation ? terminer ou terminez ?</translatorcomment> <translation>Le répertoire %1 contient déjà un fichier cbp qui est assez récent. Vous pouvez passer des arguments spéciaux, ou changer la chaine de compilation utilisée ici et réexécuter cmake. Vous pouvez aussi terminer l'assistant directement</translation> @@ -532,12 +580,12 @@ <translation>Générateur NMake (%1)</translation> </message> <message> - <location line="+6"/> + <location line="+8"/> <source>MinGW Generator</source> <translation>Générateur MinGW</translation> </message> <message> - <location line="+56"/> + <location line="+60"/> <source>No valid cmake executable specified.</source> <translation>L'exécutable cmake spécifié est invalide.</translation> </message> @@ -545,21 +593,24 @@ <context> <name>CMakeProjectManager::Internal::CMakeSettingsPage</name> <message> - <location filename="../../../src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp" line="+246"/> - <location line="+10"/> + <location filename="../../../src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp" line="+248"/> <source>CMake</source> <translation>CMake</translation> </message> <message> - <location line="+9"/> + <location line="+24"/> + <source>Executable:</source> + <translation>Exécutable :</translation> + </message> + <message> <source>CMake executable</source> - <translation>Exécutable CMake</translation> + <translation type="obsolete">Exécutable CMake</translation> </message> </context> <context> <name>CMakeProjectManager::Internal::MakeStepConfigWidget</name> <message> - <location filename="../../../src/plugins/cmakeprojectmanager/makestep.cpp" line="+165"/> + <location filename="../../../src/plugins/cmakeprojectmanager/makestep.cpp" line="+214"/> <source>Additional arguments:</source> <translation>Arguments supplémentaires :</translation> </message> @@ -569,15 +620,26 @@ <translation>Cibles :</translation> </message> <message> - <location line="+59"/> + <location line="+31"/> + <source>Make</source> + <comment>CMakeProjectManager::MakeStepConfigWidget display name.</comment> + <translation>Make</translation> + </message> + <message> + <location line="+45"/> <source><b>Make:</b> %1 %2</source> <translation><b>Make : </b>%1 %2</translation> </message> + <message> + <location line="+2"/> + <source><b>Unknown Toolchain</b></source> + <translation type="unfinished"><>Chaîne de compilation inconnue</b></translation> + </message> </context> <context> <name>CMakeProjectManager::Internal::ShadowBuildPage</name> <message> - <location filename="../../../src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp" line="-213"/> + <location filename="../../../src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp" line="-221"/> <source>Please enter the directory in which you want to build your project. </source> <translation>Veuillez spécifier le répertoire où vous voulez compiler votre projet. </translation> </message> @@ -591,6 +653,11 @@ <source>Build directory:</source> <translation>Répertoire de compilation :</translation> </message> + <message> + <location line="+1"/> + <source>Build Location</source> + <translation type="unfinished">Emplacement de compilation</translation> + </message> </context> <context> <name>CMakeProjectManager::Internal::XmlFileUpToDatePage</name> @@ -620,10 +687,9 @@ <translation>Ces options prendront effet au prochain démarrage de Qt Creator.</translation> </message> <message> - <location/> <source>Cdb</source> <extracomment>Placeholder</extracomment> - <translation>Cdb</translation> + <translation type="obsolete">Cdb</translation> </message> <message> <location/> @@ -662,25 +728,38 @@ <translation>version 32-bits</translation> </message> <message> - <location filename="../../../src/plugins/debugger/cdb/cdboptionspagewidget.ui"/> <source>Other options</source> - <translation>Autres options</translation> + <translation type="obsolete">Autres options</translation> </message> <message> - <location/> <source>Verbose Symbol Loading</source> + <translation type="obsolete">Chargement verbeux des symboles</translation> + </message> + <message> + <location filename="../../../src/plugins/debugger/cdb/cdboptionspagewidget.ui"/> + <source>CDB</source> + <extracomment>Placeholder</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Other Options</source> + <translation type="unfinished">Autres options</translation> + </message> + <message> + <location/> + <source>Verbose symbol loading</source> <translation>Chargement verbeux des symboles</translation> </message> </context> <context> <name>ChangeSelectionDialog</name> <message> - <location filename="../../../src/plugins/git/changeselectiondialog.ui"/> <source>Repository Location:</source> - <translation>Adresse du depôt :</translation> + <translation type="obsolete">Adresse du depôt :</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/git/changeselectiondialog.ui"/> <source>Select</source> <translation>Sélectionner</translation> </message> @@ -689,6 +768,11 @@ <source>Change:</source> <translation>Modification :</translation> </message> + <message> + <location/> + <source>Repository location:</source> + <translation type="unfinished">Emplacement du dépôt :</translation> + </message> </context> <context> <name>CodePaster::CodepasterPlugin</name> @@ -697,7 +781,7 @@ <translation type="obsolete">&CodePaster</translation> </message> <message> - <location filename="../../../src/plugins/cpaster/cpasterplugin.cpp" line="+110"/> + <location filename="../../../src/plugins/cpaster/cpasterplugin.cpp" line="+120"/> <source>&Code Pasting</source> <translation>&Collage de code</translation> </message> @@ -714,6 +798,11 @@ </message> <message> <location line="+4"/> + <source>Paste Clipboard...</source> + <translation type="unfinished">Coller le contenu du presse-papier…</translation> + </message> + <message> + <location line="+5"/> <source>Fetch Snippet...</source> <translation>Récuperer le snippet...</translation> </message> @@ -723,14 +812,17 @@ <translation>Alt+C,Alt+F</translation> </message> <message> - <location line="+87"/> + <location line="+183"/> + <source>Empty snippet received for "%1".</source> + <translation type="unfinished">Snippet vide recu pour "%1".</translation> + </message> + <message> <source>This protocol supports no listing</source> - <translation>Ce protocole ne prend en charge le listage</translation> + <translation type="obsolete">Ce protocole ne prend en charge le listage</translation> </message> <message> - <location line="+13"/> <source>Waiting for items</source> - <translation>En attente des éléments</translation> + <translation type="obsolete">En attente des éléments</translation> </message> </context> <context> @@ -768,12 +860,26 @@ <source>Protocol:</source> <translation>Protocole :</translation> </message> + <message> + <location filename="../../../src/plugins/cpaster/pasteselectdialog.cpp" line="+54"/> + <source>Refresh</source> + <translation>Rafraîchir</translation> + </message> + <message> + <location line="+68"/> + <source>Waiting for items</source> + <translation>En attente des éléments</translation> + </message> + <message> + <location line="+13"/> + <source>This protocol does not support listing</source> + <translation>Ce protocole ne prend en charge le listage</translation> + </message> </context> <context> <name>CodePaster::SettingsPage</name> <message> - <location filename="../../../src/plugins/cpaster/settingspage.ui"/> - <location filename="../../../src/plugins/cpaster/settingspage.cpp" line="+67"/> + <location filename="../../../src/plugins/cpaster/settingspage.cpp" line="+94"/> <source>General</source> <translation>Général</translation> </message> @@ -782,55 +888,62 @@ <translation type="obsolete">Serveur CodePaster :</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/cpaster/settingspage.ui"/> <source>Username:</source> <translation>Nom d'utilisateur :</translation> </message> <message> - <location/> <source>Copy Paste URL to clipboard</source> - <translation>Copier l'URL dans le presse papier</translation> + <translation type="obsolete">Copier l'URL dans le presse papier</translation> </message> <message> - <location/> <source>Display Output Pane after sending a post</source> - <translation>Afficher le résultat après publication</translation> + <translation type="obsolete">Afficher le résultat après publication</translation> </message> <message> - <location/> <source>CodePaster</source> - <translation>CodePaster</translation> + <translation type="obsolete">CodePaster</translation> </message> <message> - <location/> <source>Default Protocol:</source> - <translation>Protocole par défaut :</translation> + <translation type="obsolete">Protocole par défaut :</translation> </message> <message> - <location/> <source>Pastebin.ca</source> - <translation>Pastebin.ca</translation> + <translation type="obsolete">Pastebin.ca</translation> </message> <message> - <location/> <source>Pastebin.com</source> - <translation>Pastebin.com</translation> + <translation type="obsolete">Pastebin.com</translation> </message> <message> - <location filename="../../../src/plugins/cpaster/settingspage.cpp" line="+10"/> <source>Code Pasting</source> - <translation>Collage de code</translation> + <translation type="obsolete">Collage de code</translation> + </message> + <message> + <location/> + <source>Display Output pane after sending a post</source> + <translation>Afficher le résultat après publication</translation> + </message> + <message> + <location/> + <source>Copy-paste URL to clipboard</source> + <translation>Copier l'URL dans le presse papier</translation> + </message> + <message> + <location/> + <source>Default protocol:</source> + <translation>Protocole par défaut :</translation> </message> </context> <context> <name>CommonOptionsPage</name> <message> - <location filename="../../../src/plugins/debugger/commonoptionspage.ui"/> <source>User interface</source> - <translation>Interface utilisateur</translation> + <translation type="obsolete">Interface utilisateur</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/debugger/commonoptionspage.ui"/> <source>Checking this will populate the source file view automatically but might slow down debugger startup considerably.</source> <translation>Cocher cette case peuplera automatiquement la vue du fichier source mais risque de ralentir considérablement le lancement du débogueur.</translation> </message> @@ -845,16 +958,14 @@ <translation>Alterner la couleur de ligne dans le débogueur visuel</translation> </message> <message> - <location/> <source>When this option is checked, 'Step Into' compresses several steps into one in certain situations, leading to 'less noisy' debugging. So will, e.g., the atomic reference counting code be skipped, and a single 'Step Into' for a signal emission will end up directly in the slot connected to it.</source> - <translation>Lorsque cette option est cochée, « Entrer dans » compresse plusieurs étapes en une dans certains cas, afin d'éviter une 'pollution' du débogage. Cela conduit par exemple + <translation type="obsolete">Lorsque cette option est cochée, « Entrer dans » compresse plusieurs étapes en une dans certains cas, afin d'éviter une 'pollution' du débogage. Cela conduit par exemple à passer le comptage de référence atomique, et un simple « Entrer dans » depuis une émission de signal conduit directement au slot qui y est connecté.</translation> </message> <message> - <location/> <source>Skip known frames when stepping</source> - <translation>Passer les trames connues en pas à pas</translation> + <translation type="obsolete">Passer les trames connues en pas à pas</translation> </message> <message> <source>Checking this will enable tooltips for variable values during debugging. Since this can slow down debugging and does not provide reliable information as it does not use scope information, it is switched off by default.</source> @@ -866,9 +977,8 @@ <translation type="obsolete">Utiliser les info-bulles lors du débogage</translation> </message> <message> - <location/> <source>Enable reverse debugging</source> - <translation>Activer le débogage inversé</translation> + <translation type="obsolete">Activer le débogage inversé</translation> </message> <message> <location/> @@ -881,36 +991,62 @@ <translation><illimitée></translation> </message> <message> - <location/> <source>Show a message box when receiving a signal</source> <translatorcomment>message box -> message, boîte de message, fenêtre de message ?</translatorcomment> - <translation>Afficher un message à la réception d'un signal</translation> + <translation type="obsolete">Afficher un message à la réception d'un signal</translation> </message> <message> <location/> <source>Use tooltips in main editor while debugging</source> <translation>Utiliser les info-bulles dans l'éditeur principal lors du débogage</translation> </message> + <message> + <location/> + <source>Language</source> + <translation type="unfinished">Langage</translation> + </message> + <message> + <location/> + <source>Changes the debugger language according to the currently opened file.</source> + <translation type="unfinished">Changer le langage du débogueur en fonction du fichier ouvert.</translation> + </message> + <message> + <location/> + <source>Change debugger language automatically</source> + <translation type="unfinished">Changer le langage du débogueur automatiquement</translation> + </message> + <message> + <location/> + <source>GUI Behavior</source> + <translation type="unfinished">Interface Utilisateur</translation> + </message> + <message> + <location/> + <source>Register Qt Creator for debugging crashed applications.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Use Qt Creator for post-mortem debugging</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>CompletionSettingsPage</name> <message> - <location filename="../../../src/plugins/cpptools/completionsettingspage.ui"/> <source>Code Completion</source> - <translation>Complétion du code</translation> + <translation type="obsolete">Complétion du code</translation> </message> <message> - <location/> <source>Do a case-sensitive match for completion items.</source> - <translation>Tenir compte de la casse lors de la complétion.</translation> + <translation type="obsolete">Tenir compte de la casse lors de la complétion.</translation> </message> <message> - <location/> <source>&Case-sensitive completion</source> - <translation>Sensible à la &casse</translation> + <translation type="obsolete">Sensible à la &casse</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/cpptools/completionsettingspage.ui"/> <source>Automatically insert (, ) and ; when appropriate.</source> <translation>Insérer automatiquement (, ) et; si approprié.</translation> </message> @@ -929,24 +1065,58 @@ <source>Autocomplete common &prefix</source> <translation>Autocomplétion du &préfixe commun</translation> </message> + <message> + <location/> + <source>Behavior</source> + <translation>Comportement</translation> + </message> + <message> + <location/> + <source>&Case-sensitivity:</source> + <translation>Sensibilité à la &casse :</translation> + </message> + <message> + <location/> + <source>Full</source> + <translation type="unfinished">Totale</translation> + </message> + <message> + <location/> + <source>None</source> + <translation type="unfinished">Aucune</translation> + </message> + <message> + <location/> + <source>First Letter</source> + <translation type="unfinished">Première lettre</translation> + </message> + <message> + <location/> + <source>Insert &space after function name</source> + <translation type="unfinished">Insérer un e&space après le nom de fonction</translation> + </message> </context> <context> <name>ContentWindow</name> <message> - <location filename="../../../src/shared/help/contentwindow.cpp" line="+136"/> + <location filename="../../../src/shared/help/contentwindow.cpp" line="+138"/> <source>Open Link</source> <translation>Ouvrir le lien</translation> </message> <message> <location line="+1"/> + <source>Open Link as New Page</source> + <translation type="unfinished">Ouvrir le lien en tant que nouvelle page</translation> + </message> + <message> <source>Open Link in New Tab</source> - <translation>Ouvrir le lien dans un nouvel onglet</translation> + <translation type="obsolete">Ouvrir le lien dans un nouvel onglet</translation> </message> </context> <context> <name>Core::BaseFileWizard</name> <message> - <location filename="../../../src/plugins/coreplugin/basefilewizard.cpp" line="+158"/> + <location filename="../../../src/plugins/coreplugin/basefilewizard.cpp" line="+162"/> <source>Unable to create the directory %1.</source> <translation>Impossible de créer le répertoire %1.</translation> </message> @@ -961,7 +1131,7 @@ <translation>Erreur pendant l'écriture de %1 : %2</translation> </message> <message> - <location line="+296"/> + <location line="+348"/> <location line="+30"/> <location line="+7"/> <location line="+6"/> @@ -970,7 +1140,7 @@ </message> <message> <location line="-22"/> - <location line="+111"/> + <location line="+125"/> <source>Existing files</source> <translation>Fichiers existants</translation> </message> @@ -1014,25 +1184,26 @@ Voulez vous les écraser ?</translation> <context> <name>Core::EditorManager</name> <message> - <location filename="../../../src/plugins/coreplugin/editormanager/editormanager.cpp" line="+187"/> - <location line="+1495"/> + <location filename="../../../src/plugins/coreplugin/editormanager/editormanager.cpp" line="+226"/> + <location line="+1547"/> <source>Revert to Saved</source> <translation>Revenir à la version sauvegardée</translation> </message> <message> - <location line="-1492"/> - <location filename="../../../src/plugins/coreplugin/editormanager/editorview.cpp" line="+539"/> + <location line="-1544"/> + <location line="+97"/> + <location filename="../../../src/plugins/coreplugin/editortoolbar.cpp" line="+302"/> <source>Close</source> <translation>Fermer</translation> </message> <message> - <location line="+1"/> + <location line="-96"/> <source>Close All</source> <translation>Fermer Tout</translation> </message> <message> <location line="+1"/> - <location line="+1294"/> + <location line="+1343"/> <source>Close Others</source> <translation>Fermer les autres éditeurs</translation> </message> @@ -1045,7 +1216,7 @@ Voulez vous les écraser ?</translation> <translation type="obsolete">Document Précédent dans l'Historique</translation> </message> <message> - <location line="-1293"/> + <location line="-1342"/> <source>Next Open Document in History</source> <translation>Document ouvert suivant dans l'historique</translation> </message> @@ -1056,11 +1227,13 @@ Voulez vous les écraser ?</translation> </message> <message> <location line="+1"/> + <location filename="../../../src/plugins/coreplugin/editortoolbar.cpp" line="-222"/> <source>Go Back</source> <translation>Précédent</translation> </message> <message> <location line="+1"/> + <location filename="../../../src/plugins/coreplugin/editortoolbar.cpp" line="+1"/> <source>Go Forward</source> <translation>Suivant</translation> </message> @@ -1070,7 +1243,7 @@ Voulez vous les écraser ?</translation> <translation>Ouvrir dans l'éditeur externe</translation> </message> <message> - <location line="+45"/> + <location line="+51"/> <source>Revert File to Saved</source> <translation>Restaurer le fichier sauvegardé</translation> </message> @@ -1080,7 +1253,12 @@ Voulez vous les écraser ?</translation> <translation>Ctrl+W</translation> </message> <message> - <location line="+8"/> + <location line="+10"/> + <source>Ctrl+F4</source> + <translation>Ctrl+F4</translation> + </message> + <message> + <location line="+7"/> <source>Ctrl+Shift+W</source> <translation>Ctrl+Shift+W</translation> </message> @@ -1155,12 +1333,16 @@ Voulez vous les écraser ?</translation> <translation>Fermer toutes les vues</translation> </message> <message> - <location line="+6"/> + <location line="+1160"/> + <source>Save %1 &As...</source> + <translation>Enregistrer %1 &sous...</translation> + </message> + <message> <source>Goto Other Split</source> - <translation>Changer de vue</translation> + <translation type="obsolete">Changer de vue</translation> </message> <message> - <location line="-22"/> + <location line="-1176"/> <source>%1,2</source> <translation>%1,2</translation> </message> @@ -1180,7 +1362,12 @@ Voulez vous les écraser ?</translation> <translation>%1,1</translation> </message> <message> - <location line="+6"/> + <location line="+4"/> + <source>Go to Next Split</source> + <translation type="unfinished">Aller à la vue suivante</translation> + </message> + <message> + <location line="+2"/> <source>%1,o</source> <translation>%1,o</translation> </message> @@ -1195,28 +1382,27 @@ Voulez vous les écraser ?</translation> <translation>nav.net </translation> </message> <message> - <location line="+720"/> + <location line="+750"/> <source>All Files (*)</source> <translation>Tout les fichiers (*)</translation> </message> <message> - <location line="+34"/> - <location line="+24"/> + <location line="+39"/> + <location line="+27"/> <source>Opening File</source> <translation>Ouverture du Fichier</translation> </message> <message> - <location line="-24"/> + <location line="-27"/> <source>Cannot open file %1!</source> <translation>Impossible d'ouvrir le fichier %1!</translation> </message> <message> - <location line="+40"/> <source>Open File</source> - <translation>Ouvrir le Fichier</translation> + <translation type="obsolete">Ouvrir le Fichier</translation> </message> <message> - <location line="+142"/> + <location line="+173"/> <source>File is Read Only</source> <translation>Le Fichier est en Lecture Seule</translation> </message> @@ -1232,12 +1418,12 @@ Voulez vous les écraser ?</translation> </message> <message> <location line="+2"/> - <location line="+134"/> + <location line="+138"/> <source>Make writable</source> <translation>Rendre inscriptible</translation> </message> <message> - <location line="-130"/> + <location line="-134"/> <source>Save as ...</source> <translation>Enregistrer sous...</translation> </message> @@ -1258,17 +1444,16 @@ Voulez vous les écraser ?</translation> <translation>Impossible d'attribuer les droits en écriture.</translation> </message> <message> - <location line="+92"/> + <location line="+96"/> <source><b>Warning:</b> You are changing a read-only file.</source> <translation><b>Attention:</b> Vous apportez des modifications à un fichier en lecture seule.</translation> </message> <message> - <location line="+15"/> <source>Save %1 As...</source> - <translation>Enregistrer %1 sous...</translation> + <translation type="obsolete">Enregistrer %1 sous...</translation> </message> <message> - <location line="+1"/> + <location line="+21"/> <source>&Save %1</source> <translation>Enregi&strer %1</translation> </message> @@ -1278,7 +1463,7 @@ Voulez vous les écraser ?</translation> <translation>Restaurer %1 à la version sauvegardée</translation> </message> <message> - <location line="+4"/> + <location line="+3"/> <source>Close %1</source> <translation>Fermer %1</translation> </message> @@ -1288,7 +1473,7 @@ Voulez vous les écraser ?</translation> <translation>Fermer tout sauf %1</translation> </message> <message> - <location line="+197"/> + <location line="+200"/> <source>You will lose your current changes if you proceed reverting %1.</source> <translation>Vous perdrez tous les changements en cours si vous restaurez %1.</translation> </message> @@ -1303,7 +1488,7 @@ Voulez vous les écraser ?</translation> <translation>Annuler</translation> </message> <message> - <location line="+44"/> + <location line="+43"/> <source><table border=1 cellspacing=0 cellpadding=3><tr><th>Variable</th><th>Expands to</th></tr><tr><td>%f</td><td>file name</td></tr><tr><td>%l</td><td>current line number</td></tr><tr><td>%c</td><td>current column number</td></tr><tr><td>%x</td><td>editor's x position on screen</td></tr><tr><td>%y</td><td>editor's y position on screen</td></tr><tr><td>%w</td><td>editor's width in pixels</td></tr><tr><td>%h</td><td>editor's height in pixels</td></tr><tr><td>%W</td><td>editor's width in characters</td></tr><tr><td>%H</td><td>editor's height in characters</td></tr><tr><td>%%</td><td>%</td></tr></table></source> <translation><table border=1 cellspacing=0 cellpadding=3><tr><th>La variable</th><th>se développe en </th></tr><tr><td>%f</td><td>nom de fichier</td></tr><tr><td>%l</td><td>numéro de ligne courante</td></tr><tr><td>%c</td><td>numéro de colonne courante</td></tr><tr><td>%x</td><td>abscisse de l'éditeur à l'écran</td></tr><tr><td>%y</td><td>ordonnée de l'éditeur à l'écran</td></tr><tr><td>%w</td><td>largeur de l'éditeur en pixels</td></tr><tr><td>%h</td><td>hauteur de l'éditeur en pixels</td></tr><tr><td>%W</td><td>largeur de l'éditeur en caractères</td></tr><tr><td>%H</td><td>hauteur de l'éditeur en caractères</td></tr><tr><td>%%</td><td>%</td></tr></table></translation> </message> @@ -1319,7 +1504,7 @@ Voulez vous les écraser ?</translation> <translation type="obsolete">Impossible de sauvegarder les modifications dans '%1'. Voulez vous continuer et perdre vos modifications ?</translation> </message> <message> - <location filename="../../../src/plugins/coreplugin/filemanager.cpp" line="+306"/> + <location filename="../../../src/plugins/coreplugin/filemanager.cpp" line="+519"/> <source>Cannot save file</source> <translation>Impossible d'enregistrer le fichier</translation> </message> @@ -1329,7 +1514,7 @@ Voulez vous les écraser ?</translation> <translation>Impossible d'enregistrer les modifications dans '%1'. Voulez vous continuer et perdre vos modifications ?</translation> </message> <message> - <location line="+113"/> + <location line="+114"/> <source>Overwrite?</source> <translation>Écraser ?</translation> </message> @@ -1339,15 +1524,20 @@ Voulez vous les écraser ?</translation> <translation>Un élément nommé '%1' existe déjà . Voulez-vous l'écraser ?</translation> </message> <message> - <location line="+35"/> + <location line="+37"/> <source>Save File As</source> <translation>Enregistrer sous</translation> </message> + <message> + <location line="+19"/> + <source>Open File</source> + <translation>Ouvrir le Fichier</translation> + </message> </context> <context> <name>Core::Internal::ComboBox</name> <message> - <location filename="../../../src/plugins/coreplugin/sidebar.cpp" line="+371"/> + <location filename="../../../src/plugins/coreplugin/sidebar.cpp" line="+475"/> <source>Activate %1</source> <translation>Activer %1</translation> </message> @@ -1436,56 +1626,49 @@ Voulez vous les écraser ?</translation> <context> <name>Core::Internal::EditorView</name> <message> - <location filename="../../../src/plugins/coreplugin/editormanager/editorview.cpp" line="-450"/> <source>Go Back</source> - <translation>Précédent</translation> + <translation type="obsolete">Précédent</translation> </message> <message> - <location line="+2"/> <source>Go Forward</source> - <translation>Suivant</translation> + <translation type="obsolete">Suivant</translation> </message> <message> - <location line="+73"/> - <location line="+37"/> + <location filename="../../../src/plugins/coreplugin/editormanager/editorview.cpp" line="+112"/> + <location line="+36"/> <source>Placeholder</source> <translation>Paramètre fictif</translation> </message> <message> - <location line="-31"/> + <location line="-30"/> <source>Close</source> <translation>Fermer</translation> </message> <message> - <location line="+221"/> <source>Make writable</source> - <translation>Rendre inscriptible</translation> + <translation type="obsolete">Rendre inscriptible</translation> </message> <message> - <location line="+4"/> <source>File is writable</source> - <translation>Le fichier est inscriptible</translation> + <translation type="obsolete">Le fichier est inscriptible</translation> </message> <message> - <location line="+57"/> <source>Copy full path to clipboard</source> - <translation>Copier le chemin complet vers le presse-papier</translation> + <translation type="obsolete">Copier le chemin complet vers le presse-papier</translation> </message> </context> <context> <name>Core::Internal::GeneralSettings</name> <message> - <location filename="../../../src/plugins/coreplugin/generalsettings.ui"/> <source>General settings</source> - <translation>Réglages généraux</translation> + <translation type="obsolete">Réglages généraux</translation> </message> <message> - <location/> <source>User &interface color:</source> - <translation>Couleur de l'&interface utilisateur :</translation> + <translation type="obsolete">Couleur de l'&interface utilisateur :</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/coreplugin/generalsettings.ui"/> <source>Reset to default</source> <translation>Restaurer les paramètres par défaut</translation> </message> @@ -1510,17 +1693,31 @@ Voulez vous les écraser ?</translation> <translation>?</translation> </message> <message> - <location filename="../../../src/plugins/coreplugin/generalsettings.cpp" line="+56"/> + <location filename="../../../src/plugins/coreplugin/generalsettings.cpp" line="+68"/> <source>General</source> <translation>Général</translation> </message> <message> - <location line="+10"/> + <location line="+30"/> + <source><System Language></source> + <translation type="unfinished"><Langue Système></translation> + </message> + <message> + <location line="+216"/> + <source>Restart required</source> + <translation type="unfinished">Redémarrage nécessaire</translation> + </message> + <message> + <location line="+1"/> + <source>The language change will take effect after a restart of Qt Creator.</source> + <translation type="unfinished">Le changement de langue prendra effet au prochain démarrage de Qt Creator.</translation> + </message> + <message> <source>Environment</source> - <translation>Environnement</translation> + <translation type="obsolete">Environnement</translation> </message> <message> - <location line="+77"/> + <location line="-40"/> <source>Variables</source> <translation>Variables</translation> </message> @@ -1530,35 +1727,76 @@ Voulez vous les écraser ?</translation> <translation>Quand des fichiers ont été modifiés en dehors de Qt Creator :</translation> </message> <message> - <location/> <source>Always ask</source> - <translation>Demander quoi faire</translation> + <translation type="obsolete">Demander quoi faire</translation> </message> <message> - <location/> <source>Reload all modified files</source> - <translation>Recharger tous les fichiers modifiés</translation> + <translation type="obsolete">Recharger tous les fichiers modifiés</translation> </message> <message> - <location/> <source>Ignore modifications</source> + <translation type="obsolete">Ignorer les modifications</translation> + </message> + <message> + <location/> + <source>User Interface</source> + <translation>Interface utilisateur</translation> + </message> + <message> + <location/> + <source>Color:</source> + <translation>Couleur :</translation> + </message> + <message> + <location/> + <source>Default file encoding: </source> + <translation>Encodage de fichier par défaut :</translation> + </message> + <message> + <location/> + <source>Language:</source> + <translation>Langue :</translation> + </message> + <message> + <location/> + <source>System</source> + <translation>Système</translation> + </message> + <message> + <location/> + <source>External file browser:</source> + <translation type="unfinished">Navigateur de fichiers externe :</translation> + </message> + <message> + <location/> + <source>Always Ask</source> + <translation type="unfinished">Toujours demander quoi faire</translation> + </message> + <message> + <location/> + <source>Reload All Unchanged Editors</source> + <translation type="unfinished">Recharger tous les éditeurs inchangés</translation> + </message> + <message> + <location/> + <source>Ignore Modifications</source> <translation>Ignorer les modifications</translation> </message> </context> <context> <name>Core::Internal::MainWindow</name> <message> - <location filename="../../../src/plugins/coreplugin/mainwindow.cpp" line="+157"/> + <location filename="../../../src/plugins/coreplugin/mainwindow.cpp" line="+159"/> <source>Qt Creator</source> <translation>Qt Creator</translation> </message> <message> - <location line="+143"/> <source>Output</source> - <translation>Sortie</translation> + <translation type="obsolete">Sortie</translation> </message> <message> - <location line="+162"/> + <location line="+284"/> <source>&File</source> <translation>&Fichier</translation> </message> @@ -1578,7 +1816,7 @@ Voulez vous les écraser ?</translation> <translation>Fe&nêtre</translation> </message> <message> - <location line="+10"/> + <location line="+11"/> <source>&Help</source> <translation>&Aide</translation> </message> @@ -1595,33 +1833,41 @@ Voulez vous les écraser ?</translation> <translation type="obsolete">Ou&vrir avec...</translation> </message> <message> - <location line="+62"/> + <location line="+64"/> <source>&New File or Project...</source> <translation>&Nouveau fichier ou projet...</translation> </message> <message> - <location line="+7"/> + <location line="+8"/> <source>&Open File or Project...</source> <translation>&Ouvrir un fichier ou projet...</translation> </message> <message> - <location line="+7"/> <source>&Open File With...</source> + <translation type="obsolete">Ouvrir le fichier &avec...</translation> + </message> + <message> + <source>Recent Files</source> + <translation type="obsolete">Fichiers récents</translation> + </message> + <message> + <location line="+7"/> + <source>Open File &With...</source> <translation>Ouvrir le fichier &avec...</translation> </message> <message> <location line="+8"/> - <source>Recent Files</source> - <translation>Fichiers récents</translation> + <source>Recent &Files</source> + <translation>&Fichiers récents</translation> </message> <message> - <location line="+3"/> + <location line="+4"/> <location line="+4"/> <source>&Save</source> <translation>&Enregistrer</translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <location line="+6"/> <source>Save &As...</source> <translation>Enregistrer &sous...</translation> @@ -1638,12 +1884,12 @@ Voulez vous les écraser ?</translation> <translation>&Tout enregistrer</translation> </message> <message> - <location line="+9"/> + <location line="+10"/> <source>&Print...</source> <translation>Im&primer...</translation> </message> <message> - <location line="+5"/> + <location line="+7"/> <source>E&xit</source> <translation>&Quitter</translation> </message> @@ -1653,39 +1899,39 @@ Voulez vous les écraser ?</translation> <translation>Ctrl+Q</translation> </message> <message> - <location line="+5"/> + <location line="+6"/> <location line="+4"/> <source>&Undo</source> <translation>Annu&ler</translation> </message> <message> - <location line="+5"/> + <location line="+6"/> <location line="+4"/> <source>&Redo</source> <translation>Re&faire</translation> </message> <message> - <location line="+5"/> + <location line="+6"/> <source>Cu&t</source> <translation>Co&uper</translation> </message> <message> - <location line="+7"/> + <location line="+8"/> <source>&Copy</source> <translation>Cop&ier</translation> </message> <message> - <location line="+7"/> + <location line="+8"/> <source>&Paste</source> <translation>C&oller</translation> </message> <message> - <location line="+7"/> + <location line="+8"/> <source>&Select All</source> <translation>Tout &sélectionner</translation> </message> <message> - <location line="+7"/> + <location line="+8"/> <source>&Go To Line...</source> <translation>&Aller à la ligne...</translation> </message> @@ -1715,12 +1961,17 @@ Voulez vous les écraser ?</translation> <translation>Afficher la barre latérale</translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Full Screen</source> <translation>Plein écran</translation> </message> <message> - <location line="+10"/> + <location line="+11"/> + <source>&Views</source> + <translation>&Vues</translation> + </message> + <message> + <location line="+5"/> <source>About &Qt Creator</source> <translation>À propos de &Qt Creator</translation> </message> @@ -1736,12 +1987,22 @@ Voulez vous les écraser ?</translation> </message> <message> <location line="+25"/> + <source>New</source> + <comment>Title of dialog</comment> + <translation>Nouveau</translation> + </message> + <message> + <location line="+515"/> + <source>Open Project</source> + <translation>Ouvrir le projet</translation> + </message> + <message> <source>New...</source> <comment>Title of dialog</comment> - <translation>Nouveau...</translation> + <translation type="obsolete">Nouveau...</translation> </message> <message> - <location line="+511"/> + <location line="+38"/> <source>Settings...</source> <translation>Paramètres...</translation> </message> @@ -1749,15 +2010,19 @@ Voulez vous les écraser ?</translation> <context> <name>Core::Internal::MessageOutputWindow</name> <message> - <location filename="../../../src/plugins/coreplugin/messageoutputwindow.cpp" line="+76"/> <source>General</source> - <translation>Général</translation> + <translation type="obsolete">Général</translation> + </message> + <message> + <location filename="../../../src/plugins/coreplugin/messageoutputwindow.cpp" line="+76"/> + <source>General Messages</source> + <translation>Messages généraux</translation> </message> </context> <context> <name>Core::Internal::NavComboBox</name> <message> - <location filename="../../../src/plugins/coreplugin/navigationwidget.cpp" line="+527"/> + <location filename="../../../src/plugins/coreplugin/navigationwidget.cpp" line="+539"/> <source>Activate %1</source> <translation>Activer %1</translation> </message> @@ -1778,7 +2043,17 @@ Voulez vous les écraser ?</translation> <context> <name>Core::Internal::NavigationWidget</name> <message> - <location line="-40"/> + <location line="-226"/> + <source>Hide Sidebar</source> + <translation>Masquer la barre latérale</translation> + </message> + <message> + <location line="+2"/> + <source>Show Sidebar</source> + <translation>Afficher la barre latérale</translation> + </message> + <message> + <location line="+183"/> <source>Activate %1 Pane</source> <translation>Activer le panneau %1</translation> </message> @@ -1791,9 +2066,28 @@ Voulez vous les écraser ?</translation> <translation>Nouveau projet</translation> </message> <message> - <location/> <source>1</source> - <translation>1</translation> + <translation type="obsolete">1</translation> + </message> + <message> + <location/> + <source>Choose a template:</source> + <translation>Choisir un modèle :</translation> + </message> + <message> + <location filename="../../../src/plugins/coreplugin/dialogs/newdialog.cpp" line="+161"/> + <source>&Choose...</source> + <translation>&Choisir…</translation> + </message> + <message> + <location line="+45"/> + <source>Projects</source> + <translation>Projets</translation> + </message> + <message> + <location line="+3"/> + <source>Files and Classes</source> + <translation>Fichiers et classes</translation> </message> </context> <context> @@ -1834,7 +2128,7 @@ Voulez vous les écraser ?</translation> <context> <name>Core::Internal::OpenEditorsWindow</name> <message> - <location filename="../../../src/plugins/coreplugin/editormanager/openeditorswindow.cpp" line="+210"/> + <location filename="../../../src/plugins/coreplugin/editormanager/openeditorswindow.cpp" line="+212"/> <location line="+27"/> <source>*</source> <translation>*</translation> @@ -1851,7 +2145,7 @@ Voulez vous les écraser ?</translation> <context> <name>Core::Internal::OutputPaneManager</name> <message> - <location filename="../../../src/plugins/coreplugin/outputpane.cpp" line="+173"/> + <location filename="../../../src/plugins/coreplugin/outputpane.cpp" line="+209"/> <source>Output</source> <translation>Sortie</translation> </message> @@ -1871,15 +2165,26 @@ Voulez vous les écraser ?</translation> <translation>Élement précédent</translation> </message> <message> - <location line="+62"/> + <location line="+5"/> + <location line="+195"/> + <source>Maximize Output Pane</source> + <translation>Maximiser le paneau de sortie</translation> + </message> + <message> + <location line="-132"/> <source>Output &Panes</source> <translation>&Paneaux de sortie</translation> </message> + <message> + <location line="+131"/> + <source>Minimize Output Pane</source> + <translation>Minimiser le paneau de sortie</translation> + </message> </context> <context> <name>Core::Internal::PluginDialog</name> <message> - <location filename="../../../src/plugins/coreplugin/plugindialog.cpp" line="+54"/> + <location filename="../../../src/plugins/coreplugin/plugindialog.cpp" line="+57"/> <source>Details</source> <translation>Détails</translation> </message> @@ -1894,12 +2199,17 @@ Voulez vous les écraser ?</translation> <translation>Fermer</translation> </message> <message> - <location line="+15"/> + <location line="+6"/> + <source>Restart required.</source> + <translation>Redémarrage nécessaire.</translation> + </message> + <message> + <location line="+16"/> <source>Installed Plugins</source> <translation>Plugins installés</translation> </message> <message> - <location line="+35"/> + <location line="+52"/> <source>Plugin Details of %1</source> <translatorcomment>Détail sur le plugin %1 ?</translatorcomment> <translation>Détails du plugin %1</translation> @@ -1913,7 +2223,7 @@ Voulez vous les écraser ?</translation> <context> <name>Core::Internal::ProgressView</name> <message> - <location filename="../../../src/plugins/coreplugin/progressmanager/progressview.cpp" line="+47"/> + <location filename="../../../src/plugins/coreplugin/progressmanager/progressview.cpp" line="+48"/> <source>Processes</source> <translation>Processus</translation> </message> @@ -1925,7 +2235,7 @@ Voulez vous les écraser ?</translation> <translation type="obsolete">Ne pas enregistrer</translation> </message> <message> - <location filename="../../../src/plugins/coreplugin/dialogs/saveitemsdialog.cpp" line="+55"/> + <location filename="../../../src/plugins/coreplugin/dialogs/saveitemsdialog.cpp" line="+53"/> <source>Do not Save</source> <translation>Ne pas enregistrer</translation> </message> @@ -1948,23 +2258,37 @@ Voulez vous les écraser ?</translation> <context> <name>Core::Internal::ShortcutSettings</name> <message> - <location filename="../../../src/plugins/coreplugin/dialogs/shortcutsettings.cpp" line="+72"/> + <location filename="../../../src/plugins/coreplugin/dialogs/shortcutsettings.cpp" line="+77"/> <source>Keyboard</source> <translation>Clavier</translation> </message> <message> - <location line="+10"/> <source>Environment</source> - <translation>Environnement</translation> + <translation type="obsolete">Environnement</translation> </message> <message> - <location line="+157"/> + <location line="+24"/> + <source>Keyboard Shortcuts</source> + <translation>Rarccourcis clavier</translation> + </message> + <message> + <location line="+1"/> + <source>Key sequence:</source> + <translation>Combinaison de touches :</translation> + </message> + <message> + <location line="+1"/> + <source>Shortcut</source> + <translation>Raccourci</translation> + </message> + <message> + <location line="+113"/> <source>Import Keyboard Mapping Scheme</source> <translation>Importer le mapping clavier</translation> </message> <message> <location line="+2"/> - <location line="+32"/> + <location line="+49"/> <source>Keyboard Mapping Scheme (*.kms)</source> <translation>Schéma de mapping clavier (*.kms)</translation> </message> @@ -1977,7 +2301,7 @@ Voulez vous les écraser ?</translation> <context> <name>Core::Internal::SideBarWidget</name> <message> - <location filename="../../../src/plugins/coreplugin/sidebar.cpp" line="-130"/> + <location filename="../../../src/plugins/coreplugin/sidebar.cpp" line="-147"/> <source>Split</source> <translation>Scinder</translation> </message> @@ -1995,16 +2319,25 @@ Voulez vous les écraser ?</translation> <translation>À propos de Qt Creator</translation> </message> <message> - <location line="+11"/> + <location line="+9"/> + <source>(%1)</source> + <translation>(%1)</translation> + </message> + <message> + <location line="+6"/> <source>From revision %1<br/></source> <extracomment>This gets conditionally inserted as argument %8 into the description string.</extracomment> <translation>Depuis la révision %1<br/></translation> </message> <message> <location line="+3"/> + <source><h3>Qt Creator %1 %8</h3>Based on Qt %2 (%3 bit)<br/><br/>Built on %4 at %5<br /><br/>%9<br/>Copyright 2008-%6 %7. All rights reserved.<br/><br/>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.<br/></source> + <translation><h3>Qt Creator %1 %8</h3>Basé sur Qt %2 (%3 bit)<br/><br/>Compilé le %4 à %5<br /><br/>%9<br/>Copyright 2008-%6 %7. Tous droits réservés.<br/><br/>Ce programme est fournit « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, INCLUANT, SANS S'Y LIMITER, LES GARANTIES D'ABSENCE DE DÉFAUT, DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER.<br/></translation> + </message> + <message> <source><h3>Qt Creator %1</h3>Based on Qt %2 (%3 bit)<br/><br/>Built on %4 at %5<br /><br/>%8<br/>Copyright 2008-%6 %7. All rights reserved.<br/><br/>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.<br/></source> <translatorcomment>%4 == __DATE__ et %5 ==__TIME__. Pour les formulations légales, dans le doute, mieux vaut laisser l'anglais... (legal m'a l'air correct, enfin chuis pas avocat !)</translatorcomment> - <translation><h3>Qt Creator %1</h3>Basé sur Qt %2 (%3 bit)<br/><br/>Compilé le %4 à %5<br /><br/>%8<br/>Copyright 2008-%6 %7. Tous droits réservés.<br/><br/>Ce programme est fournit « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, INCLUANT, SANS S'Y LIMITER, LES GARANTIES D'ABSENCE DE DÉFAUT, DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER.<br/></translation> + <translation type="obsolete"><h3>Qt Creator %1</h3>Basé sur Qt %2 (%3 bit)<br/><br/>Compilé le %4 à %5<br /><br/>%8<br/>Copyright 2008-%6 %7. Tous droits réservés.<br/><br/>Ce programme est fournit « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, INCLUANT, SANS S'Y LIMITER, LES GARANTIES D'ABSENCE DE DÉFAUT, DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER.<br/></translation> </message> </context> <context> @@ -2150,9 +2483,13 @@ Voulez vous les écraser ?</translation> <context> <name>Core::ModeManager</name> <message> - <location filename="../../../src/plugins/coreplugin/modemanager.cpp" line="+145"/> <source>Switch to %1 mode</source> - <translation>Basculer vers le mode %1</translation> + <translation type="obsolete">Basculer vers le mode %1</translation> + </message> + <message> + <location filename="../../../src/plugins/coreplugin/modemanager.cpp" line="+180"/> + <source>Switch to <b>%1</b> mode</source> + <translation>Basculer vers le mode <b>%1</b></translation> </message> </context> <context> @@ -2165,7 +2502,7 @@ Voulez vous les écraser ?</translation> %3</translation> </message> <message> - <location line="+66"/> + <location line="+67"/> <source>Unknown error</source> <translation>Erreur inconnue</translation> </message> @@ -2280,24 +2617,45 @@ Voulez vous les écraser ?</translation> <context> <name>Utils::FileNameValidatingLineEdit</name> <message> - <location filename="../../../src/libs/utils/filenamevalidatinglineedit.cpp" line="+95"/> <source>The name must not be empty</source> - <translation>Le nom ne peut pas être vide</translation> + <translation type="obsolete">Le nom ne peut pas être vide</translation> </message> <message> - <location line="+8"/> <source>The name must not contain any of the characters '%1'.</source> - <translation>Le nom ne peut pas contenir un des caractères suivant : '%1'.</translation> + <translation type="obsolete">Le nom ne peut pas contenir un des caractères suivant : '%1'.</translation> </message> <message> - <location line="+9"/> <source>The name must not contain '%1'.</source> - <translation>Le nom ne peut pas contenir '%1'.</translation> + <translation type="obsolete">Le nom ne peut pas contenir '%1'.</translation> </message> <message> - <location line="+10"/> <source>The name must not match that of a MS Windows device. (%1).</source> - <translation>Le nom ne peut pas correspondre à un périphérique MS Windows. (%1).</translation> + <translation type="obsolete">Le nom ne peut pas correspondre à un périphérique MS Windows. (%1).</translation> + </message> + <message> + <location filename="../../../src/libs/utils/filenamevalidatinglineedit.cpp" line="+95"/> + <source>Name is empty.</source> + <translation>Le nom de fichier est vide.</translation> + </message> + <message> + <location line="+9"/> + <source>Name contains white space.</source> + <translation type="unfinished">Le nom contient des espaces.</translation> + </message> + <message> + <location line="+2"/> + <source>Invalid character '%1'.</source> + <translation type="unfinished">Caractère invalide ' %1'.</translation> + </message> + <message> + <location line="+11"/> + <source>Invalid characters '%1'.</source> + <translation type="unfinished">Caractères invalides ' %1'.</translation> + </message> + <message> + <location line="+10"/> + <source>Name matches MS Windows device. (%1).</source> + <translation>Le nom correspond à un périphérique MS Windows. (%1).</translation> </message> </context> <context> @@ -2330,42 +2688,35 @@ Voulez vous les écraser ?</translation> <context> <name>Utils::NewClassWidget</name> <message> - <location filename="../../../src/libs/utils/newclasswidget.ui"/> <source>Class name:</source> - <translation>Nom de la classe :</translation> + <translation type="obsolete">Nom de la classe :</translation> </message> <message> - <location/> <source>Base class:</source> - <translation>Classe parent :</translation> + <translation type="obsolete">Classe parent :</translation> </message> <message> - <location/> <source>Header file:</source> - <translation>Fichier d'en-tête :</translation> + <translation type="obsolete">Fichier d'en-tête :</translation> </message> <message> - <location/> <source>Source file:</source> - <translation>Fichier source :</translation> + <translation type="obsolete">Fichier source :</translation> </message> <message> - <location/> <source>Generate form:</source> - <translation>Générer l'interface graphique :</translation> + <translation type="obsolete">Générer l'interface graphique :</translation> </message> <message> - <location/> <source>Form file:</source> - <translation>Fichier d'interface :</translation> + <translation type="obsolete">Fichier d'interface :</translation> </message> <message> - <location/> <source>Path:</source> - <translation>Chemin :</translation> + <translation type="obsolete">Chemin :</translation> </message> <message> - <location filename="../../../src/libs/utils/newclasswidget.cpp" line="+417"/> + <location filename="../../../src/libs/utils/newclasswidget.cpp" line="+445"/> <source>Invalid base class name</source> <translation>Nom de la classe parente invalide</translation> </message> @@ -2380,7 +2731,7 @@ Voulez vous les écraser ?</translation> <translation>Nom du fichier source invalide : '%1'</translation> </message> <message> - <location line="+7"/> + <location line="+8"/> <source>Invalid form file name: '%1'</source> <translation>Nom du fichier d'interface invalide : '%1'</translation> </message> @@ -2390,9 +2741,8 @@ Voulez vous les écraser ?</translation> <translation>hérite de QObject</translation> </message> <message> - <location/> <source>Type information:</source> - <translation>Information de type :</translation> + <translation type="obsolete">Information de type :</translation> </message> <message> <location/> @@ -2404,28 +2754,82 @@ Voulez vous les écraser ?</translation> <source>Inherits QWidget</source> <translation>Hérite de QWidget</translation> </message> -</context> -<context> - <name>Utils::PathChooser</name> <message> - <location filename="../../../src/libs/utils/pathchooser.cpp" line="+49"/> - <source>Choose...</source> - <translation>Choisir...</translation> + <location/> + <source>&Class name:</source> + <translation>Nom de la &classe :</translation> </message> <message> - <location line="+2"/> - <source>Browse...</source> - <translation>Parcourir...</translation> + <location/> + <source>&Base class:</source> + <translation>Classe &parent :</translation> </message> <message> - <location line="+123"/> - <source>Choose a directory</source> - <translation>Sélectionner un répertoire</translation> + <location/> + <source>&Type information:</source> + <translation>Information de &type :</translation> </message> <message> - <location line="+6"/> - <source>Choose a file</source> - <translation>Sélectionner un fichier</translation> + <location/> + <source>Based on QSharedData</source> + <translatorcomment>il s'agit de l'information</translatorcomment> + <translation type="unfinished">Basée sur QSharedData</translation> + </message> + <message> + <location/> + <source>&Header file:</source> + <translation>Fichier d'&en-tête :</translation> + </message> + <message> + <location/> + <source>&Source file:</source> + <translation>Fichier &source :</translation> + </message> + <message> + <location/> + <source>&Generate form:</source> + <translation>&Générer l'interface graphique :</translation> + </message> + <message> + <location/> + <source>&Form file:</source> + <translation>&Fichier d'interface :</translation> + </message> + <message> + <location/> + <source>&Path:</source> + <translation>Che&min :</translation> + </message> +</context> +<context> + <name>Utils::PathChooser</name> + <message> + <location filename="../../../src/libs/utils/pathchooser.cpp" line="+49"/> + <source>Choose...</source> + <translation>Choisir...</translation> + </message> + <message> + <location line="+2"/> + <source>Browse...</source> + <translation>Parcourir...</translation> + </message> + <message> + <source>Choose a directory</source> + <translation type="obsolete">Sélectionner un répertoire</translation> + </message> + <message> + <source>Choose a file</source> + <translation type="obsolete">Sélectionner un fichier</translation> + </message> + <message> + <location line="+123"/> + <source>Choose Directory</source> + <translation>Sélectionner un répertoire</translation> + </message> + <message> + <location line="+6"/> + <source>Choose File</source> + <translation>Sélectionner un fichier</translation> </message> <message> <location line="+33"/> @@ -2433,7 +2837,7 @@ Voulez vous les écraser ?</translation> <translation>Le chemin ne peut pas être vide.</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> <source>The path '%1' does not exist.</source> <translation>Le chemin '%1' n'existe pas.</translation> </message> @@ -2467,9 +2871,13 @@ Voulez vous les écraser ?</translation> </message> <message> <location line="+1"/> - <source>Delete line</source> + <source>Delete Line</source> <translation>Supprimer la ligne</translation> </message> + <message> + <source>Delete line</source> + <translation type="obsolete">Supprimer la ligne</translation> + </message> <message> <location line="+1"/> <source>Clear</source> @@ -2504,7 +2912,7 @@ Voulez vous les écraser ?</translation> <translation><Entrer_Nom></translation> </message> <message> - <location line="+97"/> + <location line="+98"/> <source>The project already exists.</source> <translation>Le projet existe déjà .</translation> </message> @@ -2513,13 +2921,22 @@ Voulez vous les écraser ?</translation> <source>A file with that name already exists.</source> <translation>Un fichier existe déjà avec ce nom.</translation> </message> + <message> + <location filename="../../../src/libs/utils/projectintropage.ui"/> + <source>Use as default project location</source> + <translation type="unfinished">Utiliser comme emplacement par défault pour le projet</translation> + </message> </context> <context> <name>Utils::ProjectNameValidatingLineEdit</name> <message> - <location filename="../../../src/libs/utils/projectnamevalidatinglineedit.cpp" line="+50"/> <source>The name must not contain the '.'-character.</source> - <translation>Le nom ne peut pas contenir le caractère '.'.</translation> + <translation type="obsolete">Le nom ne peut pas contenir le caractère '.'.</translation> + </message> + <message> + <location filename="../../../src/libs/utils/projectnamevalidatinglineedit.cpp" line="+50"/> + <source>Invalid character '.'.</source> + <translation>Caractère invalide '.'.</translation> </message> </context> <context> @@ -2543,12 +2960,11 @@ Voulez vous les écraser ?</translation> <context> <name>Utils::WizardPage</name> <message> - <location filename="../../../src/libs/utils/filewizardpage.ui"/> <source>Choose the location</source> - <translation>Choisir l'emplacement</translation> + <translation type="obsolete">Choisir l'emplacement</translation> </message> <message> - <location/> + <location filename="../../../src/libs/utils/filewizardpage.ui"/> <source>Name:</source> <translation>Nom :</translation> </message> @@ -2557,11 +2973,16 @@ Voulez vous les écraser ?</translation> <source>Path:</source> <translation>Chemin :</translation> </message> + <message> + <location/> + <source>Choose the Location</source> + <translation>Choisir l'emplacement</translation> + </message> </context> <context> <name>Utils::reloadPrompt</name> <message> - <location filename="../../../src/libs/utils/reloadpromptutils.cpp" line="+42"/> + <location filename="../../../src/libs/utils/reloadpromptutils.cpp" line="+44"/> <source>File Changed</source> <translation>Fichier modifié</translation> </message> @@ -2579,12 +3000,12 @@ Voulez vous les écraser ?</translation> <context> <name>CppEditor::Internal::CPPEditor</name> <message> - <location filename="../../../src/plugins/cppeditor/cppeditor.cpp" line="+615"/> + <location filename="../../../src/plugins/cppeditor/cppeditor.cpp" line="+676"/> <source>Sort alphabetically</source> <translation>Trier par ordre alphabétique</translation> </message> <message> - <location line="+163"/> + <location line="+277"/> <source>This change cannot be undone.</source> <translation>Ce changement ne peut être annulé.</translation> </message> @@ -2593,6 +3014,11 @@ Voulez vous les écraser ?</translation> <source>Yes, I know what I am doing.</source> <translation>Simplifier les déclarations.</translation> </message> + <message> + <location line="+998"/> + <source>Unused variable</source> + <translation>Variable non utilisée</translation> + </message> <message> <source>Simplify Declarations</source> <translation type="obsolete">Simplifier les déclarations</translation> @@ -2601,8 +3027,12 @@ Voulez vous les écraser ?</translation> <context> <name>CppEditor::Internal::ClassNamePage</name> <message> - <location filename="../../../src/plugins/cppeditor/cppclasswizard.cpp" line="+63"/> <source>Enter class name</source> + <translation type="obsolete">Entrer le nom de la classe</translation> + </message> + <message> + <location filename="../../../src/plugins/cppeditor/cppclasswizard.cpp" line="+63"/> + <source>Enter Class Name</source> <translation>Entrer le nom de la classe</translation> </message> <message> @@ -2619,7 +3049,7 @@ Voulez vous les écraser ?</translation> <context> <name>CppEditor::Internal::CppClassWizard</name> <message> - <location line="+117"/> + <location line="+118"/> <source>Error while generating file contents.</source> <translation>Erreur a la génération du contenu du fichier.</translation> </message> @@ -2627,10 +3057,15 @@ Voulez vous les écraser ?</translation> <context> <name>CppEditor::Internal::CppClassWizardDialog</name> <message> - <location line="-67"/> + <location line="-68"/> <source>C++ Class Wizard</source> <translation>Assistant de création de classe C++</translation> </message> + <message> + <location line="+2"/> + <source>Details</source> + <translation>Détails</translation> + </message> </context> <context> <name>CppEditor::Internal::CppHoverHandler</name> @@ -2643,54 +3078,73 @@ Voulez vous les écraser ?</translation> <context> <name>CppEditor::Internal::CppPlugin</name> <message> - <location filename="../../../src/plugins/cppeditor/cppplugin.cpp" line="+190"/> <source>C++</source> - <translation>C++</translation> + <translation type="obsolete">C++</translation> </message> <message> - <location line="+1"/> <source>Creates a C++ header file.</source> - <translation>Créer un fichier header C++.</translation> + <translation type="obsolete">Créer un fichier header C++.</translation> </message> <message> - <location line="+1"/> + <location filename="../../../src/plugins/cppeditor/cppplugin.cpp" line="+228"/> <source>C++ Header File</source> <translation>Fichier header C++</translation> </message> <message> - <location line="+3"/> <source>Creates a C++ source file.</source> - <translation>Créer un fichier source C++.</translation> + <translation type="obsolete">Créer un fichier source C++.</translation> </message> <message> - <location line="+1"/> + <location line="-5"/> <source>C++ Source File</source> <translation>Fichier source C++</translation> </message> <message> - <location line="+4"/> + <location line="-8"/> <source>C++ Class</source> <translation>Classe C++</translation> </message> <message> - <location line="+1"/> <source>Creates a header and a source file for a new class.</source> - <translation>Créer un header et un fichier source pour une nouvelle classe.</translation> + <translation type="obsolete">Créer un header et un fichier source pour une nouvelle classe.</translation> </message> <message> - <location line="+12"/> <source>Follow Symbol under Cursor</source> + <translation type="obsolete">Suivre le symbole sous le curseur</translation> + </message> + <message> + <source>Switch between Method Declaration/Definition</source> + <translation type="obsolete">Changer entre la définition et déclaration de la méthode</translation> + </message> + <message> + <location line="+3"/> + <source>Creates a C++ header and a source file for a new class that you can add to a C++ project.</source> + <translation>Crée les fichier d'en-tête et fichier source C++ pour une nouvelle classe que vous pouvez ajouter a votre projet C++.</translation> + </message> + <message> + <location line="+4"/> + <source>Creates a C++ source file that you can add to a C++ project.</source> + <translation>Crée un fichier source C++ que vous pouvez ajouter a votre projet C++.</translation> + </message> + <message> + <location line="+5"/> + <source>Creates a C++ header file that you can add to a C++ project.</source> + <translation>Crée un fichier d'en-tête C++ que vous pouvez ajouter a votre projet C++.</translation> + </message> + <message> + <location line="+14"/> + <source>Follow Symbol Under Cursor</source> <translation>Suivre le symbole sous le curseur</translation> </message> <message> <location line="+9"/> - <source>Switch between Method Declaration/Definition</source> + <source>Switch Between Method Declaration/Definition</source> <translation>Changer entre la définition et déclaration de la méthode</translation> </message> <message> <location line="+9"/> <source>Find Usages</source> - <translation>Trouver des utilisations</translation> + <translation>Trouver les utilisations</translation> </message> <message> <location line="+2"/> @@ -2699,24 +3153,31 @@ Voulez vous les écraser ?</translation> </message> <message> <location line="+5"/> - <source>Rename Symbol under Cursor</source> + <source>Rename Symbol Under Cursor</source> <translation>Renommer le symbole sous le curseur</translation> </message> <message> <location line="+12"/> - <source>Update code model</source> + <source>Update Code Model</source> <translation>Mettre à jour le modèle de code</translation> </message> + <message> + <source>Rename Symbol under Cursor</source> + <translation type="obsolete">Renommer le symbole sous le curseur</translation> + </message> + <message> + <source>Update code model</source> + <translation type="obsolete">Mettre à jour le modèle de code</translation> + </message> </context> <context> <name>CppFileSettingsPage</name> <message> - <location filename="../../../src/plugins/cpptools/cppfilesettingspage.ui"/> <source>File Naming Conventions</source> - <translation>Convention de nommage des fichiers</translation> + <translation type="obsolete">Convention de nommage des fichiers</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/cpptools/cppfilesettingspage.ui"/> <source>Header suffix:</source> <translation>Suffixe des fichier d'en-tête :</translation> </message> @@ -2731,15 +3192,19 @@ Voulez vous les écraser ?</translation> <translation>Nom de fichiers en minuscule</translation> </message> <message> - <location/> <source>License Template:</source> - <translation>Modèle de licence :</translation> + <translation type="obsolete">Modèle de licence :</translation> + </message> + <message> + <location/> + <source>License template:</source> + <translation>Modèle de licence :</translation> </message> </context> <context> <name>CppPreprocessor</name> <message> - <location filename="../../../src/plugins/cpptools/cppmodelmanager.cpp" line="+540"/> + <location filename="../../../src/plugins/cpptools/cppmodelmanager.cpp" line="+580"/> <source>%1: No such file or directory</source> <translation>%1 : aucun fichier ou répertoire de ce type</translation> </message> @@ -2747,26 +3212,35 @@ Voulez vous les écraser ?</translation> <context> <name>CppTools::Internal::CppModelManager</name> <message> - <location line="+319"/> + <location line="+334"/> <source>Scanning</source> <translatorcomment>Balayage ? (Numérisation ça fait franchement scanner)</translatorcomment> <translation>Analyse</translation> </message> <message> - <location line="+42"/> + <location line="+41"/> + <source>Parsing</source> + <translatorcomment>laisser Parsing?</translatorcomment> + <translation type="unfinished">Décomposition analytique</translation> + </message> + <message> <source>Indexing</source> - <translation>Indexation</translation> + <translation type="obsolete">Indexation</translation> </message> </context> <context> <name>CppTools</name> <message> - <location filename="../../../src/plugins/cpptools/cpptoolsconstants.h" line="+53"/> <source>File Naming Conventions</source> - <translation>Conventions de nommage des fichiers</translation> + <translation type="obsolete">Conventions de nommage des fichiers</translation> </message> <message> - <location line="+1"/> + <location filename="../../../src/plugins/cpptools/cpptoolsconstants.h" line="+54"/> + <source>File Naming</source> + <translation>Nommage de fichier</translation> + </message> + <message> + <location line="+2"/> <source>C++</source> <translation>C++</translation> </message> @@ -2774,14 +3248,13 @@ Voulez vous les écraser ?</translation> <context> <name>CppTools::Internal::CompletionSettingsPage</name> <message> - <location filename="../../../src/plugins/cpptools/completionsettingspage.cpp" line="+57"/> + <location filename="../../../src/plugins/cpptools/completionsettingspage.cpp" line="+59"/> <source>Completion</source> <translation>Complétion</translation> </message> <message> - <location line="+10"/> <source>Text Editor</source> - <translation>Éditeur de texte</translation> + <translation type="obsolete">Éditeur de texte</translation> </message> </context> <context> @@ -2803,7 +3276,7 @@ Voulez vous les écraser ?</translation> <context> <name>CppTools::Internal::CppFileSettingsWidget</name> <message> - <location filename="../../../src/plugins/cpptools/cppfilesettingspage.cpp" line="+55"/> + <location filename="../../../src/plugins/cpptools/cppfilesettingspage.cpp" line="+56"/> <source>/************************************************************************** ** Qt Creator license header template ** Special keywords: %USER% %DATE% %YEAR% @@ -2824,9 +3297,13 @@ Voulez vous les écraser ?</translation> <translation>Modifier...</translation> </message> <message> - <location line="+51"/> + <location line="+62"/> + <source>Choose Location for New License Template File</source> + <translation>Choisir l'emplacement pour le nouveau modèle de license</translation> + </message> + <message> <source>Choose a location for the new license template file</source> - <translation>Choisir un nouveau fichier pour le modèle de license</translation> + <translation type="obsolete">Choisir un nouveau fichier pour le modèle de license</translation> </message> <message> <source>Choose a new license template file</source> @@ -2862,7 +3339,7 @@ Voulez vous les écraser ?</translation> <context> <name>CppTools::Internal::CppToolsPlugin</name> <message> - <location filename="../../../src/plugins/cpptools/cpptoolsplugin.cpp" line="+126"/> + <location filename="../../../src/plugins/cpptools/cpptoolsplugin.cpp" line="+129"/> <source>&C++</source> <translation>&C++</translation> </message> @@ -2897,7 +3374,7 @@ Voulez vous les écraser ?</translation> <context> <name>CppTools::Internal::FunctionArgumentWidget</name> <message> - <location filename="../../../src/plugins/cpptools/cppcodecompletion.cpp" line="+434"/> + <location filename="../../../src/plugins/cpptools/cppcodecompletion.cpp" line="+413"/> <source>%1 of %2</source> <translation>%1 de %2</translation> </message> @@ -2905,17 +3382,21 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger</name> <message> - <location filename="../../../src/plugins/debugger/debuggerconstants.h" line="+55"/> <source>Common</source> - <translation>Commun</translation> + <translation type="obsolete">Commun</translation> </message> <message> - <location line="+1"/> + <location filename="../../../src/plugins/debugger/debuggerconstants.h" line="+59"/> + <source>General</source> + <translation>Général</translation> + </message> + <message> + <location line="+3"/> <source>Debugger</source> <translation>Débogueur</translation> </message> <message> - <location filename="../../../src/plugins/debugger/watchutils.cpp" line="+654"/> + <location filename="../../../src/plugins/debugger/watchutils.cpp" line="+701"/> <source><Encoding error></source> <translation><Erreur d'encodage></translation> </message> @@ -2948,7 +3429,7 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::AttachCoreDialog</name> <message> - <location filename="../../../src/plugins/debugger/debuggerdialogs.cpp" line="+135"/> + <location filename="../../../src/plugins/debugger/debuggerdialogs.cpp" line="+166"/> <source>Select Executable</source> <translation>Selectionner l'exécutable</translation> </message> @@ -2961,7 +3442,7 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::AttachExternalDialog</name> <message> - <location line="-58"/> + <location line="-81"/> <source>Process ID</source> <translation>ID du processus</translation> </message> @@ -2976,7 +3457,7 @@ Voulez vous les écraser ?</translation> <translation>État</translation> </message> <message> - <location line="+167"/> + <location line="+233"/> <source>Refresh</source> <translation>Rafraîchir</translation> </message> @@ -2984,7 +3465,7 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::AddressDialog</name> <message> - <location line="+220"/> + <location line="+277"/> <source>Select start address</source> <translation>Sélectionner l'adresse de départ</translation> </message> @@ -3004,29 +3485,33 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::BreakHandler</name> <message> - <location filename="../../../src/plugins/debugger/breakhandler.cpp" line="+200"/> + <location filename="../../../src/plugins/debugger/breakhandler.cpp" line="+224"/> + <location line="+34"/> <source>Marker File:</source> <translatorcomment>Alternative "Fichier ayant le marqueur"</translatorcomment> <translation>Fichier marqué :</translation> </message> <message> - <location line="+2"/> + <location line="-32"/> + <location line="+33"/> <source>Marker Line:</source> <translatorcomment>idem</translatorcomment> <translation>Ligne marquée :</translation> </message> <message> - <location line="+2"/> + <location line="-31"/> + <location line="+32"/> <source>Breakpoint Number:</source> <translation>Numéro du point d'arrêt :</translation> </message> <message> - <location line="+2"/> + <location line="-30"/> + <location line="+31"/> <source>Breakpoint Address:</source> <translation>Adresse du point d'arrêt :</translation> </message> <message> - <location line="+3"/> + <location line="-28"/> <source>Property</source> <translation>Propriété</translation> </message> @@ -3047,31 +3532,41 @@ Voulez vous les écraser ?</translation> </message> <message> <location line="+2"/> + <location line="+24"/> <source>File Name:</source> <translation>Nom du fichier :</translation> </message> <message> - <location line="+2"/> + <location line="-22"/> + <location line="+24"/> <source>Function Name:</source> <translation>Nom de la fonction :</translation> </message> <message> - <location line="+2"/> + <location line="-22"/> + <location line="+24"/> <source>Line Number:</source> <translation>Numéro de ligne :</translation> </message> + <message> + <location line="-22"/> + <source>Corrected Line Number:</source> + <translation>Numéro de la ligne corrigée :</translation> + </message> <message> <location line="+2"/> + <location line="+22"/> <source>Condition:</source> <translation>Condition :</translation> </message> <message> - <location line="+2"/> + <location line="-20"/> + <location line="+22"/> <source>Ignore Count:</source> <translation>Nombre de passages à ignorer :</translation> </message> <message> - <location line="+215"/> + <location line="+234"/> <source>Number</source> <translation>Numéro</translation> </message> @@ -3106,7 +3601,7 @@ Voulez vous les écraser ?</translation> <translation>Adresse</translation> </message> <message> - <location line="+62"/> + <location line="+65"/> <source>Breakpoint will only be hit if this condition is met.</source> <translation>Le point d'arrêt ne sera respecté que si la condition est remplie.</translation> </message> @@ -3119,162 +3614,224 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::BreakWindow</name> <message> - <location filename="../../../src/plugins/debugger/breakwindow.cpp" line="+86"/> + <location filename="../../../src/plugins/debugger/breakwindow.cpp" line="+89"/> <source>Breakpoints</source> <translation>Points d'arrêt</translation> </message> <message> - <location line="+61"/> <source>Delete breakpoint</source> - <translation>Supprimer le point d'arrêt</translation> + <translation type="obsolete">Supprimer le point d'arrêt</translation> </message> <message> - <location line="+3"/> <source>Delete all breakpoints</source> - <translation>Supprimer tous les points d'arrêt</translation> + <translation type="obsolete">Supprimer tous les points d'arrêt</translation> </message> <message> - <location line="+13"/> <source>Delete breakpoints of "%1"</source> - <translation>Supprimer les points d'arrêt de "%1"</translation> + <translation type="obsolete">Supprimer les points d'arrêt de "%1"</translation> </message> <message> - <location line="+6"/> <source>Delete breakpoints of file</source> - <translation>Supprimer les points d'arrêt du fichier</translation> + <translation type="obsolete">Supprimer les points d'arrêt du fichier</translation> </message> <message> - <location line="+4"/> <source>Adjust column widths to contents</source> - <translation>Ajuster la largeur des colonnes au contenu</translation> + <translation type="obsolete">Ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+2"/> <source>Always adjust column widths to contents</source> - <translation>Toujours ajuster la largeur des colonnes au contenu</translation> + <translation type="obsolete">Toujours ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+4"/> <source>Edit condition...</source> - <translation>Modifier la condition...</translation> + <translation type="obsolete">Modifier la condition...</translation> </message> <message> - <location line="+3"/> <source>Synchronize breakpoints</source> - <translation>Synchroniser les points d'arrêt</translation> + <translation type="obsolete">Synchroniser les points d'arrêt</translation> </message> <message> - <location line="+6"/> <source>Disable breakpoint</source> - <translation>Désactiver le point d'arrêt</translation> + <translation type="obsolete">Désactiver le point d'arrêt</translation> </message> <message> - <location line="+0"/> <source>Enable breakpoint</source> - <translation>Activer le point d'arrêt</translation> + <translation type="obsolete">Activer le point d'arrêt</translation> </message> <message> - <location line="+5"/> <source>Use short path</source> - <translation>Utiliser le chemin court</translation> + <translation type="obsolete">Utiliser le chemin court</translation> </message> <message> - <location line="+0"/> <source>Use full path</source> - <translation>Utiliser le chemin complet</translation> + <translation type="obsolete">Utiliser le chemin complet</translation> </message> <message> - <location line="+4"/> - <source>Set Breakpoint at Function...</source> - <translation>Placer un point d'arrêt à la fonction...</translation> + <location line="+62"/> + <source>Delete Breakpoint</source> + <translation>Supprimer le point d'arrêt</translation> </message> <message> - <location line="+1"/> - <source>Set Breakpoint at Function "main"</source> - <translation>Placer un point d'arrêt à la fonction "main"</translation> + <location line="+3"/> + <source>Delete All Breakpoints</source> + <translation>Supprimer tous les points d'arrêt</translation> </message> <message> - <location line="+101"/> - <source>Conditions on Breakpoint %1</source> - <translation>Condition au point d'arrêt %1</translation> + <location line="+15"/> + <source>Delete Breakpoints of "%1"</source> + <translation>Supprimer les points d'arrêt de "%1"</translation> </message> -</context> -<context> - <name>Debugger::Internal::CdbDebugEngine</name> <message> - <location filename="../../../src/plugins/debugger/cdb/cdbdebugengine.cpp" line="+133"/> - <source>Unable to load the debugger engine library '%1': %2</source> - <translation>Impossible de charger la bibliothèque de débogage '%1': %2</translation> + <location line="+6"/> + <source>Delete Breakpoints of File</source> + <translation>Supprimer les points d'arrêt du fichier</translation> </message> <message> - <location line="+17"/> - <source>The function "%1()" failed: %2</source> - <extracomment>Function call failed</extracomment> - <translation>La fonction "%1()" a échoué : %2</translation> + <location line="+5"/> + <source>Adjust Column Widths to Contents</source> + <translation>Ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+112"/> - <source>Unable to resolve '%1' in the debugger engine library '%2'</source> - <translation>Impossible de résoudre '%1' dans la bibliothèque de débogage '%2'</translation> + <location line="+3"/> + <source>Always Adjust Column Widths to Contents</source> + <translation>Toujours ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+349"/> - <source>Version: %1</source> - <translation>Version : %1</translation> + <location line="+6"/> + <source>Edit Condition...</source> + <translation>Modifier la condition...</translation> </message> <message> - <location line="+2"/> - <source><html>The installed version of the <i>Debugging Tools for Windows</i> (%1) is rather old. Upgrading to version %2 is recommended for the proper display of Qt's data types.</html></source> - <translation><html>La version installée des <i>outils de débogage pour Windows</i> (%1) est relativement ancienne. Une mise à jour vers la version %2 est recommandée pour un affichage correct des types Qt.</html></translation> + <location line="+4"/> + <source>Synchronize Breakpoints</source> + <translation>Synchroniser les points d'arrêt</translation> </message> <message> - <location line="+4"/> - <source>Debugger</source> - <translation>Débogueur</translation> + <location line="+10"/> + <source>Disable Selected Breakpoints</source> + <translation>Supprimer les points d'arrêt du fichier</translation> </message> <message> - <location line="+33"/> - <source>The dumper library was not found at %1.</source> - <translation>La bibliothèque de collection de données n'a pas été trouvée en %1.</translation> + <location line="+1"/> + <source>Enable Selected Breakpoints</source> + <translation>Activer les points d'arrêt sélectionnés</translation> </message> <message> - <location line="+33"/> - <source>The console stub process was unable to start '%1'.</source> - <translation>Le processus de console n'a pas pu lancer '%1'.</translation> + <location line="+2"/> + <source>Disable Breakpoint</source> + <translation>Désactiver le point d'arrêt</translation> </message> <message> - <location line="+8"/> - <source>Attaching to core files is not supported!</source> + <location line="+1"/> + <source>Enable Breakpoint</source> + <translation>Activer le point d'arrêt</translation> + </message> + <message> + <location line="+5"/> + <source>Use Short Path</source> + <translation>Utiliser le chemin court</translation> + </message> + <message> + <location line="+0"/> + <source>Use Full Path</source> + <translation>Utiliser le chemin complet</translation> + </message> + <message> + <location line="+5"/> + <source>Set Breakpoint at Function...</source> + <translation>Placer un point d'arrêt à la fonction...</translation> + </message> + <message> + <location line="+2"/> + <source>Set Breakpoint at Function "main"</source> + <translation>Placer un point d'arrêt à la fonction "main"</translation> + </message> + <message> + <location line="+2"/> + <source>Set Breakpoint at "throw"</source> + <translation type="unfinished">Placer un point d'arrêt au "throw"</translation> + </message> + <message> + <location line="+2"/> + <source>Set Breakpoint at "catch"</source> + <translation type="unfinished">Placer un point d'arrêt au "catch"</translation> + </message> + <message> + <location line="+109"/> + <source>Conditions on Breakpoint %1</source> + <translation>Condition au point d'arrêt %1</translation> + </message> +</context> +<context> + <name>Debugger::Internal::CdbDebugEngine</name> + <message> + <source>Unable to load the debugger engine library '%1': %2</source> + <translation type="obsolete">Impossible de charger la bibliothèque de débogage '%1': %2</translation> + </message> + <message> + <location filename="../../../src/plugins/debugger/cdb/cdbdebugengine.cpp" line="+112"/> + <source>The function "%1()" failed: %2</source> + <extracomment>Function call failed</extracomment> + <translation>La fonction "%1()" a échoué : %2</translation> + </message> + <message> + <source>Unable to resolve '%1' in the debugger engine library '%2'</source> + <translation type="obsolete">Impossible de résoudre '%1' dans la bibliothèque de débogage '%2'</translation> + </message> + <message> + <location line="+225"/> + <source>Version: %1</source> + <translation>Version : %1</translation> + </message> + <message> + <location line="+2"/> + <source><html>The installed version of the <i>Debugging Tools for Windows</i> (%1) is rather old. Upgrading to version %2 is recommended for the proper display of Qt's data types.</html></source> + <translation><html>La version installée des <i>outils de débogage pour Windows</i> (%1) est relativement ancienne. Une mise à jour vers la version %2 est recommandée pour un affichage correct des types Qt.</html></translation> + </message> + <message> + <location line="+4"/> + <source>Debugger</source> + <translation>Débogueur</translation> + </message> + <message> + <location line="+46"/> + <source>The dumper library was not found at %1.</source> + <translation>La bibliothèque de collection de données n'a pas été trouvée en %1.</translation> + </message> + <message> + <location line="+33"/> + <source>The console stub process was unable to start '%1'.</source> + <translation>Le processus de console n'a pas pu lancer '%1'.</translation> + </message> + <message> + <location line="+12"/> + <source>Attaching to core files is not supported!</source> <translatorcomment>A noun could be better instead of Attacher ↠attachement ?</translatorcomment> <translation>Attacher le débogueur à un fichier core n'est pas supporté !</translation> </message> <message> - <location line="+4"/> <source>Debugger running</source> - <translation>Débogueur en fonctionnement</translation> + <translation type="obsolete">Débogueur en fonctionnement</translation> </message> <message> - <location line="+30"/> <source>Attaching to a process failed for process id %1: %2</source> - <translation>Impossible d'attacher au processsus d'id %1 : %2</translation> + <translation type="obsolete">Impossible d'attacher au processsus d'id %1 : %2</translation> </message> <message> - <location line="+27"/> <source>Unable to set the image path to %1: %2</source> - <translation>Impossible de définir le chemin de l'image %1 : %2</translation> + <translation type="obsolete">Impossible de définir le chemin de l'image %1 : %2</translation> </message> <message> - <location line="+31"/> <source>Unable to create a process '%1': %2</source> - <translation>Impossible de créer un processus '%1': %2</translation> + <translation type="obsolete">Impossible de créer un processus '%1': %2</translation> </message> <message> - <location line="+43"/> + <location line="+66"/> <source>The process exited with exit code %1.</source> <translation>Le processus s'est terminé avec le code de sortie %1.</translation> </message> <message> - <location line="+191"/> + <location line="+181"/> <source>Continuing with '%1'...</source> <translation>Continue avec '%1'...</translation> </message> @@ -3303,12 +3860,12 @@ Voulez vous les écraser ?</translation> <translation type="obsolete">Lancement à l'adresse 0x%1…</translation> </message> <message> - <location line="+94"/> + <location line="+91"/> <source>Running requested...</source> <translation>Exécution demandée…</translation> </message> <message> - <location line="+59"/> + <location line="+66"/> <source>Running up to %1:%2...</source> <translation>Exécution jusqu'à %1 : %2…</translation> </message> @@ -3328,7 +3885,7 @@ Voulez vous les écraser ?</translation> <translation>Impossible d'assigner la valeur '%1' à '%2': %3</translation> </message> <message> - <location line="+239"/> + <location line="+187"/> <source>Unable to retrieve %1 bytes of memory at 0x%2: %3</source> <translation>Impossible de récupérer %1 octets de mémoire sur 0x%2 : %3</translation> </message> @@ -3339,7 +3896,7 @@ Voulez vous les écraser ?</translation> <translation>Les symboles ne peuvent pas être obtenus lorsque le processus débogué est en fonctionnement.</translation> </message> <message> - <location line="+64"/> + <location line="+38"/> <location line="+6"/> <source>Debugger Error</source> <translation>Erreur du débogueur</translation> @@ -3350,7 +3907,7 @@ Voulez vous les écraser ?</translation> <translation>Point d'arrêt initial ignoré…</translation> </message> <message> - <location line="+55"/> + <location line="+58"/> <source>Interrupted in thread %1, current thread: %2</source> <translation>Interruption dans le thread %1, thread courant : %2</translation> </message> @@ -3365,20 +3922,43 @@ Voulez vous les écraser ?</translation> <translation>Changement de thread:%1 ->%2</translation> </message> <message> - <location line="+80"/> + <location line="+57"/> + <source>Stopped at %1:%2 in thread %3.</source> + <translation type="unfinished">Arrêté a %1 : %2dans le thread %3.</translation> + </message> + <message> + <location line="+5"/> + <source>Stopped at %1 in thread %2 (missing debug information).</source> + <translation type="unfinished">Arrêté a %1 dans le thread %2 (information de débogage manquante).</translation> + </message> + <message> + <location line="+3"/> + <source>Stopped at %1 (%2) in thread %3 (missing debug information).</source> + <translation type="unfinished">Arrêté a %1 (%2) dans le thread %3 (information de débogage manquante).</translation> + </message> + <message> + <location line="+5"/> + <source>Stopped in thread %1 (missing debug information).</source> + <translation type="unfinished">Arrêté dans le thread %1 (information de débogage manquante).</translation> + </message> + <message> + <location line="+112"/> + <source>Breakpoint: %1</source> + <translation type="unfinished">Point d'arrêt : %1</translation> + </message> + <message> <source>Thread %1: Missing debug information for top stack frame (%2).</source> - <translation>Thread %1 : informations de débogage manquantes sur la frame en haut de la pile (%2).</translation> + <translation type="obsolete">Thread %1 : informations de débogage manquantes sur la frame en haut de la pile (%2).</translation> </message> <message> - <location line="+1"/> <source>Thread %1: No debug information available (%2).</source> - <translation>Thread %1 : aucune information de débogage disponible (%2).</translation> + <translation type="obsolete">Thread %1 : aucune information de débogage disponible (%2).</translation> </message> </context> <context> <name>Debugger::Internal::CdbDumperHelper</name> <message> - <location filename="../../../src/plugins/debugger/cdb/cdbdumperhelper.cpp" line="+209"/> + <location filename="../../../src/plugins/debugger/cdb/cdbdumperhelper.cpp" line="+164"/> <source>injection</source> <translation>injection</translation> </message> @@ -3429,7 +4009,7 @@ Voulez vous les écraser ?</translation> <translation>La bibliothèque de collecteurs de données personnalisé n'a pas pu être initialisé : %1</translation> </message> <message> - <location line="+411"/> + <location line="+396"/> <source>Querying dumpers for '%1'/'%2' (%3)</source> <translation>Recherche de collecteur pour '%1'/'%2' (%3)</translation> </message> @@ -3437,12 +4017,11 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::CdbOptionsPageWidget</name> <message> - <location filename="../../../src/plugins/debugger/cdb/cdboptionspage.cpp" line="-23"/> <source>Cdb</source> - <translation>Cdb</translation> + <translation type="obsolete">Cdb</translation> </message> <message> - <location line="+35"/> + <location filename="../../../src/plugins/debugger/cdb/cdboptionspage.cpp" line="+12"/> <source>Autodetect</source> <translation>Autodétecter</translation> </message> @@ -3485,7 +4064,7 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::DebugMode</name> <message> - <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="+196"/> + <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="+216"/> <source>Debug</source> <translation>Déboguer</translation> </message> @@ -3493,50 +4072,56 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::DebuggerManager</name> <message> - <location filename="../../../src/plugins/debugger/debuggermanager.cpp" line="+453"/> + <location filename="../../../src/plugins/debugger/debuggermanager.cpp" line="+509"/> <source>Continue</source> <translation>Continue</translation> </message> <message> - <location line="+3"/> - <location line="+1215"/> + <location line="+5"/> + <location line="+1315"/> <source>Interrupt</source> <translation>Interrompre</translation> </message> <message> - <location line="-1212"/> <source>Reset Debugger</source> - <translation>Réinitialiser le débogueur</translation> + <translation type="obsolete">Réinitialiser le débogueur</translation> </message> <message> - <location line="+2"/> + <location line="-1308"/> <source>Step Over</source> <translation>Passer</translation> </message> <message> - <location line="+3"/> + <location line="+4"/> <source>Step Into</source> <translatorcomment>check all the instances of "Step Into" if you modify this one</translatorcomment> <translation>Entrer dans</translation> </message> <message> - <location line="+3"/> + <location line="+4"/> <source>Step Out</source> <translatorcomment>Pas sur ???</translatorcomment> <translation>Sortir de</translation> </message> <message> - <location line="+3"/> + <location line="+4"/> + <location line="+1"/> <source>Run to Line</source> <translation>Exécuter jusqu'à la ligne</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Run to Outermost Function</source> <translation>Exécuter jusqu'à la fonction la plus éloignée</translation> </message> + <message> + <location line="+3"/> + <source>Immediately Return From Inner Function</source> + <translation type="unfinished">Retourner immédiatement de la fonction interieure</translation> + </message> <message> <location line="+2"/> + <location line="+1"/> <source>Jump to Line</source> <translation>Sauter à la ligne</translation> </message> @@ -3547,38 +4132,42 @@ Voulez vous les écraser ?</translation> </message> <message> <location line="+2"/> + <location line="+1"/> <source>Add to Watch Window</source> <translation>Ajouter à la fenêtre d'observateurs</translation> </message> <message> <location line="+2"/> + <source>Snapshot</source> + <translatorcomment>mieux que cliché ou instantané non ?</translatorcomment> + <translation type="unfinished">Snapshot</translation> + </message> + <message> + <location line="+5"/> <source>Reverse Direction</source> <translation>Inverser la direction</translation> </message> <message> - <location line="+235"/> <source>Stopped.</source> - <translation>Arrêté.</translation> + <translation type="obsolete">Arrêté.</translation> </message> <message> - <location line="+6"/> + <location line="+276"/> <source>Running...</source> <translation>En cours d'éxecution...</translation> </message> <message> - <location line="+6"/> <source>Exited.</source> - <translation>Sorti.</translation> + <translation type="obsolete">Sorti.</translation> </message> <message> - <location line="+77"/> - <location line="+21"/> + <location line="+90"/> <source>Changing breakpoint state requires either a fully running or fully stopped application.</source> <translatorcomment>fully ?</translatorcomment> - <translation>Changer l'état d'un point d'arrêt nécessite soit une application en cours d'éxecution soit une application totalement arrêté.</translation> + <translation type="unfinished">Changer l'état d'un point d'arrêt nécessite soit une application en cours d'éxecution soit une application totalement arrêté.</translation> </message> <message> - <location line="+30"/> + <location line="+36"/> <source>The application requires the debugger engine '%1', which is disabled.</source> <translatorcomment>On traduit engine ou pas ?</translatorcomment> <translation>L'application nécessite le débogueur '%1' qui est desactivé.</translation> @@ -3589,12 +4178,12 @@ Voulez vous les écraser ?</translation> <translation type="obsolete">Le débogage contre l'exécutable n'est actuellement pas activé.</translation> </message> <message> - <location line="+125"/> + <location line="+115"/> <source>Starting debugger for tool chain '%1'...</source> <translation>Lancer le débogueur pour la chaîne d'outils '%1'...</translation> </message> <message> - <location line="+22"/> + <location line="+30"/> <source>Warning</source> <translation>Avertissement</translation> </message> @@ -3604,7 +4193,7 @@ Voulez vous les écraser ?</translation> <translation>Impossible de déboguer '%1' (chaîne d'outils : '%2') : %3</translation> </message> <message> - <location line="+178"/> + <location line="+212"/> <source>Save Debugger Log</source> <translation>Sauvegarder le log du débogueur</translation> </message> @@ -3621,7 +4210,7 @@ Voulez vous les écraser ?</translation> <translation type="obsolete">L'assistant au débogage est utilisé pour bien formater la valeur des types de données Qt et des bibliothèques standards.Il doit être compilé pour chaque version de Qt ce qui peut être fait dans les préférences de Qt en sélectionnant une installation de Qt et en cliquant sur 'Reconstruire' pour l'assistant de débogage.</translation> </message> <message> - <location line="+312"/> + <location line="+330"/> <source>Turn off helper usage</source> <translation>Désactiver cet avertissement</translation> </message> @@ -3636,17 +4225,53 @@ Voulez vous les écraser ?</translation> <translation>L'assistance au débogage est utilisée pour visualiser facilement les valeurs de certains types de Qt et de la bibliothèque standard C++. Elle doit être compilée séparément pour chaque version de Qt. Ceci peut être fait dans la page de préférences de Qt en sélectionnant une version de Qt et en cliquant sur "Recompiler" à la ligne "Assistance au débogage".</translation> </message> <message> - <location line="+170"/> + <location line="+177"/> <source>Stop Debugger</source> <translation>Arrêter le débogueur</translation> </message> <message> - <location line="-179"/> + <location line="-186"/> <source>Open Qt preferences</source> <translation>Ouvrir les préférences Qt</translation> </message> <message> - <location line="-9"/> + <location line="-1123"/> + <source>Abort Debugging</source> + <translation>Annuler le débogage</translation> + </message> + <message> + <location line="+1"/> + <source>Aborts debugging and resets the debugger to the initial state.</source> + <translation>Annuler le débogage et réinitialiser le débogueur a son état initial.</translation> + </message> + <message> + <location line="+307"/> + <source>Stopped</source> + <translation>Arrêté</translation> + </message> + <message> + <location line="+12"/> + <source>Exited</source> + <translation>Sorti</translation> + </message> + <message> + <source>Symbol</source> + <translation type="obsolete">Symbole</translation> + </message> + <message> + <source>Address</source> + <translation type="obsolete">Adresse</translation> + </message> + <message> + <source>Code</source> + <translation type="obsolete">Code</translation> + </message> + <message> + <source>Symbols in "%1"</source> + <translation type="obsolete">Symboles dans "%1"</translation> + </message> + <message> + <location line="+794"/> <source>%1 (explicitly set in the Debugger Options)</source> <translation>%1 (définie explicitement dans les options du débogueur)</translation> </message> @@ -3664,7 +4289,7 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::DebuggerOutputWindow</name> <message> - <location filename="../../../src/plugins/debugger/debuggeroutputwindow.cpp" line="+296"/> + <location filename="../../../src/plugins/debugger/debuggeroutputwindow.cpp" line="+335"/> <source>Debugger</source> <translation>Débogueur</translation> </message> @@ -3672,17 +4297,23 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::DebuggerListener</name> <message> - <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="+36"/> + <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="+49"/> + <source>A debugging session is still in progress. +Would you like to terminate it?</source> + <translation>Une session de débogage est en cours. +Voulez vous la terminer ?</translation> + </message> + <message> + <location line="+10"/> <source>Close Debugging Session</source> <translation>Fermer la session de débogage</translation> </message> <message> - <location line="+17"/> <source>A debugging session is still in progress. Would you like to terminate it?</source> - <translation>Une session de débogage est en cours. Voulez vous la terminer ?</translation> + <translation type="obsolete">Une session de débogage est en cours. Voulez vous la terminer ?</translation> </message> <message> - <location line="+1"/> + <location line="-8"/> <source>A debugging session is still in progress. Terminating the session in the current state (%1) can leave the target in an inconsistent state. Would you still like to terminate it?</source> <translation>Une session de débogage est en cours. Terminer la session dans l'état courant (%1) risque de laisser la cible dans un état incohérent. Êtes-vous sûr de vouloir terminer la session ?</translation> </message> @@ -3690,7 +4321,7 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::DebuggerPlugin</name> <message> - <location line="+270"/> + <location line="+315"/> <source>Option '%1' is missing the parameter.</source> <translation>Option '%1' : le paramètre est manquant.</translation> </message> @@ -3700,17 +4331,17 @@ Voulez vous les écraser ?</translation> <translation>Le paramètre '%1' de l'option '%2' n'est pas un nombre.</translation> </message> <message> - <location line="+54"/> + <location line="+55"/> <source>Invalid debugger option: %1</source> <translation>Option du débogueur invalide : %1</translation> </message> <message> - <location line="+22"/> + <location line="+37"/> <source>Error evaluating command line arguments: %1</source> <translation>Erreur durant l'évaluation des arguments de la ligne de commande : %1</translation> </message> <message> - <location line="+41"/> + <location line="+58"/> <source>Start and Debug External Application...</source> <translation>Déboguer une application externe...</translation> </message> @@ -3726,17 +4357,17 @@ Voulez vous les écraser ?</translation> <translation>Attacher au core...</translation> </message> <message> - <location line="+5"/> + <location line="+4"/> <source>Start and Attach to Remote Application...</source> <translation>Démarrer et attacher sur une application à distance...</translation> </message> <message> - <location line="+6"/> + <location line="+5"/> <source>Detach Debugger</source> <translation>Détacher le débogueur</translation> </message> <message> - <location line="+45"/> + <location line="+44"/> <source>Stop Debugger/Interrupt Debugger</source> <translation>Arrêter le débogueur/Interrompre le débogueur</translation> </message> @@ -3746,33 +4377,30 @@ Voulez vous les écraser ?</translation> <translation>Remise à zéro du débogueur</translation> </message> <message> - <location line="+75"/> <source>&Views</source> - <translation>&Vues</translation> + <translation type="obsolete">&Vues</translation> </message> <message> - <location line="+3"/> <source>Locked</source> - <translation>Verrouillé</translation> + <translation type="obsolete">Verrouillé</translation> </message> <message> - <location line="+15"/> <source>Reset to default layout</source> - <translation>Restaurer la disposition par défaut</translation> + <translation type="obsolete">Restaurer la disposition par défaut</translation> </message> <message> - <location line="+87"/> + <location line="+196"/> <source>Threads:</source> <translation>Threads :</translation> </message> <message> - <location line="+84"/> + <location line="+45"/> <source>Attaching to PID %1.</source> <translatorcomment>Attachement ?</translatorcomment> <translation>Attachement au PID %1.</translation> </message> <message> - <location line="+75"/> + <location line="+100"/> <source>Remove Breakpoint</source> <translation>Supprimer le point d'arrêt</translation> </message> @@ -3792,19 +4420,19 @@ Voulez vous les écraser ?</translation> <translation>Définir un point d'arrêt</translation> </message> <message> - <location line="+230"/> + <location line="+253"/> <source>Warning</source> <translatorcomment>Alerte?</translatorcomment> <translation>Avertissement</translation> </message> <message> - <location line="+0"/> + <location line="+1"/> <source>Cannot attach to PID 0</source> <translatorcomment>de s'attacher ? Pas sur</translatorcomment> <translation>Impossible de s'attacher au PID 0</translation> </message> <message> - <location line="+17"/> + <location line="-364"/> <source>Attaching to core %1.</source> <translatorcomment>core, toujours?</translatorcomment> <translation>Attachement au core %1.</translation> @@ -3813,190 +4441,360 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::DebuggerSettings</name> <message> - <location filename="../../../src/plugins/debugger/debuggeractions.cpp" line="+118"/> <source>Debugger properties...</source> - <translation>Propriétés du débogueur…</translation> + <translation type="obsolete">Propriétés du débogueur…</translation> </message> <message> - <location line="+6"/> <source>Adjust column widths to contents</source> - <translation>Ajuster la largeur des colonnes au contenu</translation> + <translation type="obsolete">Ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+4"/> <source>Always adjust column widths to contents</source> - <translation>Toujours ajuster la largeur des colonnes au contenu</translation> + <translation type="obsolete">Toujours ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+5"/> <source>Use alternating row colors</source> - <translation>Utiliser des couleurs de lignes alternées</translation> + <translation type="obsolete">Utiliser des couleurs de lignes alternées</translation> </message> <message> - <location line="+7"/> <source>Show a message box when receiving a signal</source> - <translation>Afficher un message à la réception d'un signal</translation> + <translation type="obsolete">Afficher un message à la réception d'un signal</translation> </message> <message> - <location line="+8"/> <source>Log time stamps</source> - <translation>Horodater le journal</translation> + <translation type="obsolete">Horodater le journal</translation> </message> <message> - <location line="+7"/> <source>Operate by instruction</source> - <translation>Opérer par instruction</translation> + <translation type="obsolete">Opérer par instruction</translation> </message> <message> - <location line="+4"/> + <location filename="../../../src/plugins/debugger/debuggeractions.cpp" line="+226"/> <source>This switches the debugger to instruction-wise operation mode. In this mode, stepping operates on single instructions and the source location view also shows the disassembled instructions.</source> <translation>Ceci passe le débogueur en mode instruction par instruction. Dans ce mode, avancer pas à pas agit sur une seul instruction, et la vue des sources affiche aussi les instructions désassemblés.</translation> </message> <message> - <location line="+7"/> <source>Dereference pointers automatically</source> - <translation>Déréférencer les pointeurs automatiquement</translation> + <translation type="obsolete">Déréférencer les pointeurs automatiquement</translation> </message> <message> - <location line="+3"/> + <location line="+10"/> <source>This switches the Locals&Watchers view to automatically derefence pointers. This saves a level in the tree view, but also loses data for the now-missing intermediate level.</source> <translation>Ceci active le déférencement automatique des pointeurs dans les vues "Variables locales" et "Observateur". Ceci réduit l'arbre d'un niveau, mais certaines données sont cachées.</translation> </message> <message> - <location line="+10"/> <source>Watch expression "%1"</source> - <translation>Observer l'expression "%1"</translation> + <translation type="obsolete">Observer l'expression "%1"</translation> </message> <message> - <location line="+4"/> <source>Remove watch expression "%1"</source> - <translation>Retirer "%1" des expressions observées</translation> + <translation type="obsolete">Retirer "%1" des expressions observées</translation> </message> <message> - <location line="+4"/> <source>Watch expression "%1" in separate window</source> - <translation>Observer l'expression "%1" dans une fenêtre séparée</translation> + <translation type="obsolete">Observer l'expression "%1" dans une fenêtre séparée</translation> </message> <message> - <location line="+17"/> <source>Use debugging helper</source> - <translation>Utiliser l'assistance au débogage</translation> + <translation type="obsolete">Utiliser l'assistance au débogage</translation> </message> <message> - <location line="+22"/> <source>Debug debugging helper</source> - <translation>Déboguer l'assistance au débogage</translation> + <translation type="obsolete">Déboguer l'assistance au débogage</translation> </message> <message> - <location line="+8"/> <source>Use code model</source> - <translation>Utiliser le modèle de code</translation> + <translation type="obsolete">Utiliser le modèle de code</translation> </message> <message> - <location line="+7"/> <source>Recheck debugging helper availability</source> - <translation>Revérifier la disponibilité de l'assistance au débogage</translation> + <translation type="obsolete">Revérifier la disponibilité de l'assistance au débogage</translation> </message> <message> - <location line="+7"/> <source>Synchronize breakpoints</source> - <translation>Synchroniser les points d'arrêt</translation> + <translation type="obsolete">Synchroniser les points d'arrêt</translation> </message> <message> - <location line="+30"/> - <source>Use tooltips in main editor when debugging</source> - <translation>Utiliser les info-bulles dans l'éditeur principal lors du débogage</translation> + <location line="-58"/> + <source>Debugger Properties...</source> + <translation>Propriétés du débogueur…</translation> </message> <message> - <location line="+1"/> - <source>Checking this will enable tooltips for variable values during debugging. Since this can slow down debugging and does not provide reliable information as it does not use scope information, it is switched off by default.</source> - <translation>Active les info-bulles sur les variables pendant le débogage. Comme ceci peut ralentir le débogage et ne fournit pas nécessairement des valeurs fiables, cette option est désactivée par défault.</translation> + <location line="+6"/> + <source>Adjust Column Widths to Contents</source> + <translation>Ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+10"/> - <source>Use tooltips in locals view when debugging</source> - <translation>Utiliser les info-bulles dans la vue "variables locales" lors du débogage</translation> + <location line="+4"/> + <source>Always Adjust Column Widths to Contents</source> + <translation>Toujours ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+1"/> - <source>Checking this will enable tooltips in the locals view during debugging.</source> - <translation>Cocher ceci activera les info-bulles dans la vue des variables locales lors du débogage.</translation> + <location line="+5"/> + <source>Use Alternating Row Colors</source> + <translation>Utiliser des couleurs de lignes alternées</translation> </message> <message> - <location line="+8"/> - <source>Use tooltips in breakpoints view when debugging</source> - <translation>Utiliser les info-bulles dans la vue des points d'arrêt lors du débogage</translation> + <location line="+7"/> + <source>Show a Message Box When Receiving a Signal</source> + <translation>Afficher un message à la réception d'un signal</translation> + </message> + <message> + <location line="+8"/> + <source>Log Time Stamps</source> + <translation>Horodater le journal</translation> + </message> + <message> + <location line="+7"/> + <source>Verbose Log</source> + <translation type="unfinished">Journal verbeux</translation> + </message> + <message> + <location line="+7"/> + <source>Operate by Instruction</source> + <translation>Opérer par instruction</translation> + </message> + <message> + <location line="+11"/> + <source>Dereference Pointers Automatically</source> + <translation>Déréférencer les pointeurs automatiquement</translation> + </message> + <message> + <location line="+13"/> + <source>Watch Expression "%1"</source> + <translation>Observer l'expression "%1"</translation> + </message> + <message> + <location line="+4"/> + <source>Remove Watch Expression "%1"</source> + <translation>Retirer "%1" des expressions observées</translation> + </message> + <message> + <location line="+4"/> + <source>Watch Expression "%1" in Separate Window</source> + <translation>Observer l'expression "%1" dans une fenêtre séparée</translation> + </message> + <message> + <location line="+14"/> + <source>Show "std::" Namespace in Types</source> + <translation>Afficher l'espace de nommage "std::" dans les types</translation> + </message> + <message> + <location line="+8"/> + <source>Show Qt's Namespace in Types</source> + <translation>Afficher l'espace de nommage Qt dans les types</translation> + </message> + <message> + <location line="+11"/> + <source>Use Debugging Helpers</source> + <translation>Utiliser l'assistance au débogage</translation> + </message> + <message> + <location line="+22"/> + <source>Debug Debugging Helpers</source> + <translation>Déboguer l'assistance au débogage</translation> + </message> + <message> + <location line="+8"/> + <source>Use Code Model</source> + <translation>Utiliser le modèle de code</translation> </message> <message> <location line="+1"/> - <source>Checking this will enable tooltips in the breakpoints view during debugging.</source> - <translation>Cocher ceci activera les info-bulles dans la vue des points d'arrêt lors du débogage.</translation> + <source>Selecting this causes the C++ Code Model being asked for variable scope information. This might result in slightly faster debugger operation but may fail for optimized code.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Recheck Debugging Helper Availability</source> + <translation>Revérifier la disponibilité de l'assistance au débogage</translation> + </message> + <message> + <location line="+7"/> + <source>Synchronize Breakpoints</source> + <translation>Synchroniser les points d'arrêt</translation> + </message> + <message> + <location line="+4"/> + <source>Use Precise Breakpoints</source> + <translatorcomment>??</translatorcomment> + <translation type="unfinished">Utiliser des points d'arrêt précis</translation> + </message> + <message> + <location line="+1"/> + <source>Selecting this causes breakpoint synchronization being done after each step. This results in up-to-date breakpoint information on whether a breakpoint has been resolved after loading shared libraries, but slows down stepping.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Break on "throw"</source> + <translation type="unfinished">S'arrêter lors d'un "throw"</translation> </message> <message> <location line="+8"/> - <source>Show address data in breakpoints view when debugging</source> + <source>Break on "catch"</source> + <translation type="unfinished">S'arrêter lors d'un "catch"</translation> + </message> + <message> + <location line="+23"/> + <source>Automatically Quit Debugger</source> + <translation>Quitter le débogueur automatiquement</translation> + </message> + <message> + <location line="+7"/> + <source>Use tooltips in main editor when debugging</source> + <translation>Utiliser les info-bulles dans l'éditeur principal lors du débogage</translation> + </message> + <message> + <location line="+1"/> + <source>Checking this will enable tooltips for variable values during debugging. Since this can slow down debugging and does not provide reliable information as it does not use scope information, it is switched off by default.</source> + <translation>Active les info-bulles sur les variables pendant le débogage. Comme ceci peut ralentir le débogage et ne fournit pas nécessairement des valeurs fiables, cette option est désactivée par défault.</translation> + </message> + <message> + <location line="+10"/> + <source>Use Tooltips in Locals View When Debugging</source> + <translation>Utiliser les info-bulles dans la vue "variables locales" lors du débogage</translation> + </message> + <message> + <location line="+9"/> + <source>Use Tooltips in Breakpoints View When Debugging</source> + <translation>Utiliser les info-bulles dans la vue des points d'arrêt lors du débogage</translation> + </message> + <message> + <location line="+9"/> + <source>Show Address Data in Breakpoints View When Debugging</source> <translation>Afficher l'adresse des données dans la vue des points d'arrêt lors du débogage</translation> </message> + <message> + <location line="+9"/> + <source>Show Address Data in Stack View When Debugging</source> + <translation>Afficher les adresses des données dans la vue de la pile lors du débogage</translation> + </message> + <message> + <location line="+9"/> + <source>List Source Files</source> + <translation>Lister les fichiers source</translation> + </message> + <message> + <location line="+7"/> + <source>Skip Known Frames</source> + <translation>Sauter les frames connues</translation> + </message> + <message> + <location line="+1"/> + <source>Selecting this results in well-known but usually not interesting frames belonging to reference counting and signal emission being skipped while single-stepping.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Enable Reverse Debugging</source> + <translation>Activer le débogage inversé</translation> + </message> + <message> + <location line="+8"/> + <source>Register For Post-Mortem Debugging</source> + <translation type="unfinished">Activer le débogage post-mortem</translation> + </message> + <message> + <location line="+32"/> + <source>Reload Full Stack</source> + <translation>Recharger l'intégralité de la pile</translation> + </message> + <message> + <location line="+4"/> + <source>Create Full Backtrace</source> + <translation type="unfinished">Créer une backtrace complète</translation> + </message> + <message> + <location line="+4"/> + <source>Execute Line</source> + <translation>Exécuter la ligne</translation> + </message> + <message> + <location line="+11"/> + <source>Change debugger language automatically</source> + <translation type="unfinished">Changer le langage du débogueur automatiquement</translation> + </message> <message> <location line="+1"/> + <source>Changes the debugger language according to the currently opened file.</source> + <translation type="unfinished">Changer le langage du débogueur en fonction du fichier ouvert.</translation> + </message> + <message> + <source>Use tooltips in locals view when debugging</source> + <translation type="obsolete">Utiliser les info-bulles dans la vue "variables locales" lors du débogage</translation> + </message> + <message> + <location line="-112"/> + <source>Checking this will enable tooltips in the locals view during debugging.</source> + <translation>Cocher ceci activera les info-bulles dans la vue des variables locales lors du débogage.</translation> + </message> + <message> + <source>Use tooltips in breakpoints view when debugging</source> + <translation type="obsolete">Utiliser les info-bulles dans la vue des points d'arrêt lors du débogage</translation> + </message> + <message> + <location line="+9"/> + <source>Checking this will enable tooltips in the breakpoints view during debugging.</source> + <translation>Cocher ceci activera les info-bulles dans la vue des points d'arrêt lors du débogage.</translation> + </message> + <message> + <source>Show address data in breakpoints view when debugging</source> + <translation type="obsolete">Afficher l'adresse des données dans la vue des points d'arrêt lors du débogage</translation> + </message> + <message> + <location line="+9"/> <source>Checking this will show a column with address information in the breakpoint view during debugging.</source> <translation>Cocher ceci affichera l'adresse des données dans la vue des points d'arrêt lors du débogage.</translation> </message> <message> - <location line="+9"/> <source>Show address data in stack view when debugging</source> - <translation>Afficher les adresses des données dans la vue de la pile lors du débogage</translation> + <translation type="obsolete">Afficher les adresses des données dans la vue de la pile lors du débogage</translation> </message> <message> - <location line="+1"/> + <location line="+9"/> <source>Checking this will show a column with address information in the stack view during debugging.</source> <translation>Cocher ceci affichera les adresses des données dans la vue de la pile lors du débogage.</translation> </message> <message> - <location line="-47"/> <source>Automatically quit debugger</source> - <translation>Quitter le débogueur automatiquement</translation> + <translation type="obsolete">Quitter le débogueur automatiquement</translation> </message> <message> - <location line="+55"/> <source>List source files</source> - <translation>Lister les fichiers source</translation> + <translation type="obsolete">Lister les fichiers source</translation> </message> <message> - <location line="+7"/> <source>Skip known frames</source> - <translation>Sauter les frames connues</translation> + <translation type="obsolete">Sauter les frames connues</translation> </message> <message> - <location line="+7"/> <source>Enable reverse debugging</source> - <translation>Activer le débogage inversé</translation> + <translation type="obsolete">Activer le débogage inversé</translation> </message> <message> - <location line="+31"/> <source>Reload full stack</source> - <translation>Recharger l'intégralité de la pile</translation> + <translation type="obsolete">Recharger l'intégralité de la pile</translation> </message> <message> - <location line="+4"/> <source>Execute line</source> - <translation>Exécuter la ligne</translation> + <translation type="obsolete">Exécuter la ligne</translation> </message> </context> <context> <name>Debugger::Internal::DebuggingHelperOptionPage</name> <message> - <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="-926"/> + <location filename="../../../src/plugins/debugger/debuggerplugin.cpp" line="-608"/> <source>Debugging Helper</source> <translation>Assistance au débogage</translation> </message> <message> - <location line="+23"/> + <location line="+22"/> <source>Choose DebuggingHelper Location</source> <translation>Choisir l'emplacement de l'assistance au débogage</translation> </message> <message> - <location line="+35"/> + <location line="+31"/> <source>Ctrl+Shift+F11</source> <translation>Ctrl+Maj+F11</translation> </message> @@ -4004,7 +4802,7 @@ Voulez vous les écraser ?</translation> <context> <name>Debugger::Internal::GdbEngine</name> <message> - <location filename="../../../src/plugins/debugger/gdb/gdbengine.cpp" line="+306"/> + <location filename="../../../src/plugins/debugger/gdb/gdbengine.cpp" line="+290"/> <source>The Gdb process failed to start. Either the invoked program '%1' is missing, or you may have insufficient permissions to invoke the program.</source> <translation>Échec du démarrage du processus Gdb. Soit le programme '%1' est manquant, soit les droits sont insuffisants pour exécuter le programme.</translation> </message> @@ -4030,93 +4828,86 @@ Voulez vous les écraser ?</translation> <translation>Une erreur s'est produite lors d'une tentative de lecture depuis le processus Gdb. Le processus peut ne pas être en cours d'exécution.</translation> </message> <message> - <location line="+119"/> <source>Library %1 loaded.</source> - <translation>Bibliothèque %1 chargée.</translation> + <translation type="obsolete">Bibliothèque %1 chargée.</translation> </message> <message> - <location line="+7"/> <source>Library %1 unloaded.</source> - <translation>Bibliothèque %1 déchargée.</translation> + <translation type="obsolete">Bibliothèque %1 déchargée.</translation> </message> <message> - <location line="+5"/> + <location line="+140"/> <source>Thread group %1 created.</source> - <translation>Group de thread %1 créé.</translation> + <translation type="unfinished">Group de thread %1 créé.</translation> </message> <message> - <location line="+7"/> <source>Thread %1 created.</source> - <translation>Thread %1 créé.</translation> + <translation type="obsolete">Thread %1 créé.</translation> </message> <message> - <location line="+4"/> <source>Thread group %1 exited.</source> - <translation>Groupe de thread %1 terminé.</translation> + <translation type="obsolete">Groupe de thread %1 terminé.</translation> </message> <message> - <location line="+5"/> <source>Thread %1 in group %2 exited.</source> - <translation>Thread %1 dans le groupe %2 terminé.</translation> + <translation type="obsolete">Thread %1 dans le groupe %2 terminé.</translation> </message> <message> - <location line="+4"/> <source>Thread %1 selected.</source> - <translation>Thread %1 sélecitonné.</translation> + <translation type="obsolete">Thread %1 sélecitonné.</translation> </message> <message> - <location line="+46"/> + <location line="+76"/> <source>Reading %1...</source> <translation>Lecture de %1...</translation> </message> <message> - <location line="+251"/> + <location line="+270"/> <source>Stopping temporarily.</source> - <translation>Arrêt temporaire.</translation> + <translation type="unfinished">Arrêt temporaire.</translation> </message> <message> - <location line="+253"/> + <location line="+302"/> <source>Jumped. Stopped.</source> - <translation>Sauté. Arrêté.</translation> + <translation type="unfinished">Sauté. Arrêté.</translation> </message> <message> - <location line="-240"/> + <location line="-289"/> <source>Processing queued commands.</source> - <translation>Traite les commandes en file d'attente.</translation> + <translation type="unfinished">Traite les commandes en file d'attente.</translation> </message> <message> - <location line="+393"/> + <location line="+448"/> <source>Loading %1...</source> <translation>Charge %1...</translation> </message> <message> - <location line="+111"/> <source>Stopped at breakpoint.</source> - <translation>Arrêté au point d'arrêt.</translation> + <translation type="obsolete">Arrêté au point d'arrêt.</translation> </message> <message> - <location line="+21"/> - <location line="+120"/> + <location line="+167"/> + <location line="+108"/> <source>Stopped.</source> <translation>Arrêté.</translation> </message> <message> - <location line="-1103"/> + <location line="-1219"/> <source>An unknown error in the Gdb process occurred. </source> <translation>Une erreur inconnue est survenue dans le processus Gdb. </translation> </message> <message> - <location line="+238"/> + <location line="+261"/> <source>Running...</source> <translation>En cours d'éxecution...</translation> </message> <message> - <location line="+97"/> + <location line="+100"/> <source>Stop requested...</source> <translation>Arrêt demandé...</translation> </message> <message> - <location line="+197"/> + <location line="+240"/> <location line="+29"/> <location line="+3"/> <source>Executable failed</source> @@ -4125,7 +4916,7 @@ Voulez vous les écraser ?</translation> <message> <location line="-31"/> <source>Process failed to start.</source> - <translation>Le processus n'a pu pas démarrer.</translation> + <translation type="unfinished">Le processus n'a pu pas démarrer.</translation> </message> <message> <location line="+24"/> @@ -4134,56 +4925,49 @@ Voulez vous les écraser ?</translation> <translation>Échec de l'exécutable : %1</translation> </message> <message> - <location line="+228"/> <source>Program exited with exit code %1.</source> - <translation>Le programme s'est terminé avec le code de sortie %1.</translation> + <translation type="obsolete">Le programme s'est terminé avec le code de sortie %1.</translation> </message> <message> - <location line="+3"/> <source>Program exited after receiving signal %1.</source> - <translation>Le programme s'est terminé après la reception du signal %1.</translation> + <translation type="obsolete">Le programme s'est terminé après la reception du signal %1.</translation> </message> <message> - <location line="+3"/> <source>Program exited normally.</source> - <translation>Le programme s'est terminé normallement.</translation> + <translation type="obsolete">Le programme s'est terminé normallement.</translation> </message> <message> <source><p>The inferior stopped because it received a signal from the Operating System.<p><table><tr><td>Signal name : </td><td>%1</td></tr><tr><td>Signal meaning : </td><td>%2</td></tr></table></source> <translation type="obsolete"><p>L'inférieur a stoppé car il a reçu un signal du système d'exploitation.</p><table><tr><td>Nom du signal : </td><td>%1</td></tr><tr><td>Signification du signal : </td><td>%2</td></tr></table></translation> </message> <message> - <location line="+176"/> - <location line="+1"/> <source> <Unknown> </source> - <translation> <inconnu> </translation> + <translation type="obsolete"> <inconnu> </translation> </message> <message> - <location line="+2"/> + <location line="+469"/> <source>Signal received</source> <translation>Signal reçu</translation> </message> <message> - <location line="+7"/> + <location line="-17"/> <source>Stopped: "%1"</source> <translation>Arrêté : "%1"</translation> </message> <message> - <location line="+64"/> <source>The debugger you are using identifies itself as:</source> - <translation>Le débogueur que vous utilisez s'identifie comme :</translation> + <translation type="obsolete">Le débogueur que vous utilisez s'identifie comme :</translation> </message> <message> - <location line="+2"/> <source>This version is not officially supported by Qt Creator. Debugging will most likely not work well. Using gdb 6.7 or later is strongly recommended.</source> - <translation>Cette version n'est pas supportée officiellement par Qt Creator. + <translation type="obsolete">Cette version n'est pas supportée officiellement par Qt Creator. Le débogage ne fonctionnera probablement pas parfaitement. L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> </message> <message> - <location line="+273"/> + <location line="+399"/> <source>Running requested...</source> <translation>Exécution demandée...</translation> </message> @@ -4193,7 +4977,7 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>Pas à pas demandé...</translation> </message> <message> - <location line="+12"/> + <location line="+42"/> <source>Step by instruction requested...</source> <translation>Pas à pas d'instruction demandé...</translation> </message> @@ -4208,7 +4992,7 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>Étape suivante demandée...</translation> </message> <message> - <location line="+18"/> + <location line="+41"/> <source>Step next instruction requested...</source> <translation>Instruction suivante demandée...</translation> </message> @@ -4218,23 +5002,34 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>Exécuter jusque la ligne %1 demandé...</translation> </message> <message> - <location line="+13"/> + <location line="+23"/> <source>Run to function %1 requested...</source> <translation>Exécution jusque la fonction %1 demandé...</translation> </message> <message> + <location line="+37"/> + <source>Immediate return from function requested...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+406"/> + <source>ATTEMPT BREAKPOINT SYNC</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+229"/> <source><unknown></source> <comment>address</comment> <extracomment>End address of loaded module</extracomment> - <translation type="obsolete"><inconnue></translation> + <translation><inconnue></translation> </message> <message> - <location line="+716"/> + <location line="+153"/> <source>Jumping out of bogus frame...</source> <translation>Sauter hors des frames buggées...</translation> </message> <message numerus="yes"> - <location line="+776"/> + <location filename="../../../src/plugins/debugger/gdb/classicgdbengine.cpp" line="+717"/> <source>Dumper version %1, %n custom dumpers found.</source> <translation> <numerusform>Collecteur version %1, %n collecteur personnalisé trouvé.</numerusform> @@ -4242,64 +5037,108 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> </translation> </message> <message> - <location line="+1001"/> - <location line="+25"/> - <location line="+14"/> + <location filename="../../../src/plugins/debugger/gdb/gdbengine.cpp" line="+982"/> + <location line="+26"/> + <location line="+15"/> + <location line="+61"/> <source>Disassembler failed: %1</source> <translation>Désassemblage échoué : %1</translation> </message> <message> - <location line="+180"/> + <location line="+235"/> <source>Adapter start failed</source> <translation>Démarrage de l'adaptateur échoué</translation> </message> <message> - <location line="+41"/> + <location line="+40"/> + <location line="+1"/> <source>Setting breakpoints...</source> <translation>Définit les points d'arrêts...</translation> </message> <message> - <location line="-25"/> + <location line="-23"/> <source>Starting inferior...</source> <translation>Démarrage de l'inférieur...</translation> </message> <message> + <location line="-2694"/> <source> <Unknown> </source> <comment>name</comment> - <translation type="obsolete"> <Inconnu> </translation> + <translation> <Inconnu> </translation> </message> <message> + <location line="+1"/> <source> <Unknown> </source> <comment>meaning</comment> - <translation type="obsolete"> <inconnue> </translation> + <translation> <inconnue> </translation> </message> <message> - <location line="-532"/> + <location filename="../../../src/plugins/debugger/gdb/classicgdbengine.cpp" line="-28"/> <source>The debugging helper library was not found at %1.</source> <translation>La bibliothèque d'assistance au débogage n'a pas été trouvée à l'emplacement %1.</translation> </message> <message> - <location line="+366"/> + <location filename="../../../src/plugins/debugger/gdb/gdbengine.cpp" line="+2519"/> <source>Unable to start gdb '%1': %2</source> <translation>Impossible de démarrer gdb '%1' : %2</translation> </message> <message> - <location line="+122"/> + <location line="+125"/> <source>Gdb I/O Error</source> <translation>Erreur d'E/S Gdb</translation> </message> <message> - <location line="+14"/> + <location line="+18"/> <source>Unexpected Gdb Exit</source> <translation>Arrêt inattendu de Gdb</translation> </message> <message> - <location line="+1"/> + <location line="-3"/> <source>The gdb process exited unexpectedly (%1).</source> <translation>Le processus de gdb s'est terminé de façon inattendue (%1).</translation> </message> <message> - <location line="+2"/> + <location line="-2677"/> + <source>Stopped at breakpoint %1 in thread %2.</source> + <translation type="unfinished">Arrêté au point d'arrêt. %1 dans le thread %2.</translation> + </message> + <message> + <location line="+1490"/> + <location line="+15"/> + <source>Snapshot Creation Error</source> + <translation type="unfinished">Erreur de création du snapshot</translation> + </message> + <message> + <location line="-14"/> + <source>Cannot create snapshot file.</source> + <translation type="unfinished">Impossible de créer un fichier snapshot.</translation> + </message> + <message> + <location line="+15"/> + <source>Cannot create snapshot: +</source> + <translation type="unfinished">Impossible de créer le snapshot : +</translation> + </message> + <message> + <location line="+17"/> + <source>Snapshot Reloading</source> + <translation type="unfinished">Recharger le snapshot</translation> + </message> + <message> + <location line="+1"/> + <source>In order to load snapshots the debugged process needs to be stopped. Continuation will not be possible afterwards. +Do you want to stop the debugged process and load the selected snapshot?</source> + <translation type="unfinished">Pour charger des snapshots, le processus débogué doit être arrêté. Il sera impossible de continuer par la suite. +Voulez vous arrêtre le processus débogué et charger le snapshot selectionné ?</translation> + </message> + <message> + <location line="+378"/> + <source>Finished retrieving data</source> + <translation type="unfinished">Collecte des données terminée</translation> + </message> + <message> + <location line="+777"/> <source>crashed</source> <translation>crashé</translation> </message> @@ -4309,22 +5148,20 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>code %1</translation> </message> <message> - <location line="+74"/> <source>Inferior start failed</source> - <translation>Démarrage de l'inférieur échoué</translation> + <translation type="obsolete">Démarrage de l'inférieur échoué</translation> </message> <message> - <location line="-2986"/> <source>Inferior shutdown failed</source> - <translation>Arrêt de l'inférieur échoué</translation> + <translation type="obsolete">Arrêt de l'inférieur échoué</translation> </message> <message> - <location line="+3006"/> + <location line="+100"/> <source>Adapter crashed</source> <translation>Adaptateur crashé</translation> </message> <message> - <location line="-143"/> + <location line="-156"/> <source>Cannot find debugger initialization script</source> <translation>Impossible de trouver les scripts d'initialisation du débogueur</translation> </message> @@ -4334,46 +5171,146 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>Les paramètres du débogueur référencent un fichier script à l'emplacement '%1' qui n'est pas accessible. Si un fichier script n'est pas nécessaire, les paramètres pourraient être nettoyés pour éviter cet avertissement. </translation> </message> <message> - <location line="-2160"/> + <location line="-1481"/> <source>Unable to run '%1': %2</source> <translation>Impossible d'exécuter '%1' : %2</translation> </message> <message> - <location line="-930"/> - <source><p>The inferior stopped because it received a signal from the Operating System.<p><table><tr><td>Signal name : </td><td>%1</td></tr><tr><td>Signal meaning : </td><td>%2</td></tr></table></source> - <translation><p>L'inférieur a stoppé car il a reçu un signal du système d'exploitation.</p><table><tr><td>Nom du signal : </td><td>%1</td></tr><tr><td>Signification du signal : </td><td>%2</td></tr></table></translation> + <location line="-2110"/> + <source>Library %1 loaded</source> + <translation>Bibliothèque %1 chargée</translation> </message> <message> - <location line="+137"/> - <source>Execution Error</source> - <translation>Erreur d'exécution</translation> + <location line="+9"/> + <source>Library %1 unloaded</source> + <translation>Bibliothèque %1 déchargée</translation> </message> <message> - <location line="+1"/> - <source>Cannot continue debugged process: -</source> - <translation>Impossible de continuer le processus débogué : -</translation> + <location line="+19"/> + <source>Thread %1 created</source> + <translation>Thread %1 créé</translation> </message> <message> - <location line="+207"/> - <source>Continuing after temporary stop...</source> - <translation>Continue après un arrêt temporaire...</translation> + <location line="+4"/> + <source>Thread group %1 exited</source> + <translation>Groupe de thread %1 terminé</translation> </message> <message> - <location line="+663"/> + <location line="+5"/> + <source>Thread %1 in group %2 exited</source> + <translation>Thread %1 dans le groupe %2 terminé</translation> + </message> + <message> + <location line="+4"/> + <source>Thread %1 selected</source> + <translation>Thread %1 sélectionné</translation> + </message> + <message> + <location line="+396"/> + <source>The gdb process has not responded to a command within %1 seconds. This could mean it is stuck in an endless loop or taking longer than expected to perform the operation. +You can choose between waiting longer or abort debugging.</source> + <translation type="unfinished">Le processus n'a pas répondu a une commande en moins de %1 secondes. Ceci peut signifier qu'il est bloqué dans une boucle infinie ou qu'il prend plus de temps que prévu pour exécuter une opération. +Vous pouvez décider entre attendre plus longtemps ou mettre fin au débogage.</translation> + </message> + <message> + <location line="+6"/> + <source>Gdb not responding</source> + <translation type="unfinished">gdb ne répond pas</translation> + </message> + <message> + <location line="+2"/> + <source>Give gdb more time</source> + <translation type="unfinished">Laisser plus de temps à gdb</translation> + </message> + <message> + <location line="+1"/> + <source>Stop debugging</source> + <translation type="unfinished">Arrêter le débogage</translation> + </message> + <message> + <location line="+324"/> + <source>Application exited with exit code %1</source> + <translation type="unfinished">L'application s'est terminée avec le code de sortie %1</translation> + </message> + <message> + <location line="+3"/> + <source>Application exited after receiving signal %1</source> + <translation>L'application s'est terminée après la reception du signal %1</translation> + </message> + <message> + <location line="+3"/> + <source>Application exited normally</source> + <translation>L'application s'est terminée normalement</translation> + </message> + <message> + <location line="+204"/> + <source><p>The inferior stopped because it received a signal from the Operating System.<p><table><tr><td>Signal name : </td><td>%1</td></tr><tr><td>Signal meaning : </td><td>%2</td></tr></table></source> + <translation><p>L'inférieur a stoppé car il a reçu un signal du système d'exploitation.</p><table><tr><td>Nom du signal : </td><td>%1</td></tr><tr><td>Signification du signal : </td><td>%2</td></tr></table></translation> + </message> + <message> + <location line="+9"/> + <source>Stopped: %1 by signal %2</source> + <translation>Arrêté : %1 par le signal %2</translation> + </message> + <message> + <location line="+120"/> + <location line="+297"/> + <location line="+63"/> + <source>Execution Error</source> + <translation>Erreur d'exécution</translation> + </message> + <message> + <location line="-359"/> + <location line="+297"/> + <location line="+63"/> + <source>Cannot continue debugged process: +</source> + <translation>Impossible de continuer le processus débogué : +</translation> + </message> + <message> + <location line="-259"/> + <source>Failed to shut down application</source> + <translation type="unfinished">Échec de la terminaison du programme</translation> + </message> + <message> + <location line="+53"/> + <source>There is no gdb binary available for '%1'</source> + <translation type="unfinished">Il n'y a pas de binaire de gdb disponible pour '%1'</translation> + </message> + <message> + <location line="+57"/> + <source>Launching</source> + <translation type="unfinished">Lancement</translation> + </message> + <message> + <location line="+40"/> + <source>Continuing after temporary stop...</source> + <translation>Continue après un arrêt temporaire...</translation> + </message> + <message> + <location line="+2359"/> + <source>Failed to start application: </source> + <translation>Impossible de démarrer l'application : </translation> + </message> + <message> + <location line="+6"/> + <source>Failed to start application</source> + <translation type="unfinished">Impossible de démarrer l'application</translation> + </message> + <message> + <location line="-3076"/> <source><unknown></source> - <extracomment>End address of loaded module</extracomment> <translation><inconnue></translation> </message> <message> - <location line="+49"/> + <location line="+1593"/> <location line="+8"/> <source>Retrieving data for stack view...</source> <translation>Collecte des données pour la vue de la pile...</translation> </message> <message numerus="yes"> - <location line="+503"/> + <location filename="../../../src/plugins/debugger/gdb/classicgdbengine.cpp" line="-560"/> <source>Retrieving data for watch view (%n requests pending)...</source> <translation> <numerusform>Collecte des données pour la vue des observateurs (%n requête restante)...</numerusform> @@ -4381,22 +5318,21 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> </translation> </message> <message> - <location line="+324"/> <source>Finished retrieving data.</source> - <translation>Collecte des données terminée.</translation> + <translation type="obsolete">Collecte des données terminée.</translation> </message> <message> - <location line="+43"/> + <location line="+594"/> <source>Debugging helpers not found.</source> <translation>Assistance au débogage non trouvée.</translation> </message> <message> - <location line="+121"/> + <location filename="../../../src/plugins/debugger/gdb/gdbengine.cpp" line="+698"/> <source>Custom dumper setup: %1</source> <translation>Configuration du collecteur pesonnalisé : %1</translation> </message> <message> - <location line="+128"/> + <location filename="../../../src/plugins/debugger/gdb/classicgdbengine.cpp" line="-268"/> <source><0 items></source> <translation><0 éléments></translation> </message> @@ -4410,12 +5346,12 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> </translation> </message> <message> - <location line="+217"/> + <location filename="../../../src/plugins/debugger/gdb/gdbengine.cpp" line="+52"/> <source><shadowed></source> <translation><%n élément></translation> </message> <message> - <location line="+134"/> + <location filename="../../../src/plugins/debugger/gdb/classicgdbengine.cpp" line="+349"/> <source><n/a></source> <translation><%n élément></translation> </message> @@ -4434,17 +5370,16 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Debugger::Internal::GdbOptionsPage</name> <message> - <location filename="../../../src/plugins/debugger/gdb/gdboptionspage.cpp" line="+8"/> + <location filename="../../../src/plugins/debugger/gdb/gdboptionspage.cpp" line="+53"/> <source>Gdb</source> <translation>Gdb</translation> </message> <message> - <location line="+34"/> <source>Choose Gdb Location</source> - <translation>Choisir l'emplacement de Gdb</translation> + <translation type="obsolete">Choisir l'emplacement de Gdb</translation> </message> <message> - <location line="+2"/> + <location line="+24"/> <source>Choose Location of Startup Script File</source> <translation>Choisir l'emplacement du fichier contenant le script de démarrage</translation> </message> @@ -4452,7 +5387,17 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Debugger::Internal::ModulesModel</name> <message> - <location filename="../../../src/plugins/debugger/moduleshandler.cpp" line="+87"/> + <location filename="../../../src/plugins/debugger/moduleshandler.cpp" line="+90"/> + <source>yes</source> + <translation>oui</translation> + </message> + <message> + <location line="+0"/> + <source>no</source> + <translation>non</translation> + </message> + <message> + <location line="+9"/> <source>Module name</source> <translation>Nom du module</translation> </message> @@ -4475,67 +5420,111 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Debugger::Internal::ModulesWindow</name> <message> - <location filename="../../../src/plugins/debugger/moduleswindow.cpp" line="+64"/> + <location filename="../../../src/plugins/debugger/moduleswindow.cpp" line="+66"/> <source>Modules</source> <translation>Modules</translation> </message> <message> - <location line="+47"/> - <source>Update module list</source> + <location line="+49"/> + <source>Update Module List</source> <translation>Mettre à jour la liste des modules</translation> </message> <message> - <location line="+29"/> - <source>Adjust column widths to contents</source> + <location line="+2"/> + <source>Show Source Files for Module "%1"</source> + <translation>Afficher les fichiers source du module "%1"</translation> + </message> + <message> + <location line="+2"/> + <source>Load Symbols for All Modules</source> + <translation>Charger les symboles pour tout les modules</translation> + </message> + <message> + <location line="+6"/> + <source>Load Symbols for Module</source> + <translation>Charcher les symboles pour le module</translation> + </message> + <message> + <location line="+2"/> + <source>Edit File</source> + <translation>Éditer le fichier</translation> + </message> + <message> + <location line="+2"/> + <source>Show Symbols</source> + <translation>Afficher les symboles</translation> + </message> + <message> + <location line="+3"/> + <source>Load Symbols for Module "%1"</source> + <translation>Charger les symboles pour le module "%1"</translation> + </message> + <message> + <location line="+2"/> + <source>Edit File "%1"</source> + <translation>Éditer le fichier "%1"</translation> + </message> + <message> + <location line="+1"/> + <source>Show Symbols in File "%1"</source> + <translation>Afficher les symboles dans le fichier "%1"</translation> + </message> + <message> + <location line="+10"/> + <source>Adjust Column Widths to Contents</source> <translation>Ajuster la largeur des colonnes au contenu</translation> </message> <message> <location line="+2"/> - <source>Always adjust column widths to contents</source> + <source>Always Adjust Column Widths to Contents</source> <translation>Toujours ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="-29"/> + <source>Update module list</source> + <translation type="obsolete">Mettre à jour la liste des modules</translation> + </message> + <message> + <source>Adjust column widths to contents</source> + <translation type="obsolete">Ajuster la largeur des colonnes au contenu</translation> + </message> + <message> + <source>Always adjust column widths to contents</source> + <translation type="obsolete">Toujours ajuster la largeur des colonnes au contenu</translation> + </message> + <message> <source>Show source files for module "%1"</source> - <translation>Afficher les fichiers source du module "%1"</translation> + <translation type="obsolete">Afficher les fichiers source du module "%1"</translation> </message> <message> - <location line="+2"/> <source>Load symbols for all modules</source> - <translation>Charger les symboles pour tout les modules</translation> + <translation type="obsolete">Charger les symboles pour tout les modules</translation> </message> <message> - <location line="+6"/> <source>Load symbols for module</source> - <translation>Charcher les symboles pour le module</translation> + <translation type="obsolete">Charcher les symboles pour le module</translation> </message> <message> - <location line="+1"/> <source>Edit file</source> - <translation>Éditer le fichier</translation> + <translation type="obsolete">Éditer le fichier</translation> </message> <message> - <location line="+1"/> <source>Show symbols</source> - <translation>Afficher les symboles</translation> + <translation type="obsolete">Afficher les symboles</translation> </message> <message> - <location line="+2"/> <source>Load symbols for module "%1"</source> - <translation>Charger les symboles pour le module "%1"</translation> + <translation type="obsolete">Charger les symboles pour le module "%1"</translation> </message> <message> - <location line="+1"/> <source>Edit file "%1"</source> - <translation>Éditer le fichier "%1"</translation> + <translation type="obsolete">Éditer le fichier "%1"</translation> </message> <message> - <location line="+1"/> <source>Show symbols in file "%1"</source> - <translation>Affichier les symboles dans le fichier "%1"</translation> + <translation type="obsolete">Affichier les symboles dans le fichier "%1"</translation> </message> <message> - <location line="+79"/> + <location line="+64"/> <source>Address</source> <translation>Adresse</translation> </message> @@ -4589,22 +5578,35 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Debugger::Internal::RegisterWindow</name> <message> - <location filename="../../../src/plugins/debugger/registerwindow.cpp" line="+150"/> + <location filename="../../../src/plugins/debugger/registerwindow.cpp" line="+151"/> <source>Registers</source> <translation>Registres</translation> </message> <message> - <location line="+25"/> <source>Open memory editor</source> + <translation type="obsolete">Ouvrir l'éditeur de mémoire</translation> + </message> + <message> + <source>Open memory editor at %1</source> + <translation type="obsolete">Ouvrir l'éditeur de mémoire à l'adresse %1</translation> + </message> + <message> + <location line="+22"/> + <source>Reload Register Listing</source> + <translation>Recharger la liste des registres</translation> + </message> + <message> + <location line="+11"/> + <source>Open Memory Editor</source> <translation>Ouvrir l'éditeur de mémoire</translation> </message> <message> <location line="+3"/> - <source>Open memory editor at %1</source> + <source>Open Memory Editor at %1</source> <translation>Ouvrir l'éditeur de mémoire à l'adresse %1</translation> </message> <message> - <location line="+6"/> + <location line="+7"/> <source>Hexadecimal</source> <translation>Hexadécimal</translation> </message> @@ -4625,29 +5627,36 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> </message> <message> <location line="+5"/> - <source>Adjust column widths to contents</source> + <source>Adjust Column Widths to Contents</source> <translation>Ajuster la largeur des colonnes au contenu</translation> </message> <message> <location line="+2"/> - <source>Always adjust column widths to contents</source> + <source>Always Adjust Column Widths to Contents</source> <translation>Toujours ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="-32"/> + <source>Adjust column widths to contents</source> + <translation type="obsolete">Ajuster la largeur des colonnes au contenu</translation> + </message> + <message> + <source>Always adjust column widths to contents</source> + <translation type="obsolete">Toujours ajuster la largeur des colonnes au contenu</translation> + </message> + <message> <source>Reload register listing</source> - <translation>Recharger la liste des registres</translation> + <translation type="obsolete">Recharger la liste des registres</translation> </message> </context> <context> <name>Debugger::Internal::ScriptEngine</name> <message> - <location filename="../../../src/plugins/debugger/script/scriptengine.cpp" line="+244"/> + <location filename="../../../src/plugins/debugger/script/scriptengine.cpp" line="+263"/> <source>Running requested...</source> <translation>Exécution...</translation> </message> <message> - <location line="+228"/> + <location line="+242"/> <source>'%1' contains no identifier</source> <translation>'%1' ne contient pas d'identifiant</translation> </message> @@ -4662,8 +5671,12 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>Refuse lâchement d'évaluer l'expression '%1' avec des effects secondaires potentiels</translation> </message> <message> - <location line="+81"/> - <location line="+50"/> + <location line="+93"/> + <source>Stopped at %1:%2.</source> + <translation>Arrêté à %1 : %2.</translation> + </message> + <message> + <location line="+51"/> <source>Stopped.</source> <translation>Arrêté.</translation> </message> @@ -4682,30 +5695,42 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Debugger::Internal::SourceFilesWindow</name> <message> - <location filename="../../../src/plugins/debugger/sourcefileswindow.cpp" line="+175"/> + <location filename="../../../src/plugins/debugger/sourcefileswindow.cpp" line="+176"/> <source>Source Files</source> <translation>Fichiers source</translation> </message> <message> <location line="+27"/> - <source>Reload data</source> + <source>Reload Data</source> <translation>Recharger les données</translation> </message> <message> <location line="+5"/> - <source>Open file</source> - <translation>Ouvrir le fichier</translation> + <source>Open File</source> + <translation>Ouvrir le Fichier</translation> </message> <message> <location line="+3"/> - <source>Open file "%1"'</source> + <source>Open File "%1"'</source> <translation>Ouvrir le fichier "%1"</translation> </message> + <message> + <source>Reload data</source> + <translation type="obsolete">Recharger les données</translation> + </message> + <message> + <source>Open file</source> + <translation type="obsolete">Ouvrir le fichier</translation> + </message> + <message> + <source>Open file "%1"'</source> + <translation type="obsolete">Ouvrir le fichier "%1"</translation> + </message> </context> <context> <name>Debugger::Internal::StackHandler</name> <message> - <location filename="../../../src/plugins/debugger/stackhandler.cpp" line="+67"/> + <location filename="../../../src/plugins/debugger/stackhandler.cpp" line="+68"/> <location line="+14"/> <source>Address:</source> <translation>Adresse :</translation> @@ -4798,6 +5823,10 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <source>Address</source> <translation>Adresse</translation> </message> + <message> + <source>State</source> + <translation type="obsolete">État</translation> + </message> <message> <location line="-28"/> <source>Thread: %1</source> @@ -4822,50 +5851,78 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Debugger::Internal::StackWindow</name> <message> - <location filename="../../../src/plugins/debugger/stackwindow.cpp" line="+60"/> + <location filename="../../../src/plugins/debugger/stackwindow.cpp" line="+64"/> <source>Stack</source> <translation>Pile</translation> </message> <message> <location line="+42"/> - <source>Copy contents to clipboard</source> + <source>Copy Contents to Clipboard</source> <translation>Copier le contenu dans le presse papier</translation> </message> <message> - <location line="+5"/> - <source>Open memory editor</source> + <location line="+8"/> + <source>Open Memory Editor</source> <translation>Ouvrir l'éditeur de mémoire</translation> </message> <message> <location line="+3"/> - <source>Open memory editor at %1</source> + <source>Open Memory Editor at %1</source> <translation>Ouvrir l'éditeur de mémoire à l'adresse %1</translation> </message> <message> - <location line="+5"/> - <source>Open disassembler</source> + <location line="+6"/> + <source>Open Disassembler</source> <translation>Ouvrir le désassembleur</translation> </message> <message> <location line="+3"/> - <source>Open disassembler at %1</source> + <source>Open Disassembler at %1</source> <translation>Ouvrir le désassembleur à l'adresse %1</translation> </message> <message> - <location line="+9"/> - <source>Adjust column widths to contents</source> + <location line="+10"/> + <source>Adjust Column Widths to Contents</source> <translation>Ajuster la largeur des colonnes au contenu</translation> </message> <message> <location line="+3"/> - <source>Always adjust column widths to contents</source> + <source>Always Adjust Column Widths to Contents</source> <translation>Toujours ajuster la largeur des colonnes au contenu</translation> </message> + <message> + <source>Copy contents to clipboard</source> + <translation type="obsolete">Copier le contenu dans le presse papier</translation> + </message> + <message> + <source>Open memory editor</source> + <translation type="obsolete">Ouvrir l'éditeur de mémoire</translation> + </message> + <message> + <source>Open memory editor at %1</source> + <translation type="obsolete">Ouvrir l'éditeur de mémoire à l'adresse %1</translation> + </message> + <message> + <source>Open disassembler</source> + <translation type="obsolete">Ouvrir le désassembleur</translation> + </message> + <message> + <source>Open disassembler at %1</source> + <translation type="obsolete">Ouvrir le désassembleur à l'adresse %1</translation> + </message> + <message> + <source>Adjust column widths to contents</source> + <translation type="obsolete">Ajuster la largeur des colonnes au contenu</translation> + </message> + <message> + <source>Always adjust column widths to contents</source> + <translation type="obsolete">Toujours ajuster la largeur des colonnes au contenu</translation> + </message> </context> <context> <name>Debugger::Internal::StartExternalDialog</name> <message> - <location filename="../../../src/plugins/debugger/debuggerdialogs.cpp" line="-142"/> + <location filename="../../../src/plugins/debugger/debuggerdialogs.cpp" line="-176"/> <source>Select Executable</source> <translation>Selectionner l'exécutable</translation> </message> @@ -4884,38 +5941,62 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <name>Debugger::Internal::StartRemoteDialog</name> <message> <location line="+51"/> + <source>Select Debugger</source> + <translation>Lancer le débogueur</translation> + </message> + <message> + <location line="+2"/> <source>Select Executable</source> <translation>Selectionner l'exécutable</translation> </message> + <message> + <location line="+1"/> + <source>Select Sysroot</source> + <translatorcomment>laisser sysroot ?</translatorcomment> + <translation type="unfinished">Sectionner la racine du système</translation> + </message> + <message> + <location line="+2"/> + <source>Select Start Script</source> + <translation type="unfinished">Sélectionner le script de démarrage</translation> + </message> </context> <context> <name>Debugger::Internal::ThreadsWindow</name> <message> - <location filename="../../../src/plugins/debugger/threadswindow.cpp" line="+46"/> + <location filename="../../../src/plugins/debugger/threadswindow.cpp" line="+50"/> <source>Thread</source> <translation>Thread</translation> </message> <message> - <location line="+21"/> - <source>Adjust column widths to contents</source> + <location line="+22"/> + <source>Adjust Column Widths to Contents</source> <translation>Ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+1"/> - <source>Always adjust column widths to contents</source> + <location line="+2"/> + <source>Always Adjust Column Widths to Contents</source> <translation>Toujours ajuster la largeur des colonnes au contenu</translation> </message> + <message> + <source>Adjust column widths to contents</source> + <translation type="obsolete">Ajuster la largeur des colonnes au contenu</translation> + </message> + <message> + <source>Always adjust column widths to contents</source> + <translation type="obsolete">Toujours ajuster la largeur des colonnes au contenu</translation> + </message> </context> <context> <name>Debugger::Internal::WatchData</name> <message> - <location filename="../../../src/plugins/debugger/watchhandler.cpp" line="+72"/> - <location line="+250"/> + <location filename="../../../src/plugins/debugger/watchdata.cpp" line="+246"/> + <location filename="../../../src/plugins/debugger/watchhandler.cpp" line="+74"/> <source><not in scope></source> <translation><pas dans la portée></translation> </message> <message> - <location line="+8"/> + <location line="+6"/> <source>%1 <shadowed %2></source> <translation>%1 <shadowed %2></translation> </message> @@ -4923,11 +6004,16 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Debugger::Internal::WatchHandler</name> <message> - <location line="-27"/> - <source>Expression</source> - <translation>Expression</translation> - </message> - <message> + <location line="-25"/> + <source>Name</source> + <translation>Nom</translation> + </message> + <message> + <location line="+1"/> + <source>Expression</source> + <translation>Expression</translation> + </message> + <message> <location line="+1"/> <source>Type</source> <translation>Type</translation> @@ -4948,17 +6034,16 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>Adresse de l'objet</translation> </message> <message> - <location line="+1"/> <source>Stored Address</source> - <translation>Adresse stockée</translation> + <translation type="obsolete">Adresse stockée</translation> </message> <message> - <location line="+33"/> + <location filename="../../../src/plugins/debugger/watchhandler.cpp" line="+45"/> <source>Root</source> <translation>Racine</translation> </message> <message> - <location line="+7"/> + <location line="+6"/> <source>Locals</source> <translation>Variables locales</translation> </message> @@ -4973,12 +6058,22 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>Info-bulle</translation> </message> <message> - <location line="+1075"/> + <location line="+1024"/> + <source>unknown address</source> + <translation>adresse inconnue</translation> + </message> + <message> + <location line="+3"/> + <source>%1 object at %2</source> + <translation type="unfinished">%1 objet à %2</translation> + </message> + <message> + <location line="+209"/> <source><Edit></source> <translation><Éditer></translation> </message> <message> - <location line="-1122"/> + <location filename="../../../src/plugins/debugger/watchdata.cpp" line="+1"/> <source>Internal ID</source> <translation>ID interne</translation> </message> @@ -4991,7 +6086,7 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Debugger::Internal::WatchModel</name> <message> - <location line="+453"/> + <location filename="../../../src/plugins/debugger/watchhandler.cpp" line="-751"/> <source>decimal</source> <translation>décimal</translation> </message> @@ -5011,7 +6106,32 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>octal</translation> </message> <message> - <location line="+86"/> + <location line="+3"/> + <source>Bald pointer</source> + <translation type="unfinished">Pointeur simple</translation> + </message> + <message> + <location line="+1"/> + <source>Latin1 string</source> + <translation type="unfinished">Chaîne de caractères latin1</translation> + </message> + <message> + <location line="+1"/> + <source>UTF8 string</source> + <translation type="unfinished">Chaîne de caractères UTF8</translation> + </message> + <message> + <location line="+1"/> + <source>UTF16 string</source> + <translation type="unfinished">Chaîne de caractères UTF16</translation> + </message> + <message> + <location line="+1"/> + <source>UCS4 string</source> + <translation type="unfinished">Chaîne de caractères UCS4</translation> + </message> + <message> + <location line="+89"/> <source>Name</source> <translation>Nom</translation> </message> @@ -5029,104 +6149,161 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Debugger::Internal::WatchWindow</name> <message> - <location filename="../../../src/plugins/debugger/watchwindow.cpp" line="+128"/> + <location filename="../../../src/plugins/debugger/watchwindow.cpp" line="+131"/> <source>Locals and Watchers</source> <translation>Variables locales et observateurs</translation> </message> <message> - <location line="+95"/> - <source>Change format for type '%1'</source> + <location line="+97"/> + <source>Change Format for Type "%1"</source> <translation>Modifier le format pour le type '%1'</translation> </message> <message> - <location line="+1"/> - <source>Change format for expression '%1'</source> - <translation>Modifier le format pour l'expression '%1'</translation> + <location line="+24"/> + <source>Change Format for Object at %1</source> + <translation type="unfinished">Modifier le format pour l'objet à '%1'</translation> </message> <message> - <location line="+21"/> - <source>Change format for type</source> + <location line="+4"/> + <source>Clear</source> + <translation>Effacer</translation> + </message> + <message> + <location line="+37"/> + <source>Open Memory Editor at %1</source> + <translation>Ouvrir l'éditeur de mémoire à l'adresse %1</translation> + </message> + <message> + <location line="-50"/> + <source>Change Format for Type</source> <translation>Modifier le format pour le type</translation> </message> + <message> + <location line="+27"/> + <source>Change Format for Object</source> + <translation type="unfinished">Modifier le format pour l'objet</translation> + </message> + <message> + <location line="+10"/> + <source>Insert New Watch Item</source> + <translation>Insérer un nouvel élément observé</translation> + </message> + <message> + <location line="+2"/> + <source>Select Widget to Watch</source> + <translation>Sélectionner le widget à observer</translation> + </message> + <message> + <location line="+5"/> + <source>Open Memory Editor...</source> + <translation>Ouvrir l'éditeur de mémoire...</translation> + </message> + <message> + <location line="+32"/> + <source>Refresh Code Model Snapshot</source> + <translation type="unfinished">Rafraîchir le snapshot du code</translation> + </message> + <message> + <location line="+12"/> + <source>Adjust Column Widths to Contents</source> + <translation>Ajuster la largeur des colonnes au contenu</translation> + </message> <message> <location line="+2"/> + <source>Always Adjust Column Widths to Contents</source> + <translation>Toujours ajuster la largeur des colonnes au contenu</translation> + </message> + <message> + <source>Change format for type '%1'</source> + <translation type="obsolete">Modifier le format pour le type '%1'</translation> + </message> + <message> + <source>Change format for expression '%1'</source> + <translation type="obsolete">Modifier le format pour l'expression '%1'</translation> + </message> + <message> + <source>Change format for type</source> + <translation type="obsolete">Modifier le format pour le type</translation> + </message> + <message> <source>Change format for expression</source> - <translation>Modifier le format pour l'expression</translation> + <translation type="obsolete">Modifier le format pour l'expression</translation> </message> <message> - <location line="+7"/> <source>Select widget to watch</source> - <translation>Sélectionner le widget à observer</translation> + <translation type="obsolete">Sélectionner le widget à observer</translation> </message> <message> - <location line="+5"/> <source>Open memory editor...</source> - <translation>Ouvrir l'éditeur de mémoire...</translation> + <translation type="obsolete">Ouvrir l'éditeur de mémoire...</translation> </message> <message> - <location line="+4"/> <source>Open memory editor at %1</source> - <translation>Ouvrir l'éditeur de mémoire à l'adresse %1</translation> + <translation type="obsolete">Ouvrir l'éditeur de mémoire à l'adresse %1</translation> </message> <message> - <location line="+17"/> <source>Refresh code model snapshot</source> - <translation>Rafraîchir l'instantané du code</translation> + <translation type="obsolete">Rafraîchir l'instantané du code</translation> </message> <message> - <location line="+9"/> <source>Adjust column widths to contents</source> - <translation>Ajuster la largeur des colonnes au contenu</translation> + <translation type="obsolete">Ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="+2"/> <source>Always adjust column widths to contents</source> - <translation>Toujours ajuster la largeur des colonnes au contenu</translation> + <translation type="obsolete">Toujours ajuster la largeur des colonnes au contenu</translation> </message> <message> - <location line="-38"/> <source>Insert new watch item</source> - <translation>Insérer un nouvel élémen observé</translation> + <translation type="obsolete">Insérer un nouvel élémen observé</translation> </message> </context> <context> <name>DebuggerPane</name> <message> - <location filename="../../../src/plugins/debugger/debuggeroutputwindow.cpp" line="-140"/> <source>Clear contents</source> + <translation type="obsolete">Effacer le contenu</translation> + </message> + <message> + <source>Save contents</source> + <translation type="obsolete">Sauver le contenu</translation> + </message> + <message> + <location filename="../../../src/plugins/debugger/debuggeroutputwindow.cpp" line="-150"/> + <source>Clear Contents</source> <translation>Effacer le contenu</translation> </message> <message> <location line="+6"/> - <source>Save contents</source> + <source>Save Contents</source> <translation>Sauver le contenu</translation> </message> + <message> + <source>Log File</source> + <translation type="obsolete">Réaliser un log du fichier</translation> + </message> </context> <context> <name>DebuggingHelperOptionPage</name> <message> - <location filename="../../../src/plugins/debugger/dumperoptionpage.ui"/> <source>Debugging helper</source> - <translation>Assistance au débogage</translation> + <translation type="obsolete">Assistance au débogage</translation> </message> <message> - <location/> <source>This will enable nice display of Qt and Standard Library objects in the Locals&Watchers view</source> <translatorcomment>Traduction de Locals&Watchers ?</translatorcomment> - <translation>Cela permettra un affichage correct des objets de Qt et de la bibliothèque standard dans a vue Variables locales et observateurs</translation> + <translation type="obsolete">Cela permettra un affichage correct des objets de Qt et de la bibliothèque standard dans a vue Variables locales et observateurs</translation> </message> <message> - <location/> <source>Use debugging helper</source> - <translation>Utiliser l'assistance au débogage</translation> + <translation type="obsolete">Utiliser l'assistance au débogage</translation> </message> <message> - <location/> <source>This will load a dumper library</source> - <translation>Ceci cherchera une bibliothèque de collecte de données</translation> + <translation type="obsolete">Ceci cherchera une bibliothèque de collecte de données</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/debugger/dumperoptionpage.ui"/> <source>Use debugging helper from custom location</source> <translation>Utiliser un collecteur de données à partir d'un emplacement personnalisé</translation> </message> @@ -5151,11 +6328,25 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translatorcomment>pas exactement ça ?</translatorcomment> <translation>Utiliser le modèle de code</translation> </message> + <message> + <location/> + <source><html><head/><body> +<p>The debugging helper is only used to produce a nice display of objects of certain types like QString or std::map in the &quot;Locals and Watchers&quot; view.</p> +<p> It is not strictly necessary for debugging with Qt Creator. </p></body></html></source> + <translation type="unfinished"><html><head/><body> +<p>L'assistant au débogage est utilisé pour bien formater la valeur des types de données tels que QString ou std::map dans la vue “Variables locales et observateursâ€</p> +<p>Il n'est pas nécessaire pour déboguer avec Qt Creator</p></body></html></translation> + </message> + <message> + <location/> + <source>Use Debugging Helper</source> + <translation>Utiliser l'assistance au débogage</translation> + </message> </context> <context> <name>DependenciesModel</name> <message> - <location filename="../../../src/plugins/projectexplorer/dependenciespanel.cpp" line="+121"/> + <location filename="../../../src/plugins/projectexplorer/dependenciespanel.cpp" line="+131"/> <source>Unable to add dependency</source> <translation>Impossible d'ajouter une dépendance</translation> </message> @@ -5168,19 +6359,16 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>ProjectExplorer::Internal::DependenciesWidget</name> <message> - <location line="+143"/> <source>%1 has no dependencies.</source> - <translation>%1 n'a aucune dépendance.</translation> + <translation type="obsolete">%1 n'a aucune dépendance.</translation> </message> <message> - <location line="+2"/> <source>%1 depends on %2.</source> - <translation>%1 dépend de %2.</translation> + <translation type="obsolete">%1 dépend de %2.</translation> </message> <message> - <location line="+2"/> <source>%1 depends on: %2.</source> - <translation>%1 dépend de : %2.</translation> + <translation type="obsolete">%1 dépend de : %2.</translation> </message> </context> <context> @@ -5201,33 +6389,66 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>L'élement racine <RCC> est manquant.</translation> </message> <message> - <location filename="../../../src/plugins/designer/designerconstants.h" line="+38"/> + <location filename="../../../src/plugins/designer/designerconstants.h" line="+42"/> + <source>Xml Editor</source> + <translation>Éditeur XML</translation> + </message> + <message> + <location line="+4"/> <source>Designer</source> <translation>Designer</translation> </message> <message> - <location line="+1"/> + <location line="+2"/> <source>Class Generation</source> <translation>Génération de classe</translation> </message> + <message> + <location line="+5"/> + <source>Form Editor</source> + <translation>Editeur d'interface graphique</translation> + </message> + <message> + <location filename="../../../src/plugins/designer/codemodelhelpers.cpp" line="+129"/> + <source>The generated header of the form '%1' could be found. +Rebuilding the project might help.</source> + <translation type="unfinished">Impossible de trouver un en-tête généré pour l'interface graphique %1. +Regénérer le projet peut résoudre ce problème.</translation> + </message> + <message> + <location line="+6"/> + <source>The generated header '%1' could not be found in the code model. +Rebuilding the project might help.</source> + <translation type="unfinished">Impossible de trouver l'en-tête généré %1 dans le modèle de code. +Regénérer le projet peut résoudre ce problème.</translation> + </message> </context> <context> <name>Designer::Internal::FormClassWizardDialog</name> <message> - <location filename="../../../src/plugins/designer/cpp/formclasswizarddialog.cpp" line="+50"/> + <location filename="../../../src/plugins/designer/cpp/formclasswizarddialog.cpp" line="+52"/> <source>Qt Designer Form Class</source> <translation>Classe d'interface graphique Qt Designer</translation> </message> + <message> + <location line="+3"/> + <source>Form Template</source> + <translation>Modèle d'interface graphique</translation> + </message> + <message> + <location line="+5"/> + <source>Class Details</source> + <translation>Détails de la classe</translation> + </message> </context> <context> <name>Designer::Internal::FormClassWizardPage</name> <message> - <location filename="../../../src/plugins/designer/cpp/formclasswizardpage.ui"/> <source>Choose a class name</source> - <translation>Choisissez un nom de classe</translation> + <translation type="obsolete">Choisissez un nom de classe</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/designer/cpp/formclasswizardpage.ui"/> <source>Class</source> <translation>Classe</translation> </message> @@ -5241,102 +6462,137 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <source>%1 - Error</source> <translation>%1 - Erreur</translation> </message> + <message> + <location filename="../../../src/plugins/designer/cpp/formclasswizardpage.ui"/> + <source>Choose a Class Name</source> + <translation>Choisissez un nom de classe</translation> + </message> </context> <context> <name>Designer::Internal::FormEditorPlugin</name> <message> - <location filename="../../../src/plugins/designer/formeditorplugin.cpp" line="+137"/> <source>Qt</source> - <translation>Qt</translation> + <translation type="obsolete">Qt</translation> </message> <message> - <location line="+2"/> + <location filename="../../../src/plugins/designer/formeditorplugin.cpp" line="+130"/> <source>Qt Designer Form</source> <translation>Interface graphique Qt Designer</translation> </message> <message> - <location line="+1"/> + <location line="+2"/> + <source>Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt C++ Project.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Creates a Qt Designer form that you can add to a Qt C++ project. This is useful if you already have an existing class for the UI business logic.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Creates a Qt Designer form file (.ui).</source> - <translation>Crée un fichier d'interface graphique Qt Designer (.ui).</translation> + <translation type="obsolete">Crée un fichier d'interface graphique Qt Designer (.ui).</translation> </message> <message> - <location line="+5"/> + <location line="-2"/> <source>Qt Designer Form Class</source> <translation>Classe d'interface graphique Qt Designer</translation> </message> <message> - <location line="+1"/> <source>Creates a Qt Designer form file (.ui) with a matching class.</source> - <translation>Crée un fichier d'interface graphique Qt Designer (.ui) avec une classe correspondante.</translation> + <translation type="obsolete">Crée un fichier d'interface graphique Qt Designer (.ui) avec une classe correspondante.</translation> </message> </context> <context> <name>Designer::Internal::FormEditorW</name> <message> - <location filename="../../../src/plugins/designer/formeditorw.cpp" line="+335"/> - <location line="+170"/> + <location filename="../../../src/plugins/designer/formeditorw.cpp" line="+348"/> <source>Widget Box</source> <translatorcomment>this translation must coherent with the translation of Qt Designer</translatorcomment> <translation>Boîte de widget</translation> </message> <message> - <location line="-165"/> - <location line="+169"/> + <location line="-104"/> + <location line="+110"/> <source>Object Inspector</source> <translatorcomment>Je trouve que "Inspecteur d'objet" est peu adapté. Explorateur d'objet n'est pas excellent non plus, à changer surement.</translatorcomment> <translation>Inspecteur d'objet</translation> </message> <message> - <location line="-164"/> - <location line="+168"/> + <location line="-113"/> + <source>Widget box</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <location line="+113"/> <source>Property Editor</source> <translation>Editeur de propriété</translation> </message> <message> - <location line="-163"/> <source>Signals & Slots Editor</source> - <translation>Editeur de Signaux & Slots</translation> + <translation type="obsolete">Editeur de Signaux & Slots</translation> </message> <message> - <location line="+4"/> - <location line="+167"/> + <location line="-107"/> + <location line="+118"/> <source>Action Editor</source> <translation>Editeur d'Action</translation> </message> <message> - <location line="-125"/> <source>For&m editor</source> - <translation>Editeur d'&interface graphique</translation> + <translation type="obsolete">Editeur d'&interface graphique</translation> </message> <message> - <location line="+35"/> <source>Edit widgets</source> - <translation>Éditer les widgets</translation> + <translation type="obsolete">Éditer les widgets</translation> </message> <message> - <location line="+1"/> + <location line="+78"/> <source>F3</source> <translation>F3</translation> </message> <message> - <location line="+4"/> <source>Edit signals/slots</source> - <translation>Éditer signaux/slots</translation> + <translation type="obsolete">Éditer signaux/slots</translation> </message> <message> - <location line="+1"/> + <location line="+5"/> <source>F4</source> <translation>F4</translation> </message> <message> - <location line="+4"/> <source>Edit buddies</source> - <translation>Éditer les copains</translation> + <translation type="obsolete">Éditer les copains</translation> </message> <message> - <location line="+5"/> <source>Edit tab order</source> - <translation>Éditer l'ordre des onglets</translation> + <translation type="obsolete">Éditer l'ordre des onglets</translation> + </message> + <message> + <location line="-40"/> + <source>For&m Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+34"/> + <source>Edit Widgets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Edit Signals/Slots</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Edit Buddies</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Edit Tab Order</source> + <translation type="unfinished"></translation> </message> <message> <location line="+5"/> @@ -5379,48 +6635,46 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <translation>Ctrl+J</translation> </message> <message> - <location line="+20"/> <source>Views</source> - <translation>Vues</translation> + <translation type="obsolete">Vues</translation> </message> <message> - <location line="+15"/> + <location line="-249"/> + <location line="+116"/> <source>Signals && Slots Editor</source> <translatorcomment>&& ? typo in original ?</translatorcomment> <translation>Editeur de signaux et slots</translation> </message> <message> - <location line="+10"/> <source>Locked</source> - <translation>Verrouillé</translation> + <translation type="obsolete">Verrouillé</translation> </message> <message> - <location line="+7"/> <source>Reset to Default Layout</source> - <translation>Restaurer la disposition par défaut</translation> + <translation type="obsolete">Restaurer la disposition par défaut</translation> </message> <message> - <location line="+10"/> + <location line="+155"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>About Qt Designer plugins....</source> <translation>À propos des plugins Qt Designer....</translation> </message> <message> - <location line="+35"/> + <location line="+33"/> <source>Preview in</source> <translation>Aperçu dans</translation> </message> <message> - <location line="+48"/> + <location line="+41"/> <source>Designer</source> <translation>Designer</translation> </message> <message> - <location line="+161"/> + <location line="+175"/> <source>The image could not be created: %1</source> <translation>L'image ne peut pas être créée : %1</translation> </message> @@ -5428,9 +6682,13 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Designer::Internal::FormTemplateWizardPage</name> <message> - <location filename="../../../src/plugins/designer/formtemplatewizardpage.cpp" line="+62"/> <source>Choose a form template</source> - <translation>Choisir un modèle d'interface graphique</translation> + <translation type="obsolete">Choisir un modèle d'interface graphique</translation> + </message> + <message> + <location filename="../../../src/plugins/designer/formtemplatewizardpage.cpp" line="+62"/> + <source>Choose a Form Template</source> + <translation type="unfinished"></translation> </message> <message> <location line="+30"/> @@ -5441,12 +6699,12 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <context> <name>Designer::Internal::FormWindowFile</name> <message> - <location filename="../../../src/plugins/designer/formwindowfile.cpp" line="+77"/> + <location filename="../../../src/plugins/designer/formwindowfile.cpp" line="+80"/> <source>Error saving %1</source> <translation>Erreur lors de l'enregistrement de %1</translation> </message> <message> - <location line="+106"/> + <location line="+92"/> <source>Unable to open %1: %2</source> <translation>Impossible d'ouvrir %1 : %2</translation> </message> @@ -5463,27 +6721,32 @@ L'utilisation de gdb 6.7 ou supérieur est recommandée.</translation> <source>Qt Designer Form</source> <translation>Interface graphique Qt Designer</translation> </message> + <message> + <location line="+2"/> + <source>Form Template</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Designer::Internal::QtCreatorIntegration</name> <message> - <location filename="../../../src/plugins/designer/qtcreatorintegration.cpp" line="+74"/> + <location filename="../../../src/plugins/designer/qtcreatorintegration.cpp" line="+79"/> <source>The class definition of '%1' could not be found in %2.</source> <translation>La déclaration de la classe %1 est introuvable dans %2.</translation> </message> <message> - <location line="+475"/> + <location line="+473"/> <source>Error finding/adding a slot.</source> <translatorcomment>Erreur lors de la recherche/de l'ajout d'un slot. ?</translatorcomment> <translation>Erreur de la recherche/ajout de slot.</translation> </message> <message> - <location line="+36"/> + <location line="+40"/> <source>Internal error: No project could be found for %1.</source> <translation>Erreur interne : Aucun projet n'a pu être trouvé pour %1.</translation> </message> <message> - <location line="+18"/> + <location line="+20"/> <source>No documents matching '%1' could be found. Rebuilding the project might help.</source> <translation>Impossible de trouver un document correspondant à %1. @@ -5512,22 +6775,25 @@ Regénérer le projet peut résoudre ce problème.</translation> <source>Remove</source> <translation>Supprimer</translation> </message> + <message> + <location/> + <source>Add and remove compressed help files, .qch.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>EmbeddedPropertiesPage</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/embeddedpropertiespage.ui"/> <source>Use Virtual Box Note: This adds the toolchain to the build environment and runs the program inside a virtual machine. It also automatically sets the correct Qt version.</source> - <translation>Utiliser Virtual Box + <translation type="obsolete">Utiliser Virtual Box Note : ceci ajoute la chaîne d'outils à l'environnement de compilation et exécute le programme à l'intérieur d'une machine virtuelle. La version de Qt est aussi définie automatiquement.</translation> </message> <message> - <location/> <source>Skin:</source> - <translation>Revêtement :</translation> + <translation type="obsolete">Revêtement :</translation> </message> </context> <context> @@ -5583,6 +6849,11 @@ La version de Qt est aussi définie automatiquement.</translation> <source>Dependencies:</source> <translation>Dépendances :</translation> </message> + <message> + <location/> + <source>Group:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ExtensionSystem::Internal::PluginErrorView</name> @@ -5600,7 +6871,7 @@ La version de Qt est aussi définie automatiquement.</translation> <context> <name>ExtensionSystem::Internal::PluginSpecPrivate</name> <message> - <location filename="../../../src/libs/extensionsystem/pluginspec.cpp" line="+415"/> + <location filename="../../../src/libs/extensionsystem/pluginspec.cpp" line="+471"/> <source>File does not exist: %1</source> <translation>Le fichier n'existe pas : %1</translation> </message> @@ -5618,12 +6889,11 @@ La version de Qt est aussi définie automatiquement.</translation> <context> <name>ExtensionSystem::Internal::PluginView</name> <message> - <location filename="../../../src/libs/extensionsystem/pluginview.ui"/> <source>State</source> - <translation>État</translation> + <translation type="obsolete">État</translation> </message> <message> - <location/> + <location filename="../../../src/libs/extensionsystem/pluginview.ui"/> <source>Name</source> <translation>Nom</translation> </message> @@ -5638,9 +6908,13 @@ La version de Qt est aussi définie automatiquement.</translation> <translation>Vendeur</translation> </message> <message> - <location/> <source>Location</source> - <translation>Emplacement</translation> + <translation type="obsolete">Emplacement</translation> + </message> + <message> + <location/> + <source>Load</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -5729,7 +7003,7 @@ La version de Qt est aussi définie automatiquement.</translation> <context> <name>ExtensionSystem::PluginManager</name> <message> - <location filename="../../../src/libs/extensionsystem/pluginmanager.cpp" line="+618"/> + <location filename="../../../src/libs/extensionsystem/pluginmanager.cpp" line="+788"/> <source>Circular dependency detected: </source> <translation>Dépendance circulaire détecté : @@ -5748,13 +7022,12 @@ La version de Qt est aussi définie automatiquement.</translation> <translation>%1 (%2)</translation> </message> <message> - <location line="+8"/> <source>Cannot load plugin because dependencies are not resolved</source> - <translation>Impossible de charger le plugin car les dépendances ne sont pas résolues</translation> + <translation type="obsolete">Impossible de charger le plugin car les dépendances ne sont pas résolues</translation> </message> <message> - <location line="+8"/> - <location line="+29"/> + <location line="+15"/> + <location line="+39"/> <source>Cannot load plugin because dependency failed to load: %1(%2) Reason: %3</source> <translation>Impossible de charger le plugin car une des dépendances n'a pas pu être chargé : %1(%2) @@ -5764,30 +7037,37 @@ Raison : %3</translation> <context> <name>FakeVim::Internal</name> <message> - <location filename="../../../src/plugins/fakevim/fakevimactions.cpp" line="+119"/> <source>Toggle vim-style editing</source> - <translation>Activer/désactiver l'édition en mode vim</translation> + <translation type="obsolete">Activer/désactiver l'édition en mode vim</translation> </message> <message> - <location line="+56"/> <source>FakeVim properties...</source> - <translation>Propriétés de FakeVim...</translation> + <translation type="obsolete">Propriétés de FakeVim...</translation> + </message> + <message> + <location filename="../../../src/plugins/fakevim/fakevimactions.cpp" line="+120"/> + <source>Use Vim-style Editing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Read .vimrc</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>FakeVim::Internal::FakeVimHandler</name> <message> - <location filename="../../../src/plugins/fakevim/fakevimhandler.cpp" line="+940"/> + <location filename="../../../src/plugins/fakevim/fakevimhandler.cpp" line="+1576"/> <source>Not implemented in FakeVim</source> <translation>Pas implémenté dans FakeVim</translation> </message> <message> - <location line="-696"/> <source>E20: Mark '%1' not set</source> - <translation>E20 : Marque '%1' non définie</translation> + <translation type="obsolete">E20 : Marque '%1' non définie</translation> </message> <message> - <location line="+672"/> + <location line="-24"/> <source>%1%2%</source> <translation>%1%2%</translation> </message> @@ -5797,32 +7077,30 @@ Raison : %3</translation> <translation>%1Tout</translation> </message> <message> - <location line="+1025"/> <source>File '%1' exists (add ! to override)</source> - <translation>Le fichier '%1' existe déjà (ajoutez ! pour écraser)</translation> + <translation type="obsolete">Le fichier '%1' existe déjà (ajoutez ! pour écraser)</translation> </message> <message> - <location line="+20"/> <source>Cannot open file '%1' for writing</source> - <translation>Impossible d'ouvrir le fichier '%1' en écriture</translation> + <translation type="obsolete">Impossible d'ouvrir le fichier '%1' en écriture</translation> </message> <message> - <location line="+7"/> + <location line="+1649"/> + <location filename="../../../src/plugins/fakevim/fakevimplugin.cpp" line="+943"/> <source>"%1" %2 %3L, %4C written</source> <translation>"%1" %2 %3L, %4C écrit</translation> </message> <message> - <location line="+8"/> <source>Cannot open file '%1' for reading</source> - <translation>Impossible d'ouvrir le fichier '%1' en lecture</translation> + <translation type="obsolete">Impossible d'ouvrir le fichier '%1' en lecture</translation> </message> <message> - <location line="+9"/> + <location line="+31"/> <source>"%1" %2L, %3C</source> <translation>"%1" %2L, %3C</translation> </message> <message numerus="yes"> - <location line="+18"/> + <location line="+31"/> <source>%n lines filtered</source> <translation> <numerusform>%n ligne filtrée</numerusform> @@ -5830,40 +7108,75 @@ Raison : %3</translation> </translation> </message> <message numerus="yes"> - <location line="+6"/> <source>%n lines >ed %1 time</source> - <translation> + <translation type="obsolete"> <numerusform>%n ligne >ed %1 fois</numerusform> <numerusform>%n lignes >ed %1 fois</numerusform> </translation> </message> <message> - <location line="+78"/> <source>E512: Unknown option: </source> - <translation>E512 : option inconnue : </translation> + <translation type="obsolete">E512 : option inconnue : </translation> </message> <message> - <location line="+71"/> + <location line="+190"/> <source>search hit BOTTOM, continuing at TOP</source> <translation>la recherche a atteint la fin du document, continue à partir du début</translation> </message> <message> - <location line="+2"/> + <location line="+1"/> <source>search hit TOP, continuing at BOTTOM</source> <translation>la recherche a atteint le début du document, continue à partir de la fin</translation> </message> <message> - <location line="+5"/> + <location line="-8"/> <source>Pattern not found: </source> <translation>Motif non trouvé : </translation> </message> <message> - <location line="+573"/> + <location line="-3109"/> + <source>Mark '%1' not set</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2781"/> + <source>Unknown option: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+60"/> + <source>File "%1" exists (add ! to override)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Cannot open file "%1" for writing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Cannot open file "%1" for reading</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <location line="+73"/> + <source>%n lines %1ed %2 time</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message> + <location line="+37"/> + <source>Can't open file %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+986"/> <source>Already at oldest change</source> <translation>Déjà au changement le plus ancien</translation> </message> <message> - <location line="+16"/> + <location line="+21"/> <source>Already at newest change</source> <translation>Déjà au changement le plus récent</translation> </message> @@ -5871,7 +7184,7 @@ Raison : %3</translation> <context> <name>FakeVim::Internal::FakeVimOptionPage</name> <message> - <location filename="../../../src/plugins/fakevim/fakevimplugin.cpp" line="+114"/> + <location filename="../../../src/plugins/fakevim/fakevimplugin.cpp" line="-809"/> <source>General</source> <translation>Général</translation> </message> @@ -5884,13 +7197,28 @@ Raison : %3</translation> <context> <name>FakeVim::Internal::FakeVimPluginPrivate</name> <message> - <location line="+347"/> - <location line="+188"/> + <location line="+488"/> + <source>Switch to next file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Switch to previous file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+253"/> + <location line="+218"/> <source>Quit FakeVim</source> <translation>Quitter FakeVim</translation> </message> <message> - <location line="-117"/> + <location line="-153"/> + <source>File not saved</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> <source>Saving succeeded</source> <translation>Succés de l'enregistrement</translation> </message> @@ -5903,12 +7231,11 @@ Raison : %3</translation> </translation> </message> <message> - <location line="+10"/> <source>Not an editor command: %1</source> - <translation>Pas une commande de l'éditeur : %1</translation> + <translation type="obsolete">Pas une commande de l'éditeur : %1</translation> </message> <message> - <location line="+112"/> + <location line="+150"/> <source>FakeVim Information</source> <translation>Information sur FakeVim</translation> </message> @@ -5921,24 +7248,20 @@ Raison : %3</translation> <translation>Utiliser FakeVim</translation> </message> <message> - <location/> <source>Vim style settings</source> - <translation>Paramètres de l'édition de type vim</translation> + <translation type="obsolete">Paramètres de l'édition de type vim</translation> </message> <message> - <location/> <source>vim's "expandtab" option</source> - <translation>option "expandtab" de vim</translation> + <translation type="obsolete">option "expandtab" de vim</translation> </message> <message> - <location/> <source>Expand tabulators:</source> - <translation>Étendre les tabulations :</translation> + <translation type="obsolete">Étendre les tabulations :</translation> </message> <message> - <location/> <source>Highlight search results:</source> - <translation>Surligner les résultats de recherche :</translation> + <translation type="obsolete">Surligner les résultats de recherche :</translation> </message> <message> <location/> @@ -5946,14 +7269,12 @@ Raison : %3</translation> <translation>Largeur d'indentation :</translation> </message> <message> - <location/> <source>Smart tabulators:</source> - <translation>Tabulation intelligente :</translation> + <translation type="obsolete">Tabulation intelligente :</translation> </message> <message> - <location/> <source>Start of line:</source> - <translation>Début de ligne :</translation> + <translation type="obsolete">Début de ligne :</translation> </message> <message> <location/> @@ -5971,34 +7292,103 @@ Raison : %3</translation> <translation>Touche retour :</translation> </message> <message> - <location/> <source>VIM's "autoindent" option</source> - <translation>option "autoindent" de vim</translation> + <translation type="obsolete">option "autoindent" de vim</translation> </message> <message> - <location/> <source>Automatic indentation:</source> - <translation>Indentation automatique :</translation> + <translation type="obsolete">Indentation automatique :</translation> </message> <message> - <location/> <source>Incremental search:</source> - <translation>Recherche incrémentale :</translation> + <translation type="obsolete">Recherche incrémentale :</translation> </message> <message> - <location/> <source>Copy text editor settings</source> - <translation>Copier les paramètres de l'éditeur de texte</translation> + <translation type="obsolete">Copier les paramètres de l'éditeur de texte</translation> </message> <message> - <location/> <source>Set Qt style</source> - <translation>Définir le style de Qt</translation> + <translation type="obsolete">Définir le style de Qt</translation> </message> <message> - <location/> <source>Set plain style</source> - <translation>Définir le style plein</translation> + <translation type="obsolete">Définir le style plein</translation> + </message> + <message> + <location/> + <source>Read .vimrc</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Vim Behavior</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Automatic indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Start of line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Smart indentation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Use search dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Expand tabulators</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show position of text marks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Smart tabulators</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Highlight search results</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Incremental search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Keyword characters:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Copy Text Editor Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Set Qt Style</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Set Plain Style</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -6041,6 +7431,14 @@ Raison : %3</translation> <source>Remove</source> <translation>Supprimer</translation> </message> + <message> + <location/> + <source><html><body> +<p> +Add, modify, and remove document filters, which determine the documentation set displayed in the Help mode. The attributes are defined in the documents. Select them to display a set of relevant documentation. Note that some attributes are defined in several documents. +</p></body></html></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Find::Internal::FindDialog</name> @@ -6079,31 +7477,37 @@ Raison : %3</translation> <source>&Whole words only</source> <translation>&Mots complets uniquement</translation> </message> + <message> + <location/> + <source>Search && Replace</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Find::Internal::FindPlugin</name> <message> - <location filename="../../../src/plugins/find/findplugin.cpp" line="+150"/> <source>&Find/Replace</source> - <translation>&Rechercher/Remplacer</translation> + <translation type="obsolete">&Rechercher/Remplacer</translation> </message> <message> - <location line="+17"/> <source>Find...</source> - <translation>Rechercher dans...</translation> + <translation type="obsolete">Rechercher dans...</translation> </message> <message> - <location line="+2"/> <source>Ctrl+Shift+F</source> - <translation>Ctrl+Maj+F</translation> + <translation type="obsolete">Ctrl+Maj+F</translation> </message> </context> <context> <name>Find::Internal::FindToolBar</name> <message> - <location filename="../../../src/plugins/find/findtoolbar.cpp" line="+139"/> <source>Current Document</source> - <translation>Document courant</translation> + <translation type="obsolete">Document courant</translation> + </message> + <message> + <location filename="../../../src/plugins/find/findtoolbar.cpp" line="+141"/> + <source>Find/Replace</source> + <translation type="unfinished"></translation> </message> <message> <location line="+7"/> @@ -6192,7 +7596,7 @@ Raison : %3</translation> <context> <name>Find::SearchResultWindow</name> <message> - <location filename="../../../src/plugins/find/searchresultwindow.cpp" line="+68"/> + <location filename="../../../src/plugins/find/searchresultwindow.cpp" line="+88"/> <source>No matches found!</source> <translation>Aucun résultat !</translation> </message> @@ -6225,22 +7629,19 @@ Raison : %3</translation> <context> <name>GdbOptionsPage</name> <message> - <location filename="../../../src/plugins/debugger/gdb/gdboptionspage.ui"/> <source>Gdb interaction</source> - <translation>Interaction avec Gdb</translation> + <translation type="obsolete">Interaction avec Gdb</translation> </message> <message> - <location/> <source>This is either a full absolute path leading to the gdb binary you intend to use or the name of a gdb binary that will be searched in your PATH.</source> - <translation>Ceci est soit un chemin absolu menant au binaire de gdb que vous désirez utiliser, soit le nom d'un binaire de gdb qui sera recherché dans le PATH.</translation> + <translation type="obsolete">Ceci est soit un chemin absolu menant au binaire de gdb que vous désirez utiliser, soit le nom d'un binaire de gdb qui sera recherché dans le PATH.</translation> </message> <message> - <location/> <source>Gdb location:</source> - <translation>Emplacement de GDB :</translation> + <translation type="obsolete">Emplacement de GDB :</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/debugger/gdb/gdboptionspage.ui"/> <source>Environment:</source> <translation>Environnement :</translation> </message> @@ -6255,9 +7656,8 @@ Raison : %3</translation> <translation>Script de démarrage de Gdb :</translation> </message> <message> - <location/> <source>Behaviour of breakpoint setting in plugins</source> - <translation>Comportement des paramètres des points d'arrêt dans les plugins</translation> + <translation type="obsolete">Comportement des paramètres des points d'arrêt dans les plugins</translation> </message> <message> <location/> @@ -6284,6 +7684,65 @@ Raison : %3</translation> <source>Never set breakpoints in plugins automatically</source> <translation>Ne jamais définir les points d'arrêt dans les plugins automatiquement</translation> </message> + <message> + <location/> + <source>Gdb</source> + <translation type="unfinished">Gdb</translation> + </message> + <message> + <location/> + <source>Gdb timeout:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>This is the number of seconds Qt Creator will wait before +it terminates non-responsive gdb process. The default value of 20 seconds +should be sufficient for most applications, but there are situations when +loading big libraries or listing source files takes much longer than that +on slow machines. In this case, the value should be increased.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>When this option is checked, the debugger plugin attempts +to extract full path information for all source files from gdb. This is a +slow process but enables setting breakpoints in files with the same file +name in different directories.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Use full path information to set breakpoints</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Enable reverse debugging</source> + <translation type="unfinished">Activer le débogage inversé</translation> + </message> + <message> + <location/> + <source>When this option is checked, 'Step Into' compresses several steps into one in certain situations, leading to 'less noisy' debugging. So will, e.g., the atomic + reference counting code be skipped, and a single 'Step Into' for a signal emission will end up directly in the slot connected to it.</source> + <translation type="unfinished">Lorsque cette option est cochée, « Entrer dans » compresse plusieurs étapes en une dans certains cas, afin d'éviter une 'pollution' du débogage. Cela conduit par exemple + à passer le comptage de référence atomique, et un simple « Entrer dans » depuis une émission de signal conduit directement au slot qui y est connecté.</translation> + </message> + <message> + <location/> + <source>Skip known frames when stepping</source> + <translation type="unfinished">Passer les trames connues en pas à pas</translation> + </message> + <message> + <location/> + <source>Show a message box when receiving a signal</source> + <translation type="unfinished">Afficher un message à la réception d'un signal</translation> + </message> + <message> + <location/> + <source>Behavior of Breakpoint Setting in Plugins</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>GenericMakeStep</name> @@ -6306,20 +7765,23 @@ Raison : %3</translation> <context> <name>GenericProject</name> <message> - <location filename="../../../src/plugins/genericprojectmanager/genericproject.cpp" line="+93"/> <source><new></source> - <translation><nouveau></translation> + <translation type="obsolete"><nouveau></translation> </message> </context> <context> <name>GenericProjectManager::Internal::GenericBuildConfigurationFactory</name> <message> - <location line="+38"/> <source>Create</source> - <translation>Créer</translation> + <translation type="obsolete">Créer</translation> </message> <message> - <location line="+10"/> + <location filename="../../../src/plugins/genericprojectmanager/genericbuildconfiguration.cpp" line="+143"/> + <source>Build</source> + <translation type="unfinished">Compilation</translation> + </message> + <message> + <location line="+23"/> <source>New configuration</source> <translation>Nouvelle configuration</translation> </message> @@ -6332,7 +7794,12 @@ Raison : %3</translation> <context> <name>GenericProjectManager::Internal::GenericBuildSettingsWidget</name> <message> - <location line="+450"/> + <location filename="../../../src/plugins/genericprojectmanager/genericproject.cpp" line="+480"/> + <source>Configuration Name:</source> + <translation type="unfinished">Nom de la configuration :</translation> + </message> + <message> + <location line="+8"/> <source>Build directory:</source> <translation>Répertoire de compilation :</translation> </message> @@ -6350,12 +7817,18 @@ Raison : %3</translation> <context> <name>GenericProjectManager::Internal::GenericMakeStepConfigWidget</name> <message> - <location filename="../../../src/plugins/genericprojectmanager/genericmakestep.cpp" line="+190"/> + <location filename="../../../src/plugins/genericprojectmanager/genericmakestep.cpp" line="+232"/> + <source>Make</source> + <comment>GenericMakestep display name.</comment> + <translation type="unfinished">Make</translation> + </message> + <message> + <location line="+6"/> <source>Override %1:</source> <translation>Écraser %1 :</translation> </message> <message> - <location line="+32"/> + <location line="+29"/> <source><b>Make:</b> %1 %2</source> <translation><b>Make : </b>%1 %2</translation> </message> @@ -6363,37 +7836,51 @@ Raison : %3</translation> <context> <name>GenericProjectManager::Internal::GenericProjectWizard</name> <message> - <location filename="../../../src/plugins/genericprojectmanager/genericprojectwizard.cpp" line="+246"/> <source>Import of Makefile-based Project</source> - <translation>Importer un projet basé sur un Makefile</translation> + <translation type="obsolete">Importer un projet basé sur un Makefile</translation> </message> <message> - <location line="+1"/> <source>Creates a generic project, supporting any build system.</source> - <translation>Crée un projet générique, supportant n'importe quel système de compilation.</translation> + <translation type="obsolete">Crée un projet générique, supportant n'importe quel système de compilation.</translation> </message> <message> - <location line="+2"/> <source>Projects</source> - <translation>Projets</translation> + <translation type="obsolete">Projets</translation> </message> <message> - <location line="+124"/> <source>The project %1 could not be opened.</source> - <translation>Le projet %1 ne peut pas être ouvert.</translation> + <translation type="obsolete">Le projet %1 ne peut pas être ouvert.</translation> + </message> + <message> + <location filename="../../../src/plugins/genericprojectmanager/genericprojectwizard.cpp" line="+109"/> + <source>Import Existing Project</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Imports existing projects that do not use qmake or CMake. This allows you to use Qt Creator as a code editor.</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>GenericProjectManager::Internal::GenericProjectWizardDialog</name> <message> - <location line="-249"/> <source>Import of Makefile-based Project</source> - <translation>Importer un projet basé sur un Makefile</translation> + <translation type="obsolete">Importer un projet basé sur un Makefile</translation> </message> <message> - <location line="+4"/> <source>Generic Project</source> - <translation>Projet générique</translation> + <translation type="obsolete">Projet générique</translation> + </message> + <message> + <location line="-50"/> + <source>Import Existing Project</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Project Name and Location</source> + <translation type="unfinished"></translation> </message> <message> <location line="+1"/> @@ -6406,9 +7893,13 @@ Raison : %3</translation> <translation>Emplacement :</translation> </message> <message> - <location line="+7"/> + <location line="+3"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> + <message> <source>Second Page Title</source> - <translation>Titre de la seconde page</translation> + <translation type="obsolete">Titre de la seconde page</translation> </message> </context> <context> @@ -6419,38 +7910,48 @@ Raison : %3</translation> <translation>Branches</translation> </message> <message> - <location/> <source>General information</source> - <translation>Informations générales</translation> + <translation type="obsolete">Informations générales</translation> </message> <message> - <location/> <source>Repository:</source> - <translation>Dépôt :</translation> + <translation type="obsolete">Dépôt :</translation> </message> <message> - <location/> <source>Remote branches</source> <translatorcomment>traduction de remote ici ?</translatorcomment> - <translation>Branches distantes</translation> + <translation type="obsolete">Branches distantes</translation> </message> <message> - <location filename="../../../src/plugins/git/branchdialog.cpp" line="+75"/> + <location filename="../../../src/plugins/git/branchdialog.cpp" line="+87"/> <source>Checkout</source> <translation>Checkout</translation> </message> <message> - <location line="+3"/> <source>Delete</source> - <translation>Supprimer</translation> + <translation type="obsolete">Supprimer</translation> </message> <message> - <location line="+20"/> <source>Unable to find the repository directory for '%1'.</source> - <translation>Impossible de trouver le dépôt de '%1'.</translation> + <translation type="obsolete">Impossible de trouver le dépôt de '%1'.</translation> </message> <message> - <location line="+69"/> + <location line="+3"/> + <source>Diff</source> + <translation>Diff</translation> + </message> + <message> + <location line="+3"/> + <source>Refresh</source> + <translation>Rafraîchir</translation> + </message> + <message> + <location line="+3"/> + <source>Delete...</source> + <translation>Supprimer…</translation> + </message> + <message> + <location line="+102"/> <source>Delete Branch</source> <translation>Supprimer la branche</translation> </message> @@ -6470,12 +7971,17 @@ Raison : %3</translation> <translation>Échec de création de la branche</translation> </message> <message> - <location line="+29"/> + <location line="+37"/> <source>Failed to stash</source> <translation>Échec du stash</translation> </message> <message> - <location line="+36"/> + <location line="+6"/> + <source>Checkout failed</source> + <translation>Échec du Checkout</translation> + </message> + <message> + <location line="+33"/> <source>Would you like to create a local branch '%1' tracking the remote branch '%2'?</source> <translation>Souhaitez-vous créer une branche locale '%1' pour la branche distante '%2' ?</translation> </message> @@ -6490,17 +7996,30 @@ Raison : %3</translation> <translatorcomment>tracking branch ?</translatorcomment> <translation>Échec de la création d'une branche de suivi</translation> </message> + <message> + <location filename="../../../src/plugins/git/branchdialog.ui"/> + <source>Remote Branches</source> + <translation>Branches distantes</translation> + </message> </context> <context> <name>Git::Internal::ChangeSelectionDialog</name> <message> - <location filename="../../../src/plugins/git/changeselectiondialog.cpp" line="+42"/> <source>Select a Git commit</source> - <translation>Sélectionner un commit Git</translation> + <translation type="obsolete">Sélectionner un commit Git</translation> </message> <message> - <location line="+7"/> <source>Select Git repository</source> + <translation type="obsolete">Sélectionner un dépôt Git</translation> + </message> + <message> + <location filename="../../../src/plugins/git/changeselectiondialog.cpp" line="+43"/> + <source>Select a Git Commit</source> + <translation>Sélectionner un commit Git</translation> + </message> + <message> + <location line="+22"/> + <source>Select Git Repository</source> <translation>Sélectionner un dépôt Git</translation> </message> <message> @@ -6517,18 +8036,17 @@ Raison : %3</translation> <context> <name>Git::Internal::GitClient</name> <message> - <location filename="../../../src/plugins/git/gitclient.cpp" line="+76"/> + <location filename="../../../src/plugins/git/gitclient.cpp" line="+75"/> <source>Note that the git plugin for QtCreator is not able to interact with the server so far. Thus, manual ssh-identification etc. will not work.</source> <translatorcomment>marchera ou marcheront ? Le etc laisse sous entendre qu'il y aurait d'autres choses qui ne marcheraient pas.</translatorcomment> <translation>Notez que le plugin git pour QtCreator n'est pas capable d'intéragir directement avec le serveur. Ainsi, l'identification ssh manuelle etc. ne marcheront pas.</translation> </message> <message> - <location line="+15"/> <source>Unable to determine the repository for %1.</source> - <translation>Impossible de déterminer le dépôt de %1.</translation> + <translation type="obsolete">Impossible de déterminer le dépôt de %1.</translation> </message> <message> - <location line="+5"/> + <location line="+48"/> <source>Unable to parse the file output.</source> <translation>Impossible d'analyser le fichier de sortie.</translation> </message> @@ -6537,41 +8055,61 @@ Raison : %3</translation> <source>Executing: %1 %2 </source> <extracomment>Executing: <executable> <arguments></extracomment> - <translation>Exécution de : %1 %2 -</translation> + <translation>Exécution de : %1 %2</translation> </message> <message> - <location line="+5"/> + <location line="+8"/> <source>Waiting for data...</source> <translation>En attente de données...</translation> </message> <message> - <location line="+101"/> + <location line="+74"/> <source>Git Diff</source> <translation>Git Diff</translation> </message> <message> - <location line="+46"/> + <location line="+49"/> <source>Git Diff %1</source> <translation>Git Diff %1</translation> </message> <message> - <location line="+29"/> + <location line="+17"/> + <source>Git Diff Branch %1</source> + <translation>Git diff branche %1</translation> + </message> + <message> + <location line="+35"/> + <source>Git Log</source> + <translation>Git Log</translation> + </message> + <message> + <location line="+23"/> <source>Git Log %1</source> <translation>Git Log %1</translation> </message> <message> - <location line="+14"/> + <location line="+20"/> + <source>Cannot describe '%1'.</source> + <translation>impossible de décrire '%1'.</translation> + </message> + <message> + <location line="+15"/> <source>Git Show %1</source> <translation>Git Show %1</translation> </message> <message> - <location line="+17"/> + <location line="+36"/> <source>Git Blame %1</source> <translation>Git blame %1</translation> </message> - <message numerus="yes"> - <location line="+58"/> + <message> + <location line="+29"/> + <source>Unable to checkout %1 of %2: %3</source> + <extracomment>Meaning of the arguments: %1: Branch, %2: Repository, %3: Error message</extracomment> + <translation>Impossible de réaliser le checkout %1 de %2 : %3</translation> + </message> + <message numerus="yes"> + <location line="+60"/> <source>Unable to add %n file(s) to %1: %2</source> <translation> <numerusform>Impossible d'ajouter %n fichier dans %1 : %2</numerusform> @@ -6579,38 +8117,152 @@ Raison : %3</translation> </translation> </message> <message numerus="yes"> - <location line="+33"/> + <location line="+22"/> + <source>Unable to remove %n file(s) from %1: %2</source> + <translation> + <numerusform>Impossible de supprimer %n fichier de %1 : %2</numerusform> + <numerusform>Impossible de supprimer %n fichiers de %1 : %2</numerusform> + </translation> + </message> + <message> + <location line="+30"/> + <source>Unable to reset %1: %2</source> + <translation>Impossible de réinitialiser %1 : %2</translation> + </message> + <message numerus="yes"> + <location line="+1"/> <source>Unable to reset %n file(s) in %1: %2</source> <translation> <numerusform>Impossible de réinitialiser %n fichier dans %1 : %2</numerusform> <numerusform>Impossible de réinitialiser %n fichiers dans %1 : %2</numerusform> </translation> </message> + <message> + <location line="+51"/> + <source>Unable to checkout %1 of %2 in %3: %4</source> + <extracomment>Meaning of the arguments: %1: revision, %2: files, %3: repository, %4: Error message</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>Unable to find parent revisions of %1 in %2: %3</source> + <extracomment>Failed to find parent revisions of a SHA1 for "annotate previous"</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Invalid revision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+90"/> + <source>Unable to retrieve branch of %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>Unable to retrieve top revision of %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+62"/> + <source>Unable to describe revision %1 in %2: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+45"/> + <source>Stash Description</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Description:</source> + <translation>Description :</translation> + </message> + <message> + <location line="+75"/> + <source>Unable to resolve stash message '%1' in %2</source> + <extracomment>Look-up of a stash via its descriptive message failed.</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>Unable to run a 'git branch' command in %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>Unable to run 'git show' in %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Unable to run 'git clean' in %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> + <source>There were warnings while applying %1 to %2: +%3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Unable apply patch %1 to %2: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+576"/> + <source>Unable to restore stash %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Unable to restore stash %1 to branch %2: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Unable to remove stashes of %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Unable to remove stash %1 of %2: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> + <source>Unable retrieve stash list of %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+97"/> + <source>Unable to determine git version: %1</source> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location line="+18"/> <source>Unable to checkout %n file(s) in %1: %2</source> - <translation> + <translation type="obsolete"> <numerusform>Impossible de réaliser le checkout de %n fichier dans %1 : %2</numerusform> <numerusform>Impossible de réaliser le checkout de %n fichiers dans %1 : %2</numerusform> </translation> </message> <message> - <location line="+16"/> + <location line="-863"/> <source>Unable stash in %1: %2</source> <translation>Impossible d'utiliser stash dans %1 : %2</translation> </message> <message> - <location line="+16"/> <source>Unable to run branch command: %1: %2</source> - <translation>Impossible d'exécuter la commande branch : %1 : %2</translation> + <translation type="obsolete">Impossible d'exécuter la commande branch : %1 : %2</translation> </message> <message> - <location line="+18"/> <source>Unable to run show: %1: %2</source> - <translation>Impossible d'exécuter show : %1 : %2</translation> + <translation type="obsolete">Impossible d'exécuter show : %1 : %2</translation> </message> <message> - <location line="+149"/> + <location line="+270"/> <source>Changes</source> <translation>Modifications</translation> </message> @@ -6620,17 +8272,22 @@ Raison : %3</translation> <translation>Vous avez modifié des fichiers. Souhaitez-vous mettre vos changements dans le stash ?</translation> </message> <message> - <location line="+51"/> + <location line="+55"/> <source>Unable to obtain the status: %1</source> <translation>Impossible d'obtenir le statut : %1</translation> </message> <message> - <location line="+31"/> + <location line="+32"/> <source>The repository %1 is not initialized yet.</source> <translation>Le dépôt %1 n'est pas encore initialisé.</translation> </message> + <message> + <location line="+18"/> + <source>You did not checkout a branch.</source> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location line="+106"/> + <location line="+100"/> <source>Committed %n file(s). </source> <translatorcomment>"commité" is common at the Oslo office, I don't know about France</translatorcomment> @@ -6668,7 +8325,17 @@ Raison : %3</translation> <translation>Le fichier n'a pas été modifié.</translation> </message> <message> - <location line="+23"/> + <location line="+36"/> + <source>The command 'git pull --rebase' failed, aborting rebase.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Git SVN Log</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> <source>There are no modified files.</source> <translation>Il n'y a aucun fichier modifié.</translation> </message> @@ -6676,12 +8343,12 @@ Raison : %3</translation> <context> <name>Git::Internal::GitPlugin</name> <message> - <location filename="../../../src/plugins/git/gitplugin.cpp" line="+233"/> + <location filename="../../../src/plugins/git/gitplugin.cpp" line="+313"/> <source>&Git</source> <translation>&Git</translation> </message> <message> - <location line="+9"/> + <location line="+6"/> <source>Diff Current File</source> <translation>Réaliser un diff du fichier courant</translation> </message> @@ -6696,22 +8363,19 @@ Raison : %3</translation> <translation>Alt+G,Alt+D</translation> </message> <message> - <location line="+4"/> <source>File Status</source> - <translation>Statut du fichier</translation> + <translation type="obsolete">Statut du fichier</translation> </message> <message> - <location line="+0"/> <source>Status Related to "%1"</source> - <translation>Statut lié à "%1"</translation> + <translation type="obsolete">Statut lié à "%1"</translation> </message> <message> - <location line="+2"/> <source>Alt+G,Alt+S</source> - <translation>Alt+G,Alt+S</translation> + <translation type="obsolete">Alt+G,Alt+S</translation> </message> <message> - <location line="+5"/> + <location line="+4"/> <source>Log File</source> <translation>Réaliser un log du fichier</translation> </message> @@ -6726,7 +8390,7 @@ Raison : %3</translation> <translation>Alt+G,Alt+L</translation> </message> <message> - <location line="+5"/> + <location line="+4"/> <source>Blame</source> <translatorcomment>Traduction autre ?</translatorcomment> <translation>Blâmer</translation> @@ -6737,12 +8401,12 @@ Raison : %3</translation> <translation>Blâmer pour "%1"</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Alt+G,Alt+B</source> <translation>Alt+G,Alt+B</translation> </message> <message> - <location line="+5"/> + <location line="+4"/> <source>Undo Changes</source> <translation>Annuler les changements</translation> </message> @@ -6752,12 +8416,12 @@ Raison : %3</translation> <translation>Annuler les changements de "%1"</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Alt+G,Alt+U</source> <translation>Alt+G,Alt+U</translation> </message> <message> - <location line="+5"/> + <location line="+4"/> <source>Stage File for Commit</source> <translation>Ajouter le fichier au staging pour commit</translation> </message> @@ -6772,7 +8436,7 @@ Raison : %3</translation> <translation>Alt+G,Alt+A</translation> </message> <message> - <location line="+5"/> + <location line="+4"/> <source>Unstage File from Commit</source> <translation>Retirer le fichier du staging pour commit</translation> </message> @@ -6782,7 +8446,7 @@ Raison : %3</translation> <translation>Retirer %1 du staging pour commit</translation> </message> <message> - <location line="+8"/> + <location line="+7"/> <source>Diff Current Project</source> <translation>Réaliser un diff du projet courant</translation> </message> @@ -6792,17 +8456,15 @@ Raison : %3</translation> <translation>Réaliser un diff du projet "%1"</translation> </message> <message> - <location line="+7"/> <source>Project Status</source> - <translation>Statut du projet</translation> + <translation type="obsolete">Statut du projet</translation> </message> <message> - <location line="+0"/> <source>Status Project "%1"</source> - <translation>Statut du projet "%1"</translation> + <translation type="obsolete">Statut du projet "%1"</translation> </message> <message> - <location line="+6"/> + <location line="+8"/> <source>Log Project</source> <translation>Réaliser un log du projet</translation> </message> @@ -6812,44 +8474,108 @@ Raison : %3</translation> <translation>Réaliser un log du projet "%1"</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Alt+G,Alt+K</source> <translation>Alt+G,Alt+K</translation> </message> <message> - <location line="+5"/> <source>Undo Project Changes</source> - <translation>Annuler les changements sur le projet</translation> + <translation type="obsolete">Annuler les changements sur le projet</translation> </message> <message> - <location line="+8"/> + <location line="+58"/> <source>Stash</source> <translatorcomment>Trad ?</translatorcomment> <translation>Mettre dans le stash</translation> </message> <message> - <location line="+1"/> + <location line="-3"/> <source>Saves the current state of your work.</source> <translation>Sauvegarde l'état actuel de votre travail.</translation> </message> + <message> + <location line="-51"/> + <source>Clean Project...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Clean Project "%1"...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Diff Repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Repository Status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Log Repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Apply Patch</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Apply "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Apply Patch...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Undo Repository Changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Create Repository...</source> + <translation type="unfinished"></translation> + </message> <message> <location line="+6"/> + <source>Clean Repository...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Stash Snapshot...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Saves the current state of your work and resets the repository.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> <source>Pull</source> <translation>Pull</translation> </message> <message> - <location line="+6"/> + <location line="+4"/> <source>Stash Pop</source> <translatorcomment>stash encore ?</translatorcomment> <translation>Stash Pop</translation> </message> <message> - <location line="+1"/> + <location line="+2"/> <source>Restores changes saved to the stash list using "Stash".</source> <translation>Restaurer les changements sauvés dans la liste de stash à l'aide de "Stash".</translation> </message> <message> - <location line="+6"/> + <location line="+3"/> <source>Commit...</source> <translation>Commit...</translation> </message> @@ -6859,29 +8585,84 @@ Raison : %3</translation> <translation>Alt+G,Alt+C</translation> </message> <message> - <location line="+5"/> + <location line="+3"/> <source>Push</source> <translatorcomment>Faire un push ou push tout court ?</translatorcomment> <translation>Push</translation> </message> <message> - <location line="+8"/> + <location line="+6"/> <source>Branches...</source> <translation>Branches...</translation> </message> <message> - <location line="+6"/> + <location line="+4"/> + <source>Stashes...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+118"/> + <source>Would you like to revert all pending changes to the repository +%1?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+224"/> + <source>Unable to retrieve file list</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Repository clean</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>The repository is clean.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+63"/> + <source>Patches (*.patch *.diff)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Choose patch</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Patch %1 successfully applied to %2</source> + <translation type="unfinished"></translation> + </message> + <message> <source>List Stashes</source> <translatorcomment>stash ?</translatorcomment> - <translation>Lister les stashes</translation> + <translation type="obsolete">Lister les stashes</translation> </message> <message> - <location line="+6"/> + <location line="-420"/> <source>Show Commit...</source> <translation>Afficher le commit...</translation> </message> <message> - <location line="+9"/> + <location line="+8"/> + <source>Subversion</source> + <translation>Subversion</translation> + </message> + <message> + <location line="+4"/> + <source>Log</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Fetch</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> <source>Commit</source> <translation>Faire un commit</translation> </message> @@ -6901,27 +8682,25 @@ Raison : %3</translation> <translation>&Refaire</translation> </message> <message> - <location line="+65"/> <source>Could not find working directory</source> - <translation>Impossible de trouver le répertoire de travail</translation> + <translation type="obsolete">Impossible de trouver le répertoire de travail</translation> </message> <message> - <location line="+61"/> + <location line="+74"/> <source>Revert</source> <translation>Rétablir</translation> </message> <message> - <location line="+1"/> <source>Would you like to revert all pending changes to the project?</source> - <translation>Souhaitez-vous rétablir toutes les modifications en attente sur le projet ?</translation> + <translation type="obsolete">Souhaitez-vous rétablir toutes les modifications en attente sur le projet ?</translation> </message> <message> - <location line="+29"/> + <location line="+27"/> <source>Another submit is currently being executed.</source> <translation>Un autre submit est actuellement exécuté.</translation> </message> <message> - <location line="+30"/> + <location line="+27"/> <source>Cannot create temporary file: %1</source> <translation>Impossible de créer un fichier temporaire : %1</translation> </message> @@ -6944,7 +8723,7 @@ Raison : %3</translation> <context> <name>Git::Internal::GitSettings</name> <message> - <location filename="../../../src/plugins/git/gitsettings.cpp" line="+110"/> + <location filename="../../../src/plugins/git/gitsettings.cpp" line="+132"/> <source>The binary '%1' could not be located in the path '%2'</source> <translation>Le binaire '%1' n'a pas pu être trouvé dans le chemin '%2'</translation> </message> @@ -7003,7 +8782,7 @@ Raison : %3</translation> <context> <name>Git::Internal::LocalBranchModel</name> <message> - <location filename="../../../src/plugins/git/branchmodel.cpp" line="+181"/> + <location filename="../../../src/plugins/git/branchmodel.cpp" line="+197"/> <source><New branch></source> <translation><Nouvelle branche></translation> </message> @@ -7017,19 +8796,17 @@ Raison : %3</translation> <context> <name>Git::Internal::SettingsPage</name> <message> - <location filename="../../../src/plugins/git/settingspage.ui"/> <source>Environment variables</source> - <translation>Variables d'environnement</translation> + <translation type="obsolete">Variables d'environnement</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/git/settingspage.ui"/> <source>PATH:</source> <translation>PATH :</translation> </message> <message> - <location/> <source>From system</source> - <translation>Copier depuis le système</translation> + <translation type="obsolete">Copier depuis le système</translation> </message> <message> <location/> @@ -7052,22 +8829,20 @@ Raison : %3</translation> <translation>Notez qu'un grand nombre de commit pourrait prendre un certain temps.</translation> </message> <message> - <location/> <source>Timeout (seconds):</source> - <translation>Timeout (secondes) : </translation> + <translation type="obsolete">Timeout (secondes) : </translation> </message> <message> - <location/> <source>Prompt to submit</source> - <translation>Invite lors du submit</translation> + <translation type="obsolete">Invite lors du submit</translation> </message> <message> - <location filename="../../../src/plugins/git/settingspage.cpp" line="+90"/> + <location filename="../../../src/plugins/git/settingspage.cpp" line="+112"/> <source>Git</source> <translation>Git</translation> </message> <message> - <location line="+29"/> + <location line="+21"/> <source>Git Settings</source> <translation>Paramètres de git</translation> </message> @@ -7076,29 +8851,74 @@ Raison : %3</translation> <source>Omit date from annotation output</source> <translation>Ne pas horodater l'annotation de sortie</translation> </message> -</context> -<context> - <name>GitCommand</name> <message> - <location filename="../../../src/plugins/git/gitcommand.cpp" line="+57"/> - <source> -'%1' failed (exit code %2). -</source> - <translation> -'%1' échoué (code de retour %2). -</translation> + <location/> + <source>Environment Variables</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source> -'%1' completed (exit code %2). -</source> - <translation> -'%1' terminé (code de retour %2). -</translation> + <location/> + <source>From System</source> + <translation type="unfinished"></translation> </message> -</context> -<context> + <message> + <location/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Timeout:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Prompt on submit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Ignore whitespace changes in annotation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Use "patience diff" algorithm</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Pull with rebase</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>GitCommand</name> + <message> + <location filename="../../../src/plugins/git/gitcommand.cpp" line="+58"/> + <source> +'%1' failed (exit code %2). +</source> + <translation> +'%1' échoué (code de retour %2). +</translation> + </message> + <message> + <location line="+1"/> + <source> +'%1' completed (exit code %2). +</source> + <translation> +'%1' terminé (code de retour %2). +</translation> + </message> +</context> +<context> <name>HelloWorld::Internal::HelloWorldPlugin</name> <message> <location filename="../../../src/plugins/helloworld/helloworldplugin.cpp" line="+85"/> @@ -7147,95 +8967,82 @@ Raison : %3</translation> <context> <name>Help::Internal::CentralWidget</name> <message> - <location filename="../../../src/plugins/help/centralwidget.cpp" line="+97"/> <source>Add new page</source> - <translation>Ajouter une nouvelle page</translation> + <translation type="obsolete">Ajouter une nouvelle page</translation> </message> <message> - <location line="+238"/> + <location filename="../../../src/plugins/help/centralwidget.cpp" line="+238"/> <source>Print Document</source> <translation>Imprimer le document</translation> </message> <message> - <location line="+120"/> - <location line="+2"/> <source>unknown</source> - <translation>inconnue</translation> + <translation type="obsolete">inconnue</translation> </message> <message> - <location line="+87"/> <source>Add New Page</source> - <translation>Ajouter une nouvelle page</translation> + <translation type="obsolete">Ajouter une nouvelle page</translation> </message> <message> - <location line="+3"/> <source>Close This Page</source> - <translation>Fermer cette page</translation> + <translation type="obsolete">Fermer cette page</translation> </message> <message> - <location line="+3"/> <source>Close Other Pages</source> - <translation>Fermer les autres pages</translation> + <translation type="obsolete">Fermer les autres pages</translation> </message> <message> - <location line="+5"/> <source>Add Bookmark for this Page...</source> - <translation>Ajouter un signet pour cette page...</translation> + <translation type="obsolete">Ajouter un signet pour cette page...</translation> </message> </context> <context> <name>Help::Internal::DocSettingsPage</name> <message> - <location filename="../../../src/plugins/help/docsettingspage.cpp" line="+51"/> - <location line="+84"/> + <location filename="../../../src/plugins/help/docsettingspage.cpp" line="+55"/> <source>Documentation</source> <translation>Documentation</translation> </message> <message> - <location line="-73"/> <source>Help</source> - <translation>Aide</translation> + <translation type="obsolete">Aide</translation> </message> <message> - <location line="+23"/> - <location line="+10"/> + <location line="+45"/> <source>Add Documentation</source> <translation>Ajouter de la documentation</translation> </message> <message> - <location line="-9"/> + <location line="+0"/> <source>Qt Help Files (*.qch)</source> <translation>Fichiers d'aide Qt (*.qch)</translation> </message> <message> - <location line="+10"/> <source>The file %1 is not a valid Qt Help file!</source> - <translation>Le fichier %1 n'est pas un fichier d'aide Qt valide !</translation> + <translation type="obsolete">Le fichier %1 n'est pas un fichier d'aide Qt valide !</translation> </message> <message> - <location line="+40"/> <source>Cannot unregister documentation file %1!</source> <translatorcomment>trad unregister ?</translatorcomment> - <translation>Impossible de désinscrire le fichier de documentation %1 !</translation> + <translation type="obsolete">Impossible de désinscrire le fichier de documentation %1 !</translation> </message> </context> <context> <name>Help::Internal::FilterSettingsPage</name> <message> - <location filename="../../../src/plugins/help/filtersettingspage.cpp" line="+51"/> + <location filename="../../../src/plugins/help/filtersettingspage.cpp" line="+56"/> <source>Filters</source> <translation>Filtres</translation> </message> <message> - <location line="+10"/> <source>Help</source> - <translation>Aide</translation> + <translation type="obsolete">Aide</translation> </message> </context> <context> <name>Help::Internal::HelpIndexFilter</name> <message> - <location filename="../../../src/plugins/help/helpindexfilter.cpp" line="+72"/> + <location filename="../../../src/plugins/help/helpindexfilter.cpp" line="+226"/> <source>Help index</source> <translation>Index de l'aide</translation> </message> @@ -7243,7 +9050,7 @@ Raison : %3</translation> <context> <name>Help::Internal::HelpMode</name> <message> - <location filename="../../../src/plugins/help/helpmode.cpp" line="+46"/> + <location filename="../../../src/plugins/help/helpmode.cpp" line="+44"/> <source>Help</source> <translation>Aide</translation> </message> @@ -7251,80 +9058,78 @@ Raison : %3</translation> <context> <name>Help::Internal::HelpPlugin</name> <message> - <location filename="../../../src/plugins/help/helpplugin.cpp" line="+209"/> - <location line="+46"/> + <location filename="../../../src/plugins/help/helpplugin.cpp" line="+200"/> + <location line="+199"/> <source>Contents</source> <translation>Contenu</translation> </message> <message> - <location line="-44"/> - <location line="+38"/> + <location line="-194"/> + <location line="+176"/> <source>Index</source> <translation>Index</translation> </message> <message> - <location line="-36"/> - <location line="+48"/> + <location line="+32"/> <source>Search</source> <translation>Rechercher</translation> </message> <message> - <location line="-45"/> + <location line="+16"/> <source>Bookmarks</source> <translation>Signets</translation> </message> <message> - <location line="+8"/> + <location line="-261"/> <source>Home</source> <translation>Accueil</translation> </message> <message> - <location line="+231"/> + <location line="+335"/> <source>Previous</source> <translation>Précédent</translation> </message> <message> - <location line="+2"/> + <location line="-2"/> <source>Next</source> <translation>Suivant</translation> </message> <message> - <location line="-214"/> + <location line="-308"/> <source>Add Bookmark</source> <translation>Ajouter un signet</translation> </message> <message> - <location line="-13"/> + <location line="-18"/> <source>Previous Page</source> <translation>Page précédente</translation> </message> <message> - <location line="+6"/> + <location line="+8"/> <source>Next Page</source> <translation>Page suivante</translation> </message> <message> - <location line="+31"/> + <location line="+27"/> <source>Context Help</source> <translation>Aide contextuelle</translation> </message> <message> - <location line="+58"/> + <location line="+181"/> <source>Activate Index in Help mode</source> <translation>Activer l'index en mode aide</translation> </message> <message> - <location line="+8"/> + <location line="+14"/> <source>Activate Contents in Help mode</source> <translation>Activer le contenu en mode aide</translation> </message> <message> - <location line="+8"/> <source>Activate Search in Help mode</source> - <translation>Activer la recherche en mode aide</translation> + <translation type="obsolete">Activer la recherche en mode aide</translation> </message> <message> - <location line="+74"/> + <location line="-170"/> <source>Increase Font Size</source> <translation>Augmenter la taille de la police</translation> </message> @@ -7349,28 +9154,62 @@ Raison : %3</translation> <translation>Réinitialiser la taille de la police</translation> </message> <message> - <location line="+3"/> + <location line="+4"/> <source>Ctrl+0</source> <translation>Ctrl+0</translation> </message> <message> - <location line="+20"/> + <location line="+25"/> + <source>Alt+Tab</source> + <translation>Alt+Tab</translation> + </message> + <message> + <location line="+1"/> + <source>Alt+Shift+Tab</source> + <translation>Alt+Shift+Tab</translation> + </message> + <message> + <location line="+2"/> + <source>Ctrl+Tab</source> + <translation>Ctrl+Tab</translation> + </message> + <message> + <location line="+1"/> + <source>Ctrl+Shift+Tab</source> + <translation>Ctrl+Shift+Tab</translation> + </message> + <message> + <location line="+162"/> + <source>Open Pages</source> + <translation>Pages ouvertes</translation> + </message> + <message> + <location line="+4"/> + <source>Activate Open Pages in Help mode</source> + <translation>Activer les pages ouvertes en mode aide</translation> + </message> + <message> + <location line="+49"/> <source>Go to Help Mode</source> <translation>Passer au mode Aide</translation> </message> <message> - <location line="+174"/> - <location line="+164"/> + <location line="+295"/> + <source>Close current Page</source> + <translation>Fermer la page courante</translation> + </message> + <message> + <location line="-308"/> <source>Unfiltered</source> <translation>Sans filtre</translation> </message> <message> - <location line="+12"/> + <location line="+237"/> <source><html><head><title>No Documentation</title></head><body><br/><center><b>%1</b><br/>No documentation available.</center></body></html></source> <translation><html><head><title>Aucune documentation</title></head><body><br/><center><b>%1</b><br/>Aucune documentation disponible.</center></body></html></translation> </message> <message> - <location line="+54"/> + <location line="+60"/> <source>Filtered by:</source> <translatorcomment>better than "filtré par" in the context</translatorcomment> <translation>Filtre :</translation> @@ -7379,88 +9218,122 @@ Raison : %3</translation> <context> <name>Help::Internal::SearchWidget</name> <message> - <location filename="../../../src/plugins/help/searchwidget.cpp" line="+169"/> <source>&Copy</source> - <translation>Co&pier</translation> + <translation type="obsolete">Co&pier</translation> </message> <message> - <location line="+4"/> <source>Copy &Link Location</source> - <translation>Copier l'adresse du &lien</translation> + <translation type="obsolete">Copier l'adresse du &lien</translation> </message> <message> - <location line="+4"/> <source>Open Link in New Tab</source> - <translation>Ouvrir le lien dans un nouvel onglet</translation> + <translation type="obsolete">Ouvrir le lien dans un nouvel onglet</translation> </message> <message> - <location line="+8"/> <source>Select All</source> - <translation>Tout sélectionner</translation> + <translation type="obsolete">Tout sélectionner</translation> + </message> + <message> + <location filename="../../../src/plugins/help/searchwidget.cpp" line="+155"/> + <source>Indexing</source> + <translation>Indexation</translation> + </message> + <message> + <location line="+2"/> + <source>Indexing Documentation...</source> + <translation>Indexation de la documentation…</translation> + </message> + <message> + <location line="+52"/> + <source>Open Link</source> + <translation>Ouvrir le lien</translation> + </message> + <message> + <location line="+1"/> + <source>Open Link as New Page</source> + <translation>Ouvrir le lien en tant que nouvelle page</translation> + </message> + <message> + <location line="+1"/> + <source>Copy Link</source> + <translation>Copier le lien</translation> + </message> + <message> + <location line="+2"/> + <source>Copy</source> + <translation>Copier</translation> + </message> + <message> + <location line="+2"/> + <source>Reload</source> + <translation>Recharger</translation> </message> </context> <context> <name>HelpViewer</name> <message> - <location filename="../../../src/shared/help/helpviewer.cpp" line="+247"/> <source>Open Link in New Tab</source> - <translation>Ouvrir le lien dans un nouvel onglet</translation> + <translation type="obsolete">Ouvrir le lien dans un nouvel onglet</translation> </message> <message> - <location line="+166"/> + <location filename="../../../src/plugins/help/helpviewer.cpp" line="+51"/> + <source><title>about:blank</title></source> + <translation><title>À propos : vide</title></translation> + </message> + <message> + <location line="+3"/> <source><title>Error 404...</title><div align="center"><br><br><h1>The page could not be found</h1><br><h3>'%1'</h3></div></source> <translation><title>Erreur 404...</title><div align="center"><br><br><h1>La page est introuvable</h1><br><h3>'%1'</h3></div></translation> </message> <message> - <location line="+57"/> <source>Help</source> - <translation>Aide</translation> + <translation type="obsolete">Aide</translation> </message> <message> - <location line="+1"/> <source>Unable to launch external application. </source> - <translation>Impossible de lancer l'application externe. + <translation type="obsolete">Impossible de lancer l'application externe. </translation> </message> <message> - <location line="+0"/> <source>OK</source> - <translation>OK</translation> + <translation type="obsolete">OK</translation> </message> <message> - <location line="+63"/> <source>Copy &Link Location</source> - <translation>&Copier l'adresse du lien</translation> + <translation type="obsolete">&Copier l'adresse du lien</translation> </message> <message> - <location line="+3"/> <source>Open Link in New Tab Ctrl+LMB</source> - <translation>Ouvrir le lien dans un nouvel onglet Ctrl+LMB</translation> + <translation type="obsolete">Ouvrir le lien dans un nouvel onglet Ctrl+LMB</translation> </message> </context> <context> <name>IndexWindow</name> <message> - <location filename="../../../src/shared/help/indexwindow.cpp" line="+52"/> + <location filename="../../../src/shared/help/indexwindow.cpp" line="+67"/> <source>&Look for:</source> <translation>&Rechercher :</translation> </message> <message> - <location line="+74"/> + <location line="+77"/> <source>Open Link</source> <translation>Ouvrir le lien</translation> </message> <message> <location line="+1"/> + <source>Open Link as New Page</source> + <translation>Ouvrir le lien en tant que nouvelle page</translation> + </message> + <message> <source>Open Link in New Tab</source> - <translation>Ouvrir le lien dans un nouvel onglet</translation> + <translation type="obsolete">Ouvrir le lien dans un nouvel onglet</translation> </message> </context> <context> <name>InputPane</name> <message> - <location filename="../../../src/plugins/debugger/debuggeroutputwindow.cpp" line="+76"/> + <location filename="../../../src/plugins/debugger/debuggeroutputwindow.cpp" line="+86"/> <source>Type Ctrl-<Return> to execute a line.</source> <translation>Taper Ctrl-<Retour> pour exécuter une ligne.</translation> </message> @@ -7473,7 +9346,7 @@ Raison : %3</translation> <translation>Filtres</translation> </message> <message> - <location line="+1"/> + <location line="+2"/> <source>Locator</source> <translation>Localisateur</translation> </message> @@ -7481,123 +9354,265 @@ Raison : %3</translation> <context> <name>MainWindow</name> <message> - <location filename="../../../src/tools/qdebugger/mainwindow.cpp" line="+155"/> <source>Open file</source> - <translation>Ouvrir le fichier</translation> + <translation type="obsolete">Ouvrir le fichier</translation> </message> <message> - <location line="+1"/> - <source>Ctrl+O</source> - <translation>Ctrl+O</translation> + <location filename="../../../src/tools/qml/standalone/mainwindow.cpp" line="+91"/> + <source>Bauhaus</source> + <comment>MainWindowClass</comment> + <translation>Bauhaus</translation> </message> <message> - <location line="+2"/> - <source>Quit</source> - <translation>Quitter</translation> + <location line="+48"/> + <source>&File</source> + <translation>&Fichier</translation> + </message> + <message> + <location line="+3"/> + <source>&New...</source> + <translation>&Nouveau...</translation> </message> <message> <location line="+1"/> - <source>Ctrl+Q</source> - <translation>Ctrl+Q</translation> + <source>Ctrl+N</source> + <translation>Ctrl+N</translation> </message> <message> - <location line="+3"/> - <source>Run to main()</source> - <translation>Exécuter jusqu'à main()</translation> + <location line="+4"/> + <source>&Open...</source> + <translation>&Ouvrir...</translation> </message> <message> <location line="+1"/> - <source>Ctrl+F5</source> - <translation>Ctrl+F5</translation> + <source>Ctrl+O</source> + <translation>Ctrl+O</translation> </message> <message> - <location line="+11"/> - <source>F5</source> - <translation>F5</translation> + <location line="+4"/> + <source>Recent Files</source> + <translation>Fichiers récents</translation> + </message> + <message> + <location line="+6"/> + <source>&Save</source> + <translation>&Enregistrer</translation> </message> <message> <location line="+1"/> - <source>Shift+F5</source> - <translation>Shift+F5</translation> + <source>Ctrl+S</source> + <translation>Ctrl+S</translation> </message> <message> <location line="+5"/> - <source>F6</source> - <translation>F6</translation> + <source>Save &As...</source> + <translation>Enregistrer &sous...</translation> </message> <message> - <location line="+1"/> - <source>F7</source> - <translation>F7</translation> + <location line="+7"/> + <source>&Preview</source> + <translation>A&perçu</translation> </message> <message> <location line="+1"/> - <source>Shift+F6</source> - <translation>Shift+F6</translation> + <source>Ctrl+R</source> + <translation>Ctrl+R</translation> </message> <message> - <location line="+1"/> - <source>Shift+F9</source> - <translation>Shift+F9</translation> + <location line="+8"/> + <source>&Preview with Debug</source> + <translation>Aperçu avec &débogage</translation> </message> <message> <location line="+1"/> - <source>Shift+F7</source> - <translation>Shift+F7</translation> + <source>Ctrl+D</source> + <translation>Ctrl+D</translation> </message> <message> - <location line="+1"/> - <source>Shift+F8</source> - <translation>Shift+F8</translation> + <location line="+11"/> + <source>&Quit</source> + <translation>&Quitter</translation> + </message> + <message> + <location line="+6"/> + <source>&Edit</source> + <translation>&Édition</translation> + </message> + <message> + <location line="+5"/> + <source>Ctrl+Z</source> + <translation>Ctrl+Z</translation> + </message> + <message> + <location line="+6"/> + <source>Ctrl+Y</source> + <translation>Ctrl+Y</translation> </message> <message> <location line="+2"/> - <source>F8</source> - <translation>F8</translation> + <source>Ctrl+Shift+Z</source> + <translation>Ctrl+Shift+Z</translation> </message> <message> - <location line="+1"/> - <source>ALT+D,ALT+W</source> - <translation>ALT+D,ALT+W</translation> + <location line="+6"/> + <source>&Copy</source> + <translation>Cop&ier</translation> </message> <message> - <location line="+8"/> - <source>Files</source> - <translation>Fichiers</translation> + <location line="+6"/> + <source>&Cut</source> + <translation>Co&uper</translation> </message> <message> - <location line="+19"/> - <location filename="../../../src/tools/texteditor/mainwindow.cpp" line="+121"/> - <source>File</source> - <translation>Fichier</translation> + <location line="+6"/> + <source>&Paste</source> + <translation>C&oller</translation> </message> <message> - <location line="+7"/> - <source>Debug</source> - <translation>Déboguer</translation> + <location line="+6"/> + <source>&Delete</source> + <translation>&Supprimer</translation> </message> <message> - <location line="+105"/> - <source>Not a runnable project</source> - <translation>Pas un projet exécutable</translation> + <location line="+2"/> + <source>Del</source> + <translation>Suppr</translation> </message> <message> - <location line="+1"/> - <source>The current startup project can not be run.</source> - <translation>Le projet de démarrage actuel ne peut pas être exéctué.</translation> + <location line="+0"/> + <source>Backspace</source> + <translation>Backspace</translation> </message> <message> - <location line="+146"/> - <source>Open File</source> - <translation>Ouvrir un fichier</translation> + <location line="+5"/> + <source>&View</source> + <translation>&Vue</translation> </message> <message> - <location line="+58"/> - <source>Cannot find special data dumpers</source> - <translation>Impossible de trouver les collecteurs de données</translation> + <location line="+59"/> + <source>&Help</source> + <translation>&Aide</translation> + </message> + <message> + <location line="+4"/> + <source>&About...</source> + <translation>À p&ropos…</translation> + </message> + <message> + <location line="+51"/> + <source>Properties</source> + <translation>Propriétés</translation> + </message> + <message> + <location line="+94"/> + <source>Could not open file <%1></source> + <translation>Impossible d'ouvrir le fichier <%1></translation> + </message> + <message> + <location line="+107"/> + <source>Qml Errors:</source> + <translation>Erreurs QML :</translation> + </message> + <message> + <location line="+3"/> + <source> +%1 %2:%3 - %4</source> + <translation> +%1 %2:%3 - %4</translation> + </message> + <message> + <location line="+2"/> + <source> +%1:%2 - %3</source> + <translation> +%1:%2 - %3</translation> + </message> + <message> + <source>Quit</source> + <translation type="obsolete">Quitter</translation> + </message> + <message> + <location line="-369"/> + <source>Ctrl+Q</source> + <translation>Ctrl+Q</translation> + </message> + <message> + <source>Run to main()</source> + <translation type="obsolete">Exécuter jusqu'à main()</translation> + </message> + <message> + <source>Ctrl+F5</source> + <translation type="obsolete">Ctrl+F5</translation> + </message> + <message> + <source>F5</source> + <translation type="obsolete">F5</translation> + </message> + <message> + <source>Shift+F5</source> + <translation type="obsolete">Shift+F5</translation> + </message> + <message> + <source>F6</source> + <translation type="obsolete">F6</translation> + </message> + <message> + <source>F7</source> + <translation type="obsolete">F7</translation> + </message> + <message> + <source>Shift+F6</source> + <translation type="obsolete">Shift+F6</translation> + </message> + <message> + <source>Shift+F9</source> + <translation type="obsolete">Shift+F9</translation> + </message> + <message> + <source>Shift+F7</source> + <translation type="obsolete">Shift+F7</translation> + </message> + <message> + <source>Shift+F8</source> + <translation type="obsolete">Shift+F8</translation> + </message> + <message> + <source>F8</source> + <translation type="obsolete">F8</translation> + </message> + <message> + <source>ALT+D,ALT+W</source> + <translation type="obsolete">ALT+D,ALT+W</translation> + </message> + <message> + <source>Files</source> + <translation type="obsolete">Fichiers</translation> + </message> + <message> + <source>File</source> + <translation type="obsolete">Fichier</translation> + </message> + <message> + <source>Debug</source> + <translation type="obsolete">Déboguer</translation> + </message> + <message> + <source>Not a runnable project</source> + <translation type="obsolete">Pas un projet exécutable</translation> + </message> + <message> + <source>The current startup project can not be run.</source> + <translation type="obsolete">Le projet de démarrage actuel ne peut pas être exéctué.</translation> + </message> + <message> + <source>Open File</source> + <translation type="obsolete">Ouvrir un fichier</translation> + </message> + <message> + <source>Cannot find special data dumpers</source> + <translation type="obsolete">Impossible de trouver les collecteurs de données</translation> </message> <message> - <location line="+1"/> <source>The debugged binary does not contain information needed for nice display of Qt data types. Make sure you use something like @@ -7605,7 +9620,7 @@ Make sure you use something like SOURCES *= .../ide/main/bin/gdbmacros/gdbmacros.cpp in your .pro file.</source> - <translation>Le fichier binaire débogué ne contient pas les informations nécessaires pour l'affichage correct des types de données Qt. + <translation type="obsolete">Le fichier binaire débogué ne contient pas les informations nécessaires pour l'affichage correct des types de données Qt. Assurez-vous que vous utilisez quelque chose comme @@ -7614,9 +9629,8 @@ SOURCES *= .../ide/main/bin/gdbmacros/gdbmacros.cpp dans votre fichier .pro.</translation> </message> <message> - <location filename="../../../src/tools/texteditor/mainwindow.cpp" line="+62"/> <source>Open Executable File</source> - <translation>Ouvrir un fichier exécutable</translation> + <translation type="obsolete">Ouvrir un fichier exécutable</translation> </message> </context> <context> @@ -7650,14 +9664,12 @@ dans votre fichier .pro.</translation> <translation>Noms</translation> </message> <message> - <location/> <source>Filter:</source> - <translation>Filtre :</translation> + <translation type="obsolete">Filtre :</translation> </message> <message> - <location/> <source>Clear</source> - <translation>Effacer</translation> + <translation type="obsolete">Effacer</translation> </message> </context> <context> @@ -7676,34 +9688,28 @@ dans votre fichier .pro.</translation> <context> <name>Perforce::Internal</name> <message> - <location filename="../../../src/plugins/perforce/perforcesettings.cpp" line="+100"/> <source>No executable specified</source> - <translation>Aucun exécutable spécifié</translation> + <translation type="obsolete">Aucun exécutable spécifié</translation> </message> <message> - <location line="+11"/> <source>Unable to launch "%1": %2</source> - <translation>Impossible de lancer "%1" : %2</translation> + <translation type="obsolete">Impossible de lancer "%1" : %2</translation> </message> <message> - <location line="+8"/> <source>"%1" timed out after %2ms.</source> - <translation>"%1" arrivé à échéance après %2ms.</translation> + <translation type="obsolete">"%1" arrivé à échéance après %2ms.</translation> </message> <message> - <location line="+4"/> <source>"%1" crashed.</source> - <translation>"%1" a crashé.</translation> + <translation type="obsolete">"%1" a crashé.</translation> </message> <message> - <location line="+5"/> <source>"%1" terminated with exit code %2: %3</source> - <translation>"%1" terminé avec le code %2 : %3</translation> + <translation type="obsolete">"%1" terminé avec le code %2 : %3</translation> </message> <message> - <location line="+8"/> <source>The client does not seem to contain any mapped files.</source> - <translation>Le client ne semble contenir aucun fichier correspondant.</translation> + <translation type="obsolete">Le client ne semble contenir aucun fichier correspondant.</translation> </message> </context> <context> @@ -7747,12 +9753,12 @@ dans votre fichier .pro.</translation> <context> <name>Perforce::Internal::PerforcePlugin</name> <message> - <location filename="../../../src/plugins/perforce/perforceplugin.cpp" line="+243"/> + <location filename="../../../src/plugins/perforce/perforceplugin.cpp" line="+266"/> <source>&Perforce</source> <translation>&Perforce</translation> </message> <message> - <location line="+17"/> + <location line="+40"/> <source>Edit</source> <translation>Éditer</translation> </message> @@ -7772,7 +9778,7 @@ dans votre fichier .pro.</translation> <translation>Éditer le fichier</translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <source>Add</source> <translation>Ajouter</translation> </message> @@ -7792,22 +9798,20 @@ dans votre fichier .pro.</translation> <translation>Ajouter le fichier</translation> </message> <message> - <location line="+4"/> <source>Delete</source> - <translation>Supprimer</translation> + <translation type="obsolete">Supprimer</translation> </message> <message> - <location line="+0"/> <source>Delete "%1"</source> - <translation>Supprimer "%1"</translation> + <translation type="obsolete">Supprimer "%1"</translation> </message> <message> - <location line="+3"/> + <location line="+8"/> <source>Delete File</source> <translation>Supprimer le fichier</translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <source>Revert</source> <translation>Rétablir</translation> </message> @@ -7827,7 +9831,7 @@ dans votre fichier .pro.</translation> <translation>Rétablir le fichier</translation> </message> <message> - <location line="+9"/> + <location line="-57"/> <location line="+3"/> <source>Diff Current File</source> <translation>Faire un diff du fichier courant</translation> @@ -7838,7 +9842,7 @@ dans votre fichier .pro.</translation> <translation>Faire un diff de "%1"</translation> </message> <message> - <location line="+7"/> + <location line="+64"/> <source>Diff Current Project/Session</source> <translation>Diff du projet courant/de la session courante</translation> </message> @@ -7853,12 +9857,12 @@ dans votre fichier .pro.</translation> <translation>Alt+P,Alt+D</translation> </message> <message> - <location line="+5"/> + <location line="+46"/> <source>Diff Opened Files</source> <translation>Diff des fichiers ouverts</translation> </message> <message> - <location line="+10"/> + <location line="+6"/> <source>Opened</source> <translation>Ouvert</translation> </message> @@ -7868,37 +9872,36 @@ dans votre fichier .pro.</translation> <translation>Alt+P,Alt+O</translation> </message> <message> - <location line="+4"/> + <location line="-41"/> <source>Submit Project</source> <translation>Soumettre le projet</translation> </message> <message> - <location line="+2"/> + <location line="+3"/> <source>Alt+P,Alt+S</source> <translation>Alt+P,Alt+S</translation> </message> <message> - <location line="+4"/> + <location line="+49"/> <source>Pending Changes...</source> <translation>Changements en attente...</translation> </message> <message> - <location line="+5"/> <source>Update Current Project/Session</source> - <translation>Mettre à jour le projet ou la session courante</translation> + <translation type="obsolete">Mettre à jour le projet ou la session courante</translation> </message> <message> - <location line="+1"/> + <location line="-43"/> <source>Update Project "%1"</source> <translation>Mettre à jour le projet "%1"</translation> </message> <message> - <location line="+12"/> + <location line="+57"/> <source>Describe...</source> <translation>Décrire...</translation> </message> <message> - <location line="+5"/> + <location line="-139"/> <location line="+3"/> <source>Annotate Current File</source> <translation>Annoter le fichier courant</translation> @@ -7909,12 +9912,12 @@ dans votre fichier .pro.</translation> <translation>Annoter "%1"</translation> </message> <message> - <location line="+7"/> + <location line="+144"/> <source>Annotate...</source> <translation>Annoter...</translation> </message> <message> - <location line="+5"/> + <location line="-136"/> <location line="+4"/> <source>Filelog Current File</source> <translation>Journal du fichier courant</translation> @@ -7930,17 +9933,72 @@ dans votre fichier .pro.</translation> <translation>Alt+P,Alt+F</translation> </message> <message> - <location line="+5"/> + <location line="+138"/> <source>Filelog...</source> <translation>Journal...</translation> </message> <message> - <location line="+5"/> + <location line="-18"/> <source>Update All</source> <translation>Tout mettre à jour</translation> </message> <message> - <location line="+5"/> + <location line="-94"/> + <source>Delete...</source> + <translation>Supprimer…</translation> + </message> + <message> + <location line="+0"/> + <source>Delete "%1"...</source> + <translation>Supprimer "%1"…</translation> + </message> + <message> + <location line="+29"/> + <source>Log Project</source> + <translation>Réaliser un log du projet</translation> + </message> + <message> + <location line="+0"/> + <source>Log Project "%1"</source> + <translation>Réaliser un log du projet "%1"</translation> + </message> + <message> + <location line="+7"/> + <source>Submit Project "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Update Current Project</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Revert Unchanged</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Revert Unchanged Files of Project "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Revert Project</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Revert Project "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>Repository Log</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Submit</source> <translation>Envoyer</translation> </message> @@ -7960,89 +10018,132 @@ dans votre fichier .pro.</translation> <translation>&Refaire</translation> </message> <message> - <location line="+49"/> + <location line="+43"/> + <location line="+52"/> <source>p4 revert</source> <translation>Restauration p4</translation> </message> <message> - <location line="+1"/> + <location line="-51"/> <source>The file has been changed. Do you want to revert it?</source> <translation>Le fichier a été modifié. Voulez-vous le restaurer ?</translation> </message> <message> - <location line="+98"/> + <location line="+50"/> + <source>Do you want to revert all changes to the project "%1"?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+75"/> <source>Another submit is currently executed.</source> <translation>Un autre envoi est en cours d'exécution.</translation> </message> <message> - <location line="+7"/> + <location line="+10"/> <source>Cannot create temporary file.</source> <translation>Impossible de créer un fichier temporaire.</translation> </message> <message> - <location line="+33"/> + <location line="+39"/> <source>Project has no files</source> <translation>Le projet n'a pas de fichiers</translation> </message> <message> - <location line="+49"/> + <location line="+51"/> <source>p4 annotate</source> <translation>Anotation p4</translation> </message> <message> - <location line="+15"/> + <location line="+36"/> <source>p4 annotate %1</source> <translation>Anotation p4 %1</translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>p4 filelog</source> <translation>Journal p4</translation> </message> <message> - <location line="+14"/> + <location line="+36"/> <source>p4 filelog %1</source> <translation>Journal p4 %1</translation> </message> <message> - <location line="+110"/> + <location line="+512"/> + <source>p4 submit failed: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+76"/> + <source>Error running "where" on %1: %2</source> + <extracomment>Failed to run p4 "where" to resolve a Perforce file name to a local file system name.</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>The file is not mapped</source> + <extracomment>File is not managed by Perforce</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+24"/> + <source>Perforce repository: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Perforce: Unable to determine the repository: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-524"/> <source>Executing: %1 </source> - <translation>Exécution : %1 + <translation type="unfinished">Exécution : %1 </translation> </message> <message> - <location line="+70"/> + <location line="+52"/> <source>The process terminated with exit code %1.</source> <translation>Le processus s'est terminé avec le code de sortie %1.</translation> </message> <message> - <location line="+3"/> + <location line="-5"/> <source>The process terminated abnormally.</source> <translation>Le processus s'est terminé de façon anormale.</translation> </message> <message> - <location line="+3"/> + <location line="-10"/> <source>Could not start perforce '%1'. Please check your settings in the preferences.</source> <translation>Impossible de démarrer perfoce '%1'. Veuillez vérifier les réglages dans les préférences.</translation> </message> <message> - <location line="+3"/> + <location line="+5"/> <source>Perforce did not respond within timeout limit (%1 ms).</source> <translation>Perforce n'a pas répondu dans la limite de temps (%1 ms).</translation> </message> <message> - <location line="+84"/> + <location line="+107"/> + <source>Unable to write input data to process %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+51"/> + <source>Perforce is not correctly configured.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+98"/> <source>p4 diff %1</source> <translation>p4 diff %1</translation> </message> <message> - <location line="+22"/> + <location line="+15"/> <source>p4 describe %1</source> <translation>p4 describe %1</translation> </message> <message> - <location line="+41"/> + <location line="+36"/> <source>Closing p4 Editor</source> <translation>Ferme l'éditeur p4</translation> </message> @@ -8057,23 +10158,20 @@ dans votre fichier .pro.</translation> <translation>La vérification du message de commit a échoué. Voulez-vous soumettre cette liste de changement</translation> </message> <message> - <location line="+18"/> + <location line="+23"/> <source>Cannot open temporary file.</source> <translation>Impossible d'ouvrir le fichier temporaire.</translation> </message> <message> - <location line="+19"/> - <location line="+8"/> <source>Cannot execute p4 submit.</source> - <translation>Impossible d'exécuter "p4 submit".</translation> + <translation type="obsolete">Impossible d'exécuter "p4 submit".</translation> </message> <message> - <location line="+6"/> <source>p4 submit failed (exit code %1).</source> - <translation>Échec de "p4 submit" (code de retour %1).</translation> + <translation type="obsolete">Échec de "p4 submit" (code de retour %1).</translation> </message> <message> - <location line="+7"/> + <location line="+17"/> <source>Pending change</source> <translation>Changement restant</translation> </message> @@ -8083,19 +10181,16 @@ dans votre fichier .pro.</translation> <translation>Impossible de soumettre le changement, votre workspace n'est pas à jour. Un submit en attente a été créé à la place.</translation> </message> <message> - <location line="+59"/> <source>Invalid configuration: %1</source> - <translation>Configuration invalide : %1</translation> + <translation type="obsolete">Configuration invalide : %1</translation> </message> <message> - <location line="+63"/> <source>Timeout waiting for "where" (%1).</source> - <translation>Temps limite dépassé lors de l'attente de "where" (%1).</translation> + <translation type="obsolete">Temps limite dépassé lors de l'attente de "where" (%1).</translation> </message> <message> - <location line="+11"/> <source>Error running "where" on %1: The file is not mapped</source> - <translation>Erreur d'exécution de "where" sur %1 : le fichier n'est pas mappé</translation> + <translation type="obsolete">Erreur d'exécution de "where" sur %1 : le fichier n'est pas mappé</translation> </message> </context> <context> @@ -8122,67 +10217,119 @@ dans votre fichier .pro.</translation> <context> <name>Perforce::Internal::SettingsPage</name> <message> - <location filename="../../../src/plugins/perforce/settingspage.ui"/> <source>Prompt to submit</source> - <translation>Invite lors du submit</translation> + <translation type="obsolete">Invite lors du submit</translation> </message> <message> - <location/> <source>P4 Command:</source> - <translation>Commande p4 :</translation> + <translation type="obsolete">Commande p4 :</translation> </message> <message> - <location/> <source>Use default P4 environment variables</source> - <translation>Utiliser les variables d'environnement par défaut pour P4</translation> + <translation type="obsolete">Utiliser les variables d'environnement par défaut pour P4</translation> </message> <message> - <location/> <source>Environment variables</source> - <translation>Variables d'environnement</translation> + <translation type="obsolete">Variables d'environnement</translation> </message> <message> - <location/> <source>P4 Client:</source> - <translation>Client P4 :</translation> + <translation type="obsolete">Client P4 :</translation> </message> <message> - <location/> <source>P4 User:</source> - <translation>Utilisateur P4 :</translation> + <translation type="obsolete">Utilisateur P4 :</translation> </message> <message> - <location/> <source>P4 Port:</source> - <translation>Port P4 :</translation> + <translation type="obsolete">Port P4 :</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/perforce/settingspage.ui"/> <source>Test</source> <translation>Test</translation> </message> <message> - <location filename="../../../src/plugins/perforce/settingspage.cpp" line="+106"/> + <location filename="../../../src/plugins/perforce/settingspage.cpp" line="+137"/> <source>Perforce</source> <translation>Perforce</translation> </message> -</context> -<context> - <name>Perforce::Internal::SettingsPageWidget</name> <message> - <location line="-59"/> - <source>Perforce Command</source> - <translation>Commande Perforce</translation> + <location filename="../../../src/plugins/perforce/settingspage.ui"/> + <source>Configuration</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> - <source>Testing...</source> - <translation>En test...</translation> + <location/> + <source>P4 command:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Environment Variables</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>P4 client:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>P4 user:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>P4 port:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Timeout:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Prompt on submit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Log count:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Perforce::Internal::SettingsPageWidget</name> + <message> + <location filename="../../../src/plugins/perforce/settingspage.cpp" line="-87"/> + <source>Perforce Command</source> + <translation>Commande Perforce</translation> + </message> + <message> + <location line="+17"/> + <source>Testing...</source> + <translation>En test...</translation> + </message> + <message> + <location line="+7"/> + <source>Test succeeded (%1).</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+5"/> <source>Test succeeded.</source> - <translation>Test réussi.</translation> + <translation type="obsolete">Test réussi.</translation> </message> </context> <context> @@ -8239,13 +10386,13 @@ dans votre fichier .pro.</translation> <context> <name>PluginManager</name> <message> - <location filename="../../../src/libs/extensionsystem/optionsparser.cpp" line="+106"/> + <location filename="../../../src/libs/extensionsystem/optionsparser.cpp" line="+109"/> <location line="+18"/> <source>The plugin '%1' does not exist.</source> <translation>Le plugin '%1' n'existe pas.</translation> </message> <message> - <location line="+45"/> + <location line="+52"/> <source>Unknown option %1</source> <translation>Option '%1' non reconnue</translation> </message> @@ -8254,11 +10401,17 @@ dans votre fichier .pro.</translation> <source>The option %1 requires an argument.</source> <translation>L'option %1 requiert un argument.</translation> </message> + <message> + <location filename="../../../src/plugins/qmldesigner/components/pluginmanager/pluginpath.cpp" line="+181"/> + <location filename="../../../src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.cpp" line="+204"/> + <source>Failed Plugins</source> + <translation>Plugins défectueux</translation> + </message> </context> <context> <name>PluginSpec</name> <message> - <location filename="../../../src/libs/extensionsystem/pluginspec.cpp" line="+22"/> + <location filename="../../../src/libs/extensionsystem/pluginspec.cpp" line="+32"/> <source>'%1' misses attribute '%2'</source> <translation>L'attribute '%1' est manquant pour '%2'</translation> </message> @@ -8288,22 +10441,22 @@ dans votre fichier .pro.</translation> <translation>L'élément '%1' devrait être un élément racine</translation> </message> <message> - <location line="+234"/> + <location line="+244"/> <source>Resolving dependencies failed because state != Read</source> <translation>La résolution des dépendances a échoué car l'état courant est différent de "Lecture"</translation> </message> <message> - <location line="+17"/> + <location line="+19"/> <source>Could not resolve dependency '%1(%2)'</source> <translation>Impossible de résoudre la dépendance '%1(%2)'</translation> </message> <message> - <location line="+24"/> + <location line="+42"/> <source>Loading the library failed because state != Resolved</source> <translation>Le chargement de la bibliothèque a échoué car l'état courant est différent de "Résolu"</translation> </message> <message> - <location line="+35"/> + <location line="+36"/> <source>Plugin is not valid (does not derive from IPlugin)</source> <translation>L'extension n'est pas valide (elle n'est pas une sous-classe de IPlugin)</translation> </message> @@ -8336,66 +10489,115 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::AbstractProcessStep</name> <message> - <location filename="../../../src/plugins/projectexplorer/abstractprocessstep.cpp" line="+188"/> <source><font color="#0000ff">Starting: %1 %2</font> </source> - <translation><font color="#0000ff">Lancement : %1 %2</font></translation> + <translation type="obsolete"><font color="#0000ff">Lancement : %1 %2</font></translation> </message> <message> - <location line="+7"/> <source><font color="#0000ff">Exited with code %1.</font></source> - <translation><font color="#0000ff">Terminé avec le code de sortie %1.</font></translation> + <translation type="obsolete"><font color="#0000ff">Terminé avec le code de sortie %1.</font></translation> </message> <message> - <location line="+2"/> <source><font color="#ff0000"><b>Exited with code %1.</b></font></source> - <translation><font color="#0000ff"><b>Terminé avec le code de sortie %1.</b></font></translation> + <translation type="obsolete"><font color="#0000ff"><b>Terminé avec le code de sortie %1.</b></font></translation> </message> <message> - <location line="+7"/> <source><font color="#ff0000">Could not start process %1 </b></font></source> - <translation><font color="#ff0000">Impossible de lancer le processus %1 </b></font></translation> + <translation type="obsolete"><font color="#ff0000">Impossible de lancer le processus %1 </b></font></translation> + </message> + <message> + <location filename="../../../src/plugins/projectexplorer/abstractprocessstep.cpp" line="+202"/> + <source><font color="#0000ff">Starting: "%1" %2</font> +</source> + <translation><font color="#0000ff">Lancement : %1 %2</font></translation> + </message> + <message> + <location line="+6"/> + <source><font color="#0000ff">The process "%1" exited normally.</font></source> + <translation><font color="#0000ff">Le processus %1 s'est .terminé normalement.</font></translation> + </message> + <message> + <location line="+2"/> + <source><font color="#ff0000"><b>The process "%1" exited with code %2.</b></font></source> + <translation><font color="#ff0000"><b>Le processus "%1" s'est terminé avec le code de sortie %2.</b></font></translation> + </message> + <message> + <location line="+2"/> + <source><font color="#ff0000"><b>The process "%1" crashed.</b></font></source> + <translation><font color="#ff0000"><b>Le processus "%1" a crashé </b></font></translation> + </message> + <message> + <location line="+5"/> + <source><font color="#ff0000"><b>Could not start process "%1"</b></font></source> + <translation><font color="#ff0000"><b>Impossible de lancer le processus "%1" </b></font></translation> </message> </context> <context> <name>ProjectExplorer::BuildManager</name> <message numerus="yes"> - <location filename="../../../src/plugins/projectexplorer/buildmanager.cpp" line="+61"/> <source>Finished %n of %1 build steps</source> - <translation> + <translation type="obsolete"> <numerusform>%n étape de compilation sur %1 terminée</numerusform> <numerusform>%n étapes de compilation sur %1 terminées</numerusform> </translation> </message> + <message numerus="yes"> + <location filename="../../../src/plugins/projectexplorer/buildmanager.cpp" line="+66"/> + <source>Finished %1 of %n build steps</source> + <translation> + <numerusform>%1 étape de compilation sur %n terminée</numerusform> + <numerusform>%1 étapes de compilation sur %n terminées</numerusform> + </translation> + </message> <message> - <location line="+80"/> + <location line="+31"/> + <source>Compile</source> + <comment>Category for compiler isses listened under 'Build Issues'</comment> + <translation>Compilation</translation> + </message> + <message> + <location line="+1"/> + <source>Build System</source> + <comment>Category for build system isses listened under 'Build Issues'</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+85"/> <source><font color="#ff0000">Canceled build.</font></source> <translation><font color="#ff0000">Compilation annulée.</font></translation> </message> <message> - <location line="+61"/> + <location line="+69"/> <source>Build</source> <translation>Compilation</translation> </message> <message> - <location line="+55"/> - <location line="+39"/> + <location line="+57"/> + <location line="+70"/> + <source><font color="#ff0000">Error while building project %1 (target: %2)</font></source> + <translation><font color="#ff0000">Erreur lors de la compilation du projet %1 (cible : %2)</font></translation> + </message> + <message> + <location line="-67"/> + <source>Error while building project %1 (target: %2)</source> + <translation>Erreur à la compilation du projet %1 (cible : %2)</translation> + </message> + <message> <source><font color="#ff0000">Error while building project %1</font></source> - <translation><font color="#ff0000">Erreur lors de la compilation du projet %1</font></translation> + <translation type="obsolete"><font color="#ff0000">Erreur lors de la compilation du projet %1</font></translation> </message> <message> - <location line="-38"/> - <location line="+39"/> + <location line="-2"/> + <location line="+70"/> <source><font color="#ff0000">When executing build step '%1'</font></source> <translation><font color="#ff0000">lors de l'éxecution de l'étape '%1'</font></translation> </message> <message> - <location line="-37"/> <source>Error while building project %1</source> - <translation>Erreur à la compilation du projet %1</translation> + <translation type="obsolete">Erreur à la compilation du projet %1</translation> </message> <message> - <location line="+44"/> + <location line="-40"/> <source><b>Running build steps for project %2...</b></source> <translation><b>Exécution des étapes de compilation pour le projet %2...</b></translation> </message> @@ -8403,18 +10605,33 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::CustomExecutableRunConfiguration</name> <message> - <location filename="../../../src/plugins/projectexplorer/customexecutablerunconfiguration.cpp" line="+249"/> + <location filename="../../../src/plugins/projectexplorer/customexecutablerunconfiguration.cpp" line="+265"/> <source>Custom Executable</source> <translatorcomment>custom ici a plutôt le sens de celui utilisé, usage, mais je sais pas comment le traduire ?</translatorcomment> <translation>Exécutable personnalisé</translation> </message> <message> - <location line="+44"/> + <location line="+81"/> <source>Could not find the executable, please specify one.</source> <translation>Exécutable introuvable, merci d'en spécifier un.</translation> </message> <message> - <location line="+124"/> + <location line="+61"/> + <source>Clean Environment</source> + <translation type="unfinished">Environnement vierge</translation> + </message> + <message> + <location line="+2"/> + <source>System Environment</source> + <translation>Environnement système</translation> + </message> + <message> + <location line="+2"/> + <source>Build Environment</source> + <translation>Environnement de compilation</translation> + </message> + <message> + <location line="+84"/> <location line="+32"/> <source>Run %1</source> <translation>Exécuter %1</translation> @@ -8423,8 +10640,8 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::CustomExecutableRunConfigurationFactory</name> <message> - <location line="+49"/> - <location line="+16"/> + <location line="+52"/> + <location line="+42"/> <source>Custom Executable</source> <translation>Exécutable personnalisé</translation> </message> @@ -8433,12 +10650,11 @@ dans votre fichier .pro.</translation> <name>ProjectExplorer::EnvironmentModel</name> <message> <location filename="../../../src/plugins/projectexplorer/environmenteditmodel.cpp" line="+68"/> - <location line="+72"/> <source><UNSET></source> <translation><NON-DÉFINI></translation> </message> <message> - <location line="+39"/> + <location line="+75"/> <source>Variable</source> <translation>Variable</translation> </message> @@ -8448,21 +10664,31 @@ dans votre fichier .pro.</translation> <translation>Valeur</translation> </message> <message> - <location line="+119"/> - <location line="+254"/> + <location line="+101"/> <source><VARIABLE></source> + <comment>Name when inserting a new variable</comment> <translation><VARIABLE></translation> </message> <message> - <location line="-243"/> + <location line="+2"/> <source><VALUE></source> + <comment>Value when inserting a new variable</comment> <translation><VALEUR></translation> </message> + <message> + <location line="+247"/> + <source><VARIABLE></source> + <translation><VARIABLE></translation> + </message> + <message> + <source><VALUE></source> + <translation type="obsolete"><VALEUR></translation> + </message> </context> <context> <name>ProjectExplorer::EnvironmentWidget</name> <message> - <location line="+163"/> + <location line="-80"/> <source>&Edit</source> <translation>&Édition</translation> </message> @@ -8482,7 +10708,7 @@ dans votre fichier .pro.</translation> <translation>&Rà Z</translation> </message> <message> - <location line="+68"/> + <location line="+69"/> <source>Unset <b>%1</b></source> <translatorcomment>text included in the summary</translatorcomment> <translation><b>%1</b> remis à zéro</translation> @@ -8493,9 +10719,18 @@ dans votre fichier .pro.</translation> <translation><b>%1</b> définit à <b>%2</b></translation> </message> <message> - <location line="+4"/> + <location line="+5"/> + <source>Using <b>%1</b></source> + <translation>utilisation de <b>%1</b></translation> + </message> + <message> + <location line="+2"/> + <source>Using <b>%1</b> and</source> + <translation>Utilisation de <b>%1</b> et</translation> + </message> + <message> <source>Summary: No changes to Environment</source> - <translation>Résumé : l'environnement n'est pas modifié</translation> + <translation type="obsolete">Résumé : l'environnement n'est pas modifié</translation> </message> </context> <context> @@ -8509,7 +10744,7 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::AllProjectsFind</name> <message> - <location filename="../../../src/plugins/projectexplorer/allprojectsfind.cpp" line="+64"/> + <location filename="../../../src/plugins/projectexplorer/allprojectsfind.cpp" line="+65"/> <source>All Projects</source> <translatorcomment>lower "t" at the beginning because this is indented after "Rechercher dans..."</translatorcomment> <translation>tout les projets</translation> @@ -8524,27 +10759,35 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::BuildSettingsPanel</name> <message> - <location filename="../../../src/plugins/projectexplorer/buildsettingspropertiespage.cpp" line="+81"/> <source>Build Settings</source> - <translation>Paramètres de compilation</translation> + <translation type="obsolete">Paramètres de compilation</translation> </message> </context> <context> <name>ProjectExplorer::Internal::BuildSettingsWidget</name> <message> - <location line="+137"/> + <location filename="../../../src/plugins/projectexplorer/buildsettingspropertiespage.cpp" line="+257"/> <source>&Clone Selected</source> <translation>&Cloner la version sélectionnée</translation> </message> <message> - <location line="+38"/> + <location line="+26"/> <source>Build Steps</source> <translation>Étapes de compilation</translation> </message> <message> - <location line="-98"/> <source>Edit Build Configuration:</source> - <translation>Éditer la configuration de compilation :</translation> + <translation type="obsolete">Éditer la configuration de compilation :</translation> + </message> + <message> + <location line="-148"/> + <source>No build settings available</source> + <translation>Pas de paramètres de compilation disponibles</translation> + </message> + <message> + <location line="+13"/> + <source>Edit build configuration:</source> + <translation>Éditer la configuration de compilation :</translation> </message> <message> <location line="+6"/> @@ -8552,22 +10795,21 @@ dans votre fichier .pro.</translation> <translation>Ajouter</translation> </message> <message> - <location line="+5"/> + <location line="+7"/> <source>Remove</source> <translation>Supprimer</translation> </message> <message> - <location line="+88"/> + <location line="+123"/> <source>Clean Steps</source> <translation>Étapes de nettoyage</translation> </message> <message> - <location line="+48"/> <source><a href="#">Make %1 active.</a></source> - <translation><a href="#">Rendre %1 actif.</a></translation> + <translation type="obsolete"><a href="#">Rendre %1 actif.</a></translation> </message> <message> - <location line="+33"/> + <location line="+76"/> <source>New Configuration Name:</source> <translation>Nom de la nouvelle configuration :</translation> </message> @@ -8580,46 +10822,77 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::BuildStepsPage</name> <message> - <location filename="../../../src/plugins/projectexplorer/buildstepspage.cpp" line="+61"/> + <location filename="../../../src/plugins/projectexplorer/buildstepspage.cpp" line="+298"/> <source>No Build Steps</source> <translation>Aucune étape de compilation</translation> </message> <message> - <location line="+6"/> <source>Add clean step</source> - <translation>Ajouter une étape de nettoyage</translation> + <translation type="obsolete">Ajouter une étape de nettoyage</translation> </message> <message> - <location line="+0"/> <source>Add build step</source> - <translation>Ajouter une étape de compilation</translation> + <translation type="obsolete">Ajouter une étape de compilation</translation> </message> <message> - <location line="+5"/> <source>Remove clean step</source> - <translation>Supprimer une étape de nettoyage</translation> + <translation type="obsolete">Supprimer une étape de nettoyage</translation> </message> <message> - <location line="+0"/> <source>Remove build step</source> - <translation>Supprimer une étape de compilation</translation> + <translation type="obsolete">Supprimer une étape de compilation</translation> </message> <message> - <location line="+41"/> + <location line="-211"/> <source>Build Steps</source> <translation>Étapes de compilation</translation> </message> <message> - <location line="+0"/> + <location line="+2"/> <source>Clean Steps</source> <translation>Étapes de nettoyage</translation> </message> + <message> + <location line="+87"/> + <source>Move Up</source> + <translation>Déplacer vers le haut</translation> + </message> + <message> + <location line="+6"/> + <source>Move Down</source> + <translation>Déplacer vers le bas</translation> + </message> + <message> + <location line="+6"/> + <source>Remove Item</source> + <translation>Supprimer l'élément</translation> + </message> + <message> + <location line="+80"/> + <source>Removing Step failed</source> + <translation>Échec de la suppression de l'étape</translation> + </message> + <message> + <location line="+1"/> + <source>Can't remove build step while building</source> + <translation>Impossible de supprimer une étape de compilation pendant la compilation</translation> + </message> + <message> + <location line="+36"/> + <source>Add Clean Step</source> + <translation>Ajouter une étape de nettoyage</translation> + </message> + <message> + <location line="+0"/> + <source>Add Build Step</source> + <translation>Ajouter une étape de compilation</translation> + </message> </context> <context> <name>ProjectExplorer::Internal::CompileOutputWindow</name> <message> - <location filename="../../../src/plugins/projectexplorer/compileoutputwindow.cpp" line="+47"/> - <location filename="../../../src/plugins/projectexplorer/compileoutputwindow.h" line="+51"/> + <location filename="../../../src/plugins/projectexplorer/compileoutputwindow.cpp" line="+48"/> + <location filename="../../../src/plugins/projectexplorer/compileoutputwindow.h" line="+53"/> <source>Compile Output</source> <translation>Sortie de compilation</translation> </message> @@ -8655,7 +10928,7 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::CurrentProjectFilter</name> <message> - <location filename="../../../src/plugins/projectexplorer/currentprojectfilter.h" line="+54"/> + <location filename="../../../src/plugins/projectexplorer/currentprojectfilter.h" line="+52"/> <source>Files in current project</source> <translation>Fichiers dans le projet courant</translation> </message> @@ -8663,7 +10936,7 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::CurrentProjectFind</name> <message> - <location filename="../../../src/plugins/projectexplorer/currentprojectfind.cpp" line="+64"/> + <location filename="../../../src/plugins/projectexplorer/currentprojectfind.cpp" line="+65"/> <source>Current Project</source> <translatorcomment>lower character at the beginning because this is indented after "Rechercher dans..."</translatorcomment> <translation>projet courant</translation> @@ -8677,7 +10950,7 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::CustomExecutableConfigurationWidget</name> <message> - <location filename="../../../src/plugins/projectexplorer/customexecutablerunconfiguration.cpp" line="-435"/> + <location filename="../../../src/plugins/projectexplorer/customexecutablerunconfiguration.cpp" line="-529"/> <source>Name:</source> <translation>Nom :</translation> </message> @@ -8702,7 +10975,7 @@ dans votre fichier .pro.</translation> <translation>Lancer dans un &terminal</translation> </message> <message> - <location line="+14"/> + <location line="+15"/> <source>Run Environment</source> <translation>Environnement d'éxecution</translation> </message> @@ -8722,7 +10995,7 @@ dans votre fichier .pro.</translation> <translation>Environnement de compilation</translation> </message> <message> - <location line="+102"/> + <location line="+107"/> <source>No Executable specified.</source> <translation>Aucun exécutable spécifié.</translation> </message> @@ -8732,7 +11005,7 @@ dans votre fichier .pro.</translation> <translation>Exécution en cours : <b>%1</b> %2</translation> </message> <message> - <location line="-110"/> + <location line="-115"/> <source>Base environment for this runconfiguration:</source> <translation>Environnement de base pour cette configuration d'éxecution :</translation> </message> @@ -8740,54 +11013,53 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::DependenciesPanel</name> <message> - <location filename="../../../src/plugins/projectexplorer/dependenciespanel.cpp" line="+22"/> <source>Dependencies</source> - <translation>Dépendances</translation> + <translation type="obsolete">Dépendances</translation> </message> </context> <context> <name>ProjectExplorer::Internal::DetailedModel</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectmodels.cpp" line="+232"/> <source>%1 of project %2</source> - <translation>%1 du projet %2</translation> + <translation type="obsolete">%1 du projet %2</translation> </message> <message> - <location line="+37"/> <source>Could not rename file</source> - <translation>Impossible de renommer le fichier</translation> + <translation type="obsolete">Impossible de renommer le fichier</translation> </message> <message> - <location line="+1"/> <source>Renaming file %1 to %2 failed.</source> - <translation>Échec du renommage du fichier %1 en %2.</translation> + <translation type="obsolete">Échec du renommage du fichier %1 en %2.</translation> </message> </context> <context> <name>ProjectExplorer::Internal::EditorSettingsPanel</name> <message> - <location filename="../../../src/plugins/projectexplorer/editorsettingspropertiespage.cpp" line="+63"/> <source>Editor Settings</source> - <translation>Paramètres de l'éditeur</translation> + <translation type="obsolete">Paramètres de l'éditeur</translation> </message> </context> <context> <name>ProjectExplorer::Internal::EditorSettingsPropertiesPage</name> <message> - <location filename="../../../src/plugins/projectexplorer/editorsettingspropertiespage.ui"/> <source>Default File Encoding:</source> - <translation>Encodage de fichier par défaut :</translation> + <translation type="obsolete">Encodage de fichier par défaut :</translation> + </message> + <message> + <location filename="../../../src/plugins/projectexplorer/editorsettingspropertiespage.ui"/> + <source>Default file encoding:</source> + <translation>Encodage de fichier par défaut :</translation> </message> </context> <context> <name>ProjectExplorer::Internal::FolderNavigationWidgetFactory</name> <message> - <location filename="../../../src/plugins/projectexplorer/foldernavigationwidget.cpp" line="+194"/> + <location filename="../../../src/plugins/projectexplorer/foldernavigationwidget.cpp" line="+462"/> <source>File System</source> <translation>Système de fichier</translation> </message> <message> - <location line="+17"/> + <location line="+22"/> <source>Synchronize with Editor</source> <translation>Synchroniser avec l'éditeur</translation> </message> @@ -8795,22 +11067,19 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::NewSessionInputDialog</name> <message> - <location filename="../../../src/plugins/projectexplorer/sessiondialog.cpp" line="+89"/> <source>New session name</source> - <translation>Nom de la nouvelle session</translation> + <translation type="obsolete">Nom de la nouvelle session</translation> </message> <message> - <location line="+2"/> <source>Enter the name of the new session:</source> - <translation>Entrez le nom de la nouvelle session :</translation> + <translation type="obsolete">Entrez le nom de la nouvelle session :</translation> </message> </context> <context> <name>ProjectExplorer::Internal::SessionDialog</name> <message> - <location line="+22"/> <source>Switch to session</source> - <translation>Passer à la session</translation> + <translation type="obsolete">Passer à la session</translation> </message> <message> <location filename="../../../src/plugins/projectexplorer/sessiondialog.ui"/> @@ -8818,30 +11087,63 @@ dans votre fichier .pro.</translation> <translation>Gestionnaire de session</translation> </message> <message> - <location/> <source>Create New Session</source> - <translation>Créer une nouvelle session</translation> + <translation type="obsolete">Créer une nouvelle session</translation> </message> <message> - <location/> <source>Clone Session</source> - <translation>Cloner la session</translation> + <translation type="obsolete">Cloner la session</translation> </message> <message> - <location/> <source>Delete Session</source> - <translation>Supprimer la session</translation> + <translation type="obsolete">Supprimer la session</translation> </message> <message> <location/> <source><a href="qthelp://com.nokia.qtcreator/doc/creator-quick-tour.html#session-management-in-qt-creator">What is a Session?</a></source> <translation><a href="qthelp://com.nokia.qtcreator/doc/creator-quick-tour.html#session-management-in-qt-creator">Qu'est ce qu'une session ?</a></translation> </message> + <message> + <location/> + <source>&New</source> + <translation>&Nouveau</translation> + </message> + <message> + <location/> + <source>&Rename</source> + <translation>&Renommer</translation> + </message> + <message> + <location/> + <source>C&lone</source> + <translation>C&lone</translation> + </message> + <message> + <location/> + <source>&Delete</source> + <translation>&Supprimer</translation> + </message> + <message> + <location/> + <source>&Switch to</source> + <translation>&Basculer vers</translation> + </message> + <message> + <location filename="../../../src/plugins/projectexplorer/sessiondialog.cpp" line="+178"/> + <location line="+18"/> + <source>New session name</source> + <translation>Nom de la nouvelle session</translation> + </message> + <message> + <location line="+24"/> + <source>Rename session</source> + <translation>Renommer la session</translation> + </message> </context> <context> <name>ProjectExplorer::Internal::OutputPane</name> <message> - <location filename="../../../src/plugins/projectexplorer/outputwindow.cpp" line="+75"/> + <location filename="../../../src/plugins/projectexplorer/outputwindow.cpp" line="+73"/> <source>Re-run this run-configuration</source> <translation>Relancer cette configuration de lancement</translation> </message> @@ -8852,22 +11154,36 @@ dans votre fichier .pro.</translation> <translation>Arrêter</translation> </message> <message> - <location line="+4"/> + <location line="+182"/> + <source>The application is still running.</source> + <translation>L'application est en cours d'éxecution.</translation> + </message> + <message> + <location line="+3"/> + <source>Force it to quit?</source> + <translatorcomment>l'application</translatorcomment> + <translation>La forcer à quitter ?</translation> + </message> + <message> + <location line="+2"/> + <source>Force Quit</source> + <translation>Forcer quitter</translation> + </message> + <message> <source>Ctrl+Shift+R</source> - <translation>Ctrl+Shift+R</translation> + <translation type="obsolete">Ctrl+Shift+R</translation> </message> <message> - <location line="+56"/> + <location line="-129"/> <source>Application Output</source> <translation>Sortie de l'application</translation> </message> <message> - <location line="+116"/> <source>The application is still running. Close it first.</source> - <translation>L'application est toujours en cours d'exécution. Veuillez la fermer d'abord.</translation> + <translation type="obsolete">L'application est toujours en cours d'exécution. Veuillez la fermer d'abord.</translation> </message> <message> - <location line="+1"/> + <location line="+123"/> <source>Unable to close</source> <translation>Impossible de fermer</translation> </message> @@ -8875,7 +11191,7 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::OutputWindow</name> <message> - <location line="+84"/> + <location line="+93"/> <source>Application Output Window</source> <translation>Fenêtre de sortie de l'application</translation> </message> @@ -8883,12 +11199,12 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::ProcessStep</name> <message> - <location filename="../../../src/plugins/projectexplorer/processstep.cpp" line="+86"/> <source>Custom Process Step</source> - <translation>Étape personnalisée</translation> + <translation type="obsolete">Étape personnalisée</translation> </message> <message> - <location line="+41"/> + <location filename="../../../src/plugins/projectexplorer/processstep.cpp" line="+79"/> + <location line="+162"/> <source>Custom Process Step</source> <comment>item in combobox</comment> <translation>Étape personnalisée</translation> @@ -8897,7 +11213,7 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::ProcessStepConfigWidget</name> <message> - <location line="+30"/> + <location line="+31"/> <source><b>%1</b> %2 %3 %4</source> <translation><b>%1</b> %2 %3 %4</translation> </message> @@ -8920,38 +11236,59 @@ dans votre fichier .pro.</translation> <translation>Commande :</translation> </message> <message> - <location/> <source>Working Directory:</source> - <translation>Répertoire de travail :</translation> + <translation type="obsolete">Répertoire de travail :</translation> </message> <message> - <location/> <source>Command Arguments:</source> - <translation>Arguments de la commande :</translation> + <translation type="obsolete">Arguments de la commande :</translation> </message> <message> - <location/> <source>Enable Custom Process Step</source> + <translation type="obsolete">Activer les étapes personnalisés</translation> + </message> + <message> + <location/> + <source>Enable custom process step</source> <translation>Activer les étapes personnalisés</translation> </message> + <message> + <location/> + <source>Working directory:</source> + <translation>Répertoire de travail :</translation> + </message> + <message> + <location/> + <source>Command arguments:</source> + <translation>Arguments de la commande :</translation> + </message> </context> <context> <name>ProjectExplorer::Internal::ProjectExplorerSettingsPage</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectexplorersettingspage.cpp" line="+56"/> <source>Build and Run</source> - <translation>Compiler et exécuter</translation> + <translation type="obsolete">Compiler et exécuter</translation> </message> <message> - <location line="+10"/> <source>Projects</source> - <translation>Projets</translation> + <translation type="obsolete">Projets</translation> + </message> + <message> + <location filename="../../../src/plugins/projectexplorer/projectexplorersettingspage.cpp" line="+129"/> + <source>General</source> + <translation>Général</translation> </message> </context> <context> <name>ProjectExplorer::Internal::ProjectFileFactory</name> <message> - <location filename="../../../src/plugins/projectexplorer/pluginfilefactory.cpp" line="+70"/> + <location filename="../../../src/plugins/projectexplorer/pluginfilefactory.cpp" line="+65"/> + <source>Project File Factory</source> + <comment>ProjectExplorer::ProjectFileFactory display name.</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> <source>Could not open the following project: '%1'</source> <translation>Impossible d'ouvrir le projet '%1'</translation> </message> @@ -8959,14 +11296,28 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::ProjectFileWizardExtension</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectfilewizardextension.cpp" line="+168"/> + <location filename="../../../src/plugins/projectexplorer/projectfilewizardextension.cpp" line="+255"/> + <location line="+30"/> + <source><None></source> + <extracomment>No version control system selected +---------- +No project selected</extracomment> + <translation><aucun></translation> + </message> + <message> + <location line="+47"/> <source>Failed to add one or more files to project '%1' (%2).</source> <translation>Impossible d'ajouter un ou plusieurs fichier au projet '%1' (%2).</translation> </message> <message> - <location line="+10"/> + <location line="+20"/> + <source>A version control system repository could not be created in '%1'.</source> + <translation>impossible de créer un dépot de système de gestion de version dans '%1'.</translation> + </message> + <message> + <location line="+8"/> <source>Failed to add '%1' to the version control system.</source> <translation>Échec de l'ajout de '%1' au système de gestion de version.</translation> </message> @@ -8974,7 +11325,7 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::ProjectTreeWidget</name> <message> - <location filename="../../../src/plugins/projectexplorer/projecttreewidget.cpp" line="+144"/> + <location filename="../../../src/plugins/projectexplorer/projecttreewidget.cpp" line="+145"/> <source>Simplify tree</source> <translation>Simplifier l'arbre</translation> </message> @@ -8992,12 +11343,12 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::ProjectTreeWidgetFactory</name> <message> - <location line="+191"/> + <location line="+203"/> <source>Projects</source> <translation>Projets</translation> </message> <message> - <location line="+16"/> + <location line="+21"/> <source>Filter tree</source> <translation>Filtrer l'arbre</translation> </message> @@ -9005,15 +11356,24 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::ProjectWizardPage</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectwizardpage.cpp" line="+131"/> <source>Add to &VCS (%1)</source> - <translation>Ajouter à &SGV (%1)</translation> + <translation type="obsolete">Ajouter à &SGV (%1)</translation> </message> <message> - <location line="+8"/> + <location filename="../../../src/plugins/projectexplorer/projectwizardpage.cpp" line="+45"/> + <source>Summary</source> + <translation type="unfinished">Résumé</translation> + </message> + <message> + <location line="+65"/> <source>Files to be added:</source> <translation>Fichiers à ajouter :</translation> </message> + <message> + <location line="+0"/> + <source>Files to be added in</source> + <translation>Fichiers à ajouter dans</translation> + </message> </context> <context> <name>ProjectExplorer::Internal::RemoveFileDialog</name> @@ -9041,15 +11401,14 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::RunSettingsPanel</name> <message> - <location filename="../../../src/plugins/projectexplorer/runsettingspropertiespage.cpp" line="+119"/> <source>Run Settings</source> - <translation>Paramètres d'exécution</translation> + <translation type="obsolete">Paramètres d'exécution</translation> </message> </context> <context> <name>ProjectExplorer::Internal::RunSettingsWidget</name> <message> - <location line="+65"/> + <location filename="../../../src/plugins/projectexplorer/runsettingspropertiespage.cpp" line="+232"/> <source>Add</source> <translation>Ajouter</translation> </message> @@ -9059,9 +11418,8 @@ dans votre fichier .pro.</translation> <translation>Supprimer</translation> </message> <message> - <location line="+138"/> <source><a href="#">Make %1 active.</a></source> - <translation><a href="#">Rendre %1 actif.</a></translation> + <translation type="obsolete"><a href="#">Rendre %1 actif.</a></translation> </message> </context> <context> @@ -9077,20 +11435,24 @@ dans votre fichier .pro.</translation> <translation>-</translation> </message> <message> - <location/> <source>Edit run configuration:</source> - <translation>Éditer la configuration d'exécution :</translation> + <translation type="obsolete">Éditer la configuration d'exécution :</translation> + </message> + <message> + <location/> + <source>Run configuration:</source> + <translation>Configuration d'exécution :</translation> </message> </context> <context> <name>ProjectExplorer::Internal::SessionFile</name> <message> - <location filename="../../../src/plugins/projectexplorer/session.cpp" line="+157"/> + <location filename="../../../src/plugins/projectexplorer/session.cpp" line="+159"/> <source>Session</source> <translation>Session</translation> </message> <message> - <location line="+184"/> + <location line="+192"/> <source>Untitled</source> <comment>default file name to display</comment> <translation>Sans titre</translation> @@ -9099,7 +11461,7 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::TaskDelegate</name> <message> - <location filename="../../../src/plugins/projectexplorer/taskwindow.cpp" line="+688"/> + <location filename="../../../src/plugins/projectexplorer/taskwindow.cpp" line="+927"/> <source>File not found: %1</source> <translation>Fichier non trouvé : %1</translation> </message> @@ -9107,20 +11469,16 @@ dans votre fichier .pro.</translation> <context> <name>ProjectExplorer::Internal::TaskWindow</name> <message> - <location line="-352"/> - <location filename="../../../src/plugins/projectexplorer/taskwindow.h" line="+62"/> <source>Build Issues</source> - <translation>Problèmes de compilation</translation> + <translation type="obsolete">Problèmes de compilation</translation> </message> <message> - <location line="+11"/> <source>&Copy</source> - <translation>Cop&ier</translation> + <translation type="obsolete">Cop&ier</translation> </message> <message> - <location line="+16"/> <source>Show Warnings</source> - <translation>Afficher les avertissements</translation> + <translation type="obsolete">Afficher les avertissements</translation> </message> </context> <context> @@ -9144,19 +11502,16 @@ dans votre fichier .pro.</translation> <translation>Gestion du projet</translation> </message> <message> - <location/> <source>&Add to Project</source> - <translation>&Ajouer au projet</translation> + <translation type="obsolete">&Ajouer au projet</translation> </message> <message> - <location/> <source>&Project</source> - <translation>&Projet</translation> + <translation type="obsolete">&Projet</translation> </message> <message> - <location/> <source>Add to &version control</source> - <translation>Ajouter au gestionnaire de &version</translation> + <translation type="obsolete">Ajouter au gestionnaire de &version</translation> </message> <message> <location/> @@ -9171,16 +11526,26 @@ dans votre fichier .pro.</translation> </translation> </message> + <message> + <location/> + <source>Add to &project:</source> + <translation>&Ajouter au projet :</translation> + </message> + <message> + <location/> + <source>Add to &version control:</source> + <translation>Ajouter au gestionnaire de &version :</translation> + </message> </context> <context> <name>ProjectExplorer::ProjectExplorerPlugin</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectexplorer.cpp" line="+258"/> + <location filename="../../../src/plugins/projectexplorer/projectexplorer.cpp" line="+271"/> <source>Projects</source> <translation>Projets</translation> </message> <message> - <location line="+86"/> + <location line="+83"/> <source>&Build</source> <translation>&Compiler</translation> </message> @@ -9195,7 +11560,7 @@ dans votre fichier .pro.</translation> <translation>&Commencer le débogage</translation> </message> <message> - <location line="+43"/> + <location line="+44"/> <source>Open With</source> <translation>Ouvrir avec</translation> </message> @@ -9230,27 +11595,23 @@ dans votre fichier .pro.</translation> <translation>Ouvrir un fichier</translation> </message> <message> - <location line="+6"/> <source>Show in Explorer...</source> - <translation>Afficher dans l'explorateur de fichier...</translation> + <translation type="obsolete">Afficher dans l'explorateur de fichier...</translation> </message> <message> - <location line="+2"/> <source>Show in Finder...</source> - <translation>Afficher dans Finder...</translation> + <translation type="obsolete">Afficher dans Finder...</translation> </message> <message> - <location line="+2"/> <source>Show containing folder...</source> - <translation>Afficher le dossier parent...</translation> + <translation type="obsolete">Afficher le dossier parent...</translation> </message> <message> - <location line="+13"/> <source>Recent Projects</source> - <translation>Projets récents</translation> + <translation type="obsolete">Projets récents</translation> </message> <message> - <location line="+6"/> + <location line="+29"/> <source>Close Project</source> <translation>Fermer le projet</translation> </message> @@ -9270,12 +11631,11 @@ dans votre fichier .pro.</translation> <translation>Session</translation> </message> <message> - <location line="+10"/> <source>Set Build Configuration</source> - <translation>Définir la configuration de compilation</translation> + <translation type="obsolete">Définir la configuration de compilation</translation> </message> <message> - <location line="+10"/> + <location line="+9"/> <source>Build All</source> <translation>Tout compiler</translation> </message> @@ -9296,41 +11656,47 @@ dans votre fichier .pro.</translation> </message> <message> <location line="+6"/> + <location line="+25"/> <source>Build Project</source> <translation>Compiler le projet</translation> </message> <message> - <location line="+0"/> + <location line="-25"/> + <location line="+25"/> <source>Build Project "%1"</source> <translation>Compiler le projet "%1"</translation> </message> <message> - <location line="+5"/> + <location line="-20"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> - <location line="+5"/> + <location line="+4"/> + <location line="+24"/> <source>Rebuild Project</source> <translation>Recompiler le projet</translation> </message> <message> - <location line="+0"/> + <location line="-24"/> + <location line="+24"/> <source>Rebuild Project "%1"</source> <translation>Recompiler le projet "%1"</translation> </message> <message> - <location line="+9"/> + <location line="-16"/> + <location line="+24"/> <source>Clean Project</source> <translation>Nettoyer le projet</translation> </message> <message> - <location line="+0"/> + <location line="-24"/> + <location line="+24"/> <source>Clean Project "%1"</source> <translation>Nettoyer le projet "%1"</translation> </message> <message> - <location line="+9"/> + <location line="+8"/> <source>Build Without Dependencies</source> <translation>Compiler sans les dépendances</translation> </message> @@ -9345,23 +11711,27 @@ dans votre fichier .pro.</translation> <translation>Nettoyer sans les dépendances</translation> </message> <message> - <location line="+10"/> - <location line="+18"/> + <location line="+6"/> + <location line="+9"/> <source>Run</source> <translation>Exécuter</translation> </message> <message> - <location line="-16"/> + <location line="-5"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> - <location line="+5"/> <source>Set Run Configuration</source> - <translation>Définir la configuration d'exécution</translation> + <translation type="obsolete">Définir la configuration d'exécution</translation> </message> <message> - <location line="+16"/> + <location line="-123"/> + <source>Recent P&rojects</source> + <translation>P&rojets récents</translation> + </message> + <message> + <location line="+133"/> <source>Cancel Build</source> <translation>Annuler la compilation</translation> </message> @@ -9397,18 +11767,43 @@ dans votre fichier .pro.</translation> <translation>Renommer</translation> </message> <message> - <location line="+126"/> + <location line="+18"/> + <source>Open Build/Run Target Selector...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Ctrl+T</source> + <translation>Ctrl+T</translation> + </message> + <message> + <location line="+119"/> <source>Load Project</source> <translation>Charger un projet</translation> </message> <message> - <location line="+83"/> + <location line="+87"/> <source>New Project</source> <comment>Title of dialog</comment> <translation>Nouveau projet</translation> </message> <message> - <location line="+904"/> + <location line="+527"/> + <source>Always save files before build</source> + <translation>Toujours enregistrer les fichiers avant de compiler</translation> + </message> + <message> + <location line="+338"/> + <source>Cannot run without a project.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Cannot debug without a project.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+140"/> <source>New File</source> <comment>Title of dialog</comment> <translation>Nouveau fichier</translation> @@ -9457,27 +11852,23 @@ au système de gestion de version (%2) ?</translation> <translation>Échec de l'ajout des fichiers au système de gestion de version</translation> </message> <message> - <location line="+22"/> <source>Launching Windows Explorer failed</source> - <translation>Échec du lancement de l'Explorer Windows</translation> + <translation type="obsolete">Échec du lancement de l'Explorer Windows</translation> </message> <message> - <location line="+1"/> <source>Could not find explorer.exe in path to launch Windows Explorer.</source> - <translation>Impossible de trouver explorer.exe dans le path pour lancer l'Explorer Windows.</translation> + <translation type="obsolete">Impossible de trouver explorer.exe dans le path pour lancer l'Explorer Windows.</translation> </message> <message> - <location line="+18"/> <source>Launching a file explorer failed</source> - <translation>Échec du lancement du gestionnaire de fichier</translation> + <translation type="obsolete">Échec du lancement du gestionnaire de fichier</translation> </message> <message> - <location line="+1"/> <source>Could not find xdg-open to launch the native file explorer.</source> - <translation>Impossible de trouver xdg-open pour lancer un gestionnaire de fichier natif.</translation> + <translation type="obsolete">Impossible de trouver xdg-open pour lancer un gestionnaire de fichier natif.</translation> </message> <message> - <location line="+26"/> + <location line="+47"/> <source>Remove file failed</source> <translation>Suppression du fichier échoué</translation> </message> @@ -9500,7 +11891,7 @@ au système de gestion de version (%2) ?</translation> <context> <name>ProjectExplorer::SessionManager</name> <message> - <location filename="../../../src/plugins/projectexplorer/session.cpp" line="+300"/> + <location filename="../../../src/plugins/projectexplorer/session.cpp" line="+322"/> <source>Error while restoring session</source> <translation>Erreur lors de la restauration de la session</translation> </message> @@ -9520,7 +11911,7 @@ au système de gestion de version (%2) ?</translation> <translation>Impossible d'enregistrer la session dans le fichier %1</translation> </message> <message> - <location line="+204"/> + <location line="+205"/> <source>Qt Creator</source> <translation>Qt Creator</translation> </message> @@ -9539,22 +11930,19 @@ au système de gestion de version (%2) ?</translation> <context> <name>QMakeStep</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qmakestep.ui"/> <source>QMake Build Configuration:</source> - <translation>Configuration de QMake pour la compilation :</translation> + <translation type="obsolete">Configuration de QMake pour la compilation :</translation> </message> <message> - <location/> <source>debug</source> - <translation>debug</translation> + <translation type="obsolete">debug</translation> </message> <message> - <location/> <source>release</source> - <translation>release</translation> + <translation type="obsolete">release</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/qt4projectmanager/qmakestep.ui"/> <source>Additional arguments:</source> <translation>Arguments supplémentaires :</translation> </message> @@ -9563,6 +11951,21 @@ au système de gestion de version (%2) ?</translation> <source>Effective qmake call:</source> <translation>Appels qmake :</translation> </message> + <message> + <location/> + <source>qmake build configuration:</source> + <translation>Configuration de QMake pour la compilation :</translation> + </message> + <message> + <location/> + <source>Debug</source> + <translation>debug</translation> + </message> + <message> + <location/> + <source>Release</source> + <translation>release</translation> + </message> </context> <context> <name>QObject</name> @@ -9656,109 +12059,89 @@ au système de gestion de version (%2) ?</translation> <context> <name>QmlProjectManager::Internal::QmlNewProjectWizard</name> <message> - <location filename="../../../src/plugins/qmlprojectmanager/qmlnewprojectwizard.cpp" line="+188"/> <source>QML Application</source> - <translation>Application QML</translation> + <translation type="obsolete">Application QML</translation> </message> <message> - <location line="+1"/> <source>Creates a QML application.</source> - <translation>Créer une application QML.</translation> + <translation type="obsolete">Créer une application QML.</translation> </message> <message> - <location line="+2"/> <source>Projects</source> - <translation>Projets</translation> + <translation type="obsolete">Projets</translation> </message> <message> - <location line="+69"/> <source>The project %1 could not be opened.</source> - <translation>Le projet %1 n'a pas pu être ouvert.</translation> + <translation type="obsolete">Le projet %1 n'a pas pu être ouvert.</translation> </message> </context> <context> <name>QmlProjectManager::Internal::QmlNewProjectWizardDialog</name> <message> - <location line="-135"/> <source>New QML Project</source> - <translation>Nouveau projet QML</translation> + <translation type="obsolete">Nouveau projet QML</translation> </message> <message> - <location line="+3"/> <source>This wizard generates a QML application project.</source> - <translation>Cet assistant génère un projet pour une application QML.</translation> + <translation type="obsolete">Cet assistant génère un projet pour une application QML.</translation> </message> </context> <context> <name>QmlProjectManager::Internal::QmlProjectWizard</name> <message> - <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectwizard.cpp" line="+190"/> <source>Import of existing QML directory</source> - <translation>Importer un répertoire QML existant</translation> + <translation type="obsolete">Importer un répertoire QML existant</translation> </message> <message> - <location line="+1"/> <source>Creates a QML project from an existing directory of QML files.</source> - <translation>Crée un projet QML à partir d'un répertoire existant de fichiers QML.</translation> + <translation type="obsolete">Crée un projet QML à partir d'un répertoire existant de fichiers QML.</translation> </message> <message> - <location line="+2"/> <source>Projects</source> - <translation>Projets</translation> + <translation type="obsolete">Projets</translation> </message> <message> - <location line="+94"/> <source>The project %1 could not be opened.</source> - <translation>Le projet %1 n'a pas pu être ouvert.</translation> + <translation type="obsolete">Le projet %1 n'a pas pu être ouvert.</translation> </message> </context> <context> <name>QmlProjectManager::Internal::QmlProjectWizardDialog</name> <message> - <location line="-163"/> <source>Import of QML Project</source> - <translation>Importation de projet QML</translation> + <translation type="obsolete">Importation de projet QML</translation> </message> <message> - <location line="+4"/> <source>QML Project</source> - <translation>Projet QML</translation> + <translation type="obsolete">Projet QML</translation> </message> <message> - <location line="+1"/> <source>Project name:</source> - <translation>Nom du projet :</translation> + <translation type="obsolete">Nom du projet :</translation> </message> <message> - <location line="+1"/> <source>Location:</source> - <translation>Emplacement :</translation> + <translation type="obsolete">Emplacement :</translation> </message> </context> <context> <name>QmlProjectManager::Internal::QmlRunConfiguration</name> <message> - <location filename="../../../src/plugins/qmlprojectmanager/qmlproject.cpp" line="+339"/> - <location line="+106"/> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectmanagerconstants.h" line="+36"/> <source>QML Viewer</source> <translation>Visualisateur QML</translation> </message> <message> - <location line="-31"/> - <location line="+40"/> - <location line="+60"/> <source><Current File></source> - <translation><Fichier courant></translation> + <translation type="obsolete"><Fichier courant></translation> </message> <message> - <location line="-68"/> <source>QML Viewer arguments:</source> - <translation>Arguments du visualisateur QML :</translation> + <translation type="obsolete">Arguments du visualisateur QML :</translation> </message> <message> - <location line="+1"/> <source>Main QML File:</source> - <translation>Fichier QML principal :</translation> + <translation type="obsolete">Fichier QML principal :</translation> </message> </context> <context> @@ -9797,20 +12180,30 @@ au système de gestion de version (%2) ?</translation> <context> <name>Qt4ProjectManager::Internal::ConsoleAppWizard</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp" line="+59"/> <source>Qt4 Console Application</source> + <translation type="obsolete">Application Qt4 en console</translation> + </message> + <message> + <source>Creates a Qt4 console application.</source> + <translation type="obsolete">Crée une application Qt4 de type console.</translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp" line="+59"/> + <source>Qt Console Application</source> <translation>Application Qt4 en console</translation> </message> <message> <location line="+1"/> - <source>Creates a Qt4 console application.</source> - <translation>Crée une application Qt4 de type console.</translation> + <source>Creates a project containing a single main.cpp file with a stub implementation. + +Preselects a desktop Qt for building the application if available.</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::ConsoleAppWizardDialog</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp" line="+52"/> + <location filename="../../../src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp" line="+51"/> <source>This wizard generates a Qt4 console application project. The application derives from QCoreApplication and does not provide a GUI.</source> <translation>Cet assistant génère un projet d'application Qt4 console. L'application dérive de QCoreApplication et ne fournit pas d'interface graphique.</translation> </message> @@ -9818,7 +12211,7 @@ au système de gestion de version (%2) ?</translation> <context> <name>Qt4ProjectManager::Internal::DesignerExternalEditor</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/externaleditors.cpp" line="+215"/> + <location filename="../../../src/plugins/qt4projectmanager/externaleditors.cpp" line="+263"/> <source>Qt Designer is not responding (%1).</source> <translation>Qt Designer ne répond pas (%1).</translation> </message> @@ -9831,28 +12224,35 @@ au système de gestion de version (%2) ?</translation> <context> <name>Qt4ProjectManager::Internal::EmbeddedPropertiesPanel</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/embeddedpropertiespage.cpp" line="+80"/> <source>Embedded Linux</source> - <translation>Linux embarqué</translation> + <translation type="obsolete">Linux embarqué</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::EmptyProjectWizard</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/wizards/emptyprojectwizard.cpp" line="+40"/> <source>Empty Qt4 Project</source> - <translation>Projet Qt4 vide</translation> + <translation type="obsolete">Projet Qt4 vide</translation> </message> <message> - <location line="+1"/> <source>Creates an empty Qt project.</source> - <translation>Crée un projet Qt vide.</translation> + <translation type="obsolete">Crée un projet Qt vide.</translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/emptyprojectwizard.cpp" line="+46"/> + <source>Empty Qt Project</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Creates a qmake-based project without any files. This allows you to create an application without any default classes.</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::EmptyProjectWizardDialog</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/wizards/emptyprojectwizarddialog.cpp" line="+50"/> + <location filename="../../../src/plugins/qt4projectmanager/wizards/emptyprojectwizarddialog.cpp" line="+45"/> <source>This wizard generates an empty Qt4 project. Add files to it later on by using the other wizards.</source> <translation>Cet assistant génère un projet Qt4 vide. Vous pouvez ajouter des fichiers plus tard en utilisant les autres assistants.</translation> </message> @@ -9860,7 +12260,7 @@ au système de gestion de version (%2) ?</translation> <context> <name>Qt4ProjectManager::Internal::ExternalQtEditor</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/externaleditors.cpp" line="-185"/> + <location filename="../../../src/plugins/qt4projectmanager/externaleditors.cpp" line="-202"/> <source>Unable to start "%1"</source> <translation>Impossible de démarrer "%1"</translation> </message> @@ -9886,17 +12286,27 @@ au système de gestion de version (%2) ?</translation> <context> <name>Qt4ProjectManager::Internal::GuiAppWizard</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/wizards/guiappwizard.cpp" line="+76"/> <source>Qt4 Gui Application</source> - <translation>Application graphique Qt4</translation> + <translation type="obsolete">Application graphique Qt4</translation> </message> <message> - <location line="+1"/> <source>Creates a Qt4 Gui Application with one form.</source> - <translation>Crée une application GUI Qt 4 avec un formulaire.</translation> + <translation type="obsolete">Crée une application GUI Qt 4 avec un formulaire.</translation> </message> <message> - <location line="+125"/> + <location filename="../../../src/plugins/qt4projectmanager/wizards/guiappwizard.cpp" line="+83"/> + <source>Qt Gui Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Creates a Qt application for the desktop. Includes a Qt Designer-based main window. + +Preselects a desktop Qt for building the application if available.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+162"/> <source>The template file '%1' could not be opened for reading: %2</source> <translation>Le fichier modèle '%1' n'a pas pu être ouvert en lecture : %2</translation> </message> @@ -9904,28 +12314,37 @@ au système de gestion de version (%2) ?</translation> <context> <name>Qt4ProjectManager::Internal::GuiAppWizardDialog</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp" line="+63"/> + <location filename="../../../src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp" line="+61"/> <source>This wizard generates a Qt4 GUI application project. The application derives by default from QApplication and includes an empty widget.</source> <translation>Cet assistant génère un projet d'application graphique Qt4. L'application dérive par défaut de QApplication et inclut un widget vide.</translation> </message> + <message> + <location line="+10"/> + <source>Details</source> + <translation type="unfinished">Détails</translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::LibraryWizard</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/wizards/librarywizard.cpp" line="+51"/> + <location filename="../../../src/plugins/qt4projectmanager/wizards/librarywizard.cpp" line="+55"/> <source>C++ Library</source> <translation>Bibliothèque C++</translation> </message> <message> <location line="+1"/> + <source>Creates a C++ library based on qmake. This can be used to create:<ul><li>a shared C++ library for use with <tt>QPluginLoader</tt> and runtime (Plugins)</li><li>a shared or static C++ library for use with another project at linktime</li></ul>.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Creates a C++ Library.</source> - <translation>Crée une bibliothèque C++.</translation> + <translation type="obsolete">Crée une bibliothèque C++.</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::LibraryWizardDialog</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp" line="+122"/> + <location filename="../../../src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp" line="+115"/> <source>Shared library</source> <translation>Bibliothèque partagée</translation> </message> @@ -9945,10 +12364,15 @@ au système de gestion de version (%2) ?</translation> <translation>Type</translation> </message> <message> - <location line="+35"/> + <location line="+25"/> <source>This wizard generates a C++ library project.</source> <translation>Cet assistant génère un projet de bibliothèque C++.</translation> </message> + <message> + <location line="+10"/> + <source>Details</source> + <translation type="unfinished">Détails</translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::ModulesPage</name> @@ -9966,191 +12390,168 @@ au système de gestion de version (%2) ?</translation> <context> <name>Qt4ProjectManager::Internal::ProEditor</name> <message> - <location filename="../../../src/shared/proparser/proeditor.ui"/> <source>New</source> - <translation>Nouveau</translation> + <translation type="obsolete">Nouveau</translation> </message> <message> - <location/> <source>Remove</source> - <translation>Supprimer</translation> + <translation type="obsolete">Supprimer</translation> </message> <message> - <location/> <source>Up</source> - <translation>Monter</translation> + <translation type="obsolete">Monter</translation> </message> <message> - <location/> <source>Down</source> - <translation>Descendre</translation> + <translation type="obsolete">Descendre</translation> </message> <message> - <location filename="../../../src/shared/proparser/proeditor.cpp" line="+51"/> <source>Cut</source> - <translation>Couper</translation> + <translation type="obsolete">Couper</translation> </message> <message> - <location line="+1"/> <source>Copy</source> - <translation>Copier</translation> + <translation type="obsolete">Copier</translation> </message> <message> - <location line="+1"/> <source>Paste</source> - <translation>Coller</translation> + <translation type="obsolete">Coller</translation> </message> <message> - <location line="+37"/> <source>Ctrl+X</source> - <translation>Ctrl+X</translation> + <translation type="obsolete">Ctrl+X</translation> </message> <message> - <location line="+1"/> <source>Ctrl+C</source> - <translation>Ctrl+C</translation> + <translation type="obsolete">Ctrl+C</translation> </message> <message> - <location line="+1"/> <source>Ctrl+V</source> - <translation>Ctrl+V</translation> + <translation type="obsolete">Ctrl+V</translation> </message> <message> - <location line="+9"/> <source>Add Variable</source> - <translation>Ajouter une variable</translation> + <translation type="obsolete">Ajouter une variable</translation> </message> <message> - <location line="+1"/> <source>Add Scope</source> - <translation>Ajouter une portée</translation> + <translation type="obsolete">Ajouter une portée</translation> </message> <message> - <location line="+1"/> <source>Add Block</source> - <translation>Ajouter un bloc</translation> + <translation type="obsolete">Ajouter un bloc</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::ProEditorModel</name> <message> - <location filename="../../../src/shared/proparser/proeditormodel.cpp" line="+446"/> <source><Global Scope></source> - <translation><Portée Globale></translation> + <translation type="obsolete"><Portée Globale></translation> </message> <message> - <location line="+74"/> <source>Change Item</source> - <translation>Modifier l'élément</translation> + <translation type="obsolete">Modifier l'élément</translation> </message> <message> - <location line="+20"/> <source>Change Variable Assignment</source> - <translation>Modifier l'affectation de la variable</translation> + <translation type="obsolete">Modifier l'affectation de la variable</translation> </message> <message> - <location line="+11"/> <source>Change Variable Type</source> - <translation>Modifier le type de la variable</translation> + <translation type="obsolete">Modifier le type de la variable</translation> </message> <message> - <location line="+14"/> <source>Change Scope Condition</source> - <translation>Modifier la condition de la portée</translation> + <translation type="obsolete">Modifier la condition de la portée</translation> </message> <message> - <location line="+13"/> <source>Change Expression</source> - <translation>Modifier l'expression</translation> + <translation type="obsolete">Modifier l'expression</translation> </message> <message> - <location line="+51"/> <source>Move Item</source> - <translation>Déplacer l'élément</translation> + <translation type="obsolete">Déplacer l'élément</translation> </message> <message> - <location line="+41"/> <source>Remove Item</source> - <translation>Supprimer l'élément</translation> + <translation type="obsolete">Supprimer l'élément</translation> </message> <message> - <location line="+49"/> <source>Insert Item</source> - <translation>Insérer un élément</translation> + <translation type="obsolete">Insérer un élément</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::ProjectLoadWizard</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/projectloadwizard.cpp" line="+51"/> - <location line="+125"/> <source>Import existing build settings</source> - <translation>Importer des paramètres de compilation existants</translation> + <translation type="obsolete">Importer des paramètres de compilation existants</translation> </message> <message> - <location line="+8"/> <source>Qt Creator has found an already existing build in the source directory.<br><br><b>Qt Version:</b> %1<br><b>Build configuration:</b> %2<br><b>Additional QMake Arguments:</b>%3</source> - <translation>Qt Creator a détecté une version compilée dans le répertoire source.<br> <br> <b>Qt Version : </b> %1<br><b>Configuration de compilation :</b> %2<br>Arguments supplémentaires de QMake :</b> %3</translation> + <translation type="obsolete">Qt Creator a détecté une version compilée dans le répertoire source.<br> <br> <b>Qt Version : </b> %1<br><b>Configuration de compilation :</b> %2<br>Arguments supplémentaires de QMake :</b> %3</translation> </message> <message> - <location line="+18"/> <source><b>Note:</b> Importing the settings will automatically add the Qt Version identified by <br><b>%1</b> to the list of Qt versions.</source> - <translation><b>Note:</b> Importer les paramètres ajoutera automatiquement la version de Qt identifiée par <br> <b> %1</b> à la liste des versions de Qt.</translation> + <translation type="obsolete"><b>Note:</b> Importer les paramètres ajoutera automatiquement la version de Qt identifiée par <br> <b> %1</b> à la liste des versions de Qt.</translation> </message> <message> - <location line="-6"/> <source>Import existing build settings.</source> - <translation>Importer des paramètres de compilation existants.</translation> + <translation type="obsolete">Importer des paramètres de compilation existants.</translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/projectloadwizard.cpp" line="+55"/> + <source>Project setup</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::Qt4BuildEnvironmentWidget</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp" line="+51"/> <source>Clear system environment</source> - <translation>Nettoyer l'environnement système</translation> + <translation type="obsolete">Nettoyer l'environnement système</translation> </message> <message> - <location line="+14"/> <source>Build Environment</source> - <translation>Environnement de compilation</translation> + <translation type="obsolete">Environnement de compilation</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::Qt4PriFileNode</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4nodes.cpp" line="+352"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4nodes.cpp" line="+81"/> <source>Headers</source> <translation>En-têtes</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Sources</source> <translation>Sources</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Forms</source> <translation>Formulaires</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Resources</source> <translation>Ressources</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Other files</source> <translation>Autres fichiers</translation> </message> <message> - <location line="+155"/> + <location line="+555"/> <location line="+7"/> + <location line="+62"/> <source>Failed!</source> <translation>Échec !</translation> </message> <message> - <location line="-7"/> + <location line="-69"/> <source>Could not open the file for edit with SCC.</source> <translation>Impossible d'ouvrir le fichier pour l'éditer avec SCC.</translation> </message> @@ -10160,30 +12561,39 @@ au système de gestion de version (%2) ?</translation> <translation>Impossible d'attribuer les droits en écriture.</translation> </message> <message> - <location line="+33"/> + <location line="+28"/> <source>There are unsaved changes for project file %1.</source> <translation>Des modifications n'ont pas été enregistrées pour le fichier de projet %1.</translation> </message> <message> - <location line="+22"/> - <source>Error while parsing file %1. Giving up.</source> - <translation>Erreur pendant le parcours du fichier %1. Abandon.</translation> + <location line="+35"/> + <source>Could not write project file %1.</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+7"/> - <source>Error while changing pro file %1.</source> - <translation>Erreur pendant la modification du fichier pro %1.</translation> + <location line="+19"/> + <source>Error while reading PRO file %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error while parsing file %1. Giving up.</source> + <translation type="obsolete">Erreur pendant le parcours du fichier %1. Abandon.</translation> + </message> + <message> + <source>Error while changing pro file %1.</source> + <translation type="obsolete">Erreur pendant la modification du fichier pro %1.</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::Qt4ProFileNode</name> <message> - <location line="+240"/> + <location line="+229"/> + <location line="+5"/> <source>Error while parsing file %1. Giving up.</source> <translation>Erreur pendant le parcours du fichier %1. Abandon.</translation> </message> <message> - <location line="+364"/> + <location line="+479"/> <source>Could not find .pro file for sub dir '%1' in '%2'</source> <translation>Impossible de trouver le fichier .pro pour le sous répertoire '%1' dans '%2'</translation> </message> @@ -10191,116 +12601,207 @@ au système de gestion de version (%2) ?</translation> <context> <name>Qt4ProjectManager::Internal::Qt4ProjectConfigWidget</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4projectconfigwidget.ui"/> <source>Configuration Name:</source> - <translation>Nom de la configuration :</translation> + <translation type="obsolete">Nom de la configuration :</translation> </message> <message> - <location/> <source>Qt Version:</source> - <translation>Version de Qt :</translation> + <translation type="obsolete">Version de Qt :</translation> </message> <message> - <location/> <source>This Qt-Version is invalid.</source> - <translation>Cette version de Qt est invalide.</translation> + <translation type="obsolete">Cette version de Qt est invalide.</translation> </message> <message> - <location/> <source>Shadow Build:</source> - <translation>Shadow Build :</translation> + <translation type="obsolete">Shadow Build :</translation> </message> <message> - <location/> <source>Build Directory:</source> - <translation>Répertoire de compilation :</translation> + <translation type="obsolete">Répertoire de compilation :</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/qt4projectmanager/qt4projectconfigwidget.ui"/> <source><a href="import">Import existing build</a></source> <translation><a href="import">Importer une compilation existante</a></translation> </message> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp" line="+71"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp" line="+78"/> <source>Shadow Build Directory</source> <translation>Répertoire du Shadow build</translation> </message> <message> - <location line="+23"/> - <location line="+115"/> <source>Default Qt Version (%1)</source> - <translation>Version de Qt par défaut (%1)</translation> + <translation type="obsolete">Version de Qt par défaut (%1)</translation> </message> <message> - <location line="-111"/> <source>No Qt Version set</source> - <translation>Aucune version de Qt définie</translation> + <translation type="obsolete">Aucune version de Qt définie</translation> + </message> + <message> + <location line="+51"/> + <source>using <font color="#ff0000">invalid</font> Qt Version: <b>%1</b><br>%2</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> + <source>No Qt Version found.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> <source>using Qt version: <b>%1</b><br>with tool chain <b>%2</b><br>building in <b>%3</b></source> <translation>utilise la version de Qt : <b>%1</b><br>avec la chaîne d'outil <b>%2</b><br>compilé dans <b>%3</b></translation> </message> <message> - <location line="+17"/> + <location line="+29"/> <source>General</source> <translation>Général</translation> </message> + <message> + <location line="+189"/> + <source>Building in subdirectories of the source directory is not supported by qmake.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>An incompatible build exists in %1, which will be overwritten.</source> + <comment>%1 build directory</comment> + <translation type="unfinished"></translation> + </message> <message> <location filename="../../../src/plugins/qt4projectmanager/qt4projectconfigwidget.ui"/> <source>Manage</source> <translation>Gérer</translation> </message> <message> - <location/> <source>Tool Chain:</source> - <translation>Chaîne d'outil :</translation> + <translation type="obsolete">Chaîne d'outil :</translation> + </message> + <message> + <location/> + <source>Configuration name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Qt version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>This Qt version is invalid.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Tool chain:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Shadow build:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Build directory:</source> + <translation type="unfinished">Répertoire de compilation :</translation> + </message> + <message> + <location/> + <source>problemLabel</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::Qt4ProjectManagerPlugin</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp" line="+181"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp" line="+180"/> <location line="+5"/> <source>Run qmake</source> <translation>Exécuter qmake</translation> </message> + <message> + <location line="+10"/> + <source>Build</source> + <translation type="unfinished">Compilation</translation> + </message> + <message> + <location line="+39"/> + <source>Run qmake in %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Build in %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::Qt4RunConfiguration</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4runconfiguration.cpp" line="+72"/> - <location line="+459"/> <source>Qt4RunConfiguration</source> - <translation>Qt4RunConfiguration</translation> + <translation type="obsolete">Qt4RunConfiguration</translation> </message> <message> - <location line="+50"/> <source>Could not parse %1. The Qt4 run configuration %2 can not be started.</source> - <translation>Impossible d'analyser %1. La configuration de Qt 4 %2 ne peut pas être démarrée.</translation> + <translation type="obsolete">Impossible d'analyser %1. La configuration de Qt 4 %2 ne peut pas être démarrée.</translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt4runconfiguration.cpp" line="+533"/> + <source>Clean Environment</source> + <translation type="unfinished">Environnement de nettoyage</translation> + </message> + <message> + <location line="+2"/> + <source>System Environment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Build Environment</source> + <translation type="unfinished">Environnement de compilation</translation> + </message> + <message> + <location line="+114"/> + <source>Qt4 RunConfiguration</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::Qt4RunConfigurationWidget</name> <message> - <location line="-334"/> <source>Running executable: <b>%1</b> %2 (in terminal)</source> - <translation>Lancement de l'exécutable <b>%1</b> %2 (dans un terminal)</translation> + <translation type="obsolete">Lancement de l'exécutable <b>%1</b> %2 (dans un terminal)</translation> </message> <message> - <location line="+1"/> <source>Running executable: <b>%1</b> %2</source> - <translation>Lancement de l'exécutable <b>%1</b> %2</translation> + <translation type="obsolete">Lancement de l'exécutable <b>%1</b> %2</translation> </message> <message> - <location line="-91"/> + <location line="-446"/> <source>Arguments:</source> <translation>Arguments :</translation> </message> <message> - <location line="+5"/> <source>Run in Terminal</source> - <translation>Exécuter dans un terminal</translation> + <translation type="obsolete">Exécuter dans un terminal</translation> + </message> + <message> + <location line="+8"/> + <source>Select Working Directory</source> + <translation type="unfinished">Sélectionner le répertoire de travail</translation> + </message> + <message> + <location line="+10"/> + <source>Working directory:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Run in terminal</source> + <translation type="unfinished"></translation> </message> <message> <location line="+13"/> @@ -10333,22 +12834,20 @@ au système de gestion de version (%2) ?</translation> <translation>Exécutable :</translation> </message> <message> - <location line="+5"/> <source>Select the working directory</source> - <translation>Sélectionner le répertoire de travail</translation> + <translation type="obsolete">Sélectionner le répertoire de travail</translation> </message> <message> - <location line="+3"/> + <location line="+13"/> <source>Reset to default</source> <translation>Restaurer les paramètres par défaut</translation> </message> <message> - <location line="+7"/> <source>Working Directory:</source> - <translation>Répertoire de travail :</translation> + <translation type="obsolete">Répertoire de travail :</translation> </message> <message> - <location line="+12"/> + <location line="+14"/> <source>Use debug version of frameworks (DYLD_IMAGE_SUFFIX=_debug)</source> <translation>Utiliser les versions debug des frameworks (DYLD_IMAGE_SUFFIX=_debug)</translation> </message> @@ -10361,7 +12860,7 @@ au système de gestion de version (%2) ?</translation> <context> <name>Qt4ProjectManager::Internal::QtOptionsPageWidget</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qtoptionspage.cpp" line="+111"/> + <location filename="../../../src/plugins/qt4projectmanager/qtoptionspage.cpp" line="+149"/> <source><specify a name></source> <translation><spécifier un nom></translation> </message> @@ -10371,12 +12870,11 @@ au système de gestion de version (%2) ?</translation> <translation><spécifier l'emplacement de qmake></translation> </message> <message> - <location line="+10"/> <source>Select QMake Executable</source> - <translation>Sélectionner un exécutable QMake</translation> + <translation type="obsolete">Sélectionner un exécutable QMake</translation> </message> <message> - <location line="+2"/> + <location line="+11"/> <source>Select the MinGW Directory</source> <translation>Sélectionner un répertoire MinGW</translation> </message> @@ -10391,9 +12889,18 @@ au système de gestion de version (%2) ?</translation> <translation>Sélectionner la racine du SDK S60</translation> </message> <message> - <location line="+2"/> <source>Select the CSL Arm Toolchain (GCCE) Directory</source> - <translation>Sélectionner le répertoire de la chaîne de compilation CSL Arm (GCCE)</translation> + <translation type="obsolete">Sélectionner le répertoire de la chaîne de compilation CSL Arm (GCCE)</translation> + </message> + <message> + <location line="-6"/> + <source>Select qmake Executable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Select the CSL ARM Toolchain (GCCE) Directory</source> + <translation type="unfinished"></translation> </message> <message> <location line="+11"/> @@ -10406,41 +12913,77 @@ au système de gestion de version (%2) ?</translation> <translation>Manuel</translation> </message> <message> - <location line="+144"/> + <location line="+134"/> <source>Building helpers</source> <translation>Aide à la compilation</translation> </message> <message> - <location line="+77"/> + <location line="+63"/> <source><html><body><table><tr><td>File:</td><td><pre>%1</pre></td></tr><tr><td>Last&nbsp;modified:</td><td>%2</td></tr><tr><td>Size:</td><td>%3 Bytes</td></tr></table></body></html></source> <extracomment>Tooltip showing the debugging helper library file.</extracomment> <translation><html><body><table><tr><td>Fichier :</td><td><pre>%1</pre></td></tr><tr><td>Dernière&nbsp;modification&nbsp;:</td><td>%2</td></tr><tr><td>Taille :</td><td>%3 octets</td></tr></table></body></html></translation> </message> <message> - <location line="+126"/> - <source>The Qt Version identified by %1 is not installed. Run make install</source> - <translation>La version de Qt indentifiée par %1 n'est pas installée. Lancez make install</translation> + <location line="+103"/> + <source>This Qt Version has a unknown toolchain.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+44"/> + <source>Desktop</source> + <comment>Qt Version is meant for the desktop</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> + <source>Symbian</source> + <comment>Qt Version is meant for Symbian</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Maemo</source> + <comment>Qt Version is meant for Maemo</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Qt Simulator</source> + <comment>Qt Version is meant for Qt Simulator</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>unkown</source> + <comment>No idea what this Qt Version is meant for!</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Found Qt version %1, using mkspec %2 (%3)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Qt Version identified by %1 is not installed. Run make install</source> + <translation type="obsolete">La version de Qt indentifiée par %1 n'est pas installée. Lancez make install</translation> + </message> + <message> <source>%1 does not specify a valid Qt installation</source> - <translation>%1 ne spécifie pas une installation de Qt valide</translation> + <translation type="obsolete">%1 ne spécifie pas une installation de Qt valide</translation> </message> <message> - <location line="+5"/> <source>Found Qt version %1, using mkspec %2</source> - <translation>Version %1 de Qt trouvée, utilise le mkspec %2</translation> + <translation type="obsolete">Version %1 de Qt trouvée, utilise le mkspec %2</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::QtVersionManager</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.ui"/> <source>Qt versions</source> - <translation>Versions de Qt</translation> + <translation type="obsolete">Versions de Qt</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.ui"/> <source>Name</source> <translation>Nom</translation> </message> @@ -10460,18 +13003,16 @@ au système de gestion de version (%2) ?</translation> <translation>-</translation> </message> <message> - <location/> <source>Version Name:</source> - <translation>Nom de version :</translation> + <translation type="obsolete">Nom de version :</translation> </message> <message> <source>MinGw Directory:</source> <translation type="obsolete">Répertoire de MinGW :</translation> </message> <message> - <location/> <source>MSVC Version:</source> - <translation>Version de MSVC :</translation> + <translation type="obsolete">Version de MSVC :</translation> </message> <message> <location/> @@ -10487,9 +13028,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Impossible de détecter la version de MSVC.</span></p></body></html></translation> </message> <message> - <location/> <source>Debugging Helper:</source> - <translation>Assistance au débogage :</translation> + <translation type="obsolete">Assistance au débogage :</translation> </message> <message> <location/> @@ -10502,19 +13042,16 @@ p, li { white-space: pre-wrap; } <translation>&Recompiler</translation> </message> <message> - <location/> <source>Default Qt Version:</source> - <translation>Version de Qt par défaut :</translation> + <translation type="obsolete">Version de Qt par défaut :</translation> </message> <message> - <location/> <source>QMake Location</source> - <translation>Emplacement de QMake</translation> + <translation type="obsolete">Emplacement de QMake</translation> </message> <message> - <location/> <source>QMake Location:</source> - <translation>Emplacement de QMake :</translation> + <translation type="obsolete">Emplacement de QMake :</translation> </message> <message> <location/> @@ -10522,151 +13059,177 @@ p, li { white-space: pre-wrap; } <translation>SDK S60 :</translation> </message> <message> - <location/> <source>Carbide Directory:</source> - <translation>Répertoire de Carbide :</translation> + <translation type="obsolete">Répertoire de Carbide :</translation> </message> <message> - <location/> <source>MinGW Directory:</source> - <translation>Répertoire de MinGW :</translation> + <translation type="obsolete">Répertoire de MinGW :</translation> </message> <message> - <location/> <source>CSL/GCCE Directory:</source> - <translation>Répertoire CSL/GCCE :</translation> + <translation type="obsolete">Répertoire CSL/GCCE :</translation> + </message> + <message> + <location/> + <source>qmake Location</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Version name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>qmake location:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>MinGW directory:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Toolchain:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>CSL/GCCE directory:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Carbide directory:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Debugging helper:</source> + <translation type="unfinished">Assistance au débogage :</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::QtWizard</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/wizards/qtwizard.cpp" line="+94"/> <source>The project %1 could not be opened.</source> - <translation>Le projet %1 ne peut pas être ouvert.</translation> + <translation type="obsolete">Le projet %1 ne peut pas être ouvert.</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::ValueEditor</name> <message> - <location filename="../../../src/shared/proparser/valueeditor.ui"/> <source>Edit Variable</source> - <translation>Éditer une variable</translation> + <translation type="obsolete">Éditer une variable</translation> </message> <message> - <location/> <source>Variable Name:</source> - <translation>Nom de variable :</translation> + <translation type="obsolete">Nom de variable :</translation> </message> <message> - <location/> <source>Assignment Operator:</source> - <translation>Opérateur d'assignation :</translation> + <translation type="obsolete">Opérateur d'assignation :</translation> </message> <message> - <location/> <source>Variable:</source> - <translation>Variable :</translation> + <translation type="obsolete">Variable :</translation> </message> <message> - <location/> <source>Append (+=)</source> - <translation>Ajouté à la fin (+=)</translation> + <translation type="obsolete">Ajouté à la fin (+=)</translation> </message> <message> - <location/> <source>Remove (-=)</source> - <translation>Supprimer (-=)</translation> + <translation type="obsolete">Supprimer (-=)</translation> </message> <message> - <location/> <source>Replace (~=)</source> - <translation>Remplacer (~=)</translation> + <translation type="obsolete">Remplacer (~=)</translation> </message> <message> - <location/> <source>Set (=)</source> - <translation>Définir (=)</translation> + <translation type="obsolete">Définir (=)</translation> </message> <message> - <location/> <source>Unique (*=)</source> - <translation>Unique (*=)</translation> + <translation type="obsolete">Unique (*=)</translation> </message> <message> - <location/> <source>Select Item</source> - <translation>Sélectionner élément</translation> + <translation type="obsolete">Sélectionner élément</translation> </message> <message> - <location/> <source>Edit Item</source> - <translation>Éditer l'élément</translation> + <translation type="obsolete">Éditer l'élément</translation> </message> <message> - <location/> <source>Select Items</source> - <translation>Sélectionner les éléments</translation> + <translation type="obsolete">Sélectionner les éléments</translation> </message> <message> - <location/> <source>Edit Items</source> - <translation>Éditer les éléments</translation> + <translation type="obsolete">Éditer les éléments</translation> </message> <message> - <location/> <source>New</source> - <translation>Nouveau</translation> + <translation type="obsolete">Nouveau</translation> </message> <message> - <location/> <source>Remove</source> - <translation>Supprimer</translation> + <translation type="obsolete">Supprimer</translation> </message> <message> - <location filename="../../../src/shared/proparser/valueeditor.cpp" line="+252"/> <source>Edit Values</source> - <translation>Éditer les valeurs</translation> + <translation type="obsolete">Éditer les valeurs</translation> </message> <message> - <location line="+3"/> <source>Edit %1</source> - <translation>Éditer %1</translation> + <translation type="obsolete">Éditer %1</translation> </message> <message> - <location line="+69"/> <source>Edit Scope</source> - <translation>Éditer la portée</translation> + <translation type="obsolete">Éditer la portée</translation> </message> <message> - <location line="+14"/> <source>Edit Advanced Expression</source> - <translation>Éditer les expressions avancées</translation> + <translation type="obsolete">Éditer les expressions avancées</translation> </message> </context> <context> <name>Qt4ProjectManager::MakeStep</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/makestep.cpp" line="+76"/> + <location filename="../../../src/plugins/qt4projectmanager/makestep.cpp" line="+83"/> + <source>Make</source> + <comment>Qt4 MakeStep display name.</comment> + <translation type="unfinished">Make</translation> + </message> + <message> + <location line="+55"/> <source><font color="#ff0000">Could not find make command: %1 in the build environment</font></source> <translation><font color="#ff0000">Impossible de trouver la commande make : %1 dans l'environnement de compilation</font></translation> </message> <message> - <location line="+56"/> <source><font color="#0000ff"><b>No Makefile found, assuming project is clean.</b></font></source> - <translation><font color="#0000ff"><b>Aucun Makefile trouvé, assume que le projet est nettoyé.</b></font></translation> + <translation type="obsolete"><font color="#0000ff"><b>Aucun Makefile trouvé, assume que le projet est nettoyé.</b></font></translation> </message> </context> <context> <name>Qt4ProjectManager::MakeStepConfigWidget</name> <message> - <location line="+57"/> + <location line="+120"/> <source>Override %1:</source> <translation>Supplanter %1 :</translation> </message> <message> - <location line="+18"/> + <location line="+16"/> + <source><b>Make:</b> %1 not found in the environment.</source> + <translation type="unfinished"></translation> + </message> + <message> <source><b>Make Step:</b> %1 not found in the environment.</source> - <translation><b>Make Step:</b> %1 non trouvé dans l'environnement.</translation> + <translation type="obsolete"><b>Make Step:</b> %1 non trouvé dans l'environnement.</translation> </message> <message> <location line="+20"/> @@ -10677,7 +13240,7 @@ p, li { white-space: pre-wrap; } <context> <name>Qt4ProjectManager::Internal::MakeStepFactory</name> <message> - <location line="+93"/> + <location line="+119"/> <source>Make</source> <translation>Make</translation> </message> @@ -10685,93 +13248,112 @@ p, li { white-space: pre-wrap; } <context> <name>Qt4ProjectManager::QMakeStep</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qmakestep.cpp" line="+104"/> <source> <font color="#ff0000"><b>No valid Qt version set. Set one in Preferences </b></font> </source> - <translation> + <translation type="obsolete"> <font color="#ff0000"><b>Aucune version valide de Qt définie. Définissez-en une dans Préférences </b></font> </translation> </message> <message> - <location line="+2"/> <source> <font color="#ff0000"><b>No valid Qt version set. Set one in Tools/Options </b></font> </source> - <translation> + <translation type="obsolete"> <font color="#ff0000"><b>Aucune version valide de Qt définie. Définissez-en une dans Outils/Options </b></font> </translation> </message> <message> - <location line="+40"/> <source><font color="#0000ff">Configuration unchanged, skipping QMake step.</font></source> - <translation><font color="#0000ff">Configuration non modifiée, passe l'étape QMake.</font></translation> + <translation type="obsolete"><font color="#0000ff">Configuration non modifiée, passe l'étape QMake.</font></translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qmakestep.cpp" line="+81"/> + <source>qmake</source> + <comment>QMakeStep display name.</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+120"/> + <source><font color="#0000ff">Configuration is faulty, please check the Build Issues view for details.</font></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source><font color="#0000ff">Configuration unchanged, skipping qmake step.</font></source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Qt4ProjectManager::QMakeStepConfigWidget</name> <message> - <location line="+78"/> <source><b>QMake:</b> No Qt version set. QMake can not be run.</source> - <translation><b>QMake:</b> Aucune version de Qt définie. QMake ne peut être lancé.</translation> + <translation type="obsolete"><b>QMake:</b> Aucune version de Qt définie. QMake ne peut être lancé.</translation> </message> <message> - <location line="+13"/> <source><b>QMake:</b> %1 %2</source> - <translation><b>QMake:</b> %1 %2</translation> + <translation type="obsolete"><b>QMake:</b> %1 %2</translation> </message> <message> - <location line="+61"/> <source>No valid Qt version set.</source> - <translation>Aucune version de Qt définie.</translation> + <translation type="obsolete">Aucune version de Qt définie.</translation> + </message> + <message> + <location line="+176"/> + <source><b>qmake:</b> No Qt version set. Cannot run qmake.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source><b>qmake:</b> %1 %2</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::QMakeStepFactory</name> <message> - <location line="+38"/> <source>QMake</source> - <translation>QMake</translation> + <translation type="obsolete">QMake</translation> + </message> + <message> + <location line="+89"/> + <source>qmake</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Qt4ProjectManager::Qt4Manager</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanager.cpp" line="+192"/> <source>Loading project %1 ...</source> - <translation>Chargement du projet %1...</translation> + <translation type="obsolete">Chargement du projet %1...</translation> </message> <message> - <location line="+9"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanager.cpp" line="+195"/> <source>Failed opening project '%1': Project file does not exist</source> <translation>Échec de l'ouverture du projet '%1' : le fichier du projet n'existe pas</translation> </message> <message> - <location line="+1"/> - <location line="+7"/> <source>Failed opening project</source> - <translation>Ouverture du projet échouée</translation> + <translation type="obsolete">Ouverture du projet échouée</translation> </message> <message> - <location line="-1"/> + <location line="+6"/> <source>Failed opening project '%1': Project already open</source> <translation>Échec de l'ouverture du projet '%1' : projet déjà ouvert</translation> </message> <message> - <location line="+6"/> <source>Opening %1 ...</source> - <translation>Ouverture de %1...</translation> + <translation type="obsolete">Ouverture de %1...</translation> </message> <message> - <location line="+5"/> <source>Done opening project</source> - <translation>Ouverture du projet terminée</translation> + <translation type="obsolete">Ouverture du projet terminée</translation> </message> </context> <context> <name>Qt4ProjectManager::QtVersionManager</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+347"/> + <location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+395"/> <source><not found></source> <translation><non trouvé></translation> </message> @@ -10782,7 +13364,7 @@ p, li { white-space: pre-wrap; } <translation>Qt dans le PATH</translation> </message> <message> - <location line="+144"/> + <location line="+190"/> <source>Name:</source> <translation>Nom :</translation> </message> @@ -10807,12 +13389,11 @@ p, li { white-space: pre-wrap; } <translation>Par défaut :</translation> </message> <message> - <location line="+7"/> <source>Compiler:</source> - <translation>Compilateur :</translation> + <translation type="obsolete">Compilateur :</translation> </message> <message> - <location line="+2"/> + <location line="+6"/> <source>Version:</source> <translation>Version :</translation> </message> @@ -10825,9 +13406,20 @@ p, li { white-space: pre-wrap; } <context> <name>QApplication</name> <message> - <location line="+870"/> <source>The Qt Version has no toolchain.</source> - <translation>La version de Qt n'as pas de chaîne de compilation.</translation> + <translation type="obsolete">La version de Qt n'as pas de chaîne de compilation.</translation> + </message> + <message> + <location filename="../../../src/plugins/help/helpplugin.cpp" line="-520"/> + <source>EditorManager</source> + <comment>Next Open Document in History</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>EditorManager</source> + <comment>Previous Open Document in History</comment> + <translation type="unfinished"></translation> </message> </context> <context> @@ -10987,19 +13579,16 @@ p, li { white-space: pre-wrap; } <context> <name>QtScriptEditor::Internal::QtScriptEditorPlugin</name> <message> - <location filename="../../../src/plugins/qtscripteditor/qtscripteditorplugin.cpp" line="+102"/> <source>Creates a Qt Script file.</source> - <translation>Crée un fichier Qt Script.</translation> + <translation type="obsolete">Crée un fichier Qt Script.</translation> </message> <message> - <location line="+1"/> <source>Qt Script file</source> - <translation>Fichier Qt Script</translation> + <translation type="obsolete">Fichier Qt Script</translation> </message> <message> - <location line="+2"/> <source>Qt</source> - <translation>Qt</translation> + <translation type="obsolete">Qt</translation> </message> <message> <source>Run</source> @@ -11013,9 +13602,8 @@ p, li { white-space: pre-wrap; } <context> <name>QtScriptEditor::Internal::ScriptEditor</name> <message> - <location filename="../../../src/plugins/qtscripteditor/qtscripteditor.cpp" line="+229"/> <source><Select Symbol></source> - <translation><Selectionner un symbole></translation> + <translation type="obsolete"><Selectionner un symbole></translation> </message> </context> <context> @@ -11048,11 +13636,15 @@ p, li { white-space: pre-wrap; } <source>Filter Configuration</source> <translation>Configuration du filtre</translation> </message> + <message> + <source>Choose a directory to add</source> + <translation type="obsolete">Sélectionner un répertoire à ajouter</translation> + </message> <message> <location line="+45"/> <location line="+11"/> - <source>Choose a directory to add</source> - <translation>Sélectionner un répertoire à ajouter</translation> + <source>Select Directory</source> + <translation type="unfinished"></translation> </message> <message> <location line="+30"/> @@ -11081,9 +13673,8 @@ p, li { white-space: pre-wrap; } <translation>Nom :</translation> </message> <message> - <location/> <source>File Types:</source> - <translation>Types de fichiers :</translation> + <translation type="obsolete">Types de fichiers :</translation> </message> <message> <location/> @@ -11126,11 +13717,16 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <source>Directories:</source> <translation>Dossiers :</translation> </message> + <message> + <location/> + <source>File types:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Locator::Internal::FileSystemFilter</name> <message> - <location filename="../../../src/plugins/locator/filesystemfilter.h" line="+54"/> + <location filename="../../../src/plugins/locator/filesystemfilter.h" line="+56"/> <source>Files in file system</source> <translation>Fichiers du système de fichier</translation> </message> @@ -11166,7 +13762,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>Locator::Internal::OpenDocumentsFilter</name> <message> - <location filename="../../../src/plugins/locator/opendocumentsfilter.h" line="+53"/> + <location filename="../../../src/plugins/locator/opendocumentsfilter.h" line="+55"/> <source>Open documents</source> <translation>Ouvrir des documents</translation> </message> @@ -11182,7 +13778,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>Locator::Internal::LocatorPlugin</name> <message> - <location filename="../../../src/plugins/locator/locatorplugin.cpp" line="+247"/> + <location filename="../../../src/plugins/locator/locatorplugin.cpp" line="+255"/> <source>Indexing</source> <translation>Indexation</translation> </message> @@ -11190,7 +13786,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>Locator::Internal::LocatorWidget</name> <message> - <location filename="../../../src/plugins/locator/locatorwidget.cpp" line="+254"/> + <location filename="../../../src/plugins/locator/locatorwidget.cpp" line="+267"/> <source>Refresh</source> <translation>Rafraîchir</translation> </message> @@ -11205,12 +13801,17 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Localiser...</translation> </message> <message> - <location line="+17"/> + <location line="+16"/> <source>Type to locate</source> <translation>Taper pour localiser</translation> </message> <message> - <location line="+178"/> + <location line="+1"/> + <source>Options</source> + <translation type="unfinished">Options</translation> + </message> + <message> + <location line="+179"/> <source><type here></source> <translation><taper ici></translation> </message> @@ -11249,9 +13850,13 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>Locator::Internal::SettingsPage</name> <message> - <location filename="../../../src/plugins/locator/settingspage.cpp" line="+159"/> <source>%1 (Prefix: %2)</source> - <translation>%1 (Préfixe : %2)</translation> + <translation type="obsolete">%1 (Préfixe : %2)</translation> + </message> + <message> + <location filename="../../../src/plugins/locator/settingspage.cpp" line="+168"/> + <source>%1 (prefix: %2)</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -11277,15 +13882,19 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Modifier</translation> </message> <message> - <location/> <source>Refresh Interval:</source> - <translation>Intervalle de rafraîchissement :</translation> + <translation type="obsolete">Intervalle de rafraîchissement :</translation> </message> <message> <location/> <source> min</source> <translation>min</translation> </message> + <message> + <location/> + <source>Refresh interval:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RegExp::Internal::RegExpWindow</name> @@ -11393,22 +14002,25 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>ResourceEditor::Internal::ResourceEditorPlugin</name> <message> - <location filename="../../../src/plugins/resourceeditor/resourceeditorplugin.cpp" line="+77"/> <source>Creates a Qt Resource file (.qrc).</source> - <translation>Crée une fichier ressource Qt (.qrc).</translation> + <translation type="obsolete">Crée une fichier ressource Qt (.qrc).</translation> </message> <message> - <location line="+1"/> + <location filename="../../../src/plugins/resourceeditor/resourceeditorplugin.cpp" line="+79"/> <source>Qt Resource file</source> <translation>Fichier de ressource Qt</translation> </message> <message> - <location line="+2"/> <source>Qt</source> - <translation>Qt</translation> + <translation type="obsolete">Qt</translation> </message> <message> - <location line="+12"/> + <location line="-1"/> + <source>Creates a Qt Resource file (.qrc) that you can add to a Qt C++ project.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> <source>&Undo</source> <translation>&Annuler</translation> </message> @@ -11421,7 +14033,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>ResourceEditor::Internal::ResourceEditorW</name> <message> - <location filename="../../../src/plugins/resourceeditor/resourceeditorw.cpp" line="+117"/> + <location filename="../../../src/plugins/resourceeditor/resourceeditorw.cpp" line="+116"/> <source>untitled</source> <translation>sans titre</translation> </message> @@ -11447,20 +14059,18 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>SettingsDialog</name> <message> - <location filename="../../../src/plugins/coreplugin/dialogs/settingsdialog.ui"/> <source>Options</source> - <translation>Options</translation> + <translation type="obsolete">Options</translation> </message> <message> - <location/> <source>0</source> - <translation>0</translation> + <translation type="obsolete">0</translation> </message> </context> <context> <name>SharedTools::QrcEditor</name> <message> - <location filename="../../../src/shared/qrceditor/qrceditor.cpp" line="+57"/> + <location filename="../../../src/shared/qrceditor/qrceditor.cpp" line="+58"/> <source>Add Files</source> <translation>Ajouter des fichiers</translation> </message> @@ -11470,12 +14080,11 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Ajouter un préfixe</translation> </message> <message> - <location line="+156"/> <source>Invalid file</source> - <translation>Fichier invalide</translation> + <translation type="obsolete">Fichier invalide</translation> </message> <message> - <location line="+2"/> + <location line="+159"/> <source>Copy</source> <translation>Copier</translation> </message> @@ -11491,9 +14100,18 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Abandonner</translation> </message> <message> - <location line="+2"/> <source>The file %1 is not in a subdirectory of the resource file. Continuing will result in an invalid resource file.</source> - <translation>Le fichier %1 n'est pas dans un sous-dossier du fichier de ressource. Continuer résulterait en un fichier de ressource invalide.</translation> + <translation type="obsolete">Le fichier %1 n'est pas dans un sous-dossier du fichier de ressource. Continuer résulterait en un fichier de ressource invalide.</translation> + </message> + <message> + <location line="-9"/> + <source>Invalid file location</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>The file %1 is not in a subdirectory of the resource file. You now have the option to copy this file to a valid location.</source> + <translation type="unfinished"></translation> </message> <message> <location line="+15"/> @@ -11524,7 +14142,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>SharedTools::ResourceView</name> <message> - <location filename="../../../src/shared/qrceditor/resourceview.cpp" line="+362"/> + <location filename="../../../src/shared/qrceditor/resourceview.cpp" line="+355"/> <source>Add Files...</source> <translation>Ajouter des fichiers...</translation> </message> @@ -11597,64 +14215,52 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>ShortcutSettings</name> <message> - <location filename="../../../src/plugins/coreplugin/dialogs/shortcutsettings.ui"/> <source>Keyboard Shortcuts</source> - <translation>Rarccourcis clavier</translation> + <translation type="obsolete">Rarccourcis clavier</translation> </message> <message> - <location/> <source>Filter:</source> - <translation>Filtre :</translation> + <translation type="obsolete">Filtre :</translation> </message> <message> - <location/> <source>Command</source> - <translation>Commande</translation> + <translation type="obsolete">Commande</translation> </message> <message> - <location/> <source>Label</source> - <translation>Libellé</translation> + <translation type="obsolete">Libellé</translation> </message> <message> - <location/> <source>Shortcut</source> - <translation>Raccourci</translation> + <translation type="obsolete">Raccourci</translation> </message> <message> - <location/> <source>Defaults</source> - <translation>Restaurer</translation> + <translation type="obsolete">Restaurer</translation> </message> <message> - <location/> <source>Import...</source> - <translation>Importer...</translation> + <translation type="obsolete">Importer...</translation> </message> <message> - <location/> <source>Export...</source> - <translation>Exporter...</translation> + <translation type="obsolete">Exporter...</translation> </message> <message> - <location/> <source>Key Sequence</source> - <translation>Combinaison de touches</translation> + <translation type="obsolete">Combinaison de touches</translation> </message> <message> - <location/> <source>Shortcut:</source> - <translation>Raccourci :</translation> + <translation type="obsolete">Raccourci :</translation> </message> <message> - <location/> <source>Reset</source> - <translation>Réinitialiser</translation> + <translation type="obsolete">Réinitialiser</translation> </message> <message> - <location/> <source>Remove</source> - <translation>Supprimer</translation> + <translation type="obsolete">Supprimer</translation> </message> </context> <context> @@ -11731,28 +14337,40 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <source>Server start script:</source> <translation>Script de démarrage du serveur :</translation> </message> + <message> + <location/> + <source>Debugger:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Local executable:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Sysroot:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Subversion::Internal::SettingsPage</name> <message> - <location filename="../../../src/plugins/subversion/settingspage.ui"/> <source>Prompt to submit</source> - <translation>Invite lors du submit</translation> + <translation type="obsolete">Invite lors du submit</translation> </message> <message> - <location/> <source>Subversion Command:</source> - <translation>Commande Subversion :</translation> + <translation type="obsolete">Commande Subversion :</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/subversion/settingspage.ui"/> <source>Authentication</source> <translation>Identification</translation> </message> <message> - <location/> <source>User name:</source> - <translation>Nom d'utilisateur :</translation> + <translation type="obsolete">Nom d'utilisateur :</translation> </message> <message> <location/> @@ -11760,15 +14378,60 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Mot de passe :</translation> </message> <message> - <location filename="../../../src/plugins/subversion/settingspage.cpp" line="+86"/> + <location filename="../../../src/plugins/subversion/settingspage.cpp" line="+106"/> <source>Subversion</source> <translation>Subversion</translation> </message> + <message> + <location filename="../../../src/plugins/subversion/settingspage.ui"/> + <source>Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Subversion command:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Username:</source> + <translation type="unfinished">Nom d'utilisateur :</translation> + </message> + <message> + <location/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Timeout:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Prompt on submit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Ignore whitespace changes in annotation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Log count:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Subversion::Internal::SettingsPageWidget</name> <message> - <location line="-36"/> + <location filename="../../../src/plugins/subversion/settingspage.cpp" line="-55"/> <source>Subversion Command</source> <translation>Commande Subversion</translation> </message> @@ -11787,12 +14450,12 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>Subversion::Internal::SubversionPlugin</name> <message> - <location filename="../../../src/plugins/subversion/subversionplugin.cpp" line="+281"/> + <location filename="../../../src/plugins/subversion/subversionplugin.cpp" line="+302"/> <source>&Subversion</source> <translation>&Subversion</translation> </message> <message> - <location line="+11"/> + <location line="+37"/> <source>Add</source> <translation>Ajouter</translation> </message> @@ -11807,32 +14470,28 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Alt+S,Alt+A</translation> </message> <message> - <location line="+4"/> <source>Delete</source> - <translation>Supprimer</translation> + <translation type="obsolete">Supprimer</translation> </message> <message> - <location line="+0"/> <source>Delete "%1"</source> - <translation>Supprimer "%1"</translation> + <translation type="obsolete">Supprimer "%1"</translation> </message> <message> - <location line="+7"/> <source>Revert</source> - <translation>Rétablir</translation> + <translation type="obsolete">Rétablir</translation> </message> <message> - <location line="+0"/> <source>Revert "%1"</source> - <translation>Rétablir "%1"</translation> + <translation type="obsolete">Rétablir "%1"</translation> </message> <message> - <location line="+9"/> + <location line="+32"/> <source>Diff Project</source> <translation>Faire un diff sur le projet</translation> </message> <message> - <location line="+6"/> + <location line="-65"/> <source>Diff Current File</source> <translation>Faire un diff du fichier courant</translation> </message> @@ -11847,12 +14506,12 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Alt+S,Alt+D</translation> </message> <message> - <location line="+6"/> + <location line="+124"/> <source>Commit All Files</source> <translation>Faire un commit de tous les fichiers</translation> </message> <message> - <location line="+6"/> + <location line="-90"/> <source>Commit Current File</source> <translation>Faire un commit du fichier courant</translation> </message> @@ -11867,7 +14526,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Alt+S,Alt+C</translation> </message> <message> - <location line="+6"/> + <location line="-33"/> <source>Filelog Current File</source> <translation>Journal du fichier courant</translation> </message> @@ -11877,7 +14536,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Journal du fichier "%1"</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Annotate Current File</source> <translation>Annoter le fichier courant</translation> </message> @@ -11887,22 +14546,102 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Annoter "%1"</translation> </message> <message> - <location line="+8"/> + <location line="+117"/> <source>Describe...</source> <translation>Décrire...</translation> </message> <message> - <location line="+7"/> + <location line="-62"/> <source>Project Status</source> <translation>Statut du projet</translation> </message> <message> - <location line="+6"/> + <location line="-26"/> + <source>Delete...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Delete "%1"...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Revert...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Revert "%1"...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Diff Project "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Status of Project "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Log Project</source> + <translation type="unfinished">Réaliser un log du projet</translation> + </message> + <message> + <location line="+0"/> + <source>Log Project "%1"</source> + <translation type="unfinished">Réaliser un log du projet "%1"</translation> + </message> + <message> + <location line="+7"/> <source>Update Project</source> <translation>Mettre à jour le projet</translation> </message> + <message> + <location line="+0"/> + <source>Update Project "%1"</source> + <translation type="unfinished">Mettre à jour le projet "%1"</translation> + </message> + <message> + <location line="+7"/> + <source>Commit Project</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Commit Project "%1"</source> + <translation type="unfinished"></translation> + </message> <message> <location line="+9"/> + <source>Diff Repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Repository Status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Log Repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Update Repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Revert Repository...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>Commit</source> <translation>Faire un commit</translation> </message> @@ -11922,7 +14661,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>&Refaire</translation> </message> <message> - <location line="+40"/> + <location line="+27"/> <source>Closing Subversion Editor</source> <translation>Fermeture de l'éditeur Subversion</translation> </message> @@ -11937,22 +14676,36 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>La vérification du message de commit a échoué. Voulez-vous soumettre vos modifications ?</translation> </message> <message> - <location line="+124"/> + <location line="+131"/> + <source>Revert repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Would you like to revert all changes to the repository?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Revert failed: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> <source>The file has been changed. Do you want to revert it?</source> <translation>Le fichier a été modifié. Voulez-vous le rétablir ?</translation> </message> <message> - <location line="+81"/> <source>The commit list spans several repositories (%1). Please commit them one by one.</source> - <translation>La liste de commits s'étend sur plusieur répertoire (%1). Veuillez les ajouter un par un.</translation> + <translation type="obsolete">La liste de commits s'étend sur plusieur répertoire (%1). Veuillez les ajouter un par un.</translation> </message> <message> - <location line="+18"/> + <location line="+60"/> <source>Another commit is currently being executed.</source> <translation>Un autre commit est en cours d'exécution.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>There are no modified files.</source> <translation>Il n'y a aucun fichier modifié.</translation> </message> @@ -11962,7 +14715,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Impossible de créer le fichier temporaire : %1</translation> </message> <message> - <location line="+189"/> + <location line="+257"/> <source>Describe</source> <translation>Décrire</translation> </message> @@ -11972,16 +14725,22 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Numéro de révision :</translation> </message> <message> - <location line="+47"/> + <location line="+33"/> + <source>Executing in %1: %2 %3 +</source> + <translation type="unfinished">Exécute dans %1 : %2 %3 +</translation> + </message> + <message> + <location line="+14"/> <source>No subversion executable specified!</source> <translation>Aucun exécutable Subversion n'a été spécifié !</translation> </message> <message> - <location line="+8"/> + <location line="-15"/> <source>Executing: %1 %2 </source> - <extracomment>Executing: <executable> <arguments></extracomment> - <translation>Exécute %1 %2 + <translation type="unfinished">Exécute %1 %2 </translation> </message> <message> @@ -11991,24 +14750,24 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation type="obsolete">%1 Exécution de : %2 %3</translation> </message> <message> - <location line="+29"/> + <location line="+57"/> <source>The process terminated with exit code %1.</source> - <translation>Le processus s'est terminé avec le code %1.</translation> + <translation type="unfinished">Le processus s'est terminé avec le code %1.</translation> </message> <message> <location line="+3"/> <source>The process terminated abnormally.</source> - <translation>Le processus s'est terminé de façon anormale.</translation> + <translation type="unfinished">Le processus s'est terminé de façon anormale.</translation> </message> <message> <location line="+3"/> <source>Could not start subversion '%1'. Please check your settings in the preferences.</source> - <translation>Impossible de démarrer subversion '%1'. Veuillez vérifier la configuration dans les préférences.</translation> + <translation type="unfinished">Impossible de démarrer subversion '%1'. Veuillez vérifier la configuration dans les préférences.</translation> </message> <message> <location line="+3"/> <source>Subversion did not respond within timeout limit (%1 ms).</source> - <translation>Subversion n'a pas répondu après la limite de temps (%1 ms).</translation> + <translation type="unfinished">Subversion n'a pas répondu après la limite de temps (%1 ms).</translation> </message> </context> <context> @@ -12022,7 +14781,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>TextEditor::BaseFileFind</name> <message> - <location filename="../../../src/plugins/texteditor/basefilefind.cpp" line="+119"/> + <location filename="../../../src/plugins/texteditor/basefilefind.cpp" line="+155"/> <location line="+21"/> <source>%1 found</source> <translation>%1 élément(s) trouvé(s)</translation> @@ -12035,14 +14794,18 @@ To do this, you type this shortcut and a space in the Locator entry field, and t </message> <message> <location line="+27"/> + <source>Use regular e&xpressions</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Use Regular E&xpressions</source> - <translation>Utiliser des e&xpressions régulières</translation> + <translation type="obsolete">Utiliser des e&xpressions régulières</translation> </message> </context> <context> <name>TextEditor::BaseTextDocument</name> <message> - <location filename="../../../src/plugins/texteditor/basetextdocument.cpp" line="+159"/> + <location filename="../../../src/plugins/texteditor/basetextdocument.cpp" line="+233"/> <source>untitled</source> <translatorcomment>document ? (en plus c'est plus long...)</translatorcomment> <translation>sans titre</translation> @@ -12056,12 +14819,12 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>TextEditor::BaseTextEditor</name> <message> - <location filename="../../../src/plugins/texteditor/basetexteditor.cpp" line="+254"/> + <location filename="../../../src/plugins/texteditor/basetexteditor.cpp" line="+275"/> <source>Print Document</source> <translation>Imprimer le document</translation> </message> <message> - <location line="+290"/> + <location line="+252"/> <source><b>Error:</b> Could not decode "%1" with "%2"-encoding. Editing not possible.</source> <translatorcomment>error -> erreur ;)</translatorcomment> <translation><b>Erreur :</b> Impossible de décoder "%1" avec l'encodage "%2". L'édition est impossible.</translation> @@ -12075,7 +14838,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <context> <name>TextEditor::BaseTextEditorEditable</name> <message> - <location line="+4324"/> + <location line="+4833"/> <source>Line: %1, Col: %2</source> <translation>Ligne : %1, Col : %2</translation> </message> @@ -12138,9 +14901,8 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Toujours</translation> </message> <message> - <location/> <source>In leading white space</source> - <translation>En début de ligne uniquement</translation> + <translation type="obsolete">En début de ligne uniquement</translation> </message> <message> <location/> @@ -12182,6 +14944,56 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <source>&Ensure newline at end of file</source> <translation>&Forcer un retour de ligne à la fin du fichier</translation> </message> + <message> + <location/> + <source>Automatically determine based on the nearest indented line (previous line preferred over next line)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Based on the surrounding lines</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Block indentation style:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Exclude Braces</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Include Braces</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>GNU Style</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>In Leading White Space</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Mouse</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Enable &mouse navigation</source> + <translation type="unfinished">Activer la navigation à la &souris</translation> + </message> + <message> + <location/> + <source>Enable scroll &wheel zooming</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TextEditor::DisplaySettingsPage</name> @@ -12221,9 +15033,8 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Surligner les &blocs</translation> </message> <message> - <location/> <source>Animate matching parentheses</source> - <translation>Animer les parenthèses correspondantes</translation> + <translation type="obsolete">Animer les parenthèses correspondantes</translation> </message> <message> <location/> @@ -12241,38 +15052,63 @@ To do this, you type this shortcut and a space in the Locator entry field, and t <translation>Afficher une &marge à la colonne :</translation> </message> <message> - <location/> <source>Navigation</source> - <translation>Navigation</translation> + <translation type="obsolete">Navigation</translation> </message> <message> - <location/> <source>Enable &mouse navigation</source> - <translation>Activer la navigation à la &souris</translation> + <translation type="obsolete">Activer la navigation à la &souris</translation> </message> <message> - <location/> <source>Mark text changes</source> <translatorcomment>Put a red mark next to the text that has been modified since the last save</translatorcomment> - <translation>Marquer le texte modifié</translation> + <translation type="obsolete">Marquer le texte modifié</translation> + </message> + <message> + <location/> + <source>Mark &text changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>&Animate matching parentheses</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Auto-fold first &comment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Center &cursor on scroll</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TextEditor::FontSettingsPage</name> <message> - <location filename="../../../src/plugins/texteditor/fontsettingspage.cpp" line="+314"/> <source>Font & Colors</source> - <translation>Polices & couleurs</translation> + <translation type="obsolete">Polices & couleurs</translation> </message> <message> - <location line="+124"/> + <location filename="../../../src/plugins/texteditor/fontsettingspage.cpp" line="+452"/> <source>Copy Color Scheme</source> <translation>Copier le jeu de couleurs</translation> </message> <message> - <location line="+1"/> <source>Color Scheme name:</source> - <translation>Nom du jeu de couleurs :</translation> + <translation type="obsolete">Nom du jeu de couleurs :</translation> + </message> + <message> + <location line="-140"/> + <source>Font && Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+141"/> + <source>Color scheme name:</source> + <translation type="unfinished"></translation> </message> <message> <location line="+1"/> @@ -12357,10 +15193,14 @@ Les encodages suivants pourraient convenir :</translation> <context> <name>TextEditor::Internal::FindInFiles</name> <message> - <location filename="../../../src/plugins/texteditor/findinfiles.cpp" line="+56"/> <source>Files on Disk</source> <translatorcomment>lower character at the beginning because this is indented after "Rechercher dans..."</translatorcomment> - <translation>fichiers sur le disque</translation> + <translation type="obsolete">fichiers sur le disque</translation> + </message> + <message> + <location filename="../../../src/plugins/texteditor/findinfiles.cpp" line="+57"/> + <source>Files on File System</source> + <translation type="unfinished"></translation> </message> <message> <location line="+37"/> @@ -12379,7 +15219,7 @@ Les encodages suivants pourraient convenir :</translation> <translation>&Motif de fichier :</translation> </message> <message> - <location line="+18"/> + <location line="+21"/> <source>Directory to search</source> <translation>Dossier dans lequel effectuer la recherche</translation> </message> @@ -12446,6 +15286,16 @@ Les encodages suivants pourraient convenir :</translation> <source>Delete</source> <translation>Supprimer</translation> </message> + <message> + <location/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Zoom:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TextEditor::Internal::LineNumberFilter</name> @@ -12463,12 +15313,16 @@ Les encodages suivants pourraient convenir :</translation> <context> <name>TextEditor::Internal::TextEditorPlugin</name> <message> - <location filename="../../../src/plugins/texteditor/texteditorplugin.cpp" line="+94"/> <source>Creates a text file (.txt).</source> - <translation>Créer un fichier texte (.txt).</translation> + <translation type="obsolete">Créer un fichier texte (.txt).</translation> </message> <message> - <location line="+1"/> + <location filename="../../../src/plugins/texteditor/texteditorplugin.cpp" line="+94"/> + <source>Creates a text file. The default file extension is <tt>.txt</tt>. You can specify a different extension as part of the filename.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Text File</source> <translation>Fichier texte</translation> </message> @@ -12506,7 +15360,7 @@ Les encodages suivants pourraient convenir :</translation> <context> <name>TextEditor::TextEditorActionHandler</name> <message> - <location filename="../../../src/plugins/texteditor/texteditoractionhandler.cpp" line="+117"/> + <location filename="../../../src/plugins/texteditor/texteditoractionhandler.cpp" line="+123"/> <source>&Undo</source> <translation>Annu&ler</translation> </message> @@ -12560,12 +15414,42 @@ Les encodages suivants pourraient convenir :</translation> <source>Enable Text &Wrapping</source> <translation>Activer le &retour à la ligne automatique</translation> </message> + <message> + <location line="+52"/> + <source>Reset Font Size</source> + <translation type="unfinished">Réinitialiser la taille de la police</translation> + </message> + <message> + <location line="+3"/> + <source>Ctrl+0</source> + <translation type="unfinished">Ctrl+0</translation> + </message> + <message> + <location line="+5"/> + <source>Go to Block Start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Go to Block End</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Go to Block Start With Selection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Go to Block End With Selection</source> + <translation type="unfinished"></translation> + </message> <message> <source>Ctrl+E, Ctrl+W</source> <translation type="obsolete">Ctrl+E, Ctrl+W</translation> </message> <message> - <location line="-20"/> + <location line="-97"/> <source>%1+E, R</source> <translation>%1+E, R</translation> </message> @@ -12607,7 +15491,7 @@ Les encodages suivants pourraient convenir :</translation> <message> <location line="+4"/> <source>Collapse</source> - <translation>Réduire</translation> + <translation type="unfinished">Réduire</translation> </message> <message> <location line="+2"/> @@ -12617,7 +15501,7 @@ Les encodages suivants pourraient convenir :</translation> <message> <location line="+4"/> <source>Expand</source> - <translation>Développer</translation> + <translation type="unfinished">Développer</translation> </message> <message> <location line="+2"/> @@ -12650,44 +15534,40 @@ Les encodages suivants pourraient convenir :</translation> <translation>Ctrl+-</translation> </message> <message> - <location line="+4"/> <source>Goto Block Start</source> - <translation>Aller au début du bloc</translation> + <translation type="obsolete">Aller au début du bloc</translation> </message> <message> - <location line="+2"/> + <location line="+14"/> <source>Ctrl+[</source> <translation>Ctrl+[</translation> </message> <message> - <location line="+4"/> <source>Goto Block End</source> - <translation>Aller à la fin du bloc</translation> + <translation type="obsolete">Aller à la fin du bloc</translation> </message> <message> - <location line="+2"/> + <location line="+6"/> <source>Ctrl+]</source> <translation>Ctrl+]</translation> </message> <message> - <location line="+4"/> <source>Goto Block Start With Selection</source> <translatorcomment>Allez jusqu'au début du bloc avec la sélection?</translatorcomment> - <translation>Sélectionner jusqu'au début du bloc</translation> + <translation type="obsolete">Sélectionner jusqu'au début du bloc</translation> </message> <message> - <location line="+2"/> + <location line="+6"/> <source>Ctrl+{</source> <translation>Ctrl+{</translation> </message> <message> - <location line="+3"/> <source>Goto Block End With Selection</source> <translatorcomment>Allez jusqu'à la fin du bloc avec la sélection?</translatorcomment> - <translation>Sélectionner jusqu'à la fin du bloc</translation> + <translation type="obsolete">Sélectionner jusqu'à la fin du bloc</translation> </message> <message> - <location line="+2"/> + <location line="+5"/> <source>Ctrl+}</source> <translation>Ctrl+}</translation> </message> @@ -12707,7 +15587,97 @@ Les encodages suivants pourraient convenir :</translation> <translation>Sélectionner le bloc en dessous</translation> </message> <message> - <location line="+116"/> + <location line="+25"/> + <source>Join Lines</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ctrl+J</source> + <translation type="unfinished">Ctrl+J</translation> + </message> + <message> + <location line="+5"/> + <source>Goto Line Start</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Line End</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Next Line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Previous Line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Previous Character</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Next Character</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Previous Word</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Next Word</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Goto Line Start With Selection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Line End With Selection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Next Line With Selection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Previous Line With Selection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Previous Character With Selection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Next Character With Selection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Previous Word With Selection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Goto Next Word With Selection</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+96"/> <source><line number></source> <translation><numéro de ligne></translation> </message> @@ -12716,7 +15686,7 @@ Les encodages suivants pourraient convenir :</translation> <translation type="obsolete">Ctrl+Shift+U</translation> </message> <message> - <location line="-111"/> + <location line="-169"/> <source>Move Line Up</source> <translation>Déplacer la ligne au-dessus</translation> </message> @@ -12763,7 +15733,7 @@ Les encodages suivants pourraient convenir :</translation> <context> <name>TextEditor::TextEditorSettings</name> <message> - <location filename="../../../src/plugins/texteditor/texteditorsettings.cpp" line="+64"/> + <location filename="../../../src/plugins/texteditor/texteditorsettings.cpp" line="+103"/> <source>Text</source> <translation>Texte</translation> </message> @@ -12904,19 +15874,16 @@ Les encodages suivants pourraient convenir :</translation> <translation>Emplacement du Diff</translation> </message> <message> - <location line="+4"/> - <location line="+8"/> - <location line="+8"/> <source>Text Editor</source> - <translation>Éditeur de texte</translation> + <translation type="obsolete">Éditeur de texte</translation> </message> <message> - <location line="-10"/> + <location line="+10"/> <source>Behavior</source> <translation>Comportement</translation> </message> <message> - <location line="+8"/> + <location line="+7"/> <source>Display</source> <translation>Affichage</translation> </message> @@ -12924,7 +15891,7 @@ Les encodages suivants pourraient convenir :</translation> <context> <name>ToolChain</name> <message> - <location filename="../../../src/plugins/projectexplorer/toolchain.cpp" line="+113"/> + <location filename="../../../src/plugins/projectexplorer/toolchain.cpp" line="+132"/> <source>GCC</source> <translation>GCC</translation> </message> @@ -12957,6 +15924,16 @@ Les encodages suivants pourraient convenir :</translation> <source>GCCE</source> <translation>GCCE</translation> </message> + <message> + <location line="+2"/> + <source>GCCE/GnuPoc</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>RVCT (ARMV6)/GnuPoc</source> + <translation type="unfinished"></translation> + </message> <message> <location line="+2"/> <source>RVCT (ARMV5)</source> @@ -12967,6 +15944,11 @@ Les encodages suivants pourraient convenir :</translation> <source>RVCT (ARMV6)</source> <translation>RVCT (ARMV6)</translation> </message> + <message> + <location line="+2"/> + <source>GCC for Maemo</source> + <translation type="unfinished"></translation> + </message> <message> <location line="+2"/> <source>Other</source> @@ -13007,7 +15989,7 @@ Les encodages suivants pourraient convenir :</translation> <translation>&Fermer</translation> </message> <message> - <location filename="../../../src/shared/help/topicchooser.cpp" line="+42"/> + <location filename="../../../src/shared/help/topicchooser.cpp" line="+40"/> <source>Choose a topic for <b>%1</b>:</source> <translation>Choisissez un thème pour <b>%1</b> :</translation> </message> @@ -13015,16 +15997,20 @@ Les encodages suivants pourraient convenir :</translation> <context> <name>VCSBase</name> <message> - <location filename="../../../src/plugins/vcsbase/vcsbaseconstants.h" line="+38"/> - <location line="+3"/> + <location filename="../../../src/plugins/vcsbase/vcsbaseconstants.h" line="+39"/> <source>Version Control</source> <translation>Gestion de versions</translation> </message> <message> - <location line="-2"/> + <location line="+3"/> <source>Common</source> <translation>Commun</translation> </message> + <message> + <location line="+2"/> + <source>Project from Version Control</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>VCSBase::Internal::NickNameDialog</name> @@ -13071,7 +16057,17 @@ Les encodages suivants pourraient convenir :</translation> <context> <name>VCSBase::VCSBaseEditor</name> <message> - <location filename="../../../src/plugins/vcsbase/vcsbaseeditor.cpp" line="+327"/> + <location filename="../../../src/plugins/vcsbase/vcsbaseeditor.cpp" line="+170"/> + <source>Annotate "%1"</source> + <translation type="unfinished">Annoter "%1"</translation> + </message> + <message> + <location line="+1"/> + <source>Copy "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+218"/> <source>Describe change %1</source> <translation>Decrivez le changement %1</translation> </message> @@ -13079,7 +16075,7 @@ Les encodages suivants pourraient convenir :</translation> <context> <name>VCSBase::VCSBaseSubmitEditor</name> <message> - <location filename="../../../src/plugins/vcsbase/vcsbasesubmiteditor.cpp" line="+138"/> + <location filename="../../../src/plugins/vcsbase/vcsbasesubmiteditor.cpp" line="+142"/> <source>Check message</source> <translation>Contrôle du message</translation> </message> @@ -13089,7 +16085,7 @@ Les encodages suivants pourraient convenir :</translation> <translation>Inserez le nom...</translation> </message> <message> - <location line="+313"/> + <location line="+325"/> <source>Prompt to submit</source> <translation>Invite lors du submit</translation> </message> @@ -13099,22 +16095,41 @@ Les encodages suivants pourraient convenir :</translation> <translation>La vérification du message de submit a échoué</translation> </message> <message> - <location line="+28"/> + <location line="+21"/> + <source>Executing %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Executing [%1] %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> <source>Unable to open '%1': %2</source> <translation>Impossible d'ouvrir '%1' : %2</translation> </message> <message> - <location line="+10"/> + <location line="+15"/> <source>The check script '%1' could not be started: %2</source> <translation>Le script de vérification '%1' ne peut pas être démarré : %2</translation> </message> + <message> + <location line="+7"/> + <source>The check script '%1' timed out.</source> + <translation type="unfinished"></translation> + </message> <message> <location line="+4"/> + <source>The check script '%1' crashed</source> + <translation type="unfinished"></translation> + </message> + <message> <source>The check script '%1' could not be run: %2</source> - <translation>Le script de vérification '%1' ne peut pas être exécuté : %2</translation> + <translation type="obsolete">Le script de vérification '%1' ne peut pas être exécuté : %2</translation> </message> <message> - <location line="+7"/> + <location line="+10"/> <source>The check script returned exit code %1.</source> <translation>Le script de vérification a retourné le code %1.</translation> </message> @@ -13122,52 +16137,44 @@ Les encodages suivants pourraient convenir :</translation> <context> <name>VCSBaseSettingsPage</name> <message> - <location filename="../../../src/plugins/vcsbase/vcsbasesettingspage.ui"/> <source>Common</source> - <translation>Commun</translation> + <translation type="obsolete">Commun</translation> </message> <message> - <location/> <source>Wrap submit message at:</source> - <translation>Limiter la largeur du message à  :</translation> + <translation type="obsolete">Limiter la largeur du message à  :</translation> </message> <message> - <location/> <source>An executable which is called with the submit message in a temporary file as first argument. It should return with an exit != 0 and a message on standard error to indicate failure.</source> - <translation>Un fichier exécutable qui est appelé avec comme premier argument le message dans un fichier temporaire. Pour indiquer une erreur, il doit se terminer avec un code != 0 et un message sur la sortie d'erreur standard.</translation> + <translation type="obsolete">Un fichier exécutable qui est appelé avec comme premier argument le message dans un fichier temporaire. Pour indiquer une erreur, il doit se terminer avec un code != 0 et un message sur la sortie d'erreur standard.</translation> </message> <message> - <location/> <source>Submit message check script:</source> - <translation>Script de vérification du message :</translation> + <translation type="obsolete">Script de vérification du message :</translation> </message> <message> - <location/> <source>A file listing user names and email addresses in a 4-column mailmap format: name <email> alias <email></source> - <translation>Un fichier listant les noms d'utilisateur et leur adresse email dans le format 4 colonnes de mailmap : + <translation type="obsolete">Un fichier listant les noms d'utilisateur et leur adresse email dans le format 4 colonnes de mailmap : nom <email> alias <email></translation> </message> <message> - <location/> <source>User/alias configuration file:</source> - <translation>Fichier de configuration des alias utilisateur :</translation> + <translation type="obsolete">Fichier de configuration des alias utilisateur :</translation> </message> <message> - <location/> <source>A simple file containing lines with field names like "Reviewed-By:" which will be added below the submit editor.</source> - <translation>Un fichier texte contenant des lignes telles que "Reviewed-By:", qui seront ajoutées à la fin dans l'éditeur de message.</translation> + <translation type="obsolete">Un fichier texte contenant des lignes telles que "Reviewed-By:", qui seront ajoutées à la fin dans l'éditeur de message.</translation> </message> <message> - <location/> <source>User fields configuration file:</source> - <translation>Fichier de configuration des champs utilisateurs :</translation> + <translation type="obsolete">Fichier de configuration des champs utilisateurs :</translation> </message> </context> <context> <name>VCSManager</name> <message> - <location filename="../../../src/plugins/coreplugin/vcsmanager.cpp" line="+144"/> + <location filename="../../../src/plugins/coreplugin/vcsmanager.cpp" line="+149"/> <source>Version Control</source> <translation>Gestion de versions</translation> </message> @@ -13255,22 +16262,34 @@ p, li { white-space: pre-wrap; } <translation>Protocole :</translation> </message> <message> - <location/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">&lt;Comment&gt;</span></p></body></html></source> - <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">&lt;Commentaire&gt;</span></p></body></html></translation> </message> <message> - <location/> <source>Parts to send to server</source> - <translation>Parties à envoyer au serveur</translation> + <translation type="obsolete">Parties à envoyer au serveur</translation> + </message> + <message> + <location/> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-size:9pt;">&lt;Comment&gt;</span></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Parts to Send to Server</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -13309,105 +16328,151 @@ p, li { white-space: pre-wrap; } <translation>Formulaire</translation> </message> <message> - <location/> <source>Server Prefix:</source> - <translation>Préfixe du serveur :</translation> + <translation type="obsolete">Préfixe du serveur :</translation> </message> <message> - <location/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://pastebin.com"><span style=" text-decoration: underline; color:#0000ff;">pastebin.com</span></a><span style=" font-size:8pt;"> allows to send posts to custom subdomains (eg. qtcreator.pastebin.com). Fill in the desired prefix.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Note that the plugin will use this for posting as well as fetching.</span></p></body></html></source> - <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://pastebin.com"><span style=" text-decoration: underline; color:#0000ff;">pastebin.com</span></a><span style=" font-size:8pt;"> permet d'envoyer les snippet à des sous-domaines personnalisés (eg. qtcreator.pastebin.com). Remplissez le préfixe désiré.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Notez que les plugins utiliseront ceci pour poster et pour récupérer les snippets.</span></p></body></html></translation> </message> + <message> + <location/> + <source>Server prefix:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source><html><head/><body> +<p><a href="http://pastebin.com">pastebin.com</a> allows to send posts to custom subdomains (eg. creator.pastebin.com). Fill in the desired prefix.</p> +<p>Note that the plugin will use this for posting as well as fetching.</p></body></html></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>CVS::Internal::SettingsPage</name> <message> - <location filename="../../../src/plugins/cvs/settingspage.ui"/> <source>Prompt to submit</source> - <translation>Invite lors du submit</translation> + <translation type="obsolete">Invite lors du submit</translation> </message> <message> - <location/> <source>When checked, all files touched by a commit will be displayed when clicking on a revision number in the annotation view (retrieved via commit id). Otherwise, only the respective file will be displayed.</source> - <translation>Si coché, tous les fichiers modifiés par un commit seront affichés lors d'un clic sur un numéro de révison dans la vue d'annotation (récupérée par un id de commit). Sinon, seul le fichier respectif sera affiché.</translation> + <translation type="obsolete">Si coché, tous les fichiers modifiés par un commit seront affichés lors d'un clic sur un numéro de révison dans la vue d'annotation (récupérée par un id de commit). Sinon, seul le fichier respectif sera affiché.</translation> </message> <message> - <location/> <source>Describe all files matching commit id:</source> - <translation>Décrire tous les fichiers correspondant à l'id de commit :</translation> + <translation type="obsolete">Décrire tous les fichiers correspondant à l'id de commit :</translation> </message> <message> - <location/> <source>CVS Command:</source> - <translation>Commande CVS :</translation> + <translation type="obsolete">Commande CVS :</translation> </message> <message> - <location/> <source>CVS Root:</source> - <translation>Racine CVS :</translation> + <translation type="obsolete">Racine CVS :</translation> </message> <message> - <location/> <source>Diff Options:</source> - <translation>Options Diff :</translation> + <translation type="obsolete">Options Diff :</translation> </message> <message> - <location filename="../../../src/plugins/cvs/settingspage.cpp" line="+84"/> + <location filename="../../../src/plugins/cvs/settingspage.cpp" line="+98"/> <source>CVS</source> <translation>CVS</translation> </message> + <message> + <location filename="../../../src/plugins/cvs/settingspage.ui"/> + <source>Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>CVS command:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>CVS root:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Diff options:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Prompt on submit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>When checked, all files touched by a commit will be displayed when clicking on a revision number in the annotation view (retrieved via commit ID). Otherwise, only the respective file will be displayed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Describe all files matching commit id</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Timeout:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>s</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Debugger::Internal::TrkOptionsWidget</name> <message> - <location filename="../../../src/plugins/debugger/gdb/trkoptionswidget.ui"/> <source>Form</source> - <translation>Formulaire</translation> + <translation type="obsolete">Formulaire</translation> </message> <message> - <location/> <source>Gdb</source> - <translation>Gdb</translation> + <translation type="obsolete">Gdb</translation> </message> <message> - <location/> <source>Symbian ARM gdb location:</source> - <translation>Emplacement du gdb ARM Symbian :</translation> + <translation type="obsolete">Emplacement du gdb ARM Symbian :</translation> </message> <message> - <location/> <source>Communication</source> - <translation>Communication</translation> + <translation type="obsolete">Communication</translation> </message> <message> - <location/> <source>Serial Port</source> - <translation>Port Série</translation> + <translation type="obsolete">Port Série</translation> </message> <message> - <location/> <source>Bluetooth</source> - <translation>Bluetooth</translation> + <translation type="obsolete">Bluetooth</translation> </message> <message> - <location/> <source>Port:</source> - <translation>Port :</translation> + <translation type="obsolete">Port :</translation> </message> <message> - <location/> <source>Device:</source> - <translation>Appareil mobile :</translation> + <translation type="obsolete">Appareil mobile :</translation> </message> </context> <context> @@ -13433,9 +16498,8 @@ p, li { white-space: pre-wrap; } <translation>Agrégation</translation> </message> <message> - <location/> <source>Multiple Inheritance</source> - <translation>Héritage multiple</translation> + <translation type="obsolete">Héritage multiple</translation> </message> <message> <location/> @@ -13452,6 +16516,11 @@ p, li { white-space: pre-wrap; } <source>Use Qt module name in #include-directive</source> <translation>Utiliser le nom du module Qt dans #include-directive</translation> </message> + <message> + <location/> + <source>Multiple inheritance</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Gitorious::Internal::GitoriousHostWidget</name> @@ -13489,9 +16558,8 @@ p, li { white-space: pre-wrap; } <translation>WizardPage</translation> </message> <message> - <location/> <source>Filter:</source> - <translation>Filtre :</translation> + <translation type="obsolete">Filtre :</translation> </message> <message> <location/> @@ -13504,7 +16572,7 @@ p, li { white-space: pre-wrap; } <translation>Mise à jour continue</translation> </message> <message> - <location filename="../../../src/plugins/git/gitorious/gitoriousprojectwidget.cpp" line="+84"/> + <location filename="../../../src/plugins/git/gitorious/gitoriousprojectwidget.cpp" line="+81"/> <source>Project</source> <translation>Projet</translation> </message> @@ -13522,17 +16590,15 @@ p, li { white-space: pre-wrap; } <translation>WizardPage</translation> </message> <message> - <location/> <source>Filter:</source> - <translation>Filtre :</translation> + <translation type="obsolete">Filtre :</translation> </message> <message> - <location/> <source>...</source> - <translation>...</translation> + <translation type="obsolete">...</translation> </message> <message> - <location filename="../../../src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp" line="+83"/> + <location filename="../../../src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp" line="+82"/> <source>Name</source> <translation>Nom</translation> </message> @@ -13547,7 +16613,12 @@ p, li { white-space: pre-wrap; } <translation>Description</translation> </message> <message> - <location line="+74"/> + <location line="+19"/> + <source>Repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+55"/> <source>Choose a repository of the project '%1'.</source> <translation>Choisissez un répertoire pour le projet '%1'.</translation> </message> @@ -13615,19 +16686,16 @@ p, li { white-space: pre-wrap; } <translation>Pour l'aide contextuelle :</translation> </message> <message> - <location/> <source>Show side-by-side if possible</source> - <translation>Afficher côte à côte si possible</translation> + <translation type="obsolete">Afficher côte à côte si possible</translation> </message> <message> - <location/> <source>Always show side-by-side</source> - <translation>Toujours afficher côte à côte</translation> + <translation type="obsolete">Toujours afficher côte à côte</translation> </message> <message> - <location/> <source>Always start full help</source> - <translation>Toujours afficher l'aide complète</translation> + <translation type="obsolete">Toujours afficher l'aide complète</translation> </message> <message> <location/> @@ -13635,24 +16703,20 @@ p, li { white-space: pre-wrap; } <translation>Au démarrage de l'aide :</translation> </message> <message> - <location/> <source>Show my home page</source> - <translation>Afficher ma page d'accueil</translation> + <translation type="obsolete">Afficher ma page d'accueil</translation> </message> <message> - <location/> <source>Show a blank page</source> - <translation>Afficher une page blanche</translation> + <translation type="obsolete">Afficher une page blanche</translation> </message> <message> - <location/> <source>Show my tabs from last session</source> - <translation>Afficher mes onglets de la dernière session</translation> + <translation type="obsolete">Afficher mes onglets de la dernière session</translation> </message> <message> - <location/> <source>Home Page:</source> - <translation>Page d'accueil :</translation> + <translation type="obsolete">Page d'accueil :</translation> </message> <message> <location/> @@ -13684,6 +16748,41 @@ p, li { white-space: pre-wrap; } <source>Export...</source> <translation>Exporter...</translation> </message> + <message> + <location/> + <source>Show Side-by-Side if Possible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Always Show Side-by-Side</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Always Start Full Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show My Home Page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show a Blank Page</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show My Tabs from Last Session</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Home page:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ProjectExplorer::Internal::ProjectExplorerSettingsPageUi</name> @@ -13693,19 +16792,16 @@ p, li { white-space: pre-wrap; } <translation>Compilation et exécution</translation> </message> <message> - <location/> <source>Save all files before Build</source> - <translation>Enregistrer tous les fichiers avant de compiler</translation> + <translation type="obsolete">Enregistrer tous les fichiers avant de compiler</translation> </message> <message> - <location/> <source>Always build Project before Running</source> - <translation>Toujours compiler le projet avant d'exécuter</translation> + <translation type="obsolete">Toujours compiler le projet avant d'exécuter</translation> </message> <message> - <location/> <source>Show Compiler Output on building</source> - <translation>Afficher la sortie du compilateur pendant la compilation</translation> + <translation type="obsolete">Afficher la sortie du compilateur pendant la compilation</translation> </message> <message> <location/> @@ -13717,6 +16813,46 @@ p, li { white-space: pre-wrap; } <source><i>jom</i> is a drop-in replacement for <i>nmake</i> which distributes the compilation process to multiple CPU cores. For more details, see the <a href="http://qt.gitorious.org/qt-labs/jom/">jom Homepage</a>. Disable it if you experience problems with your builds.</source> <translation><i>jom</i> est un remplaçant pour <i>nmake</i> qui répartit le processus de compilation sur les différents cores d'un CPU. Pour plus de détails, voir la <a href="http://qt.gitorious.org/qt-labs/jom/">page consacrée à jom </a>. Désactivez si vous rencontrez des problèmes de compilation.</translation> </message> + <message> + <location/> + <source>Projects Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Current directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>directoryButtonGroup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Save all files before build</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Always build project before running</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show compiler output on building</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Clear old application output on a new run</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ProjectExplorer::Internal::ProjectWelcomePageWidget</name> @@ -13731,22 +16867,19 @@ p, li { white-space: pre-wrap; } <translation>Gestion des sessions...</translation> </message> <message> - <location/> <source>Create New Project...</source> - <translation>Créer un nouveau projet...</translation> + <translation type="obsolete">Créer un nouveau projet...</translation> </message> <message> - <location filename="../../../src/plugins/projectexplorer/projectwelcomepagewidget.cpp" line="+79"/> <source>Open Recent Project</source> - <translation>Ouvrir un projet récent</translation> + <translation type="obsolete">Ouvrir un projet récent</translation> </message> <message> - <location line="+1"/> <source>Resume Session</source> - <translation>Reprendre la session</translation> + <translation type="obsolete">Reprendre la session</translation> </message> <message> - <location line="+31"/> + <location filename="../../../src/plugins/projectexplorer/projectwelcomepagewidget.cpp" line="+128"/> <source>%1 (last session)</source> <translation>%1 (dernière session)</translation> </message> @@ -13756,9 +16889,33 @@ p, li { white-space: pre-wrap; } <translation>%1 (session courante)</translation> </message> <message> - <location line="+46"/> + <location line="+47"/> + <source>New Project</source> + <translation type="unfinished">Nouveau projet</translation> + </message> + <message> <source>New Project...</source> - <translation>Nouveau projet...</translation> + <translation type="obsolete">Nouveau projet...</translation> + </message> + <message> + <location filename="../../../src/plugins/projectexplorer/projectwelcomepagewidget.ui"/> + <source>Recent Sessions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Recent Projects</source> + <translation type="unfinished">Projets récents</translation> + </message> + <message> + <location/> + <source>Open Project...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Create Project...</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -13972,6 +17129,11 @@ p, li { white-space: pre-wrap; } <source>Specify the list of custom widgets and their properties.</source> <translation>Spécifiez la liste des widgets personnalisés et leurs propriétés.</translation> </message> + <message> + <location/> + <source>...</source> + <translation type="unfinished">...</translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::GettingStartedWelcomePageWidget</name> @@ -13981,62 +17143,80 @@ p, li { white-space: pre-wrap; } <translation>Formulaire</translation> </message> <message> - <location/> <source>Examples not installed</source> - <translation>Exemples non trouvés</translation> + <translation type="obsolete">Exemples non trouvés</translation> </message> <message> - <location/> <source>Open</source> - <translation>Ouvrir</translation> + <translation type="obsolete">Ouvrir</translation> </message> <message> - <location filename="../../../src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp" line="+62"/> + <location/> <source>Tutorials</source> <translation>Tutoriels</translation> </message> <message> - <location line="+1"/> <source>Explore Qt Examples</source> - <translation>Explorer les exemples Qt</translation> + <translation type="obsolete">Explorer les exemples Qt</translation> </message> <message> - <location line="+2"/> + <location/> <source>Did You Know?</source> <translation>Le saviez-vous ?</translation> </message> <message> - <location line="+6"/> <source><b>Qt Creator - A quick tour</b></source> - <translation><b>Qt Creator - Aperçu rapide</b></translation> + <translation type="obsolete"><b>Qt Creator - Aperçu rapide</b></translation> </message> <message> - <location line="+2"/> <source>Creating an address book</source> - <translation>Créer un carnet d'adresses</translation> + <translation type="obsolete">Créer un carnet d'adresses</translation> </message> <message> - <location line="+2"/> <source>Understanding widgets</source> - <translation>Comprendre les widgets</translation> + <translation type="obsolete">Comprendre les widgets</translation> </message> <message> - <location line="+2"/> <source>Building with qmake</source> - <translation>Compiler grâce à qmake</translation> + <translation type="obsolete">Compiler grâce à qmake</translation> </message> <message> - <location line="+2"/> <source>Writing test cases</source> - <translation>Écrire des tests</translation> + <translation type="obsolete">Écrire des tests</translation> </message> <message> - <location line="+38"/> + <location filename="../../../src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp" line="+78"/> + <source>The Qt Creator User Interface</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Building and Running an Example</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Creating a Qt C++ Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Creating a Mobile Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Creating a Qt Quick Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+48"/> + <location line="+53"/> <source>Choose an example...</source> <translation>Choisir un exemple...</translation> </message> <message> - <location line="+81"/> + <location line="+89"/> <source>Copy Project to writable Location?</source> <translation>Copier le projet à un emplacement inscriptible ?</translation> </message> @@ -14072,7 +17252,12 @@ p, li { white-space: pre-wrap; } <translation>L'emplacement spécifié existe déjà . Veuillez spécifier un autre emplacement.</translation> </message> <message> - <location line="+61"/> + <location line="+49"/> + <source>New Project</source> + <translation type="unfinished">Nouveau projet</translation> + </message> + <message> + <location line="+24"/> <location line="+7"/> <source>Cmd</source> <comment>Shortcut key</comment> @@ -14092,11 +17277,25 @@ p, li { white-space: pre-wrap; } </message> <message> <location line="+4"/> + <source>You can switch between Qt Creator's modes using <tt>Ctrl+number</tt>:<ul><li>1 - Welcome</li><li>2 - Edit</li><li>3 - Debug</li><li>4 - Projects</li><li>5 - Help</li></ul></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+21"/> + <source>You can add custom build steps in the <a href="qthelp://com.nokia.qtcreator/doc/creator-project-pane.html#build-settings">build settings</a>.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Within a session, you can add <a href="qthelp://com.nokia.qtcreator/doc/creator-project-pane.html#dependencies">dependencies</a> between projects.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>You can switch between Qt Creator's modes using <tt>Ctrl+number</tt>:<ul><li>1 - Welcome</li><li>2 - Edit</li><li>3 - Debug</li><li>4 - Projects</li><li>5 - Help</li><li></li><li>6 - Output</li></ul></source> - <translation>Vous pouvez basculer entre les modes de Qt Creator en utilisant <tt>Ctrl+number</tt>:<ul><li>1 - Accueil</li><li>2 - Éditeur</li><li>3 - Débogueur</li><li>4 - Projets</li><li>5 - Aide</li><li></li><li>6 - Output</li></ul></translation> + <translation type="obsolete">Vous pouvez basculer entre les modes de Qt Creator en utilisant <tt>Ctrl+number</tt>:<ul><li>1 - Accueil</li><li>2 - Éditeur</li><li>3 - Débogueur</li><li>4 - Projets</li><li>5 - Aide</li><li></li><li>6 - Output</li></ul></translation> </message> <message> - <location line="+4"/> + <location line="-20"/> <source>You can show and hide the side bar using <tt>%1+0<tt>.</source> <translation>Vous pouvez afficher et masquer la barre latérale en utilisant <tt>%1+0<tt>.</translation> </message> @@ -14108,7 +17307,7 @@ p, li { white-space: pre-wrap; } <message> <location line="+2"/> <source>If you add <a href="qthelp://com.nokia.qtcreator/doc/creator-external-library-handling.html">external libraries</a>, Qt Creator will automatically offer syntax highlighting and code completion.</source> - <translation>Si vous ajoutez <a href="qthelp://com.nokia.qtcreator/doc/creator-external-library-handling.html">des bibliothèques externes</a>, Qt Creator proposera automatiquement la coloration syntaxique et l'auto-complétion du code.</translation> + <translation type="unfinished">Si vous ajoutez <a href="qthelp://com.nokia.qtcreator/doc/creator-external-library-handling.html">des bibliothèques externes</a>, Qt Creator proposera automatiquement la coloration syntaxique et l'auto-complétion du code.</translation> </message> <message> <location line="+3"/> @@ -14141,17 +17340,15 @@ p, li { white-space: pre-wrap; } <translation>Vous pouvez rapidement rechercher des méthodes, classes, de l'aide et plus à l'aide du <a href="qthelp://com.nokia.qtcreator/doc/creator-navigation.html">Localisateur</a> (<tt>%1+K</tt>).</translation> </message> <message> - <location line="+2"/> <source>You can add custom build steps in the <a href="qthelp://com.nokia.qtcreator/doc/creator-build-settings.html">build settings</a>.</source> - <translation>Vous pouvez ajouter vos propre étapes de compilation dans les <a href="qthelp://com.nokia.qtcreator/doc/creator-build-settings.html">paramètres de compilation</a>.</translation> + <translation type="obsolete">Vous pouvez ajouter vos propre étapes de compilation dans les <a href="qthelp://com.nokia.qtcreator/doc/creator-build-settings.html">paramètres de compilation</a>.</translation> </message> <message> - <location line="+2"/> <source>Within a session, you can add <a href="qthelp://com.nokia.qtcreator/doc/creator-build-settings.html#dependencies">dependencies</a> between projects.</source> - <translation>Dans une session, vous pouvez ajouter des <a href="qthelp://com.nokia.qtcreator/doc/creator-build-settings.html#dependencies">dépendances</a> entre des projets.</translation> + <translation type="obsolete">Dans une session, vous pouvez ajouter des <a href="qthelp://com.nokia.qtcreator/doc/creator-build-settings.html#dependencies">dépendances</a> entre des projets.</translation> </message> <message> - <location line="+2"/> + <location line="+6"/> <source>You can set the preferred editor encoding for every project in <tt>Projects -> Editor Settings -> Default Encoding</tt>.</source> <translation>Vous pouvez définir l'encodage de caractères préféré pour chaque projet dans <tt>Projet -> Paramètres de l'éditeur -> Encodage par défaut</tt>.</translation> </message> @@ -14173,6 +17370,31 @@ p, li { white-space: pre-wrap; } <source>In the editor, <tt>F2</tt> toggles declaration and definition while <tt>F4</tt> toggles header file and source file.</source> <translation type="obsolete">Dans l'éditeur, <tt>F2</tt> passe de la déclaration à la définition de fonction, tandis que <tt>F4</tt> passe du fichier source au fichier d'en-tête.</translation> </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.ui"/> + <source>Explore Qt C++ Examples</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Examples not installed...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Explore Qt Quick Examples</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Open Project...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Create Project...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::S60DevicesPreferencePane</name> @@ -14182,19 +17404,16 @@ p, li { white-space: pre-wrap; } <translation>Formulaire</translation> </message> <message> - <location/> <source>Installed S60 SDKs:</source> - <translation>SDKs S60 installés :</translation> + <translation type="obsolete">SDKs S60 installés :</translation> </message> <message> - <location/> <source>SDK Location</source> - <translation>Emplacement du SDK</translation> + <translation type="obsolete">Emplacement du SDK</translation> </message> <message> - <location/> <source>Qt Location</source> - <translation>Emplacement de Qt</translation> + <translation type="obsolete">Emplacement de Qt</translation> </message> <message> <location/> @@ -14202,10 +17421,30 @@ p, li { white-space: pre-wrap; } <translation>Rafraîchir</translation> </message> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicespreferencepane.cpp" line="+96"/> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicespreferencepane.cpp" line="+370"/> <source>S60 SDKs</source> <translation>SDKs S60</translation> </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicespreferencepane.ui"/> + <source>Add</source> + <translation type="unfinished">Ajouter</translation> + </message> + <message> + <location/> + <source>Change Qt version</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Remove</source> + <translation type="unfinished">Supprimer</translation> + </message> + <message> + <location/> + <source>Error</source> + <translation type="unfinished">Erreur</translation> + </message> </context> <context> <name>TextEditor::Internal::ColorSchemeEdit</name> @@ -14267,69 +17506,100 @@ p, li { white-space: pre-wrap; } <translation>Formulaire</translation> </message> <message> - <location filename="../../../src/plugins/welcome/communitywelcomepagewidget.cpp" line="+47"/> + <location/> <source>News From the Qt Labs</source> <translation>Actualités de Qt Labs</translation> </message> <message> - <location line="+1"/> <source>Qt Websites</source> - <translation>Sites web Qt</translation> + <translation type="obsolete">Sites web Qt</translation> </message> <message> - <location line="+8"/> + <location filename="../../../src/plugins/welcome/communitywelcomepagewidget.cpp" line="+46"/> + <source><b>Forum Nokia</b><br /><font color='gray'>Mobile Application Support</font></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source><b>Qt LGPL Support</b><br /><font color='gray'>Buy commercial Qt support</font></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source><b>Qt Centre</b><br /><font color='gray'>Community based Qt support</font></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source><b>Qt Home</b><br /><font color='gray'>Qt by Nokia on the web</font></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source><b>Qt Git Hosting</b><br /><font color='gray'>Participate in Qt development</font></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source><b>Qt Apps</b><br /><font color='gray'>Find free Qt-based apps</font></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+34"/> <source>http://labs.trolltech.com/blogs/feed</source> - <extracomment>Add localized feed here only if one exists</extracomment> <translation>http://labs.trolltech.com/blogs/feed</translation> </message> <message> - <location line="+3"/> <source>Qt Home</source> - <translation>Qt Home</translation> + <translation type="obsolete">Qt Home</translation> </message> <message> - <location line="+1"/> <source>Qt Labs</source> - <translation>Qt Labs</translation> + <translation type="obsolete">Qt Labs</translation> </message> <message> - <location line="+1"/> <source>Qt Git Hosting</source> - <translation>Dépôts Git Qt</translation> + <translation type="obsolete">Dépôts Git Qt</translation> </message> <message> - <location line="+1"/> <source>Qt Centre</source> - <translation>Qt Centre</translation> + <translation type="obsolete">Qt Centre</translation> </message> <message> - <location line="+1"/> <source>Qt Apps</source> - <translation>Qt Apps</translation> + <translation type="obsolete">Qt Apps</translation> </message> <message> - <location line="+1"/> <source>Qt for Symbian at Forum Nokia</source> - <translation>Qt pour Symbian</translation> + <translation type="obsolete">Qt pour Symbian</translation> </message> <message> <source>Qt for S60 at Forum Nokia</source> <translation type="obsolete">Qt pour S60</translation> </message> + <message> + <location filename="../../../src/plugins/welcome/communitywelcomepagewidget.ui"/> + <source>Qt Support Sites</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Qt Links</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Welcome::WelcomeMode</name> <message> - <location filename="../../../src/plugins/welcome/welcomemode.ui"/> <source>#gradientWidget { background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(247, 247, 247, 255), stop:1 rgba(215, 215, 215, 255)); }</source> - <translation>#gradientWidget { + <translation type="obsolete">#gradientWidget { background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(247, 247, 247, 255), stop:1 rgba(215, 215, 215, 255)); }</translation> </message> <message> - <location/> + <location filename="../../../src/plugins/welcome/welcomemode.ui"/> <source>#headerFrame { border-image: url(:/welcome/images/center_frame_header.png) 0; border-width: 0; @@ -14351,7 +17621,7 @@ p, li { white-space: pre-wrap; } <translation>Votre avis nous interesse</translation> </message> <message> - <location filename="../../../src/plugins/welcome/welcomemode.cpp" line="+116"/> + <location filename="../../../src/plugins/welcome/welcomemode.cpp" line="+109"/> <source>Welcome</source> <translation>Accueil</translation> </message> @@ -14359,38 +17629,72 @@ p, li { white-space: pre-wrap; } <context> <name>Utils::DetailsButton</name> <message> - <location filename="../../../src/libs/utils/detailsbutton.cpp" line="+19"/> <source>Show Details</source> - <translation>Afficher les détails</translation> + <translation type="obsolete">Afficher les détails</translation> + </message> + <message> + <location filename="../../../src/libs/utils/detailsbutton.cpp" line="+68"/> + <source>Details</source> + <translation type="unfinished">Détails</translation> </message> </context> <context> <name>OpenWith::Editors</name> <message> - <location filename="../../../src/plugins/coreplugin/coreconstants.h" line="+94"/> + <location filename="../../../src/plugins/coreplugin/coreconstants.h" line="+105"/> <source>Plain Text Editor</source> <translation>Éditeur de texte</translation> </message> <message> - <location line="+1"/> + <location filename="../../../src/plugins/bineditor/bineditorconstants.h" line="+37"/> <source>Binary Editor</source> <translation>Éditeur de binaire</translation> </message> <message> - <location filename="../../../src/plugins/cppeditor/cppeditorconstants.h" line="+39"/> + <location filename="../../../src/plugins/cppeditor/cppeditorconstants.h" line="+40"/> <source>C++ Editor</source> <translation>Éditeur C++</translation> </message> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanagerconstants.h" line="+42"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanagerconstants.h" line="+45"/> <source>.pro File Editor</source> <translation>Éditeur de fichier .pro</translation> </message> + <message> + <location filename="../../../src/plugins/genericprojectmanager/genericprojectconstants.h" line="+47"/> + <source>.files Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qmljseditor/qmljseditorconstants.h" line="+44"/> + <source>QMLJS Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectconstants.h" line="+47"/> + <source>.qmlproject Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/externaleditors.cpp" line="+28"/> + <source>Qt Designer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Qt Linguist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/resourceeditor/resourceeditorconstants.h" line="+38"/> + <source>Resource Editor</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Core::Internal::SettingsDialog</name> <message> - <location filename="../../../src/plugins/coreplugin/dialogs/settingsdialog.cpp" line="+58"/> + <location filename="../../../src/plugins/coreplugin/dialogs/settingsdialog.cpp" line="+271"/> <source>Preferences</source> <translation>Préférences</translation> </message> @@ -14411,7 +17715,7 @@ p, li { white-space: pre-wrap; } <translation type="obsolete">Aucun serveur définit dans les options de CodePaster !</translation> </message> <message> - <location filename="../../../src/plugins/cpaster/codepasterprotocol.cpp" line="+70"/> + <location filename="../../../src/plugins/cpaster/codepasterprotocol.cpp" line="+80"/> <source>No Server defined in the CodePaster preferences.</source> <translation>Aucun serveur défini dans les préférences CodePaster.</translation> </message> @@ -14421,7 +17725,7 @@ p, li { white-space: pre-wrap; } <translation>Aucun serveur défini dans les options CodePaster.</translation> </message> <message> - <location line="+83"/> + <location line="+97"/> <source>No such paste</source> <translation>Aucun collage de ce type</translation> </message> @@ -14429,17 +17733,16 @@ p, li { white-space: pre-wrap; } <context> <name>CodePaster::CodePasterSettingsPage</name> <message> - <location filename="../../../src/plugins/cpaster/codepastersettings.cpp" line="+59"/> + <location filename="../../../src/plugins/cpaster/codepastersettings.cpp" line="+67"/> <source>CodePaster</source> <translation>CodePaster</translation> </message> <message> - <location line="+10"/> <source>Code Pasting</source> - <translation>Collage de code</translation> + <translation type="obsolete">Collage de code</translation> </message> <message> - <location line="+6"/> + <location line="+27"/> <source>Server:</source> <translation>Serveur :</translation> </message> @@ -14452,22 +17755,19 @@ p, li { white-space: pre-wrap; } <context> <name>PasteBinDotComProtocol</name> <message> - <location filename="../../../src/plugins/cpaster/pastebindotcomprotocol.cpp" line="+106"/> <source>Error during paste</source> - <translation>Erreur durant le collage</translation> + <translation type="obsolete">Erreur durant le collage</translation> </message> </context> <context> <name>PasteBinDotComSettings</name> <message> - <location filename="../../../src/plugins/cpaster/pastebindotcomsettings.cpp" line="+53"/> <source>Pastebin.com</source> - <translation>Pastebin.com</translation> + <translation type="obsolete">Pastebin.com</translation> </message> <message> - <location line="+10"/> <source>Code Pasting</source> - <translation>Collage de code</translation> + <translation type="obsolete">Collage de code</translation> </message> <message> <source>CodePaster</source> @@ -14477,43 +17777,45 @@ p, li { white-space: pre-wrap; } <context> <name>PasteView</name> <message> - <location filename="../../../src/plugins/cpaster/pasteview.cpp" line="+89"/> <source>Paste</source> - <translation>Coller</translation> + <translation type="obsolete">Coller</translation> </message> <message> - <location line="+11"/> - <location line="+46"/> <source><Username></source> - <translation><Utilisateur></translation> + <translation type="obsolete"><Utilisateur></translation> </message> <message> - <location line="-38"/> - <location line="+43"/> <source><Description></source> - <translation><Description></translation> + <translation type="obsolete"><Description></translation> </message> <message> - <location line="-35"/> - <location line="+40"/> <source><Comment></source> - <translation><Commentaire></translation> + <translation type="obsolete"><Commentaire></translation> </message> </context> <context> <name>CppTools::Internal::CppFindReferences</name> <message> - <location filename="../../../src/plugins/cpptools/cppfindreferences.cpp" line="+235"/> <source>Searching...</source> - <translation>Recherche...</translation> + <translation type="obsolete">Recherche...</translation> + </message> + <message> + <location filename="../../../src/plugins/cpptools/cppfindreferences.cpp" line="+293"/> + <location line="+160"/> + <source>Searching</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>CVS::Internal::CheckoutWizard</name> <message> - <location filename="../../../src/plugins/cvs/checkoutwizard.cpp" line="+54"/> <source>Checks out a project from a CVS repository.</source> - <translation>Obtient un projet à partir d'un dépôt CVS.</translation> + <translation type="obsolete">Obtient un projet à partir d'un dépôt CVS.</translation> + </message> + <message> + <location filename="../../../src/plugins/cvs/checkoutwizard.cpp" line="+56"/> + <source>Checks out a CVS repository and tries to load the contained project.</source> + <translation type="unfinished"></translation> </message> <message> <location line="+5"/> @@ -14525,6 +17827,11 @@ p, li { white-space: pre-wrap; } <name>CVS::Internal::CheckoutWizardPage</name> <message> <location filename="../../../src/plugins/cvs/checkoutwizardpage.cpp" line="+38"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> + <message> + <location line="+1"/> <source>Specify repository and path.</source> <translation>Spécifier le dépôt et le chemin.</translation> </message> @@ -14537,7 +17844,7 @@ p, li { white-space: pre-wrap; } <context> <name>CVSPlugin</name> <message> - <location filename="../../../src/plugins/cvs/cvsplugin.cpp" line="+78"/> + <location filename="../../../src/plugins/cvs/cvsplugin.cpp" line="+77"/> <source>Cannot find repository for '%1'</source> <translation>Impossible de trouver le dépot de '%1'</translation> </message> @@ -14550,12 +17857,12 @@ p, li { white-space: pre-wrap; } <translation>Échec de l'analyse de la sortie </translation> </message> <message> - <location line="+169"/> + <location line="+174"/> <source>&CVS</source> <translation>&CVS</translation> </message> <message> - <location line="+11"/> + <location line="+38"/> <source>Add</source> <translation>Ajouter</translation> </message> @@ -14570,32 +17877,28 @@ p, li { white-space: pre-wrap; } <translation>Alt+C,Alt+A</translation> </message> <message> - <location line="+4"/> <source>Delete</source> - <translation>Supprimer</translation> + <translation type="obsolete">Supprimer</translation> </message> <message> - <location line="+0"/> <source>Delete "%1"</source> - <translation>Supprimer "%1"</translation> + <translation type="obsolete">Supprimer "%1"</translation> </message> <message> - <location line="+7"/> <source>Revert</source> - <translation>Rétablir</translation> + <translation type="obsolete">Rétablir</translation> </message> <message> - <location line="+0"/> <source>Revert "%1"</source> - <translation>Rétablir "%1"</translation> + <translation type="obsolete">Rétablir "%1"</translation> </message> <message> - <location line="+9"/> + <location line="+32"/> <source>Diff Project</source> <translation>Faire un diff sur le projet</translation> </message> <message> - <location line="+6"/> + <location line="-65"/> <source>Diff Current File</source> <translation>Faire un diff du fichier courant</translation> </message> @@ -14610,12 +17913,12 @@ p, li { white-space: pre-wrap; } <translation>Alt+C,Alt+D</translation> </message> <message> - <location line="+6"/> + <location line="+99"/> <source>Commit All Files</source> <translation>Faire un commit de tous les fichiers</translation> </message> <message> - <location line="+6"/> + <location line="-65"/> <source>Commit Current File</source> <translation>Faire un commit du fichier courant</translation> </message> @@ -14630,7 +17933,7 @@ p, li { white-space: pre-wrap; } <translation>Alt+C,Alt+C</translation> </message> <message> - <location line="+6"/> + <location line="-33"/> <source>Filelog Current File</source> <translation>Journal du fichier courant</translation> </message> @@ -14640,7 +17943,7 @@ p, li { white-space: pre-wrap; } <translation>Journal du fichier "%1"</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Annotate Current File</source> <translation>Annoter le fichier courant</translation> </message> @@ -14649,18 +17952,73 @@ p, li { white-space: pre-wrap; } <source>Annotate "%1"</source> <translation>Annoter "%1"</translation> </message> + <message> + <location line="+29"/> + <source>Delete...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Delete "%1"...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Revert...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Revert "%1"...</source> + <translation type="unfinished"></translation> + </message> <message> <location line="+10"/> + <source>Diff Project "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> <source>Project Status</source> <translation>Statut du projet</translation> </message> <message> - <location line="+6"/> + <location line="+0"/> + <source>Status of Project "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Log Project</source> + <translation type="unfinished">Réaliser un log du projet</translation> + </message> + <message> + <location line="+0"/> + <source>Log Project "%1"</source> + <translation type="unfinished">Réaliser un log du projet "%1"</translation> + </message> + <message> + <location line="+7"/> <source>Update Project</source> <translation>Mettre à jour le projet</translation> </message> + <message> + <location line="+0"/> + <source>Update Project "%1"</source> + <translation type="unfinished">Mettre à jour le projet "%1"</translation> + </message> <message> <location line="+9"/> + <source>Repository Log</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Revert Repository...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>Commit</source> <translation>Faire un commit</translation> </message> @@ -14680,7 +18038,7 @@ p, li { white-space: pre-wrap; } <translation>Re&faire</translation> </message> <message> - <location line="+40"/> + <location line="+26"/> <source>Closing CVS Editor</source> <translation>Ferme l'éditeur CVS</translation> </message> @@ -14695,94 +18053,107 @@ p, li { white-space: pre-wrap; } <translation>La vérification du message de commit a échoué. Voulez-vous soumettre vos modifications ?</translation> </message> <message> - <location line="+58"/> + <location line="+63"/> <source>The files do not differ.</source> <translation>Les fichiers n'ont pas changé.</translation> </message> <message> - <location line="+61"/> + <location line="+70"/> + <source>Revert repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Would you like to revert all changes to the repository?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Revert failed: %1</source> + <translation type="unfinished"></translation> + </message> + <message> <source>The file '%1' could not be deleted.</source> - <translation>Le fichier '%1' n'a pas pu être supprimé.</translation> + <translation type="obsolete">Le fichier '%1' n'a pas pu être supprimé.</translation> </message> <message> - <location line="+21"/> + <location line="+22"/> <source>The file has been changed. Do you want to revert it?</source> <translation>Le fichier a été modifié. Voulez-vous le rétablir ?</translation> </message> <message> - <location line="+80"/> <source>The commit list spans several repositories (%1). Please commit them one by one.</source> - <translation>La liste de commits s'étend sur plusieurs répertoires (%1). Veuillez les ajouter un par un.</translation> + <translation type="obsolete">La liste de commits s'étend sur plusieurs répertoires (%1). Veuillez les ajouter un par un.</translation> </message> <message> - <location line="+18"/> + <location line="+51"/> <source>Another commit is currently being executed.</source> <translation>Un autre commit est en cours d'exécution.</translation> </message> <message> - <location line="+29"/> + <location line="+23"/> <source>There are no modified files.</source> <translation>Il n'y a aucun fichier modifié.</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Cannot create temporary file: %1</source> <translation>Impossible de créer le fichier temporaire : %1</translation> </message> <message> - <location line="+108"/> + <location line="+146"/> <source>Project status</source> <translation>Statut du projet</translation> </message> <message> - <location line="+43"/> + <location line="+34"/> <source>The initial revision %1 cannot be described.</source> <translation>La révision initiale %1 n'a pas pu être décrite.</translation> </message> <message> - <location line="+34"/> + <location line="+35"/> <source>Could not find commits of id '%1' on %2.</source> <translatorcomment>%2 is a date</translatorcomment> <translation>Impossible de trouver les commits d'id '%1' le %2.</translation> </message> <message> - <location line="+176"/> + <location line="+95"/> <source>Executing: %1 %2 </source> - <translation>Exécute : %1 %2 + <translation type="unfinished">Exécute : %1 %2 </translation> </message> <message> <location line="+1"/> <source>Executing in %1: %2 %3 </source> - <translation>Exécute dans %1 : %2 %3 + <translation type="unfinished">Exécute dans %1 : %2 %3 </translation> </message> <message> - <location line="+28"/> + <location line="+16"/> <source>No cvs executable specified!</source> <translation>Aucun exécutable CVS spécifié !</translation> </message> <message> - <location line="+44"/> + <location line="+43"/> <source>The process terminated with exit code %1.</source> - <translation>Le processus s'est terminé avec le code %1.</translation> + <translation type="unfinished">Le processus s'est terminé avec le code %1.</translation> </message> <message> <location line="+3"/> <source>The process terminated abnormally.</source> - <translation>Le processus s'est terminé de façon anormale.</translation> + <translation type="unfinished">Le processus s'est terminé de façon anormale.</translation> </message> <message> <location line="+3"/> <source>Could not start cvs '%1'. Please check your settings in the preferences.</source> - <translation>Impossible de démarrer cvs '%1'. Veuillez vérifier vos paramètres dans les préférences.</translation> + <translation type="unfinished">Impossible de démarrer cvs '%1'. Veuillez vérifier vos paramètres dans les préférences.</translation> </message> <message> <location line="+3"/> <source>CVS did not respond within timeout limit (%1 ms).</source> - <translation>CVS n'a pas répondu dans le temps imparti (%1 ms).</translation> + <translation type="unfinished">CVS n'a pas répondu dans le temps imparti (%1 ms).</translation> </message> </context> <context> @@ -14803,15 +18174,14 @@ p, li { white-space: pre-wrap; } <translation>Modifié</translation> </message> <message> - <location line="+2"/> <source>CVS Submit</source> - <translation>CVS Submit</translation> + <translation type="obsolete">CVS Submit</translation> </message> </context> <context> <name>CVS::Internal::SettingsPageWidget</name> <message> - <location filename="../../../src/plugins/cvs/settingspage.cpp" line="-34"/> + <location filename="../../../src/plugins/cvs/settingspage.cpp" line="-47"/> <source>CVS Command</source> <translation>CVS Command</translation> </message> @@ -14819,7 +18189,7 @@ p, li { white-space: pre-wrap; } <context> <name>CdbStackFrameContext</name> <message> - <location filename="../../../src/plugins/debugger/cdb/cdbstackframecontext.cpp" line="+136"/> + <location filename="../../../src/plugins/debugger/cdb/cdbstackframecontext.cpp" line="+139"/> <source><Unknown Type></source> <translation><type inconnu></translation> </message> @@ -14829,7 +18199,7 @@ p, li { white-space: pre-wrap; } <translation><valeur inconnue></translation> </message> <message> - <location line="+219"/> + <location line="+217"/> <source><Unknown></source> <translation><Inconnu></translation> </message> @@ -14837,7 +18207,7 @@ p, li { white-space: pre-wrap; } <context> <name>SymbolGroup</name> <message> - <location filename="../../../src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp" line="+52"/> + <location filename="../../../src/plugins/debugger/cdb/symbolgroupcontext.cpp" line="+53"/> <source>Out of scope</source> <translation>Hors de la portée</translation> </message> @@ -14845,26 +18215,30 @@ p, li { white-space: pre-wrap; } <context> <name>Debugger::Internal::MemoryViewAgent</name> <message> - <location filename="../../../src/plugins/debugger/debuggeragents.cpp" line="+95"/> + <location filename="../../../src/plugins/debugger/debuggeragents.cpp" line="+99"/> <source>Memory $</source> <translation>Mémoire $</translation> </message> <message> - <location line="+12"/> + <location line="+16"/> <source>No memory viewer available</source> <translation>Aucun visualiseur de mémoire disponible</translation> </message> <message> <location line="+1"/> + <source>The memory contents cannot be shown as no viewer plugin for binary data has been loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>The memory contents cannot be shown as no viewer plugin not the BinEditor plugin could be loaded.</source> <translatorcomment>La phrase d'origine a l'air louche...</translatorcomment> - <translation>Le contenu de la mémoire ne peut pas être affiché car ni l'éditeur binaire, ni aucun plugin de visualisation n'ont pu être chargés.</translation> + <translation type="obsolete">Le contenu de la mémoire ne peut pas être affiché car ni l'éditeur binaire, ni aucun plugin de visualisation n'ont pu être chargés.</translation> </message> </context> <context> <name>Debugger::Internal::DebuggerRunControlFactory</name> <message> - <location filename="../../../src/plugins/debugger/debuggerrunner.cpp" line="+80"/> + <location filename="../../../src/plugins/debugger/debuggerrunner.cpp" line="+74"/> <source>Debug</source> <translation>Déboguer</translation> </message> @@ -14872,7 +18246,7 @@ p, li { white-space: pre-wrap; } <context> <name>Debugger::Internal::DebuggerRunControl</name> <message> - <location line="+123"/> + <location line="+133"/> <source>Debugger</source> <translation>Débogueur</translation> </message> @@ -14881,18 +18255,18 @@ p, li { white-space: pre-wrap; } <name>Debugger::Internal::CoreGdbAdapter</name> <message> <location filename="../../../src/plugins/debugger/gdb/coregdbadapter.cpp" line="+85"/> - <location line="+27"/> + <location line="+28"/> <location line="+42"/> <source>Error Loading Symbols</source> <translation>Érreur de chargement des symboles</translation> </message> <message> - <location line="-68"/> + <location line="-69"/> <source>No executable to load symbols from specified.</source> <translation>Pas d'exécutable spécifié pour lire les symboles.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>Loading symbols from "%1" failed: </source> <translation>Échec de chargement des symboles depuis "%1" : @@ -14929,78 +18303,87 @@ p, li { white-space: pre-wrap; } <context> <name>Debugger::Internal::PlainGdbAdapter</name> <message> - <location filename="../../../src/plugins/debugger/gdb/plaingdbadapter.cpp" line="+80"/> + <location filename="../../../src/plugins/debugger/gdb/plaingdbadapter.cpp" line="+81"/> <source>Cannot set up communication with child process: %1</source> - <translation>Impossible de mettre en place la communication avec le processus enfant : %1</translation> + <translation type="unfinished">Impossible de mettre en place la communication avec le processus enfant : %1</translation> </message> <message> - <location line="+43"/> + <location line="+49"/> <source>Starting executable failed: </source> - <translation>Échec du lancement de l'exécutable : + <translation type="unfinished">Échec du lancement de l'exécutable : </translation> </message> </context> <context> <name>Debugger::Internal::RemoteGdbAdapter</name> <message> - <location filename="../../../src/plugins/debugger/gdb/remotegdbadapter.cpp" line="+112"/> + <location filename="../../../src/plugins/debugger/gdb/remotegdbadapter.cpp" line="+113"/> <source>The upload process failed to start. Shell missing?</source> - <translation>Le processus d'upload n'a pas pu démarrer. Shell manquant ?</translation> + <translation type="unfinished">Le processus d'upload n'a pas pu démarrer. Shell manquant ?</translation> </message> <message> <location line="+3"/> <source>The upload process crashed some time after starting successfully.</source> - <translation>Le processus d'upload a crashé après avoir démarré.</translation> + <translation type="unfinished">Le processus d'upload a crashé après avoir démarré.</translation> </message> <message> <location line="+4"/> <source>The last waitFor...() function timed out. The state of QProcess is unchanged, and you can try calling waitFor...() again.</source> <translatorcomment>this string appear twice in the translation</translatorcomment> - <translation>La dernière fonction waitFor...() est arrivée à échéance. Le statut de QProcess est inchangé, vous pouvez essayer d'appeler waitFor...() à nouveau.</translation> + <translation type="unfinished">La dernière fonction waitFor...() est arrivée à échéance. Le statut de QProcess est inchangé, vous pouvez essayer d'appeler waitFor...() à nouveau.</translation> </message> <message> <location line="+5"/> <source>An error occurred when attempting to write to the upload process. For example, the process may not be running, or it may have closed its input channel.</source> - <translation>Une erreur est survenue lors d'une tentative d'écriture sur l'entrée du processus d'upload. Le processus peut ne pas être lancé, ou il a fermé son entrée.</translation> + <translation type="unfinished">Une erreur est survenue lors d'une tentative d'écriture sur l'entrée du processus d'upload. Le processus peut ne pas être lancé, ou il a fermé son entrée.</translation> </message> <message> <location line="+5"/> <source>An error occurred when attempting to read from the upload process. For example, the process may not be running.</source> - <translation>Une erreur est survenue lors d'une tentative de lecture depuis le processus d'upload. Il est probable que le processus n'est pas en cours d'exécution.</translation> + <translation type="unfinished">Une erreur est survenue lors d'une tentative de lecture depuis le processus d'upload. Il est probable que le processus n'est pas en cours d'exécution.</translation> </message> <message> <location line="+4"/> <source>An unknown error in the upload process occurred. This is the default return value of error().</source> - <translation>Une erreur inconnue est survenue dans le processus d'upload. Ceci est la valeur de retour par défaut de error().</translation> + <translation type="unfinished">Une erreur inconnue est survenue dans le processus d'upload. Ceci est la valeur de retour par défaut de error().</translation> </message> <message> <location line="+5"/> <source>Error</source> - <translation>Erreur</translation> + <translation type="unfinished">Erreur</translation> </message> <message> - <location line="+47"/> <source>Adapter too old: does not support asynchronous mode.</source> - <translation>Adaptateur trop ancien : aucun support du mode asynchrone.</translation> + <translation type="obsolete">Adaptateur trop ancien : aucun support du mode asynchrone.</translation> </message> <message> - <location line="+20"/> + <location line="+61"/> <source>Starting remote executable failed: </source> - <translation>Le démarrage de l'exécutable distant a échoué : + <translation type="unfinished">Le démarrage de l'exécutable distant a échoué : </translation> </message> </context> <context> <name>Debugger::Internal::TrkGdbAdapter</name> <message> - <location filename="../../../src/plugins/debugger/gdb/trkgdbadapter.cpp" line="+1605"/> + <location filename="../../../src/plugins/debugger/gdb/trkgdbadapter.cpp" line="+1723"/> + <source>Port specification missing.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Unable to acquire a device on '%1'. It appears to be in use.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+118"/> <source>Process started, PID: 0x%1, thread id: 0x%2, code segment: 0x%3, data segment: 0x%4.</source> <translation>Processus démarré, PID : 0x%1, id du thread : 0x%2, segment de code : 0x%3, segment de données : 0x%4.</translation> </message> <message> - <location line="+25"/> + <location line="+40"/> <source>Connecting to TRK server adapter failed: </source> <translation>La connection à l'adaptateur du serveur TRK a échoué : @@ -15200,7 +18583,7 @@ p, li { white-space: pre-wrap; } <context> <name>Designer::FormWindowEditor</name> <message> - <location filename="../../../src/plugins/designer/formwindoweditor.cpp" line="+167"/> + <location filename="../../../src/plugins/designer/formwindoweditor.cpp" line="+127"/> <source>untitled</source> <translation>sans titre</translation> </message> @@ -15208,9 +18591,13 @@ p, li { white-space: pre-wrap; } <context> <name>Git::Internal::CloneWizard</name> <message> - <location filename="../../../src/plugins/git/clonewizard.cpp" line="+53"/> <source>Clones a project from a git repository.</source> - <translation>Clone un projet à partir d'un dépôt git.</translation> + <translation type="obsolete">Clone un projet à partir d'un dépôt git.</translation> + </message> + <message> + <location filename="../../../src/plugins/git/clonewizard.cpp" line="+55"/> + <source>Clones a Git repository and tries to load the contained project.</source> + <translation type="unfinished"></translation> </message> <message> <location line="+5"/> @@ -15222,6 +18609,11 @@ p, li { white-space: pre-wrap; } <name>Git::CloneWizardPage</name> <message> <location filename="../../../src/plugins/git/clonewizardpage.cpp" line="+58"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> + <message> + <location line="+1"/> <source>Specify repository URL, checkout directory and path.</source> <translation>Spécifie l'URL du dépôt, le répertoire et le chemin du checkout.</translation> </message> @@ -15252,9 +18644,13 @@ p, li { white-space: pre-wrap; } <context> <name>Gitorious::Internal::GitoriousCloneWizard</name> <message> - <location filename="../../../src/plugins/git/gitorious/gitoriousclonewizard.cpp" line="+81"/> <source>Clones a project from a Gitorious repository.</source> - <translation>Clone un projet à partir d'un dépôt Gitorious.</translation> + <translation type="obsolete">Clone un projet à partir d'un dépôt Gitorious.</translation> + </message> + <message> + <location filename="../../../src/plugins/git/gitorious/gitoriousclonewizard.cpp" line="+83"/> + <source>Clones a Gitorious repository and tries to load the contained project.</source> + <translation type="unfinished"></translation> </message> <message> <location line="+5"/> @@ -15266,6 +18662,11 @@ p, li { white-space: pre-wrap; } <name>Gitorious::Internal::GitoriousHostWizardPage</name> <message> <location filename="../../../src/plugins/git/gitorious/gitorioushostwizardpage.cpp" line="+76"/> + <source>Host</source> + <translation type="unfinished">Hôte</translation> + </message> + <message> + <location line="+1"/> <source>Select a host.</source> <translation>Sélectionner un hôte.</translation> </message> @@ -15273,7 +18674,12 @@ p, li { white-space: pre-wrap; } <context> <name>Gitorious::Internal::GitoriousProjectWizardPage</name> <message> - <location filename="../../../src/plugins/git/gitorious/gitoriousprojectwizardpage.cpp" line="+57"/> + <location filename="../../../src/plugins/git/gitorious/gitoriousprojectwizardpage.cpp" line="+53"/> + <source>Project</source> + <translation type="unfinished">Projet</translation> + </message> + <message> + <location line="+5"/> <source>Choose a project from '%1'</source> <translation>Choisir un projet à partir de '%1'</translation> </message> @@ -15281,17 +18687,20 @@ p, li { white-space: pre-wrap; } <context> <name>Help::Internal::GeneralSettingsPage</name> <message> - <location filename="../../../src/plugins/help/generalsettingspage.cpp" line="+74"/> <source>General settings</source> - <translation>Réglages généraux</translation> + <translation type="obsolete">Réglages généraux</translation> </message> <message> - <location line="+10"/> <source>Help</source> - <translation>Aide</translation> + <translation type="obsolete">Aide</translation> </message> <message> - <location line="+122"/> + <location filename="../../../src/plugins/help/generalsettingspage.cpp" line="+71"/> + <source>General Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+138"/> <source>Open Image</source> <translation>Ouvrir une image</translation> </message> @@ -15329,7 +18738,7 @@ p, li { white-space: pre-wrap; } <context> <name>ProjectExplorer::ApplicationLauncher</name> <message> - <location filename="../../../src/plugins/projectexplorer/applicationlauncher_x11.cpp" line="+126"/> + <location filename="../../../src/plugins/projectexplorer/applicationlauncher_x11.cpp" line="+128"/> <source>Failed to start program. Path or permissions wrong?</source> <translation>Échec lors de l'exécution du programme. Mauvais chemin ou permissions ?</translation> </message> @@ -15347,7 +18756,7 @@ p, li { white-space: pre-wrap; } <context> <name>ProjectExplorer::Internal::LocalApplicationRunControlFactory</name> <message> - <location filename="../../../src/plugins/projectexplorer/applicationrunconfiguration.cpp" line="+89"/> + <location filename="../../../src/plugins/projectexplorer/applicationrunconfiguration.cpp" line="+77"/> <source>Run</source> <translation>Exécuter</translation> </message> @@ -15355,12 +18764,12 @@ p, li { white-space: pre-wrap; } <context> <name>ProjectExplorer::Internal::LocalApplicationRunControl</name> <message> - <location line="+48"/> + <location line="+46"/> <source>Starting %1...</source> <translation>Démarrage de %1...</translation> </message> <message> - <location line="+26"/> + <location line="+28"/> <source>%1 exited with code %2</source> <translation>%1 s'est terminé avec le code %2</translation> </message> @@ -15368,7 +18777,7 @@ p, li { white-space: pre-wrap; } <context> <name>ProjectExplorer::DebuggingHelperLibrary</name> <message> - <location filename="../../../src/plugins/projectexplorer/debugginghelper.cpp" line="+135"/> + <location filename="../../../src/plugins/projectexplorer/debugginghelper.cpp" line="+140"/> <source>The target directory %1 could not be created.</source> <translation>Le dossier cible %1 n'a pas pu être créé.</translation> </message> @@ -15394,7 +18803,7 @@ Reason: %2</source> Raison : %2</translation> </message> <message> - <location line="+15"/> + <location line="+17"/> <source>Building debugging helper library in %1 </source> <translation>Compilation de la bibliothèque d'assistance au débogage dans %1 @@ -15428,7 +18837,7 @@ Raison : %2</translation> <context> <name>ProjectExplorer::Internal::ProjectWelcomePage</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectwelcomepage.h" line="+48"/> + <location filename="../../../src/plugins/projectexplorer/projectwelcomepage.h" line="+47"/> <source>Develop</source> <translation>Développer</translation> </message> @@ -15436,114 +18845,96 @@ Raison : %2</translation> <context> <name>ProjectExplorer::Internal::ActiveConfigurationWidget</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectexplorer.cpp" line="+246"/> - <location filename="../../../src/plugins/projectexplorer/projectwindow.cpp" line="+181"/> <source>Active run configuration</source> - <translation>Configuration d'exécution active</translation> + <translation type="obsolete">Configuration d'exécution active</translation> </message> </context> <context> <name>ProjectExplorer::Internal::ProjectLabel</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectwindow.cpp" line="+375"/> <source>Edit Project Settings for Project <b>%1</b></source> - <translation>Éditer les paramètres du projet <b>%1</b></translation> + <translation type="obsolete">Éditer les paramètres du projet <b>%1</b></translation> </message> <message> - <location line="+2"/> <source>No Project loaded</source> - <translation>Aucun projet chargé</translation> + <translation type="obsolete">Aucun projet chargé</translation> </message> </context> <context> <name>ProjectExplorer::Internal::ProjectPushButton</name> <message> - <location line="+11"/> <source>Select Project</source> - <translation>Sectionner projet</translation> + <translation type="obsolete">Sectionner projet</translation> </message> </context> <context> <name>ProjectExplorer::Internal::ProjectWindow</name> <message> - <location line="+104"/> - <location line="+105"/> <source>Active Build and Run Configurations</source> - <translation>Configuration de compilation et d'exécution sélectionnées</translation> + <translation type="obsolete">Configuration de compilation et d'exécution sélectionnées</translation> </message> <message> - <location line="-67"/> <source>No project loaded.</source> - <translation>Aucun projet chargé.</translation> + <translation type="obsolete">Aucun projet chargé.</translation> </message> </context> <context> <name>QmlEditor::Internal::ScriptEditor</name> <message> - <location filename="../../../src/plugins/qmleditor/qmleditor.cpp" line="+468"/> <source><Select Symbol></source> - <translation><Selectionner un symbole></translation> + <translation type="obsolete"><Selectionner un symbole></translation> </message> <message> - <location line="+101"/> <source>Rename...</source> - <translation>Renommer...</translation> + <translation type="obsolete">Renommer...</translation> </message> <message> - <location line="+1"/> <source>New id:</source> - <translation>Nouvel identifiant :</translation> + <translation type="obsolete">Nouvel identifiant :</translation> </message> <message> - <location line="+191"/> <source>Rename id '%1'...</source> - <translation>Renommer l'identifiant '%1'...</translation> + <translation type="obsolete">Renommer l'identifiant '%1'...</translation> </message> </context> <context> <name>QmlEditor::Internal::QmlEditorPlugin</name> <message> - <location filename="../../../src/plugins/qmleditor/qmleditorplugin.cpp" line="+106"/> <source>Qt</source> - <translation>Qt</translation> + <translation type="obsolete">Qt</translation> </message> <message> - <location line="+1"/> <source>Creates a Qt QML file.</source> - <translation>Créer un fichier QML.</translation> + <translation type="obsolete">Créer un fichier QML.</translation> </message> <message> - <location line="+1"/> <source>Qt QML File</source> - <translation>Fichier QML</translation> + <translation type="obsolete">Fichier QML</translation> </message> </context> <context> <name>QmlEditor::Internal::QmlModelManager</name> <message> - <location filename="../../../src/plugins/qmleditor/qmlmodelmanager.cpp" line="+98"/> <source>Indexing</source> - <translation>Indexation</translation> + <translation type="obsolete">Indexation</translation> </message> </context> <context> <name>QmlProjectManager::Internal::QmlMakeStepConfigWidget</name> <message> - <location filename="../../../src/plugins/qmlprojectmanager/qmlmakestep.cpp" line="+134"/> <source><b>QML Make</b></source> - <translation><b>Make de QML</b></translation> + <translation type="obsolete"><b>Make de QML</b></translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::ClassList</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/customwidgetwizard/classlist.cpp" line="+48"/> - <location line="+11"/> + <location filename="../../../src/plugins/qt4projectmanager/customwidgetwizard/classlist.cpp" line="+69"/> <source><New class></source> <translation><Nouvelle classe></translation> </message> <message> - <location line="+10"/> + <location line="+74"/> <source>Confirm Delete</source> <translation>Confirmez la suppression</translation> </message> @@ -15556,23 +18947,41 @@ Raison : %2</translation> <context> <name>Qt4ProjectManager::Internal::CustomWidgetWizard</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/customwidgetwizard/customwidgetwizard.cpp" line="+43"/> <source>Qt4 Designer Custom Widget</source> - <translation>Widget personnalisé pour Qt4 Designer</translation> + <translation type="obsolete">Widget personnalisé pour Qt4 Designer</translation> </message> <message> - <location line="+1"/> <source>Creates a Qt4 Designer Custom Widget or a Custom Widget Collection.</source> - <translation>Crée un widget personnalisé ou une collection de widgets personnalisés pour Qt4 Designer.</translation> + <translation type="obsolete">Crée un widget personnalisé ou une collection de widgets personnalisés pour Qt4 Designer.</translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/customwidgetwizard/customwidgetwizard.cpp" line="+49"/> + <source>Qt Custom Designer Widget</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Creates a Qt Custom Designer Widget or a Custom Widget Collection.</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::CustomWidgetWizardDialog</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/customwidgetwizard/customwidgetwizarddialog.cpp" line="+56"/> + <location filename="../../../src/plugins/qt4projectmanager/customwidgetwizard/customwidgetwizarddialog.cpp" line="+52"/> <source>This wizard generates a Qt4 Designer Custom Widget or a Qt4 Designer Custom Widget Collection project.</source> <translation>Cet assistant génère un projet pour créer un widget personnalisé ou une collection de widgets personnalisés pour Qt4 Designer.</translation> </message> + <message> + <location line="+6"/> + <source>Custom Widgets</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Plugin Details</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::PluginGenerator</name> @@ -15582,12 +18991,12 @@ Raison : %2</translation> <translation>Impossible d'ouvrir le fichier d'icône %1.</translation> </message> <message> - <location line="+102"/> + <location line="+106"/> <source>Creating multiple widget libraries (%1, %2) in one project (%3) is not supported.</source> <translation>Créer plusieurs bibliothèques de widgets (%1, %2) dans un même projet (%3) n'est pas supporté.</translation> </message> <message> - <location line="+133"/> + <location line="+135"/> <source>Cannot open %1: %2</source> <translation>Imposible d'ouvrir %1 : %2</translation> </message> @@ -15603,17 +19012,16 @@ Raison : %2</translation> <context> <name>Qt4ProjectManager::Internal::S60DeviceRunConfiguration</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp" line="+86"/> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp" line="+134"/> <source>QtS60DeviceRunConfiguration</source> <translation>QtS60DeviceRunConfiguration</translation> </message> <message> - <location line="+205"/> <source>Could not parse %1. The QtS60 Device run configuration %2 can not be started.</source> - <translation>Impossible d'analyser %1. La configuration d'appareil QtS60 %2 ne peut pas être démarrée.</translation> + <translation type="obsolete">Impossible d'analyser %1. La configuration d'appareil QtS60 %2 ne peut pas être démarrée.</translation> </message> <message> - <location line="-207"/> + <location line="-2"/> <source>%1 on Symbian Device</source> <translation>%1 sur appareil Symbian</translation> </message> @@ -15621,24 +19029,37 @@ Raison : %2</translation> <context> <name>Qt4ProjectManager::Internal::S60DeviceRunConfigurationWidget</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp" line="+75"/> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp" line="+81"/> <source>Device:</source> <translation>Appareil mobile :</translation> </message> <message> - <location line="+20"/> + <location line="+21"/> <source>Name:</source> <translation>Nom :</translation> </message> <message> <location line="+3"/> + <source>Arguments:</source> + <translation type="unfinished">Arguments :</translation> + </message> + <message> + <location line="+1"/> + <source>Installation file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>Device on serial port:</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Install File:</source> - <translation>Fichier d'installation :</translation> + <translation type="obsolete">Fichier d'installation :</translation> </message> <message> - <location line="+11"/> <source>Device on Serial Port:</source> - <translation>Appareil mobile sur port série :</translation> + <translation type="obsolete">Appareil mobile sur port série :</translation> </message> <message> <location line="+9"/> @@ -15646,53 +19067,44 @@ Raison : %2</translation> <translation>Inspecter l'appareil mobile pour mettre à jour les informations</translation> </message> <message> - <location line="+9"/> <source>Self-signed certificate</source> - <translation>Certificat autosigné</translation> + <translation type="obsolete">Certificat autosigné</translation> </message> <message> - <location line="+13"/> <source>Choose certificate file (.cer)</source> - <translation>Choisir un fichier de certificat (.cer)</translation> + <translation type="obsolete">Choisir un fichier de certificat (.cer)</translation> </message> <message> - <location line="+1"/> <source>Custom certificate:</source> - <translation>Certificat personnalisé :</translation> + <translation type="obsolete">Certificat personnalisé :</translation> </message> <message> - <location line="+3"/> <source>Choose key file (.key / .pem)</source> - <translation>Choisir le fichier contenant la clé (.key / .pem)</translation> + <translation type="obsolete">Choisir le fichier contenant la clé (.key / .pem)</translation> </message> <message> - <location line="+1"/> <source>Key file:</source> - <translation>Fichier contenant la clé :</translation> + <translation type="obsolete">Fichier contenant la clé :</translation> </message> <message> - <location line="+126"/> <source><No Device></source> <extracomment>Summary text of S60 device run configuration</extracomment> - <translation><Aucun appareil mobile></translation> + <translation type="obsolete"><Aucun appareil mobile></translation> </message> <message> - <location line="+2"/> <source>(custom certificate)</source> - <translation>(certificat personnalisé)</translation> + <translation type="obsolete">(certificat personnalisé)</translation> </message> <message> - <location line="+1"/> <source>(self-signed certificate)</source> - <translation>(certificat autosigné)</translation> + <translation type="obsolete">(certificat autosigné)</translation> </message> <message> - <location line="+1"/> <source>Summary: Run on '%1' %2</source> - <translation>Résumé : fonctionne avec '%1' %2</translation> + <translation type="obsolete">Résumé : fonctionne avec '%1' %2</translation> </message> <message> - <location line="+50"/> + <location line="+131"/> <source>Connecting...</source> <translation>Connexion...</translation> </message> @@ -15705,7 +19117,7 @@ Raison : %2</translation> <context> <name>Qt4ProjectManager::Internal::S60DeviceRunConfigurationFactory</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp" line="+294"/> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp" line="+259"/> <source>%1 on Symbian Device</source> <translation>%1 sur appareil Symbian</translation> </message> @@ -15713,45 +19125,38 @@ Raison : %2</translation> <context> <name>Qt4ProjectManager::Internal::S60DeviceRunControlBase</name> <message> - <location line="+88"/> <source>Creating %1.sisx ...</source> - <translation>Création de %1.sisx...</translation> + <translation type="obsolete">Création de %1.sisx...</translation> </message> <message> - <location line="+1"/> + <location line="+151"/> <source>Executable file: %1</source> <translation>Fichier exécutable : %1</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Debugger for Symbian Platform</source> <translation>Débogueur pour plateforme Symbian</translation> </message> <message> - <location line="+12"/> - <location line="+90"/> <source>%1 %2</source> <translatorcomment>TODO: remove the tr()</translatorcomment> - <translation>%1 %2</translation> + <translation type="obsolete">%1 %2</translation> </message> <message> - <location line="-42"/> <source>Could not read template package file '%1'</source> - <translation>Impossible de lire le fichier de package de modèles '%1'</translation> + <translation type="obsolete">Impossible de lire le fichier de package de modèles '%1'</translation> </message> <message> - <location line="+9"/> <source>Could not write package file '%1'</source> - <translation>Impossible d'écrire le fichier package '%1'</translation> + <translation type="obsolete">Impossible d'écrire le fichier package '%1'</translation> </message> <message> - <location line="+16"/> - <location line="+29"/> <source>An error occurred while creating the package.</source> - <translation>Une erreur est survenue lors de la création du package.</translation> + <translation type="obsolete">Une erreur est survenue lors de la création du package.</translation> </message> <message> - <location line="+26"/> + <location line="+104"/> <source>Package: %1 Deploying application to '%2'...</source> <translation>Package : %1 @@ -15764,19 +19169,54 @@ Check if the phone is connected and the TRK application is running.</source> Veuillez vérifier si le téléphone est connecté et que l'application TRK est lancée.</translation> </message> <message> - <location line="-154"/> + <location line="-152"/> + <source>Unable to remove existing file '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Unable to rename file '%1' to '%2': %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Deploying</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> <source>There is no device plugged in.</source> <translation>Il n'y a aucun appareil mobile connecté.</translation> </message> <message> - <location line="+175"/> + <location line="+32"/> + <source>Renaming new package '%1' to '%2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Removing old package '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Package file not found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Failed to find package '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+71"/> <source>Could not connect to phone on port '%1': %2 Check if the phone is connected and App TRK is running.</source> <translation>Impossible de connecter le téléphone sur le port '%1' : %2 Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</translation> </message> <message> - <location line="+9"/> + <location line="+17"/> <source>Could not create file %1 on device: %2</source> <translation>Impossible de créer le fichier %1 sur l'appareil mobile %2</translation> </message> @@ -15797,26 +19237,34 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ </message> <message> <location line="+5"/> + <source>Copying installation file...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+100"/> + <source>The device '%1' has been disconnected</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Copying install file...</source> - <translation>Copie le fichier d'installation...</translation> + <translation type="obsolete">Copie le fichier d'installation...</translation> </message> <message> - <location line="+5"/> <source>%1% copied.</source> - <translation>%1% copié.</translation> + <translation type="obsolete">%1% copié.</translation> </message> <message> - <location line="+5"/> + <location line="-89"/> <source>Installing application...</source> <translation>Installation de l'application...</translation> </message> <message> - <location line="+5"/> + <location line="+16"/> <source>Could not install from package %1 on device: %2</source> <translation>Impossible d'installer à partir du package %1 sur l'appareil mobile : %2</translation> </message> <message> - <location line="+12"/> + <location line="+31"/> <source>Waiting for App TRK</source> <translation>En attente d'App TRK</translation> </message> @@ -15831,25 +19279,22 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <translation>Annulé.</translation> </message> <message> - <location line="+10"/> <source>Failed to start %1.</source> - <translation>Échec du lancement de %1.</translation> + <translation type="obsolete">Échec du lancement de %1.</translation> </message> <message> - <location line="+3"/> <source>%1 has unexpectedly finished.</source> - <translation>%1 s'est terminé de façon inattendue.</translation> + <translation type="obsolete">%1 s'est terminé de façon inattendue.</translation> </message> <message> - <location line="+3"/> <source>An error has occurred while running %1.</source> - <translation>Une erreur s'est produite lors de l'exécution de %1.</translation> + <translation type="obsolete">Une erreur s'est produite lors de l'exécution de %1.</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::S60DeviceRunControl</name> <message> - <location line="+38"/> + <location line="+50"/> <source>Finished.</source> <translation>Terminé.</translation> </message> @@ -15872,12 +19317,12 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>Qt4ProjectManager::Internal::S60DeviceDebugRunControl</name> <message> - <location line="+51"/> + <location line="+54"/> <source>Warning: Cannot locate the symbol file belonging to %1.</source> <translation>Attention : Impossible de trouver le fichier de symboles appartenant à %1.</translation> </message> <message> - <location line="+8"/> + <location line="+10"/> <source>Launching debugger...</source> <translation>Lancement du débogueur...</translation> </message> @@ -15890,15 +19335,14 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>Qt4ProjectManager::Internal::S60DevicesWidget</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicespreferencepane.cpp" line="-28"/> <source>No Qt installed</source> - <translation>Qt non installé</translation> + <translation type="obsolete">Qt non installé</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::S60EmulatorRunConfigurationWidget</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp" line="+198"/> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp" line="+191"/> <source>Name:</source> <translation>Nom :</translation> </message> @@ -15908,33 +19352,35 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <translation>Exécutable :</translation> </message> <message> - <location line="+21"/> <source>Summary: Run %1 in emulator</source> - <translation>Sommaire : démarrer %1 sur l'émulateur</translation> + <translation type="obsolete">Sommaire : démarrer %1 sur l'émulateur</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::S60EmulatorRunConfiguration</name> <message> - <location line="-165"/> + <location line="-99"/> <source>%1 in Symbian Emulator</source> <translation>%1 sur l'émulateur Symbian</translation> </message> <message> <location line="+2"/> + <source>Qt Symbian Emulator RunConfiguration</source> + <translation type="unfinished"></translation> + </message> + <message> <source>QtSymbianEmulatorRunConfiguration</source> - <translation>QtSymbianEmulatorRunConfiguration</translation> + <translation type="obsolete">QtSymbianEmulatorRunConfiguration</translation> </message> <message> - <location line="+87"/> <source>Could not parse %1. The Qt for Symbian emulator run configuration %2 can not be started.</source> - <translation>Impossible d'analyser %1. Qt pour la configuration d'éxecution de l'émulateur Symbian %2 ne peut pas être démarré.</translation> + <translation type="obsolete">Impossible d'analyser %1. Qt pour la configuration d'éxecution de l'émulateur Symbian %2 ne peut pas être démarré.</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::S60EmulatorRunConfigurationFactory</name> <message> - <location line="+113"/> + <location line="+191"/> <source>%1 in Symbian Emulator</source> <translation>%1 sur l'émulateur Symbian</translation> </message> @@ -15942,7 +19388,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>Qt4ProjectManager::Internal::S60EmulatorRunControl</name> <message> - <location line="+48"/> + <location line="+30"/> <source>Starting %1...</source> <translation>Démarrage %1...</translation> </message> @@ -15960,7 +19406,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>Qt4ProjectManager::Internal::S60Manager</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60manager.cpp" line="+113"/> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60manager.cpp" line="+116"/> <source>Run in Emulator</source> <translation>Démarrer sur l'émulateur</translation> </message> @@ -15970,7 +19416,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <translation>Démarrer sur l'appareil</translation> </message> <message> - <location line="+6"/> + <location line="+7"/> <source>Debug on Device</source> <translation>Déboguer sur l'appareil mobile</translation> </message> @@ -15978,42 +19424,40 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>Qt4ProjectManager::Qt4BuildConfigurationFactory</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt4project.cpp" line="+252"/> <source>Using Default Qt Version</source> - <translation>Utiliser la version de Qt par défaut</translation> + <translation type="obsolete">Utiliser la version de Qt par défaut</translation> </message> <message> - <location line="+4"/> <source>Using Qt Version "%1"</source> - <translation>Utiliser la version Qt "%1"</translation> + <translation type="obsolete">Utiliser la version Qt "%1"</translation> </message> <message> - <location line="+26"/> <source>New configuration</source> - <translation>Nouvelle configuration</translation> + <translation type="obsolete">Nouvelle configuration</translation> </message> <message> - <location line="+1"/> <source>New Configuration Name:</source> - <translation>Nom de la nouvelle configuration :</translation> + <translation type="obsolete">Nom de la nouvelle configuration :</translation> </message> <message> - <location line="+7"/> <source>%1 Debug</source> - <translation>%1 Debug</translation> + <translation type="obsolete">%1 Debug</translation> </message> <message> - <location line="+3"/> <source>%1 Release</source> - <translation>%1 Release</translation> + <translation type="obsolete">%1 Release</translation> </message> </context> <context> <name>Subversion::Internal::CheckoutWizard</name> <message> - <location filename="../../../src/plugins/subversion/checkoutwizard.cpp" line="+54"/> <source>Checks out a project from a Subversion repository.</source> - <translation>Vérifie un projet à partir d'un dépôt Subversion.</translation> + <translation type="obsolete">Vérifie un projet à partir d'un dépôt Subversion.</translation> + </message> + <message> + <location filename="../../../src/plugins/subversion/checkoutwizard.cpp" line="+56"/> + <source>Checks out a Subversion repository and tries to load the contained project.</source> + <translation type="unfinished"></translation> </message> <message> <location line="+5"/> @@ -16024,9 +19468,18 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>Subversion::Internal::CheckoutWizardPage</name> <message> - <location filename="../../../src/plugins/subversion/checkoutwizardpage.cpp" line="+38"/> <source>Specify repository, checkout directory and path.</source> - <translation>Spécifier le dépôt, le répertoire et le chemin de checkout.</translation> + <translation type="obsolete">Spécifier le dépôt, le répertoire et le chemin de checkout.</translation> + </message> + <message> + <location filename="../../../src/plugins/subversion/checkoutwizardpage.cpp" line="+38"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> + <message> + <location line="+1"/> + <source>Specify repository URL, checkout directory and path.</source> + <translation type="unfinished">Spécifie l'URL du dépôt, le répertoire et le chemin du checkout.</translation> </message> <message> <location line="+1"/> @@ -16037,7 +19490,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>TextEditor::Internal::ColorScheme</name> <message> - <location filename="../../../src/plugins/texteditor/colorscheme.cpp" line="+210"/> + <location filename="../../../src/plugins/texteditor/colorscheme.cpp" line="+208"/> <source>Not a color scheme file.</source> <translatorcomment>Pas sur ?</translatorcomment> <translation>Pas un fichier de jeu de couleur.</translation> @@ -16046,7 +19499,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>TextEditor::Internal::FontSettings</name> <message> - <location filename="../../../src/plugins/texteditor/fontsettings.cpp" line="+136"/> + <location filename="../../../src/plugins/texteditor/fontsettings.cpp" line="+147"/> <source>Customized</source> <translation>Personnalisé</translation> </message> @@ -16054,7 +19507,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>VCSBase::BaseCheckoutWizard</name> <message> - <location filename="../../../src/plugins/vcsbase/basecheckoutwizard.cpp" line="+103"/> + <location filename="../../../src/plugins/vcsbase/basecheckoutwizard.cpp" line="+114"/> <source>Cannot Open Project</source> <translation>Impossible d'ouvrir le projet</translation> </message> @@ -16087,7 +19540,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>VCSBase::ProcessCheckoutJob</name> <message> - <location filename="../../../src/plugins/vcsbase/checkoutjobs.cpp" line="+101"/> + <location filename="../../../src/plugins/vcsbase/checkoutjobs.cpp" line="+102"/> <source>Unable to start %1: %2</source> <translation>Impossible de démarrer '%1' : %2</translation> </message> @@ -16115,17 +19568,22 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>VCSBase::Internal::CheckoutProgressWizardPage</name> <message> - <location filename="../../../src/plugins/vcsbase/checkoutprogresswizardpage.cpp" line="+66"/> + <location filename="../../../src/plugins/vcsbase/checkoutprogresswizardpage.cpp" line="+48"/> + <source>Checkout</source> + <translation type="unfinished">Checkout</translation> + </message> + <message> + <location line="+19"/> <source>Checkout started...</source> <translation>Checkout commencé...</translation> </message> <message> - <location line="+13"/> + <location line="+14"/> <source>Failed.</source> <translation>Échec.</translation> </message> <message> - <location line="+10"/> + <location line="+13"/> <source>Succeeded.</source> <translation>Réussi.</translation> </message> @@ -16133,33 +19591,47 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>VCSBase::VCSBaseOutputWindow</name> <message> - <location filename="../../../src/plugins/vcsbase/vcsbaseoutputwindow.cpp" line="+90"/> + <location filename="../../../src/plugins/vcsbase/vcsbaseoutputwindow.cpp" line="+157"/> + <source>Open "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> <source>Clear</source> <translation>Effacer</translation> </message> <message> - <location line="+78"/> + <location line="+113"/> <source>Version Control</source> <translation>Gestion de versions</translation> </message> + <message> + <source>Executing in %1: %2 %3 +</source> + <translation type="obsolete">Exécute dans %1 : %2 %3 +</translation> + </message> </context> <context> <name>Welcome::Internal::CommunityWelcomePage</name> <message> - <location filename="../../../src/plugins/welcome/communitywelcomepage.h" line="+49"/> <source>Community</source> - <translation>Communauté</translation> + <translation type="obsolete">Communauté</translation> + </message> + <message> + <location filename="../../../src/plugins/welcome/communitywelcomepage.h" line="+49"/> + <source>News && Support</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>MimeType</name> <message> - <location filename="mime_tr.h" line="+1"/> <source>unknown</source> - <translation>inconnue</translation> + <translation type="obsolete">inconnue</translation> </message> <message> - <location line="+1"/> + <location filename="mime_tr.h" line="+14"/> <source>CMake Project file</source> <translation>Fichier de projet CMake</translation> </message> @@ -16239,12 +19711,11 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <translation>Fichier QML</translation> </message> <message> - <location line="+1"/> <source>Qml Project file</source> - <translation>Fichier de projet QML</translation> + <translation type="obsolete">Fichier de projet QML</translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Qt Project file</source> <translation>Fichier de projet Qt</translation> </message> @@ -16254,17 +19725,92 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <translation>Fichier d'inclusion de projet Qt</translation> </message> <message> - <location line="+1"/> + <location line="+2"/> <source>message catalog</source> <translation>Catalogue de messages</translation> </message> <message> - <location line="+1"/> + <location line="-5"/> <source>Qt Script file</source> <translation>Fichier Qt Script</translation> </message> + <message> + <location line="-29"/> + <source>BMP image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>GIF image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>ICO image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>JPEG image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>MNG video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>PBM image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>PGM image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>PNG image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>PPM image</source> + <translation type="unfinished"></translation> + </message> <message> <location line="+1"/> + <source>SVG image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>TIFF image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>XBM image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>XPM image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>QML Project file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Qt Project feature file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Qt Resource file</source> <translation>Fichier de ressource Qt</translation> </message> @@ -16300,25 +19846,42 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ </message> <message> <location line="+5"/> + <source>Application process could not be stopped: +%1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Application started</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Application running</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Attached to stopped application</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Inferior process could not be stopped: %1</source> - <translation>Le processus inférieur ne peut pas être arrêté : + <translation type="obsolete">Le processus inférieur ne peut pas être arrêté : %1</translation> </message> <message> - <location line="+5"/> <source>Inferior started.</source> - <translation>Processus inférieur démarré.</translation> + <translation type="obsolete">Processus inférieur démarré.</translation> </message> <message> - <location line="+5"/> <source>Inferior running.</source> - <translation>Processus inférieur en fonctionnement.</translation> + <translation type="obsolete">Processus inférieur en fonctionnement.</translation> </message> <message> - <location line="+5"/> <source>Attached to stopped inferior.</source> - <translation>Attaché au processus inférieur.</translation> + <translation type="obsolete">Attaché au processus inférieur.</translation> </message> <message> <location line="+5"/> @@ -16331,7 +19894,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>Debugger::Internal::TermGdbAdapter</name> <message> - <location filename="../../../src/plugins/debugger/gdb/termgdbadapter.cpp" line="+177"/> + <location filename="../../../src/plugins/debugger/gdb/termgdbadapter.cpp" line="+170"/> <source>Debugger Error</source> <translation>Erreur du débogueur</translation> </message> @@ -16339,14 +19902,12 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>TrkOptions</name> <message> - <location filename="../../../src/plugins/debugger/gdb/trkoptions.cpp" line="+91"/> <source>No Symbian gdb executable specified.</source> - <translation>L'exécutable Symbian gdb n'est pas spécifié.</translation> + <translation type="obsolete">L'exécutable Symbian gdb n'est pas spécifié.</translation> </message> <message> - <location line="+5"/> <source>The Symbian gdb executable '%1' could not be found in the search path.</source> - <translation>L'exécutable Symbian gdb '%1' ne peut pas être trouvé dans le chemin de recherche.</translation> + <translation type="obsolete">L'exécutable Symbian gdb '%1' ne peut pas être trouvé dans le chemin de recherche.</translation> </message> </context> <context> @@ -16356,15 +19917,14 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <translation type="obsolete">TRK Symbian</translation> </message> <message> - <location filename="../../../src/plugins/debugger/gdb/trkoptionspage.cpp" line="+43"/> <source>Symbian TRK</source> - <translation>TRK Symbian</translation> + <translation type="obsolete">TRK Symbian</translation> </message> </context> <context> <name>QmlParser</name> <message> - <location filename="../../../src/plugins/qmleditor/parser/qmljslexer.cpp" line="+553"/> + <location filename="../../../src/libs/qmljs/parser/qmljslexer.cpp" line="+558"/> <source>Illegal character</source> <translation>Caractère invalide</translation> </message> @@ -16411,26 +19971,27 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <translation>Expression régulière invalide flag '%0'</translation> </message> <message> + <location filename="../../../src/libs/qmljs/parser/qmljsparser.cpp" line="+1830"/> <source>Unexpected token `%1'</source> - <translation type="obsolete">Symbole inattendu '%1'</translation> + <translation type="unfinished">Symbole inattendu '%1'</translation> </message> <message> + <location line="+28"/> + <location line="+24"/> <source>Expected token `%1'</source> - <translation type="obsolete">Symbole attendu '%1'</translation> + <translation type="unfinished">Symbole attendu '%1'</translation> </message> <message> - <location filename="../../../src/plugins/qmleditor/parser/qmljsparser.cpp" line="+1752"/> <source>Unexpected token '%1'</source> - <translation>Symbole inattendu '%1'</translation> + <translation type="obsolete">Symbole inattendu '%1'</translation> </message> <message> - <location line="+28"/> - <location line="+23"/> <source>Expected token '%1'</source> - <translation>Symbole attendu '%1'</translation> + <translation type="obsolete">Symbole attendu '%1'</translation> </message> <message> - <location line="+13"/> + <location line="-54"/> + <location line="+67"/> <source>Syntax error</source> <translation>Erreur de syntaxe</translation> </message> @@ -16438,7 +19999,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>Qt4ProjectManager::Internal::S60Devices::Device</name> <message> - <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devices.cpp" line="+66"/> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devices.cpp" line="+90"/> <source>Id:</source> <translation>Id :</translation> </message> @@ -16466,7 +20027,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>trk::BluetoothListener</name> <message> - <location filename="../../../src/shared/trk/bluetoothlistener.cpp" line="+133"/> + <location filename="../../../src/shared/symbianutils/bluetoothlistener.cpp" line="+133"/> <source>%1: Stopping listener %2...</source> <translation>%1 : arrêt de l'observateur %2...</translation> </message> @@ -16504,7 +20065,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>trk::promptStartCommunication</name> <message> - <location filename="../../../src/shared/trk/bluetoothlistener_gui.cpp" line="+68"/> + <location filename="../../../src/shared/symbianutils/bluetoothlistener_gui.cpp" line="+68"/> <source>Connection on %1 canceled.</source> <translation>Connexion sur %1 annulée.</translation> </message> @@ -16541,7 +20102,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>trk::BaseCommunicationStarter</name> <message numerus="yes"> - <location filename="../../../src/shared/trk/communicationstarter.cpp" line="+165"/> + <location filename="../../../src/shared/symbianutils/communicationstarter.cpp" line="+158"/> <source>%1: timed out after %n attempts using an interval of %2ms.</source> <translation> <numerusform>%1 : interruption après %n tentative en utilisant un intervalle de %2ms.</numerusform> @@ -16562,7 +20123,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>Debugger::Internal::SourceFilesModel</name> <message> - <location filename="../../../src/plugins/debugger/sourcefileswindow.cpp" line="-112"/> + <location filename="../../../src/plugins/debugger/sourcefileswindow.cpp" line="-111"/> <source>Internal name</source> <translation>Nom interne</translation> </message> @@ -16575,7 +20136,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>ProjectExplorer::Internal::BuildConfigDialog</name> <message> - <location filename="../../../src/plugins/projectexplorer/projectexplorer.cpp" line="-36"/> + <location filename="../../../src/plugins/projectexplorer/buildconfigdialog.cpp" line="+52"/> <source>Change build configuration && continue</source> <translation>Changer la configuration de compilation et continuer</translation> </message> @@ -16605,12 +20166,17 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <translation>Ceci peut se produire lorsque la configuration de compilation sélectionnée utilise la mauvaise version de Qt et/ou chaîne de compilation pour la configuration d'éxecution sélectionnée (par exemple. l'exécution dans l'émulateur Symbian requiert une compilation avec la chaîne WINSCW).</translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>No valid build configuration found.</source> <translation>Aucune configuration de compilation valide trouvée.</translation> </message> <message> - <location line="+9"/> + <location line="+6"/> + <source>Active run configuration</source> + <translation type="unfinished">Configuration d'exécution active</translation> + </message> + <message> + <location line="+3"/> <source>Choose build configuration:</source> <translation>Choisir la configuration de compilation :</translation> </message> @@ -16618,7 +20184,7 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <context> <name>trk::Session</name> <message> - <location filename="../../../src/shared/trk/trkutils.cpp" line="+79"/> + <location filename="../../../src/shared/symbianutils/trkutils.cpp" line="+82"/> <source>CPU: v%1.%2%3%4</source> <extracomment>CPU description of an S60 device %1 major verison, %2 minor version %3 real name of major verison, %4 real name of minor version</extracomment> <translation>CPU : v%1.%2%3%4</translation> @@ -16658,4 +20224,6586 @@ Veuillez vérifier que le téléphone est connecté et que App TRK est lancé.</ <translation>, taille d'un flottant : %1</translation> </message> </context> +<context> + <name>CommandMappings</name> + <message> + <location filename="../../../src/plugins/coreplugin/actionmanager/commandmappings.ui"/> + <source>Command Mappings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Command</source> + <translation type="unfinished">Commande</translation> + </message> + <message> + <location/> + <source>Label</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Target</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Defaults</source> + <translation type="unfinished">Restaurer</translation> + </message> + <message> + <location/> + <source>Import...</source> + <translation type="unfinished">Importer...</translation> + </message> + <message> + <location/> + <source>Export...</source> + <translation type="unfinished">Exporter...</translation> + </message> + <message> + <location/> + <source>Target Identifier</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Target:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Reset</source> + <translation type="unfinished">Réinitialiser</translation> + </message> +</context> +<context> + <name>CodePaster::FileShareProtocolSettingsWidget</name> + <message> + <location filename="../../../src/plugins/cpaster/fileshareprotocolsettingswidget.ui"/> + <source>Form</source> + <translation type="unfinished">Formulaire</translation> + </message> + <message> + <location/> + <source>&Path:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>&Display:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>entries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>The fileshare-based paster protocol allows for sharing code snippets using simple files on a shared network drive. Files are never deleted.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Git::Internal::StashDialog</name> + <message> + <location filename="../../../src/plugins/git/stashdialog.ui"/> + <source>Stashes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/git/stashdialog.cpp" line="+88"/> + <source>Name</source> + <translation type="unfinished">Nom</translation> + </message> + <message> + <location line="+0"/> + <source>Branch</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Message</source> + <translation type="unfinished">Message</translation> + </message> + <message> + <location line="+19"/> + <source>Delete all...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Delete...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Show</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Restore...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Restore to branch...</source> + <extracomment>Restore a git stash to new branch to be created</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Refresh</source> + <translation type="unfinished">Rafraîchir</translation> + </message> + <message> + <location line="+56"/> + <source><No repository></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Repository: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+26"/> + <location line="+15"/> + <source>Delete stashes</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-14"/> + <source>Do you want to delete all stashes?</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <location line="+15"/> + <source>Do you want to delete %n stash(es)?</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message> + <location line="+53"/> + <source>Repository modified</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>%1 cannot be restored since the repository is modified. +You can choose between stashing the changes or discarding them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Stash</source> + <translation type="unfinished">Mettre dans le stash</translation> + </message> + <message> + <location line="+1"/> + <source>Discard</source> + <translation type="unfinished">Abandonner</translation> + </message> + <message> + <location line="+47"/> + <source>Restore Stash to Branch</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Branch:</source> + <translation type="unfinished">Branche :</translation> + </message> + <message> + <location line="+4"/> + <source>Stash Restore</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Would you like to restore %1?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Error restoring %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::MercurialCommitPanel</name> + <message> + <location filename="../../../src/plugins/mercurial/mercurialcommitpanel.ui"/> + <source>General Information</source> + <translation type="unfinished">Informations générales</translation> + </message> + <message> + <location/> + <source>Repository:</source> + <translation type="unfinished">Dépôt :</translation> + </message> + <message> + <location/> + <source>repository</source> + <translation type="unfinished">dépôt</translation> + </message> + <message> + <location/> + <source>Branch:</source> + <translation type="unfinished">Branche :</translation> + </message> + <message> + <location/> + <source>branch</source> + <translation type="unfinished">branche</translation> + </message> + <message> + <location/> + <source>Commit Information</source> + <translation type="unfinished">Informations de commit</translation> + </message> + <message> + <location/> + <source>Author:</source> + <translation type="unfinished">Auteur :</translation> + </message> + <message> + <location/> + <source>Email:</source> + <translation type="unfinished">Email :</translation> + </message> +</context> +<context> + <name>Mercurial::Internal::OptionsPage</name> + <message> + <location filename="../../../src/plugins/mercurial/optionspage.ui"/> + <source>Form</source> + <translation type="unfinished">Formulaire</translation> + </message> + <message> + <location/> + <source>Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Command:</source> + <translation type="unfinished">Commande :</translation> + </message> + <message> + <location/> + <source>User</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Username to use by default on commit.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Default username:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Email to use by default on commit.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Default email:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Miscellaneous</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Log count:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>The number of recent commit logs to show, choose 0 to see all enteries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Timeout:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Prompt on submit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/mercurial/optionspage.cpp" line="+97"/> + <source>Mercurial</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::RevertDialog</name> + <message> + <location filename="../../../src/plugins/mercurial/revertdialog.ui"/> + <source>Revert</source> + <translation type="unfinished">Rétablir</translation> + </message> + <message> + <location/> + <source>Specify a revision other than the default?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Revision:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::SrcDestDialog</name> + <message> + <location filename="../../../src/plugins/mercurial/srcdestdialog.ui"/> + <source>Dialog</source> + <translation type="unfinished">Boîte de dialogue</translation> + </message> + <message> + <location/> + <source>Default Location</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Local filesystem:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>e.g. https://[user[:pass]@]host[:port]/[path]</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Specify Url:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::AddTargetDialog</name> + <message> + <location filename="../../../src/plugins/projectexplorer/addtargetdialog.ui"/> + <source>Add target</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Target:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::DoubleTabWidget</name> + <message> + <location filename="../../../src/plugins/projectexplorer/doubletabwidget.ui"/> + <source>DoubleTabWidget</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::TargetSettingsWidget</name> + <message> + <location filename="../../../src/plugins/projectexplorer/targetsettingswidget.ui"/> + <source>TargetSettingsWidget</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>BehaviorDialog</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/behaviordialog.ui"/> + <source>Dialog</source> + <translation type="unfinished">Boîte de dialogue</translation> + </message> + <message> + <location/> + <source>Type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Id:</source> + <translation type="unfinished">Id :</translation> + </message> + <message> + <location/> + <source>Property Name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Animation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>SpringFollow</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Duration:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Curve:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>easeNone</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Source:</source> + <translation type="unfinished">Source :</translation> + </message> + <message> + <location/> + <source>Velocity:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Spring:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Damping:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>GradientDialog</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/gradientdialog.ui"/> + <source>Edit Gradient</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>GradientEditor</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/gradienteditor.ui"/> + <source>Form</source> + <translation type="unfinished">Formulaire</translation> + </message> + <message> + <location/> + <source>Gradient Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag & drop.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>1</source> + <translation type="unfinished">1</translation> + </message> + <message> + <location/> + <source>2</source> + <translation type="unfinished">2</translation> + </message> + <message> + <location/> + <source>3</source> + <translation type="unfinished">3</translation> + </message> + <message> + <location/> + <source>4</source> + <translation type="unfinished">4</translation> + </message> + <message> + <location/> + <source>5</source> + <translation type="unfinished">5</translation> + </message> + <message> + <location/> + <source>Gradient Stops Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag & drop the handle to reposition it. Use right mouse button to popup context menu with extra actions.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Zoom</source> + <translation type="unfinished">Zoom</translation> + </message> + <message> + <location/> + <source>Reset Zoom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Position</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Hue</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>H</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Saturation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>S</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Sat</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Value</source> + <translation type="unfinished">Valeur</translation> + </message> + <message> + <location/> + <source>V</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Val</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Alpha</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>A</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Type</source> + <translation type="unfinished">Type</translation> + </message> + <message> + <location/> + <source>Spread</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Current stop's color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show HSV specification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>HSV</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show RGB specification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>RGB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Current stop's position</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Zoom In</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Zoom Out</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Toggle details extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>></source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Linear Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>...</source> + <translation type="unfinished">...</translation> + </message> + <message> + <location/> + <source>Radial Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Conical Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Pad Spread</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Repeat Spread</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Reflect Spread</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/gradienteditor.cpp" line="+412"/> + <source>Start X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Start Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Final X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Final Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <location line="+24"/> + <source>Central X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-20"/> + <location line="+24"/> + <source>Central Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-20"/> + <source>Focal X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Focal Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Radius</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Angle</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+288"/> + <source>Linear</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Radial</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Conical</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Pad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Repeat</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Reflect</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QtGradientDialog</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientdialog.ui"/> + <source>Edit Gradient</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QtGradientEditor</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradienteditor.ui"/> + <source>Form</source> + <translation type="unfinished">Formulaire</translation> + </message> + <message> + <location/> + <source>Gradient Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag & drop.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>1</source> + <translation type="unfinished">1</translation> + </message> + <message> + <location/> + <source>2</source> + <translation type="unfinished">2</translation> + </message> + <message> + <location/> + <source>3</source> + <translation type="unfinished">3</translation> + </message> + <message> + <location/> + <source>4</source> + <translation type="unfinished">4</translation> + </message> + <message> + <location/> + <source>5</source> + <translation type="unfinished">5</translation> + </message> + <message> + <location/> + <source>Gradient Stops Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag & drop the handle to reposition it. Use right mouse button to popup context menu with extra actions.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Zoom</source> + <translation type="unfinished">Zoom</translation> + </message> + <message> + <location/> + <source>Reset Zoom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Position</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Hue</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>H</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Saturation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>S</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Sat</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Value</source> + <translation type="unfinished">Valeur</translation> + </message> + <message> + <location/> + <source>V</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Val</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Alpha</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>A</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Type</source> + <translation type="unfinished">Type</translation> + </message> + <message> + <location/> + <source>Spread</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Current stop's color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show HSV specification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>HSV</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Show RGB specification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>RGB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Current stop's position</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>%</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Zoom In</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Zoom Out</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Toggle details extension</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>></source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Linear Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>...</source> + <translation type="unfinished">...</translation> + </message> + <message> + <location/> + <source>Radial Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Conical Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Pad Spread</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Repeat Spread</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Reflect Spread</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradienteditor.cpp" line="+431"/> + <source>Start X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Start Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Final X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Final Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <location line="+24"/> + <source>Central X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-20"/> + <location line="+24"/> + <source>Central Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-20"/> + <source>Focal X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Focal Y</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Radius</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Angle</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+288"/> + <source>Linear</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Radial</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Conical</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Pad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Repeat</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Reflect</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QtGradientView</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientview.ui"/> + <source>Gradient View</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientview.cpp" line="+208"/> + <source>New...</source> + <translation type="unfinished">Nouveau...</translation> + </message> + <message> + <location/> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientview.cpp" line="+1"/> + <source>Edit...</source> + <translation type="unfinished">Modifier...</translation> + </message> + <message> + <location/> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientview.cpp" line="+1"/> + <source>Rename</source> + <translation type="unfinished">Renommer</translation> + </message> + <message> + <location/> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientview.cpp" line="+1"/> + <source>Remove</source> + <translation type="unfinished">Supprimer</translation> + </message> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientview.cpp" line="-104"/> + <source>Grad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+26"/> + <source>Remove Gradient</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Are you sure you want to remove the selected gradient?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QtGradientViewDialog</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientviewdialog.ui"/> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientviewdialog.h" line="+62"/> + <source>Select Gradient</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::Internal::SettingsPage</name> + <message> + <location filename="../../../src/plugins/qmldesigner/settingspage.ui"/> + <source>Form</source> + <translation type="unfinished">Formulaire</translation> + </message> + <message> + <location/> + <source>Snapping</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Item spacing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Snap margin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qmldesigner/settingspage.cpp" line="+83"/> + <source>Qt Quick Designer</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>StartExternalQmlDialog</name> + <message> + <location filename="../../../src/plugins/qmlinspector/startexternalqmldialog.ui"/> + <source>Start Simultaneous QML and C++ Debugging </source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Debugging address:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Debugging port:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>127.0.0.1</source> + <translation type="unfinished">127.0.0.1</translation> + </message> + <message> + <location/> + <source>Project:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source><No project></source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Viewer path:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Viewer arguments:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>To switch languages while debugging, go to Debug->Language menu.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MaemoConfigTestDialog</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.ui"/> + <source>Device Configuration Test</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MaemoPackageCreationWidget</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.ui"/> + <source>Package contents:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Add File to Package</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Remove File from Package</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MaemoSettingsWidget</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.ui"/> + <source>Maemo Device Configurations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Configuration:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Name</source> + <translation type="unfinished">Nom</translation> + </message> + <message> + <location/> + <source>Device type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Remote device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Maemo emulator</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Authentication type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Password</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Host name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>IP or host name of the device</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Ports:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>SSH:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Gdb server:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Connection timeout:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>s</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Username:</source> + <translation type="unfinished">Nom d'utilisateur :</translation> + </message> + <message> + <location/> + <source>Password:</source> + <translation type="unfinished">Mot de passe :</translation> + </message> + <message> + <location/> + <source>Private key file:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Add</source> + <translation type="unfinished">Ajouter</translation> + </message> + <message> + <location/> + <source>Remove</source> + <translation type="unfinished">Supprimer</translation> + </message> + <message> + <location/> + <source>Test</source> + <translation type="unfinished">Test</translation> + </message> + <message> + <location/> + <source>Generate SSH Key ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Deploy Public Key ...</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MaemoSshConfigDialog</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.ui"/> + <source>SSH Key Configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Options</source> + <translation type="unfinished">Options</translation> + </message> + <message> + <location/> + <source>Key size:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Key algorithm:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>RSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>DSA</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Generate SSH Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Save Public Key...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Save Private Key...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Close</source> + <translation type="unfinished">Fermer</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60CreatePackageStepWidget</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.ui"/> + <source>Form</source> + <translation type="unfinished">Formulaire</translation> + </message> + <message> + <location/> + <source>Self-signed certificate</source> + <translation type="unfinished">Certificat autosigné</translation> + </message> + <message> + <location/> + <source>Custom certificate:</source> + <translation type="unfinished">Certificat personnalisé :</translation> + </message> + <message> + <location/> + <source>Choose certificate file (.cer)</source> + <translation type="unfinished">Choisir un fichier de certificat (.cer)</translation> + </message> + <message> + <location/> + <source>Key file:</source> + <translation type="unfinished">Fichier contenant la clé :</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::TargetSetupPage</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/targetsetuppage.ui"/> + <source>Setup targets for your project</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Qt Creator can set up the following targets:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Qt Version</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Build Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Import Existing Shadow Build...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp" line="+165"/> + <source>Import</source> + <comment>Is this an import of an existing build or a new one?</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>New</source> + <comment>Is this an import of an existing build or a new one?</comment> + <translation type="unfinished">Nouveau</translation> + </message> + <message> + <location line="+137"/> + <source>Qt Creator can set up the following targets for project <b>%1</b>:</source> + <comment>%1: Project name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> + <source>Choose a directory to scan for additional shadow builds</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>No builds found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>No builds for project file "%1" were found in the folder "%2".</source> + <comment>%1: pro-file, %2: directory that was checked.</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+40"/> + <source><b>Error:</b> </source> + <comment>Severity is Task::Error</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source><b>Warning:</b> </source> + <comment>Severity is Task::Warning</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::TestWizardPage</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/testwizardpage.ui"/> + <source>WizardPage</source> + <translation type="unfinished">WizardPage</translation> + </message> + <message> + <location/> + <source>Specify basic information about the test class for which you want to generate skeleton source code file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Class name:</source> + <translation type="unfinished">Nom de la classe :</translation> + </message> + <message> + <location/> + <source>Type:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Test</source> + <translation type="unfinished">Test</translation> + </message> + <message> + <location/> + <source>Benchmark</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>File:</source> + <translation type="unfinished">Fichier :</translation> + </message> + <message> + <location/> + <source>Generate initialization and cleanup code</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Test slot:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Requires QApplication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>Use a test data set</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/testwizardpage.cpp" line="+46"/> + <source>Test Class Information</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HighlighterSettingsPage</name> + <message> + <source>Form</source> + <translation type="obsolete">Formulaire</translation> + </message> + <message> + <source>Location:</source> + <translation type="obsolete">Emplacement :</translation> + </message> + <message> + <source>Reset to default</source> + <translation type="obsolete">Restaurer les paramètres par défaut</translation> + </message> + <message> + <source>R</source> + <translation type="obsolete">R</translation> + </message> +</context> +<context> + <name>VCSBase::CleanDialog</name> + <message> + <location filename="../../../src/plugins/vcsbase/cleandialog.ui"/> + <source>Clean Repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/vcsbase/cleandialog.cpp" line="+68"/> + <source>The directory %1 could not be deleted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>The file %1 could not be deleted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+36"/> + <source>There were errors when cleaning the repository %1:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>Delete...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Name</source> + <translation type="unfinished">Nom</translation> + </message> + <message> + <location line="+18"/> + <source>Repository: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>%1 bytes, last modified %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+36"/> + <source>Delete</source> + <translation type="unfinished">Supprimer</translation> + </message> + <message numerus="yes"> + <location line="+1"/> + <source>Do you want to delete %n files?</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message> + <location line="+11"/> + <source>Cleaning %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CommonSettingsPage</name> + <message> + <location filename="../../../src/plugins/vcsbase/commonsettingspage.ui"/> + <source>Wrap submit message at:</source> + <translation type="unfinished">Limiter la largeur du message à  :</translation> + </message> + <message> + <location/> + <source> characters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location/> + <source>An executable which is called with the submit message in a temporary file as first argument. It should return with an exit != 0 and a message on standard error to indicate failure.</source> + <translation type="unfinished">Un fichier exécutable qui est appelé avec comme premier argument le message dans un fichier temporaire. Pour indiquer une erreur, il doit se terminer avec un code != 0 et un message sur la sortie d'erreur standard.</translation> + </message> + <message> + <location/> + <source>Submit message check script:</source> + <translation type="unfinished">Script de vérification du message :</translation> + </message> + <message> + <location/> + <source>A file listing user names and email addresses in a 4-column mailmap format: +name <email> alias <email></source> + <translation type="unfinished">Un fichier listant les noms d'utilisateur et leur adresse email dans le format 4 colonnes de mailmap : +nom <email> alias <email></translation> + </message> + <message> + <location/> + <source>User/alias configuration file:</source> + <translation type="unfinished">Fichier de configuration des alias utilisateur :</translation> + </message> + <message> + <location/> + <source>A simple file containing lines with field names like "Reviewed-By:" which will be added below the submit editor.</source> + <translation type="unfinished">Un fichier texte contenant des lignes telles que "Reviewed-By:", qui seront ajoutées à la fin dans l'éditeur de message.</translation> + </message> + <message> + <location/> + <source>User fields configuration file:</source> + <translation type="unfinished">Fichier de configuration des champs utilisateurs :</translation> + </message> +</context> +<context> + <name>BorderImageSpecifics</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/BorderImageSpecifics.qml" line="+17"/> + <source>Image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Source Size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> + <source>Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Bottom</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>emptyPane</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/emptyPane.qml" line="+38"/> + <source>none or multiple items selected</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ExpressionEditor</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/ExpressionEditor.qml" line="+49"/> + <source>Expression</source> + <translation type="unfinished">Expression</translation> + </message> +</context> +<context> + <name>Extended</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/Extended.qml" line="+5"/> + <source>Effect</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+71"/> + <location line="+70"/> + <source>Blur Radius:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-18"/> + <source>Pixel Size:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+41"/> + <source>x Offset: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>y Offset: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ExtendedFunctionButton</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/ExtendedFunctionButton.qml" line="+64"/> + <source>Reset</source> + <translation type="unfinished">Réinitialiser</translation> + </message> + <message> + <location line="+11"/> + <source>Set Expression</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FontGroupBox</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/FontGroupBox.qml" line="+6"/> + <location line="+7"/> + <source>Font</source> + <translation type="unfinished">Police</translation> + </message> + <message> + <location line="+25"/> + <source>Size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Font Style</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Style</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Geometry</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/Geometry.qml" line="+8"/> + <source>Geometry</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Position</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+40"/> + <source>Size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+34"/> + <source>Lock aspect ratio</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ImageSpecifics</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/ImageSpecifics.qml" line="+15"/> + <source>Image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>Fill Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Aliasing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Smooth</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Source Size</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> + <source>Painted Size</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Layout</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/Layout.qml" line="+7"/> + <source>Layout</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Anchors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+33"/> + <location line="+50"/> + <location line="+49"/> + <location line="+48"/> + <location line="+48"/> + <location line="+48"/> + <source>Target</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-224"/> + <location line="+49"/> + <location line="+48"/> + <location line="+48"/> + <location line="+48"/> + <location line="+48"/> + <source>Margin</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Modifiers</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/Modifiers.qml" line="+6"/> + <source>Manipulation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+118"/> + <source>Rotation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>z</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RectangleColorGroupBox</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/RectangleColorGroupBox.qml" line="+7"/> + <source>Colors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+43"/> + <source>Stops</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Gradient Stops</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Rectangle</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+45"/> + <source>Border</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RectangleSpecifics</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/RectangleSpecifics.qml" line="+21"/> + <source>Rectangle</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Border</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Radius</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>StandardTextColorGroupBox</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/StandardTextColorGroupBox.qml" line="+11"/> + <source>Color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Text</source> + <translation type="unfinished">Texte</translation> + </message> + <message> + <location line="+7"/> + <source>Style</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Selection</source> + <translation type="unfinished">Sélection</translation> + </message> + <message> + <location line="+9"/> + <source>Selected</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>StandardTextGroupBox</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/StandardTextGroupBox.qml" line="+7"/> + <location line="+9"/> + <source>Text</source> + <translation type="unfinished">Texte</translation> + </message> + <message> + <location line="+12"/> + <source>Wrap Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Alignment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source></source> + <translation></translation> + </message> + <message> + <location line="+8"/> + <source>Aliasing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Smooth</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Switches</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/Switches.qml" line="+21"/> + <source>special properties</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>layout and geometry</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Geometry</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>advanced properties</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Advanced</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TextEditSpecifics</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/TextEditSpecifics.qml" line="+24"/> + <source>Text Edit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Format</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TextInputGroupBox</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/TextInputGroupBox.qml" line="+7"/> + <source>Text Input</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Input Mask</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Echo Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>Pass. Char</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Password Character</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Flags</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Read Only</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Cursor Visible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Focus On Press</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Auto Scroll</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Transformation</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/Transformation.qml" line="+6"/> + <source>Transformation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Origin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Top Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Top</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Top Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Center</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Bottom Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Bottom</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Bottom Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Scale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> + <source>Rotation</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Type</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/Type.qml" line="+7"/> + <location line="+7"/> + <source>Type</source> + <translation type="unfinished">Type</translation> + </message> + <message> + <location line="+17"/> + <source>Id</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Visibility</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/Visibility.qml" line="+6"/> + <location line="+9"/> + <source>Visibility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Is visible</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Opacity</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>WebViewSpecifics</name> + <message> + <location filename="../qmldesigner/propertyeditor/Qt/WebViewSpecifics.qml" line="+18"/> + <source>WebView</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+21"/> + <source>Preferred Width</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Page Height</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ExtensionSystem::PluginDetailsView</name> + <message> + <location filename="../../../src/libs/extensionsystem/plugindetailsview.cpp" line="+81"/> + <source>None</source> + <translation type="unfinished">Aucune</translation> + </message> +</context> +<context> + <name>ExtensionSystem::PluginView</name> + <message> + <location filename="../../../src/libs/extensionsystem/pluginview.cpp" line="+158"/> + <location line="+19"/> + <location line="+57"/> + <source>Load on Startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-69"/> + <source>Utilities</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlJS::Check</name> + <message> + <location filename="../../../src/libs/qmljs/qmljscheck.cpp" line="+73"/> + <source>unknown value for enum</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>value might be 'undefined'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>enum value is not a string or number</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>numerical value expected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>boolean value expected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>string value expected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <source>not a valid color</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>expected anchor line</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+68"/> + <source>unknown type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <location line="+11"/> + <source>expected id</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-2"/> + <source>using string literals for ids is discouraged</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>ids must be lower case</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+73"/> + <source>'%1' is not a valid property name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>'%1' does not have members</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>'%1' is not a member of '%2'</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlJS::Interpreter::QmlXmlReader</name> + <message> + <location filename="../../../src/libs/qmljs/qmljsinterpreter.cpp" line="+344"/> + <source>The file is not module file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Unexpected element <%1> in <%2></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>invalid value '%1' for attribute %2 in <%3></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source><%1> has no valid %2 attribute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1549"/> + <source>%1: %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlJS::Link</name> + <message> + <location filename="../../../src/libs/qmljs/qmljslink.cpp" line="+218"/> + <source>could not find file or directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+42"/> + <source>expected two numbers separated by a dot</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>package import requires a version number</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+47"/> + <source>package not found</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Utils::FancyMainWindow</name> + <message> + <location filename="../../../src/libs/utils/fancymainwindow.cpp" line="+63"/> + <source>Locked</source> + <translation type="unfinished">Verrouillé</translation> + </message> + <message> + <location line="+2"/> + <source>Reset to Default Layout</source> + <translation type="unfinished">Restaurer la disposition par défaut</translation> + </message> +</context> +<context> + <name>Utils::FileWizardDialog</name> + <message> + <location filename="../../../src/libs/utils/filewizarddialog.cpp" line="+45"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> +</context> +<context> + <name>Utils::FilterLineEdit</name> + <message> + <location filename="../../../src/libs/utils/filterlineedit.cpp" line="+39"/> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Clear text</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Utils::fileDeletedPrompt</name> + <message> + <location filename="../../../src/libs/utils/reloadpromptutils.cpp" line="+26"/> + <source>File has been removed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>The file %1 has been removed outside Qt Creator. Do you want to save it under a different name, or close the editor?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Close</source> + <translation type="unfinished">Fermer</translation> + </message> + <message> + <location line="+1"/> + <source>Save as...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Save</source> + <translation type="unfinished">Enregistrer</translation> + </message> +</context> +<context> + <name>Utils::UnixTools</name> + <message> + <location filename="../../../src/libs/utils/unixutils.cpp" line="+60"/> + <source><table border=1 cellspacing=0 cellpadding=3><tr><th>Variable</th><th>Expands to</th></tr><tr><td>%d</td><td>directory of current file</td></tr><tr><td>%f</td><td>file name (with full path)</td></tr><tr><td>%n</td><td>file name (without path)</td></tr><tr><td>%%</td><td>%</td></tr></table></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Utils::LinearProgressWidget</name> + <message> + <location filename="../../../src/libs/utils/wizard.cpp" line="+126"/> + <source>...</source> + <translation type="unfinished">...</translation> + </message> +</context> +<context> + <name>BINEditor::BinEditor</name> + <message> + <location filename="../../../src/plugins/bineditor/bineditor.cpp" line="+1131"/> + <source>Copying Failed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>You cannot copy more than 4 MB of binary data.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+110"/> + <source>Copy Selection as ASCII Characters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Copy Selection as Hex Values</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Jump to Address in This Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Jump to Address in New Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <source>Jump to Address 0x%1 in This Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Jump to Address 0x%1 in New Window</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>BINEditor::Internal::ImageViewerFactory</name> + <message> + <location filename="../../../src/plugins/bineditor/imageviewer.cpp" line="+100"/> + <source>Image Viewer</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CMakeProjectManager::Internal::CMakeRunConfiguration</name> + <message> + <location filename="../../../src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp" line="-103"/> + <source>Clean Environment</source> + <translation type="unfinished">Environnement de nettoyage</translation> + </message> + <message> + <location line="+2"/> + <source>System Environment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Build Environment</source> + <translation type="unfinished">Environnement de compilation</translation> + </message> +</context> +<context> + <name>CMakeProjectManager::Internal::CMakeTarget</name> + <message> + <location filename="../../../src/plugins/cmakeprojectmanager/cmaketarget.cpp" line="+49"/> + <location filename="../../../src/plugins/projectexplorer/userfileaccessor.cpp" line="+772"/> + <source>Desktop</source> + <comment>CMake Default target display name</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CMakeProjectManager::Internal::MakeStep</name> + <message> + <location filename="../../../src/plugins/cmakeprojectmanager/makestep.cpp" line="-211"/> + <source>Make</source> + <comment>CMakeProjectManager::MakeStep display name.</comment> + <translation type="unfinished">Make</translation> + </message> +</context> +<context> + <name>CMakeProjectManager::Internal::MakeStepFactory</name> + <message> + <location line="+288"/> + <source>Make</source> + <comment>Display name for CMakeProjectManager::MakeStep id.</comment> + <translation type="unfinished">Make</translation> + </message> +</context> +<context> + <name>Core::CommandMappings</name> + <message> + <location filename="../../../src/plugins/coreplugin/actionmanager/commandmappings.cpp" line="+139"/> + <source>Command</source> + <translation type="unfinished">Commande</translation> + </message> + <message> + <location line="+0"/> + <source>Label</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Core</name> + <message> + <location filename="../../../src/plugins/coreplugin/coreconstants.h" line="+131"/> + <source>Qt</source> + <translation type="unfinished">Qt</translation> + </message> + <message> + <location line="+4"/> + <source>Environment</source> + <translation type="unfinished">Environnement</translation> + </message> +</context> +<context> + <name>Core::DesignMode</name> + <message> + <location filename="../../../src/plugins/coreplugin/designmode.cpp" line="+151"/> + <source>Design</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Core::Internal::SystemEditor</name> + <message> + <location filename="../../../src/plugins/coreplugin/editormanager/systemeditor.cpp" line="+67"/> + <source>Could not open url %1.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Core::EditorToolBar</name> + <message> + <location filename="../../../src/plugins/coreplugin/editortoolbar.cpp" line="+196"/> + <source>Copy full path to clipboard</source> + <translation type="unfinished">Copier le chemin complet vers le presse-papier</translation> + </message> + <message> + <location line="+59"/> + <source>Make writable</source> + <translation type="unfinished">Rendre inscriptible</translation> + </message> + <message> + <location line="+4"/> + <source>File is writable</source> + <translation type="unfinished">Le fichier est inscriptible</translation> + </message> +</context> +<context> + <name>GenericSshConnection</name> + <message> + <location filename="../../../src/plugins/coreplugin/ssh/sshconnection.cpp" line="+93"/> + <source>Could not connect to host.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Error in cryptography backend: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Core::InteractiveSshConnection</name> + <message> + <location line="+133"/> + <source>Error sending input</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Core::SftpConnection</name> + <message> + <location line="+59"/> + <source>Error setting up SFTP subsystem</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+28"/> + <location line="+20"/> + <source>Could not open file '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-14"/> + <source>Could not uplodad file '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Could not copy remote file '%1' to local file '%2'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Could not create remote directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Could not remove remote directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Could not get remote directory contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Could not remove remote file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Could not change remote working directory</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SshKeyGenerator</name> + <message> + <location filename="../../../src/plugins/coreplugin/ssh/sshkeygenerator.cpp" line="+21"/> + <source>Error creating temporary files.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Error generating keys: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <location line="+8"/> + <source>Error reading temporary files.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CodePaster</name> + <message> + <location filename="../../../src/plugins/cpaster/cpasterconstants.h" line="+38"/> + <source>Code Pasting</source> + <translation type="unfinished">Collage de code</translation> + </message> +</context> +<context> + <name>CodePaster::FileShareProtocol</name> + <message> + <location filename="../../../src/plugins/cpaster/fileshareprotocol.cpp" line="+104"/> + <source>Cannot open %1: %2</source> + <translation type="unfinished">Imposible d'ouvrir %1 : %2</translation> + </message> + <message> + <location line="+9"/> + <source>%1 does not appear to be a paster file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Error in %1 at %2: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Please configure a path.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+59"/> + <source>Unable to open a file for writing in %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>Pasted: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CodePaster::FileShareProtocolSettingsPage</name> + <message> + <location filename="../../../src/plugins/cpaster/fileshareprotocolsettingspage.cpp" line="+110"/> + <source>Fileshare</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CodePaster::PasteBinDotComSettings</name> + <message> + <location filename="../../../src/plugins/cpaster/pastebindotcomsettings.cpp" line="+58"/> + <source>Pastebin.com</source> + <translation type="unfinished">Pastebin.com</translation> + </message> +</context> +<context> + <name>CodePaster::PasteView</name> + <message> + <location filename="../../../src/plugins/cpaster/pasteview.cpp" line="+51"/> + <source><Comment></source> + <translation type="unfinished"><Commentaire></translation> + </message> + <message> + <location line="+4"/> + <source>Paste</source> + <translation type="unfinished">Coller</translation> + </message> +</context> +<context> + <name>CodePaster::Protocol</name> + <message> + <location filename="../../../src/plugins/cpaster/protocol.cpp" line="+143"/> + <source>%1 - Configuration Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Settings...</source> + <translation type="unfinished">Paramètres...</translation> + </message> +</context> +<context> + <name>CppEditor</name> + <message> + <location filename="../../../src/plugins/cppeditor/cppeditorconstants.h" line="+23"/> + <source>C++</source> + <translation type="unfinished">C++</translation> + </message> +</context> +<context> + <name>CppTools::QuickFix</name> + <message> + <location filename="../../../src/plugins/cppeditor/cppquickfix.cpp" line="+133"/> + <location line="+96"/> + <source>Rewrite Using %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-2"/> + <source>Swap Operands</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+74"/> + <source>Rewrite Condition Using ||</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+61"/> + <source>Split Declaration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+106"/> + <source>Add Curly Braces</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+60"/> + <location line="+63"/> + <source>Move Declaration out of Condition</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+85"/> + <source>Split if Statement</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+110"/> + <source>Enclose in QLatin1String(...)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+68"/> + <source>Convert to Objective-C String Literal</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+74"/> + <source>Use Fast String Concatenation with %</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>VCS</name> + <message> + <location filename="../../../src/plugins/cvs/cvsconstants.h" line="+41"/> + <source>CVS Commit Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/cvs/cvsplugin.cpp" line="-943"/> + <source>CVS Command Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>CVS File Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>CVS Annotation Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>CVS Diff Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/git/gitconstants.h" line="+39"/> + <source>Git Command Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Git File Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Git Annotation Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Git Diff Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Git Submit Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/mercurial/constants.h" line="+58"/> + <source>Mercurial Command Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Mercurial File Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Mercurial Annotation Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Mercurial Diff Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Mercurial Commit Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/perforce/perforceconstants.h" line="+41"/> + <source>Perforce.SubmitEditor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Perforce CommandLog Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Perforce Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Perforce Diff Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Perforce Annotation Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/subversion/subversionconstants.h" line="+41"/> + <source>Subversion Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Subversion Commit Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/subversion/subversionplugin.cpp" line="-986"/> + <source>Subversion Command Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Subversion File Log Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Subversion Annotation Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Subversion Diff Editor</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CVS::Internal::CVSEditor</name> + <message> + <location filename="../../../src/plugins/cvs/cvseditor.cpp" line="+57"/> + <source>Annotate revision "%1"</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::Internal::CdbOptionsPage</name> + <message> + <location filename="../../../src/plugins/debugger/cdb/cdboptionspage.cpp" line="+44"/> + <source>Cdb</source> + <translation type="unfinished">Cdb</translation> + </message> +</context> +<context> + <name>CdbSymbolGroupContext</name> + <message> + <location filename="../../../src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp" line="+142"/> + <source><Unknown Type></source> + <translation type="unfinished"><type inconnu></translation> + </message> + <message> + <location line="+13"/> + <source><Unknown Value></source> + <translation type="unfinished"><valeur inconnue></translation> + </message> + <message> + <location line="+297"/> + <source><Unknown></source> + <translation type="unfinished"><Inconnu></translation> + </message> +</context> +<context> + <name>Debugger::Internal::CacheDirectoryDialog</name> + <message> + <source>Path:</source> + <translation type="obsolete">Chemin :</translation> + </message> +</context> +<context> + <name>Debugger::Cdb</name> + <message> + <location filename="../../../src/plugins/debugger/cdb/coreengine.cpp" line="+54"/> + <source>Unable to load the debugger engine library '%1': %2</source> + <translation type="unfinished">Impossible de charger la bibliothèque de débogage '%1': %2</translation> + </message> + <message> + <location line="+163"/> + <source>Unable to resolve '%1' in the debugger engine library '%2'</source> + <translation type="unfinished">Impossible de résoudre '%1' dans la bibliothèque de débogage '%2'</translation> + </message> +</context> +<context> + <name>CdbCore::CoreEngine</name> + <message> + <location line="+213"/> + <source>Unable to set the image path to %1: %2</source> + <translation type="unfinished">Impossible de définir le chemin de l'image %1 : %2</translation> + </message> + <message> + <location line="+26"/> + <source>Unable to create a process '%1': %2</source> + <translation type="unfinished">Impossible de créer un processus '%1': %2</translation> + </message> + <message> + <location line="+28"/> + <source>Attaching to a process failed for process id %1: %2</source> + <translation type="unfinished">Impossible d'attacher au processsus d'id %1 : %2</translation> + </message> +</context> +<context> + <name>Debugger::DebuggerUISwitcher</name> + <message> + <location filename="../../../src/plugins/debugger/debuggeruiswitcher.cpp" line="+217"/> + <source>&Languages</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>Alt+L</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+49"/> + <source>Language</source> + <translation type="unfinished">Langage</translation> + </message> +</context> +<context> + <name>Debugger::Internal::AbstractPlainGdbAdapter</name> + <message> + <source>Starting executable failed: +</source> + <translation type="obsolete">Échec du lancement de l'exécutable : +</translation> + </message> +</context> +<context> + <name>GdbChooserWidget</name> + <message> + <location filename="../../../src/plugins/debugger/gdb/gdbchooserwidget.cpp" line="+106"/> + <source>Unable to run '%1': %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::Internal::GdbChooserWidget</name> + <message> + <location line="+43"/> + <source>Binary</source> + <translation type="unfinished">Binaire</translation> + </message> + <message> + <location line="+0"/> + <source>Toolchains</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+186"/> + <source>Duplicate binary</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>The binary '%1' already exists.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::Internal::ToolChainSelectorWidget</name> + <message> + <location line="+83"/> + <source>Desktop/General</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Symbian</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Maemo</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::Internal::BinaryToolChainDialog</name> + <message> + <location line="+101"/> + <source>Select binary and toolchains</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Gdb binary</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Path:</source> + <translation type="unfinished">Chemin :</translation> + </message> +</context> +<context> + <name>Debugger::Internal::LocalPlainGdbAdapter</name> + <message> + <source>Cannot set up communication with child process: %1</source> + <translation type="obsolete">Impossible de mettre en place la communication avec le processus enfant : %1</translation> + </message> +</context> +<context> + <name>Debugger::Internal::RemoteGdbServerAdapter</name> + <message> + <source>The upload process failed to start. Shell missing?</source> + <translation type="obsolete">Le processus d'upload n'a pas pu démarrer. Shell manquant ?</translation> + </message> + <message> + <source>The upload process crashed some time after starting successfully.</source> + <translation type="obsolete">Le processus d'upload a crashé après avoir démarré.</translation> + </message> + <message> + <source>An error occurred when attempting to write to the upload process. For example, the process may not be running, or it may have closed its input channel.</source> + <translation type="obsolete">Une erreur est survenue lors d'une tentative d'écriture sur l'entrée du processus d'upload. Le processus peut ne pas être lancé, ou il a fermé son entrée.</translation> + </message> + <message> + <source>An error occurred when attempting to read from the upload process. For example, the process may not be running.</source> + <translation type="obsolete">Une erreur est survenue lors d'une tentative de lecture depuis le processus d'upload. Il est probable que le processus n'est pas en cours d'exécution.</translation> + </message> + <message> + <source>An unknown error in the upload process occurred. This is the default return value of error().</source> + <translation type="obsolete">Une erreur inconnue est survenue dans le processus d'upload. Ceci est la valeur de retour par défaut de error().</translation> + </message> + <message> + <source>Error</source> + <translation type="obsolete">Erreur</translation> + </message> + <message> + <source>Starting remote executable failed: +</source> + <translation type="obsolete">Le démarrage de l'exécutable distant a échoué : +</translation> + </message> +</context> +<context> + <name>Debugger::Internal::PdbEngine</name> + <message> + <location filename="../../../src/plugins/debugger/pdb/pdbengine.cpp" line="+155"/> + <source>Running requested...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+30"/> + <source>Unable to start pdb '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Adapter start failed</source> + <translation type="unfinished">Démarrage de l'adaptateur échoué</translation> + </message> + <message> + <location line="+263"/> + <source>'%1' contains no identifier</source> + <translation type="unfinished">'%1' ne contient pas d'identifiant</translation> + </message> + <message> + <location line="+5"/> + <source>String literal %1</source> + <translation type="unfinished">Chaîne de caractères %1</translation> + </message> + <message> + <location line="+15"/> + <source>Cowardly refusing to evaluate expression '%1' with potential side effects</source> + <translation type="unfinished">Refuse lâchement d'évaluer l'expression '%1' avec des effects secondaires potentiels</translation> + </message> + <message> + <location line="+57"/> + <source>Pdb I/O Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>The Pdb process failed to start. Either the invoked program '%1' is missing, or you may have insufficient permissions to invoke the program.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>The Pdb process crashed some time after starting successfully.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>The last waitFor...() function timed out. The state of QProcess is unchanged, and you can try calling waitFor...() again.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>An error occurred when attempting to write to the Pdb process. For example, the process may not be running, or it may have closed its input channel.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>An error occurred when attempting to read from the Pdb process. For example, the process may not be running.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>An unknown error in the Pdb process occurred. </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::Internal::SnapshotHandler</name> + <message> + <location filename="../../../src/plugins/debugger/snapshothandler.cpp" line="+67"/> + <location line="+11"/> + <source>Function:</source> + <translation type="unfinished">Fonction :</translation> + </message> + <message> + <location line="-10"/> + <location line="+12"/> + <source>File:</source> + <translation type="unfinished">Fichier :</translation> + </message> + <message> + <location line="-11"/> + <source>Date:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+77"/> + <source>...</source> + <translation type="unfinished">...</translation> + </message> + <message> + <location line="+2"/> + <source><More></source> + <translation type="unfinished"><plus></translation> + </message> + <message> + <location line="+40"/> + <source>Function</source> + <translation type="unfinished">Fonction</translation> + </message> + <message> + <location line="+1"/> + <source>Date</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> +</context> +<context> + <name>Debugger::Internal::SnapshotWindow</name> + <message> + <location filename="../../../src/plugins/debugger/snapshotwindow.cpp" line="+76"/> + <source>Snapshots</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+67"/> + <source>Adjust Column Widths to Contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Always Adjust Column Widths to Contents</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::Internal::TcfEngine</name> + <message> + <source>%1.</source> + <translation type="obsolete">%1.</translation> + </message> + <message> + <source>Stopped.</source> + <translation type="obsolete">Arrêté.</translation> + </message> +</context> +<context> + <name>Designer::Internal::FormEditorFactory</name> + <message> + <location filename="../../../src/plugins/designer/formeditorfactory.cpp" line="+93"/> + <source>This file can only be edited in <b>Design</b> mode.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Switch mode</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Designer::Internal::FormFileWizardDialog</name> + <message> + <location filename="../../../src/plugins/designer/formwizarddialog.cpp" line="+27"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> +</context> +<context> + <name>FakeVim::Internal::FakeVimHandler::Private</name> + <message> + <location filename="../../../src/plugins/fakevim/fakevimhandler.cpp" line="-950"/> + <source>Not an editor command: %1</source> + <translation type="unfinished">Pas une commande de l'éditeur : %1</translation> + </message> +</context> +<context> + <name>FakeVim::Internal::FakeVimExCommandsPage</name> + <message> + <location filename="../../../src/plugins/fakevim/fakevimplugin.cpp" line="-813"/> + <location line="+26"/> + <source>Ex Command Mapping</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-24"/> + <source>FakeVim</source> + <translation type="unfinished">FakeVim</translation> + </message> + <message> + <location line="+25"/> + <source>Ex Trigger Expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Regular expression:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Ex Command</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Find::FindPlugin</name> + <message> + <location filename="../../../src/plugins/find/findplugin.cpp" line="+189"/> + <source>&Find/Replace</source> + <translation type="unfinished">&Rechercher/Remplacer</translation> + </message> + <message> + <location line="+18"/> + <source>Advanced Find</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Open Advanced Find...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ctrl+Shift+F</source> + <translation type="unfinished">Ctrl+Maj+F</translation> + </message> +</context> +<context> + <name>GenericProjectManager::Internal::GenericMakeStep</name> + <message> + <location filename="../../../src/plugins/genericprojectmanager/genericmakestep.cpp" line="-212"/> + <source>Make</source> + <translation type="unfinished">Make</translation> + </message> +</context> +<context> + <name>GenericProjectManager::Internal::Manager</name> + <message> + <location filename="../../../src/plugins/genericprojectmanager/genericprojectmanager.cpp" line="+73"/> + <source>Failed opening project '%1': Project already open</source> + <translation type="unfinished">Échec de l'ouverture du projet '%1' : projet déjà ouvert</translation> + </message> +</context> +<context> + <name>Git::Internal::RemoteBranchModel</name> + <message> + <location filename="../../../src/plugins/git/branchmodel.cpp" line="-141"/> + <source>(no branch)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>GitClient</name> + <message> + <location filename="../../../src/plugins/git/gitclient.cpp" line="-1432"/> + <source>Unable to determine the repository for %1.</source> + <translation type="unfinished">Impossible de déterminer le dépôt de %1.</translation> + </message> +</context> +<context> + <name>Git::Internal::GitCommand</name> + <message> + <location filename="../../../src/plugins/git/gitcommand.cpp" line="+59"/> + <source>Error: Git timed out after %1s.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Git::Internal::GitEditor</name> + <message> + <location filename="../../../src/plugins/git/giteditor.cpp" line="+68"/> + <source>Blame %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Help</name> + <message> + <location filename="../../../src/plugins/help/helpconstants.h" line="+52"/> + <source>Help</source> + <translation type="unfinished">Aide</translation> + </message> +</context> +<context> + <name>Help::HelpManager</name> + <message> + <location filename="../../../src/plugins/help/helpmanager.cpp" line="+183"/> + <source>Unfiltered</source> + <translation type="unfinished">Sans filtre</translation> + </message> +</context> +<context> + <name>Help::Internal::HelpViewer</name> + <message> + <location filename="../../../src/plugins/help/helpviewer_qtb.cpp" line="+329"/> + <source>Open Link</source> + <translation type="unfinished">Ouvrir le lien</translation> + </message> + <message> + <location line="+1"/> + <location filename="../../../src/plugins/help/helpviewer_qwv.cpp" line="+239"/> + <source>Open Link as New Page</source> + <translation type="unfinished">Ouvrir le lien en tant que nouvelle page</translation> + </message> + <message> + <location line="+3"/> + <source>Copy Link</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Copy</source> + <translation type="unfinished">Copier</translation> + </message> + <message> + <location line="+2"/> + <source>Reload</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Help::Internal::OpenPagesModel</name> + <message> + <location filename="../../../src/plugins/help/openpagesmodel.cpp" line="+60"/> + <source>(Untitled)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Help::Internal::OpenPagesWidget</name> + <message> + <location filename="../../../src/plugins/help/openpageswidget.cpp" line="+148"/> + <source>Close %1</source> + <translation type="unfinished">Fermer %1</translation> + </message> + <message> + <location line="+2"/> + <source>Close All Except %1</source> + <translation type="unfinished">Fermer tout sauf %1</translation> + </message> +</context> +<context> + <name>Mercurial::Internal::CloneWizard</name> + <message> + <location filename="../../../src/plugins/mercurial/clonewizard.cpp" line="+56"/> + <source>Clones a Mercurial repository and tries to load the contained project.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Mercurial Clone</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::CloneWizardPage</name> + <message> + <location filename="../../../src/plugins/mercurial/clonewizardpage.cpp" line="+37"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> + <message> + <location line="+1"/> + <source>Specify repository URL, checkout directory and path.</source> + <translation type="unfinished">Spécifie l'URL du dépôt, le répertoire et le chemin du checkout.</translation> + </message> + <message> + <location line="+1"/> + <source>Clone URL:</source> + <translation type="unfinished">URL de clone :</translation> + </message> +</context> +<context> + <name>Mercurial::Internal::CommitEditor</name> + <message> + <location filename="../../../src/plugins/mercurial/commiteditor.cpp" line="+45"/> + <source>Commit Editor</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::MercurialClient</name> + <message> + <location filename="../../../src/plugins/mercurial/mercurialclient.cpp" line="+168"/> + <source>Unable to find parent revisions of %1 in %2: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cannot parse output: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+117"/> + <source>Hg Annotate %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Hg diff %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <location line="+181"/> + <source>Hg log %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-31"/> + <source>Hg incoming %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Hg outgoing %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+75"/> + <source>Working...</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::MercurialControl</name> + <message> + <location filename="../../../src/plugins/mercurial/mercurialcontrol.cpp" line="+47"/> + <source>Mercurial</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::MercurialEditor</name> + <message> + <location filename="../../../src/plugins/mercurial/mercurialeditor.cpp" line="+57"/> + <source>Annotate %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::MercurialJobRunner</name> + <message> + <location filename="../../../src/plugins/mercurial/mercurialjobrunner.cpp" line="+152"/> + <source>Executing: %1 %2 +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Unable to start mercurial process '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Timed out after %1s waiting for mercurial process to finish.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::MercurialPlugin</name> + <message> + <location filename="../../../src/plugins/mercurial/mercurialplugin.cpp" line="+215"/> + <source>Mercurial</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>Annotate Current File</source> + <translation type="unfinished">Annoter le fichier courant</translation> + </message> + <message> + <location line="+0"/> + <source>Annotate "%1"</source> + <translation type="unfinished">Annoter "%1"</translation> + </message> + <message> + <location line="+7"/> + <source>Diff Current File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Diff "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Alt+H,Alt+D</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Log Current File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Log "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Alt+H,Alt+L</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Status Current File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Status "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Alt+H,Alt+S</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Add</source> + <translation type="unfinished">Ajouter</translation> + </message> + <message> + <location line="+0"/> + <source>Add "%1"</source> + <translation type="unfinished">Ajouter "%1"</translation> + </message> + <message> + <location line="+7"/> + <source>Delete...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Delete "%1"...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Revert Current File...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Revert "%1"...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+59"/> + <source>Diff</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Log</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Revert...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+44"/> + <source>Pull...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Push...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Update...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Import...</source> + <translation type="unfinished">Importer...</translation> + </message> + <message> + <location line="+7"/> + <source>Incoming...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Outgoing...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Commit...</source> + <translation type="unfinished">Commit...</translation> + </message> + <message> + <location line="+3"/> + <source>Alt+H,Alt+C</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Create Repository...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Pull Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Push Destination</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Update</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+28"/> + <source>Incoming Source</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Commit</source> + <translation type="unfinished">Faire un commit</translation> + </message> + <message> + <location line="+4"/> + <source>Diff Selected Files</source> + <translation type="unfinished">Faire un diff sur tous les fichiers sélectionnés</translation> + </message> + <message> + <location line="+3"/> + <source>&Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>&Redo</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+28"/> + <source>There are no changes to commit.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Unable to generate a temporary file for the commit editor.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unable to create an editor for the commit.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Unable to create a commit editor.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Commit changes for "%1".</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> + <source>Close commit editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Do you want to commit the changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Message check failed. Do you want to proceed?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Mercurial::Internal::OptionsPageWidget</name> + <message> + <location filename="../../../src/plugins/mercurial/optionspage.cpp" line="-49"/> + <source>Mercurial Command</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Perforce::Internal::PerforceChecker</name> + <message> + <location filename="../../../src/plugins/perforce/perforcechecker.cpp" line="+85"/> + <source>No executable specified</source> + <translation type="unfinished">Aucun exécutable spécifié</translation> + </message> + <message> + <location line="+26"/> + <source>"%1" timed out after %2ms.</source> + <translation type="unfinished">"%1" arrivé à échéance après %2ms.</translation> + </message> + <message> + <location line="+9"/> + <source>Unable to launch "%1": %2</source> + <translation type="unfinished">Impossible de lancer "%1" : %2</translation> + </message> + <message> + <location line="+19"/> + <source>"%1" crashed.</source> + <translation type="unfinished">"%1" a crashé.</translation> + </message> + <message> + <location line="+5"/> + <source>"%1" terminated with exit code %2: %3</source> + <translation type="unfinished">"%1" terminé avec le code %2 : %3</translation> + </message> + <message> + <location line="+23"/> + <source>The client does not seem to contain any mapped files.</source> + <translation type="unfinished">Le client ne semble contenir aucun fichier correspondant.</translation> + </message> + <message> + <location line="+6"/> + <source>Unable to determine the client root.</source> + <extracomment>Unable to determine root of the p4 client installation</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>The repository "%1" does not exist.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Perforce::Internal::PerforceEditor</name> + <message> + <location filename="../../../src/plugins/perforce/perforceeditor.cpp" line="+65"/> + <source>Annotate change list "%1"</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::BaseProjectWizardDialog</name> + <message> + <location filename="../../../src/plugins/projectexplorer/baseprojectwizarddialog.cpp" line="+83"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> + <message> + <location line="+63"/> + <source>untitled</source> + <extracomment>File path suggestion for a new project. If you choose to translate it, make sure it is a valid path name without blanks.</extracomment> + <translation type="unfinished">sans titre</translation> + </message> +</context> +<context> + <name>ProjectExplorer::BuildConfiguration</name> + <message> + <location filename="../../../src/plugins/projectexplorer/buildconfiguration.cpp" line="+230"/> + <source>System Environment</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Clean Environment</source> + <translation type="unfinished">Environnement de nettoyage</translation> + </message> +</context> +<context> + <name>ProjectExplorer::BuildEnvironmentWidget</name> + <message> + <location filename="../../../src/plugins/projectexplorer/buildenvironmentwidget.cpp" line="+48"/> + <source>Clear system environment</source> + <translation type="unfinished">Nettoyer l'environnement système</translation> + </message> + <message> + <location line="+13"/> + <source>Build Environment</source> + <translation type="unfinished">Environnement de compilation</translation> + </message> +</context> +<context> + <name>BuildSettingsPanelFactory</name> + <message> + <location filename="../../../src/plugins/projectexplorer/buildsettingspropertiespage.cpp" line="-295"/> + <source>Build Settings</source> + <translation type="unfinished">Paramètres de compilation</translation> + </message> +</context> +<context> + <name>BuildSettingsPanel</name> + <message> + <location line="+31"/> + <source>Build Settings</source> + <translation type="unfinished">Paramètres de compilation</translation> + </message> +</context> +<context> + <name>ProjectExplorer::CustomWizard</name> + <message> + <location filename="../../../src/plugins/projectexplorer/customwizard/customwizard.cpp" line="+105"/> + <source>Details</source> + <comment>Default short title for custom wizard page to be shown in the progress pane of the wizard.</comment> + <translation type="unfinished">Détails</translation> + </message> + <message> + <source>Plugin name:</source> + <translation type="obsolete">Nom du plugin :</translation> + </message> + <message> + <source>Copyright:</source> + <translation type="obsolete">Copyright :</translation> + </message> + <message> + <source>License:</source> + <translation type="obsolete">Licence :</translation> + </message> + <message> + <source>Description:</source> + <translation type="obsolete">Description :</translation> + </message> + <message> + <source>Url:</source> + <translation type="obsolete">Url :</translation> + </message> +</context> +<context> + <name>ProjectExplorer::CustomProjectWizard</name> + <message> + <location line="+321"/> + <source>The project %1 could not be opened.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::CustomWizardPage</name> + <message> + <location filename="../../../src/plugins/projectexplorer/customwizard/customwizardpage.cpp" line="+196"/> + <source>Path:</source> + <translation type="unfinished">Chemin :</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::DependenciesModel</name> + <message> + <location filename="../../../src/plugins/projectexplorer/dependenciespanel.cpp" line="-29"/> + <source><No other projects in this session></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>DependenciesPanel</name> + <message> + <location line="+170"/> + <source>Dependencies</source> + <translation type="unfinished">Dépendances</translation> + </message> +</context> +<context> + <name>DependenciesPanelFactory</name> + <message> + <location line="+29"/> + <source>Dependencies</source> + <translation type="unfinished">Dépendances</translation> + </message> +</context> +<context> + <name>EditorSettingsPanelFactory</name> + <message> + <location filename="../../../src/plugins/projectexplorer/editorsettingspropertiespage.cpp" line="+48"/> + <source>Editor Settings</source> + <translation type="unfinished">Paramètres de l'éditeur</translation> + </message> +</context> +<context> + <name>EditorSettingsPanel</name> + <message> + <location line="+27"/> + <source>Editor Settings</source> + <translation type="unfinished">Paramètres de l'éditeur</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::FolderNavigationWidget</name> + <message> + <location filename="../../../src/plugins/projectexplorer/foldernavigationwidget.cpp" line="-193"/> + <source>Open</source> + <translation type="unfinished">Ouvrir</translation> + </message> + <message> + <location line="+3"/> + <source>Open parent folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Open "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>Open with</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Choose folder...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Choose folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Show in Explorer...</source> + <translation type="unfinished">Afficher dans l'explorateur de fichier...</translation> + </message> + <message> + <location line="+2"/> + <source>Show in Finder...</source> + <translation type="unfinished">Afficher dans Finder...</translation> + </message> + <message> + <location line="+2"/> + <source>Show containing folder...</source> + <translation type="unfinished">Afficher le dossier parent...</translation> + </message> + <message> + <location line="+7"/> + <source>Open Command Prompt here...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Open Terminal here...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Launching a file browser failed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Unable to start the file manager: + +%1 + +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>'%1' returned the following error: + +%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Settings...</source> + <translation type="unfinished">Paramètres...</translation> + </message> + <message> + <location line="+14"/> + <source>Launching Windows Explorer failed</source> + <translation type="unfinished">Échec du lancement de l'Explorer Windows</translation> + </message> + <message> + <location line="+1"/> + <source>Could not find explorer.exe in path to launch Windows Explorer.</source> + <translation type="unfinished">Impossible de trouver explorer.exe dans le path pour lancer l'Explorer Windows.</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::MiniTargetWidget</name> + <message> + <location filename="../../../src/plugins/projectexplorer/miniprojecttargetselector.cpp" line="+188"/> + <source>Select active build configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Select active run configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+60"/> + <source>Build:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Run:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::MiniProjectTargetSelector</name> + <message> + <location line="+128"/> + <source>Project</source> + <translation type="unfinished">Projet</translation> + </message> + <message> + <location line="+11"/> + <source>Select active project</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+196"/> + <source>Build:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Run:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source><html><nobr><b>Project:</b> %1<br/>%2%3<b>Run:</b> %4%5</html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source><b>Target:</b> %1<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source><b>Build:</b> %2<br/></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source><br/>%1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::ProjectConfiguration</name> + <message> + <location filename="../../../src/plugins/projectexplorer/projectconfiguration.cpp" line="+49"/> + <source>Clone of %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer</name> + <message> + <location filename="../../../src/plugins/projectexplorer/projectexplorerconstants.h" line="+189"/> + <source>Projects</source> + <translation type="unfinished">Projets</translation> + </message> + <message> + <location line="+11"/> + <source>Other Project</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TargetSettingsPanelFactory</name> + <message> + <location filename="../../../src/plugins/projectexplorer/projectwindow.cpp" line="+306"/> + <source>Targets</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>RunSettingsPanelFactory</name> + <message> + <location filename="../../../src/plugins/projectexplorer/runsettingspropertiespage.cpp" line="-159"/> + <source>Run Settings</source> + <translation type="unfinished">Paramètres d'exécution</translation> + </message> +</context> +<context> + <name>RunSettingsPanel</name> + <message> + <location line="+31"/> + <source>Run Settings</source> + <translation type="unfinished">Paramètres d'exécution</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::SessionNameInputDialog</name> + <message> + <location filename="../../../src/plugins/projectexplorer/sessiondialog.cpp" line="-130"/> + <source>Enter the name of the session:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::TargetSelector</name> + <message> + <location filename="../../../src/plugins/projectexplorer/targetselector.h" line="+24"/> + <source>Run</source> + <translation type="unfinished">Exécuter</translation> + </message> + <message> + <location line="+1"/> + <source>Build</source> + <translation type="unfinished">Compilation</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::TargetSettingsPanelWidget</name> + <message> + <location filename="../../../src/plugins/projectexplorer/targetsettingspanel.cpp" line="+101"/> + <source>No target defined.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+102"/> + <source>Qt Creator</source> + <translation type="unfinished">Qt Creator</translation> + </message> + <message> + <location line="+1"/> + <source>Do you really want to remove the +"%1" target?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::TaskWindow</name> + <message> + <location filename="../../../src/plugins/projectexplorer/taskwindow.cpp" line="-464"/> + <location filename="../../../src/plugins/projectexplorer/taskwindow.h" line="+113"/> + <source>Build Issues</source> + <translation>Problèmes de compilation</translation> + </message> + <message> + <location line="+11"/> + <source>&Copy</source> + <translation>Cop&ier</translation> + </message> + <message> + <location line="+7"/> + <source>&Annotate</source> + <translation>&Annoter...</translation> + </message> + <message> + <location line="+18"/> + <source>Show Warnings</source> + <translation>Afficher les avertissements</translation> + </message> + <message> + <location line="+9"/> + <source>Filter by categories</source> + <translation>Filtrer par catégories</translation> + </message> +</context> +<context> + <name>GenericProjectManager::GenericTarget</name> + <message> + <location filename="../../../src/plugins/projectexplorer/userfileaccessor.cpp" line="-5"/> + <source>Desktop</source> + <comment>Generic desktop target display name</comment> + <translation>Desktop</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::Qt4Target</name> + <message> + <location line="+10"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4target.cpp" line="+61"/> + <source>Desktop</source> + <comment>Qt4 Desktop target display name</comment> + <translation>Desktop</translation> + </message> + <message> + <location line="+4"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4target.cpp" line="+2"/> + <source>Symbian Emulator</source> + <comment>Qt4 Symbian Emulator target display name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <location filename="../../../src/plugins/qt4projectmanager/qt4target.cpp" line="+2"/> + <source>Symbian Device</source> + <comment>Qt4 Symbian Device target display name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Maemo Emulator</source> + <comment>Qt4 Maemo Emulator target display name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Maemo Device</source> + <comment>Qt4 Maemo Device target display name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt4target.cpp" line="+2"/> + <source>Maemo</source> + <comment>Qt4 Maemo target display name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Qt Simulator</source> + <comment>Qt4 Simulator target display name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+383"/> + <source><b>Device:</b> Not connected</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source><b>Device:</b> %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source><b>Device:</b> %1, %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlProjectManager::QmlTarget</name> + <message> + <location filename="../../../src/plugins/projectexplorer/userfileaccessor.cpp" line="+5"/> + <source>QML Viewer</source> + <comment>QML Viewer target display name</comment> + <translation type="unfinished">Visualisateur QML</translation> + </message> +</context> +<context> + <name>QmlDesigner::FormEditorWidget</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp" line="+88"/> + <source>Snap to guides (E)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+24"/> + <source>Show bounding rectangles (A)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Only select items with content (S)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::ComponentView</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/integration/componentview.cpp" line="+75"/> + <source>whole document</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::DesignDocumentController</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp" line="+217"/> + <source>-New Form-</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+182"/> + <source>Cannot save to file "%1": permission denied.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Parent folder "%1" for file "%2" does not exist.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+312"/> + <source>Cannot write file: "%1".</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::XUIFileDialog</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/integration/xuifiledialog.cpp" line="+45"/> + <source>Open file</source> + <translation type="unfinished">Ouvrir le fichier</translation> + </message> + <message> + <location line="+22"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Declarative UI files (*.qml)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>All files (*)</source> + <translation type="unfinished">Tous les fichiers (*)</translation> + </message> +</context> +<context> + <name>QmlDesigner::ItemLibrary</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp" line="+128"/> + <source>Library</source> + <comment>Title of library view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> + <source>Items</source> + <comment>Title of library items view</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Resources</source> + <comment>Title of library resources view</comment> + <translation type="unfinished">Ressources</translation> + </message> + <message> + <location line="+5"/> + <source><Filter></source> + <comment>Library search input hint text</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::NavigatorTreeModel</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp" line="+279"/> + <source>Invalid Id</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::NavigatorWidget</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp" line="+61"/> + <source>Navigator</source> + <comment>Title of navigator view</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::PluginManager</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/pluginmanager/pluginmanager.cpp" line="+161"/> + <source>About plugins</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>WidgetPluginManager</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/pluginmanager/pluginpath.cpp" line="-114"/> + <source>Failed to create instance.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Not a QmlDesigner plugin.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../../src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.cpp" line="-133"/> + <source>Failed to create instance of file '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Failed to create instance of file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>File '%1' is not a QmlDesigner plugin.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::AllPropertiesBox</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/allpropertiesbox.cpp" line="+59"/> + <source>Properties</source> + <comment>Title of properties view.</comment> + <translation type="unfinished">Propriétés</translation> + </message> +</context> +<context> + <name>FileWidget</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/filewidget.cpp" line="+102"/> + <source>Open File</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::PropertyEditor</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp" line="+359"/> + <source>Invalid Id</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>qdesigner_internal::QtGradientStopsController</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientstopscontroller.cpp" line="+173"/> + <source>H</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>S</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>V</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <location line="+4"/> + <source>Hue</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-3"/> + <source>Sat</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Val</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Saturation</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Value</source> + <translation type="unfinished">Valeur</translation> + </message> + <message> + <location line="+22"/> + <source>R</source> + <translation type="unfinished">R</translation> + </message> + <message> + <location line="+1"/> + <source>G</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>B</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Red</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Green</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Blue</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QtGradientStopsWidget</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/propertyeditor/qtgradienteditor/qtgradientstopswidget.cpp" line="+947"/> + <source>New Stop</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Delete</source> + <translation type="unfinished">Supprimer</translation> + </message> + <message> + <location line="+1"/> + <source>Flip All</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Select All</source> + <translation type="unfinished">Tout sélectionner</translation> + </message> + <message> + <location line="+1"/> + <source>Zoom In</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Zoom Out</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Reset Zoom</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::Internal::StatesEditorModel</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp" line="+76"/> + <source>base state</source> + <comment>Implicit default state</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+47"/> + <source>Invalid state name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>The empty string as a name is reserved for the base state.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Name already used in another state</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::Internal::StatesEditorWidgetPrivate</name> + <message> + <location filename="../../../src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp" line="+106"/> + <source>base state</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>State%1</source> + <comment>Default name for newly created states</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::StatesEditorWidget</name> + <message> + <location line="+60"/> + <source>States</source> + <comment>Title of Editor widget</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::InvalidArgumentException</name> + <message> + <location filename="../../../src/plugins/qmldesigner/designercore/exceptions/invalidargumentexception.cpp" line="+60"/> + <source>Failed to create item of type %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>InvalidIdException</name> + <message> + <location filename="../../../src/plugins/qmldesigner/designercore/exceptions/invalididexception.cpp" line="+59"/> + <source>Ids have to be unique: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Invalid Id: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source> +Only alphanumeric characters and underscore allowed. +Ids must begin with a lowercase letter.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::Internal::SubComponentManagerPrivate</name> + <message> + <location filename="../../../src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp" line="+309"/> + <source>QML Components</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::Internal::ModelPrivate</name> + <message> + <location filename="../../../src/plugins/qmldesigner/designercore/model/model.cpp" line="+172"/> + <source>invalid type</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::QmlModelView</name> + <message> + <location filename="../../../src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp" line="+179"/> + <source>Invalid Id</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::RewriterView</name> + <message> + <location filename="../../../src/plugins/qmldesigner/designercore/model/rewriterview.cpp" line="+79"/> + <source>Error parsing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Internal error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>"%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>line %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>column %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::Internal::DocumentWarningWidget</name> + <message> + <location filename="../../../src/plugins/qmldesigner/designmodewidget.cpp" line="+103"/> + <source><a href="goToError">Go to error</a></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>%3 (%1:%2)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Internal error (%1)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlDesigner::Internal::DesignModeWidget</name> + <message> + <location line="+26"/> + <source>&Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>&Redo</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Delete</source> + <translation type="unfinished">Supprimer</translation> + </message> + <message> + <location line="+0"/> + <source>Delete "%1"</source> + <translation type="unfinished">Supprimer "%1"</translation> + </message> + <message> + <location line="+2"/> + <source>Cu&t</source> + <translation type="unfinished">Co&uper</translation> + </message> + <message> + <location line="+0"/> + <source>Cut "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>&Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Copy "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>&Paste</source> + <translation type="unfinished">C&oller</translation> + </message> + <message> + <location line="+0"/> + <source>Paste "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Select &All</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Select All "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Toggle Full Screen</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>&Restore Default View</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Toggle &Left Sidebar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Toggle &Right Sidebar</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+429"/> + <source>Projects</source> + <translation type="unfinished">Projets</translation> + </message> + <message> + <location line="+4"/> + <source>File System</source> + <translation type="unfinished">Système de fichier</translation> + </message> + <message> + <location line="+4"/> + <source>Open Documents</source> + <translation type="unfinished">Documents ouverts</translation> + </message> +</context> +<context> + <name>QmlDesigner::Internal::BauhausPlugin</name> + <message> + <location filename="../../../src/plugins/qmldesigner/qmldesignerplugin.cpp" line="+130"/> + <source>Switch Text/Design</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+200"/> + <source>Save %1 As...</source> + <translation type="unfinished">Enregistrer %1 sous...</translation> + </message> + <message> + <location line="+1"/> + <source>&Save %1</source> + <translation type="unfinished">Enregi&strer %1</translation> + </message> + <message> + <location line="+1"/> + <source>Revert %1 to Saved</source> + <translation type="unfinished">Restaurer %1 à la version sauvegardée</translation> + </message> + <message> + <location line="+3"/> + <source>Close %1</source> + <translation type="unfinished">Fermer %1</translation> + </message> + <message> + <location line="+3"/> + <source>Close All Except %1</source> + <translation type="unfinished">Fermer tout sauf %1</translation> + </message> + <message> + <location line="+0"/> + <source>Close Others</source> + <translation type="unfinished">Fermer les autres éditeurs</translation> + </message> +</context> +<context> + <name>Qt Quick</name> + <message> + <location filename="../../../src/plugins/qmldesigner/settingspage.cpp" line="+10"/> + <source>Qt Quick</source> + <translation>Qt Quick</translation> + </message> +</context> +<context> + <name>Qml::Internal::QLineGraph</name> + <message> + <location filename="../../../src/plugins/qmlinspector/components/canvasframerate.cpp" line="+251"/> + <source>Frame rate</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qml::Internal::GraphWindow</name> + <message> + <location line="+119"/> + <source>Total time elapsed (ms)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qml::Internal::CanvasFrameRate</name> + <message> + <location line="+77"/> + <source>Resolution:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>New Graph</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enabled</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qml::Internal::ExpressionQueryWidget</name> + <message> + <location filename="../../../src/plugins/qmlinspector/components/expressionquerywidget.cpp" line="+87"/> + <source><Type expression to evaluate></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Write and evaluate QtScript expressions.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Clear Output</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Script Console +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+43"/> + <source>Expression queries</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Expression queries (using context for %1)</source> + <comment>Selected object</comment> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <location line="+79"/> + <source><%n items></source> + <translation type="unfinished"> + <numerusform><%n élément></numerusform> + <numerusform><%n éléments></numerusform> + </translation> + </message> +</context> +<context> + <name>Qml::Internal::ObjectPropertiesView</name> + <message> + <location filename="../../../src/plugins/qmlinspector/components/objectpropertiesview.cpp" line="+76"/> + <source>Name</source> + <translation type="unfinished">Nom</translation> + </message> + <message> + <location line="+0"/> + <source>Value</source> + <translation type="unfinished">Valeur</translation> + </message> + <message> + <location line="+0"/> + <source>Type</source> + <translation type="unfinished">Type</translation> + </message> + <message> + <location line="+5"/> + <source>&Watch expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>&Remove watch</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Show &unwatchable properties</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>&Group by item type</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <location line="+116"/> + <source><%n items></source> + <translation type="unfinished"> + <numerusform><%n élément></numerusform> + <numerusform><%n éléments></numerusform> + </translation> + </message> + <message> + <location line="+291"/> + <source>Watch expression '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Hide unwatchable properties</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Show unwatchable properties</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qml::Internal::ObjectTree</name> + <message> + <location filename="../../../src/plugins/qmlinspector/components/objecttree.cpp" line="+57"/> + <source>Add watch expression...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Show uninspectable items</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Go to file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+215"/> + <source>Watch expression</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Expression:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qml::Internal::WatchTableModel</name> + <message> + <location filename="../../../src/plugins/qmlinspector/components/watchtable.cpp" line="+153"/> + <source>Name</source> + <translation type="unfinished">Nom</translation> + </message> + <message> + <location line="+2"/> + <source>Value</source> + <translation type="unfinished">Valeur</translation> + </message> +</context> +<context> + <name>Qml::Internal::WatchTableView</name> + <message> + <location line="+219"/> + <source>Stop watching</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qml::InspectorOutputWidget</name> + <message> + <location filename="../../../src/plugins/qmlinspector/inspectoroutputwidget.cpp" line="+43"/> + <source>Output</source> + <translation type="unfinished">Sortie</translation> + </message> + <message> + <location line="+2"/> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qml::Internal::EngineComboBox</name> + <message> + <location filename="../../../src/plugins/qmlinspector/qmlinspector.cpp" line="+135"/> + <source>Engine %1</source> + <comment>engine number</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qml::QmlInspector</name> + <message> + <location line="+75"/> + <source>Failed to connect to debugger</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Could not connect to debugger server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Invalid project, debugging canceled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Cannot find project run configuration, debugging canceled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+38"/> + <source>[Inspector] set to connect to debug server %1:%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>[Inspector] disconnected. + +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>[Inspector] resolving host...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>[Inspector] connecting to debug server...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>[Inspector] connected. +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+17"/> + <source>[Inspector] closing...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> + <source>[Inspector] error: (%1) %2</source> + <comment>%1=error code, %2=error message</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>QML engine:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Object Tree</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+46"/> + <source>Properties and Watchers</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+24"/> + <source>Script Console</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Output of the QML inspector, such as information on connecting to the server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Start Debugging C++ and QML Simultaneously...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <source>No project was found.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+21"/> + <location line="+47"/> + <source>No run configurations were found for the project '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>No valid run configuration was found for the project %1. Only locally runnable configurations are supported. +Please check your project settings.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> + <source>A valid run control was not registered in Qt Creator for this project run configuration.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> + <source>Debugging failed: could not start C++ debugger.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qml::Internal::StartExternalQmlDialog</name> + <message> + <location filename="../../../src/plugins/qmlinspector/startexternalqmldialog.cpp" line="+17"/> + <source><No project></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlJSEditor::Internal::QmlJSTextEditor</name> + <message> + <location filename="../../../src/plugins/qmljseditor/qmljseditor.cpp" line="+867"/> + <source>Rename...</source> + <translation type="unfinished">Renommer...</translation> + </message> + <message> + <location line="+1"/> + <source>New id:</source> + <translation type="unfinished">Nouvel identifiant :</translation> + </message> + <message> + <location line="+51"/> + <source>Unused variable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+152"/> + <source>Rename id '%1'...</source> + <translation type="unfinished">Renommer l'identifiant '%1'...</translation> + </message> + <message> + <location line="+196"/> + <source><Select Symbol></source> + <translation type="unfinished"><Selectionner un symbole></translation> + </message> +</context> +<context> + <name>QmlJSEditor::Internal::QmlJSEditorFactory</name> + <message> + <location filename="../../../src/plugins/qmljseditor/qmljseditorfactory.cpp" line="+141"/> + <source>Do you want to enable the experimental Qt Quick Designer?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <location line="+23"/> + <source>Enable Qt Quick Designer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-11"/> + <source>Qt Creator -> About Plugins...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Help -> About Plugins...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Enable experimental Qt Quick Designer?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Do you want to enable the experimental Qt Quick Designer? After enabling it, you can access the visual design capabilities by switching to Design Mode. This can affect the overall stability of Qt Creator. To disable Qt Quick Designer again, visit the menu '%1' and disable 'QmlDesigner'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Cancel</source> + <translation type="unfinished">Annuler</translation> + </message> + <message> + <location line="+8"/> + <source>Please restart Qt Creator</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Please restart Qt Creator to make the change effective.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlJSEditor::Internal::QmlJSEditorPlugin</name> + <message> + <location filename="../../../src/plugins/qmljseditor/qmljseditorplugin.cpp" line="+111"/> + <source>Creates a Qt QML file.</source> + <translation type="unfinished">Créer un fichier QML.</translation> + </message> + <message> + <location line="+1"/> + <source>Qt QML File</source> + <translation type="unfinished">Fichier QML</translation> + </message> + <message> + <location line="+15"/> + <source>Qt Quick</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Ctrl+Alt+R</source> + <translation type="unfinished">Ctrl+Alt+R</translation> + </message> + <message> + <location line="+4"/> + <source>Follow Symbol Under Cursor</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlJSEditor::Internal::HoverHandler</name> + <message> + <location filename="../../../src/plugins/qmljseditor/qmljshoverhandler.cpp" line="+80"/> + <source>Unfiltered</source> + <translation type="unfinished">Sans filtre</translation> + </message> +</context> +<context> + <name>QmlJSEditor::Internal::ModelManager</name> + <message> + <location filename="../../../src/plugins/qmljseditor/qmljsmodelmanager.cpp" line="+134"/> + <source>Indexing</source> + <translation type="unfinished">Indexation</translation> + </message> +</context> +<context> + <name>QmlJSEditor::Internal::QmlJSPreviewRunner</name> + <message> + <location filename="../../../src/plugins/qmljseditor/qmljspreviewrunner.cpp" line="+40"/> + <source>Failed to preview Qt Quick file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Could not preview Qt Quick (QML) file. Reason: +%1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlProjectManager::QmlProject</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlproject.cpp" line="+103"/> + <source>Error while loading project file!</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlProjectManager::Internal::QmlProjectApplicationWizardDialog</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp" line="+50"/> + <source>New QML Project</source> + <translation type="unfinished">Nouveau projet QML</translation> + </message> + <message> + <location line="+1"/> + <source>This wizard generates a QML application project.</source> + <translation type="unfinished">Cet assistant génère un projet pour une application QML.</translation> + </message> +</context> +<context> + <name>QmlProjectManager::Internal::QmlProjectApplicationWizard</name> + <message> + <location line="+21"/> + <source>Qt QML Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Creates a Qt QML application project with a single QML file containing the main view. + +QML application projects are executed through the QML runtime and do not need to be built.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+67"/> + <source>File generated by QtCreator</source> + <comment>qmlproject Template</comment> + <extracomment>Comment added to generated .qmlproject file</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Include .qml, .js, and image files from current directory and subdirectories</source> + <comment>qmlproject Template</comment> + <extracomment>Comment added to generated .qmlproject file</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>List of plugin directories passed to QML runtime</source> + <comment>qmlproject Template</comment> + <extracomment>Comment added to generated .qmlproject file</extracomment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlProjectManager</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectconstants.h" line="+8"/> + <source>Qt Quick Project</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlProjectManager::Internal::QmlProjectImportWizardDialog</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectimportwizard.cpp" line="+64"/> + <source>Import Existing Qt QML Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Project Name and Location</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Project name:</source> + <translation type="unfinished">Nom du projet :</translation> + </message> + <message> + <location line="+1"/> + <source>Location:</source> + <translation type="unfinished">Emplacement :</translation> + </message> + <message> + <location line="+3"/> + <source>Location</source> + <translation type="unfinished">Emplacement</translation> + </message> +</context> +<context> + <name>QmlProjectManager::Internal::QmlProjectImportWizard</name> + <message> + <location line="+43"/> + <source>Import Existing Qt QML Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Creates a QML project from an existing directory of QML files.</source> + <translation type="unfinished">Crée un projet QML à partir d'un répertoire existant de fichiers QML.</translation> + </message> + <message> + <location line="+39"/> + <source>File generated by QtCreator</source> + <comment>qmlproject Template</comment> + <extracomment>Comment added to generated .qmlproject file</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Include .qml, .js, and image files from current directory and subdirectories</source> + <comment>qmlproject Template</comment> + <extracomment>Comment added to generated .qmlproject file</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>List of plugin directories passed to QML runtime</source> + <comment>qmlproject Template</comment> + <extracomment>Comment added to generated .qmlproject file</extracomment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlProjectManager::Internal::Manager</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectmanager.cpp" line="+76"/> + <source>Failed opening project '%1': Project already open</source> + <translation type="unfinished">Échec de l'ouverture du projet '%1' : projet déjà ouvert</translation> + </message> +</context> +<context> + <name>QmlProjectManager::QmlProjectRunConfiguration</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp" line="+102"/> + <source>QML Viewer</source> + <comment>QMLRunConfiguration display name.</comment> + <translation type="unfinished">Visualisateur QML</translation> + </message> + <message> + <location line="+104"/> + <source>QML Viewer</source> + <translation type="unfinished">Visualisateur QML</translation> + </message> + <message> + <location line="+1"/> + <source>QML Viewer arguments:</source> + <translation type="unfinished">Arguments du visualisateur QML :</translation> + </message> + <message> + <location line="+1"/> + <source>Main QML File:</source> + <translation type="unfinished">Fichier QML principal :</translation> + </message> + <message> + <location line="+1"/> + <source>Debugging Address:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Debugging Port:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlManager</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h" line="+52"/> + <source><Current File></source> + <translation type="unfinished"><Fichier courant></translation> + </message> +</context> +<context> + <name>QmlProjectManager::Internal::QmlProjectRunConfigurationFactory</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectrunconfigurationfactory.cpp" line="+60"/> + <source>Run QML Script</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlProjectManager::Internal::QmlRunControl</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp" line="+92"/> + <source>Starting %1 %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+42"/> + <source>%1 exited with code %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlProjectManager::Internal::QmlRunControlFactory</name> + <message> + <location line="+30"/> + <source>Run</source> + <translation type="unfinished">Exécuter</translation> + </message> +</context> +<context> + <name>QmlProjectManager::Internal::QmlTaskManager</name> + <message> + <location filename="../../../src/plugins/qmlprojectmanager/qmltaskmanager.cpp" line="+57"/> + <source>QML</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoConfigTestDialog</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.cpp" line="+100"/> + <source>Testing configuration...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Stop Test</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> + <source>Device configuration test failed: +%1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source> +Did you start Qemu?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Qt version mismatch! Expected Qt on device: 4.6.2 or later.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>Close</source> + <translation type="unfinished">Fermer</translation> + </message> + <message> + <location line="+17"/> + <source>Device configuration test failed: Unexpected output: +%1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Hardware architecture: %1 +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Kernel version: %1 +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Device configuration successful. +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>No Qt packages installed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>List of installed Qt packages:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoPackageContents</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp" line="+144"/> + <source>Local File Path</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Remote File Path</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoPackageCreationStep</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp" line="+117"/> + <source>Creating package file ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Cannot open MADDE config file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+40"/> + <source>Packaging Error: Cannot open file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Packaging Error: Cannot write file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>Packaging Error: Could not create directory '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Packaging Error: Could not replace file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Packaging Error: Could not copy '%1' to '%2'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Package created.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Package Creation: Running command '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <location line="+7"/> + <source>Packaging failed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-6"/> + <source>Packaging error: Could not start command '%1'. Reason: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Packaging Error: Command '%1' timed out.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Packaging Error: Command '%1' failed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source> Reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Output was: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoPackageCreationWidget</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp" line="+87"/> + <source><b>Create Package:</b> </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Choose a local file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>File already in package</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>You have already added this file.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoRunConfiguration</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp" line="+78"/> + <source>New Maemo Run Configuration</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoRunConfigurationWidget</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp" line="+67"/> + <source>Run configuration name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source><a href="%1">Manage device configurations</a></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source><a href="%1">Set Debugger</a></source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Device configuration:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Executable:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Arguments:</source> + <translation type="unfinished">Arguments :</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::AbstractMaemoRunControl</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp" line="+78"/> + <source>No device configuration set for run configuration.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>Cleaning up remote leftovers first ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Initial cleanup canceled by user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Error running initial cleanup: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Initial cleanup done.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> + <source>Deploying</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Files to deploy: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+55"/> + <source>Starting remote application.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+44"/> + <source>Deployment canceled by user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Deployment failed: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Deployment finished.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Remote execution canceled due to user request.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Error running remote process: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Finished running remote process.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+48"/> + <source>Remote Execution Failure</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoRunConfigurationFactory</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp" line="+107"/> + <source>New Maemo Run Configuration</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoRunControlFactory</name> + <message> + <location line="+70"/> + <source>Run on device</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoSettingsPage</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemosettingspage.cpp" line="+69"/> + <source>Maemo Device Configurations</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoSettingsWidget</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.cpp" line="+152"/> + <source>New Device Configuration %1</source> + <comment>Standard Configuration name with number</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+189"/> + <source>Choose Public Key File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Public Key Files(*.pub);;All Files (*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <location line="+22"/> + <source>Deployment Failed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-21"/> + <source>Could not read public key file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Stop Deploying</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Key deployment failed: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Deployment Succeeded</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Key was successfully deployed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Deploy Public Key ...</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoSshConfigDialog</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/maemosshconfigdialog.cpp" line="+124"/> + <source>Save Public Key File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Save Private Key File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Error writing file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Could not write file '%1': + %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::QemuRuntimeManager</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp" line="+83"/> + <location line="+399"/> + <source>Start Maemo Emulator</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="-322"/> + <source>Qemu has been shut down, because you removed the corresponding Qt version.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+279"/> + <source>Qemu failed to start: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Qemu crashed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Qemu error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <source>Stop Maemo Emulator</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60CreatePackageStep</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp" line="+74"/> + <source>Create SIS Package</source> + <comment>Create SIS package build step name</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60CreatePackageStepFactory</name> + <message> + <location line="+149"/> + <source>Create SIS Package</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60CreatePackageStepConfigWidget</name> + <message> + <location line="+49"/> + <source>self-signed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>signed with certificate %1 and key file %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source><b>Create SIS Package:</b> %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60DevicesBaseWidget</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60devicespreferencepane.cpp" line="-277"/> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>SDK Location</source> + <translation type="unfinished">Emplacement du SDK</translation> + </message> + <message> + <location line="+1"/> + <source>Qt Location</source> + <translation type="unfinished">Emplacement de Qt</translation> + </message> + <message> + <location line="+157"/> + <source>Choose Qt folder</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60DevicesModel</name> + <message> + <location line="-122"/> + <source>No Qt installed</source> + <translation type="unfinished">Qt non installé</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::GnuPocS60DevicesWidget</name> + <message> + <location line="+198"/> + <source>Step 1 of 2: Choose GnuPoc folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Step 2 of 2: Choose Qt folder</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Adding GnuPoc</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>GnuPoc and Qt folders must not be identical.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::S60ProjectChecker</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt-s60/s60projectchecker.cpp" line="+53"/> + <source>The Symbian SDK and the project sources must reside on the same drive.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>The Symbian SDK was not found for Qt version %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>The "Open C/C++ plugin" is not installed in the Symbian SDK or the Symbian SDK path is misconfigured for Qt version %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>The Symbian toolchain does not handle special characters in a project path well.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::Qt4BuildConfigurationFactory</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt4buildconfiguration.cpp" line="+571"/> + <source>Using Qt Version "%1"</source> + <translation type="unfinished">Utiliser la version Qt "%1"</translation> + </message> + <message> + <location line="+54"/> + <source>New configuration</source> + <translation type="unfinished">Nouvelle configuration</translation> + </message> + <message> + <location line="+1"/> + <source>New Configuration Name:</source> + <translation type="unfinished">Nom de la nouvelle configuration :</translation> + </message> + <message> + <location line="+7"/> + <source>%1 Debug</source> + <translation type="unfinished">%1 Debug</translation> + </message> + <message> + <location line="+5"/> + <source>%1 Release</source> + <translation type="unfinished">%1 Release</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Qt4Project</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt4project.cpp" line="+797"/> + <source>Evaluating</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt4projectmanagerconstants.h" line="+36"/> + <source>Qt4</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Qt Versions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Qt C++ Project</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::Qt4TargetFactory</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qt4target.cpp" line="-274"/> + <source>Debug</source> + <translation type="unfinished">Déboguer</translation> + </message> + <message> + <location line="+0"/> + <source>Release</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::QtVersion</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+31"/> + <source>The Qt version is invalid: %1</source> + <extracomment>%1: Reason for being invalid</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> + <source>The qmake command "%1" was not found or is not executable.</source> + <extracomment>%1: Path to qmake executable</extracomment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QtVersion</name> + <message> + <location line="+873"/> + <source>No qmake path set</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Qt version has no name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Qt version is not properly installed, please run make install</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Could not determine the path to the binaries of the Qt installation, maybe the qmake path is wrong?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+128"/> + <source>The Qt Version has no toolchain.</source> + <translation type="unfinished">La version de Qt n'as pas de chaîne de compilation.</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MobileGuiAppWizard</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/mobileguiappwizard.cpp" line="+44"/> + <source>Mobile Qt Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Creates a Qt application optimized for mobile devices with a Qt Designer-based main window. + +Preselects Qt for Simulator and mobile targets if available</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::BaseQt4ProjectWizardDialog</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/qtwizard.cpp" line="+225"/> + <location line="+4"/> + <source>Modules</source> + <translation type="unfinished">Modules</translation> + </message> + <message> + <location line="+26"/> + <source>Qt Versions</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::TestWizard</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/testwizard.cpp" line="+51"/> + <source>Qt Unit Test</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Creates a QTestLib-based unit test for a feature or a class. Unit tests allow you to verify that the code is fit for use and that there are no regressions.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::TestWizardDialog</name> + <message> + <location filename="../../../src/plugins/qt4projectmanager/wizards/testwizarddialog.cpp" line="+58"/> + <source>This wizard generates a Qt unit test consisting of a single source file with a test class.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Details</source> + <translation type="unfinished">Détails</translation> + </message> +</context> +<context> + <name>Subversion::Internal::SubversionEditor</name> + <message> + <location filename="../../../src/plugins/subversion/subversioneditor.cpp" line="+54"/> + <source>Annotate revision "%1"</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TextEditor</name> + <message> + <location filename="../../../src/plugins/texteditor/texteditorconstants.h" line="+127"/> + <source>Text Editor</source> + <translation type="unfinished">Éditeur de texte</translation> + </message> +</context> +<context> + <name>VCSBase::VCSBasePlugin</name> + <message> + <location filename="../../../src/plugins/vcsbase/vcsbaseplugin.cpp" line="+540"/> + <source>Version Control</source> + <translation type="unfinished">Gestion de versions</translation> + </message> + <message> + <location line="+0"/> + <source>The file '%1' could not be deleted.</source> + <translation type="unfinished">Le fichier '%1' n'a pas pu être supprimé.</translation> + </message> + <message> + <location line="+20"/> + <source>Choose Repository Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>The directory '%1' is already managed by a version control system (%2). Would you like to specify another directory?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Repository already under version control</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Repository created</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>A version control repository has been created in %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Repository creation failed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>A version control repository could not be created in %1.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>trk::Launcher</name> + <message> + <location filename="../../../src/shared/symbianutils/launcher.cpp" line="+506"/> + <source>Cannot open remote file '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cannot open '%1': %2</source> + <translation type="unfinished">Impossible d'ouvrir '%1' : %2</translation> + </message> + <message> + <location line="+363"/> + <source>Unable to acquire a device for port '%1'. It appears to be in use.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>AboutDialog</name> + <message> + <location filename="../../../src/tools/qml/standalone/aboutdialog.cpp" line="+85"/> + <source>About Bauhaus</source> + <comment>AboutDialog</comment> + <translation>A propos de Bauhaus</translation> + </message> +</context> </TS> diff --git a/src/libs/qmljs/qmljs-lib.pri b/src/libs/qmljs/qmljs-lib.pri index a723b0354182ae57cc5036c7dbe5d1a69f0052eb..5a030a0d6f8d3f6033442e176c1cc7e064147b76 100644 --- a/src/libs/qmljs/qmljs-lib.pri +++ b/src/libs/qmljs/qmljs-lib.pri @@ -5,6 +5,7 @@ contains(CONFIG, dll) { } include(parser/parser.pri) +include(../utils/utils.pri) DEPENDPATH += $$PWD INCLUDEPATH += $$PWD/.. @@ -23,6 +24,7 @@ HEADERS += \ $$PWD/qmljscompletioncontextfinder.h \ $$PWD/qmljscomponentversion.h \ $$PWD/qmljsmodelmanagerinterface.h \ + $$PWD/qmljsrewriter.h SOURCES += \ $$PWD/qmljsbind.cpp \ @@ -36,7 +38,8 @@ SOURCES += \ $$PWD/qmljslineinfo.cpp \ $$PWD/qmljscompletioncontextfinder.cpp \ $$PWD/qmljscomponentversion.cpp \ - $$PWD/qmljsmodelmanagerinterface.cpp + $$PWD/qmljsmodelmanagerinterface.cpp \ + $$PWD/qmljsrewriter.cpp OTHER_FILES += \ $$PWD/parser/qmljs.g diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 31ae1cd877018ffb647cea1335fc587f1cef8f06..c111768cc5f189a45992501bea6d2d0642a998ad 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -1421,7 +1421,6 @@ QList<const ObjectValue *> ScopeChain::all() const Context::Context(Engine *engine) : _engine(engine), - _lookupMode(JSLookup), _qmlScopeObjectIndex(-1), _qmlScopeObjectSet(false) { @@ -1446,16 +1445,6 @@ ScopeChain &Context::scopeChain() return _scopeChain; } -Context::LookupMode Context::lookupMode() const -{ - return _lookupMode; -} - -void Context::setLookupMode(LookupMode lookupMode) -{ - _lookupMode = lookupMode; -} - const ObjectValue *Context::typeEnvironment(const QmlJS::Document *doc) const { return _typeEnvironments.value(doc->fileName(), 0); @@ -1473,9 +1462,7 @@ const Value *Context::lookup(const QString &name) const ObjectValue *scope = scopes.at(index); if (const Value *member = scope->lookupMember(name, this)) { - if (_lookupMode == JSLookup || ! dynamic_cast<const ASTVariableReference *>(member)) { - return member; - } + return member; } } diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 1855d52c9336e782d0c0d65770d31fdb4abd8adf..498126555490b87391f8bf9ed509e9563644d2ea 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -270,12 +270,6 @@ private: class QMLJS_EXPORT Context { -public: - enum LookupMode { - JSLookup, - QmlLookup - }; - public: Context(Engine *engine); ~Context(); @@ -284,9 +278,6 @@ public: const ScopeChain &scopeChain() const; ScopeChain &scopeChain(); - LookupMode lookupMode() const; - void setLookupMode(LookupMode lookupMode); - const ObjectValue *typeEnvironment(const Document *doc) const; void setTypeEnvironment(const Document *doc, const ObjectValue *typeEnvironment); @@ -307,7 +298,6 @@ private: typedef QHash<QString, const Value *> Properties; Engine *_engine; - LookupMode _lookupMode; QHash<const ObjectValue *, Properties> _properties; QHash<QString, const ObjectValue *> _typeEnvironments; QSet<QString> _documentsImportingPlugins; diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 9f5c29a3c8943b4f757c239c4957f853a315b095..41e713e62ade98cc1d6d14a140300df117b8309c 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -54,8 +54,6 @@ void Link::initializeScopeChain() QHash<Document *, ScopeChain::QmlComponentChain *> componentScopes; if (_doc->qmlProgram()) { - _context->setLookupMode(Context::QmlLookup); - scopeChain.qmlComponentScope.clear(); componentScopes.insert(_doc.data(), &scopeChain.qmlComponentScope); makeComponentChain(_doc, &scopeChain.qmlComponentScope, &componentScopes); diff --git a/src/libs/qmljs/qmljsrewriter.cpp b/src/libs/qmljs/qmljsrewriter.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2c7a46c79555095be7bb3c5be903d66e98aabc07 --- /dev/null +++ b/src/libs/qmljs/qmljsrewriter.cpp @@ -0,0 +1,627 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "qmljsrewriter.h" + +#include <qmljs/parser/qmljsast_p.h> +#include <qmljs/parser/qmljsengine_p.h> +#include <utils/changeset.h> + +// ### FIXME: remove these includes: +#include <QtGui/QTextBlock> +#include <QtGui/QTextCursor> +#include <QtGui/QTextDocument> + +using namespace QmlJS; +using namespace QmlJS::AST; +using namespace Utils; + +Rewriter::Rewriter(const QString &originalText, + ChangeSet *changeSet, + const QStringList &propertyOrder) + : m_originalText(originalText) + , m_changeSet(changeSet) + , m_propertyOrder(propertyOrder) +{ + Q_ASSERT(changeSet); +} + +void Rewriter::addBinding(AST::UiObjectInitializer *ast, + const QString &propertyName, + const QString &propertyValue, + BindingType bindingType) +{ + UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members, + propertyName, + m_propertyOrder); + SourceLocation endOfPreviousMember; + SourceLocation startOfNextMember; + + if (insertAfter == 0 || insertAfter->member == 0) { + // insert as first member + endOfPreviousMember = ast->lbraceToken; + + if (ast->members && ast->members->member) + startOfNextMember = ast->members->member->firstSourceLocation(); + else + startOfNextMember = ast->rbraceToken; + } else { + endOfPreviousMember = insertAfter->member->lastSourceLocation(); + + if (insertAfter->next && insertAfter->next->member) + startOfNextMember = insertAfter->next->member->firstSourceLocation(); + else + startOfNextMember = ast->rbraceToken; + } + const bool isOneLiner = endOfPreviousMember.startLine == startOfNextMember.startLine; + bool needsPreceedingSemicolon = false; + bool needsTrailingSemicolon = false; + + if (isOneLiner) { + if (insertAfter == 0) { // we're inserting after an lbrace + if (ast->members) { // we're inserting before a member (and not the rbrace) + needsTrailingSemicolon = bindingType == ScriptBinding; + } + } else { // we're inserting after a member, not after the lbrace + if (endOfPreviousMember.isValid()) { // there already is a semicolon after the previous member + if (insertAfter->next && insertAfter->next->member) { // and the after us there is a member, not an rbrace, so: + needsTrailingSemicolon = bindingType == ScriptBinding; + } + } else { // there is no semicolon after the previous member (probably because there is an rbrace after us/it, so: + needsPreceedingSemicolon = true; + } + } + } + + QString newPropertyTemplate; + switch (bindingType) { + case ArrayBinding: + newPropertyTemplate = QLatin1String("%1: [\n%2\n]"); + break; + + case ObjectBinding: + newPropertyTemplate = QLatin1String("%1: %2"); + break; + + case ScriptBinding: + newPropertyTemplate = QLatin1String("%1: %2"); + break; + + default: + Q_ASSERT(!"unknown property type"); + } + + if (isOneLiner) { + if (needsPreceedingSemicolon) + newPropertyTemplate.prepend(QLatin1Char(';')); + newPropertyTemplate.prepend(QLatin1Char(' ')); + if (needsTrailingSemicolon) + newPropertyTemplate.append(QLatin1Char(';')); + } else { + newPropertyTemplate.prepend(QLatin1Char('\n')); + } + + m_changeSet->replace(endOfPreviousMember.end(), 0, + newPropertyTemplate.arg(propertyName, propertyValue)); +} + +UiObjectMemberList *Rewriter::searchMemberToInsertAfter(UiObjectMemberList *members, + const QStringList &propertyOrder) +{ + const int objectDefinitionInsertionPoint = propertyOrder.indexOf(QString::null); + + UiObjectMemberList *lastObjectDef = 0; + UiObjectMemberList *lastNonObjectDef = 0; + + for (UiObjectMemberList *iter = members; iter; iter = iter->next) { + UiObjectMember *member = iter->member; + int idx = -1; + + if (cast<UiObjectDefinition*>(member)) + lastObjectDef = iter; + else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member)) + idx = propertyOrder.indexOf(flatten(arrayBinding->qualifiedId)); + else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member)) + idx = propertyOrder.indexOf(flatten(objectBinding->qualifiedId)); + else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member)) + idx = propertyOrder.indexOf(flatten(scriptBinding->qualifiedId)); + else if (cast<UiPublicMember*>(member)) + idx = propertyOrder.indexOf(QLatin1String("property")); + + if (idx < objectDefinitionInsertionPoint) + lastNonObjectDef = iter; + } + + if (lastObjectDef) + return lastObjectDef; + else + return lastNonObjectDef; +} + +UiObjectMemberList *Rewriter::searchMemberToInsertAfter(UiObjectMemberList *members, + const QString &propertyName, + const QStringList &propertyOrder) +{ + if (!members) + return 0; // empty members + + QHash<QString, UiObjectMemberList *> orderedMembers; + + for (UiObjectMemberList *iter = members; iter; iter = iter->next) { + UiObjectMember *member = iter->member; + + if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member)) + orderedMembers[flatten(arrayBinding->qualifiedId)] = iter; + else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member)) + orderedMembers[flatten(objectBinding->qualifiedId)] = iter; + else if (cast<UiObjectDefinition*>(member)) + orderedMembers[QString::null] = iter; + else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member)) + orderedMembers[flatten(scriptBinding->qualifiedId)] = iter; + else if (cast<UiPublicMember*>(member)) + orderedMembers[QLatin1String("property")] = iter; + } + + int idx = propertyOrder.indexOf(propertyName); + if (idx == -1) + idx = propertyOrder.indexOf(QString()); + if (idx == -1) + idx = propertyOrder.size() - 1; + + for (; idx > 0; --idx) { + const QString prop = propertyOrder.at(idx - 1); + UiObjectMemberList *candidate = orderedMembers.value(prop, 0); + if (candidate != 0) + return candidate; + } + + return 0; +} + +QString Rewriter::flatten(UiQualifiedId *first) +{ + QString flatId; + + for (UiQualifiedId* current = first; current; current = current->next) { + if (current != first) + flatId += '.'; + + flatId += current->name->asString(); + } + + return flatId; +} + +void Rewriter::changeProperty(UiObjectInitializer *ast, + const QString &propertyName, + const QString &newValue, + BindingType binding) +{ + QString prefix, suffix; + int dotIdx = propertyName.indexOf(QLatin1Char('.')); + if (dotIdx != -1) { + prefix = propertyName.left(dotIdx); + suffix = propertyName.mid(dotIdx + 1); + } + + for (UiObjectMemberList *members = ast->members; members; members = members->next) { + UiObjectMember *member = members->member; + + // for non-grouped properties: + if (isMatchingPropertyMember(propertyName, member)) { + switch (binding) { + case ArrayBinding: + insertIntoArray(cast<UiArrayBinding*>(member), newValue); + break; + + case ObjectBinding: + replaceMemberValue(member, newValue, false); + break; + + case ScriptBinding: + replaceMemberValue(member, newValue, nextMemberOnSameLine(members)); + break; + + default: + Q_ASSERT(!"Unhandled QmlRefactoring::PropertyType"); + } + + break; + } + // for grouped properties: + else if (!prefix.isEmpty()) { + if (UiObjectDefinition *def = cast<UiObjectDefinition *>(member)) { + if (flatten(def->qualifiedTypeNameId) == prefix) { + changeProperty(def->initializer, suffix, newValue, binding); + } + } + } + } +} + +void Rewriter::replaceMemberValue(UiObjectMember *propertyMember, + const QString &newValue, + bool needsSemicolon) +{ + QString replacement = newValue; + int startOffset = -1; + int endOffset = -1; + if (UiObjectBinding *objectBinding = AST::cast<UiObjectBinding *>(propertyMember)) { + startOffset = objectBinding->qualifiedTypeNameId->identifierToken.offset; + endOffset = objectBinding->initializer->rbraceToken.end(); + } else if (UiScriptBinding *scriptBinding = AST::cast<UiScriptBinding *>(propertyMember)) { + startOffset = scriptBinding->statement->firstSourceLocation().offset; + endOffset = scriptBinding->statement->lastSourceLocation().end(); + } else if (UiArrayBinding *arrayBinding = AST::cast<UiArrayBinding *>(propertyMember)) { + startOffset = arrayBinding->lbracketToken.offset; + endOffset = arrayBinding->rbracketToken.end(); + } else if (UiPublicMember *publicMember = AST::cast<UiPublicMember*>(propertyMember)) { + if (publicMember->expression) { + startOffset = publicMember->expression->firstSourceLocation().offset; + if (publicMember->semicolonToken.isValid()) + endOffset = publicMember->semicolonToken.end(); + else + endOffset = publicMember->expression->lastSourceLocation().offset; + } else { + startOffset = publicMember->lastSourceLocation().end(); + endOffset = startOffset; + if (publicMember->semicolonToken.isValid()) + startOffset = publicMember->semicolonToken.offset; + replacement.prepend(QLatin1String(": ")); + } + } else { + return; + } + + if (needsSemicolon) + replacement += ';'; + + m_changeSet->replace(startOffset, endOffset - startOffset, replacement); +} + +bool Rewriter::isMatchingPropertyMember(const QString &propertyName, + UiObjectMember *member) +{ + if (UiPublicMember *publicMember = cast<UiPublicMember*>(member)) + return publicMember->name->asString() == propertyName; + else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member)) + return flatten(objectBinding->qualifiedId) == propertyName; + else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member)) + return flatten(scriptBinding->qualifiedId) == propertyName; + else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member)) + return flatten(arrayBinding->qualifiedId) == propertyName; + else + return false; +} + +bool Rewriter::nextMemberOnSameLine(UiObjectMemberList *members) +{ + if (members && members->next && members->next->member) { + return members->next->member->firstSourceLocation().startLine == members->member->lastSourceLocation().startLine; + } else { + return false; + } +} + +void Rewriter::insertIntoArray(UiArrayBinding *ast, const QString &newValue) +{ + if (!ast) + return; + + UiObjectMember *lastMember = 0; + for (UiArrayMemberList *iter = ast->members; iter; iter = iter->next) { + lastMember = iter->member; + } + + if (!lastMember) + return; + + const int insertionPoint = lastMember->lastSourceLocation().end(); + m_changeSet->replace(insertionPoint, 0, QLatin1String(",\n") + newValue); +} + +void Rewriter::removeProperty(UiObjectInitializer *ast, const QString &propertyName) +{ + QString prefix; + int dotIdx = propertyName.indexOf(QLatin1Char('.')); + if (dotIdx != -1) + prefix = propertyName.left(dotIdx); + + for (UiObjectMemberList *it = ast->members; it; it = it->next) { + UiObjectMember *member = it->member; + + // run full name match (for ungrouped properties): + if (isMatchingPropertyMember(propertyName, member)) { + removeMember(member); + } + // check for grouped properties: + else if (!prefix.isEmpty()) { + if (UiObjectDefinition *def = cast<UiObjectDefinition *>(member)) { + if (flatten(def->qualifiedTypeNameId) == prefix) { + removeGroupedProperty(def, propertyName); + } + } + } + } +} + +void Rewriter::removeGroupedProperty(UiObjectDefinition *ast, + const QString &propertyName) +{ + int dotIdx = propertyName.indexOf(QLatin1Char('.')); + if (dotIdx == -1) + return; + + const QString propName = propertyName.mid(dotIdx + 1); + + UiObjectMember *wanted = 0; + unsigned memberCount = 0; + for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) { + ++memberCount; + UiObjectMember *member = it->member; + + if (!wanted && isMatchingPropertyMember(propName, member)) { + wanted = member; + } + } + + if (!wanted) + return; + if (memberCount == 1) + removeMember(ast); + else + removeMember(wanted); +} + +void Rewriter::removeMember(UiObjectMember *member) +{ + int start = member->firstSourceLocation().offset; + int end = member->lastSourceLocation().end(); + + includeSurroundingWhitespace(start, end); + + m_changeSet->replace(start, end - start, QLatin1String("")); +} + +bool Rewriter::includeSurroundingWhitespace(int &start, int &end) const +{ + bool includeStartingWhitespace = true; + bool paragraphFound = false; + + if (end >= 0) { + QChar c = m_originalText.at(end); + while (c.isSpace()) { + ++end; + + if (c == QChar::ParagraphSeparator) { + paragraphFound = true; + break; + } else if (end == m_originalText.length()) { + break; + } + + c = m_originalText.at(end); + } + + includeStartingWhitespace = paragraphFound; + } + + if (includeStartingWhitespace) { + while (start > 0) { + const QChar c = m_originalText.at(start - 1); + + if (!c.isSpace()) + break; + else if (c == QChar::ParagraphSeparator) + break; + + --start; + } + } + + return paragraphFound; +} + +void Rewriter::includeLeadingEmptyLine(int &start) const +{ + QTextDocument doc(m_originalText); + + if (start == 0) + return; + + if (doc.characterAt(start - 1) != QChar::ParagraphSeparator) + return; + + QTextCursor tc(&doc); + tc.setPosition(start); + const int blockNr = tc.blockNumber(); + if (blockNr == 0) + return; + + const QTextBlock prevBlock = tc.block().previous(); + const QString trimmedPrevBlockText = prevBlock.text().trimmed(); + if (!trimmedPrevBlockText.isEmpty()) + return; + + start = prevBlock.position(); +} + +#if 0 +UiObjectMemberList *QMLRewriter::searchMemberToInsertAfter(UiObjectMemberList *members, const QStringList &propertyOrder) +{ + const int objectDefinitionInsertionPoint = propertyOrder.indexOf(QString::null); + + UiObjectMemberList *lastObjectDef = 0; + UiObjectMemberList *lastNonObjectDef = 0; + + for (UiObjectMemberList *iter = members; iter; iter = iter->next) { + UiObjectMember *member = iter->member; + int idx = -1; + + if (cast<UiObjectDefinition*>(member)) + lastObjectDef = iter; + else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member)) + idx = propertyOrder.indexOf(flatten(arrayBinding->qualifiedId)); + else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member)) + idx = propertyOrder.indexOf(flatten(objectBinding->qualifiedId)); + else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member)) + idx = propertyOrder.indexOf(flatten(scriptBinding->qualifiedId)); + else if (cast<UiPublicMember*>(member)) + idx = propertyOrder.indexOf(QLatin1String("property")); + + if (idx < objectDefinitionInsertionPoint) + lastNonObjectDef = iter; + } + + if (lastObjectDef) + return lastObjectDef; + else + return lastNonObjectDef; +} + +UiObjectMemberList *QMLRewriter::searchMemberToInsertAfter(UiObjectMemberList *members, const QString &propertyName, const QStringList &propertyOrder) +{ + if (!members) + return 0; // empty members + + QHash<QString, UiObjectMemberList *> orderedMembers; + + for (UiObjectMemberList *iter = members; iter; iter = iter->next) { + UiObjectMember *member = iter->member; + + if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member)) + orderedMembers[flatten(arrayBinding->qualifiedId)] = iter; + else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member)) + orderedMembers[flatten(objectBinding->qualifiedId)] = iter; + else if (cast<UiObjectDefinition*>(member)) + orderedMembers[QString::null] = iter; + else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member)) + orderedMembers[flatten(scriptBinding->qualifiedId)] = iter; + else if (cast<UiPublicMember*>(member)) + orderedMembers[QLatin1String("property")] = iter; + } + + int idx = propertyOrder.indexOf(propertyName); + if (idx == -1) + idx = propertyOrder.indexOf(QString()); + if (idx == -1) + idx = propertyOrder.size() - 1; + + for (; idx > 0; --idx) { + const QString prop = propertyOrder.at(idx - 1); + UiObjectMemberList *candidate = orderedMembers.value(prop, 0); + if (candidate != 0) + return candidate; + } + + return 0; +} + +#endif + +void Rewriter::appendToArrayBinding(UiArrayBinding *arrayBinding, + const QString &content) +{ + UiObjectMember *lastMember = 0; + for (UiArrayMemberList *iter = arrayBinding->members; iter; iter = iter->next) + if (iter->member) + lastMember = iter->member; + + if (!lastMember) + return; // an array binding cannot be empty, so there will (or should) always be a last member. + + const int insertionPoint = lastMember->lastSourceLocation().end(); + + m_changeSet->replace(insertionPoint, 0, QLatin1String(",\n") + content); +} + +void Rewriter::addObject(UiObjectInitializer *ast, const QString &content) +{ + UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members, m_propertyOrder); + + int insertionPoint; + QString textToInsert; + if (insertAfter && insertAfter->member) { + insertionPoint = insertAfter->member->lastSourceLocation().end(); + textToInsert += QLatin1String("\n"); + } else { + insertionPoint = ast->lbraceToken.end(); + } + + textToInsert += content; + m_changeSet->replace(insertionPoint, 0, QLatin1String("\n") + textToInsert); +} + +void Rewriter::removeObjectMember(UiObjectMember *member, UiObjectMember *parent) +{ + int start = member->firstSourceLocation().offset; + int end = member->lastSourceLocation().end(); + + if (UiArrayBinding *parentArray = cast<UiArrayBinding *>(parent)) { + extendToLeadingOrTrailingComma(parentArray, member, start, end); + } else { + includeSurroundingWhitespace(start, end); + } + + includeLeadingEmptyLine(start); + m_changeSet->replace(start, end - start, QLatin1String("")); +} + +void Rewriter::extendToLeadingOrTrailingComma(UiArrayBinding *parentArray, + UiObjectMember *member, + int &start, + int &end) const +{ + UiArrayMemberList *currentMember = 0; + for (UiArrayMemberList *it = parentArray->members; it; it = it->next) { + if (it->member == member) { + currentMember = it; + break; + } + } + + if (!currentMember) + return; + + if (currentMember->commaToken.isValid()) { + // leading comma + start = currentMember->commaToken.offset; + if (includeSurroundingWhitespace(start, end)) + --end; + } else if (currentMember->next && currentMember->next->commaToken.isValid()) { + // trailing comma + end = currentMember->next->commaToken.end(); + includeSurroundingWhitespace(start, end); + } else { + // array with 1 element, so remove the complete binding + start = parentArray->firstSourceLocation().offset; + end = parentArray->lastSourceLocation().end(); + includeSurroundingWhitespace(start, end); + } +} diff --git a/src/libs/qmljs/qmljsrewriter.h b/src/libs/qmljs/qmljsrewriter.h new file mode 100644 index 0000000000000000000000000000000000000000..274da0c180c40a20d7355fa8feb7a28018540f3d --- /dev/null +++ b/src/libs/qmljs/qmljsrewriter.h @@ -0,0 +1,110 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef QMLJSREWRITER_H +#define QMLJSREWRITER_H + +#include <qmljs/qmljs_global.h> + +#include <qmljs/parser/qmljsastfwd_p.h> + +#include <QtCore/QStringList> + +namespace Utils { +class ChangeSet; +} + +namespace QmlJS { + +class QMLJS_EXPORT Rewriter +{ +public: + enum BindingType { + ScriptBinding, + ObjectBinding, + ArrayBinding + }; + +public: + Rewriter(const QString &originalText, + Utils::ChangeSet *changeSet, + const QStringList &propertyOrder); + + void addBinding(AST::UiObjectInitializer *ast, + const QString &propertyName, + const QString &propertyValue, + BindingType bindingType); + + void changeProperty(AST::UiObjectInitializer *ast, + const QString &propertyName, + const QString &newValue, + BindingType binding); + + void removeProperty(AST::UiObjectInitializer *ast, const QString &propertyName); + + void appendToArrayBinding(AST::UiArrayBinding *arrayBinding, + const QString &content); + void addObject(AST::UiObjectInitializer *ast, const QString &content); + void removeObjectMember(AST::UiObjectMember *member, AST::UiObjectMember *parent); + + static AST::UiObjectMemberList *searchMemberToInsertAfter(AST::UiObjectMemberList *members, const QStringList &propertyOrder); + static AST::UiObjectMemberList *searchMemberToInsertAfter(AST::UiObjectMemberList *members, const QString &propertyName, const QStringList &propertyOrder); + static QString flatten(AST::UiQualifiedId *first); + + bool includeSurroundingWhitespace(int &start, int &end) const; + void includeLeadingEmptyLine(int &start) const; + +private: + void replaceMemberValue(AST::UiObjectMember *propertyMember, + const QString &newValue, + bool needsSemicolon); + static bool isMatchingPropertyMember(const QString &propertyName, + AST::UiObjectMember *member); + static bool nextMemberOnSameLine(AST::UiObjectMemberList *members); + + void insertIntoArray(AST::UiArrayBinding* ast, const QString &newValue); + + void removeMember(AST::UiObjectMember *member); + void removeGroupedProperty(AST::UiObjectDefinition *ast, + const QString &propertyName); + + void extendToLeadingOrTrailingComma(AST::UiArrayBinding *parentArray, + AST::UiObjectMember *member, + int &start, + int &end) const; + +private: + QString m_originalText; + Utils::ChangeSet *m_changeSet; + const QStringList m_propertyOrder; +}; + +} // namespace QmlJS + +#endif // QMLJSREWRITER_H diff --git a/src/libs/utils/fancylineedit.cpp b/src/libs/utils/fancylineedit.cpp index 5d88eccb1b8ce908ee8b151074f65d1f876f2a9f..7e84a8d1921616cbc5930de46b27dac9b0d827f8 100644 --- a/src/libs/utils/fancylineedit.cpp +++ b/src/libs/utils/fancylineedit.cpp @@ -44,7 +44,7 @@ enum { margin = 6 }; -#define ICONBUTTON_SIZE 18 +#define ICONBUTTON_HEIGHT 18 #define FADE_TIME 160 namespace Utils { @@ -56,41 +56,47 @@ public: virtual bool eventFilter(QObject *obj, QEvent *event); - const QString m_leftLabelStyleSheet; - const QString m_rightLabelStyleSheet; - FancyLineEdit *m_lineEdit; - QPixmap m_pixmap; - QMenu *m_menu; - FancyLineEdit::Side m_side; - bool m_useLayoutDirection; - bool m_menuTabFocusTrigger; - bool m_autoHideIcon; - IconButton *m_iconbutton; + QPixmap m_pixmap[2]; + QMenu *m_menu[2]; + bool m_menuTabFocusTrigger[2]; + IconButton *m_iconbutton[2]; + bool m_iconEnabled[2]; }; FancyLineEditPrivate::FancyLineEditPrivate(FancyLineEdit *parent) : QObject(parent), - m_lineEdit(parent), - m_menu(0), - m_side(FancyLineEdit::Left), - m_useLayoutDirection(false), - m_menuTabFocusTrigger(false), - m_autoHideIcon(false), - m_iconbutton(new IconButton(parent)) + m_lineEdit(parent) { + for (int i = 0; i < 2; ++i) { + m_menu[i] = 0; + m_menuTabFocusTrigger[i] = false; + m_iconbutton[i] = new IconButton(parent); + m_iconbutton[i]->installEventFilter(this); + m_iconbutton[i]->hide(); + m_iconbutton[i]->setAutoHide(false); + m_iconEnabled[i] = false; + } } bool FancyLineEditPrivate::eventFilter(QObject *obj, QEvent *event) { - if (obj != m_iconbutton) + int buttonIndex = -1; + for (int i = 0; i < 2; ++i) { + if (obj == m_iconbutton[i]) { + buttonIndex = i; + break; + } + } + if (buttonIndex == -1) return QObject::eventFilter(obj, event); switch (event->type()) { case QEvent::FocusIn: - if (m_menuTabFocusTrigger && m_menu) { + if (m_menuTabFocusTrigger[buttonIndex] && m_menu[buttonIndex]) { m_lineEdit->setFocus(); - m_menu->exec(m_iconbutton->mapToGlobal(m_iconbutton->rect().center())); + m_menu[buttonIndex]->exec(m_iconbutton[buttonIndex]->mapToGlobal( + m_iconbutton[buttonIndex]->rect().center())); return true; } default: @@ -105,29 +111,21 @@ FancyLineEdit::FancyLineEdit(QWidget *parent) : QLineEdit(parent), m_d(new FancyLineEditPrivate(this)) { - // KDE has custom icons for this. Notice that icon namings are counter intuitive - // If these icons are not avaiable we use the freedesktop standard name before - // falling back to a bundled resource - QIcon icon = QIcon::fromTheme(layoutDirection() == Qt::LeftToRight ? - QLatin1String("edit-clear-locationbar-rtl") : - QLatin1String("edit-clear-locationbar-ltr"), - QIcon::fromTheme("edit-clear", QIcon(QLatin1String(":/core/images/editclear.png")))); - - m_d->m_iconbutton->installEventFilter(m_d); - m_d->m_iconbutton->setIcon(icon); - ensurePolished(); - setSide(Left); + updateMargins(); - connect(this, SIGNAL(textChanged(QString)), this, SLOT(checkButton(QString))); - connect(m_d->m_iconbutton, SIGNAL(clicked()), this, SLOT(iconClicked())); + connect(this, SIGNAL(textChanged(QString)), this, SLOT(checkButtons(QString))); + connect(m_d->m_iconbutton[Left], SIGNAL(clicked()), this, SLOT(iconClicked())); + connect(m_d->m_iconbutton[Right], SIGNAL(clicked()), this, SLOT(iconClicked())); } -void FancyLineEdit::checkButton(const QString &text) +void FancyLineEdit::checkButtons(const QString &text) { - if (autoHideIcon()) { - if (m_oldText.isEmpty() || text.isEmpty()) - m_d->m_iconbutton->animateShow(!text.isEmpty()); + if (m_oldText.isEmpty() || text.isEmpty()) { + for (int i = 0; i < 2; ++i) { + if (m_d->m_iconbutton[i]->hasAutoHide()) + m_d->m_iconbutton[i]->animateShow(!text.isEmpty()); + } m_oldText = text; } } @@ -136,127 +134,147 @@ FancyLineEdit::~FancyLineEdit() { } -void FancyLineEdit::setSide(Side side) +void FancyLineEdit::setButtonVisible(Side side, bool visible) { - m_d->m_side = side; + m_d->m_iconbutton[side]->setVisible(visible); + m_d->m_iconEnabled[side] = visible; + updateMargins(); +} - Side iconpos = side; - if (layoutDirection() == Qt::RightToLeft) - iconpos = (side == Left ? Right : Left); +bool FancyLineEdit::isButtonVisible(Side side) const +{ + return m_d->m_iconEnabled[side]; +} - // Make room for icon +void FancyLineEdit::iconClicked() +{ + IconButton *button = qobject_cast<IconButton *>(sender()); + int index = -1; + for (int i = 0; i < 2; ++i) + if (m_d->m_iconbutton[i] == button) + index = i; + if (index == -1) + return; + if (m_d->m_menu[index]) { + m_d->m_menu[index]->exec(QCursor::pos()); + } else { + emit buttonClicked((Side)index); + if (index == Left) + emit leftButtonClicked(); + else if (index == Right) + emit rightButtonClicked(); + } +} - // Let the style determine minimum height for our widget - QSize size(ICONBUTTON_SIZE + 6, ICONBUTTON_SIZE + 2); +void FancyLineEdit::updateMargins() +{ + bool leftToRight = (layoutDirection() == Qt::LeftToRight); + Side realLeft = (leftToRight ? Left : Right); + Side realRight = (leftToRight ? Right : Left); + int leftMargin = m_d->m_iconbutton[realLeft]->pixmap().width() + 8; + int rightMargin = m_d->m_iconbutton[realRight]->pixmap().width() + 8; // Note KDE does not reserve space for the highlight color if (style()->inherits("OxygenStyle")) { - size = size.expandedTo(QSize(24, 0)); + leftMargin = qMax(24, leftMargin); + rightMargin = qMax(24, rightMargin); } - QMargins margins; - if (iconpos == Right) - margins.setRight(size.width()); - else - margins.setLeft(size.width()); + QMargins margins((m_d->m_iconEnabled[realLeft] ? leftMargin : 0), 0, + (m_d->m_iconEnabled[realRight] ? rightMargin : 0), 0); setTextMargins(margins); } -void FancyLineEdit::iconClicked() +void FancyLineEdit::updateButtonPositions() { - if (m_d->m_menu) { - m_d->m_menu->exec(QCursor::pos()); - } else { - emit buttonClicked(); + QRect contentRect = rect(); + for (int i = 0; i < 2; ++i) { + Side iconpos = (Side)i; + if (layoutDirection() == Qt::RightToLeft) + iconpos = (iconpos == Left ? Right : Left); + + if (iconpos == FancyLineEdit::Right) { + const int iconoffset = textMargins().right() + 4; + m_d->m_iconbutton[i]->setGeometry(contentRect.adjusted(width() - iconoffset, 0, 0, 0)); + } else { + const int iconoffset = textMargins().left() + 4; + m_d->m_iconbutton[i]->setGeometry(contentRect.adjusted(0, 0, -width() + iconoffset, 0)); + } } } -FancyLineEdit::Side FancyLineEdit::side() const -{ - return m_d->m_side; -} - void FancyLineEdit::resizeEvent(QResizeEvent *) { - QRect contentRect = rect(); - Side iconpos = m_d->m_side; - if (layoutDirection() == Qt::RightToLeft) - iconpos = (iconpos == Left ? Right : Left); - - if (iconpos == FancyLineEdit::Right) { - const int iconoffset = textMargins().right() + 4; - m_d->m_iconbutton->setGeometry(contentRect.adjusted(width() - iconoffset, 0, 0, 0)); - } else { - const int iconoffset = textMargins().left() + 4; - m_d->m_iconbutton->setGeometry(contentRect.adjusted(0, 0, -width() + iconoffset, 0)); - } + updateButtonPositions(); } -void FancyLineEdit::setPixmap(const QPixmap &pixmap) +void FancyLineEdit::setButtonPixmap(Side side, const QPixmap &buttonPixmap) { - m_d->m_iconbutton->setIcon(pixmap); - updateGeometry(); + m_d->m_iconbutton[side]->setPixmap(buttonPixmap); + updateMargins(); + updateButtonPositions(); + update(); } -QPixmap FancyLineEdit::pixmap() const +QPixmap FancyLineEdit::buttonPixmap(Side side) const { - return m_d->m_pixmap; + return m_d->m_pixmap[side]; } -void FancyLineEdit::setMenu(QMenu *menu) +void FancyLineEdit::setButtonMenu(Side side, QMenu *buttonMenu) { - m_d->m_menu = menu; - m_d->m_iconbutton->setIconOpacity(1.0); + m_d->m_menu[side] = buttonMenu; + m_d->m_iconbutton[side]->setIconOpacity(1.0); } -QMenu *FancyLineEdit::menu() const +QMenu *FancyLineEdit::buttonMenu(Side side) const { - return m_d->m_menu; + return m_d->m_menu[side]; } -bool FancyLineEdit::hasMenuTabFocusTrigger() const +bool FancyLineEdit::hasMenuTabFocusTrigger(Side side) const { - return m_d->m_menuTabFocusTrigger; + return m_d->m_menuTabFocusTrigger[side]; } -void FancyLineEdit::setMenuTabFocusTrigger(bool v) +void FancyLineEdit::setMenuTabFocusTrigger(Side side, bool v) { - if (m_d->m_menuTabFocusTrigger == v) + if (m_d->m_menuTabFocusTrigger[side] == v) return; - m_d->m_menuTabFocusTrigger = v; - m_d->m_iconbutton->setFocusPolicy(v ? Qt::TabFocus : Qt::NoFocus); + m_d->m_menuTabFocusTrigger[side] = v; + m_d->m_iconbutton[side]->setFocusPolicy(v ? Qt::TabFocus : Qt::NoFocus); } -bool FancyLineEdit::autoHideIcon() const +bool FancyLineEdit::hasAutoHideButton(Side side) const { - return m_d->m_autoHideIcon; + return m_d->m_iconbutton[side]->hasAutoHide(); } -void FancyLineEdit::setAutoHideIcon(bool h) +void FancyLineEdit::setAutoHideButton(Side side, bool h) { - m_d->m_autoHideIcon = h; + m_d->m_iconbutton[side]->setAutoHide(h); if (h) - m_d->m_iconbutton->setIconOpacity(text().isEmpty() ? 0.0 : 1.0); + m_d->m_iconbutton[side]->setIconOpacity(text().isEmpty() ? 0.0 : 1.0); else - m_d->m_iconbutton->setIconOpacity(1.0); + m_d->m_iconbutton[side]->setIconOpacity(1.0); } -void FancyLineEdit::setButtonToolTip(const QString &tip) +void FancyLineEdit::setButtonToolTip(Side side, const QString &tip) { - m_d->m_iconbutton->setToolTip(tip); + m_d->m_iconbutton[side]->setToolTip(tip); } -void FancyLineEdit::setButtonFocusPolicy(Qt::FocusPolicy policy) +void FancyLineEdit::setButtonFocusPolicy(Side side, Qt::FocusPolicy policy) { - m_d->m_iconbutton->setFocusPolicy(policy); + m_d->m_iconbutton[side]->setFocusPolicy(policy); } // IconButton - helper class to represent a clickable icon IconButton::IconButton(QWidget *parent) - : QAbstractButton(parent) + : QAbstractButton(parent), m_autoHide(false) { setCursor(Qt::ArrowCursor); setFocusPolicy(Qt::NoFocus); @@ -270,15 +288,13 @@ void IconButton::paintEvent(QPaintEvent *) QIcon::Mode state = QIcon::Disabled; if (isEnabled()) state = isDown() ? QIcon::Selected : QIcon::Normal; - QPixmap iconpixmap = icon().pixmap(QSize(ICONBUTTON_SIZE, ICONBUTTON_SIZE), - state, QIcon::Off); - QRect pixmapRect = QRect(0, 0, iconpixmap.width(), iconpixmap.height()); + QRect pixmapRect = QRect(0, 0, m_pixmap.width(), m_pixmap.height()); pixmapRect.moveCenter(rect().center()); - if (static_cast<FancyLineEdit*>(parentWidget())->autoHideIcon()) + if (m_autoHide) painter.setOpacity(m_iconOpacity); - painter.drawPixmap(pixmapRect, iconpixmap); + painter.drawPixmap(pixmapRect, m_pixmap); } void IconButton::animateShow(bool visible) diff --git a/src/libs/utils/fancylineedit.h b/src/libs/utils/fancylineedit.h index bad70f7f00319b82f3772416a05156393cb668dd..eb024d4d4ea24955b77446af69bdd4ce05edcd52 100644 --- a/src/libs/utils/fancylineedit.h +++ b/src/libs/utils/fancylineedit.h @@ -44,15 +44,22 @@ class IconButton: public QAbstractButton { Q_OBJECT Q_PROPERTY(float iconOpacity READ iconOpacity WRITE setIconOpacity) + Q_PROPERTY(bool autoHide READ hasAutoHide WRITE setAutoHide) public: IconButton(QWidget *parent = 0); void paintEvent(QPaintEvent *event); + void setPixmap(const QPixmap &pixmap) { m_pixmap = pixmap; update(); } + QPixmap pixmap() const { return m_pixmap; } float iconOpacity() { return m_iconOpacity; } void setIconOpacity(float value) { m_iconOpacity = value; update(); } void animateShow(bool visible); + void setAutoHide(bool hide) { m_autoHide = hide; } + bool hasAutoHide() const { return m_autoHide; } private: float m_iconOpacity; + bool m_autoHide; + QPixmap m_pixmap; }; @@ -68,50 +75,49 @@ class QTCREATOR_UTILS_EXPORT FancyLineEdit : public QLineEdit Q_DISABLE_COPY(FancyLineEdit) Q_OBJECT Q_ENUMS(Side) - Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap DESIGNABLE true) - Q_PROPERTY(Side side READ side WRITE setSide DESIGNABLE true) - Q_PROPERTY(bool menuTabFocusTrigger READ hasMenuTabFocusTrigger WRITE setMenuTabFocusTrigger DESIGNABLE true) - Q_PROPERTY(bool autoHideIcon READ autoHideIcon WRITE setAutoHideIcon DESIGNABLE true) public: - enum Side {Left, Right}; + enum Side {Left = 0, Right = 1}; explicit FancyLineEdit(QWidget *parent = 0); ~FancyLineEdit(); - QPixmap pixmap() const; + QPixmap buttonPixmap(Side side) const; + void setButtonPixmap(Side side, const QPixmap &pixmap); - void setMenu(QMenu *menu); - QMenu *menu() const; + QMenu *buttonMenu(Side side) const; + void setButtonMenu(Side side, QMenu *menu); - void setSide(Side side); - Side side() const; + void setButtonVisible(Side side, bool visible); + bool isButtonVisible(Side side) const; - void setButtonToolTip(const QString &); - void setButtonFocusPolicy(Qt::FocusPolicy policy); + void setButtonToolTip(Side side, const QString &); + void setButtonFocusPolicy(Side side, Qt::FocusPolicy policy); // Set whether tabbing in will trigger the menu. - bool hasMenuTabFocusTrigger() const; - void setMenuTabFocusTrigger(bool v); + void setMenuTabFocusTrigger(Side side, bool v); + bool hasMenuTabFocusTrigger(Side side) const; // Set if icon should be hidden when text is empty - bool autoHideIcon() const; - void setAutoHideIcon(bool h); + void setAutoHideButton(Side side, bool h); + bool hasAutoHideButton(Side side) const; signals: - void buttonClicked(); + void buttonClicked(Utils::FancyLineEdit::Side side); + void leftButtonClicked(); + void rightButtonClicked(); -public slots: - void setPixmap(const QPixmap &pixmap); - void checkButton(const QString &); +private slots: + void checkButtons(const QString &); void iconClicked(); protected: virtual void resizeEvent(QResizeEvent *e); private: + void updateMargins(); + void updateButtonPositions(); friend class Utils::FancyLineEditPrivate; - bool isSideStored() const; FancyLineEditPrivate *m_d; QString m_oldText; diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp index 26499f33fc66482accd5d4ef90fe43e9e99a8d61..2bb28ff7b143598c919438c12a97ec43562d412a 100644 --- a/src/libs/utils/fancymainwindow.cpp +++ b/src/libs/utils/fancymainwindow.cpp @@ -39,7 +39,7 @@ static const char lockedKeyC[] = "Locked"; static const char stateKeyC[] = "State"; -static const int settingsVersion = 1; +static const int settingsVersion = 2; namespace Utils { @@ -55,6 +55,7 @@ struct FancyMainWindowPrivate { QAction *m_toggleLockedAction; QAction *m_menuSeparator2; QAction *m_resetLayoutAction; + QDockWidget *m_toolBarDockWidget; }; FancyMainWindowPrivate::FancyMainWindowPrivate(FancyMainWindow *q) : @@ -62,7 +63,8 @@ FancyMainWindowPrivate::FancyMainWindowPrivate(FancyMainWindow *q) : m_menuSeparator1(new QAction(q)), m_toggleLockedAction(new QAction(FancyMainWindow::tr("Locked"), q)), m_menuSeparator2(new QAction(q)), - m_resetLayoutAction(new QAction(FancyMainWindow::tr("Reset to Default Layout") ,q)) + m_resetLayoutAction(new QAction(FancyMainWindow::tr("Reset to Default Layout") ,q)), + m_toolBarDockWidget(0) { m_toggleLockedAction->setCheckable(true); m_toggleLockedAction->setChecked(m_locked); @@ -283,4 +285,14 @@ void FancyMainWindow::setDockActionsVisible(bool v) d->m_resetLayoutAction->setVisible(v); } +QDockWidget *FancyMainWindow::toolBarDockWidget() const +{ + return d->m_toolBarDockWidget; +} + +void FancyMainWindow::setToolBarDockWidget(QDockWidget *dock) +{ + d->m_toolBarDockWidget = dock; +} + } // namespace Utils diff --git a/src/libs/utils/fancymainwindow.h b/src/libs/utils/fancymainwindow.h index a9079fa2e88bc08aac68119b9e12a87ba53fd71e..2b0927a058f5df94e4aaee29af59ce821e7c719b 100644 --- a/src/libs/utils/fancymainwindow.h +++ b/src/libs/utils/fancymainwindow.h @@ -76,6 +76,10 @@ public: // Overwritten to add locked/reset. virtual QMenu *createPopupMenu(); + + QDockWidget *toolBarDockWidget() const; + void setToolBarDockWidget(QDockWidget *dock); + signals: // Emitted by resetLayoutAction(). Connect to a slot // restoring the default layout. diff --git a/src/libs/utils/filterlineedit.cpp b/src/libs/utils/filterlineedit.cpp index 505b38c64a29d51686677ec2285d712e3974f171..f74eb392ddf2a61d8ec46fbbee6fa905bf6e4e96 100644 --- a/src/libs/utils/filterlineedit.cpp +++ b/src/libs/utils/filterlineedit.cpp @@ -35,11 +35,20 @@ FilterLineEdit::FilterLineEdit(QWidget *parent) : FancyLineEdit(parent), m_lastFilterText(text()) { - setSide(Utils::FancyLineEdit::Right); + // KDE has custom icons for this. Notice that icon namings are counter intuitive + // If these icons are not avaiable we use the freedesktop standard name before + // falling back to a bundled resource + QIcon icon = QIcon::fromTheme(layoutDirection() == Qt::LeftToRight ? + QLatin1String("edit-clear-locationbar-rtl") : + QLatin1String("edit-clear-locationbar-ltr"), + QIcon::fromTheme("edit-clear", QIcon(QLatin1String(":/core/images/editclear.png")))); + + setButtonPixmap(Right, icon.pixmap(16)); + setButtonVisible(Right, true); setPlaceholderText(tr("Filter")); - setButtonToolTip(tr("Clear text")); - setAutoHideIcon(true); - connect(this, SIGNAL(buttonClicked()), this, SLOT(clear())); + setButtonToolTip(Right, tr("Clear text")); + setAutoHideButton(Right, true); + connect(this, SIGNAL(rightButtonClicked()), this, SLOT(clear())); connect(this, SIGNAL(textChanged(QString)), this, SLOT(slotTextChanged())); } diff --git a/src/plugins/coreplugin/actionmanager/actioncontainer.cpp b/src/plugins/coreplugin/actionmanager/actioncontainer.cpp index aa8ff2c7ed725459e73b4408066e36793480a4c8..01f54589463d0cdffbf688dd048406e4e343a485 100644 --- a/src/plugins/coreplugin/actionmanager/actioncontainer.cpp +++ b/src/plugins/coreplugin/actionmanager/actioncontainer.cpp @@ -390,8 +390,10 @@ bool MenuActionContainer::updateInternal() return true; bool hasitems = false; + QList<QAction *> actions = m_menu->actions(); foreach (ActionContainer *container, subContainers()) { + actions.removeAll(container->menu()->menuAction()); if (container == this) { qWarning() << Q_FUNC_INFO << "container" << (this->menu() ? this->menu()->title() : "") << "contains itself as subcontainer"; continue; @@ -403,12 +405,22 @@ bool MenuActionContainer::updateInternal() } if (!hasitems) { foreach (Command *command, commands()) { + actions.removeAll(command->action()); if (command->isActive()) { hasitems = true; break; } } } + if (!hasitems) { + // look if there were actions added that we don't control and check if they are enabled + foreach (const QAction *action, actions) { + if (!action->isSeparator() && action->isEnabled()) { + hasitems = true; + break; + } + } + } if (hasEmptyAction(EA_Hide)) m_menu->setVisible(hasitems); diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp index 990dfda3601fb1e7e4a029e8693094418292cda8..a7e0d8571e3371bcaa720586e5a2959e0050cac8 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp +++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp @@ -161,7 +161,7 @@ namespace { */ /*! - \fn Command *ActionManager::registerAction(QAction *action, const QString &id, const QList<int> &context) + \fn Command *ActionManager::registerAction(QAction *action, const QString &id, const Core::Context &context) \brief Makes an \a action known to the system under the specified string \a id. Returns a command object that represents the action in the application and is @@ -172,7 +172,7 @@ namespace { */ /*! - \fn Command *ActionManager::registerShortcut(QShortcut *shortcut, const QString &id, const QList<int> &context) + \fn Command *ActionManager::registerShortcut(QShortcut *shortcut, const QString &id, const Core::Context &context) \brief Makes a \a shortcut known to the system under the specified string \a id. Returns a command object that represents the shortcut in the application and is diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.cpp b/src/plugins/coreplugin/actionmanager/commandmappings.cpp index c98e574dac18b1664616638299f7588d1b0d4698..c62aa11827021fdef8a3a7cbb30a5e3fc066fb43 100644 --- a/src/plugins/coreplugin/actionmanager/commandmappings.cpp +++ b/src/plugins/coreplugin/actionmanager/commandmappings.cpp @@ -70,11 +70,10 @@ QWidget *CommandMappings::createPage(QWidget *parent) QWidget *w = new QWidget(parent); m_page->setupUi(w); m_page->resetButton->setIcon(QPixmap(Constants::ICON_RESET)); - m_page->targetEdit->setSide(Utils::FancyLineEdit::Right); - m_page->targetEdit->setAutoHideIcon(true); + m_page->targetEdit->setAutoHideButton(Utils::FancyLineEdit::Right, true); m_page->targetEdit->installEventFilter(this); - connect(m_page->targetEdit, SIGNAL(buttonClicked()), + connect(m_page->targetEdit, SIGNAL(buttonClicked(Utils::FancyLineEdit::Side)), this, SLOT(removeTargetIdentifier())); connect(m_page->resetButton, SIGNAL(clicked()), this, SLOT(resetTargetIdentifier())); diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.ui b/src/plugins/coreplugin/actionmanager/commandmappings.ui index 3e0150d27180dfeeced4dd4f3c5fe32756a3d94f..6bbbdf9f46a229d570665f67b41560fdf58986f7 100644 --- a/src/plugins/coreplugin/actionmanager/commandmappings.ui +++ b/src/plugins/coreplugin/actionmanager/commandmappings.ui @@ -112,7 +112,7 @@ </widget> </item> <item> - <widget class="Utils::FancyLineEdit" name="targetEdit"/> + <widget class="Utils::FilterLineEdit" name="targetEdit"/> </item> <item> <widget class="QToolButton" name="resetButton"> diff --git a/src/plugins/coreplugin/editortoolbar.cpp b/src/plugins/coreplugin/editortoolbar.cpp index 3223e828e70813597266ca99274773a370edc07e..2e6fa7f0ae17f84f2ef6c98e4ffd5f795adcf392 100644 --- a/src/plugins/coreplugin/editortoolbar.cpp +++ b/src/plugins/coreplugin/editortoolbar.cpp @@ -276,7 +276,7 @@ void EditorToolBar::listContextMenu(QPoint pos) QMenu menu; menu.addAction(tr("Copy full path to clipboard")); if (menu.exec(m_editorList->mapToGlobal(pos))) { - QApplication::clipboard()->setText(fileName); + QApplication::clipboard()->setText(QDir::toNativeSeparators(fileName)); } } diff --git a/src/plugins/coreplugin/filemanager.cpp b/src/plugins/coreplugin/filemanager.cpp index ccad6c2e108cf262e45b96bb4fd18d55005acf9a..072d4ae74a1534bdb0403a0c998b01d51cd9b6fb 100644 --- a/src/plugins/coreplugin/filemanager.cpp +++ b/src/plugins/coreplugin/filemanager.cpp @@ -736,7 +736,7 @@ QString FileManager::getSaveAsFileName(IFile *file) } /*! - \fn QString FileManager::getOpenFileNames(const QStringList &filters, QString *selectedFilter) const + \fn QString FileManager::getOpenFileNames(const QStringList &filters, const QString &path, QString *selectedFilter) const Asks the user for a set of file names to be opened. */ diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 363d886b2caa56bfacb908c03b07caeb5abea46d..192845b456ba58658fb50f971c019ffed02af833 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -249,7 +249,7 @@ */ /*! - \fn void ICore::updateAdditionalContexts(const QList<int> &remove, const QList<int> &add) + \fn void ICore::updateAdditionalContexts(const Core::Context &remove, const Core::Context &add) \brief Change the currently active additional contexts. Removes the list of additional contexts specified by \a remove and adds the @@ -340,7 +340,7 @@ */ /*! - \fn void ICore::contextChanged(Core::IContext *context, const QList<int> &additionalContexts) + \fn void ICore::contextChanged(Core::IContext *context, const Core::Context &additionalContexts) \brief Sent just after a new \a context became the current context (meaning that its widget got focus), or if the additional context ids changed. */ diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 7fa1eb40af32378cc705ded31d014136f67cb567..e20d9cde4e1ddc2e85b72d382e4841db57b39ace 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -1303,18 +1303,6 @@ QPrinter *MainWindow::printer() const return m_printer; } -void MainWindow::openProject() -{ - // ### We need a way to access the mimedatabase and differentiate - // between project types and other files. This is currently not possible - const QString filters = "All Files (*);;Projects(*.pro *.qmlproject)"; - QString selectedFilters = "Projects(*.pro *.qmlproject)"; - QStringList files = - Core::ICore::instance()->fileManager()->getOpenFileNames( - filters, tr("Open Project"), &selectedFilters); - openFiles(files); -} - void MainWindow::setFullScreen(bool on) { if (bool(windowState() & Qt::WindowFullScreen) == on) diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index 5c3e449fa8d676590472d5794bb4a1cf0de1bdd9..57bea2133a51e66fdb6ebbfcf4449915db464502 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -129,7 +129,6 @@ signals: void windowActivated(); public slots: - void openProject(); void newFile(); void openFileWith(); void exit(); diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 3053aba12ebde2ba9a7372f2aaeb5707c0d812d2..7a56092b2fad2de98b4a9c75c27d99d3b11e6092 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -292,7 +292,6 @@ private: CppTools::CppModelManagerInterface *m_modelManager; - QList<int> m_contexts; QComboBox *m_methodCombo; CPlusPlus::OverviewModel *m_overviewModel; QSortFilterProxyModel *m_proxyModel; diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp index 651a982772ac7bf848306de14d17a5568178b504..b237cbf8f81fcbf89e9f8878be272500535fbb23 100644 --- a/src/plugins/cppeditor/cpphoverhandler.cpp +++ b/src/plugins/cppeditor/cpphoverhandler.cpp @@ -318,12 +318,14 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in if (!m_helpId.isEmpty() && !helpLinks.isEmpty()) { if (showF1) { - m_toolTip = QString(QLatin1String("<table><tr><td valign=middle><nobr>%1</td>" + // we need the original width without escape sequences + const int width = QFontMetrics(QToolTip::font()).width(m_toolTip); + m_toolTip = QString(QLatin1String("<table><tr><td valign=middle width=%2>%1</td>" "<td><img src=\":/cppeditor/images/f1.png\"></td></tr></table>")) - .arg(Qt::escape(m_toolTip)); + .arg(Qt::escape(m_toolTip)).arg(width); } editor->setContextHelpId(m_helpId); } else if (!m_toolTip.isEmpty() && Qt::mightBeRichText(m_toolTip)) { - m_toolTip = QString(QLatin1String("<nobr>%1")).arg(Qt::escape(m_toolTip)); + m_toolTip = QString(QLatin1String("<nobr>%1</nobr>")).arg(Qt::escape(m_toolTip)); } } diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp index f4baa73299586316dfef69f6cd5223e31a1dbe70..66591ffb2eb6b521905695b22289a49fcf94fcba 100644 --- a/src/plugins/cppeditor/cppquickfix.cpp +++ b/src/plugins/cppeditor/cppquickfix.cpp @@ -926,7 +926,10 @@ int CppQuickFixOperation::match(TextEditor::QuickFixState *state) Utils::ChangeSet::Range CppQuickFixOperation::range(unsigned tokenIndex) const { const CPlusPlus::Token &token = tokenAt(tokenIndex); - return Utils::ChangeSet::Range(token.begin(), token.end()); + unsigned line, column; + _document->translationUnit()->getPosition(token.begin(), &line, &column); + const int start = editor()->document()->findBlockByNumber(line - 1).position() + column - 1; + return Utils::ChangeSet::Range(start, start + token.length()); } Utils::ChangeSet::Range CppQuickFixOperation::range(CPlusPlus::AST *ast) const diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index c9b63e8bfcee2a1a8b66c14c52def0c39e681b5f..931ab27dec9673aecc1c37375b718f73c61acc32 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -694,12 +694,12 @@ QVariant BreakHandler::data(const QModelIndex &mi, int role) const Qt::ItemFlags BreakHandler::flags(const QModelIndex &index) const { - switch (index.column()) { - //case 0: - // return Qt::ItemIsUserCheckable | Qt::ItemIsEnabled; - default: +// switch (index.column()) { +// //case 0: +// // return Qt::ItemIsUserCheckable | Qt::ItemIsEnabled; +// default: return QAbstractTableModel::flags(index); - } +// } } bool BreakHandler::setData(const QModelIndex &index, const QVariant &value, int role) diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp index 266be5df5d6630db1db94b042af774f8757aad00..10adf8d645585776b85f2b28ad5f9fd699faefd1 100644 --- a/src/plugins/debugger/debuggeractions.cpp +++ b/src/plugins/debugger/debuggeractions.cpp @@ -155,9 +155,14 @@ QString DebuggerSettings::dump() const ts << "Debugger settings: "; foreach (SavedAction *item, m_items) { QString key = item->settingsKey(); - if (!key.isEmpty()) - ts << '\n' << key << ": " << item->value().toString() - << " (default: " << item->defaultValue().toString() << ")"; + if (!key.isEmpty()) { + const QString current = item->value().toString(); + const QString default_ = item->defaultValue().toString(); + ts << '\n' << key << ": " << current + << " (default: " << default_ << ")"; + if (current != default_) + ts << " ***"; + } } return out; } diff --git a/src/plugins/debugger/debuggeroutputwindow.cpp b/src/plugins/debugger/debuggeroutputwindow.cpp index 8b92763c8028988e56e04188a84dabaefa74dfec..d04460144dadfc25d3951cd1477fba2ddbf324d2 100644 --- a/src/plugins/debugger/debuggeroutputwindow.cpp +++ b/src/plugins/debugger/debuggeroutputwindow.cpp @@ -436,7 +436,6 @@ void DebuggerOutputWindow::showInput(int channel, const QString &input) cursor.movePosition(QTextCursor::End); m_inputText->setTextCursor(cursor); m_inputText->ensureCursorVisible(); - showOutput(LogInput, input); } void DebuggerOutputWindow::clearContents() diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 4b44d16adc18ca7eee49528fa372d23a7833beb5..f08c4f5b6476cc355e98bea3076369ec478ba9bd 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1082,7 +1082,7 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, QString *er m_actions.jumpToLineAction1 = new QAction(tr("Jump to Line"), this); m_actions.jumpToLineAction1->setProperty(Role, RequestExecJumpToLineRole); m_actions.jumpToLineAction2 = new QAction(tr("Jump to Line"), this); - m_actions.jumpToLineAction1->setProperty(Role, RequestExecJumpToLineRole); + m_actions.jumpToLineAction2->setProperty(Role, RequestExecJumpToLineRole); m_actions.breakAction = new QAction(tr("Toggle Breakpoint"), this); @@ -1524,9 +1524,6 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, QString *er // UI Switcher connect(m_uiSwitcher, SIGNAL(languageChanged(QString)), this, SLOT(languageChanged(QString))); - m_uiSwitcher->initialize(); - m_watchersWindow->setVisible(false); - m_returnWindow->setVisible(false); disconnectEngine(); return true; @@ -1961,6 +1958,8 @@ void DebuggerPluginPrivate::setSimpleDockWidgetArrangement(const QString &active } } + mw->splitDockWidget(mw->toolBarDockWidget(), m_stackDock, Qt::Vertical); + mw->splitDockWidget(m_stackDock, m_watchDock, Qt::Horizontal); mw->tabifyDockWidget(m_watchDock, m_breakDock); mw->tabifyDockWidget(m_watchDock, m_modulesDock); mw->tabifyDockWidget(m_watchDock, m_registerDock); @@ -2398,16 +2397,16 @@ void DebuggerPlugin::showMessage(const QString &msg, int channel, int timeout) QTC_ASSERT(ow, return); switch (channel) { case StatusBar: + // This will append to ow's output pane, too. d->showStatusMessage(msg, timeout); - ow->showOutput(LogStatus, msg); break; case LogMiscInput: ow->showInput(LogMisc, msg); ow->showOutput(LogMisc, msg); break; case LogInput: - ow->showInput(channel, msg); - ow->showOutput(channel, msg); + ow->showInput(LogInput, msg); + ow->showOutput(LogInput, msg); break; default: ow->showOutput(channel, msg); @@ -2464,6 +2463,10 @@ void DebuggerPlugin::remoteCommand(const QStringList &options, const QStringList void DebuggerPlugin::extensionsInitialized() { + d->m_uiSwitcher->initialize(); + d->m_watchersWindow->setVisible(false); + d->m_returnWindow->setVisible(false); + // time gdb -i mi -ex 'debuggerplugin.cpp:800' -ex r -ex q bin/qtcreator.bin const QByteArray env = qgetenv("QTC_DEBUGGER_TEST"); //qDebug() << "EXTENSIONS INITIALIZED:" << env; @@ -2472,11 +2475,6 @@ void DebuggerPlugin::extensionsInitialized() if (d->m_attachRemoteParameters.attachPid || !d->m_attachRemoteParameters.attachCore.isEmpty()) QTimer::singleShot(0, d, SLOT(attachCmdLine())); - - //qDebug() << "EXTENSIONS INITIALIZED"; - // Already done in initialize(). FIXME: Move stuff to here? - //readSettings(); - //d->m_uiSwitcher->initialize(); } QWidget *DebuggerPlugin::mainWindow() const diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index d642beeb84098f5c22d5fcb2c4daecce72edafcc..ae212ff8b44de9b4e1bec721c4193537946f7995 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -461,10 +461,9 @@ void DebuggerRunControl::start() } plugin()->activateDebugMode(); - - showMessage(tr("Starting debugger for tool chain '%1'...") - .arg(toolChainName(sp.toolChainType)), LogStatus); - showMessage(DebuggerSettings::instance()->dump(), LogDebug); + plugin()->showMessage(tr("Starting debugger for tool chain '%1'...") + .arg(toolChainName(sp.toolChainType)), StatusBar); + plugin()->showMessage(DebuggerSettings::instance()->dump(), LogDebug); engine()->startDebugger(this); } diff --git a/src/plugins/debugger/debuggeruiswitcher.cpp b/src/plugins/debugger/debuggeruiswitcher.cpp index 1e9a89ae1960162f0b85416b8acff263744f41b0..4c14a8af18df929ada838717c60d38cc12430859 100644 --- a/src/plugins/debugger/debuggeruiswitcher.cpp +++ b/src/plugins/debugger/debuggeruiswitcher.cpp @@ -332,6 +332,7 @@ QWidget *DebuggerUISwitcher::createMainWindow(Core::BaseMode *mode) { d->m_mainWindow = new DebuggerMainWindow(this); d->m_mainWindow->setDocumentMode(true); + d->m_mainWindow->setDockNestingEnabled(true); connect(d->m_mainWindow, SIGNAL(resetLayout()), this, SLOT(resetDebuggerLayout())); @@ -359,6 +360,15 @@ QWidget *DebuggerUISwitcher::createMainWindow(Core::BaseMode *mode) debugToolBarLayout->addStretch(); debugToolBarLayout->addWidget(new Utils::StyledSeparator); + QDockWidget *dock = new QDockWidget(tr("Debugger Toolbar")); + dock->setObjectName(QLatin1String("Debugger Toolbar")); + dock->setWidget(debugToolBar); + dock->setFeatures(QDockWidget::NoDockWidgetFeatures); + dock->setAllowedAreas(Qt::BottomDockWidgetArea); + dock->setTitleBarWidget(new QWidget(dock)); + d->m_mainWindow->addDockWidget(Qt::BottomDockWidgetArea, dock); + d->m_mainWindow->setToolBarDockWidget(dock); + QWidget *centralWidget = new QWidget; d->m_mainWindow->setCentralWidget(centralWidget); @@ -367,7 +377,6 @@ QWidget *DebuggerUISwitcher::createMainWindow(Core::BaseMode *mode) centralLayout->setMargin(0); centralLayout->setSpacing(0); centralLayout->addWidget(documentAndRightPane); - centralLayout->addWidget(debugToolBar); centralLayout->setStretch(0, 1); centralLayout->setStretch(1, 0); @@ -473,9 +482,12 @@ void DebuggerUISwitcher::initialize() emit dockArranged(QString()); readSettings(); - if (d->m_activeLanguage == -1) { - changeDebuggerUI(d->m_languages.first()); - } + const QString &activeLang = (d->m_activeLanguage != -1 + ? d->m_languages.at(d->m_activeLanguage) + : d->m_languages.first()); + d->m_activeLanguage = -1; // enforce refresh + changeDebuggerUI(activeLang); + hideInactiveWidgets(); d->m_mainWindow->setDockActionsVisible(false); } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 8b9fede408553df4675421c97afec899a737f1d9..3d1adf9fe67f56c463783649de8c11d4eb06e757 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -114,11 +114,8 @@ static const char winPythonVersionC[] = "python2.5"; #define CB(callback) &GdbEngine::callback, STRINGIFY(callback) -QByteArray GdbEngine::tooltipINameForExpression(const QByteArray &exp) +QByteArray GdbEngine::tooltipIName() { - // FIXME: 'exp' can contain illegal characters - //return "tooltip." + exp; - Q_UNUSED(exp) return "tooltip.x"; } @@ -970,10 +967,17 @@ void GdbEngine::handleResultRecord(GdbResponse *response) response->cookie = cmd.cookie; - if (response->resultClass != GdbResultError && - response->resultClass != ((cmd.flags & RunRequest) ? GdbResultRunning : + bool isExpectedResult = + response->resultClass == GdbResultError + || response->resultClass == ((cmd.flags & RunRequest) ? GdbResultRunning : (cmd.flags & ExitRequest) ? GdbResultExit : - GdbResultDone)) { + GdbResultDone) + // Happens with some incarnations of gdb 6.8 for "run to line" + || (response->resultClass == GdbResultDone && cmd.command == "continue") + // Happens with some incarnations of gdb 6.8 for "jump to line" + || (response->resultClass == GdbResultDone && cmd.command.startsWith("jump")); + + if (!isExpectedResult) { #ifdef Q_OS_WIN // Ignore spurious 'running' responses to 'attach' const bool warning = !(startParameters().startMode == AttachExternal @@ -987,13 +991,13 @@ void GdbEngine::handleResultRecord(GdbResponse *response) qWarning() << rsp << " AT " __FILE__ ":" STRINGIFY(__LINE__); showMessage(_(rsp)); } - } else { - if (cmd.callback) - (this->*cmd.callback)(*response); - else if (cmd.adapterCallback) - (m_gdbAdapter->*cmd.adapterCallback)(*response); } + if (cmd.callback) + (this->*cmd.callback)(*response); + else if (cmd.adapterCallback) + (m_gdbAdapter->*cmd.adapterCallback)(*response); + if (cmd.flags & RebuildWatchModel) { --m_pendingWatchRequests; PENDING_DEBUG(" WATCH" << cmd.command << "=>" << cmd.callbackName @@ -1089,48 +1093,53 @@ void GdbEngine::handleQuerySources(const GdbResponse &response) } } -#if 0 -void GdbEngine::handleExecJumpToLine(const GdbResponse &response) -{ - // FIXME: remove this special case as soon as 'jump' - // is supported by MI - // "&"jump /home/apoenitz/dev/work/test1/test1.cpp:242" - // ~"Continuing at 0x4058f3." - // ~"run1 (argc=1, argv=0x7fffb213a478) at test1.cpp:242" - // ~"242\t x *= 2;" - //109^done" - setState(InferiorStopped); - showStatusMessage(tr("Jumped. Stopped")); - QByteArray output = response.data.findChild("logstreamoutput").data(); - if (output.isEmpty()) - return; - int idx1 = output.indexOf(' ') + 1; - if (idx1 > 0) { - int idx2 = output.indexOf(':', idx1); - if (idx2 > 0) { - QString file = QString::fromLocal8Bit(output.mid(idx1, idx2 - idx1)); - int line = output.mid(idx2 + 1).toInt(); - gotoLocation(file, line, true); - } +void GdbEngine::handleExecuteJumpToLine(const GdbResponse &response) +{ + if (response.resultClass == GdbResultRunning) { + // All is fine. Waiting for the temporary breakpoint to be hit. + } else if (response.resultClass == GdbResultDone) { + // This happens on old gdb. Trigger the effect of a '*stopped'. + showStatusMessage(tr("Jumped. Stopped")); + setState(InferiorStopped); + handleStop1(response); + } +} + +void GdbEngine::handleExecuteRunToLine(const GdbResponse &response) +{ + if (response.resultClass == GdbResultRunning) { + // All is fine. Waiting for the temporary breakpoint to be hit. + } else if (response.resultClass == GdbResultDone) { + // This happens on old gdb. Trigger the effect of a '*stopped'. + // >&"continue\n" + // >~"Continuing.\n" + //>~"testArray () at ../simple/app.cpp:241\n" + //>~"241\t s[1] = \"b\";\n" + //>122^done + gotoLocation(m_targetFrame, true); + showStatusMessage(tr("Target line hit. Stopped")); + setState(InferiorStopped); + handleStop1(response); } } -#endif -//void GdbEngine::handleExecRunToFunction(const GdbResponse &response) -//{ -// // FIXME: remove this special case as soon as there's a real -// // reason given when the temporary breakpoint is hit. -// // reight now we get: -// // 14*stopped,thread-id="1",frame={addr="0x0000000000403ce4", -// // func="foo",args=[{name="str",value="@0x7fff0f450460"}], -// // file="main.cpp",fullname="/tmp/g/main.cpp",line="37"} -// QTC_ASSERT(state() == InferiorStopping, qDebug() << state()) -// setState(InferiorStopped); -// showStatusMessage(tr("Function reached. Stopped")); -// GdbMi frame = response.data.findChild("frame"); -// StackFrame f = parseStackFrame(frame, 0); -// gotoLocation(f, true); -//} +/* +void GdbEngine::handleExecuteRunToFunction(const GdbResponse &response) +{ + // FIXME: remove this special case as soon as there's a real + // reason given when the temporary breakpoint is hit. + // reight now we get: + // 14*stopped,thread-id="1",frame={addr="0x0000000000403ce4", + // func="foo",args=[{name="str",value="@0x7fff0f450460"}], + // file="main.cpp",fullname="/tmp/g/main.cpp",line="37"} + QTC_ASSERT(state() == InferiorStopping, qDebug() << state()) + setState(InferiorStopped); + showStatusMessage(tr("Function reached. Stopped")); + GdbMi frame = response.data.findChild("frame"); + StackFrame f = parseStackFrame(frame, 0); + gotoLocation(f, true); +} +*/ static bool isExitedReason(const QByteArray &reason) { @@ -1956,10 +1965,12 @@ void GdbEngine::executeRunToLine(const QString &fileName, int lineNumber) setState(InferiorRunningRequested); showStatusMessage(tr("Run to line %1 requested...").arg(lineNumber), 5000); #if 1 + m_targetFrame.file = fileName; + m_targetFrame.line = lineNumber; QByteArray loc = '"' + breakLocation(fileName).toLocal8Bit() + '"' + ':' + QByteArray::number(lineNumber); postCommand("tbreak " + loc); - postCommand("continue", RunRequest); + postCommand("continue", RunRequest, CB(handleExecuteRunToLine)); #else // Seems to jump to unpredicatable places. Observed in the manual // tests in the Foo::Foo() constructor with both gdb 6.8 and 7.1. @@ -1976,7 +1987,7 @@ void GdbEngine::executeRunToFunction(const QString &functionName) postCommand("-break-insert -t " + functionName.toLatin1()); continueInferiorInternal(); //setState(InferiorRunningRequested); - //postCommand("-exec-continue", handleExecRunToFunction); + //postCommand("-exec-continue", handleExecuteRunToFunction); showStatusMessage(tr("Run to function %1 requested...").arg(functionName), 5000); } @@ -1991,7 +2002,7 @@ void GdbEngine::executeJumpToLine(const QString &fileName, int lineNumber) + QByteArray::number(lineNumber); postCommand("tbreak " + loc); setState(InferiorRunningRequested); - postCommand("jump " + loc, RunRequest); + postCommand("jump " + loc, RunRequest, CB(handleExecuteJumpToLine)); // will produce something like // &"jump \"/home/apoenitz/dev/work/test1/test1.cpp\":242" // ~"Continuing at 0x4058f3." @@ -2002,7 +2013,7 @@ void GdbEngine::executeJumpToLine(const QString &fileName, int lineNumber) //setBreakpoint(); //postCommand("jump " + loc); #else - gotoLocation(frame, true); + gotoLocation(frame, true); setBreakpoint(fileName, lineNumber); setState(InferiorRunningRequested); postCommand("jump " + loc, RunRequest); @@ -2750,8 +2761,8 @@ void GdbEngine::selectThread(int index) threadsHandler()->setCurrentThread(index); Threads threads = threadsHandler()->threads(); QTC_ASSERT(index < threads.size(), return); - int id = threads.at(index).id; - showStatusMessage(tr("Retrieving data for stack view..."), 10000); + const int id = threads.at(index).id; + showStatusMessage(tr("Retrieving data for stack view thread 0x%1...").arg(id, 0, 16), 10000); postCommand("-thread-select " + QByteArray::number(id), CB(handleStackSelectThread)); } @@ -3204,10 +3215,17 @@ QPoint GdbEngine::m_toolTipPos; bool GdbEngine::showToolTip() { + QByteArray iname = tooltipIName(); + + if (!theDebuggerBoolSetting(UseToolTipsInMainEditor)) { + watchHandler()->removeData(iname); + return true; + } + WatchModel *model = watchHandler()->model(TooltipsWatch); - QByteArray iname = tooltipINameForExpression(m_toolTipExpression.toLatin1()); WatchItem *item = model->findItem(iname, model->rootItem()); if (!item) { + watchHandler()->removeData(iname); hideDebuggerToolTip(); return false; } @@ -3301,7 +3319,7 @@ void GdbEngine::setToolTipExpression(const QPoint &mousePos, WatchData toolTip; toolTip.exp = exp.toLatin1(); toolTip.name = exp; - toolTip.iname = tooltipINameForExpression(toolTip.exp); + toolTip.iname = tooltipIName(); watchHandler()->removeData(toolTip.iname); watchHandler()->insertData(toolTip); } diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index 3787b8202e145e52d2e1245c4c6ed49331fb96b7..43e847815d5e210ce149ec9c2844084472f35901 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -31,8 +31,10 @@ #define DEBUGGER_GDBENGINE_H #include "debuggerengine.h" + #include "gdbmi.h" #include "localgdbprocess.h" +#include "stackframe.h" #include "watchutils.h" #include <QtCore/QByteArray> @@ -303,7 +305,6 @@ private: ////////// Inferior Management ////////// virtual void executeRunToLine(const QString &fileName, int lineNumber); virtual void executeRunToFunction(const QString &functionName); -// void handleExecRunToFunction(const GdbResponse &response); virtual void executeJumpToLine(const QString &fileName, int lineNumber); virtual void executeReturn(); @@ -311,6 +312,9 @@ private: ////////// Inferior Management ////////// void handleExecuteStep(const GdbResponse &response); void handleExecuteNext(const GdbResponse &response); void handleExecuteReturn(const GdbResponse &response); + void handleExecuteJumpToLine(const GdbResponse &response); + void handleExecuteRunToLine(const GdbResponse &response); + //void handleExecuteRunToFunction(const GdbResponse &response); void maybeHandleInferiorPidChanged(const QString &pid); void handleInfoProc(const GdbResponse &response); @@ -520,7 +524,10 @@ private: ////////// View & Data Stuff ////////// static QString m_toolTipExpression; static QPoint m_toolTipPos; - static QByteArray tooltipINameForExpression(const QByteArray &exp); + static QByteArray tooltipIName(); + + // HACK: + StackFrame m_targetFrame; }; } // namespace Internal diff --git a/src/plugins/debugger/gdb/pythongdbengine.cpp b/src/plugins/debugger/gdb/pythongdbengine.cpp index a2d45dd178e30cb90bb3b684fd78708a8443adbc..b4bf14664e08e5a5c296808710f716340456fc96 100644 --- a/src/plugins/debugger/gdb/pythongdbengine.cpp +++ b/src/plugins/debugger/gdb/pythongdbengine.cpp @@ -61,8 +61,7 @@ void GdbEngine::updateLocalsPython(const QByteArray &varList) QByteArray watchers; if (!m_toolTipExpression.isEmpty()) - watchers += m_toolTipExpression.toLatin1() - + '#' + tooltipINameForExpression(m_toolTipExpression.toLatin1()); + watchers += m_toolTipExpression.toLatin1() + '#' + tooltipIName(); QHash<QByteArray, int> watcherNames = handler->watcherNames(); QHashIterator<QByteArray, int> it(watcherNames); diff --git a/src/plugins/debugger/gdb/symbian.cpp b/src/plugins/debugger/gdb/symbian.cpp index 9388fdf73389b865c8ae8913bd3e2004c4913a26..46ad97537c1f1b79b3789ba067ddd22afa10b32a 100644 --- a/src/plugins/debugger/gdb/symbian.cpp +++ b/src/plugins/debugger/gdb/symbian.cpp @@ -28,6 +28,8 @@ **************************************************************************/ #include "symbian.h" +#include "registerhandler.h" +#include "threadshandler.h" #include <trkutils.h> #include <utils/qtcassert.h> @@ -118,6 +120,68 @@ QByteArray dumpRegister(uint n, uint value) return ba; } +/////////////////////////////////////////////////////////////////////////// +// +// Thread +// +/////////////////////////////////////////////////////////////////////////// + +Thread::Thread(unsigned theId) : id(theId) +{ + resetRegisters(); +} + +void Thread::resetRegisters() +{ + qFill(registers, registers + RegisterCount, uint(0)); + registerValid = false; +} + +QByteArray Thread::gdbReportRegisters() const +{ + QByteArray ba; + for (int i = 0; i < 16; ++i) { + const uint reg = trk::swapEndian(registers[i]); + ba += trk::hexNumber(reg, 8); + } + return ba; +} + +QByteArray Thread::gdbRegisterLogMessage(bool verbose) const +{ + QByteArray logMsg = "REGISTER CONTENTS: (Thread 0x"; + logMsg += QByteArray::number(id, 16); + logMsg += " ) "; + if (verbose) { + for (int i = 0; i < RegisterCount; ++i) { + logMsg += dumpRegister(i, registers[i]); + logMsg += ' '; + } + } + return logMsg; +} + +QByteArray Thread::gdbReportSingleRegister(unsigned i) const +{ + if (i == RegisterPSGdb) + i = RegisterPSTrk; + if (i >= RegisterCount) + return QByteArray("0000"); // Unknown + QByteArray ba; + appendInt(&ba, registers[i], trk::LittleEndian); + return ba.toHex(); +} + +QByteArray Thread::gdbSingleRegisterLogMessage(unsigned i) const +{ + if (i == RegisterPSGdb) + i = RegisterPSTrk; + if (i >= RegisterCount) + return QByteArray("Read single unknown register #") + QByteArray::number(i); + QByteArray logMsg = "Read Register "; + logMsg += dumpRegister(i, registers[i]); + return logMsg; +} /////////////////////////////////////////////////////////////////////////// // @@ -125,6 +189,12 @@ QByteArray dumpRegister(uint n, uint value) // /////////////////////////////////////////////////////////////////////////// +Snapshot::Snapshot() +{ + reset(); + threadInfo.reserve(10); +} + void Snapshot::reset() { for (Memory::Iterator it = memory.begin(); it != memory.end(); ++it) { @@ -134,20 +204,30 @@ void Snapshot::reset() it = memory.erase(it); } } - for (int i = 0; i < RegisterCount; ++i) - registers[i] = 0; - registerValid = false; + + const int threadCount = threadInfo.size(); + for (int i =0; i < threadCount; i++) { + threadInfo[i].resetRegisters(); + threadInfo[i].state.clear(); + } + wantedMemory = MemoryRange(); lineFromAddress = 0; lineToAddress = 0; } -void Snapshot::fullReset() +void Snapshot::resetMemory() { memory.clear(); reset(); } +void Snapshot::fullReset() +{ + threadInfo.clear(); + resetMemory(); +} + void Snapshot::insertMemory(const MemoryRange &range, const QByteArray &ba) { QTC_ASSERT(range.size() == uint(ba.size()), @@ -189,14 +269,19 @@ QString Snapshot::toString() const typedef QMap<MemoryRange, QByteArray>::const_iterator MemCacheConstIt; QString rc; QTextStream str(&rc); - str << "Register valid " << registerValid << ' '; - for (int i = 0; i < RegisterCount; i++) { - if (i) - str << ", "; - str << " R" << i << "=0x"; - str.setIntegerBase(16); - str << registers[i]; - str.setIntegerBase(10); + foreach(const Thread &thread, threadInfo) { + str << " Thread " << thread.id << ' ' << thread.state + << " Register valid " << thread.registerValid << ' '; + if (thread.registerValid) { + for (int i = 0; i < RegisterCount; i++) { + if (i) + str << ", "; + str << " R" << i << "=0x"; + str.setIntegerBase(16); + str << thread.registers[i]; + str.setIntegerBase(10); + } + } } str << '\n'; // For next step. @@ -210,6 +295,301 @@ QString Snapshot::toString() const return rc; } +void Snapshot::addThread(uint id) +{ + if (!id || id == uint(-1)) { + qWarning("Cowardly refusing to add thread %d", id); + return; + } + + const int index = indexOfThread(id); + if (index == -1) { + threadInfo.push_back(Thread(id)); + } else { + threadInfo[index].resetRegisters(); + qWarning("Attempt to re-add existing thread %d", id); + } +} + +void Snapshot::removeThread(uint id) +{ + const int index = indexOfThread(id); + if (index != -1) { + threadInfo.remove(index); + } else { + qWarning("Attempt to remove non-existing thread %d", id); + } +} + +int Snapshot::indexOfThread(uint id) const +{ + const int count = threadInfo.size(); + for (int i = 0; i < count; i++) + if (threadInfo.at(i).id == id) + return i; + return -1; +} + +uint *Snapshot::registers(uint threadId) +{ + const int index = indexOfThread(threadId); + QTC_ASSERT(index != -1, { qWarning("No such thread %d", threadId); return 0; } ); + return threadInfo[index].registers; +} + +const uint *Snapshot::registers(uint threadId) const +{ + const int index = indexOfThread(threadId); + QTC_ASSERT(index != -1, return 0; ); + return threadInfo.at(index).registers; +} + +uint Snapshot::registerValue(uint threadId, uint index) +{ + if (const uint *regs = registers(threadId)) + return regs[index]; + return 0; +} + +void Snapshot::setRegisterValue(uint threadId, uint index, uint value) +{ + uint *regs = registers(threadId); + QTC_ASSERT(regs, return; ); + regs[index] = value; +} + +bool Snapshot::registersValid(uint threadId) const +{ + const int index = indexOfThread(threadId); + return index != -1 ? threadInfo.at(index).registerValid : false; +} + +void Snapshot::setRegistersValid(uint threadId, bool e) +{ + const int index = indexOfThread(threadId); + QTC_ASSERT(index != -1, return; ); + threadInfo[index].registerValid = e; +} + +void Snapshot::setThreadState(uint threadId, const QString &state) +{ + const int index = indexOfThread(threadId); + QTC_ASSERT(index != -1, return; ); + threadInfo[index].state = state; +} + +QByteArray Snapshot::gdbQsThreadInfo() const +{ + // FIXME: Limit packet length by using qsThreadInfo packages ('m', ..'l') + QByteArray response(1, 'l'); + const int count = threadInfo.size(); + for (int i = 0; i < count; i++) { + if (i) + response += ','; + response += trk::hexNumber(threadInfo.at(i).id); + } + return response; +} + +// $qThreadExtraInfo,1f9#55 +QByteArray Snapshot::gdbQThreadExtraInfo(const QByteArray &cmd) const +{ + const int pos = cmd.indexOf(','); + if (pos != 1) { + const uint threadId = cmd.mid(pos + 1).toUInt(0, 16); + const int threadIndex = indexOfThread(threadId); + if (threadIndex != -1 && !threadInfo.at(threadIndex).state.isEmpty()) + return threadInfo.at(threadIndex).state.toAscii().toHex(); + } + return QByteArray("Nothing special").toHex(); +} + +static void gdbAppendRegister(QByteArray *ba, uint regno, uint value) +{ + ba->append(trk::hexNumber(regno, 2)); + ba->append(':'); + ba->append(trk::hexNumber(trk::swapEndian(value), 8)); + ba->append(';'); +} + +QByteArray Snapshot::gdbStopMessage(uint threadId, bool reportThreadId) const +{ + QByteArray ba = "T05"; + if (reportThreadId) { + ba += "thread:"; + ba += trk::hexNumber(threadId, 3); + ba += ';'; + } + const int threadIndex = indexOfThread(threadId); + QTC_ASSERT(threadIndex != -1, return QByteArray(); ); + const Thread &thread = threadInfo.at(threadIndex); + for (int i = 0; i < 16; ++i) + gdbAppendRegister(&ba, i, thread.registers[i]); + // FIXME: those are not understood by gdb 6.4 + //for (int i = 16; i < 25; ++i) + // appendRegister(&ba, i, 0x0); + gdbAppendRegister(&ba, RegisterPSGdb, thread.registers[RegisterPSTrk]); + return ba; +} + +// Format log message for memory access with some smartness about registers +QByteArray Snapshot::memoryReadLogMessage(uint addr, uint threadId, bool verbose, const QByteArray &ba) const +{ + QByteArray logMsg = "memory contents"; + const uint *regs = registers(threadId); + if (verbose && regs) { + logMsg += " addr: " + trk::hexxNumber(addr); + // indicate dereferencing of registers + if (ba.size() == 4) { + if (addr == regs[RegisterPC]) { + logMsg += "[PC]"; + } else if (addr == regs[RegisterPSTrk]) { + logMsg += "[PSTrk]"; + } else if (addr == regs[RegisterSP]) { + logMsg += "[SP]"; + } else if (addr == regs[RegisterLR]) { + logMsg += "[LR]"; + } else if (addr > regs[RegisterSP] && + (addr - regs[RegisterSP]) < 10240) { + logMsg += "[SP+"; // Stack area ...stack seems to be top-down + logMsg += QByteArray::number(addr - regs[RegisterSP]); + logMsg += ']'; + } + } + logMsg += " length "; + logMsg += QByteArray::number(ba.size()); + logMsg += " :"; + logMsg += trk::stringFromArray(ba, 16).toAscii(); + } + return logMsg; +} + +void Snapshot::syncRegisters(uint threadId, RegisterHandler *handler) const +{ + // Take advantage of direct access to cached register values. + const int threadIndex = indexOfThread(threadId); + QTC_ASSERT(threadIndex != -1, return ;); + const Thread &thread = threadInfo.at(threadIndex); + QTC_ASSERT(thread.registerValid, return ;); + + Registers debuggerRegisters = handler->registers(); + QTC_ASSERT(debuggerRegisters.size() >= RegisterPSGdb, + qDebug() << "HAVE: " << debuggerRegisters.size(); return); + + bool changed = false; + for (int i = 0; i < RegisterCount; ++i) { + const int gdbIndex = i == RegisterPSTrk ? int(RegisterPSGdb) : i; + Register ® = debuggerRegisters[gdbIndex]; + const QString value = trk::hexxNumber(thread.registers[i]); + reg.changed = (value != reg.value); + if (reg.changed) { + reg.value = value; + changed = true; + } + } + if (changed) + handler->setRegisters(debuggerRegisters); +} + +void Snapshot::parseGdbStepRange(const QByteArray &cmd, bool so) +{ + const int pos = cmd.indexOf(',', 8); + lineFromAddress = cmd.mid(8, pos - 8).toUInt(0, 16); + lineToAddress = cmd.mid(pos + 1).toUInt(0, 16); + stepOver = so; +} + +void Snapshot::syncThreads(ThreadsHandler *handler) const +{ + // Take advantage of direct access to cached register values. + Threads threads; + const unsigned count = threadInfo.size(); + for (unsigned t = 0; t < count; t++) { + ThreadData thread(t + 1); // Fake gdb thread ids starting from 1 + thread.targetId = QString::number(threadInfo.at(t).id); + thread.state = threadInfo.at(t).state; + threads.append(thread); + } + handler->setThreads(threads); +} + +// Answer to gdb's 'qSupported' query: +// Increase buffer size for qXfer::libraries XML response +const char *gdbQSupported = + "PacketSize=20000;" + "QPassSignals+;" + "QStartNoAckMode+;" + "qXfer:libraries:read+;" + // "qXfer:auxv:read+;" + "qXfer:features:read+"; + +// Answer to gdb "qXfer:features:read:target.xml:" request +// "l<target><architecture>symbianelf</architecture></target>" +// "l<target><architecture>arm-none-symbianelf</architecture></target>" + +const char *gdbArchitectureXml = "l<target><architecture>arm</architecture></target>"; + +QVector<QByteArray> gdbStartupSequence() +{ + QVector<QByteArray> s; + s.reserve(10); + s.push_back(QByteArray("set breakpoint always-inserted on")); + s.push_back(QByteArray("set breakpoint auto-hw on")); + s.push_back(QByteArray("set trust-readonly-sections on")); // No difference? + s.push_back(QByteArray("set displaced-stepping on")); // No difference? + s.push_back(QByteArray("set mem inaccessible-by-default")); + s.push_back(QByteArray("mem 0x00400000 0x70000000 cache")); + s.push_back(QByteArray("mem 0x70000000 0x80000000 cache ro")); + // FIXME: replace with stack-cache for newer gdb? + s.push_back(QByteArray("set remotecache on")); // "info dcache" to check + return s; +} + } // namespace Symbian + +// Generic gdb server helpers: Read address/length off a memory +// command like 'm845,455','X845,455' +QPair<quint64, unsigned> parseGdbReadMemoryRequest(const QByteArray &cmd) +{ + QPair<quint64, unsigned> rc(0, 0); + const int pos = cmd.indexOf(','); + if (pos == -1) + return rc; + bool ok; + rc.first = cmd.mid(1, pos - 1).toULongLong(&ok, 16); + if (!ok) + return rc; + rc.second = cmd.mid(pos + 1).toUInt(&ok, 16); + if (!ok) + rc.first = 0; + return rc; +} + +// Generic gdb server helpers: Parse 'register write' ('P') request +// return register number/value +QPair<uint, uint> parseGdbWriteRegisterWriteRequest(const QByteArray &cmd) +{ + const int pos = cmd.indexOf('='); + const QByteArray regName = cmd.mid(1, pos - 1); + const QByteArray valueName = cmd.mid(pos + 1); + bool ok = false; + const uint registerNumber = regName.toUInt(&ok, 16); + const uint value = trk::swapEndian(valueName.toUInt(&ok, 16)); + return QPair<uint, uint>(registerNumber, value); +} + +// Generic gdb server helpers: Parse 'set breakpoint' ('Z0') request +// return address/length +QPair<quint64, unsigned> parseGdbSetBreakpointRequest(const QByteArray &cmd) +{ + // $Z0,786a4ccc,4#99 + const int pos = cmd.lastIndexOf(','); + bool ok1 = false; + bool ok2 = false; + const quint64 addr = cmd.mid(3, pos - 3).toULongLong(&ok1, 16); + const uint len = cmd.mid(pos + 1).toUInt(&ok2, 16); + return ok1 && ok2 ? QPair<quint64, unsigned>(addr, len) : QPair<quint64, unsigned>(0, 0); +} + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/gdb/symbian.h b/src/plugins/debugger/gdb/symbian.h index 63e3c4e48f1a2fb186822787af440f1de4d28d50..74f0aaeba8ed3738d50d086173bf82c579430d35 100644 --- a/src/plugins/debugger/gdb/symbian.h +++ b/src/plugins/debugger/gdb/symbian.h @@ -33,6 +33,8 @@ #include <QtCore/QMap> #include <QtCore/QByteArray> #include <QtCore/QMetaType> +#include <QtCore/QVector> +#include <QtCore/QPair> QT_BEGIN_NAMESPACE class QDebug; @@ -48,7 +50,8 @@ QT_END_NAMESPACE namespace Debugger { namespace Internal { - +class RegisterHandler; +class ThreadsHandler; struct GdbResult { QByteArray data; }; @@ -100,17 +103,62 @@ inline bool isReadOnly(const MemoryRange &mr) return mr.from >= 0x70000000 && mr.to < 0x80000000; } +// Snapshot thread with cached registers +struct Thread { + explicit Thread(unsigned id = 0); + + void resetRegisters(); + // Gdb helpers for reporting values + QByteArray gdbReportRegisters() const; + QByteArray gdbRegisterLogMessage(bool verbose) const; + QByteArray gdbReportSingleRegister(unsigned i) const; + QByteArray gdbSingleRegisterLogMessage(unsigned i) const; + + uint id; + uint registers[RegisterCount]; + bool registerValid; + QString state; // Stop reason, for qsThreadExtraInfo +}; + struct Snapshot { - Snapshot() { reset(); } + Snapshot(); - void reset(); // Leaves read-only memory cache alive. - void fullReset(); // Also removes read-only memory cache. + void reset(); // Leaves read-only memory cache and threads alive. + void resetMemory(); // Completely clears memory, leaves threads alive. + void fullReset(); // Clear everything. void insertMemory(const MemoryRange &range, const QByteArray &ba); QString toString() const; - uint registers[RegisterCount]; - bool registerValid; + // Helpers to format gdb query packets + QByteArray gdbQsThreadInfo() const; + QByteArray gdbQThreadExtraInfo(const QByteArray &cmd) const; + // Format a gdb T05 stop message with thread and register set + QByteArray gdbStopMessage(uint threadId, bool reportThreadId) const; + // Format a log message for memory access with some smartness about registers + QByteArray memoryReadLogMessage(uint addr, uint threadId, bool verbose, const QByteArray &ba) const; + // Gdb command parse helpers: 'salnext' + void parseGdbStepRange(const QByteArray &cmd, bool stepOver); + + void addThread(uint threadId); + void removeThread(uint threadId); + int indexOfThread(uint threadId) const; + // Access registers by thread + const uint *registers(uint threadId) const; + uint *registers(uint threadId); + uint registerValue(uint threadId, uint index); + void setRegisterValue(uint threadId, uint index, uint value); + bool registersValid(uint threadId) const; + void setRegistersValid(uint threadId, bool e); + void setThreadState(uint threadId, const QString&); + + // Debugger view helpers: Synchronize registers of thread with register handler. + void syncRegisters(uint threadId, RegisterHandler *handler) const; + // Debugger view helpers: Synchronize threads with threads handler. + void syncThreads(ThreadsHandler *handler) const; + + QVector<Thread> threadInfo; + typedef QMap<MemoryRange, QByteArray> Memory; Memory memory; @@ -136,7 +184,21 @@ struct Breakpoint CodeMode mode; }; +// Gdb helpers +extern const char *gdbQSupported; +extern const char *gdbArchitectureXml; + +QVector<QByteArray> gdbStartupSequence(); + } // namespace Symbian + +// Generic gdb server helpers: read 'm','X' commands. +QPair<quint64, unsigned> parseGdbReadMemoryRequest(const QByteArray &cmd); +// Parse 'register write' ('P') request, return register number/value +QPair<uint, uint> parseGdbWriteRegisterWriteRequest(const QByteArray &cmd); +// Parse 'set breakpoint' ('Z0') request, return address/length +QPair<quint64, unsigned> parseGdbSetBreakpointRequest(const QByteArray &cmd); + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp index e6ab8354933d65046734c464b50731c75e07520c..380e3043731cf3a6f03c9fd5500ff854d9957a38 100644 --- a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp +++ b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp @@ -62,14 +62,6 @@ enum { debug = 0 }; -static void appendRegister(QByteArray *ba, uint regno, uint value) -{ - ba->append(trk::hexNumber(regno, 2)); - ba->append(':'); - ba->append(trk::hexNumber(trk::swapEndian(value), 8)); - ba->append(';'); -} - // Register names used by the 'SimpleRegister' service static const char* tcfTrkSimpleRegisterNamesC[] = {"R0", "R1", "R2", "R3", @@ -100,7 +92,15 @@ static inline QString startMsg(const trk::Session &session) * gdb answer to conntect remote, inferiorStartPrepared() is emitted. * - Engine sets up breakpoints,etc and calls inferiorStartPhase2(), which * resumes the suspended TCF process via gdb 'continue'. - */ + * Thread handling (30.06.2010): + * TRK does not report thread creation/termination. So, if we receive + * a stop in a different thread, we store an additional thread in snapshot. + * When continuing in sendTrkContinue(), we delete this thread, since we cannot + * know whether it will exist at the next stop. + * Also note that threads continue running in Symbian even if one crashes. + * TODO: - Maybe thread reporting will be improved in TCF TRK? + * - Stop all threads once one stops? + * - Breakpoints do not trigger in threads other than the main thread. */ TcfTrkGdbAdapter::TcfTrkGdbAdapter(GdbEngine *engine) : AbstractGdbAdapter(engine), @@ -190,6 +190,7 @@ uint TcfTrkGdbAdapter::gdbServerPort() const void TcfTrkGdbAdapter::handleTcfTrkRunControlModuleLoadContextSuspendedEvent(const tcftrk::TcfTrkRunControlModuleLoadContextSuspendedEvent &se) { + m_snapshot.resetMemory(); const tcftrk::ModuleLoadEventInfo &minfo = se.info(); // Register in session, keep modules and libraries in sync. const QString moduleName = QString::fromUtf8(minfo.name); @@ -218,7 +219,6 @@ void TcfTrkGdbAdapter::handleTcfTrkRunControlModuleLoadContextSuspendedEvent(con // gdb connect to remote target and resume in startInferior2(), if (m_firstModuleResumableEvent) { m_firstModuleResumableEvent = false; - m_tcfProcessId = se.id(); m_session.codeseg = minfo.codeAddress; m_session.dataseg = minfo.dataAddress; logMessage(startMsg(m_session)); @@ -233,17 +233,8 @@ void TcfTrkGdbAdapter::handleTcfTrkRunControlModuleLoadContextSuspendedEvent(con // + QByteArray::number(m_session.codeseg)); m_engine->postCommand("symbol-file \"" + symbolFile + "\""); } - m_engine->postCommand("set breakpoint always-inserted on"); - m_engine->postCommand("set breakpoint auto-hw on"); - m_engine->postCommand("set trust-readonly-sections on"); // No difference? - m_engine->postCommand("set displaced-stepping on"); // No difference? - //m_engine->postCommand("set remotelogfile /tmp/gdb-remotelog"); - //m_engine->postCommand("set debug remote 1"); // FIXME: Make an option. - m_engine->postCommand("set mem inaccessible-by-default"); - m_engine->postCommand("mem 0x00400000 0x70000000 cache"); - m_engine->postCommand("mem 0x70000000 0x80000000 cache ro"); - // FIXME: replace with stack-cache for newer gdb? - m_engine->postCommand("set remotecache on"); // "info dcache" to check + foreach(const QByteArray &s, Symbian::gdbStartupSequence()) + m_engine->postCommand(s); m_engine->postCommand("target remote " + gdbServerName().toLatin1(), CB(handleTargetRemote)); if (debug) @@ -272,28 +263,27 @@ void TcfTrkGdbAdapter::handleTargetRemote(const GdbResponse &record) void TcfTrkGdbAdapter::tcftrkEvent(const tcftrk::TcfTrkEvent &e) { + if (debug) + qDebug() << e.toString() << m_session.toString() << m_snapshot.toString(); logMessage(e.toString()); switch (e.type()) { case tcftrk::TcfTrkEvent::LocatorHello: startGdb(); // Commands are only accepted after hello break; - case tcftrk::TcfTrkEvent::RunControlModuleLoadSuspended: + case tcftrk::TcfTrkEvent::RunControlModuleLoadSuspended: // A module was loaded handleTcfTrkRunControlModuleLoadContextSuspendedEvent(static_cast<const tcftrk::TcfTrkRunControlModuleLoadContextSuspendedEvent &>(e)); break; - case tcftrk::TcfTrkEvent::RunControlContextAdded: + case tcftrk::TcfTrkEvent::RunControlContextAdded: // Thread/process added foreach(const tcftrk::RunControlContext &rc, static_cast<const tcftrk::TcfTrkRunControlContextAddedEvent &>(e).contexts()) - if (rc.type() == tcftrk::RunControlContext::Thread) { - m_session.threads.push_back(rc.threadId()); - if (m_session.tid == 0) - m_session.tid = rc.threadId(); - } + if (rc.type() == tcftrk::RunControlContext::Thread) + addThread(rc.threadId()); break; - case tcftrk::TcfTrkEvent::RunControlContextRemoved: + case tcftrk::TcfTrkEvent::RunControlContextRemoved: // Thread/process removed foreach(const QByteArray &id, static_cast<const tcftrk::TcfTrkRunControlContextRemovedEvent &>(e).ids()) switch (tcftrk::RunControlContext::typeFromTcfId(id)) { case tcftrk::RunControlContext::Thread: - m_session.threads.removeAll(tcftrk::RunControlContext::threadIdFromTcdfId(id)); + m_snapshot.removeThread(tcftrk::RunControlContext::threadIdFromTcdfId(id)); break; case tcftrk::RunControlContext::Process: sendGdbServerMessage("W00", "Process exited"); @@ -301,15 +291,23 @@ void TcfTrkGdbAdapter::tcftrkEvent(const tcftrk::TcfTrkEvent &e) } break; case tcftrk::TcfTrkEvent::RunControlSuspended: { + // Thread suspended/stopped const tcftrk::TcfTrkRunControlContextSuspendedEvent &se = static_cast<const tcftrk::TcfTrkRunControlContextSuspendedEvent &>(e); - showMessage(QString::fromLatin1("RESET SNAPSHOT (NOTIFY STOPPED: '%1')").arg(QString::fromLatin1(se.reasonID()))); + const unsigned threadId = tcftrk::RunControlContext::threadIdFromTcdfId(se.id()); + const QString reason = QString::fromUtf8(se.reasonID()); + showMessage(QString::fromLatin1("Reset snapshot (Thread 0x%1 stopped: '%2')"). + arg(threadId, 0, 16).arg(reason)); + // Stopped in a new thread: Add. m_snapshot.reset(); + m_session.tid = threadId; + if (m_snapshot.indexOfThread(threadId) == -1) + m_snapshot.addThread(threadId); + m_snapshot.setThreadState(threadId, reason); // Update registers first, then report stopped m_running = false; m_trkDevice->sendRegistersGetMRangeCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleAndReportReadRegistersAfterStop), - m_tcfProcessId, 0, + currentThreadContextId(), 0, Symbian::RegisterCount); - // TODO:mov } break; default: @@ -499,23 +497,6 @@ static QByteArray msgStepRangeReceived(unsigned from, unsigned to, bool over) return rc; } -// Read address/length off a memory command like m,X -static QPair<quint64, unsigned> readMemoryAddressLength(const QByteArray &cmd) -{ - QPair<quint64, unsigned> rc(0, 0); - const int pos = cmd.indexOf(','); - if (pos == -1) - return rc; - bool ok; - rc.first = cmd.mid(1, pos - 1).toULongLong(&ok, 16); - if (!ok) - return rc; - rc.second = cmd.mid(pos + 1).toUInt(&ok, 16); - if (!ok) - rc.first = 0; - return rc; -} - void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) { if (debug) @@ -552,12 +533,14 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) logMessage(msgGdbPacket(QLatin1String("Continue with signal"))); // C sig[;addr] Continue with signal sig (hex signal number) //Reply: See section D.3 Stop Reply Packets, for the reply specifications. - sendGdbServerAck(); bool ok = false; const uint signalNumber = cmd.mid(1).toUInt(&ok, 16); - m_trkDevice->sendRunControlResumeCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleSignalContinue), - mainThreadContextId(), - QVariant(signalNumber)); + //TODO: Meaning of the message is not clear. + sendGdbServerAck(); + logMessage(QString::fromLatin1("Not implemented 'Continue with signal' %1: ").arg(signalNumber), LogWarning); + sendGdbServerMessage("O" + QByteArray("Console output").toHex()); + sendGdbServerMessage("W81"); // "Process exited with result 1 + sendTrkContinue(); } else if (cmd.startsWith('D')) { @@ -567,14 +550,14 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd == "g") { // Read general registers. - if (m_snapshot.registerValid) { + if (m_snapshot.registersValid(m_session.tid)) { logMessage(msgGdbPacket(QLatin1String("Read registers"))); sendGdbServerAck(); reportRegisters(); } else { sendGdbServerAck(); m_trkDevice->sendRegistersGetMRangeCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleAndReportReadRegisters), - m_tcfProcessId, 0, + currentThreadContextId(), 0, Symbian::RegisterCount); } } @@ -582,50 +565,34 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd == "gg") { // Force re-reading general registers for debugging purpose. sendGdbServerAck(); - m_snapshot.registerValid = false; + m_snapshot.setRegistersValid(m_session.tid, false); m_trkDevice->sendRegistersGetMRangeCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleAndReportReadRegisters), - m_tcfProcessId, 0, + currentThreadContextId(), 0, Symbian::RegisterCount); } else if (cmd.startsWith("salstep,")) { // Receive address range for current line for future use when stepping. sendGdbServerAck(); - int pos = cmd.indexOf(',', 8); - m_snapshot.lineFromAddress = cmd.mid(8, pos - 8).toUInt(0, 16); - m_snapshot.lineToAddress = cmd.mid(pos + 1).toUInt(0, 16); - m_snapshot.stepOver = false; + m_snapshot.parseGdbStepRange(cmd, false); sendGdbServerMessage("", msgStepRangeReceived(m_snapshot.lineFromAddress, m_snapshot.lineToAddress, m_snapshot.stepOver)); } else if (cmd.startsWith("salnext,")) { // Receive address range for current line for future use when stepping. sendGdbServerAck(); - const int pos = cmd.indexOf(',', 8); - m_snapshot.lineFromAddress = cmd.mid(8, pos - 8).toUInt(0, 16); - m_snapshot.lineToAddress = cmd.mid(pos + 1).toUInt(0, 16); - m_snapshot.stepOver = true; + m_snapshot.parseGdbStepRange(cmd, true); sendGdbServerMessage("", msgStepRangeReceived(m_snapshot.lineFromAddress, m_snapshot.lineToAddress, m_snapshot.stepOver)); } else if (cmd.startsWith("Hc")) { - logMessage(msgGdbPacket(QLatin1String("Set thread & continue"))); - // Set thread for subsequent operations (`m', `M', `g', `G', et.al.). - // for step and continue operations - //$Hc-1#09 sendGdbServerAck(); - sendGdbServerMessage("OK", "Set current thread for step & continue"); + gdbSetCurrentThread(cmd, "Set current thread for step & continue "); } else if (cmd.startsWith("Hg")) { - logMessage(msgGdbPacket(QLatin1String("Set thread"))); - // Set thread for subsequent operations (`m', `M', `g', `G', et.al.). - // for 'other operations. 0 - any thread - //$Hg0#df sendGdbServerAck(); - m_session.currentThread = cmd.mid(2).toUInt(0, 16); - sendGdbServerMessage("OK", "Set current thread " - + QByteArray::number(m_session.currentThread)); + gdbSetCurrentThread(cmd, "Set current thread "); } else if (cmd == "k" || cmd.startsWith("vKill")) { @@ -639,7 +606,7 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) logMessage(msgGdbPacket(QLatin1String("Read memory"))); // m addr,length sendGdbServerAck(); - const QPair<quint64, unsigned> addrLength = readMemoryAddressLength(cmd); + const QPair<quint64, unsigned> addrLength = parseGdbReadMemoryRequest(cmd); if (addrLength.first && addrLength.second) { readMemory(addrLength.first, addrLength.second, m_bufferedMemoryRead); } else { @@ -647,13 +614,13 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) } } - else if (cmd.startsWith('X')) { + else if (cmd.startsWith('X')) { // Write memory const int dataPos = cmd.indexOf(':'); if (dataPos == -1) { sendGdbServerMessage("E20", "Error (colon expected) " + cmd); return; } - const QPair<quint64, unsigned> addrLength = readMemoryAddressLength(cmd.left(dataPos)); + const QPair<quint64, unsigned> addrLength = parseGdbReadMemoryRequest(cmd.left(dataPos)); if (addrLength.first == 0) { sendGdbServerMessage("E20", "Error (address = 0) " + cmd); return; @@ -684,27 +651,15 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) sendGdbServerAck(); bool ok = false; const uint registerNumber = cmd.mid(1).toUInt(&ok, 16); - if (m_snapshot.registerValid) { - QByteArray logMsg = "Read Register"; - if (registerNumber == RegisterPSGdb) { - QByteArray ba; - appendInt(&ba, m_snapshot.registers[RegisterPSTrk], trk::LittleEndian); - logMsg += dumpRegister(registerNumber, m_snapshot.registers[RegisterPSTrk]); - sendGdbServerMessage(ba.toHex(), logMsg); - } else if (registerNumber < 16) { - QByteArray ba; - appendInt(&ba, m_snapshot.registers[registerNumber], trk::LittleEndian); - logMsg += dumpRegister(registerNumber, m_snapshot.registers[registerNumber]); - sendGdbServerMessage(ba.toHex(), logMsg); - } else { - sendGdbServerMessage("0000", "read single unknown register #" - + QByteArray::number(registerNumber)); - //sendGdbServerMessage("E01", "read single unknown register"); - } + const int threadIndex = m_snapshot.indexOfThread(m_session.tid); + QTC_ASSERT(threadIndex != -1, return) + const Symbian::Thread &thread = m_snapshot.threadInfo.at(threadIndex); + if (thread.registerValid) { + sendGdbServerMessage(thread.gdbReportSingleRegister(registerNumber), thread.gdbSingleRegisterLogMessage(registerNumber)); } else { //qDebug() << "Fetching single register"; m_trkDevice->sendRegistersGetMRangeCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleAndReportReadRegistersAfterStop), - m_tcfProcessId, registerNumber, 1); + currentThreadContextId(), registerNumber, 1); } } @@ -712,17 +667,13 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) logMessage(msgGdbPacket(QLatin1String("write register"))); // $Pe=70f96678#d3 sendGdbServerAck(); - int pos = cmd.indexOf('='); - QByteArray regName = cmd.mid(1, pos - 1); - QByteArray valueName = cmd.mid(pos + 1); - bool ok = false; - const uint registerNumber = regName.toUInt(&ok, 16); - const uint value = trk::swapEndian(valueName.toUInt(&ok, 16)); + const QPair<uint, uint> regnumValue = parseGdbWriteRegisterWriteRequest(cmd); // FIXME: Assume all goes well. - m_snapshot.registers[registerNumber] = value; - logMessage(QString::fromLatin1("Setting register #%1 to 0x%2").arg(registerNumber).arg(value, 0, 16)); + m_snapshot.setRegisterValue(m_session.tid, regnumValue.first, regnumValue.second); + logMessage(QString::fromLatin1("Setting register #%1 to 0x%2").arg(regnumValue.first).arg(regnumValue.second, 0, 16)); m_trkDevice->sendRegistersSetCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleWriteRegister), - m_tcfProcessId, registerNumber, value, QVariant(registerNumber)); + currentThreadContextId(), regnumValue.first, regnumValue.second, + QVariant(regnumValue.first)); // Note that App TRK refuses to write registers 13 and 14 } @@ -738,9 +689,8 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) logMessage(msgGdbPacket(QLatin1String("query thread id"))); // Return the current thread ID //$qC#b4 - QTC_ASSERT(!m_session.threads.isEmpty(), return) sendGdbServerAck(); - sendGdbServerMessage("QC" + QByteArray::number(m_session.threads.front(), 16)); + sendGdbServerMessage("QC" + QByteArray::number(m_session.tid, 16)); } else if (cmd.startsWith("qSupported")) { @@ -748,19 +698,13 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) //$qSupported:multiprocess+#c6 //logMessage("Handling 'qSupported'"); sendGdbServerAck(); - sendGdbServerMessage( - "PacketSize=7cf;" - "QPassSignals+;" - "QStartNoAckMode+;" - "qXfer:libraries:read+;" - //"qXfer:auxv:read+;" - "qXfer:features:read+"); + sendGdbServerMessage(Symbian::gdbQSupported); } else if (cmd.startsWith("qThreadExtraInfo")) { // $qThreadExtraInfo,1f9#55 sendGdbServerAck(); - sendGdbServerMessage(QByteArray("Nothing special").toHex()); + sendGdbServerMessage(m_snapshot.gdbQThreadExtraInfo(cmd)); } else if (cmd == "qfDllInfo") { @@ -770,21 +714,7 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) // http://sourceware.org/ml/gdb/2007-05/msg00038.html // Name=hexname,TextSeg=textaddr[,DataSeg=dataaddr] sendGdbServerAck(); - if (!m_session.libraries.isEmpty()) { - QByteArray response(1, 'm'); - // FIXME: Limit packet length by using qsDllInfo packages? - for (int i = 0; i != m_session.libraries.size(); ++i) { - if (i) - response += ';'; - const trk::Library &lib = m_session.libraries.at(i); - response += "Name=" + lib.name.toHex() - + ",TextSeg=" + trk::hexNumber(lib.codeseg) - + ",DataSeg=" + trk::hexNumber(lib.dataseg); - } - sendGdbServerMessage(response, "library information transferred"); - } else { - sendGdbServerMessage(QByteArray(1, 'l'), "library information transfer finished"); - } + sendGdbServerMessage(m_session.gdbQsDllInfo(), "library information transfer finished"); } else if (cmd == "qsDllInfo") { @@ -824,21 +754,13 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd.startsWith("qXfer:features:read:target.xml:")) { // $qXfer:features:read:target.xml:0,7ca#46...Ack sendGdbServerAck(); - sendGdbServerMessage("l<target><architecture>arm</architecture></target>"); + sendGdbServerMessage(Symbian::gdbArchitectureXml); } else if (cmd == "qfThreadInfo") { // That's the _first_ query package. sendGdbServerAck(); - if (!m_session.threads.isEmpty()) { - QByteArray response(1, 'm'); - // FIXME: Limit packet length by using qsThreadInfo packages? - qDebug() << "CURRENT THREAD: " << m_session.tid; - response += trk::hexNumber(m_session.tid); - sendGdbServerMessage(response, "thread information transferred"); - } else { - sendGdbServerMessage(QByteArray(1, 'l'), "thread information transfer finished"); - } + sendGdbServerMessage(m_snapshot.gdbQsThreadInfo(), "thread information transferred"); } else if (cmd == "qsThreadInfo") { @@ -848,20 +770,8 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) } else if (cmd.startsWith("qXfer:libraries:read")) { - //qDebug() << "COMMAND: " << cmd; sendGdbServerAck(); - QByteArray response = "l<library-list>"; - for (int i = 0; i != m_session.libraries.size(); ++i) { - const trk::Library &lib = m_session.libraries.at(i); - response += "<library name=\"" + lib.name + "\">"; - //response += "<segment address=\"0x" + hexNumber(lib.codeseg) + "\"/>"; - response += "<section address=\"0x" + trk::hexNumber(lib.codeseg) + "\"/>"; - response += "<section address=\"0x" + trk::hexNumber(lib.dataseg) + "\"/>"; - response += "<section address=\"0x" + trk::hexNumber(lib.dataseg) + "\"/>"; - response += "</library>"; - } - response += "</library-list>"; - sendGdbServerMessage(response, "library information transferred"); + sendGdbServerMessage(m_session.gdbLibraryList(), "library information transferred"); } else if (cmd == "QStartNoAckMode") { @@ -882,8 +792,9 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) } else if (cmd == "s" || cmd.startsWith("vCont;s")) { + const uint pc = m_snapshot.registerValue(m_session.tid, RegisterPC); logMessage(msgGdbPacket(QString::fromLatin1("Step range from 0x%1"). - arg(m_snapshot.registers[RegisterPC], 0, 16))); + arg(pc, 0, 16))); sendGdbServerAck(); m_running = true; sendTrkStepRange(); @@ -913,28 +824,21 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) sendGdbServerAck(); logMessage(msgGdbPacket(QLatin1String("Insert breakpoint"))); // $Z0,786a4ccc,4#99 - const int pos = cmd.lastIndexOf(','); - bool ok1 = false; - bool ok2 = false; - const uint addr = cmd.mid(3, pos - 3).toUInt(&ok1, 16); - const uint len = cmd.mid(pos + 1).toUInt(&ok2, 16); - if (!ok1) { - logMessage("MISPARSED ADDRESS FROM " + cmd + - " (" + cmd.mid(3, pos - 3) + ")" , LogError); - } else if (!ok2) { - logMessage("MISPARSED BREAKPOINT SIZE FROM " + cmd, LogError); - } else { + const QPair<quint64, unsigned> addrLen = parseGdbSetBreakpointRequest(cmd); + if (addrLen.first) { //qDebug() << "ADDR: " << hexNumber(addr) << " LEN: " << len; logMessage(_("Inserting breakpoint at 0x%1, %2") - .arg(addr, 0, 16).arg(len)); + .arg(addrLen.first, 0, 16).arg(addrLen.second)); // const QByteArray ba = trkBreakpointMessage(addr, len, len == 4); - tcftrk::Breakpoint bp(addr); - bp.size = len; + tcftrk::Breakpoint bp(addrLen.first); + bp.size = addrLen.second; bp.setContextId(m_session.pid); // We use the automatic ids calculated from the location // address instead of the map in snapshot. m_trkDevice->sendBreakpointsAddCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleAndReportSetBreakpoint), bp); + } else { + logMessage("MISPARSED BREAKPOINT '" + cmd + "'')" , LogError); } } @@ -985,6 +889,20 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) } } +void TcfTrkGdbAdapter::gdbSetCurrentThread(const QByteArray &cmd, const char *why) +{ + // Thread ID from Hg/Hc commands: '-1': All, '0': arbitrary, else hex thread id. + const QByteArray id = cmd.mid(2); + const int threadId = id == "-1" ? -1 : id.toInt(0, 16); + const QByteArray message = QByteArray(why) + QByteArray::number(threadId); + logMessage(msgGdbPacket(QString::fromLatin1(message))); + // Set thread for subsequent operations (`m', `M', `g', `G', et.al.). + // for 'other operations. 0 - any thread + //$Hg0#df + m_session.tid = threadId <= 0 ? m_session.mainTid : uint(threadId); + sendGdbServerMessage("OK", message); +} + void TcfTrkGdbAdapter::interruptInferior() { m_trkDevice->sendRunControlSuspendCommand(TcfTrkCallback(), m_tcfProcessId); @@ -995,6 +913,7 @@ void TcfTrkGdbAdapter::startAdapter() const ushort tcfTrkPort = 1534; m_snapshot.fullReset(); + m_session.reset(); m_firstModuleResumableEvent = true; m_tcfProcessId.clear(); @@ -1062,6 +981,19 @@ void TcfTrkGdbAdapter::startInferior() } +void TcfTrkGdbAdapter::addThread(unsigned id) +{ + // Make thread known, register as main if it is the first one. + if (m_snapshot.indexOfThread(id) == -1) { + m_snapshot.addThread(id); + if (m_session.tid == 0) { + m_session.tid = id; + if (m_session.mainTid == 0) + m_session.mainTid = id; + } + } +} + void TcfTrkGdbAdapter::handleCreateProcess(const tcftrk::TcfTrkCommandResult &result) { if (debug) @@ -1078,11 +1010,10 @@ void TcfTrkGdbAdapter::handleCreateProcess(const tcftrk::TcfTrkCommandResult &re ctx.parse(result.values.front()); logMessage(ctx.toString()); - m_session.pid = ctx.osid.toUInt(); - m_session.tid = 0; // Id is "p232.t34435" - const int sepPos = ctx.id.indexOf('t'); - if (sepPos != -1) - m_session.tid = ctx.id.right(sepPos + 1).toUInt(); + m_session.pid = ctx.processId(); + m_tcfProcessId = tcftrk::RunControlContext::tcfId(m_session.pid); + if (const unsigned threadId = ctx.threadId()) + addThread(threadId); // See ModuleLoadSuspendedEvent for the rest. m_session.codeseg = 0; m_session.dataseg = 0; @@ -1128,19 +1059,27 @@ void TcfTrkGdbAdapter::write(const QByteArray &data) m_gdbProc.write(data); } - void TcfTrkGdbAdapter::cleanup() { delete m_gdbServer; m_gdbServer = 0; if (!m_trkIODevice.isNull()) { - if (QAbstractSocket *socket = qobject_cast<QAbstractSocket *>(m_trkIODevice.data())) { - if (socket->state() == QAbstractSocket::ConnectedState) + QAbstractSocket *socket = qobject_cast<QAbstractSocket *>(m_trkIODevice.data()); + const bool isOpen = socket ? socket->state() == QAbstractSocket::ConnectedState : m_trkIODevice->isOpen(); + if (isOpen) { // Not sure if that is required: Remove Trk's context? + if (!m_remoteExecutable.isEmpty() && m_uid) { + m_trkDevice->sendSettingsRemoveExecutableCommand(m_remoteExecutable, m_uid); + m_uid = 0; + } + } + if (isOpen) { + if (socket) { socket->disconnect(); - } else { - m_trkIODevice->close(); + } else { + m_trkIODevice->close(); + } } - } + } //!m_trkIODevice.isNull() } void TcfTrkGdbAdapter::shutdown() @@ -1151,37 +1090,12 @@ void TcfTrkGdbAdapter::shutdown() void TcfTrkGdbAdapter::trkReloadRegisters() { // Take advantage of direct access to cached register values. - QTC_ASSERT(m_snapshot.registerValid, /**/); - RegisterHandler *handler = m_engine->registerHandler(); - Registers registers = handler->registers(); - - QTC_ASSERT(registers.size() >= 26, - qDebug() << "HAVE: " << registers.size(); return); - for (int i = 0; i < 16; ++i) { - Register ® = registers[i]; - QString value = trk::hexxNumber(m_snapshot.registers[i]); - reg.changed = (value != reg.value); - if (reg.changed) - reg.value = value; - } - Register ® = registers[25]; - QString value = trk::hexxNumber(m_snapshot.registers[16]); - reg.changed = (value != reg.value); - if (reg.changed) - reg.value = value; - handler->setRegisters(registers); + m_snapshot.syncRegisters(m_session.tid, m_engine->registerHandler()); } void TcfTrkGdbAdapter::trkReloadThreads() { - // Take advantage of direct access to cached register values. - QTC_ASSERT(m_snapshot.registerValid, /**/); - Threads threads; - foreach (const trk::Session::Thread &thread, m_session.threads) { - threads.append(thread); - } - ThreadsHandler *handler = m_engine->threadsHandler(); - handler->setThreads(threads); + m_snapshot.syncThreads(m_engine->threadsHandler()); } void TcfTrkGdbAdapter::handleWriteRegister(const tcftrk::TcfTrkCommandResult &result) @@ -1197,19 +1111,10 @@ void TcfTrkGdbAdapter::handleWriteRegister(const tcftrk::TcfTrkCommandResult &re void TcfTrkGdbAdapter::reportRegisters() { - QByteArray ba; - for (int i = 0; i < 16; ++i) { - const uint reg = trk::swapEndian(m_snapshot.registers[i]); - ba += trk::hexNumber(reg, 8); - } - QByteArray logMsg = "REGISTER CONTENTS: "; - if (m_verbose > 1) { - for (int i = 0; i < RegisterCount; ++i) { - logMsg += dumpRegister(i, m_snapshot.registers[i]); - logMsg += ' '; - } - } - sendGdbServerMessage(ba, logMsg); + const int threadIndex = m_snapshot.indexOfThread(m_session.tid); + QTC_ASSERT(threadIndex != -1, return); + const Symbian::Thread &thread = m_snapshot.threadInfo.at(threadIndex); + sendGdbServerMessage(thread.gdbReportRegisters(), thread.gdbRegisterLogMessage(m_verbose)); } void TcfTrkGdbAdapter::handleReadRegisters(const tcftrk::TcfTrkCommandResult &result) @@ -1224,9 +1129,11 @@ void TcfTrkGdbAdapter::handleReadRegisters(const tcftrk::TcfTrkCommandResult &re return; } unsigned i = result.cookie.toUInt(); + uint *registers = m_snapshot.registers(m_session.tid); + QTC_ASSERT(registers, return;) foreach (const tcftrk::JsonValue &jr, result.values.front().children()) - m_snapshot.registers[i++] = jr.data().toUInt(0, 16); - m_snapshot.registerValid = true; + registers[i++] = jr.data().toUInt(0, 16); + m_snapshot.setRegistersValid(m_session.tid, true); if (debug) qDebug() << "handleReadRegisters: " << m_snapshot.toString(); } @@ -1240,37 +1147,20 @@ void TcfTrkGdbAdapter::handleAndReportReadRegisters(const tcftrk::TcfTrkCommandR void TcfTrkGdbAdapter::handleAndReportReadRegister(const tcftrk::TcfTrkCommandResult &result) { handleReadRegisters(result); - uint registerNumber = result.cookie.toUInt(); - QByteArray logMsg = "Read Register"; - if (registerNumber == RegisterPSGdb) { - QByteArray ba; - trk::appendInt(&ba, m_snapshot.registers[RegisterPSTrk], trk::LittleEndian); - logMsg += dumpRegister(registerNumber, m_snapshot.registers[RegisterPSTrk]); - sendGdbServerMessage(ba.toHex(), logMsg); - } else if (registerNumber < 16) { - QByteArray ba; - trk::appendInt(&ba, m_snapshot.registers[registerNumber], trk::LittleEndian); - logMsg += dumpRegister(registerNumber, m_snapshot.registers[registerNumber]); - sendGdbServerMessage(ba.toHex(), logMsg); - } else { - sendGdbServerMessage("0000", "read single unknown register #" - + QByteArray::number(registerNumber)); - //sendGdbServerMessage("E01", "read single unknown register"); - } + const uint registerNumber = result.cookie.toUInt(); + const int threadIndex = m_snapshot.indexOfThread(m_session.tid); + QTC_ASSERT(threadIndex != -1, return); + const Symbian::Thread &thread = m_snapshot.threadInfo.at(threadIndex); + sendGdbServerMessage(thread.gdbReportSingleRegister(registerNumber), thread.gdbSingleRegisterLogMessage(registerNumber)); } void TcfTrkGdbAdapter::handleAndReportReadRegistersAfterStop(const tcftrk::TcfTrkCommandResult &result) { handleReadRegisters(result); - QByteArray ba = "T05"; - for (int i = 0; i < 16; ++i) - appendRegister(&ba, i, m_snapshot.registers[i]); - // FIXME: those are not understood by gdb 6.4 - //for (int i = 16; i < 25; ++i) - // appendRegister(&ba, i, 0x0); - appendRegister(&ba, RegisterPSGdb, m_snapshot.registers[RegisterPSTrk]); - //qDebug() << "TrkGdbAdapter::handleAndReportReadRegistersAfterStop" << ba; - sendGdbServerMessage(ba, "Registers"); + handleReadRegisters(result); + const bool reportThread = m_session.tid != m_session.mainTid; + sendGdbServerMessage(m_snapshot.gdbStopMessage(m_session.tid, reportThread), + "Stopped with registers in thread " + QByteArray::number(m_session.tid, 16)); } void TcfTrkGdbAdapter::handleAndReportSetBreakpoint(const tcftrk::TcfTrkCommandResult &result) @@ -1291,14 +1181,6 @@ void TcfTrkGdbAdapter::handleClearBreakpoint(const tcftrk::TcfTrkCommandResult & sendGdbServerMessage("OK"); } -void TcfTrkGdbAdapter::handleSignalContinue(const tcftrk::TcfTrkCommandResult &result) -{ - uint signalNumber = result.cookie.toUInt(); - logMessage(QString::fromLatin1(" HANDLE SIGNAL CONTINUE %1").arg(signalNumber)); - sendGdbServerMessage("O" + QByteArray("Console output").toHex()); - sendGdbServerMessage("W81"); // "Process exited with result 1 -} - void TcfTrkGdbAdapter::readMemory(uint addr, uint len, bool buffered) { Q_ASSERT(len < (2 << 16)); @@ -1318,44 +1200,13 @@ static QString msgMemoryReadError(uint addr, uint len = 0) return _("Memory read error at: 0x%1 %2").arg(addr, 0, 16).arg(lenS); } -// Format log message for memory access with some smartness about registers -QByteArray TcfTrkGdbAdapter::memoryReadLogMessage(uint addr, const QByteArray &ba) const -{ - QByteArray logMsg = "memory contents"; - if (m_verbose > 1) { - logMsg += " addr: " + trk::hexxNumber(addr); - // indicate dereferencing of registers - if (ba.size() == 4) { - if (addr == m_snapshot.registers[RegisterPC]) { - logMsg += "[PC]"; - } else if (addr == m_snapshot.registers[RegisterPSTrk]) { - logMsg += "[PSTrk]"; - } else if (addr == m_snapshot.registers[RegisterSP]) { - logMsg += "[SP]"; - } else if (addr == m_snapshot.registers[RegisterLR]) { - logMsg += "[LR]"; - } else if (addr > m_snapshot.registers[RegisterSP] && - (addr - m_snapshot.registers[RegisterSP]) < 10240) { - logMsg += "[SP+"; // Stack area ...stack seems to be top-down - logMsg += QByteArray::number(addr - m_snapshot.registers[RegisterSP]); - logMsg += ']'; - } - } - logMsg += " length "; - logMsg += QByteArray::number(ba.size()); - logMsg += " :"; - logMsg += trk::stringFromArray(ba, 16).toAscii(); - } - return logMsg; -} - void TcfTrkGdbAdapter::sendMemoryGetCommand(const MemoryRange &range, bool buffered) { const QVariant cookie = QVariant::fromValue(range); const TcfTrkCallback cb = buffered ? TcfTrkCallback(this, &TcfTrkGdbAdapter::handleReadMemoryBuffered) : TcfTrkCallback(this, &TcfTrkGdbAdapter::handleReadMemoryUnbuffered); - m_trkDevice->sendMemoryGetCommand(cb, m_tcfProcessId, range.from, range.size(), cookie); + m_trkDevice->sendMemoryGetCommand(cb, currentThreadContextId(), range.from, range.size(), cookie); } void TcfTrkGdbAdapter::handleReadMemoryBuffered(const tcftrk::TcfTrkCommandResult &result) @@ -1419,7 +1270,8 @@ void TcfTrkGdbAdapter::tryAnswerGdbMemoryRequest(bool buffered) int offset = wanted.from - it.key().from; int len = wanted.to - wanted.from; QByteArray ba = it.value().mid(offset, len); - sendGdbServerMessage(ba.toHex(), memoryReadLogMessage(wanted.from, ba)); + sendGdbServerMessage(ba.toHex(), + m_snapshot.memoryReadLogMessage(wanted.from, m_session.tid, m_verbose, ba)); return; } } @@ -1466,20 +1318,29 @@ void TcfTrkGdbAdapter::handleWriteMemory(const tcftrk::TcfTrkCommandResult &resu } QByteArray TcfTrkGdbAdapter::mainThreadContextId() const +{ + return tcftrk::RunControlContext::tcfId(m_session.pid, m_session.mainTid); +} + +QByteArray TcfTrkGdbAdapter::currentThreadContextId() const { return tcftrk::RunControlContext::tcfId(m_session.pid, m_session.tid); } void TcfTrkGdbAdapter::sendTrkContinue() { - m_trkDevice->sendRunControlResumeCommand(TcfTrkCallback(), mainThreadContextId()); + // Remove all but main thread as we do not know whether they will exist + // at the next stop. + if (m_snapshot.threadInfo.size() > 1) + m_snapshot.threadInfo.remove(1, m_snapshot.threadInfo.size() - 1); + m_trkDevice->sendRunControlResumeCommand(TcfTrkCallback(), m_tcfProcessId); } void TcfTrkGdbAdapter::sendTrkStepRange() { uint from = m_snapshot.lineFromAddress; uint to = m_snapshot.lineToAddress; - const uint pc = m_snapshot.registers[RegisterPC]; + const uint pc = m_snapshot.registerValue(m_session.tid, RegisterPC); if (from <= pc && pc <= to) { const QString msg = QString::fromLatin1("Step in 0x%1 .. 0x%2 instead of 0x%3..."). arg(from, 0, 16).arg(to, 0, 16).arg(pc, 0, 16); @@ -1496,7 +1357,7 @@ void TcfTrkGdbAdapter::sendTrkStepRange() logMessage(QString::fromLatin1("Stepping from 0x%1 to 0x%2 (current PC=0x%3), mode %4"). arg(from, 0, 16).arg(to, 0, 16).arg(pc).arg(int(mode))); m_trkDevice->sendRunControlResumeCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleStep), - mainThreadContextId(), + currentThreadContextId(), mode, 1, from, to); } diff --git a/src/plugins/debugger/gdb/tcftrkgdbadapter.h b/src/plugins/debugger/gdb/tcftrkgdbadapter.h index 0953700cdb8b2c8a02f42a4c5a37fe47d01d6e89..37533d2c3e4e33b79c954dc695fc82a1a5d8740c 100644 --- a/src/plugins/debugger/gdb/tcftrkgdbadapter.h +++ b/src/plugins/debugger/gdb/tcftrkgdbadapter.h @@ -116,15 +116,15 @@ private: void handleAndReportReadRegistersAfterStop(const tcftrk::TcfTrkCommandResult &result); void handleAndReportSetBreakpoint(const tcftrk::TcfTrkCommandResult &result); void handleClearBreakpoint(const tcftrk::TcfTrkCommandResult &result); - void handleSignalContinue(const tcftrk::TcfTrkCommandResult &result); void readMemory(uint addr, uint len, bool buffered); void handleReadMemoryBuffered(const tcftrk::TcfTrkCommandResult &result); void handleReadMemoryUnbuffered(const tcftrk::TcfTrkCommandResult &result); void handleWriteMemory(const tcftrk::TcfTrkCommandResult &result); void tryAnswerGdbMemoryRequest(bool buffered); inline void sendMemoryGetCommand(const MemoryRange &range, bool buffered); + void addThread(unsigned id); inline QByteArray mainThreadContextId() const; - QByteArray memoryReadLogMessage(uint addr, const QByteArray &ba) const; + inline QByteArray currentThreadContextId() const; AbstractGdbProcess *gdbProc() { return &m_gdbProc; } @@ -157,6 +157,7 @@ private: const QByteArray &logNote = QByteArray()); void sendGdbServerAck(); bool sendGdbServerPacket(const QByteArray &packet, bool doFlush); + void gdbSetCurrentThread(const QByteArray &cmd, const char *why); void logMessage(const QString &msg, int channel = LogDebug); // triggers output() if m_verbose Q_SLOT void trkLogMessage(const QString &msg); diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp index 98f36a8be61ccc0bf84e5e7a32d92b8f3a2fe735..26b6ceb69f7413aebfa948c389e102f2d4b94793 100644 --- a/src/plugins/debugger/gdb/trkgdbadapter.cpp +++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp @@ -72,20 +72,20 @@ using namespace Symbian; static inline void appendByte(QByteArray *ba, trk::byte b) { ba->append(b); } -static void appendRegister(QByteArray *ba, uint regno, uint value) -{ - ba->append(hexNumber(regno, 2)); - ba->append(':'); - ba->append(hexNumber(swapEndian(value), 8)); - ba->append(';'); -} - /////////////////////////////////////////////////////////////////////////// // // TrkGdbAdapter // /////////////////////////////////////////////////////////////////////////// +/* Thread handling: + * TRK does not report thread creation/termination. So, if we receive + * a stop in a different thread, we store an additional thread in snapshot. + * When continuing in trkContinueAll(), we delete this thread, since we cannot + * know whether it will exist at the next stop. + * Also note that threads continue running in Symbian even if one crashes. + * TODO: Stop all threads once one stops? */ + TrkGdbAdapter::TrkGdbAdapter(GdbEngine *engine) : AbstractGdbAdapter(engine), m_running(false), @@ -156,11 +156,11 @@ uint TrkGdbAdapter::gdbServerPort() const return m_gdbServerName.mid(pos + 1).toUInt(); } -QByteArray TrkGdbAdapter::trkContinueMessage() +QByteArray TrkGdbAdapter::trkContinueMessage(uint threadId) { QByteArray ba; appendInt(&ba, m_session.pid); - appendInt(&ba, m_session.tid); + appendInt(&ba, threadId); return ba; } @@ -222,7 +222,7 @@ QByteArray TrkGdbAdapter::trkStepRangeMessage() //qDebug() << "STEP ON " << hexxNumber(m_snapshot.registers[RegisterPC]); uint from = m_snapshot.lineFromAddress; uint to = m_snapshot.lineToAddress; - uint pc = m_snapshot.registers[RegisterPC]; + const uint pc = m_snapshot.registerValue(m_session.tid, RegisterPC); trk::byte option = 0x01; // Step into. if (m_snapshot.stepOver) option = 0x11; // Step over. @@ -265,7 +265,7 @@ QByteArray TrkGdbAdapter::trkInterruptMessage() // We choose 2, as 1 does not seem to work. appendByte(&ba, 2); appendInt(&ba, m_session.pid); - appendInt(&ba, m_session.tid); // threadID: 4 bytes Variable number of bytes. + appendInt(&ba, m_session.mainTid); // threadID: 4 bytes Variable number of bytes. return ba; } @@ -504,26 +504,22 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd == "c") { logMessage(msgGdbPacket(QLatin1String("Continue"))); sendGdbServerAck(); - QByteArray ba; - appendByte(&ba, 0); // options - appendInt(&ba, 0); // start address - appendInt(&ba, 0); // end address - appendInt(&ba, m_session.pid); - appendInt(&ba, m_session.tid); - sendTrkMessage(0x18, TrkCallback(), ba); + m_running = true; + trkContinueAll("gdb 'c'"); } else if (cmd.startsWith('C')) { logMessage(msgGdbPacket(QLatin1String("Continue with signal"))); // C sig[;addr] Continue with signal sig (hex signal number) //Reply: See section D.3 Stop Reply Packets, for the reply specifications. + //TODO: Meaning of the message is not clear. sendGdbServerAck(); bool ok = false; - uint signalNumber = cmd.mid(1).toUInt(&ok, 16); - QByteArray ba; - appendInt(&ba, m_session.pid); - appendInt(&ba, m_session.tid); - sendTrkMessage(0x18, TrkCB(handleSignalContinue), ba, signalNumber); + const uint signalNumber = cmd.mid(1).toUInt(&ok, 16); + logMessage(QString::fromLatin1("Not implemented 'Continue with signal' %1: ").arg(signalNumber), LogWarning); + sendGdbServerMessage("O" + QByteArray("Console output").toHex()); + sendGdbServerMessage("W81"); // "Process exited with result 1 + trkContinueAll("gdb 'C'"); } else if (cmd.startsWith('D')) { @@ -533,7 +529,7 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd == "g") { // Read general registers. - if (m_snapshot.registerValid) { + if (m_snapshot.registersValid(m_session.tid)) { //qDebug() << "Using cached register contents"; logMessage(msgGdbPacket(QLatin1String("Read registers"))); sendGdbServerAck(); @@ -550,7 +546,7 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd == "gg") { // Force re-reading general registers for debugging purpose. sendGdbServerAck(); - m_snapshot.registerValid = false; + m_snapshot.setRegistersValid(m_session.tid, false); sendTrkMessage(0x12, TrkCB(handleAndReportReadRegisters), trkReadRegistersMessage()); @@ -559,41 +555,25 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd.startsWith("salstep,")) { // Receive address range for current line for future use when stepping. sendGdbServerAck(); - int pos = cmd.indexOf(',', 8); - m_snapshot.lineFromAddress = cmd.mid(8, pos - 8).toUInt(0, 16); - m_snapshot.lineToAddress = cmd.mid(pos + 1).toUInt(0, 16); - m_snapshot.stepOver = false; + m_snapshot.parseGdbStepRange(cmd, false); sendGdbServerMessage("", msgStepRangeReceived(m_snapshot.lineFromAddress, m_snapshot.lineToAddress, m_snapshot.stepOver)); } else if (cmd.startsWith("salnext,")) { // Receive address range for current line for future use when stepping. sendGdbServerAck(); - int pos = cmd.indexOf(',', 8); - m_snapshot.lineFromAddress = cmd.mid(8, pos - 8).toUInt(0, 16); - m_snapshot.lineToAddress = cmd.mid(pos + 1).toUInt(0, 16); - m_snapshot.stepOver = true; + m_snapshot.parseGdbStepRange(cmd, true); sendGdbServerMessage("", msgStepRangeReceived(m_snapshot.lineFromAddress, m_snapshot.lineToAddress, m_snapshot.stepOver)); } else if (cmd.startsWith("Hc")) { - logMessage(msgGdbPacket(QLatin1String("Set thread & continue"))); - // Set thread for subsequent operations (`m', `M', `g', `G', et.al.). - // for step and continue operations - //$Hc-1#09 sendGdbServerAck(); - sendGdbServerMessage("OK", "Set current thread for step & continue"); + gdbSetCurrentThread(cmd, "Set current thread for step & continue "); } else if (cmd.startsWith("Hg")) { - logMessage(msgGdbPacket(QLatin1String("Set thread"))); - // Set thread for subsequent operations (`m', `M', `g', `G', et.al.). - // for 'other operations. 0 - any thread - //$Hg0#df sendGdbServerAck(); - m_session.currentThread = cmd.mid(2).toUInt(0, 16); - sendGdbServerMessage("OK", "Set current thread " - + QByteArray::number(m_session.currentThread)); + gdbSetCurrentThread(cmd, "Set current thread "); } else if (cmd == "k" || cmd.startsWith("vKill")) { @@ -607,21 +587,9 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) logMessage(msgGdbPacket(QLatin1String("Read memory"))); // m addr,length sendGdbServerAck(); - uint addr = 0, len = 0; - do { - const int pos = cmd.indexOf(','); - if (pos == -1) - break; - bool ok; - addr = cmd.mid(1, pos - 1).toUInt(&ok, 16); - if (!ok) - break; - len = cmd.mid(pos + 1).toUInt(&ok, 16); - if (!ok) - break; - } while (false); - if (len) { - readMemory(addr, len, m_bufferedMemoryRead); + const QPair<quint64, unsigned> addrLength = parseGdbReadMemoryRequest(cmd); + if (addrLength.second) { + readMemory(addrLength.first, addrLength.second, m_bufferedMemoryRead); } else { sendGdbServerMessage("E20", "Error " + cmd); } @@ -634,23 +602,11 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) sendGdbServerAck(); bool ok = false; const uint registerNumber = cmd.mid(1).toUInt(&ok, 16); - if (m_snapshot.registerValid) { - QByteArray logMsg = "Read Register"; - if (registerNumber == RegisterPSGdb) { - QByteArray ba; - appendInt(&ba, m_snapshot.registers[RegisterPSTrk], LittleEndian); - logMsg += dumpRegister(registerNumber, m_snapshot.registers[RegisterPSTrk]); - sendGdbServerMessage(ba.toHex(), logMsg); - } else if (registerNumber < 16) { - QByteArray ba; - appendInt(&ba, m_snapshot.registers[registerNumber], LittleEndian); - logMsg += dumpRegister(registerNumber, m_snapshot.registers[registerNumber]); - sendGdbServerMessage(ba.toHex(), logMsg); - } else { - sendGdbServerMessage("0000", "read single unknown register #" - + QByteArray::number(registerNumber)); - //sendGdbServerMessage("E01", "read single unknown register"); - } + const int threadIndex = m_snapshot.indexOfThread(m_session.tid); + QTC_ASSERT(threadIndex != -1, return) + const Symbian::Thread &thread = m_snapshot.threadInfo[threadIndex]; + if (thread.registerValid) { + sendGdbServerMessage(thread.gdbReportSingleRegister(registerNumber), thread.gdbSingleRegisterLogMessage(registerNumber)); } else { //qDebug() << "Fetching single register"; sendTrkMessage(0x12, @@ -663,15 +619,10 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) logMessage(msgGdbPacket(QLatin1String("write register"))); // $Pe=70f96678#d3 sendGdbServerAck(); - int pos = cmd.indexOf('='); - QByteArray regName = cmd.mid(1, pos - 1); - QByteArray valueName = cmd.mid(pos + 1); - bool ok = false; - const uint registerNumber = regName.toUInt(&ok, 16); - const uint value = swapEndian(valueName.toUInt(&ok, 16)); + const QPair<uint, uint> regnumValue = parseGdbWriteRegisterWriteRequest(cmd); // FIXME: Assume all goes well. - m_snapshot.registers[registerNumber] = value; - QByteArray ba = trkWriteRegisterMessage(registerNumber, value); + m_snapshot.setRegisterValue(m_session.tid, regnumValue.first, regnumValue.second); + QByteArray ba = trkWriteRegisterMessage(regnumValue.first, regnumValue.second); sendTrkMessage(0x13, TrkCB(handleWriteRegister), ba, "Write register"); // Note that App TRK refuses to write registers 13 and 14 } @@ -698,20 +649,14 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) //$qSupported#37 //$qSupported:multiprocess+#c6 //logMessage("Handling 'qSupported'"); - sendGdbServerAck(); - sendGdbServerMessage( - "PacketSize=7cf;" - "QPassSignals+;" - "QStartNoAckMode+;" - "qXfer:libraries:read+;" - //"qXfer:auxv:read+;" - "qXfer:features:read+"); + sendGdbServerAck(); + sendGdbServerMessage(Symbian::gdbQSupported); } else if (cmd.startsWith("qThreadExtraInfo")) { // $qThreadExtraInfo,1f9#55 sendGdbServerAck(); - sendGdbServerMessage(QByteArray("Nothing special").toHex()); + sendGdbServerMessage(m_snapshot.gdbQThreadExtraInfo(cmd)); } else if (cmd == "qfDllInfo") { @@ -721,21 +666,7 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) // http://sourceware.org/ml/gdb/2007-05/msg00038.html // Name=hexname,TextSeg=textaddr[,DataSeg=dataaddr] sendGdbServerAck(); - if (!m_session.libraries.isEmpty()) { - QByteArray response(1, 'm'); - // FIXME: Limit packet length by using qsDllInfo packages? - for (int i = 0; i != m_session.libraries.size(); ++i) { - if (i) - response += ';'; - const Library &lib = m_session.libraries.at(i); - response += "Name=" + lib.name.toHex() - + ",TextSeg=" + hexNumber(lib.codeseg) - + ",DataSeg=" + hexNumber(lib.dataseg); - } - sendGdbServerMessage(response, "library information transferred"); - } else { - sendGdbServerMessage(QByteArray(1, 'l'), "library information transfer finished"); - } + sendGdbServerMessage(m_session.gdbQsDllInfo(), "library information transferred"); } else if (cmd == "qsDllInfo") { @@ -771,23 +702,13 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd.startsWith("qXfer:features:read:target.xml:")) { // $qXfer:features:read:target.xml:0,7ca#46...Ack sendGdbServerAck(); - //sendGdbServerMessage("l<target><architecture>symbianelf</architecture></target>"); - sendGdbServerMessage("l<target><architecture>arm</architecture></target>"); - //sendGdbServerMessage("l<target><architecture>arm-none-symbianelf</architecture></target>"); + sendGdbServerMessage(Symbian::gdbArchitectureXml); } else if (cmd == "qfThreadInfo") { // That's the _first_ query package. sendGdbServerAck(); - if (!m_session.threads.isEmpty()) { - QByteArray response(1, 'm'); - // FIXME: Limit packet length by using qsThreadInfo packages? - qDebug() << "CURRENT THREAD: " << m_session.tid; - response += hexNumber(m_session.tid); - sendGdbServerMessage(response, "thread information transferred"); - } else { - sendGdbServerMessage(QByteArray(1, 'l'), "thread information transfer finished"); - } + sendGdbServerMessage(m_snapshot.gdbQsThreadInfo(), "thread information transferred"); } else if (cmd == "qsThreadInfo") { @@ -797,20 +718,8 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) } else if (cmd.startsWith("qXfer:libraries:read")) { - //qDebug() << "COMMAND: " << cmd; sendGdbServerAck(); - QByteArray response = "l<library-list>"; - for (int i = 0; i != m_session.libraries.size(); ++i) { - const Library &lib = m_session.libraries.at(i); - response += "<library name=\"" + lib.name + "\">"; - //response += "<segment address=\"0x" + hexNumber(lib.codeseg) + "\"/>"; - response += "<section address=\"0x" + hexNumber(lib.codeseg) + "\"/>"; - response += "<section address=\"0x" + hexNumber(lib.dataseg) + "\"/>"; - response += "<section address=\"0x" + hexNumber(lib.dataseg) + "\"/>"; - response += "</library>"; - } - response += "</library-list>"; - sendGdbServerMessage(response, "library information transferred"); + sendGdbServerMessage(m_session.gdbLibraryList(), "library information transferred"); } else if (cmd == "QStartNoAckMode") { @@ -831,8 +740,9 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) } else if (cmd == "s" || cmd.startsWith("vCont;s")) { + const uint pc = m_snapshot.registerValue(m_session.tid, RegisterPC); logMessage(msgGdbPacket(QString::fromLatin1("Step range from 0x%1"). - arg(m_snapshot.registers[RegisterPC], 0, 16))); + arg(pc, 0, 16))); sendGdbServerAck(); //m_snapshot.reset(); m_running = true; @@ -859,7 +769,7 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) sendGdbServerAck(); //m_snapshot.reset(); m_running = true; - sendTrkMessage(0x18, TrkCallback(), trkContinueMessage(), "CONTINUE"); + trkContinueAll("gdb 'vCont;c'"); } else if (cmd.startsWith("Z0,") || cmd.startsWith("Z1,")) { @@ -867,22 +777,16 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) sendGdbServerAck(); logMessage(msgGdbPacket(QLatin1String("Insert breakpoint"))); // $Z0,786a4ccc,4#99 - const int pos = cmd.lastIndexOf(','); - bool ok1 = false; - bool ok2 = false; - const uint addr = cmd.mid(3, pos - 3).toUInt(&ok1, 16); - const uint len = cmd.mid(pos + 1).toUInt(&ok2, 16); - if (!ok1) { - logMessage("MISPARSED ADDRESS FROM " + cmd + - " (" + cmd.mid(3, pos - 3) + ")", LogError); - } else if (!ok2) { - logMessage("MISPARSED BREAKPOINT SIZE FROM " + cmd, LogError); - } else { + const QPair<quint64, unsigned> addrLen = parseGdbSetBreakpointRequest(cmd); + if (addrLen.first) { //qDebug() << "ADDR: " << hexNumber(addr) << " LEN: " << len; logMessage(_("Inserting breakpoint at 0x%1, %2") - .arg(addr, 0, 16).arg(len)); - const QByteArray ba = trkBreakpointMessage(addr, len, len == 4); - sendTrkMessage(0x1B, TrkCB(handleAndReportSetBreakpoint), ba, addr); + .arg(addrLen.first, 0, 16).arg(addrLen.second)); + const bool armMode = addrLen.second == 4; + const QByteArray ba = trkBreakpointMessage(addrLen.first, addrLen.second, armMode); + sendTrkMessage(0x1B, TrkCB(handleAndReportSetBreakpoint), ba, QVariant(addrLen.first)); + } else { + logMessage("MISPARSED BREAKPOINT '" + cmd + "')", LogError); } } @@ -943,6 +847,56 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) } } +void TrkGdbAdapter::gdbSetCurrentThread(const QByteArray &cmd, const char *why) +{ + // Thread ID from Hg/Hc commands: '-1': All, '0': arbitrary, else hex thread id. + const QByteArray id = cmd.mid(2); + const int threadId = id == "-1" ? -1 : id.toInt(0, 16); + const QByteArray message = QByteArray(why) + QByteArray::number(threadId); + logMessage(msgGdbPacket(QString::fromLatin1(message))); + // Set thread for subsequent operations (`m', `M', `g', `G', et.al.). + // for 'other operations. 0 - any thread + //$Hg0#df + m_session.tid = threadId <= 0 ? m_session.mainTid : uint(threadId); + sendGdbServerMessage("OK", message); +} + +void TrkGdbAdapter::trkContinueAll(const char *why) +{ + if (why) + logMessage(QString::fromLatin1("Continuing %1 threads (%2)"). + arg(m_snapshot.threadInfo.size()).arg(QString::fromLatin1(why))); + + // Starting from the last one, continue all threads. + QTC_ASSERT(!m_snapshot.threadInfo.isEmpty(), return; ); + trkContinueNext(m_snapshot.threadInfo.size() - 1); +} + +void TrkGdbAdapter::trkContinueNext(int threadIndex) +{ + const uint threadId = m_snapshot.threadInfo.at(threadIndex).id; + logMessage(QString::fromLatin1("Continuing thread 0x%1 of %2"). + arg(threadId,0, 16).arg(m_snapshot.threadInfo.size())); + sendTrkMessage(0x18, TrkCallback(this, &TrkGdbAdapter::handleTrkContinueNext), + trkContinueMessage(threadId), QVariant(threadIndex)); +} + +void TrkGdbAdapter::handleTrkContinueNext(const TrkResult &result) +{ + const int index = result.cookie.toInt(); + if (result.errorCode()) { + logMessage("Error continuing thread: " + result.errorString(), LogError); + return; + } + // Remove the thread (unless main) if it is continued since we + // do not get thread creation/deletion events + QTC_ASSERT(index < m_snapshot.threadInfo.size(), return; ); + if (m_snapshot.threadInfo.at(index).id != m_session.mainTid) + m_snapshot.threadInfo.remove(index); + if (index > 0 && m_running) // Stopped in-between + trkContinueNext(index - 1); +} + void TrkGdbAdapter::sendTrkMessage(trk::byte code, TrkCallback callback, const QByteArray &data, const QVariant &cookie) { @@ -999,6 +953,12 @@ void TrkGdbAdapter::handleTrkResult(const TrkResult &result) uint tid; trk::Launcher::parseNotifyStopped(result.data, &pid, &tid, &addr, &reason); const QString msg = trk::Launcher::msgStopped(pid, tid, addr, reason); + // Unknown thread: Add. + m_session.tid = tid; + if (m_snapshot.indexOfThread(tid) == -1) + m_snapshot.addThread(tid); + m_snapshot.setThreadState(tid, reason); + logMessage(prefix + msg); showMessage(msg, LogMisc); sendTrkAck(result.token); @@ -1053,8 +1013,7 @@ void TrkGdbAdapter::handleTrkResult(const TrkResult &result) case 0xa0: { // Notify Created // Sending this ACK does not seem to make a difference. Why? //sendTrkAck(result.token); - showMessage(_("RESET SNAPSHOT (NOTIFY CREATED)")); - m_snapshot.fullReset(); + m_snapshot.resetMemory(); const char *data = result.data.data(); const trk::byte error = result.data.at(0); // type: 1 byte; for dll item, this value is 2. @@ -1080,6 +1039,8 @@ void TrkGdbAdapter::handleTrkResult(const TrkResult &result) lib.codeseg = codeseg; lib.dataseg = dataseg; m_session.libraries.append(lib); + if (tid && tid != unsigned(-1) && m_snapshot.indexOfThread(tid) == -1) + m_snapshot.addThread(tid); logMessage(logMsg); // This lets gdb trigger a register update etc. // With CS gdb 6.4 we get a non-standard $qfDllInfo#7f+ request @@ -1102,7 +1063,7 @@ void TrkGdbAdapter::handleTrkResult(const TrkResult &result) // to continue. The debugger can safely assume that the // thread resumption will be handled by the agent itself. if (tid != unsigned(-1)) - sendTrkMessage(0x18, TrkCallback(), trkContinueMessage(), "CONTINUE"); + sendTrkMessage(0x18, TrkCallback(), trkContinueMessage(m_session.mainTid), "CONTINUE"); break; } case 0xa1: { // NotifyDeleted @@ -1194,9 +1155,11 @@ void TrkGdbAdapter::handleReadRegisters(const TrkResult &result) return; } const char *data = result.data.data() + 1; // Skip ok byte + uint *registers = m_snapshot.registers(m_session.tid); + QTC_ASSERT(registers, return;) for (int i = 0; i < RegisterCount; ++i) - m_snapshot.registers[i] = extractInt(data + 4 * i); - m_snapshot.registerValid = true; + registers[i] = extractInt(data + 4 * i); + m_snapshot.setRegistersValid(m_session.tid, true); } void TrkGdbAdapter::handleWriteRegister(const TrkResult &result) @@ -1212,19 +1175,10 @@ void TrkGdbAdapter::handleWriteRegister(const TrkResult &result) void TrkGdbAdapter::reportRegisters() { - QByteArray ba; - for (int i = 0; i < 16; ++i) { - const uint reg = swapEndian(m_snapshot.registers[i]); - ba += hexNumber(reg, 8); - } - QByteArray logMsg = "REGISTER CONTENTS: "; - if (m_verbose > 1) { - for (int i = 0; i < RegisterCount; ++i) { - logMsg += dumpRegister(i, m_snapshot.registers[i]); - logMsg += ' '; - } - } - sendGdbServerMessage(ba, logMsg); + const int threadIndex = m_snapshot.indexOfThread(m_session.tid); + QTC_ASSERT(threadIndex != -1, return); + const Symbian::Thread &thread = m_snapshot.threadInfo.at(threadIndex); + sendGdbServerMessage(thread.gdbReportRegisters(), thread.gdbRegisterLogMessage(m_verbose)); } void TrkGdbAdapter::handleAndReportReadRegisters(const TrkResult &result) @@ -1236,37 +1190,19 @@ void TrkGdbAdapter::handleAndReportReadRegisters(const TrkResult &result) void TrkGdbAdapter::handleAndReportReadRegister(const TrkResult &result) { handleReadRegisters(result); - uint registerNumber = result.cookie.toUInt(); - QByteArray logMsg = "Read Register"; - if (registerNumber == RegisterPSGdb) { - QByteArray ba; - appendInt(&ba, m_snapshot.registers[RegisterPSTrk], LittleEndian); - logMsg += dumpRegister(registerNumber, m_snapshot.registers[RegisterPSTrk]); - sendGdbServerMessage(ba.toHex(), logMsg); - } else if (registerNumber < 16) { - QByteArray ba; - appendInt(&ba, m_snapshot.registers[registerNumber], LittleEndian); - logMsg += dumpRegister(registerNumber, m_snapshot.registers[registerNumber]); - sendGdbServerMessage(ba.toHex(), logMsg); - } else { - sendGdbServerMessage("0000", "read single unknown register #" - + QByteArray::number(registerNumber)); - //sendGdbServerMessage("E01", "read single unknown register"); - } + const uint registerNumber = result.cookie.toUInt(); + const int threadIndex = m_snapshot.indexOfThread(m_session.tid); + QTC_ASSERT(threadIndex != -1, return); + const Symbian::Thread &thread = m_snapshot.threadInfo.at(threadIndex); + sendGdbServerMessage(thread.gdbReportSingleRegister(registerNumber), thread.gdbSingleRegisterLogMessage(registerNumber)); } void TrkGdbAdapter::handleAndReportReadRegistersAfterStop(const TrkResult &result) { - handleReadRegisters(result); - QByteArray ba = "T05"; - for (int i = 0; i < 16; ++i) - appendRegister(&ba, i, m_snapshot.registers[i]); - // FIXME: those are not understood by gdb 6.4 - //for (int i = 16; i < 25; ++i) - // appendRegister(&ba, i, 0x0); - appendRegister(&ba, RegisterPSGdb, m_snapshot.registers[RegisterPSTrk]); - //qDebug() << "TrkGdbAdapter::handleAndReportReadRegistersAfterStop" << ba; - sendGdbServerMessage(ba, "Registers"); + handleReadRegisters(result); + const bool reportThread = m_session.tid != m_session.mainTid; + sendGdbServerMessage(m_snapshot.gdbStopMessage(m_session.tid, reportThread), + "Stopped with registers in thread " + QByteArray::number(m_session.tid, 16)); } static QString msgMemoryReadError(int code, uint addr, uint len = 0) @@ -1276,37 +1212,6 @@ static QString msgMemoryReadError(int code, uint addr, uint len = 0) .arg(code).arg(addr, 0 ,16).arg(lenS); } -// Format log message for memory access with some smartness about registers -QByteArray TrkGdbAdapter::memoryReadLogMessage(uint addr, const QByteArray &ba) const -{ - QByteArray logMsg = "memory contents"; - if (m_verbose > 1) { - logMsg += " addr: " + hexxNumber(addr); - // indicate dereferencing of registers - if (ba.size() == 4) { - if (addr == m_snapshot.registers[RegisterPC]) { - logMsg += "[PC]"; - } else if (addr == m_snapshot.registers[RegisterPSTrk]) { - logMsg += "[PSTrk]"; - } else if (addr == m_snapshot.registers[RegisterSP]) { - logMsg += "[SP]"; - } else if (addr == m_snapshot.registers[RegisterLR]) { - logMsg += "[LR]"; - } else if (addr > m_snapshot.registers[RegisterSP] && - (addr - m_snapshot.registers[RegisterSP]) < 10240) { - logMsg += "[SP+"; // Stack area ...stack seems to be top-down - logMsg += QByteArray::number(addr - m_snapshot.registers[RegisterSP]); - logMsg += ']'; - } - } - logMsg += " length "; - logMsg += QByteArray::number(ba.size()); - logMsg += " :"; - logMsg += stringFromArray(ba, 16).toAscii(); - } - return logMsg; -} - void TrkGdbAdapter::handleReadMemoryBuffered(const TrkResult &result) { if (extractShort(result.data.data() + 1) + 3 != result.data.size()) @@ -1376,7 +1281,8 @@ void TrkGdbAdapter::tryAnswerGdbMemoryRequest(bool buffered) int offset = wanted.from - it.key().from; int len = wanted.to - wanted.from; QByteArray ba = it.value().mid(offset, len); - sendGdbServerMessage(ba.toHex(), memoryReadLogMessage(wanted.from, ba)); + sendGdbServerMessage(ba.toHex(), + m_snapshot.memoryReadLogMessage(wanted.from, m_session.tid, m_verbose, ba)); return; } } @@ -1452,7 +1358,7 @@ void TrkGdbAdapter::handleStep(const TrkResult &result) // Try fallback with Continue. showMessage("FALLBACK TO 'CONTINUE'"); - sendTrkMessage(0x18, TrkCallback(), trkContinueMessage(), "CONTINUE"); + trkContinueAll("Step failed"); //sendGdbServerMessage("S05", "Stepping finished"); // Doing nothing as below does not work as gdb seems to insist on @@ -1496,15 +1402,6 @@ void TrkGdbAdapter::handleClearBreakpoint(const TrkResult &result) sendGdbServerMessage("OK"); } -void TrkGdbAdapter::handleSignalContinue(const TrkResult &result) -{ - uint signalNumber = result.cookie.toUInt(); - logMessage(" HANDLE SIGNAL CONTINUE: " + stringFromArray(result.data)); - logMessage("NUMBER" + QString::number(signalNumber)); - sendGdbServerMessage("O" + QByteArray("Console output").toHex()); - sendGdbServerMessage("W81"); // "Process exited with result 1 -} - void TrkGdbAdapter::handleSupportMask(const TrkResult &result) { const char *data = result.data.data(); @@ -1687,7 +1584,7 @@ void TrkGdbAdapter::startInferior() void TrkGdbAdapter::handleCreateProcess(const TrkResult &result) { - QTC_ASSERT(state() == InferiorStarting, qDebug() << state()); + QTC_ASSERT(state() == InferiorStarting, qDebug() << state()); // 40 00 00] //logMessage(" RESULT: " + result.toString()); // [80 08 00 00 00 01 B5 00 00 01 B6 78 67 40 00 00 40 00 00] @@ -1700,11 +1597,14 @@ void TrkGdbAdapter::handleCreateProcess(const TrkResult &result) emitDelayedInferiorStartFailed(msg); return; } + showMessage(_("RESET SNAPSHOT (NOTIFY CREATED)")); + m_snapshot.fullReset(); const char *data = result.data.data(); m_session.pid = extractInt(data + 1); - m_session.tid = extractInt(data + 5); + m_session.mainTid = m_session.tid = extractInt(data + 5); m_session.codeseg = extractInt(data + 9); m_session.dataseg = extractInt(data + 13); + m_snapshot.addThread(m_session.mainTid); const QString startMsg = tr("Process started, PID: 0x%1, thread id: 0x%2, " "code segment: 0x%3, data segment: 0x%4.") @@ -1724,17 +1624,10 @@ void TrkGdbAdapter::handleCreateProcess(const TrkResult &result) // + QByteArray::number(m_session.codeseg)); m_engine->postCommand("symbol-file \"" + symbolFile + "\""); } - m_engine->postCommand("set breakpoint always-inserted on"); - m_engine->postCommand("set breakpoint auto-hw on"); - m_engine->postCommand("set trust-readonly-sections on"); // No difference? - m_engine->postCommand("set displaced-stepping on"); // No difference? + foreach(const QByteArray &s, Symbian::gdbStartupSequence()) + m_engine->postCommand(s); //m_engine->postCommand("set remotelogfile /tmp/gdb-remotelog"); //m_engine->postCommand("set debug remote 1"); // FIXME: Make an option. - m_engine->postCommand("set mem inaccessible-by-default"); - m_engine->postCommand("mem 0x00400000 0x70000000 cache"); - m_engine->postCommand("mem 0x70000000 0x80000000 cache ro"); - // FIXME: replace with stack-cache for newer gdb? - m_engine->postCommand("set remotecache on"); // "info dcache" to check m_engine->postCommand("target remote " + gdbServerName().toLatin1(), CB(handleTargetRemote)); } @@ -1806,7 +1699,7 @@ void TrkGdbAdapter::handleDirectWrite1(const TrkResult &response) logMessage("ERROR: " + response.errorString() + "in handleDirectWrite1", LogError); } else { oldMem = response.data.mid(3); - oldPC = m_snapshot.registers[RegisterPC]; + oldPC = m_snapshot.registerValue(m_session.tid, RegisterPC); logMessage("READ MEM: " + oldMem.toHex()); //qDebug("READ MEM: " + oldMem.toHex()); QByteArray ba; @@ -1869,8 +1762,8 @@ void TrkGdbAdapter::handleDirectWrite3(const TrkResult &response) } void TrkGdbAdapter::handleDirectWrite4(const TrkResult &response) -{ - m_snapshot.registers[RegisterPC] = scratch + 4; +{ + m_snapshot.setRegisterValue(m_session.tid, RegisterPC, scratch + 4); return; logMessage("DIRECT WRITE4: " + response.toString()); if (const int errorCode = response.errorCode()) { @@ -1949,8 +1842,8 @@ void TrkGdbAdapter::directStep(uint addr) { // Write PC: qDebug() << "ADDR: " << addr; - oldPC = m_snapshot.registers[RegisterPC]; - m_snapshot.registers[RegisterPC] = addr; + oldPC = m_snapshot.registerValue(m_session.tid, RegisterPC); + m_snapshot.setRegisterValue(m_session.tid, RegisterPC, addr); QByteArray ba = trkWriteRegisterMessage(RegisterPC, addr); sendTrkMessage(0x13, TrkCB(handleDirectStep1), ba, "Write PC"); } @@ -1959,9 +1852,10 @@ void TrkGdbAdapter::handleDirectStep1(const TrkResult &result) { logMessage("HANDLE DIRECT STEP1: " + stringFromArray(result.data)); QByteArray ba; + const uint pc = oldPC = m_snapshot.registerValue(m_session.tid, RegisterPC); appendByte(&ba, 0x11); // options "step over" - appendInt(&ba, m_snapshot.registers[RegisterPC]); - appendInt(&ba, m_snapshot.registers[RegisterPC]); + appendInt(&ba, pc); + appendInt(&ba, pc); appendInt(&ba, m_session.pid); appendInt(&ba, m_session.tid); sendTrkMessage(0x19, TrkCB(handleDirectStep2), ba, "Direct step"); @@ -1970,8 +1864,8 @@ void TrkGdbAdapter::handleDirectStep1(const TrkResult &result) void TrkGdbAdapter::handleDirectStep2(const TrkResult &result) { logMessage("HANDLE DIRECT STEP2: " + stringFromArray(result.data)); - m_snapshot.registers[RegisterPC] = oldPC; - QByteArray ba = trkWriteRegisterMessage(RegisterPC, oldPC); + m_snapshot.setRegisterValue(m_session.tid, RegisterPC, oldPC); + QByteArray ba = trkWriteRegisterMessage(RegisterPC, oldPC); sendTrkMessage(0x13, TrkCB(handleDirectStep3), ba, "Write PC"); } @@ -2000,36 +1894,12 @@ void TrkGdbAdapter::shutdown() void TrkGdbAdapter::trkReloadRegisters() { - // Take advantage of direct access to cached register values. - QTC_ASSERT(m_snapshot.registerValid, /**/); - RegisterHandler *handler = m_engine->registerHandler(); - Registers registers = handler->registers(); - - QTC_ASSERT(registers.size() >= 26, - qDebug() << "HAVE: " << registers.size(); return); - for (int i = 0; i < 16; ++i) { - Register ® = registers[i]; - QString value = hexxNumber(m_snapshot.registers[i]); - reg.changed = (value != reg.value); - if (reg.changed) - reg.value = value; - } - Register ® = registers[25]; - QString value = hexxNumber(m_snapshot.registers[16]); - reg.changed = (value != reg.value); - if (reg.changed) - reg.value = value; - handler->setRegisters(registers); + m_snapshot.syncRegisters(m_session.tid, m_engine->registerHandler()); } void TrkGdbAdapter::trkReloadThreads() { - // Take advantage of direct access to cached register values. - QTC_ASSERT(m_snapshot.registerValid, /**/); - Threads threads; - foreach (const Session::Thread &thread, m_session.threads) - threads.append(thread); - m_engine->threadsHandler()->setThreads(threads); + m_snapshot.syncThreads(m_engine->threadsHandler()); } } // namespace Internal diff --git a/src/plugins/debugger/gdb/trkgdbadapter.h b/src/plugins/debugger/gdb/trkgdbadapter.h index b24c8cd1f9645b9ed46b98b322348dd19acbba30..bed271e6c69bacbd67ef299d419db3e128de0c96 100644 --- a/src/plugins/debugger/gdb/trkgdbadapter.h +++ b/src/plugins/debugger/gdb/trkgdbadapter.h @@ -133,6 +133,9 @@ private: const QVariant &cookie = QVariant()); Q_SLOT void handleTrkResult(const trk::TrkResult &data); Q_SLOT void handleTrkError(const QString &msg); + void trkContinueAll(const char *why); + void handleTrkContinueNext(const TrkResult &result); + void trkContinueNext(int threadIndex); // convenience messages void sendTrkAck(trk::byte token); @@ -140,7 +143,6 @@ private: void handleCpuType(const TrkResult &result); void handleCreateProcess(const TrkResult &result); void handleClearBreakpoint(const TrkResult &result); - void handleSignalContinue(const TrkResult &result); void handleStop(const TrkResult &result); void handleSupportMask(const TrkResult &result); void handleTrkVersionsStartGdb(const TrkResult &result); @@ -153,7 +155,6 @@ private: void handleAndReportReadRegister(const TrkResult &result); void handleAndReportReadRegistersAfterStop(const TrkResult &result); void reportRegisters(); - QByteArray memoryReadLogMessage(uint addr, const QByteArray &ba) const; void handleAndReportSetBreakpoint(const TrkResult &result); void handleReadMemoryBuffered(const TrkResult &result); void handleReadMemoryUnbuffered(const TrkResult &result); @@ -161,6 +162,7 @@ private: void handleReadRegisters(const TrkResult &result); void handleWriteRegister(const TrkResult &result); void reportToGdb(const TrkResult &result); + void gdbSetCurrentThread(const QByteArray &cmd, const char *why); //void reportReadMemoryBuffered(const TrkResult &result); //void reportReadMemoryUnbuffered(const TrkResult &result); @@ -182,7 +184,7 @@ private: void handleDirectWrite8(const TrkResult &response); void handleDirectWrite9(const TrkResult &response); - QByteArray trkContinueMessage(); + QByteArray trkContinueMessage(uint threadId); QByteArray trkReadRegistersMessage(); QByteArray trkWriteRegisterMessage(trk::byte reg, uint value); QByteArray trkReadMemoryMessage(const MemoryRange &range); diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index 2103eb2792dd6253038411df900eb73c0a7486dd..bc769fa57a68987f3c6432dc87044dc59f066f1c 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -50,6 +50,8 @@ #include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/actionmanager/command.h> #include <coreplugin/editormanager/editormanager.h> +#include <coreplugin/minisplitter.h> +#include <coreplugin/outputpane.h> #include <texteditor/texteditorsettings.h> #include <extensionsystem/pluginmanager.h> #include <utils/qtcassert.h> @@ -149,6 +151,7 @@ FormEditorW::FormEditorW() : m_actionPrint(0), m_actionPreview(0), m_actionGroupPreviewInStyle(0), + m_previewInStyleMenu(0), m_actionAboutPlugins(0), m_shortcutMapper(new QSignalMapper(this)), m_context(0), @@ -326,7 +329,12 @@ void FormEditorW::fullInit() layout->setMargin(0); layout->setSpacing(0); layout->addWidget(m_toolBar); - layout->addWidget(m_editorWidget); + // Avoid mode switch to 'Edit' mode when the application started by + // 'Run' in 'Design' mode emits output. + Core::MiniSplitter *splitter = new Core::MiniSplitter(Qt::Vertical); + splitter->addWidget(m_editorWidget); + splitter->addWidget(new Core::OutputPanePlaceHolder(m_designMode, splitter)); + layout->addWidget(splitter); m_modeWidget->setLayout(layout); Core::Context designerContexts = m_contexts; @@ -523,7 +531,10 @@ void FormEditorW::setupActions() // Preview in style... m_actionGroupPreviewInStyle = m_fwm->actionGroupPreviewInStyle(); - mformtools->addMenu(createPreviewStyleMenu(am, m_actionGroupPreviewInStyle)); + Core::ActionContainer *previewAC = createPreviewStyleMenu(am, m_actionGroupPreviewInStyle); + m_previewInStyleMenu = previewAC->menu(); + mformtools->addMenu(previewAC); + setPreviewMenuEnabled(false); // Form settings createSeparator(this, am, m_contexts, medit, QLatin1String("FormEditor.Edit.Separator2"), Core::Constants::G_EDIT_OTHER); @@ -598,6 +609,12 @@ Core::ActionContainer *FormEditorW::createPreviewStyleMenu(Core::ActionManager * return menuPreviewStyle; } +void FormEditorW::setPreviewMenuEnabled(bool e) +{ + m_actionPreview->setEnabled(e); + m_previewInStyleMenu->setEnabled(e); +} + void FormEditorW::saveSettings(QSettings *s) { s->beginGroup(settingsGroup); @@ -721,8 +738,7 @@ void FormEditorW::activeFormWindowChanged(QDesignerFormWindowInterface *afw) qDebug() << Q_FUNC_INFO << afw << " of " << m_fwm->formWindowCount(); m_fwm->closeAllPreviews(); - m_actionPreview->setEnabled(afw != 0); - m_actionGroupPreviewInStyle->setEnabled(afw != 0); + setPreviewMenuEnabled(afw != 0); } EditorData FormEditorW::activeEditor() const diff --git a/src/plugins/designer/formeditorw.h b/src/plugins/designer/formeditorw.h index 09f9e011b3daebd2d5da930e2b41281a0b898f93..3c49c9fb127c3e3239d547a49e937e9e43dd7ce9 100644 --- a/src/plugins/designer/formeditorw.h +++ b/src/plugins/designer/formeditorw.h @@ -46,6 +46,7 @@ class QDesignerFormWindowInterface; class QAction; class QActionGroup; +class QMenu; class QSignalMapper; class QSettings; class QToolBar; @@ -124,6 +125,7 @@ private slots: void currentEditorChanged(Core::IEditor *editor); void toolChanged(int); void print(); + void setPreviewMenuEnabled(bool e); void updateShortcut(QObject *command); void closeFormEditorsForXmlEditors(QList<Core::IEditor*> editors); @@ -181,6 +183,7 @@ private: QAction *m_actionPrint; QAction *m_actionPreview; QActionGroup *m_actionGroupPreviewInStyle; + QMenu *m_previewInStyleMenu; QAction *m_actionAboutPlugins; QAction *m_modeActionSeparator; QSignalMapper *m_shortcutMapper; diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp index 2aad64b1ab08dbb04231d26b3b64de9e8c583a6e..2dc9323683241e23751d6e565044cb972b884981 100644 --- a/src/plugins/find/findtoolbar.cpp +++ b/src/plugins/find/findtoolbar.cpp @@ -97,9 +97,11 @@ FindToolBar::FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumen m_ui.findEdit->setCompleter(m_findCompleter); m_ui.replaceEdit->setCompleter(m_replaceCompleter); - m_ui.findEdit->setSide(Utils::FancyLineEdit::Right); QMenu *lineEditMenu = new QMenu(m_ui.findEdit); - m_ui.findEdit->setMenu(lineEditMenu); + m_ui.findEdit->setButtonMenu(Utils::FancyLineEdit::Left, lineEditMenu); + m_ui.findEdit->setButtonVisible(Utils::FancyLineEdit::Left, true); + m_ui.findEdit->setPlaceholderText(QString()); + m_ui.replaceEdit->setPlaceholderText(QString()); connect(m_ui.findEdit, SIGNAL(textChanged(const QString&)), this, SLOT(invokeFindIncremental())); connect(m_ui.findEdit, SIGNAL(returnPressed()), this, SLOT(invokeFindEnter())); @@ -503,27 +505,33 @@ void FindToolBar::updateIcons() bool casesensitive = effectiveFlags & IFindSupport::FindCaseSensitively; bool wholewords = effectiveFlags & IFindSupport::FindWholeWords; bool regexp = effectiveFlags & IFindSupport::FindRegularExpression; - QPixmap pixmap(17, 17); + int width = 0; + if (casesensitive) width += 6; + if (wholewords) width += 6; + if (regexp) width += 6; + if (width == 0) width = 18; + --width; + QPixmap pixmap(width, 17); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); - int x = 16; + int x = 0; if (casesensitive) { - painter.drawPixmap(x - 10, 0, m_casesensitiveIcon); - x -= 6; + painter.drawPixmap(x - 6, 0, m_casesensitiveIcon); + x += 6; } if (wholewords) { - painter.drawPixmap(x - 10, 0, m_wholewordsIcon); - x -= 6; + painter.drawPixmap(x - 6, 0, m_wholewordsIcon); + x += 6; } if (regexp) { - painter.drawPixmap(x - 10, 0, m_regexpIcon); + painter.drawPixmap(x - 6, 0, m_regexpIcon); } if (!casesensitive && !wholewords && !regexp) { QPixmap mag(Core::Constants::ICON_MAGNIFIER); painter.drawPixmap(0, (pixmap.height() - mag.height()) / 2, mag); } - m_ui.findEdit->setPixmap(pixmap); + m_ui.findEdit->setButtonPixmap(Utils::FancyLineEdit::Left, pixmap); } IFindSupport::FindFlags FindToolBar::effectiveFindFlags() diff --git a/src/plugins/find/findwidget.ui b/src/plugins/find/findwidget.ui index 59153e49362643e69f69e8bd4d64b2e91b22f61a..0e9b1cafe7a1d3552e787ee0c3cf38530bf19be4 100644 --- a/src/plugins/find/findwidget.ui +++ b/src/plugins/find/findwidget.ui @@ -40,7 +40,7 @@ </widget> </item> <item row="0" column="1"> - <widget class="Utils::FancyLineEdit" name="findEdit"/> + <widget class="Utils::FilterLineEdit" name="findEdit"/> </item> <item row="0" column="2"> <layout class="QHBoxLayout" name="horizontalLayout_2"> @@ -100,7 +100,7 @@ </widget> </item> <item row="1" column="1"> - <widget class="QLineEdit" name="replaceEdit"/> + <widget class="Utils::FilterLineEdit" name="replaceEdit"/> </item> <item row="1" column="2"> <layout class="QHBoxLayout" name="horizontalLayout"> @@ -162,9 +162,9 @@ </widget> <customwidgets> <customwidget> - <class>Utils::FancyLineEdit</class> + <class>Utils::FilterLineEdit</class> <extends>QLineEdit</extends> - <header location="global">utils/fancylineedit.h</header> + <header location="global">utils/filterlineedit.h</header> </customwidget> </customwidgets> <tabstops> diff --git a/src/plugins/find/searchresulttreeitemroles.h b/src/plugins/find/searchresulttreeitemroles.h index 94b409529d5a8b3b7fddf690cffc937e96964410..eae775192b3164a61cc768962ffaa5d66ee2c217 100644 --- a/src/plugins/find/searchresulttreeitemroles.h +++ b/src/plugins/find/searchresulttreeitemroles.h @@ -44,7 +44,8 @@ enum Roles ResultLineNumberRole, SearchTermStartRole, SearchTermLengthRole, - RowOfItem // The ?-th child of its parent is this this item + RowOfItem, // The ?-th child of its parent is this this item + TextRole // for files == FileNameRole, for results == ResultLineRole }; } // namespace Internal diff --git a/src/plugins/find/searchresulttreemodel.cpp b/src/plugins/find/searchresulttreemodel.cpp index 621664e30496d86f605172a771e3dc724de58fb4..080edd5c5851f2e8360e291b66cdab965416d7bd 100644 --- a/src/plugins/find/searchresulttreemodel.cpp +++ b/src/plugins/find/searchresulttreemodel.cpp @@ -36,6 +36,8 @@ #include <QtGui/QFontMetrics> #include <QtGui/QColor> #include <QtGui/QPalette> +#include <QtGui/QTextDocument> +#include <QtGui/QTextCursor> #include <QtCore/QDir> #include <QtCore/QDebug> @@ -195,6 +197,7 @@ QVariant SearchResultTreeModel::data(const SearchResultTextRow *row, int role) c case Qt::FontRole: result = m_textEditorFont; break; + case ItemDataRoles::TextRole: case ItemDataRoles::ResultLineRole: case Qt::DisplayRole: result = row->rowText(); @@ -252,6 +255,7 @@ QVariant SearchResultTreeModel::data(const SearchResultFile *file, int role) con + QLatin1Char(')'); return QVariant(result); } + case ItemDataRoles::TextRole: case ItemDataRoles::FileNameRole: case Qt::ToolTipRole: return QVariant(QDir::toNativeSeparators(file->fileName())); @@ -349,7 +353,7 @@ void SearchResultTreeModel::clear() reset(); } -QModelIndex SearchResultTreeModel::next(const QModelIndex &idx) const +QModelIndex SearchResultTreeModel::next(const QModelIndex &idx, bool includeTopLevel) const { QModelIndex parent = idx.parent(); if (parent.isValid()) { @@ -367,6 +371,8 @@ QModelIndex SearchResultTreeModel::next(const QModelIndex &idx) const // Wrap around nextParent = index(0,0); } + if (includeTopLevel) + return nextParent; return nextParent.child(0, 0); } } else { @@ -376,7 +382,7 @@ QModelIndex SearchResultTreeModel::next(const QModelIndex &idx) const return QModelIndex(); } -QModelIndex SearchResultTreeModel::prev(const QModelIndex &idx) const +QModelIndex SearchResultTreeModel::prev(const QModelIndex &idx, bool includeTopLevel) const { QModelIndex parent = idx.parent(); if (parent.isValid()) { @@ -385,6 +391,8 @@ QModelIndex SearchResultTreeModel::prev(const QModelIndex &idx) const // Same parent return index(row - 1, 0, parent); } else { + if (includeTopLevel) + return parent; // Prev parent int parentRow = parent.row(); QModelIndex prevParent; @@ -399,10 +407,56 @@ QModelIndex SearchResultTreeModel::prev(const QModelIndex &idx) const } else { // We are on a top level item int row = idx.row(); + QModelIndex prevParent; if (row > 0) { - QModelIndex prevParent = index(row - 1, 0); - return prevParent.child(rowCount(prevParent) ,0); + prevParent = index(row - 1, 0); + } else { + // wrap around + prevParent = index(rowCount() -1, 0); } + return prevParent.child(rowCount(prevParent) -1,0); } return QModelIndex(); } + +QModelIndex SearchResultTreeModel::find(const QRegExp &expr, const QModelIndex &index, QTextDocument::FindFlags flags) +{ + QModelIndex resultIndex; + QModelIndex currentIndex = index; + bool backward = (flags & QTextDocument::FindBackward); + + do { + if (backward) + currentIndex = prev(currentIndex, true); + else + currentIndex = next(currentIndex, true); + if (currentIndex.isValid()) { + const QString &text = data(currentIndex, ItemDataRoles::TextRole).toString(); + if (expr.indexIn(text) != -1) + resultIndex = currentIndex; + } + } while (!resultIndex.isValid() && currentIndex.isValid() && currentIndex != index); + return resultIndex; +} + +QModelIndex SearchResultTreeModel::find(const QString &term, const QModelIndex &index, QTextDocument::FindFlags flags) +{ + QModelIndex resultIndex; + QModelIndex currentIndex = index; + bool backward = (flags & QTextDocument::FindBackward); + flags = (flags & (~QTextDocument::FindBackward)); // backward is handled by us ourselves + + do { + if (backward) + currentIndex = prev(currentIndex, true); + else + currentIndex = next(currentIndex, true); + if (currentIndex.isValid()) { + const QString &text = data(currentIndex, ItemDataRoles::TextRole).toString(); + QTextDocument doc(text); + if (!doc.find(term, 0, flags).isNull()) + resultIndex = currentIndex; + } + } while (!resultIndex.isValid() && currentIndex.isValid() && currentIndex != index); + return resultIndex; +} diff --git a/src/plugins/find/searchresulttreemodel.h b/src/plugins/find/searchresulttreemodel.h index 89418b45cc05b838e84193028a1c9522246695ff..d143c1213a1d8a9003d3c2708110897087bd2b5a 100644 --- a/src/plugins/find/searchresulttreemodel.h +++ b/src/plugins/find/searchresulttreemodel.h @@ -33,7 +33,9 @@ #include "searchresultwindow.h" #include <QtCore/QAbstractItemModel> +#include <QtCore/QRegExp> #include <QtGui/QFont> +#include <QtGui/QTextDocument> namespace Find { namespace Internal { @@ -62,11 +64,14 @@ public: bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); QVariant headerData(int section, Qt::Orientation orientation, int role) const; - QModelIndex next(const QModelIndex &idx) const; - QModelIndex prev(const QModelIndex &idx) const; + QModelIndex next(const QModelIndex &idx, bool includeTopLevel = false) const; + QModelIndex prev(const QModelIndex &idx, bool includeTopLevel = false) const; QList<int> addResultLines(const QList<SearchResultItem> &items); + QModelIndex find(const QRegExp &expr, const QModelIndex &index, QTextDocument::FindFlags flags); + QModelIndex find(const QString &term, const QModelIndex &index, QTextDocument::FindFlags flags); + signals: void jumpToSearchResult(const QString &fileName, int lineNumber, int searchTermStart, int searchTermLength); diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp index 7af93b2cc40dfbebd1fd25f46ea7521b7d7a134b..45b69f4d7536c33da085edaf1f2025808bb4c2f8 100644 --- a/src/plugins/find/searchresultwindow.cpp +++ b/src/plugins/find/searchresultwindow.cpp @@ -31,8 +31,14 @@ #include "searchresulttreemodel.h" #include "searchresulttreeitems.h" #include "searchresulttreeview.h" +#include "ifindsupport.h" +#include <aggregation/aggregate.h> #include <coreplugin/icore.h> +#include <coreplugin/actionmanager/actionmanager.h> +#include <coreplugin/actionmanager/command.h> +#include <coreplugin/coreconstants.h> +#include <coreplugin/icontext.h> #include <utils/qtcassert.h> #include <QtCore/QFile> @@ -45,6 +51,7 @@ #include <QtGui/QStackedWidget> #include <QtGui/QLabel> #include <QtGui/QFont> +#include <QtGui/QAction> static const char SETTINGSKEYSECTIONNAME[] = "SearchResults"; static const char SETTINGSKEYEXPANDRESULTS[] = "ExpandResults"; @@ -52,6 +59,8 @@ static const char SETTINGSKEYEXPANDRESULTS[] = "ExpandResults"; namespace Find { +namespace Internal { + class WideEnoughLineEdit : public QLineEdit { Q_OBJECT public: @@ -70,31 +79,138 @@ namespace Find { void updateGeometry() { QLineEdit::updateGeometry(); } }; + class SearchResultFindSupport : public IFindSupport + { + Q_OBJECT + public: + SearchResultFindSupport(SearchResultTreeView *view) + : m_view(view) + { + } -struct SearchResultWindowPrivate { - SearchResultWindowPrivate(); + bool supportsReplace() const { return false; } - Internal::SearchResultTreeView *m_searchResultTreeView; - QListWidget *m_noMatchesFoundDisplay; - QToolButton *m_expandCollapseToolButton; - QLabel *m_replaceLabel; - QLineEdit *m_replaceTextEdit; - QToolButton *m_replaceButton; - static const bool m_initiallyExpand = false; - QStackedWidget *m_widget; - SearchResult *m_currentSearch; - QList<SearchResultItem> m_items; - bool m_isShowingReplaceUI; - bool m_focusReplaceEdit; -}; + IFindSupport::FindFlags supportedFindFlags() const + { + return IFindSupport::FindBackward | IFindSupport::FindCaseSensitively + | IFindSupport::FindRegularExpression | IFindSupport::FindWholeWords; + } -SearchResultWindowPrivate::SearchResultWindowPrivate() - : m_currentSearch(0), - m_isShowingReplaceUI(false), - m_focusReplaceEdit(false) -{ + void resetIncrementalSearch() + { + m_incrementalFindStart = QModelIndex(); + } + + void clearResults() { } + + QString currentFindString() const + { + return QString(); + } + + QString completedFindString() const + { + return QString(); + } + + void highlightAll(const QString &txt, IFindSupport::FindFlags findFlags) + { + Q_UNUSED(txt) + Q_UNUSED(findFlags) + return; + } + + IFindSupport::Result findIncremental(const QString &txt, IFindSupport::FindFlags findFlags) + { + if (!m_incrementalFindStart.isValid()) + m_incrementalFindStart = m_view->currentIndex(); + m_view->setCurrentIndex(m_incrementalFindStart); + return find(txt, findFlags); + } + + IFindSupport::Result findStep(const QString &txt, IFindSupport::FindFlags findFlags) + { + IFindSupport::Result result = find(txt, findFlags); + if (result == IFindSupport::Found) + m_incrementalFindStart = m_view->currentIndex(); + return result; + } + + IFindSupport::Result find(const QString &txt, IFindSupport::FindFlags findFlags) + { + if (txt.isEmpty()) + return IFindSupport::NotFound; + QModelIndex index; + if (findFlags & IFindSupport::FindRegularExpression) { + bool sensitive = (findFlags & IFindSupport::FindCaseSensitively); + index = m_view->model()->find(QRegExp(txt, (sensitive ? Qt::CaseSensitive : Qt::CaseInsensitive)), + m_view->currentIndex(), + IFindSupport::textDocumentFlagsForFindFlags(findFlags)); + } else { + index = m_view->model()->find(txt, m_view->currentIndex(), + IFindSupport::textDocumentFlagsForFindFlags(findFlags)); + } + if (index.isValid()) { + m_view->setCurrentIndex(index); + m_view->scrollTo(index); + if (index.parent().isValid()) + m_view->expand(index.parent()); + return IFindSupport::Found; + } + return IFindSupport::NotFound; + } + + bool replaceStep(const QString &before, const QString &after, + IFindSupport::FindFlags findFlags) + { + Q_UNUSED(before) + Q_UNUSED(after) + Q_UNUSED(findFlags) + return false; + } + + int replaceAll(const QString &before, const QString &after, + IFindSupport::FindFlags findFlags) + { + Q_UNUSED(before) + Q_UNUSED(after) + Q_UNUSED(findFlags) + return 0; + } + + private: + SearchResultTreeView *m_view; + QModelIndex m_incrementalFindStart; + }; + + struct SearchResultWindowPrivate { + SearchResultWindowPrivate(); + + Internal::SearchResultTreeView *m_searchResultTreeView; + QListWidget *m_noMatchesFoundDisplay; + QToolButton *m_expandCollapseButton; + QAction *m_expandCollapseAction; + QLabel *m_replaceLabel; + QLineEdit *m_replaceTextEdit; + QToolButton *m_replaceButton; + static const bool m_initiallyExpand = false; + QStackedWidget *m_widget; + SearchResult *m_currentSearch; + QList<SearchResultItem> m_items; + bool m_isShowingReplaceUI; + bool m_focusReplaceEdit; + }; + + SearchResultWindowPrivate::SearchResultWindowPrivate() + : m_currentSearch(0), + m_isShowingReplaceUI(false), + m_focusReplaceEdit(false) + { + } } +using namespace Find::Internal; + SearchResultWindow::SearchResultWindow() : d(new SearchResultWindowPrivate) { d->m_widget = new QStackedWidget; @@ -104,17 +220,25 @@ SearchResultWindow::SearchResultWindow() : d(new SearchResultWindowPrivate) d->m_searchResultTreeView->setFrameStyle(QFrame::NoFrame); d->m_searchResultTreeView->setAttribute(Qt::WA_MacShowFocusRect, false); d->m_widget->addWidget(d->m_searchResultTreeView); + Aggregation::Aggregate * agg = new Aggregation::Aggregate; + agg->add(d->m_searchResultTreeView); + agg->add(new SearchResultFindSupport(d->m_searchResultTreeView)); d->m_noMatchesFoundDisplay = new QListWidget(d->m_widget); d->m_noMatchesFoundDisplay->addItem(tr("No matches found!")); d->m_noMatchesFoundDisplay->setFrameStyle(QFrame::NoFrame); d->m_widget->addWidget(d->m_noMatchesFoundDisplay); - d->m_expandCollapseToolButton = new QToolButton(d->m_widget); - d->m_expandCollapseToolButton->setAutoRaise(true); - d->m_expandCollapseToolButton->setCheckable(true); - d->m_expandCollapseToolButton->setIcon(QIcon(QLatin1String(":/find/images/expand.png"))); - d->m_expandCollapseToolButton->setToolTip(tr("Expand All")); + d->m_expandCollapseButton = new QToolButton(d->m_widget); + d->m_expandCollapseButton->setAutoRaise(true); + + d->m_expandCollapseAction = new QAction(tr("Expand All"), this); + d->m_expandCollapseAction->setCheckable(true); + d->m_expandCollapseAction->setIcon(QIcon(QLatin1String(":/find/images/expand.png"))); + Core::Command *cmd = Core::ICore::instance()->actionManager()->registerAction( + d->m_expandCollapseAction, QLatin1String("Find.ExpandAll"), + Core::Context(Core::Constants::C_GLOBAL)); + d->m_expandCollapseButton->setDefaultAction(cmd->action()); d->m_replaceLabel = new QLabel(tr("Replace with:"), d->m_widget); d->m_replaceLabel->setContentsMargins(12, 0, 5, 0); @@ -128,7 +252,7 @@ SearchResultWindow::SearchResultWindow() : d(new SearchResultWindowPrivate) connect(d->m_searchResultTreeView, SIGNAL(jumpToSearchResult(int,bool)), this, SLOT(handleJumpToSearchResult(int,bool))); - connect(d->m_expandCollapseToolButton, SIGNAL(toggled(bool)), this, SLOT(handleExpandCollapseToolButton(bool))); + connect(d->m_expandCollapseAction, SIGNAL(toggled(bool)), this, SLOT(handleExpandCollapseToolButton(bool))); connect(d->m_replaceTextEdit, SIGNAL(returnPressed()), this, SLOT(handleReplaceButton())); connect(d->m_replaceButton, SIGNAL(clicked()), this, SLOT(handleReplaceButton())); @@ -205,7 +329,7 @@ QWidget *SearchResultWindow::outputWidget(QWidget *) QList<QWidget*> SearchResultWindow::toolBarWidgets() const { - return QList<QWidget*>() << d->m_expandCollapseToolButton << d->m_replaceLabel << d->m_replaceTextEdit << d->m_replaceButton; + return QList<QWidget*>() << d->m_expandCollapseButton << d->m_replaceLabel << d->m_replaceTextEdit << d->m_replaceButton; } SearchResult *SearchResultWindow::startNewSearch(SearchMode searchOrSearchAndReplace) @@ -342,7 +466,7 @@ void SearchResultWindow::readSettings() QSettings *s = Core::ICore::instance()->settings(); if (s) { s->beginGroup(QLatin1String(SETTINGSKEYSECTIONNAME)); - d->m_expandCollapseToolButton->setChecked(s->value(QLatin1String(SETTINGSKEYEXPANDRESULTS), d->m_initiallyExpand).toBool()); + d->m_expandCollapseAction->setChecked(s->value(QLatin1String(SETTINGSKEYEXPANDRESULTS), d->m_initiallyExpand).toBool()); s->endGroup(); } } @@ -352,7 +476,7 @@ void SearchResultWindow::writeSettings() QSettings *s = Core::ICore::instance()->settings(); if (s) { s->beginGroup(QLatin1String(SETTINGSKEYSECTIONNAME)); - s->setValue(QLatin1String(SETTINGSKEYEXPANDRESULTS), d->m_expandCollapseToolButton->isChecked()); + s->setValue(QLatin1String(SETTINGSKEYEXPANDRESULTS), d->m_expandCollapseAction->isChecked()); s->endGroup(); } } diff --git a/src/plugins/find/searchresultwindow.h b/src/plugins/find/searchresultwindow.h index 46932f6fb11f4e8acfe7cc714e3333b613705854..47a80c246824b83feda70db04c6d74a9b25e8d7a 100644 --- a/src/plugins/find/searchresultwindow.h +++ b/src/plugins/find/searchresultwindow.h @@ -43,6 +43,7 @@ QT_END_NAMESPACE namespace Find { namespace Internal { class SearchResultTreeView; + struct SearchResultWindowPrivate; } class SearchResultWindow; @@ -69,7 +70,6 @@ signals: friend class SearchResultWindow; }; -struct SearchResultWindowPrivate; class FIND_EXPORT SearchResultWindow : public Core::IOutputPane { Q_OBJECT @@ -128,7 +128,7 @@ private: void writeSettings(); QList<SearchResultItem> checkedItems() const; - SearchResultWindowPrivate *d; + Internal::SearchResultWindowPrivate *d; }; } // namespace Find diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index ef098ccb05cd50dcf8aa65a8a46478df7f9d0187..58d41653b8576f418186bc0e373b5c34f21c7fed 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -557,7 +557,10 @@ bool GitClient::synchronousReset(const QString &workingDirectory, outputWindow()->append(output); // Note that git exits with 1 even if the operation is successful // Assume real failure if the output does not contain "foo.cpp modified" - if (!rc && !output.contains(QLatin1String("modified"))) { + // or "Unstaged changes after reset" (git 1.7.0). + if (!rc && + (!output.contains(QLatin1String("modified")) + && !output.contains(QLatin1String("Unstaged changes after reset")))) { const QString stdErr = commandOutputFromLocal8Bit(errorText); const QString msg = files.isEmpty() ? tr("Unable to reset %1: %2").arg(workingDirectory, stdErr) : @@ -1413,17 +1416,35 @@ bool GitClient::addAndCommit(const QString &repositoryDirectory, { if (Git::Constants::debug) qDebug() << "GitClient::addAndCommit:" << repositoryDirectory << checkedFiles << origCommitFiles; + const QString renamedSeparator = QLatin1String(" -> "); // Do we need to reset any files that had been added before // (did the user uncheck any previously added files) - const QSet<QString> resetFiles = origCommitFiles.toSet().subtract(checkedFiles.toSet()); - if (!resetFiles.empty()) - if (!synchronousReset(repositoryDirectory, resetFiles.toList())) + // Split up renamed files ('foo.cpp -> foo2.cpp'). + QStringList resetFiles = origCommitFiles.toSet().subtract(checkedFiles.toSet()).toList(); + for (QStringList::iterator it = resetFiles.begin(); it != resetFiles.end(); ++it) { + const int renamedPos = it->indexOf(renamedSeparator); + if (renamedPos != -1) { + const QString newFile = it->mid(renamedPos + renamedSeparator.size()); + it->truncate(renamedPos); + it = resetFiles.insert(++it, newFile); + } + } + + if (!resetFiles.isEmpty()) + if (!synchronousReset(repositoryDirectory, resetFiles)) return false; // Re-add all to make sure we have the latest changes, but only add those that aren't marked - // for deletion + // for deletion. Purge out renamed files ('foo.cpp -> foo2.cpp'). QStringList addFiles = checkedFiles.toSet().subtract(origDeletedFiles.toSet()).toList(); + for (QStringList::iterator it = addFiles.begin(); it != addFiles.end(); ) { + if (it->contains(renamedSeparator)) { + it = addFiles.erase(it); + } else { + ++it; + } + } if (!addFiles.isEmpty()) if (!synchronousAdd(repositoryDirectory, false, addFiles)) return false; diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 9e80d21eb80fea3ef4d7775efcd5876c9e8f0eb8..adc028311f02cd4d0a0070a64750d6e8c8d35df0 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -329,6 +329,7 @@ void HelpPlugin::extensionsInitialized() // we might need to register creators inbuild help filesToRegister.append(QDir::cleanPath(appPath + QLatin1String(DOCPATH "qtcreator.qch"))); + helpManager->registerDocumentation(filesToRegister); } void HelpPlugin::aboutToShutdown() diff --git a/src/plugins/locator/locatorwidget.cpp b/src/plugins/locator/locatorwidget.cpp index 8cb68ab7e98ddbfe7f3908e6657781ba4626337a..135132babfe5cc2b04843bb7c8b3b6b5980df197 100644 --- a/src/plugins/locator/locatorwidget.cpp +++ b/src/plugins/locator/locatorwidget.cpp @@ -46,7 +46,7 @@ QT_END_NAMESPACE #include <coreplugin/modemanager.h> #include <coreplugin/coreconstants.h> #include <coreplugin/fileiconprovider.h> -#include <utils/fancylineedit.h> +#include <utils/filterlineedit.h> #include <utils/qtcassert.h> #include <QtCore/QFileInfo> @@ -266,7 +266,7 @@ LocatorWidget::LocatorWidget(LocatorPlugin *qop) : m_filterMenu(new QMenu(this)), m_refreshAction(new QAction(tr("Refresh"), this)), m_configureAction(new QAction(tr("Configure..."), this)), - m_fileLineEdit(new Utils::FancyLineEdit) + m_fileLineEdit(new Utils::FilterLineEdit) { // Explicitly hide the completion list popup. m_completionList->hide(); @@ -287,12 +287,13 @@ LocatorWidget::LocatorWidget(LocatorPlugin *qop) : setWindowIcon(QIcon(":/locator/images/locator.png")); QPixmap image(Core::Constants::ICON_MAGNIFIER); - m_fileLineEdit->setPixmap(image); + m_fileLineEdit->setButtonPixmap(Utils::FancyLineEdit::Left, image); m_fileLineEdit->setPlaceholderText(tr("Type to locate")); - m_fileLineEdit->setButtonToolTip(tr("Options")); + m_fileLineEdit->setButtonToolTip(Utils::FancyLineEdit::Left, tr("Options")); m_fileLineEdit->setFocusPolicy(Qt::ClickFocus); + m_fileLineEdit->setButtonVisible(Utils::FancyLineEdit::Left, true); // We set click focus since otherwise you will always get two popups - m_fileLineEdit->setButtonFocusPolicy(Qt::ClickFocus); + m_fileLineEdit->setButtonFocusPolicy(Utils::FancyLineEdit::Left, Qt::ClickFocus); m_fileLineEdit->setAttribute(Qt::WA_MacShowFocusRect, false); m_fileLineEdit->installEventFilter(this); @@ -306,11 +307,11 @@ LocatorWidget::LocatorWidget(LocatorPlugin *qop) : m_filterMenu->addAction(m_refreshAction); m_filterMenu->addAction(m_configureAction); - m_fileLineEdit->setMenu( m_filterMenu); + m_fileLineEdit->setButtonMenu(Utils::FancyLineEdit::Left, m_filterMenu); connect(m_refreshAction, SIGNAL(triggered()), m_locatorPlugin, SLOT(refresh())); connect(m_configureAction, SIGNAL(triggered()), this, SLOT(showConfigureDialog())); - connect(m_fileLineEdit, SIGNAL(textEdited(const QString&)), + connect(m_fileLineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(showPopup())); connect(m_completionList, SIGNAL(activated(QModelIndex)), this, SLOT(acceptCurrentEntry())); diff --git a/src/plugins/locator/locatorwidget.h b/src/plugins/locator/locatorwidget.h index 60d4330a3e981a32dc73c7850dc349b03e3868fa..4f112cff768c1aff9182b07d8f13b68a845ef347 100644 --- a/src/plugins/locator/locatorwidget.h +++ b/src/plugins/locator/locatorwidget.h @@ -43,7 +43,7 @@ class QTreeView; QT_END_NAMESPACE namespace Utils { - class FancyLineEdit; + class FilterLineEdit; } namespace Locator { @@ -86,7 +86,7 @@ private: QMenu *m_filterMenu; QAction *m_refreshAction; QAction *m_configureAction; - Utils::FancyLineEdit *m_fileLineEdit; + Utils::FilterLineEdit *m_fileLineEdit; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/addtargetdialog.ui b/src/plugins/projectexplorer/addtargetdialog.ui deleted file mode 100644 index 58f230ac92cf07db738fb841dfb4c5e496d5db51..0000000000000000000000000000000000000000 --- a/src/plugins/projectexplorer/addtargetdialog.ui +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>ProjectExplorer::Internal::AddTargetDialog</class> - <widget class="QDialog" name="ProjectExplorer::Internal::AddTargetDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>343</width> - <height>67</height> - </rect> - </property> - <property name="windowTitle"> - <string>Add target</string> - </property> - <layout class="QFormLayout" name="formLayout"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::AllNonFixedFieldsGrow</enum> - </property> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Target:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QComboBox" name="targetComboBox"/> - </item> - <item row="1" column="0" colspan="2"> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>ProjectExplorer::Internal::AddTargetDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>ProjectExplorer::Internal::AddTargetDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 272e38e0bed10ce321c3d630938dba86a69ad3b3..45b5c0645b122aba596d58573423f7b2cab22c23 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -282,6 +282,7 @@ void BuildManager::showBuildResults() void BuildManager::addToTaskWindow(const ProjectExplorer::Task &task) { + m_outputWindow->registerPositionOf(task); m_taskWindow->addTask(task); } diff --git a/src/plugins/projectexplorer/compileoutputwindow.cpp b/src/plugins/projectexplorer/compileoutputwindow.cpp index a0856c76753cdc6b915f83c1c98dcee0e7997318..78a56462237d90e4e4247a37d2c6edda460a58c9 100644 --- a/src/plugins/projectexplorer/compileoutputwindow.cpp +++ b/src/plugins/projectexplorer/compileoutputwindow.cpp @@ -29,12 +29,17 @@ #include "compileoutputwindow.h" #include "buildmanager.h" +#include "showoutputtaskhandler.h" +#include "task.h" #include <find/basetextfind.h> #include <aggregation/aggregate.h> +#include <extensionsystem/pluginmanager.h> #include <QtGui/QKeyEvent> #include <QtGui/QIcon> +#include <QtGui/QTextBlock> +#include <QtGui/QTextCursor> #include <QtGui/QTextEdit> #include <QtGui/QScrollBar> #include <QtGui/QPlainTextEdit> @@ -54,6 +59,15 @@ CompileOutputWindow::CompileOutputWindow(BuildManager * /*bm*/) agg->add(new Find::BaseTextFind(m_textEdit)); qRegisterMetaType<QTextCharFormat>("QTextCharFormat"); + + m_handler = new ShowOutputTaskHandler(this); + ExtensionSystem::PluginManager::instance()->addObject(m_handler); +} + +CompileOutputWindow::~CompileOutputWindow() +{ + ExtensionSystem::PluginManager::instance()->removeObject(m_handler); + delete m_handler; } bool CompileOutputWindow::hasFocus() @@ -91,6 +105,7 @@ void CompileOutputWindow::appendText(const QString &text, const QTextCharFormat void CompileOutputWindow::clearContents() { m_textEdit->clear(); + m_taskPositions.clear(); } void CompileOutputWindow::visibilityChanged(bool b) @@ -128,3 +143,22 @@ bool CompileOutputWindow::canNavigate() { return false; } + +void CompileOutputWindow::registerPositionOf(const Task &task) +{ + QTextBlock block(m_textEdit->textCursor().block()); + m_taskPositions.insert(task.taskId, block.position() + block.length() + 1); +} + +bool CompileOutputWindow::knowsPositionOf(const Task &task) +{ + return (m_taskPositions.contains(task.taskId)); +} + +void CompileOutputWindow::showPositionOf(const Task &task) +{ + int position = m_taskPositions.value(task.taskId); + QTextCursor newCursor(m_textEdit->document()->findBlock(position)); + newCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); + m_textEdit->setTextCursor(newCursor); +} diff --git a/src/plugins/projectexplorer/compileoutputwindow.h b/src/plugins/projectexplorer/compileoutputwindow.h index 1ad0aba28a455a54a9d595cd6dcb6f4c3198da9d..2065af56a8b0ecbee4899311fd4f751d13c82566 100644 --- a/src/plugins/projectexplorer/compileoutputwindow.h +++ b/src/plugins/projectexplorer/compileoutputwindow.h @@ -31,6 +31,9 @@ #define COMPILEOUTPUTWINDOW_H #include <coreplugin/ioutputpane.h> + +#include <QtCore/QHash> + #include <QtGui/QColor> #include <QtGui/QTextCharFormat> @@ -41,15 +44,20 @@ QT_END_NAMESPACE namespace ProjectExplorer { class BuildManager; +class Task; namespace Internal { +class ShowOutputTaskHandler; + class CompileOutputWindow : public Core::IOutputPane { Q_OBJECT public: CompileOutputWindow(BuildManager *bm); + ~CompileOutputWindow(); + QWidget *outputWidget(QWidget *); QList<QWidget*> toolBarWidgets() const { return QList<QWidget *>(); } QString displayName() const { return tr("Compile Output"); } @@ -67,8 +75,14 @@ public: void goToPrev(); bool canNavigate(); + void registerPositionOf(const Task &task); + bool knowsPositionOf(const Task &task); + void showPositionOf(const Task &task); + private: QPlainTextEdit *m_textEdit; + QHash<unsigned int, int> m_taskPositions; + ShowOutputTaskHandler * m_handler; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/customwizard/customwizardpage.cpp b/src/plugins/projectexplorer/customwizard/customwizardpage.cpp index 37791611adcb1e6f0dc18564d12570fcc2ef9bae..1fbd764ffa935f471640dca4f5d09e42a4b11bcb 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardpage.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizardpage.cpp @@ -155,7 +155,7 @@ QWidget *CustomWizardFieldPage::registerTextEdit(const QString &fieldName, } // QTextEdit QWidget *CustomWizardFieldPage::registerPathChooser(const QString &fieldName, - const CustomWizardField &field) + const CustomWizardField & /*field*/) { Utils::PathChooser *pathChooser = new Utils::PathChooser; registerField(fieldName, pathChooser, "path", SIGNAL(changed(QString))); diff --git a/src/plugins/projectexplorer/gccparser.cpp b/src/plugins/projectexplorer/gccparser.cpp index e2ee1e148010637f75e24e2537623e5fc0161aad..5f7685c7cd333f97171aebea19808752c07caa1f 100644 --- a/src/plugins/projectexplorer/gccparser.cpp +++ b/src/plugins/projectexplorer/gccparser.cpp @@ -42,13 +42,12 @@ namespace { GccParser::GccParser() { - m_regExp.setPattern(QString::fromLatin1(FILE_PATTERN) + QLatin1String("(\\d+):(\\d+:)?\\s(#?(warning|error|note):?\\s)(.+)$")); + m_regExp.setPattern(QString::fromLatin1(FILE_PATTERN) + QLatin1String("(\\d+):(\\d+:)?\\s((fatal |#)?(warning|error|note):?\\s)(.+)$")); m_regExp.setMinimal(true); m_regExpIncluded.setPattern("^.*from\\s([^:]+):(\\d+)(,|:)$"); m_regExpIncluded.setMinimal(true); - // treat ld (and gold) as part of gcc for simplicity // optional path with trailing slash // optional arm-linux-none-thingy // name of executable @@ -99,12 +98,12 @@ void GccParser::stdError(const QString &line) QString filename = m_regExp.cap(1); int lineno = m_regExp.cap(3).toInt(); Task task(Task::Unknown, - m_regExp.cap(7) /* description */, + m_regExp.cap(8) /* description */, filename, lineno, Constants::TASK_CATEGORY_COMPILE); - if (m_regExp.cap(6) == QLatin1String("warning")) + if (m_regExp.cap(7) == QLatin1String("warning")) task.type = Task::Warning; - else if (m_regExp.cap(6) == QLatin1String("error") || + else if (m_regExp.cap(7) == QLatin1String("error") || task.description.startsWith(QLatin1String("undefined reference to"))) task.type = Task::Error; @@ -479,6 +478,17 @@ void ProjectExplorerPlugin::testGccOutputParsers_data() QLatin1String("../../scriptbug/main.cpp"), 5, Constants::TASK_CATEGORY_COMPILE)) << QString(); + + QTest::newRow("gcc 4.5 fatal error") + << QString::fromLatin1("/home/code/test.cpp:54:38: fatal error: test.moc: No such file or directory") + << OutputParserTester::STDERR + << QString() << QString() + << ( QList<ProjectExplorer::Task>() + << Task(Task::Error, + QLatin1String("test.moc: No such file or directory"), + QLatin1String("/home/code/test.cpp"), 54, + Constants::TASK_CATEGORY_COMPILE)) + << QString(); } void ProjectExplorerPlugin::testGccOutputParsers() diff --git a/src/plugins/projectexplorer/itaskhandler.h b/src/plugins/projectexplorer/itaskhandler.h index 753f7bf947b7f8cf79813c7e760cc66b2dd77bec..9514227e579abcb739d0a33d2fb484849b7a5f69 100644 --- a/src/plugins/projectexplorer/itaskhandler.h +++ b/src/plugins/projectexplorer/itaskhandler.h @@ -37,7 +37,6 @@ QT_BEGIN_NAMESPACE class QAction; -class QObject; QT_END_NAMESPACE namespace ProjectExplorer { diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index bdea6c9ef2b53e1fc166c69a28d2728db0e9f1db..12c47ee454bcf6fd0e197efe9df62cef204a1808 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -234,6 +234,8 @@ QString Project::projectDirectory() const QString Project::projectDirectory(const QString &proFile) { + if (proFile.isEmpty()) + return QString(); QFileInfo info(proFile); return info.absoluteDir().path(); } diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index b5734a70fe0e8bb6bfb69036e83190c93a731091..b4a419e29299934f85a101f9abe885497bd3df8b 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -409,10 +409,10 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er // "open with" submenu Core::ActionContainer * const openWith = am->createMenu(ProjectExplorer::Constants::M_OPENFILEWITHCONTEXT); + openWith->setEmptyAction(Core::ActionContainer::EA_None); d->m_openWithMenu = openWith->menu(); d->m_openWithMenu->setTitle(tr("Open With")); - connect(mfilec->menu(), SIGNAL(aboutToShow()), this, SLOT(populateOpenWithMenu())); connect(d->m_openWithMenu, SIGNAL(triggered(QAction *)), this, SLOT(openWithMenuTriggered(QAction *))); @@ -1011,13 +1011,18 @@ bool ProjectExplorerPlugin::openProject(const QString &fileName) return false; } +static inline QList<IProjectManager*> allProjectManagers() +{ + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + return pm->getObjects<IProjectManager>(); +} + QList<Project *> ProjectExplorerPlugin::openProjects(const QStringList &fileNames) { if (debug) qDebug() << "ProjectExplorerPlugin - opening projects " << fileNames; - ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); - QList<IProjectManager*> projectManagers = pm->getObjects<IProjectManager>(); + const QList<IProjectManager*> projectManagers = allProjectManagers(); QList<Project*> openedPro; foreach (const QString &fileName, fileNames) { @@ -1206,6 +1211,7 @@ void ProjectExplorerPlugin::showContextMenu(const QPoint &globalPos, Node *node) contextMenu = d->m_folderMenu; break; case FileNodeType: + populateOpenWithMenu(); contextMenu = d->m_fileMenu; break; default: @@ -2190,4 +2196,28 @@ Internal::ProjectExplorerSettings ProjectExplorerPlugin::projectExplorerSettings return d->m_projectExplorerSettings; } +QStringList ProjectExplorerPlugin::projectFilePatterns() +{ + QStringList patterns; + const Core::MimeDatabase *mdb = Core::ICore::instance()->mimeDatabase(); + foreach(const IProjectManager *pm, allProjectManagers()) + if (const Core::MimeType mt = mdb->findByType(pm->mimeType())) + foreach(const QRegExp &re, mt.globPatterns()) + patterns += re.pattern(); + return patterns; +} + +void ProjectExplorerPlugin::openOpenProjectDialog() +{ + Core::FileManager *fileMananger = Core::ICore::instance()->fileManager(); + const QString projectPatterns = ProjectExplorerPlugin::projectFilePatterns().join(QString(QLatin1Char(' '))); + QString projectFilesFilter = tr("Projects (%1)").arg(projectPatterns); + const QString allFilesFilter = tr("All Files (*)"); + const QString filters = allFilesFilter + QLatin1String(";;") + projectFilesFilter; + const QString path = fileMananger->useProjectsDirectory() ? fileMananger->projectsDirectory() : QString(); + const QStringList files = fileMananger->getOpenFileNames(filters, path, &projectFilesFilter); + if (!files.isEmpty()) + Core::ICore::instance()->openFiles(files); +} + Q_EXPORT_PLUGIN(ProjectExplorerPlugin) diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index d8c3ddea5c1968fe8e78ba2a6795420c3cfdca1e..a1fe9ba6991c787b5cebc5ccb7db529028968456 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -109,6 +109,7 @@ public: // internal public for FlatModel void renameFile(Node *node, const QString &to); + static QStringList projectFilePatterns(); signals: void aboutToShowContextMenu(ProjectExplorer::Project *project, @@ -126,6 +127,7 @@ signals: public slots: void setStartupProject(ProjectExplorer::Project *project = 0); + void openOpenProjectDialog(); private slots: void buildStateChanged(ProjectExplorer::Project * pro); diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index 7d5f198a9e64a7547294cf112545bab6e5f499e2..53a543de1d0fc1470f7cc1b7eb2b4a0ef7c6ec48 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -20,6 +20,7 @@ HEADERS += projectexplorer.h \ itaskhandler.h \ copytaskhandler.h \ showineditortaskhandler.h \ + showoutputtaskhandler.h \ vcsannotatetaskhandler.h \ taskwindow.h \ outputwindow.h \ @@ -80,7 +81,6 @@ HEADERS += projectexplorer.h \ targetselector.h \ targetsettingswidget.h \ doubletabwidget.h \ - addtargetdialog.h \ buildenvironmentwidget.h \ buildconfigdialog.h \ ldparser.h \ @@ -101,6 +101,7 @@ SOURCES += projectexplorer.cpp \ task.cpp \ copytaskhandler.cpp \ showineditortaskhandler.cpp \ + showoutputtaskhandler.cpp \ vcsannotatetaskhandler.cpp \ taskwindow.cpp \ outputwindow.cpp \ @@ -154,7 +155,6 @@ SOURCES += projectexplorer.cpp \ targetselector.cpp \ targetsettingswidget.cpp \ doubletabwidget.cpp \ - addtargetdialog.cpp \ buildenvironmentwidget.cpp \ buildconfigdialog.cpp \ ldparser.cpp \ @@ -171,8 +171,7 @@ FORMS += processstep.ui \ projectexplorersettingspage.ui \ projectwelcomepagewidget.ui \ targetsettingswidget.ui \ - doubletabwidget.ui \ - addtargetdialog.ui + doubletabwidget.ui equals(TEST, 1) { SOURCES += \ diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h index 7a4509972f179bf0484d654c12f3ffe825faf7a8..5a09c20c614f25a8966a6534ee4f6449613709bd 100644 --- a/src/plugins/projectexplorer/projectexplorerconstants.h +++ b/src/plugins/projectexplorer/projectexplorerconstants.h @@ -78,6 +78,7 @@ const char * const RENAMEFILE = "ProjectExplorer.RenameFile"; const char * const SHOW_TASK_IN_EDITOR = "ProjectExplorer.ShowTaskInEditor"; const char * const VCS_ANNOTATE_TASK = "ProjectExplorer.VcsAnnotateTask"; +const char * const SHOW_TASK_OUTPUT = "ProjectExplorer.ShowTaskOutput"; // Run modes const char * const RUNMODE = "ProjectExplorer.RunMode"; diff --git a/src/plugins/projectexplorer/projectwelcomepagewidget.cpp b/src/plugins/projectexplorer/projectwelcomepagewidget.cpp index 2daca8656a6b1cff996c8533c5bb8c6d0fd8e460..e75df35e9b7e655eebb8555b7b9c0414ea775363 100644 --- a/src/plugins/projectexplorer/projectwelcomepagewidget.cpp +++ b/src/plugins/projectexplorer/projectwelcomepagewidget.cpp @@ -28,6 +28,7 @@ **************************************************************************/ #include "projectwelcomepagewidget.h" +#include "projectexplorer.h" #include "ui_projectwelcomepagewidget.h" #include <coreplugin/coreconstants.h> @@ -92,7 +93,8 @@ ProjectWelcomePageWidget::ProjectWelcomePageWidget(QWidget *parent) : connect(ui->projTreeWidget, SIGNAL(activated(QString)), SLOT(slotProjectClicked(QString))); connect(ui->createNewProjectButton, SIGNAL(clicked()), SLOT(slotCreateNewProject())); connect(ui->openProjectButton, SIGNAL(clicked()), - Core::ICore::instance()->mainWindow(), SLOT(openProject())); + ProjectExplorer::ProjectExplorerPlugin::instance(), + SLOT(openOpenProjectDialog())); connect(ui->manageSessionsButton, SIGNAL(clicked()), SIGNAL(manageSessions())); ui->createNewProjectButton->setIcon( diff --git a/src/plugins/projectexplorer/addtargetdialog.cpp b/src/plugins/projectexplorer/showoutputtaskhandler.cpp similarity index 51% rename from src/plugins/projectexplorer/addtargetdialog.cpp rename to src/plugins/projectexplorer/showoutputtaskhandler.cpp index 00e85ff4fd78915ecb067832d72b14e5c96a3dd3..c02f6e623db63527a0eda3e4b6e70b688b3fb241 100644 --- a/src/plugins/projectexplorer/addtargetdialog.cpp +++ b/src/plugins/projectexplorer/showoutputtaskhandler.cpp @@ -27,52 +27,39 @@ ** **************************************************************************/ -#include "addtargetdialog.h" +#include "showoutputtaskhandler.h" -#include "ui_addtargetdialog.h" +#include "projectexplorerconstants.h" +#include "task.h" -#include "project.h" +#include "compileoutputwindow.h" + +#include <QtGui/QAction> -using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; -AddTargetDialog::AddTargetDialog(Project *project, QWidget *parent) : - QDialog(parent), - m_project(project), - ui(new Ui::AddTargetDialog) +ShowOutputTaskHandler::ShowOutputTaskHandler(CompileOutputWindow *window) : + ITaskHandler(QLatin1String(Constants::SHOW_TASK_OUTPUT)), + m_window(window) { - ui->setupUi(this); - - foreach (const QString &id, m_project->possibleTargetIds()) { - for (int i = 0; i <= ui->targetComboBox->count(); ++i) { - const QString displayName = m_project->targetFactory()->displayNameForId(id); - if (i == ui->targetComboBox->count() || - ui->targetComboBox->itemText(i) > displayName) { - ui->targetComboBox->insertItem(i, displayName, id); - break; - } - } - } - ui->targetComboBox->setCurrentIndex(0); - - connect(ui->buttonBox, SIGNAL(accepted()), - this, SLOT(accept())); + Q_ASSERT(m_window); } -AddTargetDialog::~AddTargetDialog() +bool ShowOutputTaskHandler::canHandle(const ProjectExplorer::Task &task) { - delete ui; + return m_window->knowsPositionOf(task); } -void AddTargetDialog::accept() +void ShowOutputTaskHandler::handle(const ProjectExplorer::Task &task) { - int index = ui->targetComboBox->currentIndex(); - QString id(ui->targetComboBox->itemData(index).toString()); - Target *target(m_project->targetFactory()->create(m_project, id)); - if (!target) - return; - m_project->addTarget(target); - - done(QDialog::Accepted); + Q_ASSERT(canHandle(task)); + m_window->popup(); // popup first as this does move the visible area! + m_window->showPositionOf(task); } +QAction *ShowOutputTaskHandler::createAction(QObject *parent) +{ + QAction *outputAction = new QAction(tr("Show &Output"), parent); + outputAction->setToolTip(tr("Show output generating this issue.")); + return outputAction; +} diff --git a/src/plugins/projectexplorer/addtargetdialog.h b/src/plugins/projectexplorer/showoutputtaskhandler.h similarity index 72% rename from src/plugins/projectexplorer/addtargetdialog.h rename to src/plugins/projectexplorer/showoutputtaskhandler.h index fd8f2d4d5d44d8152e7189e696d8d973e86748e1..157de4757cc3883fa241ef774bf047a84d18aefb 100644 --- a/src/plugins/projectexplorer/addtargetdialog.h +++ b/src/plugins/projectexplorer/showoutputtaskhandler.h @@ -27,38 +27,32 @@ ** **************************************************************************/ -#ifndef ADDTARGETDIALOG_H -#define ADDTARGETDIALOG_H +#ifndef PROJECTEXPLORER_SHOWOUTPUTTASKHANDLER_H +#define PROJECTEXPLORER_SHOWOUTPUTTASKHANDLER_H -#include <QDialog> +#include "projectexplorer_export.h" -namespace ProjectExplorer { - -class Project; +#include "itaskhandler.h" +namespace ProjectExplorer { namespace Internal { -namespace Ui { -class AddTargetDialog; -} +class CompileOutputWindow; -class AddTargetDialog : public QDialog +class PROJECTEXPLORER_EXPORT ShowOutputTaskHandler : public ITaskHandler { - Q_OBJECT - public: - explicit AddTargetDialog(Project *project, QWidget *parent = 0); - ~AddTargetDialog(); + ShowOutputTaskHandler(CompileOutputWindow *); -private slots: - void accept(); + bool canHandle(const Task &); + void handle(const Task &task); + QAction *createAction(QObject *parent = 0); private: - Project *m_project; - Ui::AddTargetDialog *ui; + CompileOutputWindow * m_window; }; } // namespace Internal } // namespace ProjectExplorer -#endif // ADDTARGETDIALOG_H +#endif // PROJECTEXPLORER_SHOWOUTPUTTASKHANDLER_H diff --git a/src/plugins/projectexplorer/targetselector.cpp b/src/plugins/projectexplorer/targetselector.cpp index dd920ec46ec5b754dae57c9ce3f37ea74eaceb60..c17433feba3d60990f151ba1c8c0d181ff7320f4 100644 --- a/src/plugins/projectexplorer/targetselector.cpp +++ b/src/plugins/projectexplorer/targetselector.cpp @@ -4,6 +4,7 @@ #include <utils/stylehelper.h> #include <QtGui/QPainter> +#include <QtGui/QMenu> #include <QtGui/QMouseEvent> #include <QtGui/QFontMetrics> @@ -23,7 +24,8 @@ TargetSelector::TargetSelector(QWidget *parent) : m_targetremovebuttondisabled(QLatin1String(":/projectexplorer/images/targetremovebutton_disabled.png")), m_currentTargetIndex(-1), m_addButtonEnabled(true), - m_removeButtonEnabled(false) + m_removeButtonEnabled(false), + m_addButtonMenu(0) { QFont f = font(); f.setPixelSize(10); @@ -94,6 +96,11 @@ void TargetSelector::setRemoveButtonEnabled(bool enabled) m_removeButtonEnabled = enabled; } +void TargetSelector::setAddButtonMenu(QMenu *menu) +{ + m_addButtonMenu = menu; +} + void TargetSelector::setCurrentSubIndex(int subindex) { if (subindex < 0 || @@ -148,8 +155,8 @@ void TargetSelector::mousePressEvent(QMouseEvent *event) } else if (event->x() > ADDBUTTON_WIDTH + (targetWidth() + 1) * m_targets.size()) { // check for add button event->accept(); - if (m_addButtonEnabled) - emit addButtonClicked(); + if (m_addButtonEnabled && m_addButtonMenu) + m_addButtonMenu->popup(mapToGlobal(event->pos())); } else { // find the clicked target button int x = ADDBUTTON_WIDTH; diff --git a/src/plugins/projectexplorer/targetselector.h b/src/plugins/projectexplorer/targetselector.h index b6c2037e4e15ccd28ea10b247ff5e479014ac67c..322e508580209fb06db9bd03d5b26a7fbc4f1783 100644 --- a/src/plugins/projectexplorer/targetselector.h +++ b/src/plugins/projectexplorer/targetselector.h @@ -4,6 +4,10 @@ #include <QtGui/QWidget> #include <QtGui/QPixmap> +QT_BEGIN_NAMESPACE +class QMenu; +QT_END_NAMESPACE + namespace ProjectExplorer { namespace Internal { @@ -40,9 +44,9 @@ public slots: void setCurrentSubIndex(int subindex); void setAddButtonEnabled(bool enabled); void setRemoveButtonEnabled(bool enabled); + void setAddButtonMenu(QMenu *menu); signals: - void addButtonClicked(); void removeButtonClicked(); // This signal is emited whenever the target pointed to by the indices // has changed. @@ -66,6 +70,8 @@ private: int m_currentTargetIndex; bool m_addButtonEnabled; bool m_removeButtonEnabled; + + QMenu *m_addButtonMenu; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index 7bcd1b5db2082d172cc4562b171108e20b3952a9..69a77ae983451116d0751ca0d73c4724f6c70e2a 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -29,7 +29,6 @@ #include "targetsettingspanel.h" -#include "addtargetdialog.h" #include "buildsettingspropertiespage.h" #include "project.h" #include "projectwindow.h" @@ -41,6 +40,7 @@ #include <QtCore/QCoreApplication> #include <QtGui/QLabel> +#include <QtGui/QMenu> #include <QtGui/QMessageBox> #include <QtGui/QVBoxLayout> @@ -63,6 +63,8 @@ TargetSettingsPanelWidget::TargetSettingsPanelWidget(Project *project) : m_panelWidgets[0] = 0; m_panelWidgets[1] = 0; + m_addMenu = new QMenu(this); + setupUi(); connect(m_project, SIGNAL(addedTarget(ProjectExplorer::Target*)), @@ -124,11 +126,13 @@ void TargetSettingsPanelWidget::setupUi() connect(m_selector, SIGNAL(currentChanged(int,int)), this, SLOT(currentTargetChanged(int,int))); - connect(m_selector, SIGNAL(addButtonClicked()), - this, SLOT(addTarget())); connect(m_selector, SIGNAL(removeButtonClicked()), this, SLOT(removeTarget())); + m_selector->setAddButtonMenu(m_addMenu); + connect(m_addMenu, SIGNAL(triggered(QAction*)), + this, SLOT(addTarget(QAction*))); + updateTargetAddAndRemoveButtons(); } @@ -192,10 +196,13 @@ void TargetSettingsPanelWidget::currentTargetChanged(int targetIndex, int subInd m_project->setActiveTarget(target); } -void TargetSettingsPanelWidget::addTarget() +void TargetSettingsPanelWidget::addTarget(QAction *action) { - AddTargetDialog dialog(m_project); - dialog.exec(); + QString id = action->data().toString(); + Target *target(m_project->targetFactory()->create(m_project, id)); + if (!target) + return; + m_project->addTarget(target); } void TargetSettingsPanelWidget::removeTarget() @@ -257,6 +264,23 @@ void TargetSettingsPanelWidget::updateTargetAddAndRemoveButtons() if (!m_selector) return; - m_selector->setAddButtonEnabled(m_project->possibleTargetIds().count() > 0); + m_addMenu->clear(); + + foreach (const QString &id, m_project->possibleTargetIds()) { + QString displayName = m_project->targetFactory()->displayNameForId(id); + QAction *action = new QAction(displayName, m_addMenu); + action->setData(QVariant(id)); + bool added = false; + foreach(QAction *existing, m_addMenu->actions()) { + if (existing->text() > action->text()) { + m_addMenu->insertAction(existing, action); + added = true; + } + } + + if (!added) + m_addMenu->addAction(action); + } + m_selector->setAddButtonEnabled(!m_addMenu->actions().isEmpty()); m_selector->setRemoveButtonEnabled(m_project->targets().count() > 1); } diff --git a/src/plugins/projectexplorer/targetsettingspanel.h b/src/plugins/projectexplorer/targetsettingspanel.h index fa510c69a6e59f9493e562239f4c1e4ca79d3fc3..6d449ec1c7d6804711f5ee9fc7801aa816c23bb6 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.h +++ b/src/plugins/projectexplorer/targetsettingspanel.h @@ -35,6 +35,11 @@ #include <QtGui/QStackedWidget> #include <QtGui/QWidget> +QT_BEGIN_NAMESPACE +class QAction; +class QMenu; +QT_END_NAMESPACE + namespace ProjectExplorer { class Target; @@ -55,8 +60,8 @@ public: private slots: void currentTargetChanged(int targetIndex, int subIndex); - void addTarget(); void removeTarget(); + void addTarget(QAction *); void targetAdded(ProjectExplorer::Target *target); void removedTarget(ProjectExplorer::Target *target); void activeTargetChanged(ProjectExplorer::Target *target); @@ -70,6 +75,7 @@ private: QWidget *m_noTargetLabel; PanelsWidget *m_panelWidgets[2]; QList<Target *> m_targets; + QMenu *m_addMenu; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/targetsettingswidget.cpp b/src/plugins/projectexplorer/targetsettingswidget.cpp index c5a101664d3d04e055583adae44f384685e12e52..36be122706b82725734bccfb7e6c9de20eb3ee8c 100644 --- a/src/plugins/projectexplorer/targetsettingswidget.cpp +++ b/src/plugins/projectexplorer/targetsettingswidget.cpp @@ -15,8 +15,6 @@ TargetSettingsWidget::TargetSettingsWidget(QWidget *parent) : "background-image: url(:/projectexplorer/images/targetseparatorbackground.png);" "}")); m_targetSelector->raise(); - connect(m_targetSelector, SIGNAL(addButtonClicked()), - this, SIGNAL(addButtonClicked())); connect(m_targetSelector, SIGNAL(removeButtonClicked()), this, SIGNAL(removeButtonClicked())); connect(m_targetSelector, SIGNAL(currentChanged(int,int)), @@ -75,6 +73,11 @@ void TargetSettingsWidget::setAddButtonEnabled(bool enabled) m_targetSelector->setAddButtonEnabled(enabled); } +void TargetSettingsWidget::setAddButtonMenu(QMenu *menu) +{ + m_targetSelector->setAddButtonMenu(menu); +} + void TargetSettingsWidget::setRemoveButtonEnabled(bool enabled) { m_targetSelector->setRemoveButtonEnabled(enabled); diff --git a/src/plugins/projectexplorer/targetsettingswidget.h b/src/plugins/projectexplorer/targetsettingswidget.h index b2c987fbbb5885fad2a091f912263795ad0951c1..35a2c6faf13eeb5bec8d799de8509151fd14c83f 100644 --- a/src/plugins/projectexplorer/targetsettingswidget.h +++ b/src/plugins/projectexplorer/targetsettingswidget.h @@ -5,6 +5,10 @@ #include <QWidget> +QT_BEGIN_NAMESPACE +class QMenu; +QT_END_NAMESPACE + namespace ProjectExplorer { namespace Internal { @@ -36,10 +40,10 @@ public slots: void setCurrentIndex(int index); void setCurrentSubIndex(int index); void setAddButtonEnabled(bool enabled); + void setAddButtonMenu(QMenu *menu); void setRemoveButtonEnabled(bool enabled); signals: - void addButtonClicked(); void removeButtonClicked(); void currentChanged(int targetIndex, int subIndex); diff --git a/src/plugins/projectexplorer/task.cpp b/src/plugins/projectexplorer/task.cpp index 31054b339b7904e1780e215f832072c79aca3e5e..947628ba823cc91ee7ac1e3dea230f979a575dbc 100644 --- a/src/plugins/projectexplorer/task.cpp +++ b/src/plugins/projectexplorer/task.cpp @@ -32,31 +32,19 @@ namespace ProjectExplorer { -Task::Task() : type(Unknown), line(-1) -{ } +unsigned int Task::s_nextId = 0; + +Task::Task() : taskId(s_nextId), type(Unknown), line(-1) +{ + ++s_nextId; +} Task::Task(TaskType type_, const QString &description_, const QString &file_, int line_, const QString &category_) : - type(type_), description(description_), file(file_), line(line_), category(category_) -{ } - -Task::Task(const Task &source) : - type(source.type), description(source.description), file(source.file), - line(source.line), category(source.category), formats(source.formats) -{ } - -Task::~Task() -{ } - -Task &Task::operator=(const Task &source) + taskId(s_nextId), type(type_), description(description_), file(file_), + line(line_), category(category_) { - type = source.type; - description = source.description; - file = source.file; - line = source.line; - category = source.category; - formats = source.formats; - return *this; + ++s_nextId; } // @@ -64,19 +52,12 @@ Task &Task::operator=(const Task &source) // bool operator==(const Task &t1, const Task &t2) { - return t1.type == t2.type - && t1.line == t2.line - && t1.description == t2.description - && t1.file == t2.file - && t1.category == t2.category; + return t1.taskId == t2.taskId; } uint qHash(const Task &task) { - return static_cast<int>(task.type) + - task.line + - qHash(task.file) + - qHash(task.category); + return task.taskId; } } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/task.h b/src/plugins/projectexplorer/task.h index e91c629e2c96d786d73487939cf6e9eb3a2700c1..db6fa228e09bd897b90c69e707f21a078a2baf5c 100644 --- a/src/plugins/projectexplorer/task.h +++ b/src/plugins/projectexplorer/task.h @@ -51,11 +51,8 @@ public: Task(); Task(TaskType type_, const QString &description_, const QString &file_, int line_, const QString &category_); - Task(const Task &source); - ~Task(); - - Task &operator=(const Task &source); + unsigned int taskId; TaskType type; QString description; QString file; @@ -70,6 +67,8 @@ public: // doesn't work if you split it up, nor are our parsers // anywhere near being that good QList<QTextLayout::FormatRange> formats; +private: + static unsigned int s_nextId; }; bool operator==(const Task &t1, const Task &t2); diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp index 48164c5f9eef22cb6ae513513953e24bb80dfd40..7e438b110815fc10dd7050fd66c0b95d37e9f8d3 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.cpp @@ -185,7 +185,7 @@ ItemLibrary::ItemLibrary(QWidget *parent) : lineEditLayout->addWidget(m_d->m_lineEdit, 1, 1, 1, 1); lineEditLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 2); connect(m_d->m_lineEdit, SIGNAL(filterChanged(QString)), this, SLOT(setSearchFilter(QString))); - connect(m_d->m_lineEdit, SIGNAL(buttonClicked()), this, SLOT(clearLineEditFocus())); + connect(m_d->m_lineEdit, SIGNAL(buttonClicked(Utils::FancyLineEdit::Side)), this, SLOT(clearLineEditFocus())); m_d->m_stackedWidget = new QStackedWidget(this); m_d->m_stackedWidget->addWidget(m_d->m_itemsView); diff --git a/src/plugins/qmldesigner/designercore/filemanager/addarraymembervisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/addarraymembervisitor.cpp index 7d71dcdbfff1023bacc3de7a1048d62c740ec4a8..3652dfe8860561dea441ef767416b34e83af4ab6 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/addarraymembervisitor.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/addarraymembervisitor.cpp @@ -84,6 +84,7 @@ bool AddArrayMemberVisitor::visit(QmlJS::AST::UiObjectDefinition *ast) return !didRewriting(); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void AddArrayMemberVisitor::insertInto(QmlJS::AST::UiArrayBinding *arrayBinding) { UiObjectMember *lastMember = 0; diff --git a/src/plugins/qmldesigner/designercore/filemanager/addobjectvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/addobjectvisitor.cpp index e02dec647e99a5d9f646d27ef648a7b7986cbf0e..2ded16aa2aa730973c12d932692095083e547af7 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/addobjectvisitor.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/addobjectvisitor.cpp @@ -70,6 +70,7 @@ bool AddObjectVisitor::visit(QmlJS::AST::UiObjectDefinition *ast) return !didRewriting(); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void AddObjectVisitor::insertInto(QmlJS::AST::UiObjectInitializer *ast) { UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members, m_propertyOrder); diff --git a/src/plugins/qmldesigner/designercore/filemanager/addpropertyvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/addpropertyvisitor.cpp index d2b1fc81fbee1f79380070adecf1f42630127c7a..3a35d4d2c93400b113ff340e658350377c6f82e7 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/addpropertyvisitor.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/addpropertyvisitor.cpp @@ -58,6 +58,7 @@ bool AddPropertyVisitor::visit(QmlJS::AST::UiObjectDefinition *ast) return false; if (ast->firstSourceLocation().offset == m_parentLocation) { + // FIXME: change this to use the QmlJS::Rewriter class addInMembers(ast->initializer); return false; } @@ -71,6 +72,7 @@ bool AddPropertyVisitor::visit(QmlJS::AST::UiObjectBinding *ast) return false; if (ast->qualifiedTypeNameId->identifierToken.offset == m_parentLocation) { + // FIXME: change this to use the QmlJS::Rewriter class addInMembers(ast->initializer); return false; } @@ -78,6 +80,7 @@ bool AddPropertyVisitor::visit(QmlJS::AST::UiObjectBinding *ast) return !didRewriting(); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void AddPropertyVisitor::addInMembers(QmlJS::AST::UiObjectInitializer *initializer) { UiObjectMemberList *insertAfter = searchMemberToInsertAfter(initializer->members, m_name, m_propertyOrder); diff --git a/src/plugins/qmldesigner/designercore/filemanager/changepropertyvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/changepropertyvisitor.cpp index 2256a342d526907d4898419f273615904da6c40c..73fb0f977132236497f4bd40ffd3267d059e471c 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/changepropertyvisitor.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/changepropertyvisitor.cpp @@ -58,6 +58,7 @@ bool ChangePropertyVisitor::visit(QmlJS::AST::UiObjectDefinition *ast) const quint32 objectStart = ast->firstSourceLocation().offset; if (objectStart == m_parentLocation) { + // FIXME: change this to use the QmlJS::Rewriter class replaceInMembers(ast->initializer, m_name); return false; } @@ -73,6 +74,7 @@ bool ChangePropertyVisitor::visit(QmlJS::AST::UiObjectBinding *ast) const quint32 objectStart = ast->qualifiedTypeNameId->identifierToken.offset; if (objectStart == m_parentLocation) { + // FIXME: change this to use the QmlJS::Rewriter class replaceInMembers(ast->initializer, m_name); return false; } @@ -80,6 +82,7 @@ bool ChangePropertyVisitor::visit(QmlJS::AST::UiObjectBinding *ast) return !didRewriting(); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void ChangePropertyVisitor::replaceInMembers(UiObjectInitializer *initializer, const QString &propertyName) { @@ -125,6 +128,7 @@ void ChangePropertyVisitor::replaceInMembers(UiObjectInitializer *initializer, } } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void ChangePropertyVisitor::replaceMemberValue(UiObjectMember *propertyMember, bool needsSemicolon) { QString replacement = m_value; @@ -164,6 +168,7 @@ void ChangePropertyVisitor::replaceMemberValue(UiObjectMember *propertyMember, b setDidRewriting(true); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this bool ChangePropertyVisitor::isMatchingPropertyMember(const QString &propName, UiObjectMember *member) { @@ -180,6 +185,7 @@ bool ChangePropertyVisitor::isMatchingPropertyMember(const QString &propName, } } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this bool ChangePropertyVisitor::nextMemberOnSameLine(UiObjectMemberList *members) { if (members && members->next && members->next->member) { @@ -189,6 +195,7 @@ bool ChangePropertyVisitor::nextMemberOnSameLine(UiObjectMemberList *members) } } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void ChangePropertyVisitor::insertIntoArray(QmlJS::AST::UiArrayBinding *ast) { if (!ast) diff --git a/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.cpp b/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.cpp index 83a304e931547e9bfd31d6633a65dd017add9971..ac83a55ff17e8e741faca053f055cbb80a71e178 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.cpp @@ -195,6 +195,7 @@ bool QMLRewriter::isMissingSemicolon(QmlJS::AST::Statement *stmt) } } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this QString QMLRewriter::flatten(UiQualifiedId *first) { QString flatId; @@ -209,6 +210,7 @@ QString QMLRewriter::flatten(UiQualifiedId *first) return flatId; } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this bool QMLRewriter::includeSurroundingWhitespace(int &start, int &end) const { QTextDocument *doc = m_textModifier->textDocument(); @@ -249,6 +251,7 @@ bool QMLRewriter::includeSurroundingWhitespace(int &start, int &end) const return paragraphFound; } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void QMLRewriter::includeLeadingEmptyLine(int &start) const { QTextDocument *doc = textModifier()->textDocument(); @@ -273,6 +276,7 @@ void QMLRewriter::includeLeadingEmptyLine(int &start) const start = prevBlock.position(); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this UiObjectMemberList *QMLRewriter::searchMemberToInsertAfter(UiObjectMemberList *members, const QStringList &propertyOrder) { const int objectDefinitionInsertionPoint = propertyOrder.indexOf(QString::null); @@ -305,6 +309,7 @@ UiObjectMemberList *QMLRewriter::searchMemberToInsertAfter(UiObjectMemberList *m return lastNonObjectDef; } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this UiObjectMemberList *QMLRewriter::searchMemberToInsertAfter(UiObjectMemberList *members, const QString &propertyName, const QStringList &propertyOrder) { if (!members) diff --git a/src/plugins/qmldesigner/designercore/filemanager/removepropertyvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/removepropertyvisitor.cpp index a3dcd72f77f9ac1d912787ae79092b2c8ac6c05c..136bf85d4c539690530a09ef9e7ee7737e6f5d44 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/removepropertyvisitor.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/removepropertyvisitor.cpp @@ -48,6 +48,7 @@ RemovePropertyVisitor::RemovePropertyVisitor(QmlDesigner::TextModifier &modifier bool RemovePropertyVisitor::visit(QmlJS::AST::UiObjectBinding *ast) { if (ast->firstSourceLocation().offset == parentLocation) { + // FIXME: change this to use the QmlJS::Rewriter class removeFrom(ast->initializer); } @@ -57,12 +58,14 @@ bool RemovePropertyVisitor::visit(QmlJS::AST::UiObjectBinding *ast) bool RemovePropertyVisitor::visit(QmlJS::AST::UiObjectDefinition *ast) { if (ast->firstSourceLocation().offset == parentLocation) { + // FIXME: change this to use the QmlJS::Rewriter class removeFrom(ast->initializer); } return !didRewriting(); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void RemovePropertyVisitor::removeFrom(QmlJS::AST::UiObjectInitializer *ast) { QString prefix; @@ -88,6 +91,7 @@ void RemovePropertyVisitor::removeFrom(QmlJS::AST::UiObjectInitializer *ast) } } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void RemovePropertyVisitor::removeGroupedProperty(UiObjectDefinition *ast) { int dotIdx = propertyName.indexOf(QLatin1Char('.')); @@ -115,6 +119,7 @@ void RemovePropertyVisitor::removeGroupedProperty(UiObjectDefinition *ast) removeMember(wanted); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void RemovePropertyVisitor::removeMember(UiObjectMember *member) { int start = member->firstSourceLocation().offset; @@ -126,6 +131,7 @@ void RemovePropertyVisitor::removeMember(UiObjectMember *member) setDidRewriting(true); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this bool RemovePropertyVisitor::memberNameMatchesPropertyName(const QString &propertyName, UiObjectMember *ast) { if (UiPublicMember *publicMember = cast<UiPublicMember*>(ast)) diff --git a/src/plugins/qmldesigner/designercore/filemanager/removeuiobjectmembervisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/removeuiobjectmembervisitor.cpp index 3da6a1eeec2e8be6a27b66e2ac8f4c2d8f423a7a..05cdc3ce72f08384e16ef20b28d52960115d209e 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/removeuiobjectmembervisitor.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/removeuiobjectmembervisitor.cpp @@ -65,6 +65,7 @@ bool RemoveUIObjectMemberVisitor::visit(QmlJS::AST::UiObjectBinding *ast) { retu bool RemoveUIObjectMemberVisitor::visit(QmlJS::AST::UiScriptBinding *ast) { return visitObjectMember(ast); } bool RemoveUIObjectMemberVisitor::visit(QmlJS::AST::UiArrayBinding *ast) { return visitObjectMember(ast); } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this bool RemoveUIObjectMemberVisitor::visitObjectMember(QmlJS::AST::UiObjectMember *ast) { const quint32 memberStart = ast->firstSourceLocation().offset; @@ -106,6 +107,7 @@ UiArrayBinding *RemoveUIObjectMemberVisitor::containingArray() const return 0; } +// FIXME: duplicate code in the QmlJS::Rewriter class, remove this void RemoveUIObjectMemberVisitor::extendToLeadingOrTrailingComma(QmlJS::AST::UiArrayBinding *parentArray, QmlJS::AST::UiObjectMember *ast, int &start, diff --git a/src/plugins/qmldesigner/designercore/model/internalnode.cpp b/src/plugins/qmldesigner/designercore/model/internalnode.cpp index 442e67c3aeea8e9ac6225ceab7a38c0387e0af9d..74352517a8e9c8a8dda6632f5a0b9f73ec6383ea 100644 --- a/src/plugins/qmldesigner/designercore/model/internalnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/internalnode.cpp @@ -48,9 +48,9 @@ namespace Internal { */ InternalNode::InternalNode() : - m_valid(false), m_majorVersion(0), - m_minorVersion(0) + m_minorVersion(0), + m_valid(false) { } diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index f72676e8801b09f21e1860d237a83496f1eac065..f14efdb6e2db9e11df082b05010b3c66fc211692 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -360,6 +360,7 @@ void DesignModeWidget::readSettings() if (settings->contains("MainSplitter")) { const QByteArray splitterState = settings->value("MainSplitter").toByteArray(); m_mainSplitter->restoreState(splitterState); + m_mainSplitter->setOpaqueResize(); // force opaque resize since it used to be off } settings->endGroup(); } @@ -697,7 +698,6 @@ void DesignModeWidget::setup() m_mainSplitter->addWidget(m_rightSideBar); // Finishing touches: - m_mainSplitter->setOpaqueResize(false); m_mainSplitter->setStretchFactor(1, 1); m_mainSplitter->setSizes(QList<int>() << 150 << 300 << 150); diff --git a/src/plugins/qmljseditor/qmljscodecompletion.cpp b/src/plugins/qmljseditor/qmljscodecompletion.cpp index 9b2603abaf102cab39bd1341fc377c93482ac57b..7a6e413858b5fecc26be21368dd6815fcd2c43a0 100644 --- a/src/plugins/qmljseditor/qmljscodecompletion.cpp +++ b/src/plugins/qmljseditor/qmljscodecompletion.cpp @@ -217,9 +217,7 @@ public: private: void insertProperty(const QString &name, const Interpreter::Value *value) { - if (_context->lookupMode() == Interpreter::Context::JSLookup || - ! dynamic_cast<const Interpreter::ASTVariableReference *>(value)) - _properties.insert(name, value); + _properties.insert(name, value); } virtual bool processProperty(const QString &name, const Interpreter::Value *value) diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 9ca3deb24488b2650d9e2ce639cb85cdaba03fea..536deb0bf7a8c45e80c8434c95bdaff9e6a076f1 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -81,15 +81,6 @@ using namespace QmlJS; using namespace QmlJS::AST; using namespace QmlJSEditor::Internal; -static int blockBraceDepth(const QTextBlock &block) -{ - int state = block.userState(); - if (state == -1) - return 0; - - return (state >> 8) & 0xFF; -} - static int blockStartState(const QTextBlock &block) { int state = block.userState(); diff --git a/src/plugins/qmljsinspector/qmljsinspectorcontext.cpp b/src/plugins/qmljsinspector/qmljsinspectorcontext.cpp index 3a687adf5c9fe570ed68326a5737d0aa22a091ac..2d68c40e060bb5b9a08d1cd313c7ceb5a58c2564 100644 --- a/src/plugins/qmljsinspector/qmljsinspectorcontext.cpp +++ b/src/plugins/qmljsinspector/qmljsinspectorcontext.cpp @@ -39,8 +39,13 @@ using namespace QmlJSInspector::Constants; InspectorContext::InspectorContext(QWidget *widget) : IContext(widget), +<<<<<<< HEAD:src/plugins/qmljsinspector/qmljsinspectorcontext.cpp m_widget(widget), m_context(C_INSPECTOR) +======= + m_context(Constants::C_INSPECTOR), + m_widget(widget) +>>>>>>> 6dc4a039f2cb50a02a0e15265548547b94a6dc9d:src/plugins/qmlinspector/inspectorcontext.cpp { } diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp index c84cd25a8844e0e7c926dd2c73b7401488cfb1d6..a44cbb90d049ff5bd32d041a49bb45dc0ef0b136 100644 --- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp +++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp @@ -34,6 +34,7 @@ #include <coreplugin/helpmanager.h> #include <coreplugin/coreconstants.h> #include <coreplugin/mainwindow.h> +#include <projectexplorer/projectexplorer.h> #include <utils/pathchooser.h> @@ -92,7 +93,9 @@ GettingStartedWelcomePageWidget::GettingStartedWelcomePageWidget(QWidget *parent connect(ui->nextTipBtn, SIGNAL(clicked()), this, SLOT(slotNextTip())); connect(ui->prevTipBtn, SIGNAL(clicked()), this, SLOT(slotPrevTip())); - connect(ui->openProjectButton, SIGNAL(clicked()), Core::ICore::instance()->mainWindow(), SLOT(openProject())); + connect(ui->openProjectButton, SIGNAL(clicked()), + ProjectExplorer::ProjectExplorerPlugin::instance(), + SLOT(openOpenProjectDialog())); connect(ui->createNewProjectButton, SIGNAL(clicked()), this, SLOT(slotCreateNewProject())); ui->createNewProjectButton->setIcon( diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp index 3541325b09e1abaaa2cbaf5b0bd5263faeea3176..920a3408e9d511726a1d445c1a93ccf158c0f932 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp @@ -31,116 +31,64 @@ #include "maemopackagecreationstep.h" #include "maemotoolchain.h" +#include "profilewrapper.h" -#include <qt4projectmanager/profilereader.h> #include <qt4projectmanager/qt4buildconfiguration.h> #include <qt4projectmanager/qt4project.h> #include <qt4projectmanager/qt4target.h> -#include <prowriter.h> - #include <QtCore/QCryptographicHash> #include <QtCore/QFile> #include <QtCore/QFileInfo> -namespace { - QString pathVar(const QString &var) - { - return var + QLatin1String(".path"); - } - - QString filesVar(const QString &var) - { - return var + QLatin1String(".files"); - } - - const QLatin1String InstallsVar("INSTALLS"); - const QLatin1String TargetVar("target"); -} - namespace Qt4ProjectManager { namespace Internal { MaemoPackageContents::MaemoPackageContents(MaemoPackageCreationStep *packageStep) : QAbstractTableModel(packageStep), m_packageStep(packageStep), - m_proFileOption(new ProFileOption), - m_proFileReader(new ProFileReader(m_proFileOption.data())), m_modified(false), - m_proFile(0) + m_initialized(false) { } MaemoPackageContents::~MaemoPackageContents() {} -bool MaemoPackageContents::init() -{ - return m_proFile ? true : buildModel(); -} - bool MaemoPackageContents::buildModel() const { - m_deployables.clear(); - const Qt4ProFileNode * const proFileNode = m_packageStep - ->qt4BuildConfiguration()->qt4Target()->qt4Project()->rootProjectNode(); - if (m_proFileName.isEmpty()) { - m_proFileName = proFileNode->path(); - m_proDir = QFileInfo(m_proFileName).dir(); - } - - resetProFileContents(); - if (!m_proFile) - return false; - - const QStringList elemList = m_proFileReader->values(InstallsVar, m_proFile); - bool targetFound = false; - foreach (const QString &elem, elemList) { - const QStringList paths - = m_proFileReader->values(pathVar(elem), m_proFile); - if (paths.count() != 1) { - qWarning("Error: Variable %s has %d values.", - qPrintable(pathVar(elem)), paths.count()); - continue; - } - - const QStringList files - = m_proFileReader->values(filesVar(elem), m_proFile); - if (files.isEmpty() && elem != TargetVar) { - qWarning("Error: Variable %s has no RHS.", - qPrintable(filesVar(elem))); - continue; - } - - if (elem == TargetVar) { - m_deployables.prepend(MaemoDeployable(m_packageStep->localExecutableFilePath(), - paths.first())); - targetFound = true; - } else { - foreach (const QString &file, files) - m_deployables << MaemoDeployable(cleanPath(file), paths.first()); - } - } + if (m_initialized) + return true; - if (!targetFound) { + m_deployables.clear(); + QSharedPointer<ProFileWrapper> proFileWrapper + = m_packageStep->proFileWrapper(); + const ProFileWrapper::InstallsList &installs = proFileWrapper->installs(); + if (installs.targetPath.isEmpty()) { + const Qt4ProFileNode * const proFileNode + = m_packageStep->qt4BuildConfiguration()->qt4Target() + ->qt4Project()->rootProjectNode(); const QString remoteDir = proFileNode->projectType() == LibraryTemplate ? QLatin1String("/usr/local/lib") : QLatin1String("/usr/local/bin"); m_deployables.prepend(MaemoDeployable(m_packageStep->localExecutableFilePath(), remoteDir)); - QString errorString; - if (!readProFileContents(&errorString)) { - qWarning("Error reading .pro file: %s", qPrintable(errorString)); + if (!proFileWrapper->addInstallsTarget(remoteDir)) { + qWarning("Error updating .pro file."); return false; } - addValueToProFile(pathVar(TargetVar), remoteDir); - addValueToProFile(InstallsVar, TargetVar); - if (!writeProFileContents(&errorString)) { - qWarning("Error writing .pro file: %s", qPrintable(errorString)); - return false; + } else { + m_deployables.prepend(MaemoDeployable(m_packageStep->localExecutableFilePath(), + installs.targetPath)); + } + foreach (const ProFileWrapper::InstallsElem &elem, installs.normalElems) { + foreach (const QString &file, elem.files) { + m_deployables << MaemoDeployable(proFileWrapper->absFilePath(file), + elem.path); } } - m_modified = true; + m_initialized = true; + m_modified = true; // ??? return true; } @@ -153,21 +101,16 @@ MaemoDeployable MaemoPackageContents::deployableAt(int row) const bool MaemoPackageContents::addDeployable(const MaemoDeployable &deployable, QString *error) { - if (m_deployables.contains(deployable) || deployableAt(0) == deployable) + if (m_deployables.contains(deployable)) { + *error = tr("File already in list."); return false; + } - if (!readProFileContents(error)) - return false; - - QCryptographicHash elemHash(QCryptographicHash::Md5); - elemHash.addData(deployable.localFilePath.toUtf8()); - const QString elemName = QString::fromAscii(elemHash.result().toHex()); - addFileToProFile(filesVar(elemName), deployable.localFilePath); - addValueToProFile(pathVar(elemName), deployable.remoteDir); - addValueToProFile(InstallsVar, elemName); - - if (!writeProFileContents(error)) + if (!m_packageStep->proFileWrapper()->addInstallsElem(deployable.remoteDir, + deployable.localFilePath)) { + *error = tr("Failed to update .pro file."); return false; + } beginInsertRows(QModelIndex(), rowCount(), rowCount()); m_deployables << deployable; @@ -180,44 +123,21 @@ bool MaemoPackageContents::removeDeployableAt(int row, QString *error) Q_ASSERT(row > 0 && row < rowCount()); const MaemoDeployable &deployable = deployableAt(row); - const QString elemToRemove = findInstallsElem(deployable); - if (elemToRemove.isEmpty()) { - *error = tr("Inconsistent model: Deployable not found in .pro file."); - return false; - } - - if (!readProFileContents(error)) - return false; - - const QString filesVarName = filesVar(elemToRemove); - const bool isOnlyElem - = m_proFileReader->values(filesVarName, m_proFile).count() == 1; - bool success - = removeFileFromProFile(filesVarName, deployable.localFilePath); - if (success && isOnlyElem) { - success = removeValueFromProFile(pathVar(elemToRemove), - deployable.remoteDir); - if (success) - success = removeValueFromProFile(InstallsVar, elemToRemove); - } - if (!success) { - *error = tr("Could not remove deployable from .pro file."); + if (!m_packageStep->proFileWrapper() + ->removeInstallsElem(deployable.remoteDir, deployable.localFilePath)) { + *error = tr("Could not update .pro file."); return false; } - if (!writeProFileContents(error)) - return false; - beginRemoveRows(QModelIndex(), row, row); - m_deployables.removeAt(row - 1); + m_deployables.removeAt(row); endRemoveRows(); return true; } int MaemoPackageContents::rowCount(const QModelIndex &parent) const { - if (!m_proFile) - buildModel(); + buildModel(); return parent.isValid() ? 0 : m_deployables.count(); } @@ -254,29 +174,11 @@ bool MaemoPackageContents::setData(const QModelIndex &index, || role != Qt::EditRole) return false; - QString error; - if (!readProFileContents(&error)) { - qWarning("%s", qPrintable(error)); - return false; - } - MaemoDeployable &deployable = m_deployables[index.row()]; - const QString elemToChange = findInstallsElem(deployable); - if (elemToChange.isEmpty()) { - qWarning("Error: Inconsistent model. " - "INSTALLS element not found in .pro file"); - return false; - } - const QString pathElem = pathVar(elemToChange); - if (!removeValueFromProFile(pathElem, deployable.remoteDir)) { - qWarning("Error: Could not change remote path in .pro file."); - return false; - } const QString &newRemoteDir = value.toString(); - addValueToProFile(pathElem, newRemoteDir); - - if (!writeProFileContents(&error)) { - qWarning("%s", qPrintable(error)); + if (!m_packageStep->proFileWrapper()->replaceInstallPath(deployable.remoteDir, + deployable.localFilePath, newRemoteDir)) { + qWarning("Error: Could not update .pro file"); return false; } @@ -295,148 +197,8 @@ QVariant MaemoPackageContents::headerData(int section, QString MaemoPackageContents::remoteExecutableFilePath() const { - if (!m_proFile) - buildModel(); - return deployableAt(0).remoteDir + '/' + m_packageStep->executableFileName(); -} - -bool MaemoPackageContents::readProFileContents(QString *error) const -{ - if (!m_proFileLines.isEmpty()) - return true; - - QFile proFileOnDisk(m_proFileName); - if (!proFileOnDisk.open(QIODevice::ReadOnly)) { - *error = tr("Project file '%1' could not be opened for reading.") - .arg(m_proFileName); - return false; - } - const QString proFileContents - = QString::fromLatin1(proFileOnDisk.readAll()); - if (proFileOnDisk.error() != QFile::NoError) { - *error = tr("Project file '%1' could not be read.") - .arg(m_proFileName); - return false; - } - m_proFileLines = proFileContents.split('\n'); - return true; -} - -bool MaemoPackageContents::writeProFileContents(QString *error) const -{ - QFile proFileOnDisk(m_proFileName); - if (!proFileOnDisk.open(QIODevice::WriteOnly)) { - *error = tr("Project file '%1' could not be opened for writing.") - .arg(m_proFileName); - resetProFileContents(); - return false; - } - - // TODO: Disconnect and reconnect FS watcher here. - proFileOnDisk.write(m_proFileLines.join("\n").toLatin1()); - proFileOnDisk.close(); - if (proFileOnDisk.error() != QFile::NoError) { - *error = tr("Project file '%1' could not be written.") - .arg(m_proFileName); - resetProFileContents(); - return false; - } - m_modified = true; - return true; -} - -QString MaemoPackageContents::cleanPath(const QString &relFileName) const -{ - // I'd rather use QDir::cleanPath(), but that doesn't work well - // enough for redundant ".." dirs. - return QFileInfo(m_proFile->directoryName() + '/' - + relFileName).canonicalFilePath(); -} - -QString MaemoPackageContents::findInstallsElem(const MaemoDeployable &deployable) const -{ - const QStringList elems = m_proFileReader->values(InstallsVar, m_proFile); - foreach (const QString &elem, elems) { - const QStringList elemPaths - = m_proFileReader->values(pathVar(elem), m_proFile); - if (elemPaths.count() != 1 || elemPaths.first() != deployable.remoteDir) - continue; - if (elem == TargetVar) - return elem; - const QStringList elemFiles - = m_proFileReader->values(filesVar(elem), m_proFile); - foreach (const QString &file, elemFiles) { - if (cleanPath(file) == deployable.localFilePath) - return elem; - } - } - return QString(); -} - -void MaemoPackageContents::addFileToProFile(const QString &var, - const QString &absFilePath) -{ - ProWriter::addFiles(m_proFile, &m_proFileLines, m_proDir, - QStringList(absFilePath), var); - parseProFile(ParseFromLines); -} - -void MaemoPackageContents::addValueToProFile(const QString &var, - const QString &value) const -{ - ProWriter::addVarValues(m_proFile, &m_proFileLines, m_proDir, - QStringList(value), var); - parseProFile(ParseFromLines); -} - -bool MaemoPackageContents::removeFileFromProFile(const QString &var, - const QString &absFilePath) -{ - const bool success = ProWriter::removeFiles(m_proFile, &m_proFileLines, - m_proDir, QStringList(absFilePath), - QStringList(var)).isEmpty(); - if (success) - parseProFile(ParseFromLines); - else - resetProFileContents(); - return success; -} - -bool MaemoPackageContents::removeValueFromProFile(const QString &var, - const QString &value) -{ - const bool success = ProWriter::removeVarValues(m_proFile, - &m_proFileLines, m_proDir, QStringList(value), - QStringList(var)).isEmpty(); - if (success) - parseProFile(ParseFromLines); - else - resetProFileContents(); - return success; -} - -void MaemoPackageContents::parseProFile(ParseType type) const -{ - if (type == ParseFromLines) { - m_proFile = m_proFileReader->parsedProFile(m_proFileName, false, - m_proFileLines.join("\n")); - } else { - m_proFile = 0; - if (ProFile *pro = m_proFileReader->parsedProFile(m_proFileName)) { - if (m_proFileReader->accept(pro)) - m_proFile = pro; - pro->deref(); - } - } -} - -void MaemoPackageContents::resetProFileContents() const -{ - m_proFileLines.clear(); - parseProFile(ParseFromFile); - if (!m_proFile) - qWarning("Fatal: Could not parse .pro file '%s'.", - qPrintable(m_proFileName)); + return buildModel() ? deployableAt(0).remoteDir + '/' + + m_packageStep->executableFileName() : QString(); } } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h index d5d491d67315c8305daf037a48ae33aede850cba..c74f4c1fd841c3104a99399935f603206db09173 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h @@ -31,17 +31,9 @@ #define MAEMOPACKAGECONTENTS_H #include <QtCore/QAbstractTableModel> -#include <QtCore/QDir> #include <QtCore/QHash> #include <QtCore/QList> -#include <QtCore/QScopedPointer> #include <QtCore/QString> -#include <QtCore/QStringList> - -QT_BEGIN_NAMESPACE -class ProFile; -struct ProFileOption; -QT_END_NAMESPACE namespace Qt4ProjectManager { namespace Internal { @@ -75,8 +67,6 @@ public: MaemoPackageContents(MaemoPackageCreationStep *packageStep); ~MaemoPackageContents(); - bool init(); - virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; MaemoDeployable deployableAt(int row) const; @@ -97,30 +87,11 @@ private: int role = Qt::EditRole); bool buildModel() const; - void resetProFileContents() const; - bool readProFileContents(QString *error) const; - bool writeProFileContents(QString *error) const; - - QString cleanPath(const QString &relFileName) const; - - QString findInstallsElem(const MaemoDeployable &deployable) const; - void addFileToProFile(const QString &var, const QString &absFilePath); - void addValueToProFile(const QString &var, const QString &value) const; - bool removeFileFromProFile(const QString &var, const QString &absFilePath); - bool removeValueFromProFile(const QString &var, const QString &value); - - enum ParseType { ParseFromFile, ParseFromLines }; - void parseProFile(ParseType type) const; const MaemoPackageCreationStep * const m_packageStep; - QScopedPointer<ProFileOption> m_proFileOption; - QScopedPointer<ProFileReader> m_proFileReader; mutable QList<MaemoDeployable> m_deployables; mutable bool m_modified; - mutable ProFile *m_proFile; - mutable QStringList m_proFileLines; // TODO: FS watcher - mutable QString m_proFileName; - mutable QDir m_proDir; + mutable bool m_initialized; }; } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp index 3471288a33ebcbc787b24e3fd636feeb5a45ca89..a4657781697d6befb527508f90998b3b9c811590 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp @@ -45,6 +45,7 @@ #include "maemopackagecreationwidget.h" #include "maemopackagecontents.h" #include "maemotoolchain.h" +#include "profilewrapper.h" #include <projectexplorer/projectexplorerconstants.h> #include <qt4buildconfiguration.h> @@ -90,6 +91,8 @@ MaemoPackageCreationStep::MaemoPackageCreationStep(BuildConfiguration *buildConf { } +MaemoPackageCreationStep::~MaemoPackageCreationStep() {} + bool MaemoPackageCreationStep::init() { return true; @@ -147,7 +150,7 @@ bool MaemoPackageCreationStep::createPackage() env.insert(key, path % QLatin1String("madbin") % colon % env.value(key)); env.insert(QLatin1String("PERL5LIB"), path % QLatin1String("madlib/perl5")); - const QString buildDir = QFileInfo(localExecutableFilePath()).absolutePath(); + const QString buildDir = buildDirectory(); env.insert(QLatin1String("PWD"), buildDir); const QRegExp envPattern(QLatin1String("([^=]+)=[\"']?([^;\"']+)[\"']? ;.*")); @@ -164,6 +167,11 @@ bool MaemoPackageCreationStep::createPackage() buildProc.start("cd " + buildDir); buildProc.waitForFinished(); + // cache those two since we can change the version number during packaging + // and might fail later to modify, copy, remove etc. the generated package + const QString version = versionString(); + const QString pkgFilePath = packageFilePath(); + if (!QFileInfo(buildDir + QLatin1String("/debian")).exists()) { const QString command = QLatin1String("dh_make -s -n -p ") % executableFileName().toLower() % QLatin1Char('_') % versionString(); @@ -194,11 +202,12 @@ bool MaemoPackageCreationStep::createPackage() } { + QFile::remove(buildDir + QLatin1String("/debian/files")); QFile changeLog(buildDir + QLatin1String("/debian/changelog")); if (changeLog.open(QIODevice::ReadWrite)) { QString content = QString::fromUtf8(changeLog.readAll()); content.replace(QRegExp("\\([a-zA-Z0-9_\\.]+\\)"), - QLatin1Char('(') % versionString() % QLatin1Char(')')); + QLatin1Char('(') % version % QLatin1Char(')')); changeLog.resize(0); changeLog.write(content.toUtf8()); } @@ -209,7 +218,7 @@ bool MaemoPackageCreationStep::createPackage() // Workaround for non-working dh_builddeb --destdir=. if (!QDir(buildDir).isRoot()) { - const QString packageFileName = QFileInfo(packageFilePath()).fileName(); + const QString packageFileName = QFileInfo(pkgFilePath).fileName(); const QString changesFileName = QFileInfo(packageFileName) .completeBaseName() + QLatin1String(".changes"); const QString packageSourceDir = buildDir + QLatin1String("/../"); @@ -219,9 +228,9 @@ bool MaemoPackageCreationStep::createPackage() = packageSourceDir + changesFileName; const QString changesTargetFilePath = buildDir + QLatin1Char('/') + changesFileName; - QFile::remove(packageFilePath()); + QFile::remove(pkgFilePath); QFile::remove(changesTargetFilePath); - if (!QFile::rename(packageSourceFilePath, packageFilePath()) + if (!QFile::rename(packageSourceFilePath, pkgFilePath) || !QFile::rename(changesSourceFilePath, changesTargetFilePath)) { raiseError(tr("Packaging failed."), tr("Could not move package files from %1 to %2.") @@ -282,6 +291,13 @@ QString MaemoPackageCreationStep::localExecutableFilePath() const + QLatin1Char('/') + executableFileName())); } +QString MaemoPackageCreationStep::buildDirectory() const +{ + const TargetInformation &ti = qt4BuildConfiguration()->qt4Target() + ->qt4Project()->rootProjectNode()->targetInformation(); + return ti.valid ? ti.buildDir : QString(); +} + QString MaemoPackageCreationStep::executableFileName() const { const Qt4Project * const project @@ -329,8 +345,7 @@ bool MaemoPackageCreationStep::packagingNeeded() const QString MaemoPackageCreationStep::packageFilePath() const { - QFileInfo execInfo(localExecutableFilePath()); - return execInfo.path() % QDir::separator() % execInfo.fileName().toLower() + return buildDirectory() % QDir::separator() % executableFileName().toLower() % QLatin1Char('_') % versionString() % QLatin1String("_armel.deb"); } @@ -358,6 +373,18 @@ void MaemoPackageCreationStep::raiseError(const QString &shortMsg, TASK_CATEGORY_BUILDSYSTEM)); } +QSharedPointer<ProFileWrapper> MaemoPackageCreationStep::proFileWrapper() const +{ + if (!m_proFileWrapper) { + const Qt4ProFileNode * const proFileNode = qt4BuildConfiguration() + ->qt4Target()->qt4Project()->rootProjectNode(); + m_proFileWrapper = QSharedPointer<ProFileWrapper>( + new ProFileWrapper(proFileNode->path())); + } + + return m_proFileWrapper; +} + const QLatin1String MaemoPackageCreationStep::CreatePackageId("Qt4ProjectManager.MaemoPackageCreationStep"); } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h index 92241e650229a7cfe8a2772ca59664c9f426f560..930479887829f241b6aefbb4c782dc947e225fcb 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h @@ -44,6 +44,8 @@ #include <projectexplorer/buildstep.h> +#include <QtCore/QSharedPointer> + QT_BEGIN_NAMESPACE class QFile; class QProcess; @@ -54,6 +56,7 @@ namespace Internal { class MaemoPackageContents; class MaemoToolChain; +class ProFileWrapper; class Qt4BuildConfiguration; class MaemoPackageCreationStep : public ProjectExplorer::BuildStep @@ -62,12 +65,14 @@ class MaemoPackageCreationStep : public ProjectExplorer::BuildStep friend class MaemoPackageCreationFactory; public: MaemoPackageCreationStep(ProjectExplorer::BuildConfiguration *buildConfig); + ~MaemoPackageCreationStep(); QString packageFilePath() const; QString localExecutableFilePath() const; QString executableFileName() const; MaemoPackageContents *packageContents() const { return m_packageContents; } const Qt4BuildConfiguration *qt4BuildConfiguration() const; + QSharedPointer<ProFileWrapper> proFileWrapper() const; bool isPackagingEnabled() const { return m_packagingEnabled; } void setPackagingEnabled(bool enabled) { m_packagingEnabled = enabled; } @@ -95,12 +100,14 @@ private: bool packagingNeeded() const; void raiseError(const QString &shortMsg, const QString &detailedMsg = QString()); + QString buildDirectory() const; static const QLatin1String CreatePackageId; MaemoPackageContents *const m_packageContents; bool m_packagingEnabled; QString m_versionString; + mutable QSharedPointer<ProFileWrapper> m_proFileWrapper; }; } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp index 5f21d396422fcfba7a26dc94c217901819a4b296..91fc14a3fc234f910f2155dc6ceee0b16f462785 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp @@ -84,6 +84,7 @@ MaemoPackageCreationWidget::MaemoPackageCreationWidget(MaemoPackageCreationStep m_ui->major->setValue(list.value(0, QLatin1String("0")).toInt()); m_ui->minor->setValue(list.value(1, QLatin1String("0")).toInt()); m_ui->patch->setValue(list.value(2, QLatin1String("0")).toInt()); + versionInfoChanged(); // workaround for missing minor and patch update notifications } void MaemoPackageCreationWidget::init() diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.ui b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.ui index 3b5101e448bf84e12d8cd427aa5b1d43846bba8c..5ac787f6cdea103fa762c6fc2722efdd2a1a03df 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.ui +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.ui @@ -23,7 +23,7 @@ <string>Check this if you want the files below to be deployed directly.</string> </property> <property name="text"> - <string>Skip Packaging Step</string> + <string>Skip packaging step</string> </property> </widget> </item> diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.ui b/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.ui index 00eac92c3ddf719fce2c2d2095dd7cd60f018544..a4b4581da81318fadd24a9d43d1cfe9952f6f117 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.ui +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosettingswidget.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>596</width> - <height>336</height> + <height>352</height> </rect> </property> <property name="windowTitle"> @@ -409,8 +409,8 @@ <slot>userNameEditingFinished()</slot> <hints> <hint type="sourcelabel"> - <x>335</x> - <y>228</y> + <x>419</x> + <y>269</y> </hint> <hint type="destinationlabel"> <x>422</x> @@ -425,8 +425,8 @@ <slot>passwordEditingFinished()</slot> <hints> <hint type="sourcelabel"> - <x>335</x> - <y>254</y> + <x>419</x> + <y>300</y> </hint> <hint type="destinationlabel"> <x>423</x> @@ -505,8 +505,8 @@ <slot>keyFileEditingFinished()</slot> <hints> <hint type="sourcelabel"> - <x>335</x> - <y>273</y> + <x>419</x> + <y>321</y> </hint> <hint type="destinationlabel"> <x>257</x> @@ -521,8 +521,8 @@ <slot>keyFileEditingFinished()</slot> <hints> <hint type="sourcelabel"> - <x>335</x> - <y>273</y> + <x>419</x> + <y>321</y> </hint> <hint type="destinationlabel"> <x>257</x> @@ -542,7 +542,7 @@ </hint> <hint type="destinationlabel"> <x>428</x> - <y>367</y> + <y>351</y> </hint> </hints> </connection> @@ -558,7 +558,7 @@ </hint> <hint type="destinationlabel"> <x>510</x> - <y>458</y> + <y>351</y> </hint> </hints> </connection> @@ -574,7 +574,7 @@ </hint> <hint type="destinationlabel"> <x>525</x> - <y>408</y> + <y>351</y> </hint> </hints> </connection> @@ -601,12 +601,108 @@ <slot>showGenerateSshKeyDialog()</slot> <hints> <hint type="sourcelabel"> - <x>403</x> - <y>107</y> + <x>585</x> + <y>131</y> </hint> <hint type="destinationlabel"> <x>358</x> - <y>-11</y> + <y>0</y> + </hint> + </hints> + </connection> + <connection> + <sender>timeoutSpinBox</sender> + <signal>editingFinished()</signal> + <receiver>MaemoSettingsWidget</receiver> + <slot>timeoutEditingFinished()</slot> + <hints> + <hint type="sourcelabel"> + <x>199</x> + <y>227</y> + </hint> + <hint type="destinationlabel"> + <x>6</x> + <y>333</y> + </hint> + </hints> + </connection> + <connection> + <sender>timeoutSpinBox</sender> + <signal>valueChanged(int)</signal> + <receiver>MaemoSettingsWidget</receiver> + <slot>timeoutEditingFinished()</slot> + <hints> + <hint type="sourcelabel"> + <x>178</x> + <y>224</y> + </hint> + <hint type="destinationlabel"> + <x>0</x> + <y>299</y> + </hint> + </hints> + </connection> + <connection> + <sender>gdbServerPortSpinBox</sender> + <signal>editingFinished()</signal> + <receiver>MaemoSettingsWidget</receiver> + <slot>gdbServerPortEditingFinished()</slot> + <hints> + <hint type="sourcelabel"> + <x>375</x> + <y>190</y> + </hint> + <hint type="destinationlabel"> + <x>593</x> + <y>184</y> + </hint> + </hints> + </connection> + <connection> + <sender>gdbServerPortSpinBox</sender> + <signal>valueChanged(int)</signal> + <receiver>MaemoSettingsWidget</receiver> + <slot>gdbServerPortEditingFinished()</slot> + <hints> + <hint type="sourcelabel"> + <x>395</x> + <y>197</y> + </hint> + <hint type="destinationlabel"> + <x>590</x> + <y>251</y> + </hint> + </hints> + </connection> + <connection> + <sender>sshPortSpinBox</sender> + <signal>editingFinished()</signal> + <receiver>MaemoSettingsWidget</receiver> + <slot>sshPortEditingFinished()</slot> + <hints> + <hint type="sourcelabel"> + <x>228</x> + <y>200</y> + </hint> + <hint type="destinationlabel"> + <x>4</x> + <y>211</y> + </hint> + </hints> + </connection> + <connection> + <sender>sshPortSpinBox</sender> + <signal>valueChanged(int)</signal> + <receiver>MaemoSettingsWidget</receiver> + <slot>sshPortEditingFinished()</slot> + <hints> + <hint type="sourcelabel"> + <x>243</x> + <y>197</y> + </hint> + <hint type="destinationlabel"> + <x>3</x> + <y>136</y> </hint> </hints> </connection> diff --git a/src/plugins/qt4projectmanager/qt-maemo/profilewrapper.cpp b/src/plugins/qt4projectmanager/qt-maemo/profilewrapper.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e874972e64171e29b1acba39db96f12c4ed36d06 --- /dev/null +++ b/src/plugins/qt4projectmanager/qt-maemo/profilewrapper.cpp @@ -0,0 +1,289 @@ +#include "profilewrapper.h" + +#include <prowriter.h> +#include <qt4projectmanager/profilereader.h> + +#include <QtCore/QCryptographicHash> +#include <QtCore/QFile> +#include <QtCore/QFileInfo> + +namespace Qt4ProjectManager { +namespace Internal { + +namespace { + QString pathVar(const QString &var) + { + return var + QLatin1String(".path"); + } + + QString filesVar(const QString &var) + { + return var + QLatin1String(".files"); + } + + const QLatin1String InstallsVar("INSTALLS"); + const QLatin1String TargetVar("target"); +} + + +ProFileWrapper::ProFileWrapper(const QString &proFileName) + : m_proFileName(proFileName), m_proDir(QFileInfo(m_proFileName).dir()), + m_proFileOption(new ProFileOption) +{ + parseProFile(ParseFromFile); +} + +ProFileWrapper::~ProFileWrapper() {} + + +ProFileWrapper::InstallsList ProFileWrapper::installs() const +{ + InstallsList list; + + const QStringList &elemList = varValues(InstallsVar); + foreach (const QString &elem, elemList) { + const QStringList &paths = varValues(pathVar(elem)); + if (paths.count() != 1) { + qWarning("Error: Variable %s has %d values.", + qPrintable(pathVar(elem)), paths.count()); + continue; + } + + const QStringList &files = varValues(filesVar(elem)); + + if (elem == TargetVar) { + if (!list.targetPath.isEmpty()) { + qWarning("Error: More than one target in INSTALLS list."); + continue; + } + list.targetPath = paths.first(); + } else { + if (files.isEmpty()) { + qWarning("Error: Variable %s has no RHS.", + qPrintable(filesVar(elem))); + continue; + } + list.normalElems << InstallsElem(elem, paths.first(), files); + } + } + + return list; +} + +bool ProFileWrapper::addInstallsElem(const QString &path, + const QString &absFilePath, const QString &var) +{ + QString varName = var; + if (varName.isEmpty()) { + QCryptographicHash elemHash(QCryptographicHash::Md5); + elemHash.addData(absFilePath.toUtf8()); + varName = QString::fromAscii(elemHash.result().toHex()); + } + + // TODO: Use lower-level calls here to make operation atomic. + if (varName != TargetVar && !addFile(filesVar(varName), absFilePath)) + return false; + return addVarValue(pathVar(varName), path) + && addVarValue(InstallsVar, varName); +} + +bool ProFileWrapper::addInstallsTarget(const QString &path) +{ + return addInstallsElem(path, QString(), TargetVar); +} + +bool ProFileWrapper::removeInstallsElem(const QString &path, + const QString &file) +{ + const InstallsElem &elem = findInstallsElem(path, file); + if (elem.varName.isEmpty()) + return false; + + // TODO: Use lower-level calls here to make operation atomic. + if (elem.varName != TargetVar && !removeFile(filesVar(elem.varName), file)) + return false; + if (elem.files.count() <= 1) { + if (!removeVarValue(pathVar(elem.varName), path)) + return false; + if (!removeVarValue(InstallsVar, elem.varName)) + return false; + } + return true; +} + +bool ProFileWrapper::replaceInstallPath(const QString &oldPath, + const QString &file, const QString &newPath) +{ + const InstallsElem &elem = findInstallsElem(oldPath, file); + if (elem.varName.isEmpty()) + return false; + + // Simple case: Variable has only one file, so just replace the path. + if (elem.varName == TargetVar || elem.files.count() == 1) + return replaceVarValue(pathVar(elem.varName), oldPath, newPath); + + // Complicated case: Variable has other files, so remove our file from it + // and introduce a new one. + if (!removeInstallsElem(oldPath, file)) + return false; + return addInstallsElem(newPath, file); +} + +QStringList ProFileWrapper::varValues(const QString &var) const +{ + return m_proFileReader->values(var, m_proFile); +} + +bool ProFileWrapper::addVarValue(const QString &var, const QString &value) +{ + if (!readProFileContents()) + return false; + ProWriter::addVarValues(m_proFile, &m_proFileContents, m_proDir, + QStringList(value), var); + parseProFile(ParseFromLines); + return writeProFileContents(); +} + +bool ProFileWrapper::addFile(const QString &var, const QString &absFilePath) +{ + if (!readProFileContents()) + return false; + ProWriter::addFiles(m_proFile, &m_proFileContents, m_proDir, + QStringList(absFilePath), var); + parseProFile(ParseFromLines); + return writeProFileContents(); +} + +bool ProFileWrapper::removeVarValue(const QString &var, const QString &value) +{ + if (!readProFileContents()) + return false; + const bool success = ProWriter::removeVarValues(m_proFile, + &m_proFileContents, m_proDir, QStringList(value), QStringList(var)) + .isEmpty(); + if (success) { + parseProFile(ParseFromLines); + return writeProFileContents(); + } else { + parseProFile(ParseFromFile); + return false; + } +} + +bool ProFileWrapper::removeFile(const QString &var, const QString &absFilePath) +{ + if (!readProFileContents()) + return false; + const bool success = ProWriter::removeFiles(m_proFile, &m_proFileContents, + m_proDir, QStringList(absFilePath), QStringList(var)).isEmpty(); + if (success) { + parseProFile(ParseFromLines); + return writeProFileContents(); + } else { + parseProFile(ParseFromFile); + return false; + } +} + +bool ProFileWrapper::replaceVarValue(const QString &var, + const QString &oldValue, const QString &newValue) +{ + if (!readProFileContents()) + return false; + const bool success = ProWriter::removeVarValues(m_proFile, + &m_proFileContents, m_proDir, QStringList(oldValue), QStringList(var)) + .isEmpty(); + if (!success) { + parseProFile(ParseFromFile); + return false; + } + ProWriter::addVarValues(m_proFile, &m_proFileContents, m_proDir, + QStringList(newValue), var); + parseProFile(ParseFromLines); + return writeProFileContents(); +} + +QString ProFileWrapper::absFilePath(const QString &relFilePath) const +{ + // I'd rather use QDir::cleanPath(), but that doesn't work well + // enough for redundant ".." dirs. + return QFileInfo(m_proFile->directoryName() + '/' + relFilePath) + .canonicalFilePath(); +} + +void ProFileWrapper::parseProFile(ParseType type) const +{ + m_proFileReader.reset(new ProFileReader(m_proFileOption.data())); + if (type == ParseFromLines) { + m_proFile = m_proFileReader->parsedProFile(m_proFileName, false, + m_proFileContents.join("\n")); + } else { + m_proFileContents.clear(); + m_proFile = m_proFileReader->parsedProFile(m_proFileName); + } + + if (!m_proFile) { + qWarning("Fatal: Could not parse .pro file '%s'.", + qPrintable(m_proFileName)); + return; + } + + m_proFileReader->accept(m_proFile); + m_proFile->deref(); +} + +bool ProFileWrapper::writeProFileContents() +{ + QFile proFileOnDisk(m_proFileName); + if (!proFileOnDisk.open(QIODevice::WriteOnly)) { + parseProFile(ParseFromFile); + return false; + } + + // TODO: Disconnect and reconnect FS watcher here. + proFileOnDisk.write(m_proFileContents.join("\n").toLatin1()); + proFileOnDisk.close(); + if (proFileOnDisk.error() != QFile::NoError) { + parseProFile(ParseFromFile); + return false; + } + return true; +} + +bool ProFileWrapper::readProFileContents() +{ + if (!m_proFileContents.isEmpty()) + return true; + + QFile proFileOnDisk(m_proFileName); + if (!proFileOnDisk.open(QIODevice::ReadOnly)) + return false; + const QString proFileContents + = QString::fromLatin1(proFileOnDisk.readAll()); + if (proFileOnDisk.error() != QFile::NoError) + return false; + m_proFileContents = proFileContents.split('\n'); + return true; +} + +ProFileWrapper::InstallsElem ProFileWrapper::findInstallsElem(const QString &path, + const QString &file) const +{ + const QStringList &elems = varValues(InstallsVar); + foreach (const QString &elem, elems) { + const QStringList &elemPaths = varValues(pathVar(elem)); + if (elemPaths.count() != 1 || elemPaths.first() != path) + continue; + if (elem == TargetVar) + return InstallsElem(elem, path, QStringList()); + const QStringList &elemFiles = varValues(filesVar(elem)); + foreach (const QString &elemFile, elemFiles) { + if (absFilePath(elemFile) == file) + return InstallsElem(elem, path, elemFiles); + } + } + return InstallsElem(QString(), QString(), QStringList()); +} + +} // namespace Internal +} // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/profilewrapper.h b/src/plugins/qt4projectmanager/qt-maemo/profilewrapper.h new file mode 100644 index 0000000000000000000000000000000000000000..e82c03c2231762d91a7924bd79f8f8ebb8d7bb7a --- /dev/null +++ b/src/plugins/qt4projectmanager/qt-maemo/profilewrapper.h @@ -0,0 +1,76 @@ +#ifndef PROFILEWRAPPER_H +#define PROFILEWRAPPER_H + +#include <QtCore/QDir> +#include <QtCore/QScopedPointer> +#include <QtCore/QString> +#include <QtCore/QString> + +QT_BEGIN_NAMESPACE +class ProFile; +struct ProFileOption; +QT_END_NAMESPACE + +namespace Qt4ProjectManager { +namespace Internal { +class ProFileReader; + +class ProFileWrapper +{ +public: + ProFileWrapper(const QString &proFileName); + ~ProFileWrapper(); + + struct InstallsElem { + InstallsElem(QString v, QString p, QStringList f) + : varName(v), path(p), files(f) {} + QString varName; + QString path; + QStringList files; + }; + + struct InstallsList { + QString targetPath; + QList<InstallsElem> normalElems; + }; + + // High-level functions for dealing with INSTALLS stuff. + InstallsList installs() const; + bool addInstallsElem(const QString &path, const QString &file, + const QString &var = QString()); // Empty var means make the name up. + bool addInstallsTarget(const QString &path); + bool removeInstallsElem(const QString &path, const QString &file); + bool replaceInstallPath(const QString &oldPath, const QString &file, + const QString &newPath); + + // Lower-level functions working on arbitrary variables. + QStringList varValues(const QString &var) const; + bool addVarValue(const QString &var, const QString &value); + bool addFile(const QString &var, const QString &absFilePath); + bool removeVarValue(const QString &var, const QString &value); + bool removeFile(const QString &var, const QString &absFilePath); + bool replaceVarValue(const QString &var, const QString &oldValue, + const QString &newValue); + + QString absFilePath(const QString &relFilePath) const; + +private: + enum ParseType { ParseFromFile, ParseFromLines }; + void parseProFile(ParseType type) const; + bool writeProFileContents(); + bool readProFileContents(); + InstallsElem findInstallsElem(const QString &path, + const QString &file) const; + + const QString m_proFileName; + const QDir m_proDir; + mutable QStringList m_proFileContents; + QScopedPointer<ProFileOption> m_proFileOption; + mutable QScopedPointer<ProFileReader> m_proFileReader; + mutable ProFile *m_proFile; +}; + +} // namespace Internal +} // namespace Qt4ProjectManager + +#endif // PROFILEWRAPPER_H diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri index 61b754b138fc3a78e8df93c7456b27ed42553abc..2a0d8e02f178df3589aca17a968fc6517abb7748 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri +++ b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri @@ -16,7 +16,8 @@ HEADERS += \ $$PWD/maemopackagecreationfactory.h \ $$PWD/maemopackagecreationwidget.h \ $$PWD/maemopackagecontents.h \ - $$PWD/qemuruntimemanager.h + $$PWD/qemuruntimemanager.h \ + $$PWD/profilewrapper.h SOURCES += \ $$PWD/maemoconfigtestdialog.cpp \ @@ -35,7 +36,8 @@ SOURCES += \ $$PWD/maemopackagecreationfactory.cpp \ $$PWD/maemopackagecreationwidget.cpp \ $$PWD/maemopackagecontents.cpp \ - $$PWD/qemuruntimemanager.cpp + $$PWD/qemuruntimemanager.cpp \ + $$PWD/profilewrapper.cpp FORMS += \ $$PWD/maemoconfigtestdialog.ui \ diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index c56abe40fb5ccd79c8394803820883b9bd30868b..3e42ca965e81921c75a74f809e2d2ba1bbcf676f 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -793,6 +793,8 @@ QString Qt4Project::defaultTopLevelBuildDirectory() const QString Qt4Project::defaultTopLevelBuildDirectory(const QString &profilePath) { + if (profilePath.isEmpty()) + return QString(); QFileInfo info(profilePath); return QDir(projectDirectory(profilePath) + QLatin1String("/../") + info.baseName() + QLatin1String("-build")).absolutePath(); } diff --git a/src/plugins/texteditor/generichighlighter/progressdata.cpp b/src/plugins/texteditor/generichighlighter/progressdata.cpp index 9a7b619eca02756b9be93d26b5c2d442c9c0bd51..fe892a359bc08989f26b846fe2d88cf619fcb5b1 100644 --- a/src/plugins/texteditor/generichighlighter/progressdata.cpp +++ b/src/plugins/texteditor/generichighlighter/progressdata.cpp @@ -38,9 +38,9 @@ ProgressData::ProgressData() : m_offset(0), m_savedOffset(-1), m_onlySpacesSoFar(true), - m_willContinueLine(false), m_openingBraceMatchAtFirstNonSpace(false), - m_closingBraceMatchAtNonEnd(false) + m_closingBraceMatchAtNonEnd(false), + m_willContinueLine(false) {} void ProgressData::setOffset(const int offset) diff --git a/src/plugins/vcsbase/basecheckoutwizard.cpp b/src/plugins/vcsbase/basecheckoutwizard.cpp index 124a02edff266f30a65af2ffd44b8cfe124bc2e1..8ca74f19c324964f87011a13a822a009ccf3ed5a 100644 --- a/src/plugins/vcsbase/basecheckoutwizard.cpp +++ b/src/plugins/vcsbase/basecheckoutwizard.cpp @@ -128,9 +128,7 @@ static inline QString msgNoProjectFiles(const QDir &dir, const QStringList &patt // Try to find the project files in a project directory with some smartness static QFileInfoList findProjectFiles(const QDir &projectDir, QString *errorMessage) { - // Hardcoded: Find *.pro/Cmakefiles - QStringList projectFilePatterns; - projectFilePatterns << QLatin1String("*.pro") << QLatin1String("CMakeLists.txt"); + const QStringList projectFilePatterns = ProjectExplorer::ProjectExplorerPlugin::projectFilePatterns(); // Project directory QFileInfoList projectFiles = projectDir.entryInfoList(projectFilePatterns, QDir::Files|QDir::NoDotAndDotDot|QDir::Readable); if (!projectFiles.empty()) diff --git a/src/shared/symbianutils/tcftrkdevice.cpp b/src/shared/symbianutils/tcftrkdevice.cpp index 9f646e3ec8348ceef23613b75ffe503cafeae379..4dfb41637f84c74ce31a8e37b920f51f7b4ac47f 100644 --- a/src/shared/symbianutils/tcftrkdevice.cpp +++ b/src/shared/symbianutils/tcftrkdevice.cpp @@ -36,6 +36,7 @@ #include <QtCore/QQueue> #include <QtCore/QTextStream> #include <QtCore/QDateTime> +#include <QtCore/QFileInfo> enum { debug = 0 }; @@ -688,6 +689,23 @@ void TcfTrkDevice::sendProcessTerminateCommand(const TcfTrkCallback &callBack, sendTcfTrkMessage(MessageWithReply, ProcessesService, "terminate", data, callBack, cookie); } +// Non-standard: Remove executable from settings +void TcfTrkDevice::sendSettingsRemoveExecutableCommand(const QString &binaryIn, + unsigned uid, + const QStringList &additionalLibraries, + const QVariant &cookie) +{ + QByteArray setData; + JsonInputStream setStr(setData); + setStr << "" << '\0' + << '[' << "removedExecutables" << ',' << "removedLibraries" << ']' + << '\0' << '[' + << '{' << QFileInfo(binaryIn).fileName() << ':' << QString::number(uid, 16) << '}' << ',' + << additionalLibraries + << ']'; + sendTcfTrkMessage(MessageWithoutReply, SettingsService, "set", setData, TcfTrkCallback(), cookie); +} + void TcfTrkDevice::sendRunControlResumeCommand(const TcfTrkCallback &callBack, const QByteArray &id, RunControlResumeMode mode, diff --git a/src/shared/symbianutils/tcftrkdevice.h b/src/shared/symbianutils/tcftrkdevice.h index be5077b2a0823895814eecab282603d031c2e1d1..bfe8bbbbf3faaaa24dd461452054700649b194d0 100644 --- a/src/shared/symbianutils/tcftrkdevice.h +++ b/src/shared/symbianutils/tcftrkdevice.h @@ -162,6 +162,13 @@ public: const QByteArray &id, const QVariant &cookie = QVariant()); + // Non-standard: Remove executable from settings. + // Probably needs to be called after stopping. This command has no response. + void sendSettingsRemoveExecutableCommand(const QString &binaryIn, + unsigned uid, + const QStringList &additionalLibraries = QStringList(), + const QVariant &cookie = QVariant()); + void sendRunControlSuspendCommand(const TcfTrkCallback &callBack, const QByteArray &id, const QVariant &cookie = QVariant()); diff --git a/src/shared/symbianutils/trkutils.cpp b/src/shared/symbianutils/trkutils.cpp index 8b40d1f88d4663ae5607ef502b246e7dd11db64e..9caf807127b0d8585df5f2b5e34cd90d43fdb110 100644 --- a/src/shared/symbianutils/trkutils.cpp +++ b/src/shared/symbianutils/trkutils.cpp @@ -65,11 +65,11 @@ void Session::reset() extended1TypeSize = 0; extended2TypeSize = 0; pid = 0; + mainTid = 0; tid = 0; codeseg = 0; dataseg = 0; - currentThread = 0; libraries.clear(); trkAppVersion.reset(); } @@ -131,12 +131,60 @@ QString Session::deviceDescription(unsigned verbose) const return msg.arg(formatTrkVersion(trkAppVersion)); } +QByteArray Session::gdbLibraryList() const +{ + const int count = libraries.size(); + QByteArray response = "l<library-list>"; + for (int i = 0; i != count; ++i) { + const trk::Library &lib = libraries.at(i); + response += "<library name=\""; + response += lib.name; + response += "\">"; + response += "<section address=\"0x"; + response += trk::hexNumber(lib.codeseg); + response += "\"/>"; + response += "<section address=\"0x"; + response += trk::hexNumber(lib.dataseg); + response += "\"/>"; + response += "<section address=\"0x"; + response += trk::hexNumber(lib.dataseg); + response += "\"/>"; + response += "</library>"; + } + response += "</library-list>"; + return response; +} + +QByteArray Session::gdbQsDllInfo(int start, int count) const +{ + // Happens with gdb 6.4.50.20060226-cvs / CodeSourcery. + // Never made it into FSF gdb that got qXfer:libraries:read instead. + // http://sourceware.org/ml/gdb/2007-05/msg00038.html + // Name=hexname,TextSeg=textaddr[,DataSeg=dataaddr] + const int libraryCount = libraries.size(); + const int end = count < 0 ? libraryCount : qMin(libraryCount, start + count); + QByteArray response(1, end == libraryCount ? 'l' : 'm'); + for (int i = start; i < end; ++i) { + if (i != start) + response += ';'; + const Library &lib = libraries.at(i); + response += "Name="; + response += lib.name.toHex(); + response += ",TextSeg="; + response += hexNumber(lib.codeseg); + response += ",DataSeg="; + response += hexNumber(lib.dataseg); + } + return response; +} + QString Session::toString() const { QString rc; QTextStream str(&rc); str << "Session: " << deviceDescription(false) << '\n' - << "pid: " << pid << " thread: " << tid << ' '; + << "pid: " << pid << "main thread: " << mainTid + << " current thread: " << tid << ' '; str.setIntegerBase(16); str << " code: 0x" << codeseg << " data: 0x" << dataseg << '\n'; if (const int libCount = libraries.size()) { @@ -152,13 +200,6 @@ QString Session::toString() const str << " #" << i << ' ' << modules.at(i) << '\n'; } str.setIntegerBase(10); - str << "Current thread: " << currentThread << '\n'; - if (const int threadCount = threads.size()) { - str << "Threads:\n"; - for (int i = 0; i < threadCount; i++) - str << " #" << i << ' ' << threads.at(i); - } - if (!addressToBP.isEmpty()) { typedef QHash<uint, uint>::const_iterator BP_ConstIterator; str << "Breakpoints:\n"; diff --git a/src/shared/symbianutils/trkutils.h b/src/shared/symbianutils/trkutils.h index 2cf2c99da4b761d08c9a3c43062fe8ee0bc5d0a9..394f9ba85d170d3503a35dcde84d04bd0dcb4618 100644 --- a/src/shared/symbianutils/trkutils.h +++ b/src/shared/symbianutils/trkutils.h @@ -176,6 +176,10 @@ struct SYMBIANUTILS_EXPORT Session void reset(); QString deviceDescription(unsigned verbose) const; QString toString() const; + // Answer to qXfer::libraries + QByteArray gdbLibraryList() const; + // Answer to qsDllInfo, can be sent chunk-wise. + QByteArray gdbQsDllInfo(int start = 0, int count = -1) const; // Trk feedback byte cpuMajor; @@ -187,6 +191,7 @@ struct SYMBIANUTILS_EXPORT Session byte extended2TypeSize; TrkAppVersion trkAppVersion; uint pid; + uint mainTid; uint tid; uint codeseg; uint dataseg; @@ -195,12 +200,7 @@ struct SYMBIANUTILS_EXPORT Session typedef QList<Library> Libraries; Libraries libraries; - typedef uint Thread; - typedef QList<Thread> Threads; - Threads threads; - // Gdb request - uint currentThread; QStringList modules; }; diff --git a/src/tools/qtcreatorwidgets/customwidgets.cpp b/src/tools/qtcreatorwidgets/customwidgets.cpp index cc0a98e76f5f4909fb2fa994f36ff6bd9957c1eb..42aea5e54542c9dc815f04a3d90619b934e3e291 100644 --- a/src/tools/qtcreatorwidgets/customwidgets.cpp +++ b/src/tools/qtcreatorwidgets/customwidgets.cpp @@ -140,9 +140,12 @@ QtColorButton_CW::QtColorButton_CW(QObject *parent) : QWidget *FancyLineEdit_CW::createWidget(QWidget *parent) { Utils::FancyLineEdit *fle = new Utils::FancyLineEdit(parent); + fle->setButtonVisible(Utils::FancyLineEdit::Left, true); + fle->setButtonPixmap(Utils::FancyLineEdit::Left, + fle->style()->standardIcon(QStyle::SP_ArrowRight).pixmap(16)); QMenu *menu = new QMenu(fle); - menu->addAction("Test"); - fle->setMenu(menu); + menu->addAction(QLatin1String("Example")); + fle->setButtonMenu(Utils::FancyLineEdit::Left, menu); return fle; } diff --git a/src/tools/qtcreatorwidgets/qtcreatorwidgets.pro b/src/tools/qtcreatorwidgets/qtcreatorwidgets.pro index 81e989d4b2877ef2b018361f142d1998fa8a0d26..5e7352264b16a84195d67572ff5e77dad49cc859 100644 --- a/src/tools/qtcreatorwidgets/qtcreatorwidgets.pro +++ b/src/tools/qtcreatorwidgets/qtcreatorwidgets.pro @@ -27,7 +27,7 @@ linux-*{ INCLUDEPATH += ../../../src/libs macx { - LIBS += -L../../../bin/QtCreator.app/Contents/PlugIns + LIBS += -L"../../../bin/Qt Creator.app/Contents/PlugIns" CONFIG(debug, debug|release):LIBS += -lUtils_debug else:LIBS += -lUtils } else:win32 { diff --git a/tests/auto/changeset/tst_changeset.cpp b/tests/auto/changeset/tst_changeset.cpp index d553d85bfec7874fb099a332a448c697e898063b..b4161433ac4bac11844db96cf05d3bffa130b55d 100644 --- a/tests/auto/changeset/tst_changeset.cpp +++ b/tests/auto/changeset/tst_changeset.cpp @@ -60,14 +60,14 @@ void tst_ChangeSet::singleReplace() { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.replace(4, 2, "ghi")); + QVERIFY(cs.replace(4, 6, "ghi")); cs.apply(&test); QCOMPARE(test, QLatin1String("abcdghi")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.replace(3, 0, "ghi")); + QVERIFY(cs.replace(3, 3, "ghi")); cs.apply(&test); QCOMPARE(test, QLatin1String("abcghidef")); } @@ -81,7 +81,7 @@ void tst_ChangeSet::singleReplace() { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.replace(3, 10, "ghi")); + QVERIFY(cs.replace(3, 13, "ghi")); cs.apply(&test); QCOMPARE(test, QLatin1String("abcghi")); } @@ -99,21 +99,21 @@ void tst_ChangeSet::singleMove() { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.move(4, 2, 0)); + QVERIFY(cs.move(4, 6, 0)); cs.apply(&test); QCOMPARE(test, QLatin1String("efabcd")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.move(3, 10, 0)); + QVERIFY(cs.move(3, 13, 0)); cs.apply(&test); QCOMPARE(test, QLatin1String("defabc")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.move(3, 0, 0)); + QVERIFY(cs.move(3, 3, 0)); cs.apply(&test); QCOMPARE(test, QLatin1String("abcdef")); } @@ -172,28 +172,28 @@ void tst_ChangeSet::singleRemove() { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.remove(3, 3)); + QVERIFY(cs.remove(3, 6)); cs.apply(&test); QCOMPARE(test, QLatin1String("abc")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.remove(4, 10)); + QVERIFY(cs.remove(4, 14)); cs.apply(&test); QCOMPARE(test, QLatin1String("abcd")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.remove(2, 0)); + QVERIFY(cs.remove(2, 2)); cs.apply(&test); QCOMPARE(test, QLatin1String("abcdef")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.remove(7, 1)); + QVERIFY(cs.remove(7, 8)); cs.apply(&test); QCOMPARE(test, QLatin1String("abcdef")); } @@ -204,53 +204,53 @@ void tst_ChangeSet::singleFlip() { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.flip(0, 2, 3, 3)); + QVERIFY(cs.flip(0, 2, 3, 6)); cs.apply(&test); QCOMPARE(test, QLatin1String("defcab")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.flip(1, 2, 3, 1)); + QVERIFY(cs.flip(1, 3, 3, 4)); cs.apply(&test); QCOMPARE(test, QLatin1String("adbcef")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.flip(3, 0, 4, 0)); + QVERIFY(cs.flip(3, 3, 4, 4)); cs.apply(&test); QCOMPARE(test, QLatin1String("abcdef")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.flip(3, 0, 4, 1)); + QVERIFY(cs.flip(3, 3, 4, 5)); cs.apply(&test); QCOMPARE(test, QLatin1String("abcedf")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.flip(0, 6, 6, 6)); + QVERIFY(cs.flip(0, 6, 6, 12)); cs.apply(&test); QCOMPARE(test, QLatin1String("abcdef")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.flip(0, 6, 7, 3)); + QVERIFY(cs.flip(0, 6, 7, 10)); cs.apply(&test); // ### maybe this should expand the string or error? QCOMPARE(test, QLatin1String("")); } { Utils::ChangeSet cs; - QCOMPARE(cs.flip(0, 3, 1, 3), false); + QCOMPARE(cs.flip(0, 3, 1, 4), false); } { Utils::ChangeSet cs; - QCOMPARE(cs.flip(0, 3, 2, 3), false); + QCOMPARE(cs.flip(0, 3, 2, 5), false); } { Utils::ChangeSet cs; @@ -268,7 +268,7 @@ void tst_ChangeSet::singleFlip() } { Utils::ChangeSet cs; - QVERIFY(cs.flip(0, 3, 3, 0)); + QVERIFY(cs.flip(0, 3, 3, 3)); QString test("abcdef"); cs.apply(&test); QCOMPARE(test, QLatin1String("abcdef")); @@ -287,14 +287,14 @@ void tst_ChangeSet::singleCopy() { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.copy(1, 2, 3)); + QVERIFY(cs.copy(1, 3, 3)); cs.apply(&test); QCOMPARE(test, QLatin1String("abcbcdef")); } { Utils::ChangeSet cs; QString test("abcdef"); - QVERIFY(cs.copy(3, 0, 4)); + QVERIFY(cs.copy(3, 3, 4)); cs.apply(&test); QCOMPARE(test, QLatin1String("abcdef")); } @@ -358,7 +358,7 @@ void tst_ChangeSet::doubleInsert() { Utils::ChangeSet cs; QVERIFY(cs.insert(1, "01")); - QVERIFY(cs.remove(1, 1)); + QVERIFY(cs.remove(1, 2)); QVERIFY(cs.insert(2, "234")); QString test("abcdef"); cs.apply(&test); @@ -370,48 +370,48 @@ void tst_ChangeSet::conflicts() { { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); + QVERIFY(cs.move(1, 4, 5)); QCOMPARE(cs.replace(0, 2, "abc"), false); } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); - QCOMPARE(cs.replace(1, 3, "abc"), false); + QVERIFY(cs.move(1, 4, 5)); + QCOMPARE(cs.replace(1, 4, "abc"), false); } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); - QCOMPARE(cs.replace(1, 1, "abc"), false); + QVERIFY(cs.move(1, 4, 5)); + QCOMPARE(cs.replace(1, 2, "abc"), false); } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); - QCOMPARE(cs.replace(2, 0, "abc"), false); + QVERIFY(cs.move(1, 4, 5)); + QCOMPARE(cs.replace(2, 2, "abc"), false); } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); - QCOMPARE(cs.replace(2, 1, "abc"), false); + QVERIFY(cs.move(1, 4, 5)); + QCOMPARE(cs.replace(2, 3, "abc"), false); } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); - QCOMPARE(cs.replace(3, 0, "abc"), false); + QVERIFY(cs.move(1, 4, 5)); + QCOMPARE(cs.replace(3, 3, "abc"), false); } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); - QCOMPARE(cs.replace(3, 1, "abc"), false); + QVERIFY(cs.move(1, 4, 5)); + QCOMPARE(cs.replace(3, 4, "abc"), false); } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); - QCOMPARE(cs.replace(4, 2, "abc"), false); + QVERIFY(cs.move(1, 4, 5)); + QCOMPARE(cs.replace(4, 6, "abc"), false); } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); + QVERIFY(cs.move(1, 4, 5)); QVERIFY(cs.replace(0, 1, "bla")); QString test("abcdef"); cs.apply(&test); @@ -419,16 +419,16 @@ void tst_ChangeSet::conflicts() } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); - QVERIFY(cs.replace(4, 1, "bla")); + QVERIFY(cs.move(1, 4, 5)); + QVERIFY(cs.replace(4, 5, "bla")); QString test("abcdef"); cs.apply(&test); QCOMPARE(test, QLatin1String("ablabcdf")); } { Utils::ChangeSet cs; - QVERIFY(cs.move(1, 3, 5)); - QVERIFY(cs.replace(5, 1, "bla")); + QVERIFY(cs.move(1, 4, 5)); + QVERIFY(cs.replace(5, 6, "bla")); QString test("abcdef"); cs.apply(&test); QCOMPARE(test, QLatin1String("aebcdbla")); diff --git a/tests/auto/cplusplus/typeprettyprinter/tst_typeprettyprinter.cpp b/tests/auto/cplusplus/typeprettyprinter/tst_typeprettyprinter.cpp index 1917f81e4edbf295c8191eb6e8373d48695c534b..a943377b7c29a43a7401d4e6a30b3e3b929cdfd9 100644 --- a/tests/auto/cplusplus/typeprettyprinter/tst_typeprettyprinter.cpp +++ b/tests/auto/cplusplus/typeprettyprinter/tst_typeprettyprinter.cpp @@ -82,9 +82,10 @@ void addRow(const FullySpecifiedType &f, QString result, QString name = QString( void tst_TypePrettyPrinter::basic_data() { - Control c; - TranslationUnit t(&c, 0); - unit = &t; + // seems it now works without a translation unit +// Control c; +// TranslationUnit t(&c, 0); +// unit = 0; QTest::addColumn<FullySpecifiedType>("type"); QTest::addColumn<QString>("name"); diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp index bf8ca7fd750be157add481a6a60456adfe6b3709..8d1074065bd6d0f014027198aa22e19dba10c0f8 100644 --- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp @@ -78,7 +78,7 @@ static void initializeMetaTypeSystem(const QString &resourcePath) QDir::Files, QDir::Name); - const QStringList errors = QmlJS::Interpreter::MetaTypeSystem::load(xmlFiles); + const QStringList errors = QmlJS::Interpreter::CppQmlTypesLoader::load(xmlFiles); foreach (const QString &error, errors) qWarning() << qPrintable(error); } diff --git a/tests/auto/qml/qmlprojectmanager/fileformat/tst_fileformat.cpp b/tests/auto/qml/qmlprojectmanager/fileformat/tst_fileformat.cpp index 107bfc02c40f240613e2a6d26759f6a99a152ded..67e32a0c43698065932e06bc28050862b75c3224 100644 --- a/tests/auto/qml/qmlprojectmanager/fileformat/tst_fileformat.cpp +++ b/tests/auto/qml/qmlprojectmanager/fileformat/tst_fileformat.cpp @@ -44,7 +44,7 @@ void TestProject::testFileFilter() QDeclarativeComponent component(&engine); component.setData(projectFile.toUtf8(), QUrl()); if (!component.isReady()) - qDebug() << component.errorsString(); + qDebug() << component.errorString(); QVERIFY(component.isReady()); QmlProjectItem *project = qobject_cast<QmlProjectItem*>(component.create()); @@ -74,7 +74,7 @@ void TestProject::testFileFilter() QDeclarativeComponent component(&engine); component.setData(projectFile.toUtf8(), QUrl()); if (!component.isReady()) - qDebug() << component.errorsString(); + qDebug() << component.errorString(); QVERIFY(component.isReady()); QmlProjectItem *project = qobject_cast<QmlProjectItem*>(component.create()); @@ -133,7 +133,7 @@ void TestProject::testFileFilter() QDeclarativeComponent component(&engine); component.setData(projectFile.toUtf8(), QUrl()); if (!component.isReady()) - qDebug() << component.errorsString(); + qDebug() << component.errorString(); QVERIFY(component.isReady()); QmlProjectItem *project = qobject_cast<QmlProjectItem*>(component.create()); @@ -165,7 +165,7 @@ void TestProject::testFileFilter() QDeclarativeComponent component(&engine); component.setData(projectFile.toUtf8(), QUrl()); if (!component.isReady()) - qDebug() << component.errorsString(); + qDebug() << component.errorString(); QVERIFY(component.isReady()); QmlProjectItem *project = qobject_cast<QmlProjectItem*>(component.create()); @@ -194,7 +194,7 @@ void TestProject::testFileFilter() QDeclarativeComponent component(&engine); component.setData(projectFile.toUtf8(), QUrl()); if (!component.isReady()) - qDebug() << component.errorsString(); + qDebug() << component.errorString(); QVERIFY(component.isReady()); QmlProjectItem *project = qobject_cast<QmlProjectItem*>(component.create()); @@ -228,7 +228,7 @@ void TestProject::testMatchesFile() QDeclarativeComponent component(&engine); component.setData(projectFile.toUtf8(), QUrl()); if (!component.isReady()) - qDebug() << component.errorsString(); + qDebug() << component.errorString(); QVERIFY(component.isReady()); QmlProjectItem *project = qobject_cast<QmlProjectItem*>(component.create()); @@ -259,7 +259,7 @@ void TestProject::testLibraryPaths() QDeclarativeComponent component(&engine); component.setData(projectFile.toUtf8(), QUrl()); if (!component.isReady()) - qDebug() << component.errorsString(); + qDebug() << component.errorString(); QVERIFY(component.isReady()); QmlProjectItem *project = qobject_cast<QmlProjectItem*>(component.create()); diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp index 8a4f93a5f6ed3e24803365151c3caf5c545a0e1b..3842c31d464ce8c85b6bd3ffa2e10c1ad0fa9b79 100644 --- a/tests/manual/gdbdebugger/simple/app.cpp +++ b/tests/manual/gdbdebugger/simple/app.cpp @@ -60,6 +60,7 @@ #include <QtGui/QLabel> #include <QtGui/QPainter> #include <QtGui/QPainterPath> +#include <QtGui/QRegion> #include <QtGui/QStandardItemModel> #include <QtNetwork/QHostAddress> @@ -187,13 +188,20 @@ private: QHash<QObject *, Map::iterator> h; }; -class X : virtual public Foo +class X : public Foo { public: X() { } }; +class XX : virtual public Foo +{ +public: + XX() { + } +}; + class Y : virtual public Foo { public: @@ -201,32 +209,57 @@ public: } }; +class D : public X, public Y +{ + int diamond; +}; + void testArray() { - X xxx; +#if 1 + X x; + XX xx; + D diamond; + Foo *f = &xx; + Foo ff; double d[3][3]; for (int i = 0; i != 3; ++i) for (int j = 0; j != 3; ++j) d[i][j] = i + j; +#endif +#if 1 char c[20]; c[0] = 'a'; c[1] = 'b'; c[2] = 'c'; c[3] = 'd'; +#endif - QString x[20]; - x[0] = "a"; - x[1] = "b"; - x[2] = "c"; - x[3] = "d"; +#if 1 + QString s[20]; + s[0] = "a"; + s[1] = "b"; + s[2] = "c"; + s[3] = "d"; +#endif + +#if 1 + QByteArray b[20]; + b[0] = "a"; + b[1] = "b"; + b[2] = "c"; + b[3] = "d"; +#endif +#if 1 Foo foo[10]; //for (int i = 0; i != sizeof(foo)/sizeof(foo[0]); ++i) { for (int i = 0; i < 5; ++i) { foo[i].a = i; foo[i].doit(); } +#endif } #ifndef Q_CC_RVCT @@ -771,6 +804,18 @@ void testQPixmap() Q_UNUSED(i); } +void testQRegion() +{ + QRegion region; + region += QRect(100, 100, 200, 200); + region += QRect(300, 300, 400, 500); + region += QRect(500, 500, 600, 600); + region += QRect(500, 500, 600, 600); + region += QRect(500, 500, 600, 600); + region += QRect(500, 500, 600, 600); +} + + void testPlugin() { QString dir = QDir::currentPath(); @@ -1761,6 +1806,7 @@ int main(int argc, char *argv[]) //testWCout0(); //testWCout(); testColor(); + testQRegion(); testStuff(); testPeekAndPoke3(); testFunctionPointer();