diff options
203 files changed, 6496 insertions, 12507 deletions
diff --git a/doc/images/qtcreator-android-manifest-editor.png b/doc/images/qtcreator-android-manifest-editor.png Binary files differindex 1f9e581de1..42477a6d1c 100644 --- a/doc/images/qtcreator-android-manifest-editor.png +++ b/doc/images/qtcreator-android-manifest-editor.png diff --git a/doc/images/qtcreator-build-steps.png b/doc/images/qtcreator-build-steps.png Binary files differindex 5a44ac1d01..74822377d4 100644 --- a/doc/images/qtcreator-build-steps.png +++ b/doc/images/qtcreator-build-steps.png diff --git a/doc/images/qtcreator-cmakeexecutable.png b/doc/images/qtcreator-cmakeexecutable.png Binary files differindex b63fd2aeda..711c2f708c 100644 --- a/doc/images/qtcreator-cmakeexecutable.png +++ b/doc/images/qtcreator-cmakeexecutable.png diff --git a/doc/images/qtcreator-editor-settings.png b/doc/images/qtcreator-editor-settings.png Binary files differindex db551f77e6..9766b153f3 100644 --- a/doc/images/qtcreator-editor-settings.png +++ b/doc/images/qtcreator-editor-settings.png diff --git a/doc/images/qtcreator-kits.png b/doc/images/qtcreator-kits.png Binary files differindex 15243c74a4..13bc784a76 100644 --- a/doc/images/qtcreator-kits.png +++ b/doc/images/qtcreator-kits.png diff --git a/doc/images/qtcreator-options-qbs.png b/doc/images/qtcreator-options-qbs.png Binary files differindex 48065a1ae8..e1d758035f 100644 --- a/doc/images/qtcreator-options-qbs.png +++ b/doc/images/qtcreator-options-qbs.png diff --git a/doc/src/analyze/creator-clang-static-analyzer.qdoc b/doc/src/analyze/creator-clang-static-analyzer.qdoc index beb3e03463..69ec1abc77 100644 --- a/doc/src/analyze/creator-clang-static-analyzer.qdoc +++ b/doc/src/analyze/creator-clang-static-analyzer.qdoc @@ -44,7 +44,9 @@ \l{http://clang-analyzer.llvm.org/available_checks.html}{Available Checkers}. To suppress diagnostics, select \uicontrol {Suppress This Diagnostic} in the - context menu. + context menu. To view the suppression list for a project and to remove + diagnostics from it, select \uicontrol {Clang Static Analyzer Settings} in + the \uicontrol Projects mode. \section1 Setting Up Clang Static Analyzer diff --git a/doc/src/android/androiddev.qdoc b/doc/src/android/androiddev.qdoc index 6cf6cc12c3..ae60b312e6 100644 --- a/doc/src/android/androiddev.qdoc +++ b/doc/src/android/androiddev.qdoc @@ -67,6 +67,8 @@ \l{http://developer.android.com/tools/sdk/ndk/index.html} {Android NDK} from Google. + \note Android Studio is currently not supported by \QC. + \li On Windows, you also need the following: \list diff --git a/doc/src/android/deploying-android.qdoc b/doc/src/android/deploying-android.qdoc index eba5418398..35e3beda58 100644 --- a/doc/src/android/deploying-android.qdoc +++ b/doc/src/android/deploying-android.qdoc @@ -291,6 +291,7 @@ \li In the \uicontrol Application group, you can give the application a name and select an icon for it. The three icon fields can contain different versions of the icon with low, medium, and high DPI values, from left to right. + You can also give an activity a name and select the activity to run. \li In the \uicontrol Permissions field, you can specify the permissions that your application needs. Users are asked to grant the permissions when they diff --git a/doc/src/howto/creator-sessions.qdoc b/doc/src/howto/creator-sessions.qdoc index 694843ea9c..76b035a358 100644 --- a/doc/src/howto/creator-sessions.qdoc +++ b/doc/src/howto/creator-sessions.qdoc @@ -55,20 +55,22 @@ developers working on the same projects. For example, if you work on a project and need to switch to another project - for a while, you can save your workspace as a session and then close the - project and all the files in it. Everything that you open after saving the - session becomes a part of a new session. When you want to return to working - on the first project, open the saved session. \QC opens the projects and - files that belong to the session. + for a while, you can clone the current session to save it under a name and + create a new session for the other project. Everything that you open after + switching to the new session becomes a part of it. When you want to return + to working on the first project, switch to the saved session. \QC opens the + projects and files that belong to the session. - To create a new session or remove existing sessions, select \uicontrol File > - \uicontrol{Session Manager}. + To save a session under a new name, select \uicontrol File > + \uicontrol {Session Manager} > \uicontrol Clone. + + To create a new session, select \uicontrol File > + \uicontrol {Session Manager} > \uicontrol New. \image qtcreator-session-manager.png - To switch between sessions, choose \uicontrol {File > Session Manager}. If you do - not create or select a session, \QC always uses the default session, which - was created the last time you exited \QC. + To switch between sessions, choose \uicontrol {File > Session Manager} > + \uicontrol {Switch to}. When you launch \QC, a list of existing sessions is displayed in the \uicontrol Welcome mode. diff --git a/doc/src/howto/creator-ui.qdoc b/doc/src/howto/creator-ui.qdoc index f9abf918a0..c0c5c1ecb0 100644 --- a/doc/src/howto/creator-ui.qdoc +++ b/doc/src/howto/creator-ui.qdoc @@ -486,6 +486,11 @@ To determine whether the keywords in the whole project or in the current file are displayed by default, select \uicontrol {Scanning scope}. + To exclude files from scanning, select \uicontrol {To-Do Settings} in the + \uicontrol Projects mode. Select \uicontrol Add and enter a regular + expression that matches the path to files to exclude. Use a forward slash + (/) as a separator in the path also on Windows. + The Todo plugin is disabled by default. To enable the plugin, select \uicontrol Help > \uicontrol {About Plugins} > \uicontrol Utilities > \uicontrol Todo and restart diff --git a/doc/src/howto/creator-vcs.qdoc b/doc/src/howto/creator-vcs.qdoc index 1111319b90..a630b9ad6a 100644 --- a/doc/src/howto/creator-vcs.qdoc +++ b/doc/src/howto/creator-vcs.qdoc @@ -722,6 +722,12 @@ deselect the \uicontrol Load check box for the \uicontrol Perforce plugin in the \uicontrol {Version Control} group. + In the Perforce options, you can specify workspace details: + \uicontrol {P4 user}, \uicontrol {P4 client}, and \uicontrol {P4 port}. To + specify the details individually for several projects, use configuration + files instead. Create a \c {p4config.txt} configuration file for each + project in the top level project directory. + The \uicontrol Perforce submenu contains the following additional items: \table diff --git a/doc/src/projects/creator-projects-cmake.qdoc b/doc/src/projects/creator-projects-cmake.qdoc index 80fbbddd91..4561f3f6b3 100644 --- a/doc/src/projects/creator-projects-cmake.qdoc +++ b/doc/src/projects/creator-projects-cmake.qdoc @@ -39,13 +39,20 @@ Since \QC 1.1, CMake configuration files are supported. Since \QC 1.3, the Microsoft tool chain is supported if the CMake version is at least 2.8. - \section1 Setting the Path for CMake + \QC automatically detects the CMake executable specified in the \c PATH. + You can add paths to other CMake executables and use them in different + build and run \l{glossary-buildandrun-kit}{kits}. - You can set the path for the CMake executable in \uicontrol Tools > - \uicontrol Options > \uicontrol {Build & Run} > \uicontrol CMake. + \section1 Adding CMake Tools + + To specify paths to CMake executables, select \uicontrol Tools > + \uicontrol Options > \uicontrol {Build & Run} > \uicontrol CMake > + \uicontrol Add. \image qtcreator-cmakeexecutable.png + \section1 Opening CMake Projects + \note Before you open a CMake project, you must modify the \c {PATH} environment variable to include the bin folders of \c mingw and Qt. @@ -60,8 +67,6 @@ C:\Qt\Tools\QtCreator\qtcreator.exe \endcode - \section1 Opening CMake Projects - To open a CMake project: \list 1 @@ -103,6 +108,9 @@ \QC supports multiple build configurations. You can change the build directory after the initial import. + The build and run kit that you select determines which CMake tool is used + for building. For more information, see \l {Adding Kits}. + \section1 Running CMake Projects \QC automatically adds \uicontrol {Run Configurations} for all targets diff --git a/doc/src/projects/creator-projects-qbs.qdoc b/doc/src/projects/creator-projects-qbs.qdoc index fa03e92064..26fbac4160 100644 --- a/doc/src/projects/creator-projects-qbs.qdoc +++ b/doc/src/projects/creator-projects-qbs.qdoc @@ -155,8 +155,8 @@ \image qtcreator-options-qbs.png - To add keys and values to a build profile that is associated with a build - and run kit: + You can modify a build profile that is associated with a build and run kit + by editing the values of the keys generated by \QC and by adding new values: \list 1 @@ -166,12 +166,21 @@ \li Select \uicontrol Edit to edit the profile associated with the kit. - \li Select \uicontrol Add to add keys and values to the profile. - Spefify keys as: \c <module_name>.<property_name>. Specify the - values as JSON literals. + \li Select \uicontrol Add to add keys and values to the profile or to + modify existing values. + + \li In the \uicontrol Key column, spefify the key to add or modify as: + \c <module_name>.<property_name>. + + \li In the \uicontrol Value column, specify a value as a JSON literal. + + \li Click \uicontrol OK. \endlist + The values that you have modified are displayed in red in the + \uicontrol {Profile properties} field. + For a list of available keys and values, see the \l{http://doc.qt.io/qbs/list-of-modules.html}{List of Modules} in the Qbs Manual. diff --git a/doc/src/projects/creator-projects-settings-build.qdoc b/doc/src/projects/creator-projects-settings-build.qdoc index 4c84c2c7f9..7d0612f05a 100644 --- a/doc/src/projects/creator-projects-settings-build.qdoc +++ b/doc/src/projects/creator-projects-settings-build.qdoc @@ -114,6 +114,10 @@ the build step and add a custom build step that specifies another shell command. + To generate debug symbols also for applications compiled in release mode, + select the \uicontrol {Generate separate debug info} check box. For more + information, see \l{Using the CPU Usage Analyzer}. + \QC is integrated to \l{http://doc.qt.io/QtQuickCompiler/} {Qt Quick Compiler} (commercial only) that enables you to compile QML source code into the final binary. This diff --git a/doc/src/projects/creator-projects-settings-overview.qdoc b/doc/src/projects/creator-projects-settings-overview.qdoc index 2e76e974e5..529a8f0a34 100644 --- a/doc/src/projects/creator-projects-settings-overview.qdoc +++ b/doc/src/projects/creator-projects-settings-overview.qdoc @@ -88,6 +88,11 @@ \li \l{Specifying Dependencies}{Dependencies} + \li \l{Using Clang Static Analyzer}{Clang Static Analyzer Settings} + (commercial only) + + \li \l{To-Do List}{To-Do Settings} (experimental) + \endlist Use the \uicontrol Build and \uicontrol Run buttons to switch between the build and diff --git a/doc/src/projects/creator-projects-targets.qdoc b/doc/src/projects/creator-projects-targets.qdoc index 4d0aec00c5..a9379ba6b9 100644 --- a/doc/src/projects/creator-projects-targets.qdoc +++ b/doc/src/projects/creator-projects-targets.qdoc @@ -114,6 +114,11 @@ configuration that should be used by qmake. If you leave this field empty, the default mkspec of the selected Qt version is used. + \li In the \uicontrol {CMake Tool} field, select the CMake tool to use + for building the project. Select \uicontrol Manage to add installed + CMake tools to the list. For more information, see + \l{Adding CMake Tools}. + \endlist */ diff --git a/doc/src/qtquick/qtquick-designer.qdoc b/doc/src/qtquick/qtquick-designer.qdoc index 52db1901c8..ca7289e775 100644 --- a/doc/src/qtquick/qtquick-designer.qdoc +++ b/doc/src/qtquick/qtquick-designer.qdoc @@ -469,7 +469,7 @@ \section2 Previewing Component Size The width and height of the root item in a QML file determine the size of - the component. You can reuse component, such as buttons, in different + the component. You can reuse components, such as buttons, in different sizes in other QML files and design screens for use with different device profiles, screen resolution, or screen orientation. The component size might also be zero (0,0) if its final size is determined by property diff --git a/doc/src/qtquick/qtquick-exporting-qml.qdoc b/doc/src/qtquick/qtquick-exporting-qml.qdoc index 5172e2a950..8a7957713b 100644 --- a/doc/src/qtquick/qtquick-exporting-qml.qdoc +++ b/doc/src/qtquick/qtquick-exporting-qml.qdoc @@ -39,7 +39,12 @@ \note GIMP does not support grouping, and therefore, each layer is exported as an item in GIMP. - You can open the QML file in \QC for editing. If you edit the file in Adobe + You can open the QML file in \QC for editing. By default, the export scripts + generate Qt Quick 1 files. To edit the files in \QMLD, change the import + statements in the export scripts to import Qt Quick 2. Or, you can change + the import statement in each file after generating the files. + + If you edit the file in Adobe Photoshop and export it to the same directory again, any changes you made in \QC are overwritten. However, you can re-export graphical assets without recreating the QML code. @@ -114,13 +119,21 @@ \list 1 - \li Download the export script, \e{Export QML.jx}, from - \l{https://code.qt.io/cgit/qt-labs/photoshop-qmlexporter.git/} - {code.qt.io}. + \li Clone the repository that contains the export script, + \e{Export QML.jx}, from + \l{https://codereview.qt-project.org/#/admin/projects/qt-labs/photoshop-qmlexporter} + {Qt Code Review}. \note Read the README.txt file in the repository for latest information about the script. + \li To generate QML files that you can edit in \QMLD, edit the import + statement in \e {Export QML.jx}. For example: + + \code + qmlfile.write("import QtQuick 2.5\n"); + \endcode + \li Double-click the export script to add the export command to the \uicontrol Scripts menu. You can also copy the script file to the Adobe Photoshop scripts directory (typically, \c{\Presets\Scripts} in the @@ -160,21 +173,12 @@ The script has been tested to work on GIMP 2. You can download GIMP 2 from \l{http://www.gimp.org/downloads/}{GIMP Downloads}. - To use the export script on Microsoft Windows, you also need to install the - GIMP Python extension (Python, PyCairo, PyGobject, PyGTK). However, GIMP is - not officially supported on Windows, so we cannot guarantee that this will - work. - \list 1 - \li On Microsoft Windows, you must first add Python support to your GIMP - installation, as instructed in - \l {http://www.gimpusers.com/tutorials/install-python-for-gimp-2-6-windows} - {Tutorial: Installing Python for GIMP 2.6 (Windows)}. - - \li Download the export script, \e qmlexporter.py, from - \l{https://code.qt.io/cgit/qt-labs/gimp-qmlexporter.git/} - {code.qt.io}. + \li Clone the repository that contains the export script, + \e qmlexporter.py, from + \l{https://codereview.qt-project.org/#/admin/projects/qt-labs/gimp-qmlexporter} + {Qt Code Review}. \note Read the INSTALL.txt in the repository for latest information about the script. @@ -186,6 +190,13 @@ On Linux, run the following command: \c {chmod u+rx} + \li To generate QML files that you can edit in \QMLD, edit the import + statement in \e qmlexporter.py. For example: + + \code + f.write('import QtQuick 2.5\n') + \endcode + \li Restart GIMP to have the export command added to the \uicontrol File menu. \li Choose \uicontrol {File > Export to QML} to export the design to a QML diff --git a/qbs/imports/QtcClangInstallation/functions.js b/qbs/imports/QtcClangInstallation/functions.js index 682211a06f..f00b109a63 100644 --- a/qbs/imports/QtcClangInstallation/functions.js +++ b/qbs/imports/QtcClangInstallation/functions.js @@ -1,4 +1,17 @@ -function llvmConfig(qbs) +var File = loadExtension("qbs.File") +var MinimumLLVMVersion = "3.6.0" + +function isSuitableLLVMConfig(llvmConfigCandidate, qtcFunctions, processOutputReader) +{ + if (File.exists(llvmConfigCandidate)) { + var candidateVersion = version(llvmConfigCandidate, processOutputReader); + if (candidateVersion && candidateVersion.length) + return qtcFunctions.versionIsAtLeast(candidateVersion, MinimumLLVMVersion) + } + return false; +} + +function llvmConfig(qbs, qtcFunctions, processOutputReader) { var llvmInstallDirFromEnv = qbs.getEnv("LLVM_INSTALL_DIR") var llvmConfigVariants = [ @@ -10,7 +23,7 @@ function llvmConfig(qbs) if (llvmInstallDirFromEnv) { for (var i = 0; i < llvmConfigVariants.length; ++i) { var variant = llvmInstallDirFromEnv + "/bin/" + llvmConfigVariants[i]; - if (File.exists(variant)) + if (isSuitableLLVMConfig(variant, qtcFunctions, processOutputReader)) return variant; } } @@ -22,7 +35,7 @@ function llvmConfig(qbs) for (var i = 0; i < llvmConfigVariants.length; ++i) { for (var j = 0; j < pathList.length; ++j) { var variant = pathList[j] + "/" + llvmConfigVariants[i]; - if (File.exists(variant)) + if (isSuitableLLVMConfig(variant, qtcFunctions, processOutputReader)) return variant; } } diff --git a/qtcreator.qbs b/qtcreator.qbs index 824935b2ba..85d0caff58 100644 --- a/qtcreator.qbs +++ b/qtcreator.qbs @@ -58,7 +58,6 @@ Project { "QT_NO_CAST_FROM_ASCII" ].concat(testsEnabled ? ["WITH_TESTS"] : []) qbsSearchPaths: "qbs" - property bool enableQbsJavaSupport: false references: [ "src/src.qbs", diff --git a/share/qtcreator/cplusplus/qt5-qobjectdefs-injected.h b/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore/qobjectdefs.h index cc7ca503bd..2580ff1b42 100644 --- a/share/qtcreator/cplusplus/qt5-qobjectdefs-injected.h +++ b/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore/qobjectdefs.h @@ -28,44 +28,35 @@ ** ****************************************************************************/ -#define QT_NO_META_MACROS +// Include qobjectdefs.h from Qt ... +#include_next <qobjectdefs.h> -#if defined(QT_NO_KEYWORDS) -# define QT_NO_EMIT -#else -# ifndef QT_NO_SIGNALS_SLOTS_KEYWORDS -# define signals public __attribute__((annotate("qt_signal"))) -# define slots __attribute__((annotate("qt_slot"))) -# endif +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmacro-redefined" + +// ...and redefine macros for tagging signals/slots +#ifdef signals +# define signals public __attribute__((annotate("qt_signal"))) +#endif + +#ifdef slots +# define slots __attribute__((annotate("qt_slot"))) +#endif + +#ifdef Q_SIGNALS +# define Q_SIGNALS public __attribute__((annotate("qt_signal"))) +#endif + +#ifdef Q_SLOTS +# define Q_SLOTS slots __attribute__((annotate("qt_slot"))) #endif -#define Q_SIGNALS public __attribute__((annotate("qt_signal"))) -#define Q_SLOTS slots __attribute__((annotate("qt_slot"))) -#define Q_SIGNAL __attribute__((annotate("qt_signal"))) -#define Q_SLOT __attribute__((annotate("qt_slot"))) -#define Q_PRIVATE_SLOT(d, signature) -#define Q_EMIT -#ifndef QT_NO_EMIT -# define emit +#ifdef Q_SIGNAL +# define Q_SIGNAL __attribute__((annotate("qt_signal"))) #endif -#define Q_CLASSINFO(name, value) -#define Q_PLUGIN_METADATA(x) -#define Q_INTERFACES(x) -#define Q_PROPERTY(text) -#define Q_PRIVATE_PROPERTY(d, text) -#define Q_REVISION(v) -#define Q_OVERRIDE(text) -#define Q_ENUMS(x) -#define Q_FLAGS(x) -#define Q_ENUM(x) -#define Q_FLAG(x) -#define Q_SCRIPTABLE -#define Q_INVOKABLE -#define Q_GADGET \ -public: \ - static const QMetaObject staticMetaObject; \ -private: +#ifdef Q_SLOT +# define Q_SLOT __attribute__((annotate("qt_slot"))) +#endif -#define SIGNAL(a) #a -#define SLOT(a) #a +#pragma clang diagnostic pop diff --git a/share/qtcreator/debugger/boosttypes.py b/share/qtcreator/debugger/boosttypes.py index 4f12d8c217..9c0c29158d 100644 --- a/share/qtcreator/debugger/boosttypes.py +++ b/share/qtcreator/debugger/boosttypes.py @@ -41,7 +41,7 @@ def qdump__boost__bimaps__bimap(d, value): def qdump__boost__optional(d, value): if int(value["m_initialized"]) == 0: - d.putValue("<uninitialized>") + d.putSpecialValue(SpecialUninitializedValue) d.putNumChild(0) else: type = d.templateArgument(value.type, 0) diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py index 9c008d5ca9..b1f9a834e6 100644 --- a/share/qtcreator/debugger/creatortypes.py +++ b/share/qtcreator/debugger/creatortypes.py @@ -46,8 +46,11 @@ def extractPointerType(d, value): try: return readLiteral(d, value["_name"]) + postfix except: - if str(value.type.unqualified().target()) == "CPlusPlus::IntegerType": + typeName = str(value.type.unqualified().target()) + if typeName == "CPlusPlus::IntegerType": return "int" + postfix + elif typeName == "CPlusPlus::VoidType": + return "void" + postfix return "<unsupported>" def readTemplateName(d, value): diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 16682a47c7..ec8d7a39ef 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -129,8 +129,18 @@ Hex2EncodedFloat4, \ Hex2EncodedFloat8, \ IPv6AddressAndHexScopeId, \ Hex2EncodedUtf8WithoutQuotes, \ -DateTimeInternal \ - = range(30) +DateTimeInternal, \ +SpecialEmptyValue, \ +SpecialUninitializedValue, \ +SpecialInvalidValue, \ +SpecialNotAccessibleValue, \ +SpecialItemCountValue, \ +SpecialMinimumItemCountValue, \ +SpecialNotCallableValue, \ +SpecialNullReferenceValue, \ +SpecialOptimizedOutValue, \ +SpecialEmptyStructureValue, \ + = range(40) # Display modes. Keep that synchronized with DebuggerDisplay in watchutils.h StopDisplay, \ @@ -292,7 +302,7 @@ class Children: if self.d.passExceptions: showException("CHILDREN", exType, exValue, exTraceBack) self.d.putNumChild(0) - self.d.putValue("<not accessible>") + self.d.putSpecialValue(SpecialNotAccessibleValue) if not self.d.currentMaxNumChild is None: if self.d.currentMaxNumChild < self.d.currentNumChild: self.d.put('{name="<incomplete>",value="",type="",numchild="0"},') @@ -692,7 +702,7 @@ class DumperBase: self.putItem(result) except: with SubItem(self, name): - self.putValue("<not callable>") + self.putSpecialValue(SpecialNotCallableValue); self.putNumChild(0) def call(self, value, func, *args): @@ -816,9 +826,9 @@ class DumperBase: def putItemCount(self, count, maximum = 1000000000): # This needs to override the default value, so don't use 'put' directly. if count > maximum: - self.putValue('<>%s items>' % maximum) + self.putSpeciaValue(SpecialMinimumItemCountValue, maximum) else: - self.putValue('<%s items>' % count) + self.putSpecialValue(SpecialItemCountValue, count) self.putNumChild(count) def putField(self, name, value): @@ -837,6 +847,9 @@ class DumperBase: if priority >= self.currentValue.priority: self.currentValue = ReportItem(value, encoding, priority, elided) + def putSpecialValue(self, encoding, value = ""): + self.putValue(value, encoding) + def putEmptyValue(self, priority = -10): if priority >= self.currentValue.priority: self.currentValue = ReportItem("", None, priority, None) @@ -896,21 +909,28 @@ class DumperBase: p = None displayFormat = self.currentItemFormat() - n = int(arrayType.sizeof / ts) - + arrayByteSize = arrayType.sizeof + if arrayByteSize == 0: + # This should not happen. But it does, see QTCREATORBUG-14755. + # GDB/GCC produce sizeof == 0 for QProcess arr[3] + s = str(value.type) + arrayByteSize = int(s[s.find('[')+1:s.find(']')]) * ts; + + n = int(arrayByteSize / ts) if displayFormat != RawFormat: if innerTypeName == "char": # Use Latin1 as default for char []. - blob = self.readMemory(self.addressOf(value), arrayType.sizeof) + blob = self.readMemory(self.addressOf(value), arrayByteSize) self.putValue(blob, Hex2EncodedLatin1) elif innerTypeName == "wchar_t": - blob = self.readMemory(self.addressOf(value), arrayType.sizeof) + blob = self.readMemory(self.addressOf(value), arrayByteSize) if innerType.sizeof == 2: self.putValue(blob, Hex4EncodedLittleEndian) else: self.putValue(blob, Hex8EncodedLittleEndian) elif p: - self.tryPutSimpleFormattedPointer(p, arrayType, innerTypeName, displayFormat, arrayType.sizeof) + self.tryPutSimpleFormattedPointer(p, arrayType, innerTypeName, + displayFormat, arrayByteSize) self.putNumChild(n) if self.isExpanded(): @@ -1413,7 +1433,7 @@ class DumperBase: else: connections = connections.dereference() connections = connections.cast(self.directBaseClass(connections.type)) - self.putValue('<>0 items>') + self.putSpecialValue(SpecialMinimumItemCountValue, 0) self.putNumChild(1) if self.isExpanded(): pp = 0 diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 088a618b0c..b2047d867b 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -465,7 +465,7 @@ class Dumper(DumperBase): if self.passExceptions: showException("SUBITEM", exType, exValue, exTraceBack) self.putNumChild(0) - self.putValue("<not accessible>") + self.putSpecialValue(SpecialNotAccessibleValue) try: if self.currentType.value: typeName = self.stripClassTag(self.currentType.value) @@ -473,7 +473,8 @@ class Dumper(DumperBase): self.put('type="%s",' % typeName) # str(type.unqualified()) ? if self.currentValue.value is None: - self.put('value="<not accessible>",numchild="0",') + self.put('value="",encoding="%d","numchild="0",' + % SpecialNotAccessibleValue) else: if not self.currentValue.encoding is None: self.put('valueencoded="%d",' % self.currentValue.encoding) @@ -930,7 +931,7 @@ class Dumper(DumperBase): if value is None: # Happens for non-available watchers in gdb versions that # need to use gdb.execute instead of gdb.parse_and_eval - self.putValue("<not available>") + self.putSpecialValue(SpecialNotAvailableValue) self.putType("<unknown>") self.putNumChild(0) return @@ -939,7 +940,7 @@ class Dumper(DumperBase): typeName = str(typeobj) if value.is_optimized_out: - self.putValue("<optimized out>") + self.putSpecialValue(SpecialOptimizedOutValue) self.putType(typeName) self.putNumChild(0) return @@ -960,7 +961,7 @@ class Dumper(DumperBase): try: # Try to recognize null references explicitly. if toInteger(value.address) == 0: - self.putValue("<null reference>") + self.putSpecialValue(SpecialNullReferenceValue) self.putType(typeName) self.putNumChild(0) return @@ -988,7 +989,7 @@ class Dumper(DumperBase): self.putBetterType("%s &" % self.currentType.value) return except RuntimeError: - self.putValue("<optimized out reference>") + self.putSpecialValue(SpecialOptimizedOutValue) self.putType(typeName) self.putNumChild(0) return @@ -1069,7 +1070,7 @@ class Dumper(DumperBase): # Anonymous union. We need a dummy name to distinguish # multiple anonymous unions in the struct. self.putType(typeobj) - self.putValue("{...}") + self.putSpecialValue(SpecialEmptyStructureValue) self.anonNumber += 1 with Children(self, 1): self.listAnonymous(value, "#%d" % self.anonNumber, typeobj) @@ -1155,7 +1156,13 @@ class Dumper(DumperBase): def putFields(self, value, dumpBase = True): fields = value.type.fields() if self.sortStructMembers: - fields.sort(key = lambda field: "%d%s" % (not field.is_base_class, field.name)) + def sortOrder(field): + if field.is_base_class: + return 0 + if field.name and field.name.startswith("_vptr."): + return 1 + return 2 + fields.sort(key = lambda field: "%d%s" % (sortOrder(field), field.name)) #warn("TYPE: %s" % value.type) #warn("FIELDS: %s" % fields) @@ -1706,7 +1713,7 @@ class CliDumper(Dumper): if self.passExceptions: showException("SUBITEM", exType, exValue, exTraceBack) self.putNumChild(0) - self.putValue("<not accessible>") + self.putSpecialValue(SpecialNotAccessibleValue) try: if self.currentType.value: typeName = self.stripClassTag(self.currentType.value) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 2ea011f734..f9befc4c3c 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -266,14 +266,15 @@ class Dumper(DumperBase): if self.passExceptions: showException("SUBITEM", exType, exValue, exTraceBack) self.putNumChild(0) - self.putValue("<not accessible>") + self.putSpecialValue(SpecialNotAccessibleValue) try: if self.currentType.value: typeName = self.currentType.value if len(typeName) > 0 and typeName != self.currentChildType: self.put('type="%s",' % typeName) # str(type.unqualified()) ? if self.currentValue.value is None: - self.put('value="<not accessible>",numchild="0",') + self.put('value="",encoding="%d",numchild="0",' + % SpecialNotAccessibleValue) else: if not self.currentValue.encoding is None: self.put('valueencoded="%s",' % self.currentValue.encoding) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 90a256f484..62c188c736 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -58,6 +58,7 @@ def qform__QByteArray(): def qdump__QByteArray(d, value): data, size, alloc = d.byteArrayData(value) + d.check(0 <= size and size <= alloc and alloc <= 1000 * 1000 * 100) d.putNumChild(size) elided, p = d.encodeByteArrayHelper(d.extractPointer(value), d.displayStringLimit) displayFormat = d.currentItemFormat() @@ -78,6 +79,7 @@ def qdump__QByteArray(d, value): def qdump__QByteArrayData(d, value): data, size, alloc = d.byteArrayDataHelper(d.addressOf(value)) + d.check(0 <= size and size <= alloc and alloc <= 1000 * 1000 * 100) d.putValue(d.readMemory(data, size), Hex2EncodedLatin1) d.putNumChild(1) if d.isExpanded(): @@ -1552,7 +1554,7 @@ def qdump__QRegExp(d, value): def qdump__QRegion(d, value): p = value["d"].dereference()["qt_rgn"] if d.isNull(p): - d.putValue("<empty>") + d.putSpecialValue(SpecialEmptyValue) d.putNumChild(0) else: # struct QRegionPrivate: diff --git a/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml b/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml index 5bfd2c6183..31d2542bd5 100644 --- a/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml +++ b/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml @@ -60,4 +60,8 @@ ScrollViewStyle { decrementControl: Item {} incrementControl: Item {} corner: Item {} + + //Even if the platform style reports touch support a scrollview should not be flickable. + Component.onCompleted: control.flickableItem.interactive = false + transientScrollBars: false } diff --git a/share/qtcreator/translations/qtcreator_pl.ts b/share/qtcreator/translations/qtcreator_pl.ts index c24ba8b197..5854ec2295 100644 --- a/share/qtcreator/translations/qtcreator_pl.ts +++ b/share/qtcreator/translations/qtcreator_pl.ts @@ -73,6 +73,10 @@ <source>Do not &ask again</source> <translation>Nie &pytaj ponownie</translation> </message> + <message> + <source>Do not &show again</source> + <translation>Nie po&kazuj ponownie</translation> + </message> </context> <context> <name>Utils::WizardPage</name> @@ -108,18 +112,6 @@ <translation>Niepoprawna nazwa pliku z formularzem: "%1"</translation> </message> <message> - <source>Invalid header file name: '%1'</source> - <translation type="vanished">Niepoprawna nazwa pliku nagłówkowego: "%1"</translation> - </message> - <message> - <source>Invalid source file name: '%1'</source> - <translation type="vanished">Niepoprawna nazwa piku źródłowego: "%1"</translation> - </message> - <message> - <source>Invalid form file name: '%1'</source> - <translation type="vanished">Niepoprawna nazwa pliku z formularzem: "%1"</translation> - </message> - <message> <source>Inherits QObject</source> <translation>Dziedziczy z QObject</translation> </message> @@ -203,6 +195,14 @@ <translation>Plik o tej samej nazwie już istnieje.</translation> </message> <message> + <source>Invalid character "%1" found.</source> + <translation>Niepoprawny znak "%1".</translation> + </message> + <message> + <source>Invalid character ".".</source> + <translation>Niepoprawny znak ".".</translation> + </message> + <message> <source>Use as default project location</source> <translation>Ustaw jako domyślne położenie projektów</translation> </message> @@ -368,7 +368,7 @@ </message> <message> <source>Re-enable warnings that were suppressed by selecting "Do Not Show Again" (for example, missing highlighter).</source> - <translation>Przywraca ostrzeżenia, które zostały wyłączone przy użyciu "Nie pokazuj więcej" (np. brak podświetlania).</translation> + <translation>Przywraca ostrzeżenia, które zostały wyłączone przy użyciu "Nie pokazuj ponownie" (np. brak podświetlania).</translation> </message> <message> <source>Theme:</source> @@ -378,6 +378,14 @@ <source>Patch command:</source> <translation>Komenda "patch":</translation> </message> + <message> + <source>Warn before opening text files greater than</source> + <translation>Ostrzegaj przed otwieraniem plików tekstowych większych niż</translation> + </message> + <message> + <source>MB</source> + <translation>MB</translation> + </message> </context> <context> <name>CodePaster::PasteSelectDialog</name> @@ -449,45 +457,6 @@ </message> </context> <context> - <name>Designer::Internal::CppSettingsPageWidget</name> - <message> - <source>Form</source> - <translation type="vanished">Formularz</translation> - </message> - <message> - <source>Embedding of the UI Class</source> - <translation type="vanished">Osadzanie klas UI</translation> - </message> - <message> - <source>Aggregation as a pointer member</source> - <translation type="vanished">Agregacja poprzez wskaźnik do składnika</translation> - </message> - <message> - <source>Aggregation</source> - <translation type="vanished">Agregacja</translation> - </message> - <message> - <source>Code Generation</source> - <translation type="vanished">Generowanie kodu</translation> - </message> - <message> - <source>Support for changing languages at runtime</source> - <translation type="vanished">Obsługa zmian języków w trakcie wykonywania programu</translation> - </message> - <message> - <source>Use Qt module name in #include-directive</source> - <translation type="vanished">Używaj nazwy modułu Qt w dyrektywach #include</translation> - </message> - <message> - <source>Multiple inheritance</source> - <translation type="vanished">Dziedziczenie wielokrotne</translation> - </message> - <message> - <source>Add Qt version #ifdef for module names</source> - <translation type="vanished">Generuj odpowiednie dyrektywy #include w zależności od wersji Qt</translation> - </message> -</context> -<context> <name>Designer::Internal::FormClassWizardPage</name> <message> <source>Class</source> @@ -521,14 +490,6 @@ <translation>Utworzyć kopię roboczą gałęzi?</translation> </message> <message> - <source>Would you like to delete the tag '%1'?</source> - <translation type="vanished">Czy usunąć tag "%1"?</translation> - </message> - <message> - <source>Would you like to delete the <b>unmerged</b> branch '%1'?</source> - <translation type="vanished">Czy usunąć <b>niescaloną</b> gałąź "%1"?</translation> - </message> - <message> <source>Would you like to delete the tag "%1"?</source> <translation>Czy usunąć tag "%1"?</translation> </message> @@ -569,10 +530,6 @@ <translation type="unfinished"></translation> </message> <message> - <source>Would you like to delete the branch '%1'?</source> - <translation type="vanished">Czy usunąć gałąź "%1"?</translation> - </message> - <message> <source>Re&fresh</source> <translation>&Odśwież</translation> </message> @@ -630,99 +587,6 @@ </message> </context> <context> - <name>Gitorious::Internal::GitoriousHostWidget</name> - <message> - <source>...</source> - <translation type="vanished">...</translation> - </message> - <message> - <source><New Host></source> - <translation type="vanished"><Nowy Host></translation> - </message> - <message> - <source>Host</source> - <translation type="vanished">Host</translation> - </message> - <message> - <source>Projects</source> - <translation type="vanished">Projekty</translation> - </message> - <message> - <source>Description</source> - <translation type="vanished">Opis</translation> - </message> -</context> -<context> - <name>Gitorious::Internal::GitoriousProjectWidget</name> - <message> - <source>WizardPage</source> - <translation type="vanished">StronaKreatora</translation> - </message> - <message> - <source>...</source> - <translation type="vanished">...</translation> - </message> - <message> - <source>Keep updating</source> - <translation type="vanished">Odświeżaj</translation> - </message> - <message> - <source>Project</source> - <translation type="vanished">Projekt</translation> - </message> - <message> - <source>Description</source> - <translation type="vanished">Opis</translation> - </message> -</context> -<context> - <name>Gitorious::Internal::GitoriousRepositoryWizardPage</name> - <message> - <source>WizardPage</source> - <translation type="vanished">StronaKreatora</translation> - </message> - <message> - <source>Name</source> - <translation type="vanished">Nazwa</translation> - </message> - <message> - <source>Owner</source> - <translation type="vanished">Właściciel</translation> - </message> - <message> - <source>Description</source> - <translation type="vanished">Opis</translation> - </message> - <message> - <source>Repository</source> - <translation type="vanished">Repozytorium</translation> - </message> - <message> - <source>Choose a repository of the project '%1'.</source> - <translation type="vanished">Wybierz repozytorium dla projektu "%1".</translation> - </message> - <message> - <source>Mainline Repositories</source> - <translation type="vanished">Główne repozytoria</translation> - </message> - <message> - <source>Clones</source> - <translation type="vanished">Klony</translation> - </message> - <message> - <source>Baseline Repositories</source> - <translation type="vanished">Podstawowe repozytoria</translation> - </message> - <message> - <source>Shared Project Repositories</source> - <translation type="vanished">Współdzielone repozytoria</translation> - </message> - <message> - <source>Personal Repositories</source> - <translation type="vanished">Osobiste repozytoria</translation> - </message> -</context> -<context> <name>Git::Internal::GitSubmitPanel</name> <message> <source>General Information</source> @@ -757,10 +621,6 @@ <translation>Email:</translation> </message> <message> - <source>By&pass hooks</source> - <translation type="vanished">&Omiń hooki</translation> - </message> - <message> <source>By&pass hooks:</source> <translation>&Omiń hooki:</translation> </message> @@ -813,7 +673,7 @@ </message> <message> <source>Log count:</source> - <translation>Licznik loga:</translation> + <translation>Licznik logu:</translation> </message> <message> <source>Git needs to find Perl in the environment.</source> @@ -913,7 +773,7 @@ </message> <message> <source>Log count:</source> - <translation>Licznik loga:</translation> + <translation>Licznik logu:</translation> </message> <message> <source>P4 command:</source> @@ -1064,10 +924,6 @@ <translation>linii</translation> </message> <message> - <source><i>jom</i> is a drop-in replacement for <i>nmake</i> which distributes the compilation process to multiple CPU cores. The latest binary is available at <a href="http://releases.qt-project.org/jom/">http://releases.qt-project.org/jom/</a>. Disable it if you experience problems with your builds.</source> - <translation type="vanished"><i>jom</i> jest zamiennikiem <i>nmake</i>, który dystrybuuje proces kompilacji do wielu rdzeni procesora .Najnowsza wersja jest dostępna tu: <a href="http://releases.qt-project.org/jom/">ftp://ftp.qt.nokia.com/jom/</a>. Zdezaktywuj tę opcję, jeśli zauważysz problemy podczas budowania.</translation> - </message> - <message> <source>Open Compile Output pane when building</source> <translation>Otwieraj "Komunikaty kompilatora" podczas budowania</translation> </message> @@ -1092,8 +948,8 @@ <translation>Pyta po naciśnięciu przycisku stop w "Komunikatach aplikacji", przed zatrzymaniem aplikacji.</translation> </message> <message> - <source><i>jom</i> is a drop-in replacement for <i>nmake</i> which distributes the compilation process to multiple CPU cores. The latest binary is available at <a href="http://download.qt-project.org/official_releases/jom/">http://download.qt-project.org/official_releases/jom/</a>. Disable it if you experience problems with your builds.</source> - <translation><i>jom</i> jest zamiennikiem <i>nmake</i>, który dystrybuuje proces kompilacji do wielu rdzeni procesora .Najnowsza wersja jest dostępna tu: <a href="http://download.qt-project.org/official_releases/jom/">http://download.qt-project.org/official_releases/jom/</a>. W razie napotkania problemów podczas budowania opcję tę należy wyłączyć.</translation> + <source><i>jom</i> is a drop-in replacement for <i>nmake</i> which distributes the compilation process to multiple CPU cores. The latest binary is available at <a href="http://download.qt.io/official_releases/jom/">http://download.qt.io/official_releases/jom/</a>. Disable it if you experience problems with your builds.</source> + <translation><i>jom</i> jest zamiennikiem <i>nmake</i>, który dystrybuuje proces kompilacji do wielu rdzeni procesora .Najnowsza wersja jest dostępna tu: <a href="http://download.qt.io/official_releases/jom/">http://download.qt.io/official_releases/jom/</a>. W razie napotkania problemów podczas budowania opcję tę należy wyłączyć.</translation> </message> </context> <context> @@ -1150,14 +1006,6 @@ <translation>&Przełącz sesję</translation> </message> <message> - <source>New session name</source> - <translation type="vanished">Nazwa nowej sesji</translation> - </message> - <message> - <source>Rename session</source> - <translation type="vanished">Zmień nazwę sesji</translation> - </message> - <message> <source><a href="qthelp://org.qt-project.qtcreator/doc/creator-project-managing-sessions.html">What is a Session?</a></source> <translation><a href="qthelp://org.qt-project.qtcreator/doc/creator-project-managing-sessions.html">Co to jest sesja?</a></translation> </message> @@ -1383,10 +1231,6 @@ <translation>budowanie w <b>%1</b></translation> </message> <message> - <source>The Qt version %1 does not support shadow builds, building might fail.</source> - <translation>Qt w wersji %1 nie obsługuje budowania poza drzewem źródłowym, budowa może się nie powieść.</translation> - </message> - <message> <source>Warning:</source> <translation>Ostrzeżenie:</translation> </message> @@ -1448,7 +1292,7 @@ </message> <message> <source>Log count:</source> - <translation>Licznik loga:</translation> + <translation>Licznik logu:</translation> </message> <message> <source>Subversion command:</source> @@ -1628,6 +1472,10 @@ <source>Alias:</source> <translation>Alias:</translation> </message> + <message> + <source>Remove Missing Files</source> + <translation>Usuń brakujące pliki</translation> + </message> </context> <context> <name>Application</name> @@ -1648,11 +1496,11 @@ <translation>Nie można odnaleźć wtyczki "Core" w %1</translation> </message> <message> - <source>Could not find 'Core.pluginspec' in %1</source> - <translation type="vanished">Nie można odnaleźć "Core.pluginspec" w %1</translation> + <source>Core plugin is disabled.</source> + <translation>Wtyczka "Core" wyłączona.</translation> </message> <message> - <source>No valid theme '%1'</source> + <source>No valid theme "%1"</source> <translation>Brak poprawnego motywu "%1"</translation> </message> </context> @@ -1677,14 +1525,6 @@ <context> <name>PluginManager</name> <message> - <source>The plugin '%1' is specified twice for testing.</source> - <translation type="vanished">Wtyczka "%1" występuje dwukrotnie w testach.</translation> - </message> - <message> - <source>The plugin '%1' does not exist.</source> - <translation type="vanished">Wtyczka "%1" nie istnieje.</translation> - </message> - <message> <source>The plugin "%1" is specified twice for testing.</source> <translation>Wtyczka "%1" występuje dwukrotnie w testach.</translation> </message> @@ -1796,14 +1636,6 @@ Przyczyna: %3</translation> <context> <name>ExtensionSystem::Internal::PluginSpecPrivate</name> <message> - <source>Cannot open file %1 for reading: %2</source> - <translation type="vanished">Nie można otworzyć pliku %1 do odczytu: %2</translation> - </message> - <message> - <source>Error parsing file %1: %2, at line %3, column %4</source> - <translation type="vanished">Błąd parsowania pliku %1: %2, w linii %3, w kolumnie %4</translation> - </message> - <message> <source>Plugin meta data not found</source> <translation>Brak danych o wtyczce</translation> </message> @@ -1831,30 +1663,6 @@ Przyczyna: %3</translation> <context> <name>PluginSpec</name> <message> - <source>'%1' misses attribute '%2'</source> - <translation type="vanished">Brak atrybutu "%2" w "%1"</translation> - </message> - <message> - <source>'%1' has invalid format</source> - <translation type="vanished">"%1" posiada niepoprawny format</translation> - </message> - <message> - <source>Invalid element '%1'</source> - <translation type="vanished">Niepoprawny element "%1"</translation> - </message> - <message> - <source>Unexpected closing element '%1'</source> - <translation type="vanished">Nieoczekiwany element domykający "%1"</translation> - </message> - <message> - <source>Unexpected token</source> - <translation type="vanished">Nieoczekiwany znak</translation> - </message> - <message> - <source>Expected element '%1' as top level element</source> - <translation type="vanished">Oczekiwano elementu "%1" jako elementu głównego</translation> - </message> - <message> <source>"%1" is missing</source> <translation>Brak "%1"</translation> </message> @@ -1988,22 +1796,10 @@ Przyczyna: %3</translation> <translation>Nie można uruchomić "%1": %2</translation> </message> <message> - <source>Cannot create temporary directory '%1': %2</source> - <translation type="vanished">Nie można utworzyć tymczasowego katalogu "%1": %2</translation> - </message> - <message> <source>Unexpected output from helper program (%1).</source> <translation>Nieoczekiwany komunikat od programu pomocniczego (%1).</translation> </message> <message> - <source>Cannot change to working directory '%1': %2</source> - <translation type="vanished">Nie można zmienić katalogu roboczego na '%1': %2</translation> - </message> - <message> - <source>Cannot execute '%1': %2</source> - <translation type="vanished">Nie można uruchomić "%1": %2</translation> - </message> - <message> <source>Quoting error in command.</source> <translation>Błąd w cytacie komendy.</translation> </message> @@ -2028,18 +1824,6 @@ Przyczyna: %3</translation> <translation>Nie można utworzyć gniazda "%1": %2</translation> </message> <message> - <source>Cannot start the terminal emulator '%1', change the setting in the Environment options.</source> - <translation type="vanished">Nie można uruchomić emulatora terminala "%1", zmień ustawienie w opcjach środowiska.</translation> - </message> - <message> - <source>Cannot create socket '%1': %2</source> - <translation type="vanished">Nie można utworzyć gniazda "%1": %2</translation> - </message> - <message> - <source>The process '%1' could not be started: %2</source> - <translation type="vanished">Proces "%1" nie może zostać rozpoczęty: %2</translation> - </message> - <message> <source>The process "%1" could not be started: %2</source> <translation>Nie można uruchomić procesu "%1": %2</translation> </message> @@ -2070,14 +1854,6 @@ Przyczyna: %3</translation> <translation>Nazwa zawiera spację.</translation> </message> <message> - <source>Invalid character '%1'.</source> - <translation type="vanished">Niepoprawny znak: "%1".</translation> - </message> - <message> - <source>Invalid characters '%1'.</source> - <translation type="vanished">Niepoprawne znaki: "%1".</translation> - </message> - <message> <source>Invalid character "%1".</source> <translation>Niepoprawny znak: "%1".</translation> </message> @@ -2160,22 +1936,6 @@ Przyczyna: %3</translation> <translation>Nie można uruchomić "%1".</translation> </message> <message> - <source>The path '%1' expanded to an empty string.</source> - <translation type="vanished">Ścieżka "%1" rozwinięta do pustej nazwy.</translation> - </message> - <message> - <source>The path '%1' is not a directory.</source> - <translation type="vanished">Ścieżka "%1" nie wskazuje na katalog.</translation> - </message> - <message> - <source>The directory '%1' does not exist.</source> - <translation type="vanished">Katalog "%1" nie istnieje.</translation> - </message> - <message> - <source>Cannot execute '%1'.</source> - <translation type="vanished">Nie można uruchomić "%1".</translation> - </message> - <message> <source>The path <b>%1</b> is not an executable file.</source> <translation>Ścieżka <b>%1</b> nie wskazuje na plik wykonywalny.</translation> </message> @@ -2188,10 +1948,6 @@ Przyczyna: %3</translation> <translation>Ścieżka nie może być pusta.</translation> </message> <message> - <source>The path '%1' does not exist.</source> - <translation type="vanished">Ścieżka "%1" nie istnieje.</translation> - </message> - <message> <source>The path <b>%1</b> is not a directory.</source> <translation>Ścieżka <b>%1</b> nie wskazuje na katalog.</translation> </message> @@ -2211,10 +1967,6 @@ Przyczyna: %3</translation> <translation>Wstaw...</translation> </message> <message> - <source>Add...</source> - <translation>Dodaj...</translation> - </message> - <message> <source>Delete Line</source> <translation>Usuń linię</translation> </message> @@ -2222,25 +1974,6 @@ Przyczyna: %3</translation> <source>Clear</source> <translation>Wyczyść</translation> </message> - <message> - <source>From "%1"</source> - <translation>Z "%1"</translation> - </message> -</context> -<context> - <name>Utils::ProjectNameValidatingLineEdit</name> - <message> - <source>Invalid character '%1' found!</source> - <translation type="vanished">Niepoprawny znak: "%1".</translation> - </message> - <message> - <source>Invalid character "%1" found.</source> - <translation>Niepoprawny znak: "%1".</translation> - </message> - <message> - <source>Invalid character '.'.</source> - <translation>Niepoprawny znak: "." (kropka).</translation> - </message> </context> <context> <name>Utils::reloadPrompt</name> @@ -2258,17 +1991,6 @@ Przyczyna: %3</translation> </message> </context> <context> - <name>BINEditor::Internal::BinEditorPlugin</name> - <message> - <source>&Undo</source> - <translation type="vanished">&Cofnij</translation> - </message> - <message> - <source>&Redo</source> - <translation type="vanished">&Przywróć</translation> - </message> -</context> -<context> <name>Bookmarks::Internal::BookmarkView</name> <message> <source>Bookmarks</source> @@ -2283,10 +2005,6 @@ Przyczyna: %3</translation> <translation>Przenieś na dół</translation> </message> <message> - <source>Edit Note</source> - <translation type="vanished">Zmodyfikuj notatkę</translation> - </message> - <message> <source>&Edit</source> <translation>&Edycja</translation> </message> @@ -2361,10 +2079,6 @@ Przyczyna: %3</translation> <source>Edit Bookmark</source> <translation>Zmodyfikuj zakładkę</translation> </message> - <message> - <source>Edit Bookmark Note</source> - <translation type="vanished">Zmodyfikuj notatkę zakładki</translation> - </message> </context> <context> <name>CMakeProjectManager::Internal::CMakeOpenProjectWizard</name> @@ -2450,8 +2164,8 @@ Przyczyna: %3</translation> <translation>Nie zaznaczono generatora.</translation> </message> <message> - <source>No valid CMake executable specified.</source> - <translation>Brak poprawnego pliku wykonywalnego CMake.</translation> + <source>Selected Kit has no valid CMake executable specified.</source> + <translation>Brak poprawnego pliku wykonywalnego CMake w wybranym zestawie.</translation> </message> <message> <source>CMake exited with errors. Please check CMake output.</source> @@ -2473,10 +2187,6 @@ Przyczyna: %3</translation> <context> <name>CMakeProjectManager::Internal::CMakeBuildSettingsWidget</name> <message> - <source>Run cmake</source> - <translation type="vanished">Uruchom cmake</translation> - </message> - <message> <source>Run CMake...</source> <translation>Uruchom CMake...</translation> </message> @@ -2503,37 +2213,21 @@ Przyczyna: %3</translation> <source>CMake</source> <translation>CMake</translation> </message> - <message> - <source>Executable:</source> - <translation>Plik wykonywalny:</translation> - </message> - <message> - <source>Prefer Ninja generator (CMake 2.8.9 or higher required)</source> - <translation>Preferuj generator Ninja (wymagany CMake 2.8.9 lub nowszy)</translation> - </message> </context> <context> <name>CMakeProjectManager::Internal::CMakeRunConfigurationWidget</name> <message> - <source>Arguments:</source> - <translation>Argumenty:</translation> - </message> - <message> <source>Select Working Directory</source> <translation>Wybierz katalog roboczy</translation> </message> <message> - <source>Reset to default.</source> - <translation>Przywróć domyślny.</translation> + <source>Reset to Default</source> + <translation>Przywróć domyślny</translation> </message> <message> <source>Working directory:</source> <translation>Katalog roboczy:</translation> </message> - <message> - <source>Run in Terminal</source> - <translation>Uruchom w terminalu</translation> - </message> </context> <context> <name>CMakeProjectManager::Internal::MakeStepConfigWidget</name> @@ -2563,40 +2257,11 @@ Przyczyna: %3</translation> <name>Core::BaseFileWizard</name> <message> <source>File Generation Failure</source> - <translation type="vanished">Błąd w trakcie generowania pliku</translation> + <translation>Błąd w trakcie generowania pliku</translation> </message> <message> <source>Existing files</source> - <translation type="vanished">Istniejące pliki</translation> - </message> - <message> - <source>Failed to open an editor for '%1'.</source> - <translation type="vanished">Nie można otworzyć edytora dla "%1".</translation> - </message> - <message> - <source>[read only]</source> - <translation type="vanished">[tylko do odczytu]</translation> - </message> - <message> - <source>[folder]</source> - <translation type="vanished">[katalog]</translation> - </message> - <message> - <source>[symbolic link]</source> - <translation type="vanished">[dowiązanie symboliczne]</translation> - </message> - <message> - <source>The project directory %1 contains files which cannot be overwritten: -%2.</source> - <translation type="vanished">Katalog projektu %1 zawiera pliki, które nie moga być nadpisane: -%2.</translation> - </message> -</context> -<context> - <name>Core::StandardFileWizard</name> - <message> - <source>New %1</source> - <translation type="vanished">Nowy %1</translation> + <translation>Istniejące pliki</translation> </message> </context> <context> @@ -2653,10 +2318,6 @@ Przyczyna: %3</translation> <context> <name>Core::Internal::OpenWithDialog</name> <message> - <source>Open file '%1' with:</source> - <translation type="vanished">Otwórz plik "%1" przy pomocy:</translation> - </message> - <message> <source>Open File With...</source> <translation>Otwórz plik przy pomocy...</translation> </message> @@ -2717,34 +2378,6 @@ Przyczyna: %3</translation> <source>Keyboard</source> <translation>Klawisze</translation> </message> - <message> - <source>Keyboard Shortcuts</source> - <translation>Skróty klawiszowe</translation> - </message> - <message> - <source>Key sequence:</source> - <translation>Sekwencja klawiszy:</translation> - </message> - <message> - <source>Shortcut</source> - <translation>Skrót</translation> - </message> - <message> - <source>Type to set shortcut</source> - <translation>Naciśnij aby ustawić skrót</translation> - </message> - <message> - <source>Import Keyboard Mapping Scheme</source> - <translation>Zaimportuj schemat mapowania klawiatury</translation> - </message> - <message> - <source>Keyboard Mapping Scheme (*.kms)</source> - <translation>Schemat mapowania klawiatury (*.kms)</translation> - </message> - <message> - <source>Export Keyboard Mapping Scheme</source> - <translation>Wyeksportuj schemat mapowania klawiatury</translation> - </message> </context> <context> <name>Core::Internal::EditMode</name> @@ -2788,28 +2421,32 @@ Przyczyna: %3</translation> <translation>W przód</translation> </message> <message> - <source>Copy Full Path to Clipboard</source> - <translation>Skopiuj pełną ścieżkę do schowka</translation> + <source>Copy Full Path</source> + <translation>Skopiuj pełną ścieżkę</translation> </message> <message> - <source>Copy File Name to Clipboard</source> - <translation>Skopiuj nazwę pliku do schowka</translation> + <source>Copy Path and Line Number</source> + <translation>Skopiuj ścieżkę i numer linii</translation> </message> <message> - <source>Open With</source> - <translation>Otwórz przy pomocy</translation> + <source>Copy File Name</source> + <translation>Skopiuj nazwę pliku</translation> </message> <message> - <source>Revert File to Saved</source> - <translation type="vanished">Odwróć zmiany w pliku</translation> + <source>Continue Opening Huge Text File?</source> + <translation>Kontynuować otwieranie wielkiego pliku tekstowego?</translation> </message> <message> - <source>Ctrl+F4</source> - <translation type="vanished">Ctrl+F4</translation> + <source>The text file "%1" has the size %2MB and might take more memory to open and process than available. + +Continue?</source> + <translation>Plik tekstowy "%1" o rozmiarze %2MB może zająć więcej pamięci niż wynosi ilość wolnej pamięci. + +Kontynuować?</translation> </message> <message> - <source>Ctrl+W</source> - <translation type="vanished">Ctrl+W</translation> + <source>Open With</source> + <translation>Otwórz przy pomocy</translation> </message> <message> <source>&Save</source> @@ -2820,126 +2457,10 @@ Przyczyna: %3</translation> <translation>Zachowaj j&ako...</translation> </message> <message> - <source>Ctrl+Shift+W</source> - <translation type="vanished">Ctrl+Shift+W</translation> - </message> - <message> - <source>Alt+Tab</source> - <translation type="vanished">Alt+Tab</translation> - </message> - <message> - <source>Ctrl+Tab</source> - <translation type="vanished">Ctrl+Tab</translation> - </message> - <message> - <source>Alt+Shift+Tab</source> - <translation type="vanished">Alt+Shift+Tab</translation> - </message> - <message> - <source>Ctrl+Shift+Tab</source> - <translation type="vanished">Ctrl+Shift+Tab</translation> - </message> - <message> - <source>Ctrl+Alt+Left</source> - <translation type="vanished">Ctrl+Alt+Left</translation> - </message> - <message> - <source>Alt+Left</source> - <translation type="vanished">Alt+Left</translation> - </message> - <message> - <source>Ctrl+Alt+Right</source> - <translation type="vanished">Ctrl+Alt+Right</translation> - </message> - <message> - <source>Alt+Right</source> - <translation type="vanished">Alt+Right</translation> - </message> - <message> - <source>Split</source> - <translation type="vanished">Podziel</translation> - </message> - <message> - <source>Split Side by Side</source> - <translation type="vanished">Podziel sąsiadująco</translation> - </message> - <message> - <source>Open in New Window</source> - <translation type="vanished">Otwórz w nowym oknie</translation> - </message> - <message> - <source>Meta+E,4</source> - <translation type="vanished">Meta+E,4</translation> - </message> - <message> - <source>Ctrl+E,4</source> - <translation type="vanished">Ctrl+E,4</translation> - </message> - <message> - <source>Remove Current Split</source> - <translation type="vanished">Usuń bieżący podział</translation> - </message> - <message> - <source>Remove All Splits</source> - <translation type="vanished">Usuń wszystkie podziały</translation> - </message> - <message> - <source>Meta+E,2</source> - <translation type="vanished">Meta+E,2</translation> - </message> - <message> <source>Close All Except Visible</source> <translation>Zamknij wszystko z wyjątkiem widocznych</translation> </message> <message> - <source>Ctrl+E,2</source> - <translation type="vanished">Ctrl+E,2</translation> - </message> - <message> - <source>Meta+E,3</source> - <translation type="vanished">Meta+E,3</translation> - </message> - <message> - <source>Ctrl+E,3</source> - <translation type="vanished">Ctrl+E,3</translation> - </message> - <message> - <source>Meta+E,0</source> - <translation type="vanished">Meta+E,0</translation> - </message> - <message> - <source>Ctrl+E,0</source> - <translation type="vanished">Ctrl+E,0</translation> - </message> - <message> - <source>Meta+E,1</source> - <translation type="vanished">Meta+E,1</translation> - </message> - <message> - <source>Ctrl+E,1</source> - <translation type="vanished">Ctrl+E,1</translation> - </message> - <message> - <source>Meta+E,o</source> - <translation type="vanished">Meta+E,o</translation> - </message> - <message> - <source>Ctrl+E,o</source> - <translation type="vanished">Ctrl+E,o</translation> - </message> - <message> - <source>Ad&vanced</source> - <translation type="vanished">Zaa&wansowane</translation> - </message> - <message> - <source>X-coordinate of the current editor's upper left corner, relative to screen.</source> - <translation type="vanished">Współrzędna X lewego górnego rogu bieżącego edytora, względem ekranu.</translation> - </message> - <message> - <source>Y-coordinate of the current editor's upper left corner, relative to screen.</source> - <translation type="vanished">Współrzędna Y lewego górnego rogu bieżącego edytora, względem ekranu.</translation> - </message> - <message> <source>Close "%1"</source> <translation>Zamknij "%1"</translation> </message> @@ -2960,81 +2481,9 @@ Przyczyna: %3</translation> <translation>Błąd pliku</translation> </message> <message> - <source>Cannot Open File</source> - <translation type="vanished">Nie można otworzyć pliku</translation> - </message> - <message> - <source>Cannot open the file for editing with VCS.</source> - <translation type="vanished">Nie można otworzyć pliku do edycji przy pomocy VCS.</translation> - </message> - <message> - <source><b>Warning:</b> This file was not opened in %1 yet.</source> - <translation type="vanished"><b>Ostrzeżenie:</b> Ten plik nie był jeszcze otwarty w %1.</translation> - </message> - <message> - <source>Open</source> - <translation type="vanished">Otwórz</translation> - </message> - <message> - <source>Make Writable</source> - <translation type="vanished">Uczyń plik zapisywalnym</translation> - </message> - <message> - <source>Save %1 &As...</source> - <translation type="vanished">Zachowaj %1 j&ako...</translation> - </message> - <message> <source>Opening File</source> <translation>Otwieranie pliku</translation> </message> - <message> - <source>Go to Next Split or Window</source> - <translation type="vanished">Przejdź do kolejnego podzielonego okna</translation> - </message> - <message> - <source>Current document</source> - <translation type="vanished">Bieżący dokument</translation> - </message> - <message> - <source>Qt Creator</source> - <translation type="vanished">Qt Creator</translation> - </message> - <message> - <source><b>Warning:</b> You are changing a read-only file.</source> - <translation type="vanished"><b>Ostrzeżenie:</b> Zmieniasz plik, który jest tylko do odczytu.</translation> - </message> - <message> - <source>&Save %1</source> - <translation type="vanished">&Zachowaj %1</translation> - </message> - <message> - <source>Revert %1 to Saved</source> - <translation type="vanished">Odwróć zmiany w %1</translation> - </message> - <message> - <source>Reload %1</source> - <translation type="vanished">Przeładuj %1</translation> - </message> - <message> - <source>Close %1</source> - <translation type="vanished">Zamknij %1</translation> - </message> - <message> - <source>Close All Except %1</source> - <translation type="vanished">Zamknij wszystko z wyjątkiem %1</translation> - </message> - <message> - <source>You will lose your current changes if you proceed reverting %1.</source> - <translation type="vanished">Utracisz swoje bieżące zmiany w %1 jeśli potwierdzisz wykonanie tego polecenia.</translation> - </message> - <message> - <source>Proceed</source> - <translation type="vanished">Wykonaj</translation> - </message> - <message> - <source>Cancel</source> - <translation type="vanished">Anuluj</translation> - </message> </context> <context> <name>Core::Internal::OpenEditorsWidget</name> @@ -3057,14 +2506,6 @@ Przyczyna: %3</translation> <translation>Qt Creator</translation> </message> <message> - <source>Exit Full Screen</source> - <translation type="vanished">Wyłącz tryb pełnoekranowy</translation> - </message> - <message> - <source>Enter Full Screen</source> - <translation type="vanished">Włącz tryb pełnoekranowy</translation> - </message> - <message> <source>&File</source> <translation>&Plik</translation> </message> @@ -3093,6 +2534,11 @@ Przyczyna: %3</translation> <translation>&Nowy plik lub projekt...</translation> </message> <message> + <source>New File or Project</source> + <comment>Title of dialog</comment> + <translation>Nowy plik lub projekt</translation> + </message> + <message> <source>&Open File or Project...</source> <translation>&Otwórz plik lub projekt...</translation> </message> @@ -3185,10 +2631,6 @@ Przyczyna: %3</translation> <translation>&Opcje...</translation> </message> <message> - <source>Ctrl+,</source> - <translation type="vanished">Ctrl+,</translation> - </message> - <message> <source>Minimize</source> <translation>Zminimalizuj</translation> </message> @@ -3201,10 +2643,6 @@ Przyczyna: %3</translation> <translation>Powiększ</translation> </message> <message> - <source>Show Sidebar</source> - <translation type="vanished">Pokazuj boczny pasek</translation> - </message> - <message> <source>Ctrl+0</source> <translation>Ctrl+0</translation> </message> @@ -3253,11 +2691,6 @@ Przyczyna: %3</translation> <translation>Informacje o w&tyczkach...</translation> </message> <message> - <source>New</source> - <comment>Title of dialog</comment> - <translation>Nowy</translation> - </message> - <message> <source>Settings...</source> <translation>Ustawienia...</translation> </message> @@ -3390,7 +2823,11 @@ Przyczyna: %3</translation> <translation>Informacje o Qt Creatorze</translation> </message> <message> - <source><h3>%1</h3>%2<br/><br/>Built on %3 at %4<br /><br/>%5<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> + <source>Built on %1 %2<br/></source> + <translation>Wersja z %1 %2<br/></translation> + </message> + <message> + <source><h3>%1</h3>%2<br/><br/>%3<br/>%4<br/>Copyright 2008-%5 %6. 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 type="unfinished"></translation> </message> <message> @@ -3418,10 +2855,6 @@ Przyczyna: %3</translation> <translation>Meta+C,Meta+P</translation> </message> <message> - <source>Paste Clipboard...</source> - <translation type="vanished">Wklej zawartość schowka...</translation> - </message> - <message> <source>Fetch Snippet...</source> <translation>Pobierz urywek...</translation> </message> @@ -3451,35 +2884,6 @@ Przyczyna: %3</translation> </message> </context> <context> - <name>CppEditor::Internal::ClassNamePage</name> - <message> - <source>Enter Class Name</source> - <translation type="vanished">Wprowadź nazwę klasy</translation> - </message> - <message> - <source>The header and source file names will be derived from the class name</source> - <translation type="vanished">Nazwy pliku nagłówkowego i źródłowego będą zaproponowane na podstawie nazwy klasy</translation> - </message> -</context> -<context> - <name>CppEditor::Internal::CppClassWizardDialog</name> - <message> - <source>C++ Class Wizard</source> - <translation type="vanished">Kreator klasy C++</translation> - </message> - <message> - <source>Details</source> - <translation type="vanished">Szczegóły</translation> - </message> -</context> -<context> - <name>CppEditor::Internal::CppClassWizard</name> - <message> - <source>Error while generating file contents.</source> - <translation type="vanished">Błąd podczas generowania zawartości.</translation> - </message> -</context> -<context> <name>CppTools::Internal::CompletionSettingsPage</name> <message> <source>Completion</source> @@ -3574,10 +2978,6 @@ Przyczyna: %3</translation> <translation>Automatycznie wstawia komentarz Doxygen po naciśnięciu entera następującego po "/**", "/*!", "//!" lub "///".</translation> </message> <message> - <source>Adds leading asterisks when continuing Qt '/*!' and Java '/**' style comments on new lines.</source> - <translation type="vanished">Dodaje wiodące gwiazdki, gdy komentarze Qt "/*!" i Java "/**" przechodzą do nowych linii.</translation> - </message> - <message> <source>Automatically split strings</source> <translation>Automatycznie dziel ciągi tekstowe po naciśnięciu klawisza Enter</translation> </message> @@ -3585,6 +2985,18 @@ Przyczyna: %3</translation> <source>Adds leading asterisks when continuing C/C++ "/*", Qt "/*!" and Java "/**" style comments on new lines.</source> <translation>Dodaje wiodące gwiazdki, gdy komentarze C/C++ "/*", Qt "/*!" i Java "/**" przechodzą do nowych linii.</translation> </message> + <message> + <source>Splits a string into two lines by adding an end quote at the cursor position when you press Enter and a start quote to the next line, before the rest of the string. + +In addition, Shift+Enter inserts an escape character at the cursor position and moves the rest of the string to the next line.</source> + <translation>Naciśnięcie klawisza "Enter" dzieli ciąg tekstowy na dwa, umieszcza drugi w nowej linii i dodaje znaki końca i początku ciągu w miejscu podziału. + +Ponadto, naciśnięcie kombinacji "Shift+Enter" powoduje wstawienie znaku ucieczki w pozycji kursora i przeniesienie reszty ciągu do następnej linii.</translation> + </message> + <message> + <source>Timeout in ms:</source> + <translation>Czas oczekiwania w ms:</translation> + </message> </context> <context> <name>CppTools::Internal::CppCurrentDocumentFilter</name> @@ -3628,11 +3040,7 @@ Przyczyna: %3</translation> </message> <message> <source>Searching for Usages</source> - <translation type="unfinished">Wyszukiwanie użyć</translation> - </message> - <message> - <source>Searching</source> - <translation type="vanished">Przeszukiwanie</translation> + <translation>Wyszukiwanie użyć</translation> </message> <message> <source>C++ Macro Usages:</source> @@ -3647,17 +3055,6 @@ Przyczyna: %3</translation> </message> </context> <context> - <name>CppPreprocessor</name> - <message> - <source>%1: No such file or directory</source> - <translation type="vanished">%1: Brak pliku lub katalogu</translation> - </message> - <message> - <source>%1: Could not get file contents</source> - <translation type="vanished">%1: Nie można odczytać zawartości pliku</translation> - </message> -</context> -<context> <name>CppTools</name> <message> <source>Code Style</source> @@ -3724,46 +3121,8 @@ Przyczyna: %3</translation> </message> </context> <context> - <name>Cvs::Internal::CheckoutWizard</name> - <message> - <source>Checks out a CVS repository and tries to load the contained project.</source> - <translation type="vanished">Wyciąga repozytorium CVS i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>CVS Checkout</source> - <translation type="vanished">Kopia robocza CVS</translation> - </message> -</context> -<context> - <name>Cvs::Internal::CheckoutWizardPage</name> - <message> - <source>Location</source> - <translation>Położenie</translation> - </message> - <message> - <source>Specify repository and path.</source> - <translation>Podaj repozytorium i ścieżkę.</translation> - </message> - <message> - <source>Repository:</source> - <translation>Repozytorium:</translation> - </message> -</context> -<context> <name>Cvs::Internal::CvsPlugin</name> <message> - <source>Parsing of the log output failed</source> - <translation>Nie można przetworzyć komunikatów loga</translation> - </message> - <message> - <source>Checks out a CVS repository and tries to load the contained project.</source> - <translation>Wyciąga repozytorium CVS i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>CVS Checkout</source> - <translation>Kopia robocza CVS</translation> - </message> - <message> <source>&CVS</source> <translation>&CVS</translation> </message> @@ -3788,10 +3147,6 @@ Przyczyna: %3</translation> <translation>Pokaż różnice w bieżącym pliku</translation> </message> <message> - <source>Cannot find repository for "%1"</source> - <translation>Nie można odnaleźć repozytorium dla "%1"</translation> - </message> - <message> <source>Diff "%1"</source> <translation>Porównaj "%1"</translation> </message> @@ -3808,6 +3163,14 @@ Przyczyna: %3</translation> <translation>Wrzuć bieżący plik</translation> </message> <message> + <source>Cannot find repository for "%1".</source> + <translation>Nie można odnaleźć repozytorium dla "%1".</translation> + </message> + <message> + <source>Parsing of the log output failed.</source> + <translation>Nie można przetworzyć komunikatów logu.</translation> + </message> + <message> <source>Commit "%1"</source> <translation>Wrzuć "%1"</translation> </message> @@ -3820,10 +3183,6 @@ Przyczyna: %3</translation> <translation>Log bieżącego pliku</translation> </message> <message> - <source>Cannot find repository for '%1'</source> - <translation type="vanished">Nie można odnaleźć repozytorium dla "%1"</translation> - </message> - <message> <source>Meta+C,Meta+D</source> <translation>Meta+C,Meta+D</translation> </message> @@ -3920,6 +3279,22 @@ Przyczyna: %3</translation> <translation>Wrzuć projekt "%1"</translation> </message> <message> + <source>Update Directory</source> + <translation>Uaktualnij katalog</translation> + </message> + <message> + <source>Update Directory "%1"</source> + <translation>Uaktualnij katalog "%1"</translation> + </message> + <message> + <source>Commit Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Commit Directory "%1"</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Diff Repository</source> <translation>Pokaż różnice w repozytorium</translation> </message> @@ -3968,8 +3343,12 @@ Przyczyna: %3</translation> <translation>Błąd podczas sprawdzania opisu wrzucanych zmian. Czy wrzucić zmianę?</translation> </message> <message> - <source>Revert repository</source> - <translation>Odwróć zmiany w repozytorium</translation> + <source>Revert Repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>No CVS executable specified.</source> + <translation type="unfinished"></translation> </message> <message> <source>Revert all pending changes to the repository?</source> @@ -4004,18 +3383,6 @@ Przyczyna: %3</translation> <translation>Nie można odnaleźć wrzuconych zmian o identyfikatorze "%1" dokonanych w dniu %2.</translation> </message> <message> - <source>No cvs executable specified.</source> - <translation>Nie podano ścieżki do programu cvs.</translation> - </message> - <message> - <source>Would you like to discard your changes to the repository '%1'?</source> - <translation type="vanished">Czy porzucić zmiany w repozytorium "%1"?</translation> - </message> - <message> - <source>Would you like to discard your changes to the file '%1'?</source> - <translation type="vanished">Czy porzucić zmiany w pliku "%1"?</translation> - </message> - <message> <source>Project status</source> <translation>Stan projektu</translation> </message> @@ -4027,14 +3394,6 @@ Przyczyna: %3</translation> <source>The initial revision %1 cannot be described.</source> <translation>Początkowa poprawka %1 nie może być opisana.</translation> </message> - <message> - <source>Could not find commits of id '%1' on %2.</source> - <translation type="vanished">Nie można odnaleźć wrzuconych zmian o identyfikatorze "%1" dokonanych w dniu %2.</translation> - </message> - <message> - <source>No cvs executable specified!</source> - <translation type="vanished">Nie podano ścieżki do programu cvs!</translation> - </message> </context> <context> <name>Cvs::Internal::CvsSubmitEditor</name> @@ -4290,6 +3649,46 @@ Przyczyna: %3</translation> <translation>Program przerwie działanie w pułapce po tym, jak zostanie ona zignorowana podaną ilość razy.</translation> </message> <message> + <source>Data breakpoint %1 (%2) at %3 triggered.</source> + <translation>Osiągnięto pułapkę warunkową %1 (%2) przy %3.</translation> + </message> + <message> + <source>Internal data breakpoint %1 at %2 triggered.</source> + <translation>Osiągnięto wewnętrzną pułapkę warunkową %1 przy %2.</translation> + </message> + <message> + <source>Data breakpoint %1 (%2) at %3 in thread %4 triggered.</source> + <translation>Osiągnięto pułapkę warunkową %1 (%2) przy %3 w wątku %4.</translation> + </message> + <message> + <source>Internal data breakpoint %1 at %2 in thread %3 triggered.</source> + <translation>Osiągnięto wewnętrzna pułapka warunkowa %1 przy %2 w wątku %3.</translation> + </message> + <message> + <source>Data breakpoint %1 (%2) at 0x%3 triggered.</source> + <translation>Osiągnięto pułapkę warunkową %1 (%2) pod 0x%3.</translation> + </message> + <message> + <source>Internal data breakpoint %1 at 0x%2 triggered.</source> + <translation>Osiągnięto wewnętrzną pułapkę warunkową %1 pod 0x%2.</translation> + </message> + <message> + <source>Data breakpoint %1 (%2) at 0x%3 in thread %4 triggered.</source> + <translation>Osiągnięto pułapkę warunkową %1 (%2) pod 0x%3 w wątku %4.</translation> + </message> + <message> + <source>Internal data breakpoint %1 at 0x%2 in thread %3 triggered.</source> + <translation>Osiągnięto wewnętrzną pułapkę warunkową %1 pod 0x%2 w wątku %3.</translation> + </message> + <message> + <source>Stopped at breakpoint %1 (%2) in thread %3.</source> + <translation>Zatrzymano w pułapce %1 (%2) w wątku %3.</translation> + </message> + <message> + <source>Stopped at internal breakpoint %1 in thread %2.</source> + <translation>Zatrzymano w wewnętrznej pułapce %1 w wątku %2.</translation> + </message> + <message> <source>(all)</source> <translation>(wszystko)</translation> </message> @@ -4299,13 +3698,6 @@ Przyczyna: %3</translation> </message> </context> <context> - <name>Debugger::Internal::BreakWindow</name> - <message> - <source>Breakpoints</source> - <translation type="vanished">Pułapki</translation> - </message> -</context> -<context> <name>Debugger::Internal::CdbOptionsPageWidget</name> <message> <source>Startup</source> @@ -4352,32 +3744,32 @@ Przyczyna: %3</translation> <context> <name>Debugger::Internal::CdbSymbolPathListEditor</name> <message> - <source>Symbol Server...</source> - <translation>Serwer z symbolami...</translation> + <source>Insert Symbol Server...</source> + <translation>Dodaj serwer z symbolami...</translation> </message> <message> - <source>Adds the Microsoft symbol server providing symbols for operating system libraries.Requires specifying a local cache directory.</source> - <translation>Dodaje serwer z symbolami Microsoft dostarczający symboli dla bibliotek systemu operacyjnego. Wymaga podania katalogu dla lokalnego cache.</translation> + <source>Adds the Microsoft symbol server providing symbols for operating system libraries. Requires specifying a local cache directory.</source> + <translation type="unfinished"></translation> </message> <message> - <source>Symbol Cache...</source> - <translation>Cache z symbolami...</translation> + <source>Insert Symbol Cache...</source> + <translation type="unfinished"></translation> </message> <message> <source>Uses a directory to cache symbols used by the debugger.</source> <translation>Używa katalogu do cache'owania symboli użytych przez debuggera.</translation> </message> -</context> -<context> - <name>Debugger::Internal::DebuggerSettings</name> <message> - <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>Przestawia debugger do trybu operowania na instrukcjach. W tym trybie kroczenie działa dla pojedynczych instrukcji i widok źródeł pokazuje również zdezasemblowane instrukcje.</translation> + <source>Setup Symbol Paths...</source> + <translation type="unfinished"></translation> </message> <message> - <source>Always Adjust Column Widths to Contents</source> - <translation type="vanished">Zawsze wyrównuj szerokości kolumn do ich zawartości</translation> + <source>Configure Symbol paths that are used to locate debug symbol files.</source> + <translation type="unfinished"></translation> </message> +</context> +<context> + <name>Debugger::Internal::DebuggerSettings</name> <message> <source>Use Alternating Row Colors</source> <translation>Używaj alternatywnych kolorów wierszy</translation> @@ -4399,36 +3791,93 @@ Przyczyna: %3</translation> <translation>Operuj na instrukcjach</translation> </message> <message> + <source><p>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><p>Przestawia debugger do trybu operowania na instrukcjach. W tym trybie kroczenie działa dla pojedynczych instrukcji i widok źródeł pokazuje również zdezasemblowane instrukcje.</translation> + </message> + <message> + <source>Native Mixed Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><p>This switches the debugger to native-mixed operation mode. In this mode, stepping and data display will be handled by the native debugger backend (GDB, LLDB or CDB) for C++, QML and JS sources.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Dereference Pointers Automatically</source> <translation>Wyłuskuj wskaźniki automatycznie</translation> </message> <message> + <source><p>This switches the Locals&&Watchers view to automatically dereference pointers. This saves a level in the tree view, but also loses data for the now-missing intermediate level.</source> + <translation><p>Włącza automatyczne wyłuskiwanie wskaźników w widoku ze zmiennymi lokalnymi i obserwowanymi. Brak jednego poziomu w widoku upraszcza go, ale jednocześnie powoduje utratę danych w brakującym poziomie pośrednim.</translation> + </message> + <message> <source>Show "std::" Namespace in Types</source> <translation>Pokazuj przestrzeń nazw "std::" w widoku typów</translation> </message> <message> + <source>Show "std::" namespace in types</source> + <translation>Pokazuj przestrzeń nazw "std::" w widoku typów</translation> + </message> + <message> + <source><p>Shows "std::" prefix for types from the standard library.</source> + <translation><p>Pokazuje przedrostek "std::" dla typów z biblioteki standardowej.</translation> + </message> + <message> <source>Show Qt's Namespace in Types</source> <translation>Pokazuj przestrzeń nazw Qt w widoku typów</translation> </message> <message> + <source>Show Qt's namespace in types</source> + <translation>Pokazuj przestrzeń nazw Qt w widoku typów</translation> + </message> + <message> + <source><p>Shows Qt namespace prefix for Qt types. This is only relevant if Qt was configured with "-qtnamespace".</source> + <translation><p>Pokazuje przestrzeń nazw Qt dla typów Qt. To ma zastosowanie jedynie dla Qt skonfigurowanego z "-qtnamespace".</translation> + </message> + <message> <source>Sort Members of Classes and Structs Alphabetically</source> <translation>Sortuj alfabetycznie składniki klas i struktur</translation> </message> <message> + <source>Sort members of classes and structs alphabetically</source> + <translation>Sortuj alfabetycznie składniki klas i struktur</translation> + </message> + <message> <source>Use Debugging Helpers</source> <translation>Używaj asystenta debuggera</translation> </message> <message> - <source>Use Code Model</source> - <translation>Używaj modelu kodu</translation> + <source><p>Not all source code lines generate executable code. Putting a breakpoint on such a line acts as if the breakpoint was set on the next line that generated code. Selecting 'Adjust Breakpoint Locations' shifts the red breakpoint markers in such cases to the location of the true breakpoint.</source> + <translation><p>Nie wszystkie linie kodu źródłowego generują kod wykonywalny. Ustawienie pułapki w takiej linii spowoduje, że zostanie ona ustawiona de facto w najbliższej kolejnej linii generującej kod wykonywalny. +"Poprawiaj położenie pułapek" przesuwa czerwone znaczniki pułapek w miejsca prawdziwych pułapek w takich przypadkach.</translation> + </message> + <message> + <source><p>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><p>Zaznaczenie tej opcji uaktywni podpowiedzi dla wartości zmiennych podczas debugowania. Domyślnie jest to wyłączone, ponieważ może to spowalniać debugowanie i ponadto może dostarczać nieprawidłowych informacji, jako że dane o zakresach nie są uwzględniane.</translation> + </message> + <message> + <source><p>Checking this will enable tooltips in the breakpoints view during debugging.</source> + <translation><p>Zaznaczenie tej opcji uaktywni podpowiedzi w widoku z pułapkami podczas debugowania.</translation> </message> <message> - <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>Wybranie tej opcji spowoduje pobieranie informacji o zakresie zmiennych z modelu kodu C++. Może to przyspieszyć działanie debuggera, lecz również może to spowodować niepoprawne działanie dla zoptymalizowanego kodu.</translation> + <source><p>Checking this will enable tooltips in the stack view during debugging.</source> + <translation><p>Zaznaczenie tej opcji uaktywni podpowiedzi w widoku stosu podczas debugowania.</translation> </message> <message> - <source>This switches the Locals&&Watchers view to automatically dereference pointers. This saves a level in the tree view, but also loses data for the now-missing intermediate level.</source> - <translation>Włącza automatyczne wyłuskiwanie wskaźników w widoku ze zmiennymi lokalnymi i obserwowanymi. Brak jednego poziomu w widoku upraszcza go, ale jednocześnie powoduje utratę danych w brakującym poziomie pośrednim.</translation> + <source><p>Checking this will show a column with address information in the breakpoint view during debugging.</source> + <translation><p>Zaznaczenie tej opcji spowoduje pokazanie kolumny z adresami w widoku z pułapkami podczas debugowania.</translation> + </message> + <message> + <source><p>Checking this will show a column with address information in the stack view during debugging.</source> + <translation><p>Zaznaczenie tej opcji spowoduje pokazanie kolumny z adresami w widoku stosu podczas debugowania.</translation> + </message> + <message> + <source><p>The maximum length of string entries in the Locals and Expressions pane. Longer than that are cut off and displayed with an ellipsis attached.</source> + <translation><p>Maksymalna długość ciągów znakowych w widoku "Zmienne lokalne i wyrażenia". Dłuższe ciągi będą odcinane i zakańczane wielokropkiem.</translation> + </message> + <message> + <source><p>The maximum length for strings in separated windows. Longer strings are cut off and displayed with an ellipsis attached.</source> + <translation><p>Maksymalna długość ciągów znakowych w oddzielnych oknach. Dłuższe ciągi będą odcinane i zakańczane wielokropkiem.</translation> </message> <message> <source>Configure Debugger...</source> @@ -4440,13 +3889,29 @@ Przyczyna: %3</translation> </message> <message> <source>Keep Editor Stationary When Stepping</source> - <translation type="unfinished"></translation> + <translation>Wyłącz centrowanie bieżącej linii podczas kroczenia</translation> </message> <message> <source>Debugger Font Size Follows Main Editor</source> <translation>Rozmiar czcionki debuggera wzięty z głównego edytora</translation> </message> <message> + <source>Use code model</source> + <translation>Używaj modelu kodu</translation> + </message> + <message> + <source><p>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><p>Wybranie tej opcji spowoduje pobieranie informacji o zakresie zmiennych z modelu kodu C++. Może to przyspieszyć działanie debuggera, lecz również może to spowodować niepoprawne działanie dla zoptymalizowanego kodu.</translation> + </message> + <message> + <source><p>Displays names of QThread based threads.</source> + <translation><p>Wyświetla nazwy wątków dziedziczących z QThread.</translation> + </message> + <message> + <source>Display thread names</source> + <translation>Wyświetlaj nazwy wątków</translation> + </message> + <message> <source>Synchronize Breakpoints</source> <translation>Zsynchronizuj pułapki</translation> </message> @@ -4455,11 +3920,6 @@ Przyczyna: %3</translation> <translation>Poprawiaj położenia pułapek</translation> </message> <message> - <source>Not all source code lines generate executable code. Putting a breakpoint on such a line acts as if the breakpoint was set on the next line that generated code. Selecting 'Adjust Breakpoint Locations' shifts the red breakpoint markers in such cases to the location of the true breakpoint.</source> - <translation>Nie wszystkie linie kodu źródłowego generują kod wykonywalny. Ustawienie pułapki w takiej linii spowoduje, że zostanie ona ustawiona de facto w najbliższej kolejnej linii generującej kod wykonywalny. -"Poprawiaj położenie pułapek" przesuwa czerwone znaczniki pułapek w miejsca prawdziwych pułapek w takich przypadkach.</translation> - </message> - <message> <source>Break on "throw"</source> <translation>Przerwij w "throw"</translation> </message> @@ -4492,18 +3952,10 @@ Przyczyna: %3</translation> <translation>Używaj podpowiedzi w głównym edytorze podczas debugowania</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> - <translation>Zaznaczenie tej opcji uaktywni podpowiedzi dla wartości zmiennych podczas debugowania. Domyślnie jest to wyłączone, ponieważ może to spowalniać debugowanie i ponadto może dostarczać nieprawidłowych informacji, jako że dane o zakresach nie są uwzględniane.</translation> - </message> - <message> <source>Use Tooltips in Stack View when Debugging</source> <translation>Używaj podpowiedzi w widoku stosu podczas debugowania</translation> </message> <message> - <source>Checking this will enable tooltips in the stack view during debugging.</source> - <translation>Zaznaczenie tej opcji uaktywni podpowiedzi w widoku stosu podczas debugowania.</translation> - </message> - <message> <source>List Source Files</source> <translation>Pokaż listę plików</translation> </message> @@ -4520,14 +3972,6 @@ Przyczyna: %3</translation> <translation>Zarejestruj do pośmiertnego debugowania</translation> </message> <message> - <source>The maximum length of string entries in the Locals and Expressions pane. Longer than that are cut off and displayed with an ellipsis attached.</source> - <translation>Maksymalna długość ciągów znakowych w widoku "Zmienne lokalne i wyrażenia". Dłuższe ciągi będą odcinane i zakańczane wielokropkiem.</translation> - </message> - <message> - <source>The maximum length for strings in separated windows. Longer strings are cut off and displayed with an ellipsis attached.</source> - <translation>Maksymalna długość ciągów znakowych w oddzielnych oknach. Dłuższe ciągi będą odcinane i zakańczane wielokropkiem.</translation> - </message> - <message> <source>Reload Full Stack</source> <translation>Przeładuj cały stos</translation> </message> @@ -4536,37 +3980,25 @@ Przyczyna: %3</translation> <translation>Utwórz pełny zrzut stosu</translation> </message> <message> - <source>Checking this will enable tooltips in the locals view during debugging.</source> - <translation>Zaznaczenie tej opcji uaktywni podpowiedzi w widoku ze zmiennymi lokalnymi podczas debugowania.</translation> - </message> - <message> <source>Use Tooltips in Locals View when Debugging</source> <translation>Używaj podpowiedzi w widoku ze zmiennymi lokalnymi podczas debugowania</translation> </message> <message> - <source>Use Tooltips in Breakpoints View when Debugging</source> - <translation>Używaj podpowiedzi w widoku z pułapkami podczas debugowania</translation> + <source><p>Checking this will enable tooltips in the locals view during debugging.</source> + <translation><p>Zaznaczenie tej opcji uaktywni podpowiedzi w widoku ze zmiennymi lokalnymi podczas debugowania.</translation> </message> <message> - <source>Checking this will enable tooltips in the breakpoints view during debugging.</source> - <translation>Zaznaczenie tej opcji uaktywni podpowiedzi w widoku z pułapkami podczas debugowania.</translation> + <source>Use Tooltips in Breakpoints View when Debugging</source> + <translation>Używaj podpowiedzi w widoku z pułapkami podczas debugowania</translation> </message> <message> <source>Show Address Data in Breakpoints View when Debugging</source> <translation>Pokazuj adresy w widoku z pułapkami podczas debugowania</translation> </message> <message> - <source>Checking this will show a column with address information in the breakpoint view during debugging.</source> - <translation>Zaznaczenie tej opcji spowoduje pokazanie kolumny z adresami w widoku z pułapkami podczas debugowania.</translation> - </message> - <message> <source>Show Address Data in Stack View when Debugging</source> <translation>Pokazuj adresy w widoku stosu podczas debugowania</translation> </message> - <message> - <source>Checking this will show a column with address information in the stack view during debugging.</source> - <translation>Zaznaczenie tej opcji spowoduje pokazanie kolumny z adresami w widoku stosu podczas debugowania.</translation> - </message> </context> <context> <name>Debugger</name> @@ -4599,10 +4031,6 @@ Przyczyna: %3</translation> <translation>Załaduj plik zrzutu</translation> </message> <message> - <source>Browse...</source> - <translation>Przeglądaj...</translation> - </message> - <message> <source>Use local core file:</source> <translation>Użyj lokalnego plik zrzutu:</translation> </message> @@ -4715,18 +4143,6 @@ Spróbuj: %2</translation> <translation>Nie można przeskoczyć. Zatrzymano</translation> </message> <message> - <source>Raw structure</source> - <translation>Surowa struktura</translation> - </message> - <message> - <source>Normal</source> - <translation>Normalny</translation> - </message> - <message> - <source>Displayed</source> - <translation>Wyświetlony</translation> - </message> - <message> <source>Cannot continue debugged process:</source> <translation>Nie można kontynuować debugowanego procesu:</translation> </message> @@ -4829,14 +4245,6 @@ Spróbuj: %2</translation> <translation>Zakończono pobieranie danych</translation> </message> <message> - <source>The gdb process terminated.</source> - <translation>Proces gdb zakończył pracę.</translation> - </message> - <message> - <source>The gdb process terminated unexpectedly (code %1)</source> - <translation>Proces gdb nieoczekiwanie zakończył pracę (kod %1)</translation> - </message> - <message> <source>Adapter start failed</source> <translation>Nie można uruchomić adaptera</translation> </message> @@ -4955,10 +4363,6 @@ Spróbuj: %2</translation> <translation>Wartość zmieniona z %1 na %2.</translation> </message> <message> - <source>There is no GDB binary available for binaries in format '%1'</source> - <translation type="vanished">Brak dostępnego pliku binarnego GDB dla plików binarnych w formacie "%1"</translation> - </message> - <message> <source>Cannot Read Symbols</source> <translation>Nie można odczytać symboli</translation> </message> @@ -4987,10 +4391,6 @@ Spróbuj: %2</translation> <translation>Nie można odnaleźć widżetu.</translation> </message> <message> - <source>Unexpected GDB Exit</source> - <translation>Nieoczekiwanie zakończenie GDB</translation> - </message> - <message> <source>Setting up inferior...</source> <translation>Ustawianie podprocesu...</translation> </message> @@ -4999,10 +4399,6 @@ Spróbuj: %2</translation> <translation>Nie można uruchomić aplikacji</translation> </message> <message> - <source>The debugger settings point to a script file at '%1' which is not accessible. If a script file is not needed, consider clearing that entry to avoid this warning. </source> - <translation type="vanished">Ustawienia debuggera pokazują na skrypt "%1", który nie jest dostępny. Jeśli plik ze skryptem nie jest potrzebny, rozważ usunięcie go z ustawień w celu uniknięcia tego ostrzeżenia.</translation> - </message> - <message> <source>GDB I/O Error</source> <translation>Błąd wejścia / wyjścia GDB</translation> </message> @@ -5206,13 +4602,6 @@ receives a signal like SIGSEGV during debugging.</source> </message> </context> <context> - <name>Debugger::Internal::ModulesWindow</name> - <message> - <source>Modules</source> - <translation type="vanished">Moduły</translation> - </message> -</context> -<context> <name>Debugger::Internal::OutputCollector</name> <message> <source>Cannot create temporary file: %1</source> @@ -5230,26 +4619,40 @@ receives a signal like SIGSEGV during debugging.</source> <context> <name>Debugger::Internal::RegisterHandler</name> <message> - <source>Name</source> - <translation>Nazwa</translation> + <source>Content as ASCII Characters</source> + <translation>Zawartość jako znaki ASCII</translation> </message> <message> - <source>Value (Base %1)</source> - <translation>Wartość (Baza %1)</translation> + <source>Content as %1-bit Signed Decimal Values</source> + <translation>Zawartość jako %1-bitowe wartości całkowite ze znakiem</translation> </message> -</context> -<context> - <name>Debugger::Internal::RegisterWindow</name> <message> - <source>Registers</source> - <translation type="vanished">Rejestry</translation> + <source>Content as %1-bit Unsigned Decimal Values</source> + <translation>Zawartość jako %1-bitowe wartości całkowite bez znaku</translation> </message> -</context> -<context> - <name>Debugger::Internal::SourceFilesWindow</name> <message> - <source>Source Files</source> - <translation type="vanished">Pliki źródłowe</translation> + <source>Content as %1-bit Hexadecimal Values</source> + <translation>Zawartość jako %1-bitowe wartości szesnastkowe</translation> + </message> + <message> + <source>Content as %1-bit Octal Values</source> + <translation>Zawartość jako %1-bitowe wartości ósemkowe</translation> + </message> + <message> + <source>Content as %1-bit Binary Values</source> + <translation>Zawartość jako %1-bitowe wartości binarne</translation> + </message> + <message> + <source>Contents as %1-bit Floating Point Values</source> + <translation>Zawartość jako %1-bitowe liczby zmiennoprzecinkowe</translation> + </message> + <message> + <source>Name</source> + <translation>Nazwa</translation> + </message> + <message> + <source>Value</source> + <translation>Wartość</translation> </message> </context> <context> @@ -5403,20 +4806,6 @@ receives a signal like SIGSEGV during debugging.</source> </message> </context> <context> - <name>Debugger::Internal::StackWindow</name> - <message> - <source>Stack</source> - <translation type="vanished">Stos</translation> - </message> -</context> -<context> - <name>Debugger::Internal::ThreadsWindow</name> - <message> - <source>Threads</source> - <translation type="vanished">Wątki</translation> - </message> -</context> -<context> <name>Debugger::Internal::WatchData</name> <message> <source><not in scope></source> @@ -5500,13 +4889,25 @@ receives a signal like SIGSEGV during debugging.</source> <translation><niedostępny></translation> </message> <message numerus="yes"> - <source><more than %n items></source> - <translation> - <numerusform><więcej niż %n element></numerusform> - <numerusform><więcej niż %n elementy></numerusform> - <numerusform><więcej niż %n elementów></numerusform> + <source><at least %n items></source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> </translation> </message> + <message> + <source><not callable></source> + <translation type="unfinished"></translation> + </message> + <message> + <source><null reference></source> + <translation type="unfinished"></translation> + </message> + <message> + <source><optimized out></source> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> <source><%n items></source> <translation> @@ -5516,25 +4917,17 @@ receives a signal like SIGSEGV during debugging.</source> </translation> </message> <message> - <source>%1 Object at %2</source> - <translation>Obiekt %1 pod adresem %2</translation> - </message> - <message> - <source>%1 Object at Unknown Address</source> - <translation>Obiekt %1 pod nieznanym adresem</translation> + <source>Remove All Expression Evaluators</source> + <translation type="unfinished"></translation> </message> <message> - <source><Edit></source> - <translation type="vanished"><Zmodyfikuj></translation> + <source>Are you sure you want to remove all expression evaluators?</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>Debugger::Internal::WatchModel</name> <message> - <source><Edit></source> - <translation type="vanished"><Zmodyfikuj></translation> - </message> - <message> <source>returned value</source> <translation>zwrócona wartość</translation> </message> @@ -5547,54 +4940,10 @@ receives a signal like SIGSEGV during debugging.</source> </translation> </message> <message> - <source>Raw pointer</source> - <translation type="vanished">Wskaźnik</translation> - </message> - <message> - <source>Latin1 string</source> - <translation type="vanished">Ciąg Latin1</translation> - </message> - <message> - <source>UTF8 string</source> - <translation type="vanished">Ciąg UTF-8</translation> - </message> - <message> - <source>Local 8bit string</source> - <translation type="vanished">Lokalny ciąg 8-bitowy</translation> - </message> - <message> - <source>UTF16 string</source> - <translation type="vanished">Ciąg UTF-16</translation> - </message> - <message> - <source>UCS4 string</source> - <translation type="vanished">Ciąg UCS4</translation> - </message> - <message> - <source>Decimal</source> - <translation type="vanished">Dziesiętny</translation> - </message> - <message> - <source>Hexadecimal</source> - <translation type="vanished">Szesnastkowy</translation> - </message> - <message> - <source>Binary</source> - <translation type="vanished">Binarny</translation> - </message> - <message> - <source>Octal</source> - <translation type="vanished">Ósemkowy</translation> - </message> - <message> <source>Name</source> <translation>Nazwa</translation> </message> <message> - <source>Root</source> - <translation>Korzeń</translation> - </message> - <message> <source>Locals</source> <translation>Zmienne lokalne</translation> </message> @@ -5623,10 +4972,18 @@ receives a signal like SIGSEGV during debugging.</source> <translation>Typ</translation> </message> <message> + <source>Automatic</source> + <translation type="unfinished">Automatyczny</translation> + </message> + <message> <source>Raw Data</source> <translation>Surowe dane</translation> </message> <message> + <source>Enhanced</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Latin1 String</source> <translation>Ciąg Latin1</translation> </message> @@ -5655,6 +5012,30 @@ receives a signal like SIGSEGV during debugging.</source> <translation>Ciąg UTF-8 w oddzielnym oknie</translation> </message> <message> + <source>Plot in Separate Window</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Display Keys and Values Side by Side</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Force Display as Direct Storage Form</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Force Display as Indirect Storage Form</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Display Boolean Values as True or False</source> + <translation>Wyświetla wartości boolowskie jako "Prawda" albo "Fałsz"</translation> + </message> + <message> + <source>Display Boolean Values as 1 or 0</source> + <translation>Wyświetla wartości boolowskie jako 1 albo 0</translation> + </message> + <message> <source>Decimal Integer</source> <translation>Liczba dziesiętna</translation> </message> @@ -5678,6 +5059,14 @@ receives a signal like SIGSEGV during debugging.</source> <source>Scientific Float</source> <translation>Liczba zmiennoprzecinkowa w postaci wykładniczej</translation> </message> + <message> + <source>%1 Object at %2</source> + <translation>Obiekt %1 pod adresem %2</translation> + </message> + <message> + <source>%1 Object at Unknown Address</source> + <translation>Obiekt %1 pod nieznanym adresem</translation> + </message> </context> <context> <name>QtDumperHelper</name> @@ -5717,26 +5106,11 @@ Więcej szczegółów w /etc/sysctl.d/10-ptrace.conf </message> </context> <context> - <name>Debugger::Internal::WatchWindow</name> - <message> - <source>Locals and Expressions</source> - <translation type="vanished">Zmienne lokalne i wyrażenia</translation> - </message> -</context> -<context> <name>Designer::Internal::FormClassWizardDialog</name> <message> <source>Qt Designer Form Class</source> <translation>Klasa formularza Qt Designer</translation> </message> - <message> - <source>Form Template</source> - <translation type="vanished">Szablon formularza</translation> - </message> - <message> - <source>Class Details</source> - <translation type="vanished">Szczegóły klasy</translation> - </message> </context> <context> <name>Designer</name> @@ -5745,26 +5119,10 @@ Więcej szczegółów w /etc/sysctl.d/10-ptrace.conf <translation>Designer</translation> </message> <message> - <source>Class Generation</source> - <translation type="vanished">Generowanie klasy</translation> - </message> - <message> <source>Form Editor</source> <translation>Edytor formularzy</translation> </message> <message> - <source>The generated header of the form '%1' could not be found. -Rebuilding the project might help.</source> - <translation type="vanished">Nie można odnaleźć wygenerowanego pliku nagłówkowego dla formularza "%1". -Spróbuj ponownie przebudować projekt.</translation> - </message> - <message> - <source>The generated header '%1' could not be found in the code model. -Rebuilding the project might help.</source> - <translation type="vanished">Nie można odnaleźć wygenerowanego pliku nagłówkowego "%1" w modelu kodu. -Spróbuj ponownie przebudować projekt.</translation> - </message> - <message> <source>The generated header of the form "%1" could not be found. Rebuilding the project might help.</source> <translation>Nie można odnaleźć wygenerowanego pliku nagłówkowego dla formularza "%1". @@ -5792,14 +5150,6 @@ Spróbuj ponownie przebudować projekt.</translation> <translation>Shift+F4</translation> </message> <message> - <source>Qt Designer Form</source> - <translation type="vanished">Formularz Qt Designer</translation> - </message> - <message> - <source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source> - <translation type="vanished">Tworzy formularz Qt Designera, który można dodać do projektu Qt Widget. Jest to przydatne, gdy istnieje już klasa implementująca logikę UI.</translation> - </message> - <message> <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 Widget Project.</source> <translation>Tworzy formularz Qt Designera wraz z klasą implementującą (plik nagłówkowy i źródłowy C++). Utworzony formularz i klasę można dodać do istniejącego projektu Qt Widget.</translation> </message> @@ -5809,109 +5159,6 @@ Spróbuj ponownie przebudować projekt.</translation> </message> </context> <context> - <name>Designer::Internal::FormEditorW</name> - <message> - <source>Widget Box</source> - <translation type="vanished">Panel widżetów</translation> - </message> - <message> - <source>Object Inspector</source> - <translation type="vanished">Hierarchia obiektów</translation> - </message> - <message> - <source>Property Editor</source> - <translation type="vanished">Edytor właściwości</translation> - </message> - <message> - <source>Action Editor</source> - <translation type="vanished">Edytor akcji</translation> - </message> - <message> - <source>F3</source> - <translation type="vanished">F3</translation> - </message> - <message> - <source>F4</source> - <translation type="vanished">F4</translation> - </message> - <message> - <source>Ctrl+H</source> - <translation type="vanished">Ctrl+H</translation> - </message> - <message> - <source>Meta+L</source> - <translation type="vanished">Meta+L</translation> - </message> - <message> - <source>Ctrl+L</source> - <translation type="vanished">Ctrl+L</translation> - </message> - <message> - <source>Ctrl+G</source> - <translation type="vanished">Ctrl+G</translation> - </message> - <message> - <source>Meta+J</source> - <translation type="vanished">Meta+J</translation> - </message> - <message> - <source>Ctrl+J</source> - <translation type="vanished">Ctrl+J</translation> - </message> - <message> - <source>Alt+Shift+R</source> - <translation type="vanished">Alt+Shift+R</translation> - </message> - <message> - <source>About Qt Designer Plugins...</source> - <translation type="vanished">Informacje o wtyczkach Qt Designera...</translation> - </message> - <message> - <source>Signals && Slots Editor</source> - <translation type="vanished">Edytor sygnałów / slotów</translation> - </message> - <message> - <source>Widget box</source> - <translation type="vanished">Panel widżetów</translation> - </message> - <message> - <source>Edit Widgets</source> - <translation type="vanished">Modyfikuj widżety</translation> - </message> - <message> - <source>Edit Signals/Slots</source> - <translation type="vanished">Modyfikuj sygnały / sloty</translation> - </message> - <message> - <source>Edit Buddies</source> - <translation type="vanished">Modyfikuj skojarzone etykiety</translation> - </message> - <message> - <source>Edit Tab Order</source> - <translation type="vanished">Modyfikuj kolejność tabulacji</translation> - </message> - <message> - <source>Meta+Shift+H</source> - <translation type="vanished">Meta+Shift+H</translation> - </message> - <message> - <source>Meta+Shift+G</source> - <translation type="vanished">Meta+Shift+G</translation> - </message> - <message> - <source>Preview in</source> - <translation type="vanished">Podgląd w stylu</translation> - </message> - <message> - <source>Designer</source> - <translation type="vanished">Designer</translation> - </message> - <message> - <source>The image could not be created: %1</source> - <translation type="vanished">Nie można utworzyć pliku graficznego: %1</translation> - </message> -</context> -<context> <name>Designer::Internal::FormTemplateWizardPage</name> <message> <source>Choose a Form Template</source> @@ -5927,25 +5174,8 @@ Spróbuj ponownie przebudować projekt.</translation> </message> </context> <context> - <name>Designer::Internal::FormWizardDialog</name> - <message> - <source>Qt Designer Form</source> - <translation type="vanished">Formularz Qt Designer</translation> - </message> - <message> - <source>Form Template</source> - <translation type="vanished">Szablon formularza</translation> - </message> -</context> -<context> <name>Designer::Internal::QtCreatorIntegration</name> <message> - <source>The class containing '%1' could not be found in %2. -Please verify the #include-directives.</source> - <translation type="vanished">Nie można odnaleźć klasy zawierającej "%1" w %2. -Sprawdź dyrektywy #include.</translation> - </message> - <message> <source>The class containing "%1" could not be found in %2. Please verify the #include-directives.</source> <translation>Nie można odnaleźć klasy zawierającej "%1" w %2. @@ -5962,157 +5192,13 @@ Rebuilding the project might help.</source> Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> </message> <message> - <source>No documents matching '%1' could be found. -Rebuilding the project might help.</source> - <translation type="vanished">Brak dokumentów dołączających "%1". -Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> - </message> - <message> <source>Unable to add the method definition.</source> <translation>Nie można dodać definicji metody.</translation> </message> </context> <context> - <name>FakeVim::Internal</name> - <message> - <source>Use Vim-style Editing</source> - <translation type="vanished">Włącz edycję w stylu vim</translation> - </message> - <message> - <source>Read .vimrc</source> - <translation type="vanished">Odczytuj .vimrc</translation> - </message> - <message> - <source>Path to .vimrc</source> - <translation type="vanished">Ścieżka do .vimrc</translation> - </message> -</context> -<context> - <name>FakeVim::Internal::FakeVimHandler</name> - <message> - <source>%1%2%</source> - <translation type="vanished">%1%2%</translation> - </message> - <message> - <source>%1All</source> - <translation type="vanished">%1Wszystkie</translation> - </message> - <message> - <source>"%1" %2 %3L, %4C written</source> - <translation type="vanished">"%1" %2 zapisano: %3 linii, %4 znaków</translation> - </message> - <message> - <source>"%1" %2L, %3C</source> - <translation type="vanished">"%1" %2L, %3C</translation> - </message> - <message> - <source>Mark '%1' not set.</source> - <translation type="vanished">Znacznik "%1" nie jest ustawiony.</translation> - </message> - <message> - <source>Not implemented in FakeVim.</source> - <translation type="vanished">Nieobsługiwane w FakeVim.</translation> - </message> - <message numerus="yes"> - <source>%n lines moved.</source> - <translation type="vanished"> - <numerusform>%n linia przesunięta.</numerusform> - <numerusform>%n linie przesunięte.</numerusform> - <numerusform>%n linii przesuniętych.</numerusform> - </translation> - </message> - <message> - <source>File "%1" exists (add ! to override)</source> - <translation type="vanished">Plik "%1" istnieje (dodaj ! aby go zastąpić)</translation> - </message> - <message> - <source>Cannot open file "%1" for writing</source> - <translation type="vanished">Nie można otworzyć pliku "%1" do zapisu</translation> - </message> - <message> - <source>"%1" %2 %3L, %4C written.</source> - <translation type="vanished">"%1" %2 zapisano: %3 linii, %4 znaków.</translation> - </message> - <message> - <source>Cannot open file "%1" for reading</source> - <translation type="vanished">Nie można otworzyć pliku "%1" do odczytu</translation> - </message> - <message numerus="yes"> - <source>%n lines filtered.</source> - <translation type="vanished"> - <numerusform>Przefiltrowano %n linię.</numerusform> - <numerusform>Przefiltrowano %n linie.</numerusform> - <numerusform>Przefiltrowano %n linii.</numerusform> - </translation> - </message> - <message> - <source>Search hit BOTTOM, continuing at TOP.</source> - <translation type="vanished">Przeszukano do KOŃCA, wznowiono od POCZĄTKU.</translation> - </message> - <message> - <source>Search hit TOP, continuing at BOTTOM.</source> - <translation type="vanished">Przeszukano do POCZĄTKU, wznowiono od KOŃCA.</translation> - </message> - <message> - <source>Search hit BOTTOM without match for: %1</source> - <translation type="vanished">Przeszukano do KOŃCA, brak wyników pasujących do: %1</translation> - </message> - <message> - <source>Search hit TOP without match for: %1</source> - <translation type="vanished">Przeszukano do POCZĄTKU, brak wyników pasujących do: %1</translation> - </message> - <message numerus="yes"> - <source>%n lines indented.</source> - <translation type="vanished"> - <numerusform>Wyrównano %n linię.</numerusform> - <numerusform>Wyrównano %n linie.</numerusform> - <numerusform>Wyrównano %n linii.</numerusform> - </translation> - </message> - <message> - <source>Cannot open file %1</source> - <translation type="vanished">Nie można otworzyć pliku %1</translation> - </message> - <message> - <source>Unknown option:</source> - <translation type="vanished">Nieznana opcja:</translation> - </message> - <message> - <source>Invalid argument:</source> - <translation type="vanished">Niepoprawny argument:</translation> - </message> - <message> - <source>Trailing characters:</source> - <translation type="vanished">Białe znaki na końcu linii:</translation> - </message> - <message> - <source>Pattern not found: %1</source> - <translation type="vanished">Brak dopasowań do wzorca: %1</translation> - </message> - <message> - <source>Invalid regular expression: %1</source> - <translation type="vanished">Niepoprawne wyrażenie regularne: %1</translation> - </message> - <message> - <source>Unknown option: %1</source> - <translation type="vanished">Nieznana opcja: %1</translation> - </message> - <message> - <source>Argument must be positive: %1=%2</source> - <translation type="vanished">Argument musi być dodatni: %1=%2</translation> - </message> -</context> -<context> <name>FakeVim::Internal::FakeVimOptionPage</name> <message> - <source>General</source> - <translation type="vanished">Ogólne</translation> - </message> - <message> - <source>FakeVim</source> - <translation type="vanished">FakeVim</translation> - </message> - <message> <source>Use FakeVim</source> <translation>Używaj FakeVim</translation> </message> @@ -6217,10 +5303,6 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <translation>Wczytuj z położenia:</translation> </message> <message> - <source>Keep empty to use the default path, i.e. %USERPROFILE%\_vimrc on Windows, ~/.vimrc otherwise.</source> - <translation type="vanished">Pozostaw pustym aby użyć domyślnej ścieżki, tzn.%USERPROFILE%\_vimrc na Windows i ~/.vimrc w pozostałych przypadkach.</translation> - </message> - <message> <source>Passes key sequences like Ctrl-S to Qt Creator core instead of interpreting them in FakeVim. This gives easier access to Qt Creator core functionality at the price of losing some features of FakeVim.</source> <translation>Wybranie tej opcji spowoduje przekazywanie do Creatora sekwencji klawiszy takich jak Ctrl-S zamiast interpretowania ich w FakeVimie. Daje to łatwiejszy dostęp do funkcjonalności Creatora w zamian za utratę pewnych cech FakeVima.</translation> </message> @@ -6242,49 +5324,6 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> </message> </context> <context> - <name>FakeVim::Internal::FakeVimPluginPrivate</name> - <message> - <source>Meta+V,Meta+V</source> - <translation type="vanished">Meta+V,Meta+V</translation> - </message> - <message> - <source>Alt+V,Alt+V</source> - <translation type="vanished">Alt+V,Alt+V</translation> - </message> - <message> - <source>Execute User Action #%1</source> - <translation type="vanished">Wykonaj akcję użytkownika #%1</translation> - </message> - <message> - <source>Meta+V,%1</source> - <translation type="vanished">Meta+V,%1</translation> - </message> - <message> - <source>Alt+V,%1</source> - <translation type="vanished">Alt+V,%1</translation> - </message> - <message> - <source>File not saved</source> - <translation type="vanished">Plik nie został zachowany</translation> - </message> - <message> - <source>Saving succeeded</source> - <translation type="vanished">Zachowywanie poprawnie zakończone</translation> - </message> - <message numerus="yes"> - <source>%n files not saved</source> - <translation type="vanished"> - <numerusform>Nie zachowano %n pliku</numerusform> - <numerusform>Nie zachowano %n plików</numerusform> - <numerusform>Nie zachowano %n plików</numerusform> - </translation> - </message> - <message> - <source>FakeVim Information</source> - <translation type="vanished">Informacje o FakeVim</translation> - </message> -</context> -<context> <name>GenericProjectManager::Internal::GenericMakeStepConfigWidget</name> <message> <source>Make</source> @@ -6341,14 +5380,6 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <source>File Selection</source> <translation>Wybór pliku</translation> </message> - <message> - <source>Location</source> - <translation type="vanished">Położenie</translation> - </message> - <message> - <source>Files</source> - <translation type="vanished">Pliki</translation> - </message> </context> <context> <name>GenericProjectManager::Internal::GenericProjectWizard</name> @@ -6433,54 +5464,8 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> </message> </context> <context> - <name>Git::Internal::CloneWizard</name> - <message> - <source>Cloning</source> - <translation>Klonowanie</translation> - </message> - <message> - <source>Cloning started...</source> - <translation>Rozpoczęto klonowanie...</translation> - </message> - <message> - <source>Clones a Git repository and tries to load the contained project.</source> - <translation type="vanished">Klonuje repozytorium Git i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>Git Repository Clone</source> - <translation type="vanished">Klon repozytorium Git</translation> - </message> -</context> -<context> - <name>Git::CloneWizardPage</name> - <message> - <source>Location</source> - <translation>Położenie</translation> - </message> - <message> - <source>Specify repository URL, checkout directory and path.</source> - <translation>Podaj URL repozytorium, nazwę katalogu z kopią roboczą i ścieżkę do niego.</translation> - </message> - <message> - <source>Clone URL:</source> - <translation>URL klonu:</translation> - </message> - <message> - <source>Recursive</source> - <translation>Rekurencyjnie</translation> - </message> -</context> -<context> <name>Git::Internal::GitClient</name> <message> - <source>Waiting for data...</source> - <translation>Oczekiwanie na dane...</translation> - </message> - <message> - <source>Git Diff</source> - <translation type="vanished">Git Diff</translation> - </message> - <message> <source>Would you like to create a local branch?</source> <translation>Czy utworzyć lokalną gałąź?</translation> </message> @@ -6558,27 +5543,7 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> </message> <message> <source>Cannot obtain log of "%1": %2</source> - <translation>Nie można otrzymać loga "%1": %2</translation> - </message> - <message numerus="yes"> - <source>Cannot add %n file(s) to "%1": %2</source> - <translation> - <numerusform>Nie można dodać %n pliku do "%1": %2</numerusform> - <numerusform>Nie można dodać %n plików do "%1": %2</numerusform> - <numerusform>Nie można dodać %n plików do "%1": %2</numerusform> - </translation> - </message> - <message numerus="yes"> - <source>Cannot remove %n file(s) from "%1": %2</source> - <translation> - <numerusform>Nie można usunąć %n pliku z "%1": %2</numerusform> - <numerusform>Nie można usunąć %n plików z "%1": %2</numerusform> - <numerusform>Nie można usunąć %n plików z "%1": %2</numerusform> - </translation> - </message> - <message> - <source>Cannot move from "%1" to "%2": %3</source> - <translation>Nie można przenieść pliku z "%1" do "%2": %3</translation> + <translation>Nie można otrzymać logu "%1": %2</translation> </message> <message numerus="yes"> <source>Cannot reset %n file(s) in "%1": %2</source> @@ -6619,6 +5584,14 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <translation type="unfinished">Odłączony HEAD</translation> </message> <message> + <source>Reset</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All changes in working directory will be discarded. Are you sure?</source> + <translation>Wszystkie zmiany w katalogu roboczym zostaną utracone. Czy kontynuować?</translation> + </message> + <message> <source>Cannot describe revision "%1" in "%2": %3</source> <translation>Nie można opisać poprawki "%1" w "%2": %3</translation> </message> @@ -6753,15 +5726,6 @@ Commit now?</source> <source>No changes found.</source> <translation>Brak zmian.</translation> </message> - <message numerus="yes"> - <source>and %n more</source> - <extracomment>Displayed after the untranslated message "Branches: branch1, branch2 'and %n more'" in git show.</extracomment> - <translation type="vanished"> - <numerusform>i jeszcze %n gałąź</numerusform> - <numerusform>i jeszcze %n gałęzie</numerusform> - <numerusform>i jeszcze %n gałęzi</numerusform> - </translation> - </message> <message> <source>The repository "%1" is not initialized.</source> <translation>Repozytorium %1 nie jest zainicjalizowane.</translation> @@ -6824,10 +5788,6 @@ Commit now?</source> <translation>Plik nie jest zmodyfikowany.</translation> </message> <message> - <source>Cannot set tracking branch: %1</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Conflicts detected with commit %1.</source> <translation>Wykryto konflikty w zmianie %1.</translation> </message> @@ -6879,54 +5839,6 @@ Commit now?</source> </message> </context> <context> - <name>Gitorious::Internal::Gitorious</name> - <message> - <source>Error parsing reply from '%1': %2</source> - <translation type="vanished">Błąd przetwarzania odpowiedzi z "%1": %2</translation> - </message> - <message> - <source>Request failed for '%1': %2</source> - <translation type="vanished">Żądanie zostało błędnie zakończone dla "%1": %2</translation> - </message> - <message> - <source>Open source projects that use Git.</source> - <translation type="vanished">Projekty otwartego oprogramowania używające Git.</translation> - </message> -</context> -<context> - <name>Gitorious::Internal::GitoriousCloneWizard</name> - <message> - <source>Clones a Gitorious repository and tries to load the contained project.</source> - <translation type="vanished">Klonuje repozytorium Gitorious i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>Gitorious Repository Clone</source> - <translation type="vanished">Klon repozytorium Gitorious</translation> - </message> -</context> -<context> - <name>Gitorious::Internal::GitoriousHostWizardPage</name> - <message> - <source>Host</source> - <translation type="vanished">Host</translation> - </message> - <message> - <source>Select a host.</source> - <translation type="vanished">Wybierz host.</translation> - </message> -</context> -<context> - <name>Gitorious::Internal::GitoriousProjectWizardPage</name> - <message> - <source>Project</source> - <translation type="vanished">Projekt</translation> - </message> - <message> - <source>Choose a project from '%1'</source> - <translation type="vanished">Wybierz projekt z "%1"</translation> - </message> -</context> -<context> <name>Git::Internal::GitPlugin</name> <message> <source>&Git</source> @@ -7145,14 +6057,6 @@ Commit now?</source> <translation>Gałęzie...</translation> </message> <message> - <source>Clones a Git repository and tries to load the contained project.</source> - <translation>Klonuje repozytorium Git i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>Git Repository Clone</source> - <translation>Klon repozytorium Git</translation> - </message> - <message> <source>Reflog</source> <translation>Reflog</translation> </message> @@ -7205,6 +6109,14 @@ Commit now?</source> <translation>Odłożone zmiany...</translation> </message> <message> + <source>Stash Unstaged Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Saves the current state of your unstaged files and resets the repository to its staged state.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>&Remote Repository</source> <translation>Zdalne &repozytorium</translation> </message> @@ -7396,22 +6308,11 @@ Commit now?</source> <context> <name>Git::Internal::GitSettings</name> <message> - <source>The binary '%1' could not be located in the path '%2'</source> - <translation type="vanished">Nie można odnaleźć pliku binarnego "%1" w ścieżce "%2"</translation> - </message> - <message> <source>The binary "%1" could not be located in the path "%2"</source> <translation>Nie można odnaleźć pliku binarnego "%1" w ścieżce "%2"</translation> </message> </context> <context> - <name>Help::Internal::CentralWidget</name> - <message> - <source>Print Document</source> - <translation type="vanished">Wydruk dokumentu</translation> - </message> -</context> -<context> <name>Help::Internal::DocSettingsPage</name> <message> <source>Documentation</source> @@ -7442,6 +6343,10 @@ Commit now?</source> <translation>Nie można zarejestrować dokumentacji.</translation> </message> <message> + <source>%1 (auto-detected)</source> + <translation>%1 (automatycznie wykryte)</translation> + </message> + <message> <source>Add and remove compressed help files, .qch.</source> <translation>Dodaje i usuwa skompresowane pliki pomocy .qch.</translation> </message> @@ -7574,14 +6479,6 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <translation>Zawsze pokazuj z boku</translation> </message> <message> - <source>Always Start Full Help</source> - <translation type="vanished">Zawsze zaczynaj od pełnej pomocy</translation> - </message> - <message> - <source>Always Show Help in External Window</source> - <translation type="vanished">Zawsze pokazuj pomoc w zewnętrznym oknie</translation> - </message> - <message> <source>On help start:</source> <translation>Po uruchomieniu pomocy:</translation> </message> @@ -7679,46 +6576,10 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <translation>Zakładki</translation> </message> <message> - <source>Home</source> - <translation type="vanished">Strona startowa</translation> - </message> - <message> - <source>Previous Page</source> - <translation type="vanished">Poprzednia strona</translation> - </message> - <message> - <source>Next Page</source> - <translation type="vanished">Następna strona</translation> - </message> - <message> - <source>Add Bookmark</source> - <translation type="vanished">Dodaj zakładkę</translation> - </message> - <message> <source>Context Help</source> <translation>Pomoc podręczna</translation> </message> <message> - <source>Activate Index in Help mode</source> - <translation type="vanished">Uaktywnij indeks w trybie pomocy</translation> - </message> - <message> - <source>Activate Contents in Help mode</source> - <translation type="vanished">Uaktywnij zawartość w trybie pomocy</translation> - </message> - <message> - <source>Increase Font Size</source> - <translation type="vanished">Zwiększ rozmiar czcionki</translation> - </message> - <message> - <source>Meta+M</source> - <translation type="vanished">Meta+M</translation> - </message> - <message> - <source>Ctrl+M</source> - <translation type="vanished">Ctrl+M</translation> - </message> - <message> <source>Technical Support</source> <translation>Wsparcie techniczne</translation> </message> @@ -7731,117 +6592,17 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <translation><html><head><title>Brak dokumentacji</title></head><body><br/><center><font color="%1"><b>%2</b></font><br/><font color="%3">Brak dostępnej dokumentacji.</font></center></body></html></translation> </message> <message> - <source>Decrease Font Size</source> - <translation type="vanished">Zmniejsz rozmiar czcionki</translation> - </message> - <message> - <source>Reset Font Size</source> - <translation type="vanished">Przywróć domyślny rozmiar czcionki</translation> - </message> - <message> - <source>Meta+I</source> - <translation type="vanished">Meta+I</translation> - </message> - <message> - <source>Ctrl+Shift+I</source> - <translation type="vanished">Ctrl+Shift+I</translation> - </message> - <message> - <source>Meta+Shift+C</source> - <translation type="vanished">Meta+Shift+C</translation> - </message> - <message> - <source>Ctrl+Shift+C</source> - <translation type="vanished">Ctrl+Shift+C</translation> - </message> - <message> - <source>Activate Search in Help mode</source> - <translation type="vanished">Uaktywnij przeszukiwanie w trybie pomocy</translation> - </message> - <message> - <source>Meta+/</source> - <translation type="vanished">Meta+/</translation> - </message> - <message> - <source>Ctrl+Shift+/</source> - <translation type="vanished">Ctrl+Shift+/</translation> - </message> - <message> - <source>Activate Bookmarks in Help mode</source> - <translation type="vanished">Uaktywnij zakładki w trybie pomocy</translation> - </message> - <message> - <source>Meta+B</source> - <translation type="vanished">Meta+B</translation> - </message> - <message> - <source>Ctrl+Shift+B</source> - <translation type="vanished">Ctrl+Shift+B</translation> - </message> - <message> <source>Open Pages</source> <translation>Otwarte strony</translation> </message> <message> - <source>Activate Open Pages in Help mode</source> - <translation type="vanished">Uaktywnij otwarte strony w trybie pomocy</translation> - </message> - <message> - <source>Meta+O</source> - <translation type="vanished">Meta+O</translation> - </message> - <message> - <source>Ctrl+Shift+O</source> - <translation type="vanished">Ctrl+Shift+O</translation> - </message> - <message> - <source>Show Sidebar</source> - <translation type="vanished">Pokaż boczny pasek</translation> - </message> - <message> - <source>Go to Help Mode</source> - <translation type="vanished">Przejdź do trybu pomocy</translation> - </message> - <message> - <source>Previous</source> - <translation type="vanished">Poprzedni</translation> - </message> - <message> - <source>Close current page</source> - <translation type="vanished">Zamknij bieżącą stronę</translation> - </message> - <message> - <source>Hide Sidebar</source> - <translation type="vanished">Ukryj boczny pasek</translation> - </message> - <message> - <source>Next</source> - <translation type="vanished">Następny</translation> - </message> - <message> <source>Unfiltered</source> <translation>Nieprzefiltrowane</translation> </message> - <message> - <source><html><head><title>No Documentation</title></head><body><br/><center><b>%1</b><br/>No documentation available.</center></body></html></source> - <translation type="vanished"><html><head><title>Brak dokumentacji</title></head><body><br/><center><b>%1</b><br/>Brak dostępnej dokumentacji.</center></body></html></translation> - </message> - <message> - <source>Filtered by:</source> - <translation type="vanished">Przefiltrowane przez:</translation> - </message> </context> <context> <name>Help::Internal::SearchWidget</name> <message> - <source>Indexing</source> - <translation type="vanished">Indeksowanie</translation> - </message> - <message> - <source>Indexing Documentation...</source> - <translation type="vanished">Indeksowanie dokumentacji...</translation> - </message> - <message> <source>Indexing Documentation</source> <translation>Indeksowanie dokumentacji</translation> </message> @@ -8140,16 +6901,20 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <translation>p4 filelog %1</translation> </message> <message> + <source>p4 changelists %1</source> + <translation>p4 changelists %1</translation> + </message> + <message> <source>Could not start perforce "%1". Please check your settings in the preferences.</source> <translation>Nie można uruchomić perforce "%1". Sprawdź stosowne ustawienia.</translation> </message> <message> - <source>The process terminated with exit code %1.</source> - <translation>Proces zakończył się kodem wyjściowym %1.</translation> + <source>Perforce did not respond within timeout limit (%1 s).</source> + <translation>Perforce nie odpowiedział w określonym czasie (%1 s).</translation> </message> <message> - <source>[Only %1 MB of output shown]</source> - <translation>[Pokazano tylko %1 MB danych wyjściowych]</translation> + <source>The process terminated with exit code %1.</source> + <translation>Proces zakończył się kodem wyjściowym %1.</translation> </message> <message> <source>The commit message check failed. Do you want to submit this change list?</source> @@ -8186,14 +6951,6 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <translation>Pokaż różnice w &zaznaczonych plikach</translation> </message> <message> - <source>Could not start perforce '%1'. Please check your settings in the preferences.</source> - <translation type="vanished">Nie można uruchomić perforce "%1". Sprawdź stosowne ustawienia.</translation> - </message> - <message> - <source>Perforce did not respond within timeout limit (%1 ms).</source> - <translation>Perforce nie odpowiedział w określonym czasie (%1 ms).</translation> - </message> - <message> <source>Unable to write input data to process %1: %2</source> <translation>Nie można wpisać danych wejściowych do procesu %1: %2</translation> </message> @@ -8201,6 +6958,15 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <source>Perforce is not correctly configured.</source> <translation>Perforce nie jest poprawnie skonfigurowany.</translation> </message> + <message numerus="yes"> + <source>[Only %n MB of output shown]</source> + <translatorcomment>%n probably doesn't make sense here</translatorcomment> + <translation> + <numerusform>[Pokazano tylko %n MB danych wyjściowych]</numerusform> + <numerusform>[Pokazano tylko %n MB danych wyjściowych]</numerusform> + <numerusform>[Pokazano tylko %n MB danych wyjściowych]</numerusform> + </translation> + </message> <message> <source>p4 diff %1</source> <translation>p4 diff %1</translation> @@ -8327,29 +7093,6 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum </message> </context> <context> - <name>ProjectExplorer::Internal::LocalApplicationRunControl</name> - <message> - <source>No executable specified.</source> - <translation>Nie podano pliku wykonywalnego.</translation> - </message> - <message> - <source>Executable %1 does not exist.</source> - <translation>Brak pliku wykonywalnego %1.</translation> - </message> - <message> - <source>Starting %1...</source> - <translation>Uruchamianie %1...</translation> - </message> - <message> - <source>%1 crashed</source> - <translation>%1 zakończył pracę błędem</translation> - </message> - <message> - <source>%1 exited with code %2</source> - <translation>%1 zakończone kodem %2</translation> - </message> -</context> -<context> <name>ProjectExplorer::BuildManager</name> <message numerus="yes"> <source>Finished %1 of %n steps</source> @@ -8395,10 +7138,6 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <translation>Anulowano budowanie / instalację.</translation> </message> <message> - <source>When executing step '%1'</source> - <translation type="vanished">Podczas wykonywania kroku "%1"</translation> - </message> - <message> <source>Running steps for project %1...</source> <translation>Uruchamianie kroków budowania dla projektu %1...</translation> </message> @@ -8514,10 +7253,6 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <source>Project "%1":</source> <translation>Projekt "%1":</translation> </message> - <message> - <source>Project '%1':</source> - <translation type="vanished">Projekt "%1":</translation> - </message> </context> <context> <name>ProjectExplorer::DebuggingHelperLibrary</name> @@ -8843,24 +7578,12 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <translation>Otwórz przełącznik zestawu budowania i uruchamiania...</translation> </message> <message> - <source>Full build path of the current project's active build configuration.</source> - <translation>Pełna ścieżka do wersji z aktywną konfiguracją budowania bieżącego projektu.</translation> - </message> - <message> - <source>The current project's name.</source> - <translation type="vanished">Nazwa bieżącego projektu.</translation> - </message> - <message> - <source>The currently active kit's name.</source> - <translation type="vanished">Nazwa aktywnego zestawu narzędzi.</translation> + <source>Current project's main file.</source> + <translation>Główny plik bieżącego projektu.</translation> </message> <message> - <source>The currently active kit's name in a filesystem friendly version.</source> - <translation type="vanished">Nazwa aktywnego zestawu narzędzi w wersji przyjaznej dla systemu plików.</translation> - </message> - <message> - <source>The currently active kit's id.</source> - <translation type="vanished">Identyfikator aktywnego zestawu narzędzi.</translation> + <source>Full build path of the current project's active build configuration.</source> + <translation>Pełna ścieżka do wersji z aktywną konfiguracją budowania bieżącego projektu.</translation> </message> <message> <source>The host address of the device in the currently active kit.</source> @@ -8871,10 +7594,6 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <translation>Port SSH urządzenia w aktywnym zestawie narzędzi.</translation> </message> <message> - <source>The user name with which to log into the device in the currently active kit.</source> - <translation type="vanished">Nazwa użytkownika użytego do logowania na urządzeniu w aktywnym zestawie narzędzi.</translation> - </message> - <message> <source>The private key file with which to authenticate when logging into the device in the currently active kit.</source> <translation>Klucz prywatny użyty do autoryzacji podczas logowania na urządzeniu w aktywnym zestawie narzędzi.</translation> </message> @@ -8919,6 +7638,10 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum <translation>debugowy</translation> </message> <message> + <source>The name of the currently active kit in a filesystem-friendly version.</source> + <translation>Nazwa aktywnego zestawu narzędzi w wersji przyjaznej dla systemu plików.</translation> + </message> + <message> <source>release</source> <translation>release'owy</translation> </message> @@ -8961,33 +7684,25 @@ Do you want to ignore them?</source> Czy zignorować je?</translation> </message> <message> - <source><b>Warning:</b> This file is outside the project directory.</source> - <translation><b>Ostrzeżenie:</b> Ten plik leży poza katalogiem projektu.</translation> - </message> - <message> <source>Build</source> <comment>Build step</comment> <translation>Budowanie</translation> </message> <message> <source>No project loaded.</source> - <translation type="vanished">Nie załadowano projektu.</translation> + <translation>Nie załadowano projektu.</translation> </message> <message> <source>Currently building the active project.</source> - <translation type="vanished">Trwa budowanie aktywnego projektu.</translation> + <translation>Trwa budowanie aktywnego projektu.</translation> </message> <message> <source>The project %1 is not configured.</source> - <translation type="vanished">Projekt %1 nie jest skonfigurowany.</translation> + <translation>Projekt %1 nie jest skonfigurowany.</translation> </message> <message> <source>Project has no build settings.</source> - <translation type="vanished">Brak ustawień budowania w projekcie.</translation> - </message> - <message> - <source>Building '%1' is disabled: %2</source> - <translation type="vanished">Budowanie "%1" jest nieaktywne: %2</translation> + <translation>Brak ustawień budowania w projekcie.</translation> </message> <message> <source>Cancel Build && Close</source> @@ -9014,12 +7729,8 @@ Czy zignorować je?</translation> <translation>Brak aktywnego projektu.</translation> </message> <message> - <source>Cannot run '%1'.</source> - <translation type="vanished">Nie można uruchomić "%1".</translation> - </message> - <message> <source>Run %1</source> - <translation type="vanished">Uruchom %1</translation> + <translation>Uruchom %1</translation> </message> <message> <source>New Subproject</source> @@ -9043,6 +7754,18 @@ Czy zignorować je?</translation> <translation>Plik %1 został przemianowany na %2, ale nie można było automatycznie zmienić pliku projektu %3.</translation> </message> <message> + <source>Building "%1" is disabled: %2<br></source> + <translation>Budowanie "%1" jest wyłączone: %2<br></translation> + </message> + <message> + <source>A build is in progress.</source> + <translation>Trwa budowanie.</translation> + </message> + <message> + <source>Building "%1" is disabled: %2</source> + <translation>Budowanie "%1" jest wyłączone: %2</translation> + </message> + <message> <source>The project "%1" is not configured.</source> <translation>Projekt %1 nie jest skonfigurowany.</translation> </message> @@ -9107,10 +7830,6 @@ Czy zignorować je?</translation> <translation>Ctrl+T</translation> </message> <message> - <source>Current project's main file</source> - <translation>Główny plik bieżącego projektu</translation> - </message> - <message> <source>The name of the current project.</source> <translation>Nazwa bieżącego projektu.</translation> </message> @@ -9119,10 +7838,6 @@ Czy zignorować je?</translation> <translation>Nazwa aktywnego zestawu narzędzi.</translation> </message> <message> - <source>The name of the currently active kit in a filesystem friendly version.</source> - <translation>Nazwa aktywnego zestawu narzędzi w wersji przyjaznej dla systemu plików.</translation> - </message> - <message> <source>The id of the currently active kit.</source> <translation>Identyfikator aktywnego zestawu narzędzi.</translation> </message> @@ -9139,10 +7854,6 @@ Czy zignorować je?</translation> <translation>Nie można otworzyć projektu.</translation> </message> <message> - <source>Failed to open project</source> - <translation>Nie można otworzyć projektu</translation> - </message> - <message> <source>All Projects</source> <translation>Wszystkie projekty</translation> </message> @@ -9152,22 +7863,6 @@ Czy zignorować je?</translation> <translation>Nowy projekt</translation> </message> <message> - <source>Failed opening project '%1': Project already open.</source> - <translation type="vanished">Nie można otworzyć projektu "%1": projekt jest już otwarty.</translation> - </message> - <message> - <source>Failed opening project '%1': Settings could not be restored.</source> - <translation type="vanished">Nie można otworzyć projektu "%1": nie można przywrócić ustawień.</translation> - </message> - <message> - <source>Failed opening project '%1': No plugin can open project type '%2'.</source> - <translation type="vanished">Nie można otworzyć projektu "%1": brak wtyczki obsługującej projekt typu "%2".</translation> - </message> - <message> - <source>Failed opening project '%1': Unknown project type.</source> - <translation type="vanished">Nie można otworzyć projektu "%1": nieznany typ projektu.</translation> - </message> - <message> <source>Ignore All Errors?</source> <translation>Zignorować wszystkie błędy?</translation> </message> @@ -9185,31 +7880,7 @@ Czy zignorować je?</translation> </message> <message> <source>The project %1 is not configured, skipping it.</source> - <translation type="vanished">Projekt %1 nie jest skonfigurowany, zostaje pominięty.</translation> - </message> - <message> - <source>No project loaded</source> - <translation type="vanished">Nie załadowano projektu</translation> - </message> - <message> - <source>Project has no build settings</source> - <translation type="vanished">Brak ustawień budowania w projekcie</translation> - </message> - <message> - <source>Building '%1' is disabled: %2<br></source> - <translation type="vanished">Budowanie "%1" jest nieaktywne: %2<br></translation> - </message> - <message> - <source>A build is in progress</source> - <translation type="vanished">Trwa budowanie</translation> - </message> - <message> - <source>The project '%1' has no active kit.</source> - <translation type="vanished">Projekt "%1" nie posiada aktywnego zestawu narzędzi.</translation> - </message> - <message> - <source>The kit '%1' for the project '%2' has no active run configuration.</source> - <translation type="vanished">Brak aktywnej konfiguracji uruchamiania w zestawie narzędzi "%1" projektu "%2".</translation> + <translation>Projekt %1 nie jest skonfigurowany, zostaje pominięty.</translation> </message> <message> <source>A build is still in progress.</source> @@ -9243,19 +7914,6 @@ Czy zignorować je?</translation> <context> <name>ProjectExplorer::Internal::ProjectFileWizardExtension</name> <message> - <source><Implicitly Add></source> - <translation type="vanished"><Niejawnie dodaj></translation> - </message> - <message> - <source>The files are implicitly added to the projects:</source> - <translation type="vanished">Pliki, które zostały niejawnie dodane do projektów:</translation> - </message> - <message> - <source><None></source> - <extracomment>No project selected</extracomment> - <translation type="vanished"><Brak></translation> - </message> - <message> <source>Open project anyway?</source> <translation>Czy otworzyć projekt mimo to?</translation> </message> @@ -9275,26 +7933,6 @@ do projektu "%2".</translation> <translation>Nie można dodać jednego lub więcej plików do projektu "%1" (%2).</translation> </message> - <message> - <source>Failed to add subproject '%1' -to project '%2'.</source> - <translation type="vanished">Nie można dodać podprojektu "%1" -do projektu "%2".</translation> - </message> - <message> - <source>Failed to add one or more files to project -'%1' (%2).</source> - <translation type="vanished">Nie można dodać jednego lub więcej plików do projektu -"%1" (%2).</translation> - </message> - <message> - <source>A version control system repository could not be created in '%1'.</source> - <translation type="vanished">Nie można utworzyć repozytorium systemu kontroli wersji w "%1".</translation> - </message> - <message> - <source>Failed to add '%1' to the version control system.</source> - <translation type="vanished">Nie można dodać "%1" do systemu kontroli wersji.</translation> - </message> </context> <context> <name>ProjectExplorer::Internal::ProjectTreeWidget</name> @@ -9511,10 +8149,6 @@ do projektu "%2".</translation> <translation>Ładowanie sesji</translation> </message> <message> - <source>Session</source> - <translation type="vanished">Sesja</translation> - </message> - <message> <source>Error while saving session</source> <translation>Błąd podczas zachowywania sesji</translation> </message> @@ -9566,14 +8200,6 @@ do projektu "%2".</translation> <source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source> <translation>Ten kreator generuje projekt własnego widżetu Qt Designera lub projekt kolekcji własnych widżetów Qt4 Designera.</translation> </message> - <message> - <source>Custom Widgets</source> - <translation type="vanished">Własne widżety</translation> - </message> - <message> - <source>Plugin Details</source> - <translation type="vanished">Szczegóły wtyczki</translation> - </message> </context> <context> <name>QmakeProjectManager::Internal::PluginGenerator</name> @@ -9612,17 +8238,9 @@ do projektu "%2".</translation> <translation>Make</translation> </message> <message> - <source>Qt Creator needs a compiler set up to build. Configure a compiler in the kit options.</source> - <translation type="vanished">Do budowy Qt Creator wymaga ustawionego kompilatora. Skonfiguruj go w opcjach zestawu narzędzi.</translation> - </message> - <message> <source>Cannot find Makefile. Check your build settings.</source> <translation>Nie można odnaleźć pliku Makefile. Sprawdź swoje ustawienia budowania.</translation> </message> - <message> - <source>Configuration is faulty. Check the Issues view for details.</source> - <translation type="vanished">Błędna konfiguracja. Sprawdź szczegóły w widoku "Problemy budowania".</translation> - </message> </context> <context> <name>QmakeProjectManager::MakeStepConfigWidget</name> @@ -9662,10 +8280,6 @@ do projektu "%2".</translation> <translation>qmake</translation> </message> <message> - <source>Configuration is faulty, please check the Issues view for details.</source> - <translation type="vanished">Konfiguracja jest błędna, sprawdź szczegóły w widoku "Problemy budowania".</translation> - </message> - <message> <source>Configuration unchanged, skipping qmake step.</source> <translation>Konfiguracja niezmieniona, krok qmake opuszczony.</translation> </message> @@ -9689,8 +8303,8 @@ do projektu "%2".</translation> <translation><b>qmake:</b> %1 %2</translation> </message> <message> - <source>Enable QML debugging:</source> - <translation>Uaktywnij debugowanie QML:</translation> + <source>Enable QML debugging and profiling:</source> + <translation>Włącz debugowanie i profilowanie QML:</translation> </message> <message> <source>Might make your application vulnerable. Only use in a safe environment.</source> @@ -9701,6 +8315,10 @@ do projektu "%2".</translation> <translation>Włącz kompilator Qt Quick:</translation> </message> <message> + <source>Disables QML debugging. QML profiling will still work.</source> + <translation>Wyłącza debugowanie QML, profilowanie QML pozostawia włączone.</translation> + </message> + <message> <source><No Qt version></source> <translation><Brak wersji Qt></translation> </message> @@ -9715,18 +8333,6 @@ do projektu "%2".</translation> <context> <name>QmakeProjectManager::QmakeManager</name> <message> - <source>Update of Generated Files</source> - <translation>Uaktualnienie wygenerowanych plików</translation> - </message> - <message> - <source>In project<br><br>%1<br><br>The following files are either outdated or have been modified:<br><br>%2<br><br>Do you want Qt Creator to update the files? Any changes will be lost.</source> - <translation>W projekcie<br><br>%1<br><br>Następujące pliki są albo nieaktualne albo zostały zmodyfikowane: <br><br>%2<br><br>Czy odświeżyć te pliki? Jakiekolwiek zmiany zostaną utracone.</translation> - </message> - <message> - <source>Failed opening project '%1': Project is not a file</source> - <translation type="vanished">Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik</translation> - </message> - <message> <source>Failed opening project "%1": Project is not a file</source> <translation>Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik</translation> </message> @@ -9890,46 +8496,6 @@ do projektu "%2".</translation> </message> </context> <context> - <name>QmakeProjectManager::Internal::ConsoleAppWizard</name> - <message> - <source>Qt Console Application</source> - <translation>Aplikacja konsolowa Qt</translation> - </message> - <message> - <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>Tworzy projekt zawierający pojedynczy plik main.cpp z substytutem implementacji. - -Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dostępna).</translation> - </message> -</context> -<context> - <name>QmakeProjectManager::Internal::ConsoleAppWizardDialog</name> - <message> - <source>This wizard generates a Qt Console Application project. The application derives from QCoreApplication and does not provide a GUI.</source> - <translation>Ten kreator generuje projekt aplikacji konsolowej Qt. Aplikacja dziedziczy z QCoreApplication i nie używa GUI.</translation> - </message> -</context> -<context> - <name>QmakeProjectManager::Internal::EmptyProjectWizard</name> - <message> - <source>Empty Qt Project</source> - <translation type="vanished">Pusty projekt Qt</translation> - </message> - <message> - <source>Creates a qmake-based project without any files. This allows you to create an application without any default classes.</source> - <translation type="vanished">Tworzy pusty projekt bazujący na qmake, bez żadnych domyślnych klas.</translation> - </message> -</context> -<context> - <name>QmakeProjectManager::Internal::EmptyProjectWizardDialog</name> - <message> - <source>This wizard generates an empty Qt project. Add files to it later on by using the other wizards.</source> - <translation type="vanished">Ten kreator generuje pusty projekt Qt. Skorzystanie z innych kreatorów umożliwi dodanie do niego plików.</translation> - </message> -</context> -<context> <name>QmakeProjectManager::Internal::FilesPage</name> <message> <source>Class Information</source> @@ -9965,10 +8531,6 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <source>This wizard generates a Qt Widgets Application project. The application derives by default from QApplication and includes an empty widget.</source> <translation>Ten kreator generuje projekt aplikacji Qt Widgets. Aplikacja domyślnie dziedziczy z QApplication i zawiera pusty widżet.</translation> </message> - <message> - <source>Details</source> - <translation type="vanished">Szczegóły</translation> - </message> </context> <context> <name>QmakeProjectManager::Internal::LibraryWizard</name> @@ -10033,14 +8595,6 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <context> <name>ResourceEditor::Internal::ResourceEditorPlugin</name> <message> - <source>Creates a Qt Resource file (.qrc) that you can add to a Qt Widget Project.</source> - <translation type="vanished">Tworzy plik z zasobami Qt (.qrc), który można dodać do projektu Qt Widget.</translation> - </message> - <message> - <source>Qt Resource file</source> - <translation type="vanished">Plik z zasobami Qt</translation> - </message> - <message> <source>&Undo</source> <translation>&Cofnij</translation> </message> @@ -10065,6 +8619,10 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <translation>Usuń przedrostek...</translation> </message> <message> + <source>Remove Missing Files</source> + <translation>Usuń brakujące pliki</translation> + </message> + <message> <source>Rename...</source> <translation>Zmień nazwę...</translation> </message> @@ -10077,8 +8635,8 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <translation>Otwórz w edytorze</translation> </message> <message> - <source>Open in Text Editor</source> - <translation>Otwórz w edytorze tekstowym</translation> + <source>Open With</source> + <translation>Otwórz przy pomocy</translation> </message> <message> <source>Copy path "%1"</source> @@ -10133,36 +8691,6 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos </message> </context> <context> - <name>Subversion::Internal::CheckoutWizard</name> - <message> - <source>Checks out a Subversion repository and tries to load the contained project.</source> - <translation type="vanished">Wyciąga repozytorium Subversion i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>Subversion Checkout</source> - <translation type="vanished">Kopia robocza Subversion</translation> - </message> -</context> -<context> - <name>Subversion::Internal::CheckoutWizardPage</name> - <message> - <source>Trust Server Certificate</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Location</source> - <translation>Położenie</translation> - </message> - <message> - <source>Specify repository URL, checkout directory and path.</source> - <translation>Podaj URL repozytorium, nazwę katalogu z kopią roboczą i ścieżkę do niego.</translation> - </message> - <message> - <source>Repository:</source> - <translation>Repozytorium:</translation> - </message> -</context> -<context> <name>Subversion::Internal::SettingsPageWidget</name> <message> <source>Subversion Command</source> @@ -10268,14 +8796,6 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <translation>Stan projektu</translation> </message> <message> - <source>Checks out a Subversion repository and tries to load the contained project.</source> - <translation>Wyciąga repozytorium Subversion i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>Subversion Checkout</source> - <translation>Kopia robocza Subversion</translation> - </message> - <message> <source>Meta+S,Meta+D</source> <translation>Meta+S,Meta+D</translation> </message> @@ -10395,10 +8915,6 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <source>No subversion executable specified.</source> <translation>Nie podano komendy programu subversion.</translation> </message> - <message> - <source>No subversion executable specified!</source> - <translation type="vanished">Nie podano komendy programu subversion!</translation> - </message> </context> <context> <name>Subversion::Internal::SubversionSubmitEditor</name> @@ -10410,13 +8926,17 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <context> <name>TextEditor::BaseFileFind</name> <message> - <source>Search</source> - <translation type="vanished">Wyszukiwanie</translation> - </message> - <message> <source>Searching</source> <translation>Przeszukiwanie</translation> </message> + <message numerus="yes"> + <source>%n occurrences replaced.</source> + <translation> + <numerusform>Zastąpiono %n wystąpienie.</numerusform> + <numerusform>Zastąpiono %n wystąpienia.</numerusform> + <numerusform>Zastąpiono %n wystąpień.</numerusform> + </translation> + </message> <message> <source>List of comma separated wildcard filters</source> <translation>Lista filtrów z dżokerami oddzielona przecinkami</translation> @@ -10427,23 +8947,8 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos </message> </context> <context> - <name>TextEditor::BaseTextDocument</name> - <message> - <source>Opening file</source> - <translation type="vanished">Otwieranie pliku</translation> - </message> -</context> -<context> <name>TextEditor::BaseTextEditor</name> <message> - <source>Line: %1, Col: %2</source> - <translation type="vanished">Linia: %1, kolumna: %2</translation> - </message> - <message> - <source>Line: 9999, Col: 999</source> - <translation type="vanished">Linia: 9999, kolumna: 999</translation> - </message> - <message> <source>A highlight definition was not found for this file. Would you like to try to find one?</source> <translation>Definicja podświetleń dla tego pliku nie została znaleziona. Czy chcesz spróbować ją znaleźć?</translation> </message> @@ -10493,10 +8998,6 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <translation>Plik "%1":</translation> </message> <message> - <source>File '%1':</source> - <translation type="vanished">Plik "%1":</translation> - </message> - <message> <source>File path: %1 %2</source> <translation>Ścieżka pliku: %1 @@ -10575,390 +9076,6 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <context> <name>TextEditor::TextEditorActionHandler</name> <message> - <source>&Undo</source> - <translation type="vanished">&Cofnij</translation> - </message> - <message> - <source>&Redo</source> - <translation type="vanished">&Przywróć</translation> - </message> - <message> - <source>Select Encoding...</source> - <translation type="vanished">Wybierz kodowanie...</translation> - </message> - <message> - <source>Auto-&indent Selection</source> - <translation type="vanished">Sformatuj wc&ięcia w zaznaczonym tekście</translation> - </message> - <message> - <source>Ctrl+I</source> - <translation type="vanished">Ctrl+I</translation> - </message> - <message> - <source>&Rewrap Paragraph</source> - <translation type="vanished">Zawiń &paragraf</translation> - </message> - <message> - <source>&Visualize Whitespace</source> - <translation type="vanished">Pokazuj &białe znaki</translation> - </message> - <message> - <source>Clean Whitespace</source> - <translation type="vanished">Usuń końcowe białe znaki</translation> - </message> - <message> - <source>Enable Text &Wrapping</source> - <translation type="vanished">Za&wijanie tekstu</translation> - </message> - <message> - <source>Ctrl+/</source> - <translation type="vanished">Ctrl+/</translation> - </message> - <message> - <source>Cut &Line</source> - <translation type="vanished">Wytnij &linię</translation> - </message> - <message> - <source>Shift+Del</source> - <translation type="vanished">Shift+Del</translation> - </message> - <message> - <source>Delete &Line</source> - <translation type="vanished">Usuń &linię</translation> - </message> - <message> - <source>Delete Word from Cursor On</source> - <translation type="vanished">Usuń słowo począwszy od kursora</translation> - </message> - <message> - <source>Delete Word up to Cursor</source> - <translation type="vanished">Usuń słowo kończąc na kursorze</translation> - </message> - <message> - <source>Ctrl+<</source> - <translation type="vanished">Ctrl+<</translation> - </message> - <message> - <source>Ctrl+></source> - <translation type="vanished">Ctrl+></translation> - </message> - <message> - <source>Toggle &Fold All</source> - <translation type="vanished">&Zwiń / rozwiń wszystko</translation> - </message> - <message> - <source>Increase Font Size</source> - <translation type="vanished">Zwiększ rozmiar czcionki</translation> - </message> - <message> - <source>Ctrl++</source> - <translation type="vanished">Ctrl++</translation> - </message> - <message> - <source>Decrease Font Size</source> - <translation type="vanished">Zmniejsz rozmiar czcionki</translation> - </message> - <message> - <source>Ctrl+-</source> - <translation type="vanished">Ctrl+-</translation> - </message> - <message> - <source>Reset Font Size</source> - <translation type="vanished">Przywróć domyślny rozmiar czcionki</translation> - </message> - <message> - <source>Ctrl+0</source> - <translation type="vanished">Ctrl+0</translation> - </message> - <message> - <source>Go to Block Start</source> - <translation type="vanished">Przejdź do początku bloku</translation> - </message> - <message> - <source>Go to Block End</source> - <translation type="vanished">Przejdź do końca bloku</translation> - </message> - <message> - <source>Ctrl+[</source> - <translation type="vanished">Ctrl+[</translation> - </message> - <message> - <source>Toggle Comment &Selection</source> - <translation type="vanished">Wykomentuj / odkomentuj zaznaczony tek&st</translation> - </message> - <message> - <source>Meta+E, R</source> - <translation type="vanished">Meta+E, R</translation> - </message> - <message> - <source>Ctrl+E, R</source> - <translation type="vanished">Ctrl+E, R</translation> - </message> - <message> - <source>Meta+E, Meta+V</source> - <translation type="vanished">Meta+E, Meta+V</translation> - </message> - <message> - <source>Ctrl+E, Ctrl+V</source> - <translation type="vanished">Ctrl+E, Ctrl+V</translation> - </message> - <message> - <source>Meta+E, Meta+W</source> - <translation type="vanished">Meta+E, Meta+W</translation> - </message> - <message> - <source>Ctrl+E, Ctrl+W</source> - <translation type="vanished">Ctrl+E, Ctrl+W</translation> - </message> - <message> - <source>Copy &Line</source> - <translation type="vanished">Skopiuj &linię</translation> - </message> - <message> - <source>Ctrl+Ins</source> - <translation type="vanished">Ctrl+Ins</translation> - </message> - <message> - <source>Fold</source> - <translation type="vanished">Zwiń</translation> - </message> - <message> - <source>Unfold</source> - <translation type="vanished">Rozwiń</translation> - </message> - <message> - <source>Meta+0</source> - <translation type="vanished">Meta+0</translation> - </message> - <message> - <source>Ctrl+]</source> - <translation type="vanished">Ctrl+]</translation> - </message> - <message> - <source>Go to Block Start with Selection</source> - <translation type="vanished">Zaznacz do początku bloku</translation> - </message> - <message> - <source>Ctrl+{</source> - <translation type="vanished">Ctrl+{</translation> - </message> - <message> - <source>Go to Block End with Selection</source> - <translation type="vanished">Zaznacz do końca bloku</translation> - </message> - <message> - <source>Ctrl+}</source> - <translation type="vanished">Ctrl+}</translation> - </message> - <message> - <source>Select Block Up</source> - <translation type="vanished">Zaznacz zewnętrzny blok</translation> - </message> - <message> - <source>Ctrl+U</source> - <translation type="vanished">Ctrl+U</translation> - </message> - <message> - <source>Select Block Down</source> - <translation type="vanished">Zaznacz wewnętrzny blok</translation> - </message> - <message> - <source>Move Line Up</source> - <translation type="vanished">Przenieś linię w górę</translation> - </message> - <message> - <source>Ctrl+Shift+Up</source> - <translation type="vanished">Ctrl+Shift+Up</translation> - </message> - <message> - <source>Move Line Down</source> - <translation type="vanished">Przenieś linię w dół</translation> - </message> - <message> - <source>Ctrl+Shift+Down</source> - <translation type="vanished">Ctrl+Shift+Down</translation> - </message> - <message> - <source>Copy Line Up</source> - <translation type="vanished">Skopiuj linię i wstaw powyżej</translation> - </message> - <message> - <source>Ctrl+Alt+Up</source> - <translation type="vanished">Ctrl+Alt+Up</translation> - </message> - <message> - <source>Copy Line Down</source> - <translation type="vanished">Skopiuj linię i wstaw poniżej</translation> - </message> - <message> - <source>Ctrl+Alt+Down</source> - <translation type="vanished">Ctrl+Alt+Down</translation> - </message> - <message> - <source>Join Lines</source> - <translation type="vanished">Złącz linie</translation> - </message> - <message> - <source>Ctrl+J</source> - <translation type="vanished">Ctrl+J</translation> - </message> - <message> - <source>Insert Line Above Current Line</source> - <translation type="vanished">Wstaw linię ponad bieżącą linią</translation> - </message> - <message> - <source>Ctrl+Shift+Return</source> - <translation type="vanished">Ctrl+Shift+Return</translation> - </message> - <message> - <source>Insert Line Below Current Line</source> - <translation type="vanished">Wstaw linię pod bieżącą linią</translation> - </message> - <message> - <source>Ctrl+Return</source> - <translation type="vanished">Ctrl+Return</translation> - </message> - <message> - <source>Uppercase Selection</source> - <translation type="vanished">Zastąp wielkimi literami</translation> - </message> - <message> - <source>Alt+Shift+U</source> - <translation type="vanished">Alt+Shift+U</translation> - </message> - <message> - <source>Meta+Shift+U</source> - <translation type="vanished">Meta+Shift+U</translation> - </message> - <message> - <source>Lowercase Selection</source> - <translation type="vanished">Zastąp małymi literami</translation> - </message> - <message> - <source>Alt+U</source> - <translation type="vanished">Alt+U</translation> - </message> - <message> - <source>Meta+U</source> - <translation type="vanished">Meta+U</translation> - </message> - <message> - <source>Paste from Clipboard History</source> - <translation type="vanished">Wklej z historii schowka</translation> - </message> - <message> - <source>Ctrl+Shift+V</source> - <translation type="vanished">Ctrl+Shift+V</translation> - </message> - <message> - <source>Indent</source> - <translation type="vanished">Dodaj wcięcie</translation> - </message> - <message> - <source>Unindent</source> - <translation type="vanished">Usuń wcięcie</translation> - </message> - <message> - <source>Follow Symbol Under Cursor</source> - <translation type="vanished">Podąż za symbolem pod kursorem</translation> - </message> - <message> - <source>Follow Symbol Under Cursor in Next Split</source> - <translation type="vanished">Podąż za symbolem pod kursorem w sąsiadującym oknie</translation> - </message> - <message> - <source>Meta+E, F2</source> - <translation type="vanished">Meta+E, F2</translation> - </message> - <message> - <source>Ctrl+E, F2</source> - <translation type="vanished">Ctrl+E, F2</translation> - </message> - <message> - <source>Jump To File Under Cursor</source> - <translation type="vanished">Skocz do pliku pod kursorem</translation> - </message> - <message> - <source>Go to Line Start</source> - <translation type="vanished">Przejdź do początku linii</translation> - </message> - <message> - <source>Go to Line End</source> - <translation type="vanished">Przejdź do końca linii</translation> - </message> - <message> - <source>Go to Next Line</source> - <translation type="vanished">Przejdź do następnej linii</translation> - </message> - <message> - <source>Go to Previous Line</source> - <translation type="vanished">Przejdź do poprzedniej linii</translation> - </message> - <message> - <source>Go to Previous Character</source> - <translation type="vanished">Przejdź do poprzedniego znaku</translation> - </message> - <message> - <source>Go to Next Character</source> - <translation type="vanished">Przejdź do następnego znaku</translation> - </message> - <message> - <source>Go to Previous Word</source> - <translation type="vanished">Przejdź do poprzedniego słowa</translation> - </message> - <message> - <source>Go to Next Word</source> - <translation type="vanished">Przejdź do następnego słowa</translation> - </message> - <message> - <source>Go to Previous Word Camel Case</source> - <translation type="vanished">Przejdź do poprzedniego słowa w zbitce Camel Case</translation> - </message> - <message> - <source>Go to Next Word Camel Case</source> - <translation type="vanished">Przejdź do następnego słowa w zbitce Camel Case</translation> - </message> - <message> - <source>Go to Line Start with Selection</source> - <translation type="vanished">Zaznacz do początku linii</translation> - </message> - <message> - <source>Go to Line End with Selection</source> - <translation type="vanished">Zaznacz do końca linii</translation> - </message> - <message> - <source>Go to Next Line with Selection</source> - <translation type="vanished">Zaznacz do następnej linii</translation> - </message> - <message> - <source>Go to Previous Line with Selection</source> - <translation type="vanished">Zaznacz do poprzedniej linii</translation> - </message> - <message> - <source>Go to Previous Character with Selection</source> - <translation type="vanished">Zaznacz do poprzedniego znaku</translation> - </message> - <message> - <source>Go to Next Character with Selection</source> - <translation type="vanished">Zaznacz do następnego znaku</translation> - </message> - <message> - <source>Go to Previous Word with Selection</source> - <translation type="vanished">Zaznacz do poprzedniego słowa</translation> - </message> - <message> - <source>Go to Next Word with Selection</source> - <translation type="vanished">Zaznacz do następnego słowa</translation> - </message> - <message> - <source>Go to Previous Word Camel Case with Selection</source> - <translation type="vanished">Zaznacz do poprzedniego słowa w zbitce Camel Case</translation> - </message> - <message> - <source>Go to Next Word Camel Case with Selection</source> - <translation type="vanished">Zaznacz do następnego słowa w zbitce Camel Case</translation> - </message> - <message> <source><line>:<column></source> <translation><linia>:<kolumna></translation> </message> @@ -10966,30 +9083,6 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <context> <name>TextEditor::Internal::TextEditorPlugin</name> <message> - <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="vanished">Tworzy plik tekstowy. Domyślnym rozszerzeniem pliku jest <tt>.txt</tt>. Istnieje możliwość podania innego rozszerzenia jako część nazwy pliku.</translation> - </message> - <message> - <source>Text File</source> - <translation type="vanished">Plik tekstowy</translation> - </message> - <message> - <source>General</source> - <translation type="vanished">Ogólne</translation> - </message> - <message> - <source>Creates a scratch buffer using a temporary file.</source> - <translation type="vanished">Tworzy brudnopis używając tymczasowego pliku.</translation> - </message> - <message> - <source>Scratch Buffer</source> - <translation type="vanished">Brudnopis</translation> - </message> - <message> - <source>Triggers a completion in this scope</source> - <translation type="vanished">Przełącza uzupełnianie kodu w tym zakresie</translation> - </message> - <message> <source>Ctrl+Space</source> <translation>Ctrl+Space</translation> </message> @@ -10998,10 +9091,6 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <translation>Meta+Space</translation> </message> <message> - <source>Triggers a quick fix in this scope</source> - <translation type="vanished">Uaktywnia w tym zakresie szybką poprawkę</translation> - </message> - <message> <source>Trigger Completion</source> <translation>Rozpocznij uzupełnianie</translation> </message> @@ -11089,6 +9178,14 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos <translation>Nawiasy</translation> </message> <message> + <source>Mismatched Parentheses</source> + <translation>Niedopasowane nawiasy</translation> + </message> + <message> + <source>Displayed when mismatched parentheses, square brackets, or curly brackets are found.</source> + <translation>Wyświetlane, gdy znaleziono niedopasowane nawiasy okrągłe, kwadratowe lub klamrowe.</translation> + </message> + <message> <source>Current Line</source> <translation>Bieżąca linia</translation> </message> @@ -11305,10 +9402,6 @@ Użyte do tekstu, jeśli inne reguły nie mają zastosowania.</translation> <translation>Słowo kluczowe</translation> </message> <message> - <source>Reserved keywords of the programming language.</source> - <translation type="vanished">Zarezerwowane słowa kluczowe języka programowania.</translation> - </message> - <message> <source>Operator</source> <translation>Operator</translation> </message> @@ -11459,58 +9552,20 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <translation>Stosowane do dodanych znaków (w edytorze różnic wyświetlającym zawartość sąsiadująco).</translation> </message> <message> - <source>Behavior</source> - <translation>Zachowanie</translation> - </message> - <message> - <source>Display</source> - <translation>Wyświetlanie</translation> - </message> -</context> -<context> - <name>VcsBase::BaseCheckoutWizard</name> - <message> - <source>Cannot Open Project</source> - <translation type="vanished">Nie można otworzyć projektu</translation> - </message> - <message> - <source>Failed to open project in '%1'.</source> - <translation type="vanished">Nie można otworzyć projektu w "%1".</translation> + <source>Log Change Line</source> + <translation>Linia logu zmian</translation> </message> <message> - <source>Could not find any project files matching (%1) in the directory '%2'.</source> - <translation type="vanished">Nie można odnaleźć żadnych plików z projektami, pasujących do (%1) w katalogu "%2".</translation> + <source>Applied to lines describing changes in VCS log.</source> + <translation>Stosowane do linii opisujących zmiany w logu systemu kontroli wersji.</translation> </message> <message> - <source>The Project Explorer is not available.</source> - <translation type="vanished">Przeglądarka projektów nie jest dostępna.</translation> - </message> - <message> - <source>'%1' does not exist.</source> - <translation type="vanished">"%1" nie istnieje.</translation> - </message> -</context> -<context> - <name>VcsBase::Internal::CheckoutProgressWizardPage</name> - <message> - <source>Checkout</source> - <translation>Kopia robocza</translation> - </message> - <message> - <source>No job running, please abort.</source> - <translation>Brak uruchomionych zadań, przerwij.</translation> - </message> - <message> - <source>Checkout started...</source> - <translation>Rozpoczęto tworzenie kopii roboczej...</translation> - </message> - <message> - <source>Failed.</source> - <translation>Niepoprawnie zakończone.</translation> + <source>Behavior</source> + <translation>Zachowanie</translation> </message> <message> - <source>Succeeded.</source> - <translation>Poprawnie zakończone.</translation> + <source>Display</source> + <translation>Wyświetlanie</translation> </message> </context> <context> @@ -11528,18 +9583,10 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <translation>Alias email</translation> </message> <message> - <source>E-mail</source> - <translation type="vanished">Email</translation> - </message> - <message> <source>Alias</source> <translation>Alias</translation> </message> <message> - <source>Alias e-mail</source> - <translation type="vanished">Alias e-mail</translation> - </message> - <message> <source>Nicknames</source> <translation>Przydomki</translation> </message> @@ -11567,29 +9614,6 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych </message> </context> <context> - <name>VcsBase::VcsBaseOutputWindow</name> - <message> - <source>Open "%1"</source> - <translation type="vanished">Otwórz "%1"</translation> - </message> - <message> - <source>Clear</source> - <translation type="vanished">Wyczyść</translation> - </message> - <message> - <source>Version Control</source> - <translation type="vanished">System kontroli wersji</translation> - </message> - <message> - <source>Executing: %1 %2</source> - <translation type="vanished">Wykonywanie: %1 %2</translation> - </message> - <message> - <source>Executing in %1: %2 %3</source> - <translation type="vanished">Wykonywanie w %1: %2 %3</translation> - </message> -</context> -<context> <name>VcsBase::VcsBaseSubmitEditor</name> <message> <source>Prompt to submit</source> @@ -11628,30 +9652,11 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <translation>Skrypt sprawdzający "%1" zakończył pracę błędem.</translation> </message> <message> - <source>The check script '%1' crashed.</source> - <translation type="vanished">Skrypt sprawdzający "%1" zakończył pracę błędem.</translation> - </message> - <message> - <source>The check script '%1' could not be started: %2</source> - <translation type="vanished">Nie można uruchomić skryptu sprawdzającego "%1": %2</translation> - </message> - <message> - <source>The check script '%1' timed out.</source> - <translation type="vanished">Skrypt sprawdzający "%1" bez odpowiedzi.</translation> - </message> - <message> <source>The check script returned exit code %1.</source> <translation>Skrypt sprawdzający zwrócił kod wyjściowy %1.</translation> </message> </context> <context> - <name>Welcome::Internal::CommunityWelcomePage</name> - <message> - <source>News && Support</source> - <translation type="vanished">Nowiny i wsparcie</translation> - </message> -</context> -<context> <name>BookmarkWidget</name> <message> <source>Delete Folder</source> @@ -11677,14 +9682,6 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <source>Rename Bookmark</source> <translation>Zmień nazwę zakładki</translation> </message> - <message> - <source>Add</source> - <translation type="vanished">Dodaj</translation> - </message> - <message> - <source>Remove</source> - <translation type="vanished">Usuń</translation> - </message> </context> <context> <name>BookmarkManager</name> @@ -11719,92 +9716,29 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <context> <name>HelpViewer</name> <message> - <source>Error 404...</source> - <translation type="vanished">Błąd 404...</translation> - </message> - <message> - <source>The page could not be found!</source> - <translation type="vanished">Nie można odnaleźć strony!</translation> - </message> - <message> - <source><li>Check that you have one or more documentation sets installed.</li></source> - <translation type="vanished"><li>Sprawdź, czy zainstalowałeś przynajmniej jeden zestaw dokumentacji.</li></translation> - </message> - <message> - <source><li>Check that you have installed the appropriate browser plug-in to support the file your loading.</li></source> - <translation type="vanished"><li>Sprawdź, czy zainstalowałeś odpowiednią wtyczkę do przeglądarki, która obsługuje ładowanie tego pliku</li></translation> - </message> - <message> - <source><li>If you try to access a public URL, make sure to have a network connection.</li></source> - <translation type="vanished"><li>Dostęp do publicznego URL: upewnij się, że masz dostęp do sieci.</li></translation> - </message> - <message> - <source><li>If your computer or network is protected by a firewall or proxy, make sure the application is permitted to access the network.</li></source> - <translation type="vanished"><li>Jeśli twój komputer lub sieć są za zaporą sieciową, upewnij się, że aplikacja ma prawo dostępu do sieci.</li></translation> - </message> - <message> <source>Open Link as New Page</source> <translation>Otwórz odsyłacz na nowej stronie</translation> </message> </context> <context> - <name>IndexWindow</name> - <message> - <source>&Look for:</source> - <translation type="vanished">Wy&szukaj:</translation> - </message> - <message> - <source>Open Link</source> - <translation type="vanished">Otwórz odsyłacz</translation> - </message> - <message> - <source>Open Link as New Page</source> - <translation type="vanished">Otwórz odsyłacz na nowej stronie</translation> - </message> -</context> -<context> <name>MimeType</name> <message> <source>CMake Project file</source> <translation>Plik projektu CMake</translation> </message> <message> - <source>C Source file</source> - <translation>Plik źródłowy C</translation> - </message> - <message> - <source>C Header file</source> - <translation>Plik nagłówkowy C</translation> - </message> - <message> - <source>C++ Header file</source> - <translation>Plik nagłówkowy C++</translation> - </message> - <message> <source>C++ header</source> <translation>Plik nagłówkowy C++</translation> </message> <message> - <source>C++ Source file</source> - <translation>Plik źródłowy C++</translation> - </message> - <message> <source>C++ source code</source> <translation>Kod źródłowy C++</translation> </message> <message> - <source>Objective-C source code</source> - <translation>Kod źródłowy Objective-C</translation> - </message> - <message> <source>CVS submit template</source> <translation>Szablon wrzucanych zmian CVS</translation> </message> <message> - <source>Qt Designer file</source> - <translation>Plik Qt Designer</translation> - </message> - <message> <source>Generic Qt Creator Project file</source> <translation>Ogólny plik projektu Qt Creator</translation> </message> @@ -11821,10 +9755,22 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <translation>Ogólny plik z konfiguracją projektu</translation> </message> <message> + <source>WebP Image file</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Perforce submit template</source> <translation>Szablon wrzucanych zmian Perforce</translation> </message> <message> + <source>Python source file without console</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Qt Creator Python project file</source> + <translation type="unfinished"></translation> + </message> + <message> <source>QML file</source> <translation>Plik QML</translation> </message> @@ -11837,24 +9783,24 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <translation>Plik nagłówkowy projektu Qt</translation> </message> <message> - <source>message catalog</source> - <translation>katalog komunikatów</translation> + <source>ClearCase submit template</source> + <translation>Szablon wrzucanych zmian ClearCase</translation> </message> <message> - <source>Qt Script file</source> - <translation>Plik ze skryptem Qt</translation> + <source>C source code</source> + <translation>Kod źródłowy C</translation> </message> <message> - <source>Java Source file</source> - <translation>Plik źródłowy Java</translation> + <source>NVIDIA CUDA C source code</source> + <translation>Kod źródłowy NVIDIA CUDA C</translation> </message> <message> - <source>Automake based Makefile</source> - <translation type="unfinished"></translation> + <source>C header</source> + <translation>Plik nagłówkowy C</translation> </message> <message> - <source>ClearCase submit template</source> - <translation>Szablon wrzucanych zmian ClearCase</translation> + <source>Qt MOC file</source> + <translation>Plik Qt MOC</translation> </message> <message> <source>Objective-C++ source code</source> @@ -11889,62 +9835,6 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <translation>Plik geometry shadera GLSL/ES</translation> </message> <message> - <source>BMP image</source> - <translation>Plik graficzny BMP</translation> - </message> - <message> - <source>GIF image</source> - <translation>Plik graficzny GIF</translation> - </message> - <message> - <source>ICO image</source> - <translation>Plik graficzny ICO</translation> - </message> - <message> - <source>JPEG image</source> - <translation>Plik graficzny JPEG</translation> - </message> - <message> - <source>MNG video</source> - <translation>Plik wideo MNG</translation> - </message> - <message> - <source>PBM image</source> - <translation>Plik graficzny PBM</translation> - </message> - <message> - <source>PGM image</source> - <translation>Plik graficzny PGM</translation> - </message> - <message> - <source>PNG image</source> - <translation>Plik graficzny PNG</translation> - </message> - <message> - <source>PPM image</source> - <translation>Plik graficzny PPM</translation> - </message> - <message> - <source>SVG image</source> - <translation>Plik graficzny SVG</translation> - </message> - <message> - <source>TIFF image</source> - <translation>Plik graficzny TIFF</translation> - </message> - <message> - <source>XBM image</source> - <translation>Plik graficzny XBM</translation> - </message> - <message> - <source>XPM image</source> - <translation>Plik graficzny XPM</translation> - </message> - <message> - <source>Python Source File</source> - <translation>Plik źródłowy Pythona</translation> - </message> - <message> <source>Qt Project configuration file</source> <translation>Plik z konfiguracją projektu Qt</translation> </message> @@ -11981,6 +9871,18 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <translation type="unfinished"></translation> </message> <message> + <source>Android manifest file</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Linguist translated messages (machine-readable)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Linguist message catalog</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Qt Resource file</source> <translation>Plik z zasobami Qt</translation> </message> @@ -11993,14 +9895,6 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <translation>Plik z listą zadań Qt Creatora</translation> </message> <message> - <source>Plain text document</source> - <translation>Dokument tekstowy</translation> - </message> - <message> - <source>XML document</source> - <translation>Dokument XML</translation> - </message> - <message> <source>Assembler</source> <translation>Asembler</translation> </message> @@ -12008,10 +9902,6 @@ Nie zostanie zastosowane do białych znaków w komentarzach i ciągach znakowych <source>Qt Creator Generic Assembler</source> <translation>Ogólny asembler Qt Creatora</translation> </message> - <message> - <source>Differences between files</source> - <translation>Różnice pomiędzy plikami</translation> - </message> </context> <context> <name>CppTools::Internal::CppLocatorFilter</name> @@ -12260,7 +10150,7 @@ Możesz odłożyć zmiany lub je porzucić.</translation> </message> <message> <source>Log count:</source> - <translation>Licznik loga:</translation> + <translation>Licznik logu:</translation> </message> <message> <source>Timeout:</source> @@ -12419,19 +10309,19 @@ Możesz odłożyć zmiany lub je porzucić.</translation> </message> <message> <source>Always save when leaving subcomponent in bread crumb</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Zawsze zachowuj przy opuszczaniu podkomponentu</translation> </message> <message> <source>QML Emulation Layer</source> - <translation type="unfinished"></translation> + <translation>Emulator QML</translation> </message> <message> <source>If you do not select this checkbox, Qt Quick Designer uses the QML emulation layer (QML Puppet) built with the Qt configured in the build and run kit for the project.</source> - <translation type="unfinished"></translation> + <translation>Jeśli ta opcja nie jest wybrana, Qt Quick Designer używa Emulatora QML (QML Puppet) zbudowanego przy pomocy Qt skonfigurowanego dla projektu.</translation> </message> <message> <source>Always use the QML emulation layer provided by Qt Creator</source> - <translation type="unfinished"></translation> + <translation>Zawsze używaj emulatora QML dostarczonego z Qt Creatorem</translation> </message> </context> <context> @@ -12539,10 +10429,6 @@ Możesz odłożyć zmiany lub je porzucić.</translation> <source>Cleaning "%1"</source> <translation>Czyszczenie %1</translation> </message> - <message> - <source>Cleaning %1</source> - <translation type="vanished">Czyszczenie %1</translation> - </message> </context> <context> <name>ExtensionSystem::PluginDetailsView</name> @@ -12591,6 +10477,34 @@ Możesz odłożyć zmiany lub je porzucić.</translation> <translation>Wtyczka nie jest dostępna na tej platformie.</translation> </message> <message> + <source>Path: %1 +Plugin is not available on this platform.</source> + <translation>Ścieżka: %1 +Wtyczka nie jest dostępna dla tej platformy.</translation> + </message> + <message> + <source>Path: %1 +Plugin is enabled as dependency of an enabled plugin.</source> + <translation>Ścieżka: %1 +Wtyczka jest włączona przez zależność od innej wtyczki.</translation> + </message> + <message> + <source>Path: %1 +Plugin is enabled by command line argument.</source> + <translation>Ścieżka: %1 +Wtyczka jest włączona przez argument linii komend.</translation> + </message> + <message> + <source>Path: %1 +Plugin is disabled by command line argument.</source> + <translation>Ścieżka: %1 +Wtyczka jest wyłączona przez argument linii komend.</translation> + </message> + <message> + <source>Path: %1</source> + <translation>Ścieżka:: %1</translation> + </message> + <message> <source>Plugin is required.</source> <translation>Wymagana wtyczka.</translation> </message> @@ -12598,6 +10512,38 @@ Możesz odłożyć zmiany lub je porzucić.</translation> <source>Load on startup</source> <translation>Załadowany przy uruchomieniu</translation> </message> + <message> + <source>Enabling Plugins</source> + <translation>Włączanie wtyczek</translation> + </message> + <message> + <source>Enabling +%1 +will also enable the following plugins: + +%2</source> + <translation>Włączenie +%1 +włączy również następujące wtyczki: + +%2</translation> + </message> + <message> + <source>Disabling Plugins</source> + <translation>Wyłączanie wtyczek</translation> + </message> + <message> + <source>Disabling +%1 +will also disable the following plugins: + +%2</source> + <translation>Wyłączenie +%1 +wyłączy również następujące wtyczki: + +%2</translation> + </message> </context> <context> <name>QmlJS::Check</name> @@ -12634,13 +10580,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>Utils::FileWizardDialog</name> - <message> - <source>Location</source> - <translation type="vanished">Położenie</translation> - </message> -</context> -<context> <name>Utils::fileDeletedPrompt</name> <message> <source>File has been removed</source> @@ -12715,14 +10654,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <extracomment>Default display name for the cmake make step.</extracomment> <translation>Make</translation> </message> - <message> - <source>Qt Creator needs a compiler set up to build. Configure a compiler in the kit options.</source> - <translation type="vanished">Do budowy Qt Creator wymaga ustawionego kompilatora. Skonfiguruj go w opcjach zestawu narzędzi.</translation> - </message> - <message> - <source>Configuration is faulty. Check the Issues view for details.</source> - <translation type="vanished">Błędna konfiguracja. Sprawdź szczegóły w widoku "Problemy budowania".</translation> - </message> </context> <context> <name>CMakeProjectManager::Internal::MakeStepFactory</name> @@ -12763,22 +10694,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Eksportuj...</translation> </message> <message> - <source>Target Identifier</source> - <translation>Identyfikator celu</translation> - </message> - <message> - <source>Reset to default.</source> - <translation>Przywraca domyślne.</translation> - </message> - <message> - <source>Reset</source> - <translation>Reset</translation> - </message> - <message> - <source>Target:</source> - <translation>Cel:</translation> - </message> - <message> <source>Label</source> <translation>Etykieta</translation> </message> @@ -12850,14 +10765,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Podziel</translation> </message> <message> - <source>Copy Full Path to Clipboard</source> - <translation type="vanished">Skopiuj pełną ścieżkę do schowka</translation> - </message> - <message> - <source>Copy File Name to Clipboard</source> - <translation type="vanished">Skopiuj nazwę pliku do schowka</translation> - </message> - <message> <source>Drag to drag documents between splits</source> <translatorcomment>"drag to drag" doesn't really explain anything- maybe "drag to move"</translatorcomment> <translation>Przeciągnij aby przenieść dokumenty pomiędzy podziałami</translation> @@ -12901,11 +10808,11 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> <message> <source>CVS Command Log Editor</source> - <translation>Edytor loga komend CVS</translation> + <translation>Edytor logu komend CVS</translation> </message> <message> <source>CVS File Log Editor</source> - <translation>Edytor loga plików CVS</translation> + <translation>Edytor logu plików CVS</translation> </message> <message> <source>CVS Annotation Editor</source> @@ -12917,21 +10824,17 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> <message> <source>Git Command Log Editor</source> - <translation>Edytor loga komend Git</translation> + <translation>Edytor logu komend Git</translation> </message> <message> <source>Git File Log Editor</source> - <translation>Edytor loga plików Git</translation> + <translation>Edytor logu plików Git</translation> </message> <message> <source>Git Annotation Editor</source> <translation>Edytor adnotacji Git</translation> </message> <message> - <source>Git Diff Editor</source> - <translation type="vanished">Edytor różnic Git</translation> - </message> - <message> <source>Git Commit Editor</source> <translation>Edytor wrzucanych zmian Git</translation> </message> @@ -12945,7 +10848,7 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> <message> <source>Mercurial File Log Editor</source> - <translation>Edytor loga plików Mercurial</translation> + <translation>Edytor logu plików Mercurial</translation> </message> <message> <source>Mercurial Annotation Editor</source> @@ -12965,7 +10868,7 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> <message> <source>Perforce Log Editor</source> - <translation>Edytor loga plików Perforce</translation> + <translation>Edytor logu plików Perforce</translation> </message> <message> <source>Perforce Diff Editor</source> @@ -12981,19 +10884,15 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> <message> <source>Subversion File Log Editor</source> - <translation>Edytor loga plików Subversion</translation> + <translation>Edytor logu plików Subversion</translation> </message> <message> <source>Subversion Annotation Editor</source> <translation>Edytor adnotacji Subversion</translation> </message> <message> - <source>Subversion Diff Editor</source> - <translation>Edytor różnic Subversion</translation> - </message> - <message> <source>Bazaar File Log Editor</source> - <translation>Edytor loga plików Bazaar</translation> + <translation>Edytor logu plików Bazaar</translation> </message> <message> <source>Bazaar Annotation Editor</source> @@ -13013,7 +10912,7 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> <message> <source>ClearCase File Log Editor</source> - <translation>Edytor loga plików ClearCase</translation> + <translation>Edytor logu plików ClearCase</translation> </message> <message> <source>ClearCase Annotation Editor</source> @@ -13025,13 +10924,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>Cvs::Internal::CvsEditor</name> - <message> - <source>Annotate revision "%1"</source> - <translation type="vanished">Dołącz adnotację do poprawki "%1"</translation> - </message> -</context> -<context> <name>Debugger::Internal::CdbOptionsPage</name> <message> <source>CDB</source> @@ -13050,64 +10942,12 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>Debugger::Internal::SnapshotWindow</name> - <message> - <source>Snapshots</source> - <translation type="vanished">Zrzuty</translation> - </message> -</context> -<context> - <name>Designer::Internal::FormEditorFactory</name> - <message> - <source>This file can only be edited in <b>Design</b> mode.</source> - <translation type="vanished">Ten plik może być modyfikowany jedynie w trybie <b>Design</b>.</translation> - </message> -</context> -<context> - <name>Designer::Internal::FormFileWizardDialog</name> - <message> - <source>Location</source> - <translation type="vanished">Położenie</translation> - </message> -</context> -<context> - <name>FakeVim::Internal::FakeVimExCommandsPage</name> - <message> - <source>Ex Command Mapping</source> - <translation type="vanished">Mapowanie komend Ex</translation> - </message> - <message> - <source>FakeVim</source> - <translation type="vanished">FakeVim</translation> - </message> - <message> - <source>Ex Trigger Expression</source> - <translation type="vanished">Wyzwalacz Ex</translation> - </message> - <message> - <source>Regular expression:</source> - <translation type="vanished">Wyrażenie regularne:</translation> - </message> - <message> - <source>Ex Command</source> - <translation type="vanished">Komenda Ex</translation> - </message> -</context> -<context> <name>GenericProjectManager::Internal::GenericMakeStep</name> <message> <source>Make</source> <translation>Make</translation> </message> <message> - <source>Qt Creator needs a compiler set up to build. Configure a compiler in the kit options.</source> - <translation type="vanished">Do budowy Qt Creator wymaga ustawionego kompilatora. Skonfiguruj go w opcjach zestawu narzędzi.</translation> - </message> - <message> - <source>Configuration is faulty. Check the Issues view for details.</source> - <translation type="vanished">Błędna konfiguracja. Sprawdź szczegóły w widoku "Problemy budowania".</translation> - </message> - <message> <source>Override %1:</source> <translation>Przesłoń %1:</translation> </message> @@ -13121,25 +10961,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>Git::Internal::GitEditor</name> - <message> - <source>Blame %1</source> - <translation type="vanished">Blame %1</translation> - </message> - <message> - <source>Reset</source> - <translation type="vanished">Reset</translation> - </message> - <message> - <source>All changes in working directory will be discarded. Are you sure?</source> - <translation type="vanished">Wszystkie zmiany w katalogu roboczym zostaną utracone. Czy kontynuować?</translation> - </message> - <message> - <source>Revert Change %1</source> - <translation type="vanished">Odwróć zmianę %1</translation> - </message> -</context> -<context> <name>Help</name> <message> <source>Help</source> @@ -13165,42 +10986,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <context> <name>Help::Internal::HelpViewer</name> <message> - <source><title>about:blank</title></source> - <translation type="vanished"><title>o:pusty</title></translation> - </message> - <message> - <source><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>Error 404...</title></head><body><div align="center"><br/><br/><h1>The page could not be found</h1><br/><h3>'%1'</h3></div></body></html></source> - <translation type="vanished"><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>Błąd 404...</title></head><body><div align="center"><br/><br/><h1>Nie można odnaleźć strony</h1><br/><h3>'%1'</h3></div></body></html></translation> - </message> - <message> - <source>Open Link</source> - <translation type="vanished">Otwórz odsyłacz</translation> - </message> - <message> - <source>Open Link as New Page</source> - <translation type="vanished">Otwórz odsyłacz na nowej stronie</translation> - </message> - <message> - <source>Copy Link</source> - <translation type="vanished">Skopiuj odsyłacz</translation> - </message> - <message> - <source>Copy</source> - <translation type="vanished">Skopiuj</translation> - </message> - <message> - <source>Reload</source> - <translation type="vanished">Przeładuj</translation> - </message> - <message> - <source>Error loading: %1</source> - <translation type="vanished">Błąd ładowania: %1</translation> - </message> - <message> - <source>Unknown or unsupported Content!</source> - <translation type="vanished">Nieznana lub nieobsługiwana zawartość!</translation> - </message> - <message> <source>Unknown or unsupported content.</source> <translation>Nieznana lub nieobsługiwana zawartość.</translation> </message> @@ -13224,40 +11009,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>Mercurial::Internal::CloneWizard</name> - <message> - <source>Cloning</source> - <translation>Klonowanie</translation> - </message> - <message> - <source>Cloning started...</source> - <translation>Rozpoczęto klonowanie...</translation> - </message> - <message> - <source>Clones a Mercurial repository and tries to load the contained project.</source> - <translation type="vanished">Klonuje repozytorium Mercurial i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>Mercurial Clone</source> - <translation type="vanished">Klon repozytorium Mercurial</translation> - </message> -</context> -<context> - <name>Mercurial::Internal::CloneWizardPage</name> - <message> - <source>Location</source> - <translation>Położenie</translation> - </message> - <message> - <source>Specify repository URL, checkout directory and path.</source> - <translation>Podaj URL repozytorium, nazwę katalogu z kopią roboczą i ścieżkę do niego.</translation> - </message> - <message> - <source>Clone URL:</source> - <translation>URL klonu:</translation> - </message> -</context> -<context> <name>Mercurial::Internal::CommitEditor</name> <message> <source>Commit Editor</source> @@ -13291,17 +11042,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>Mercurial::Internal::MercurialEditor</name> - <message> - <source>Annotate %1</source> - <translation type="vanished">Dołącz adnotację do %1</translation> - </message> - <message> - <source>Annotate parent revision %1</source> - <translation type="vanished">Dołącz adnotację do poprawki macierzystej "%1"</translation> - </message> -</context> -<context> <name>Mercurial::Internal::MercurialPlugin</name> <message> <source>Me&rcurial</source> @@ -13324,10 +11064,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Pokaż różnice w "%1"</translation> </message> <message> - <source>Alt+H,Alt+D</source> - <translation type="vanished">Alt+H,Alt+D</translation> - </message> - <message> <source>Meta+H,Meta+D</source> <translation>Meta+H,Meta+D</translation> </message> @@ -13340,10 +11076,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Log "%1"</translation> </message> <message> - <source>Alt+H,Alt+L</source> - <translation type="vanished">Alt+H,Alt+L</translation> - </message> - <message> <source>Meta+H,Meta+L</source> <translation>Meta+H,Meta+L</translation> </message> @@ -13356,18 +11088,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Stan "%1"</translation> </message> <message> - <source>Alt+H,Alt+S</source> - <translation type="vanished">Alt+H,Alt+S</translation> - </message> - <message> - <source>Clones a Mercurial repository and tries to load the contained project.</source> - <translation>Klonuje repozytorium Mercurial i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>Mercurial Clone</source> - <translation>Klon repozytorium Mercurial</translation> - </message> - <message> <source>Alt+G,Alt+D</source> <translation>Alt+G,Alt+D</translation> </message> @@ -13452,10 +11172,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Wrzuć...</translation> </message> <message> - <source>Alt+H,Alt+C</source> - <translation type="vanished">Alt+H,Alt+C</translation> - </message> - <message> <source>Meta+H,Meta+C</source> <translation>Meta+H,Meta+C</translation> </message> @@ -13538,8 +11254,8 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Nie podano programu do uruchomienia</translation> </message> <message> - <source>"%1" timed out after %2ms.</source> - <translation>"%1" bez odpowiedzi po %2ms.</translation> + <source>"%1" timed out after %2 ms.</source> + <translation>"%1" bez odpowiedzi po %2 ms.</translation> </message> <message> <source>Unable to launch "%1": %2</source> @@ -13568,19 +11284,8 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>Perforce::Internal::PerforceEditor</name> - <message> - <source>Annotate change list "%1"</source> - <translation type="vanished">Dołącz adnotację do listy zmian "%1"</translation> - </message> -</context> -<context> <name>ProjectExplorer::BaseProjectWizardDialog</name> <message> - <source>Location</source> - <translation type="vanished">Położenie</translation> - </message> - <message> <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 and using only ascii chars.</extracomment> <translation>nienazwany</translation> @@ -13627,13 +11332,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>BuildSettingsPanelFactory</name> - <message> - <source>Build Settings</source> - <translation type="vanished">Ustawienia budowania</translation> - </message> -</context> -<context> <name>BuildSettingsPanel</name> <message> <source>Build Settings</source> @@ -13643,19 +11341,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <context> <name>ProjectExplorer::CustomWizard</name> <message> - <source>Details</source> - <comment>Default short title for custom wizard page to be shown in the progress pane of the wizard.</comment> - <translation type="vanished">Szczegóły</translation> - </message> - <message> - <source>Creates a plain C project using qmake, not using the Qt library.</source> - <translation>Tworzy zwykły projekt C używający qmake, nieużywający biblioteki Qt.</translation> - </message> - <message> - <source>Creates a plain C++ project using qmake, not using the Qt library.</source> - <translation>Tworzy zwykły projekt C++ używający qmake, nieużywający biblioteki Qt.</translation> - </message> - <message> <source>URI:</source> <translation>URI:</translation> </message> @@ -13672,90 +11357,14 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>URL:</translation> </message> <message> - <source>Creates an application descriptor file.</source> - <translation>Tworzy plik deskryptora aplikacji.</translation> - </message> - <message> - <source>Application descriptor</source> - <translation>Deskryptor aplikacji</translation> - </message> - <message> - <source>BlackBerry</source> - <translation>BlackBerry</translation> - </message> - <message> - <source>Creates an Qt5 application descriptor file.</source> - <translation>Tworzy plik deskryptora aplikacji Qt5.</translation> - </message> - <message> - <source>Qt5 Application descriptor</source> - <translation>Deskryptor aplikacji Qt5</translation> - </message> - <message> - <source>Plain C Project</source> - <translation>Zwykły projekt C</translation> - </message> - <message> - <source>Non-Qt Project</source> - <translation>Projekty nieużywające Qt</translation> - </message> - <message> <source>Other Project</source> <translation>Inne projekty</translation> </message> <message> - <source>Creates a plain C project using CMake, not using the Qt library.</source> - <translation>Tworzy zwykły projekt C używający CMake, nieużywający biblioteki Qt.</translation> - </message> - <message> - <source>Plain C Project (CMake Build)</source> - <translation>Zwykły projekt C (używający CMake)</translation> - </message> - <message> - <source>Creates a plain C project using qbs.</source> - <translation>Tworzy zwykły projekt C używający qbs.</translation> - </message> - <message> - <source>Plain C Project (Qbs Build)</source> - <translation>Zwykły projekt C (używający Qbs)</translation> - </message> - <message> - <source>Creates a plain (non-Qt) C++ project using qbs.</source> - <translation>Tworzy zwykły projekt C++ (bez Qt) używający qbs.</translation> - </message> - <message> - <source>Plain C++ Project (Qbs Build)</source> - <translation>Zwykły projekt C++ (używający Qbs)</translation> - </message> - <message> - <source>Plain C++ Project</source> - <translation>Zwykły projekt C++</translation> - </message> - <message> - <source>Creates a plain C++ project using CMake, not using the Qt library.</source> - <translation>Tworzy zwykły projekt C++ używający CMake, nieużywający biblioteki Qt.</translation> - </message> - <message> - <source>Plain C++ Project (CMake Build)</source> - <translation>Zwykły projekt C++ (używający CMake)</translation> - </message> - <message> - <source>Libraries</source> - <translation type="vanished">Biblioteki</translation> - </message> - <message> <source>Qt Creator Plugin</source> <translation>Wtyczka Qt Creatora</translation> </message> <message> - <source>Creates a Cascades application for BlackBerry 10.</source> - <translation>Tworzy aplikację Cascades dla BlackBerry 10.</translation> - </message> - <message> - <source>BlackBerry Cascades Application</source> - <translation>Aplikacja Cascades dla BlackBerry</translation> - </message> - <message> <source>Creates a qmake-based test project for which a code snippet can be entered.</source> <translation>Tworzy testowy projekt, bazujący na qmake, w który można wstawić urywek kodu.</translation> </message> @@ -13764,10 +11373,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Urywek kodu</translation> </message> <message> - <source>Other Projects</source> - <translation type="vanished">Inne projekty</translation> - </message> - <message> <source>Snippet Parameters</source> <translation>Parametry urywka</translation> </message> @@ -13883,13 +11488,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>DependenciesPanel</name> - <message> - <source>Dependencies</source> - <translation type="vanished">Zależności</translation> - </message> -</context> -<context> <name>DependenciesPanelFactory</name> <message> <source>Dependencies</source> @@ -13904,13 +11502,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>EditorSettingsPanel</name> - <message> - <source>Editor</source> - <translation type="vanished">Edytor</translation> - </message> -</context> -<context> <name>ProjectExplorer::Internal::FolderNavigationWidget</name> <message> <source>Open</source> @@ -13921,10 +11512,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Otwórz "%1"</translation> </message> <message> - <source>Open with</source> - <translation type="vanished">Otwórz przy pomocy</translation> - </message> - <message> <source>Open Parent Folder</source> <translation>Otwórz katalog wyżej</translation> </message> @@ -14062,14 +11649,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Biblioteka</translation> </message> <message> - <source>Applications</source> - <translation type="vanished">Aplikacje</translation> - </message> - <message> - <source>Libraries</source> - <translation type="vanished">Biblioteki</translation> - </message> - <message> <source>Import Project</source> <translation>Projekty zaimportowane</translation> </message> @@ -14213,14 +11792,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Nawigator</translation> </message> <message> - <source>Become first sibling of parent (CTRL + Left).</source> - <translation type="vanished">Przenieś jako najbliższe rodzeństwo rodzica (CTRL + Left).</translation> - </message> - <message> - <source>Become child of first sibling (CTRL + Right).</source> - <translation type="vanished">Przenieś jako dziecko najbliższego rodzeństwa (CTRL + Right).</translation> - </message> - <message> <source>Become last sibling of parent (CTRL + Left).</source> <translation>Przenieś jako rodzeństwo rodzica i umieść przed nim (CTRL + Left).</translation> </message> @@ -14339,14 +11910,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <context> <name>QmlJSEditor::Internal::QmlJSEditorPlugin</name> <message> - <source>Creates a JavaScript file.</source> - <translation type="vanished">Tworzy plik JavaScript.</translation> - </message> - <message> - <source>JS File</source> - <translation type="vanished">Plik JS</translation> - </message> - <message> <source>Rename Symbol Under Cursor</source> <translation>Zmień nazwę symbolu pod kursorem</translation> </message> @@ -14367,6 +11930,10 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Przeformatuj plik</translation> </message> <message> + <source>Inspect API for Element Under Cursor</source> + <translation type="unfinished"></translation> + </message> + <message> <source>QML</source> <translation>QML</translation> </message> @@ -14379,22 +11946,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Znajdź użycia</translation> </message> <message> - <source>Creates a QML file with boilerplate code, starting with "import QtQuick 1.1".</source> - <translation type="vanished">Tworzy plik QML z wstępnym kodem rozpoczynającym się od "import QtQuick 1.1".</translation> - </message> - <message> - <source>QML File (Qt Quick 1)</source> - <translation type="vanished">Plik QML (Qt Quick 1)</translation> - </message> - <message> - <source>Creates a QML file with boilerplate code, starting with "import QtQuick 2.0".</source> - <translation type="vanished">Tworzy plik QML z wstępnym kodem rozpoczynającym się od "import QtQuick 2.0".</translation> - </message> - <message> - <source>QML File (Qt Quick 2)</source> - <translation type="vanished">Plik QML (Qt Quick 2)</translation> - </message> - <message> <source>Ctrl+Shift+U</source> <translation>Ctrl+Shift+U</translation> </message> @@ -14429,10 +11980,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <context> <name>QmlProjectManager::Internal::Manager</name> <message> - <source>Failed opening project '%1': Project is not a file</source> - <translation type="vanished">Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik</translation> - </message> - <message> <source>Failed opening project "%1": Project is not a file.</source> <translation>Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik.</translation> </message> @@ -14495,20 +12042,12 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>System</translation> </message> <message> - <source>Qt %1 in PATH (%2)</source> - <translation type="vanished">Qt %1 w PATH (%2)</translation> - </message> - <message> - <source>Qt %1 (%2)</source> - <translation type="vanished">Qt %1 (%2)</translation> - </message> - <message> <source>Qt %{Qt:Version} in PATH (%2)</source> - <translation type="unfinished">Qt %{Qt:Wersja} w PATH (%2)</translation> + <translation>Qt %{Qt:Wersja} w PATH (%2)</translation> </message> <message> <source>Qt %{Qt:Version} (%2)</source> - <translation type="unfinished"></translation> + <translation>Qt %{Qt:Version} dla %2</translation> </message> <message> <source>Qt version is not properly installed, please run make install</source> @@ -14547,22 +12086,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>qmake "%1" nie jest plikiem wykonywalnym.</translation> </message> <message> - <source>Cannot start '%1': %2</source> - <translation type="vanished">Nie można uruchomić "%1": %2</translation> - </message> - <message> - <source>Timeout running '%1' (%2 ms).</source> - <translation type="vanished">Przekroczony czas oczekiwania na odpowiedź od uruchomionego "%1" (%2 ms).</translation> - </message> - <message> - <source>'%1' crashed.</source> - <translation type="vanished">"%1" zakończył pracę błędem.</translation> - </message> - <message> - <source>qmake '%1' is not an executable.</source> - <translation type="vanished">qmake '%1' nie jest plikiem wykonywalnym.</translation> - </message> - <message> <source>No qmlviewer installed.</source> <translation>Brak zainstalowanego "qmlviewer".</translation> </message> @@ -14576,21 +12099,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Brak zainstalowanego "qmlscene".</translation> </message> <message> - <source>Qt Simulator</source> - <comment>Qt Version is meant for Qt Simulator</comment> - <translation>Symulator Qt</translation> - </message> - <message> - <source>Cannot determine the installation path for Qt version '%1'.</source> - <translation type="vanished">Nie można określić ścieżki instalacji Qt wersji "%1".</translation> - </message> - <message> - <source>Building helper(s) with toolchain '%1'... -</source> - <translation type="vanished">Budowanie asystenta z zestawem narzędzi "%1"... -</translation> - </message> - <message> <source>Cannot determine the installation path for Qt version "%1".</source> <translation>Nie można określić ścieżki instalacji Qt w wersji "%1".</translation> </message> @@ -14620,17 +12128,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki </message> </context> <context> - <name>QmakeProjectManager::Internal::BaseQmakeProjectWizardDialog</name> - <message> - <source>Modules</source> - <translation type="vanished">Moduły</translation> - </message> - <message> - <source>Kits</source> - <translation type="vanished">Zestawy narzędzi</translation> - </message> -</context> -<context> <name>QmakeProjectManager::Internal::TestWizard</name> <message> <source>Qt Unit Test</source> @@ -14647,17 +12144,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <source>This wizard generates a Qt Unit Test consisting of a single source file with a test class.</source> <translation>Ten kreator generuje test jednostkowy Qt składający się z pojedynczego pliku źródłowego z klasą testową.</translation> </message> - <message> - <source>Details</source> - <translation type="vanished">Szczegóły</translation> - </message> -</context> -<context> - <name>Subversion::Internal::SubversionEditor</name> - <message> - <source>Annotate revision "%1"</source> - <translation type="vanished">Dołącz adnotację do poprawki "%1"</translation> - </message> </context> <context> <name>TextEditor</name> @@ -14673,18 +12159,10 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>System kontroli wersji</translation> </message> <message> - <source>The file '%1' could not be deleted.</source> - <translation type="vanished">Nie można usunąć pliku "%1".</translation> - </message> - <message> <source>Choose Repository Directory</source> <translation>Wybierz katalog repozytorium</translation> </message> <message> - <source>The directory '%1' is already managed by a version control system (%2). Would you like to specify another directory?</source> - <translation type="vanished">Katalog "%1" jest już zarządzany przez system kontroli wersji (%2). Czy chcesz podać inny katalog?</translation> - </message> - <message> <source>The file "%1" could not be deleted.</source> <translation>Nie można usunąć pliku "%1".</translation> </message> @@ -14705,26 +12183,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <translation>Błąd podczas tworzenia repozytorium</translation> </message> <message> - <source>There is no patch-command configured in the common 'Version Control' settings.</source> - <translation type="vanished">Brak skonfigurowanej komendy "patch" we wspólnych ustawieniach systemów kontroli wersji.</translation> - </message> - <message> - <source>Unable to launch '%1': %2</source> - <translation type="vanished">Nie można uruchomić "%1": %2</translation> - </message> - <message> - <source>A timeout occurred running '%1'</source> - <translation type="vanished">Przekroczony czas oczekiwania na odpowiedź od uruchomionego "%1"</translation> - </message> - <message> - <source>'%1' crashed.</source> - <translation type="vanished">"%1" zakończył pracę błędem.</translation> - </message> - <message> - <source>'%1' failed (exit code %2).</source> - <translation type="vanished">'%1' zakończone błędem (kod wyjściowy %2).</translation> - </message> - <message> <source>A version control repository has been created in %1.</source> <translation>Repozytorium systemu kontroli wersji została utworzona w %1.</translation> </message> @@ -14820,10 +12278,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <context> <name>TextEditSpecifics</name> <message> - <source>Format</source> - <translation type="vanished">Format</translation> - </message> - <message> <source>Text Color</source> <translation>Kolor tekstu</translation> </message> @@ -14831,18 +12285,10 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać ścieżki <source>Selection Color</source> <translation>Kolor selekcji</translation> </message> - <message> - <source>Text Input</source> - <translation type="vanished">Wejście tekstu</translation> - </message> </context> <context> <name>Utils::FancyMainWindow</name> <message> - <source>Locked</source> - <translation type="vanished">Zablokowany</translation> - </message> - <message> <source>Reset to Default Layout</source> <translation>Przywróć domyślne rozmieszczenie</translation> </message> @@ -14914,23 +12360,12 @@ które można ustawić poniżej.</translation> </message> </context> <context> - <name>CppEditor</name> - <message> - <source>C++</source> - <translation type="vanished">C++</translation> - </message> -</context> -<context> <name>Debugger::Internal::PdbEngine</name> <message> <source>Running requested...</source> <translation>Zażądano uruchomienia...</translation> </message> <message> - <source>Unable to start pdb '%1': %2</source> - <translation type="vanished">Nie można rozpocząć pdb "%1": %2</translation> - </message> - <message> <source>Adapter start failed</source> <translation>Nie można uruchomić adaptera</translation> </message> @@ -14939,38 +12374,14 @@ które można ustawić poniżej.</translation> <translation>Błąd Pythona</translation> </message> <message> - <source>'%1' contains no identifier</source> - <translation type="vanished">"%1" nie zawiera identyfikatora</translation> - </message> - <message> - <source>String literal %1</source> - <translation>Literał łańcuchowy %1</translation> - </message> - <message> - <source>Cowardly refusing to evaluate expression '%1' with potential side effects</source> - <translation type="vanished">Tchórzliwa odmowa obliczenia wyrażenia '%1' z możliwymi efektami ubocznymi</translation> - </message> - <message> <source>Pdb I/O Error</source> <translation>Błąd wejścia / wyjścia Pdb</translation> </message> <message> - <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="vanished">Nie można rozpocząć procesu Pdb. Brak programu "%1" albo brak wymaganych uprawnień aby go uruchomić.</translation> - </message> - <message> <source>Unable to start pdb "%1": %2</source> <translation>Nie można rozpocząć pdb "%1": %2</translation> </message> <message> - <source>"%1" contains no identifier</source> - <translation>"%1" nie zawiera identyfikatora</translation> - </message> - <message> - <source>Cowardly refusing to evaluate expression "%1" with potential side effects</source> - <translation>Tchórzliwa odmowa obliczenia wyrażenia "%1" z możliwymi efektami ubocznymi</translation> - </message> - <message> <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>Nie można rozpocząć procesu Pdb. Brak programu "%1" albo brak wymaganych uprawnień aby go uruchomić.</translation> </message> @@ -15005,10 +12416,6 @@ które można ustawić poniżej.</translation> <source>Switch To</source> <translation>Przełącz sesję</translation> </message> - <message> - <source>Switch to</source> - <translation type="vanished">Przełącz sesję</translation> - </message> </context> <context> <name>ProjectExplorer::Internal::TargetSelector</name> @@ -15048,10 +12455,6 @@ które można ustawić poniżej.</translation> <context> <name>QmakeProjectManager::QmakeProject</name> <message> - <source>Evaluating</source> - <translation type="vanished">Ewaluowanie</translation> - </message> - <message> <source>Reading Project "%1"</source> <translation>Odczyt projektu "%1"</translation> </message> @@ -15071,18 +12474,6 @@ które można ustawić poniżej.</translation> <source>The .pro file "%1" could not be parsed.</source> <translation>Plik .pro "%1" nie może zostać sparsowany.</translation> </message> - <message> - <source>The .pro file '%1' does not exist.</source> - <translation type="vanished">Plik projektu "%1" nie istnieje.</translation> - </message> - <message> - <source>The .pro file '%1' is not part of the project.</source> - <translation type="vanished">Plik projektu "%1" nie jest częścią projektu.</translation> - </message> - <message> - <source>The .pro file '%1' could not be parsed.</source> - <translation type="vanished">Plik projektu "%1" nie może zostać sparsowany.</translation> - </message> </context> <context> <name>QmakeProjectManager::QtVersion</name> @@ -15165,14 +12556,6 @@ które można ustawić poniżej.</translation> <source>%1 already exists.</source> <translation>%1 już istnieje.</translation> </message> - <message> - <source>Warning</source> - <translation type="vanished">Ostrzeżenie</translation> - </message> - <message> - <source>Reparenting the component %1 here will cause the component %2 to be deleted. Do you want to proceed?</source> - <translation type="vanished">Przeniesienie komponentu %1 tutaj spowoduje usunięcie komponentu %2. Czy kontynuować?</translation> - </message> </context> <context> <name>QmlDesigner::InvalidArgumentException</name> @@ -15259,10 +12642,6 @@ Identyfikatory muszą rozpoczynać się małą literą.</translation> <translation>Skonwertuj "connect()" do stylu Qt 5</translation> </message> <message> - <source>#include Header File</source> - <translation type="vanished">#include plik nagłówkowy</translation> - </message> - <message> <source>Add Local Declaration</source> <translation>Dodaj lokalną deklarację</translation> </message> @@ -15334,10 +12713,6 @@ Identyfikatory muszą rozpoczynać się małą literą.</translation> <context> <name>GenericProjectManager::Internal::Manager</name> <message> - <source>Failed opening project '%1': Project is not a file</source> - <translation type="vanished">Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik</translation> - </message> - <message> <source>Failed opening project "%1": Project is not a file.</source> <translation>Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik.</translation> </message> @@ -15373,25 +12748,6 @@ Identyfikatory muszą rozpoczynać się małą literą.</translation> </message> </context> <context> - <name>FakeVim::Internal::FakeVimHandler::Private</name> - <message> - <source>Recursive mapping</source> - <translation type="vanished">Mapowanie rekurencyjne</translation> - </message> - <message> - <source>Type Alt-V, Alt-V to quit FakeVim mode.</source> - <translation type="vanished">Naciśnij Alt-V, Alt-V aby wyjść z trybu FakeVim.</translation> - </message> - <message> - <source> [New] </source> - <translation type="vanished"> [Nowy] </translation> - </message> - <message> - <source>Not an editor command: %1</source> - <translation type="vanished">%1 nie jest komendą edytora</translation> - </message> -</context> -<context> <name>ContextPaneWidgetBorderImage</name> <message> <source>Form</source> @@ -15550,10 +12906,6 @@ Identyfikatory muszą rozpoczynać się małą literą.</translation> <context> <name>ClassView::Internal::NavigationWidget</name> <message> - <source>Form</source> - <translation type="vanished">Formularz</translation> - </message> - <message> <source>Show Subprojects</source> <translation>Pokaż podprojekty</translation> </message> @@ -15561,15 +12913,6 @@ Identyfikatory muszą rozpoczynać się małą literą.</translation> <context> <name>Help::Internal::RemoteFilterOptions</name> <message> - <source>Prefix:</source> - <translation>Przedrostek:</translation> - </message> - <message> - <source>Limit to prefix</source> - <translation>Ogranicz aktywność filtru: -aktywny tylko po wpisaniu przedrostka</translation> - </message> - <message> <source>Add</source> <translation>Dodaj</translation> </message> @@ -15581,10 +12924,6 @@ aktywny tylko po wpisaniu przedrostka</translation> <source>Double-click to edit item.</source> <translation>Kliknij dwukrotnie aby zmodyfikować element.</translation> </message> - <message> - <source>Edit Filter Configuration</source> - <translation>Konfiguracja filtra</translation> - </message> </context> <context> <name>ImageViewer::Internal::ImageViewerToolbar</name> @@ -15766,26 +13105,6 @@ aktywny tylko po wpisaniu przedrostka</translation> <context> <name>Utils::SynchronousProcess</name> <message> - <source>The command '%1' finished successfully.</source> - <translation type="vanished">Komenda "%1" poprawnie zakończona.</translation> - </message> - <message> - <source>The command '%1' terminated with exit code %2.</source> - <translation type="vanished">Komenda "%1" zakończona kodem wyjściowym %2.</translation> - </message> - <message> - <source>The command '%1' terminated abnormally.</source> - <translation type="vanished">Komenda "%1" niepoprawnie zakończona.</translation> - </message> - <message> - <source>The command '%1' could not be started.</source> - <translation type="vanished">Komenda "%1" nie może zostać uruchomiona.</translation> - </message> - <message> - <source>The command '%1' did not respond within the timeout limit (%2 ms).</source> - <translation type="vanished">Komenda "%1" nie odpowiedziała w określonym czasie (%2 ms).</translation> - </message> - <message> <source>The command "%1" finished successfully.</source> <translation>Komenda "%1" poprawnie zakończona.</translation> </message> @@ -15802,8 +13121,8 @@ aktywny tylko po wpisaniu przedrostka</translation> <translation>Komenda "%1" nie może zostać uruchomiona.</translation> </message> <message> - <source>The command "%1" did not respond within the timeout limit (%2 ms).</source> - <translation>Komenda "%1" nie odpowiedziała w określonym czasie (%2 ms).</translation> + <source>The command "%1" did not respond within the timeout limit (%2 s).</source> + <translation>Komenda "%1" nie odpowiedziała w określonym czasie (%2 s).</translation> </message> <message> <source>Process not Responding</source> @@ -15818,10 +13137,6 @@ aktywny tylko po wpisaniu przedrostka</translation> <translation>Proces "%1" nie odpowiada.</translation> </message> <message> - <source>The process '%1' is not responding.</source> - <translation type="vanished">Proces "%1" nie odpowiada.</translation> - </message> - <message> <source>Would you like to terminate it?</source> <translation>Czy zakończyć go?</translation> </message> @@ -15836,10 +13151,6 @@ aktywny tylko po wpisaniu przedrostka</translation> <context> <name>Core::Internal::CommandComboBox</name> <message> - <source>Activate %1 Pane</source> - <translation type="vanished">Uaktywnij panel %1</translation> - </message> - <message> <source>Activate %1 View</source> <translation>Uaktywnij widok %1</translation> </message> @@ -15847,18 +13158,6 @@ aktywny tylko po wpisaniu przedrostka</translation> <context> <name>Core::NavigationWidget</name> <message> - <source>Activate %1 Pane</source> - <translation type="vanished">Uaktywnij panel %1</translation> - </message> - <message> - <source>Hide Sidebar</source> - <translation type="vanished">Ukryj boczny pasek</translation> - </message> - <message> - <source>Show Sidebar</source> - <translation type="vanished">Pokaż boczny pasek</translation> - </message> - <message> <source>Activate %1 View</source> <translation>Uaktywnij widok %1</translation> </message> @@ -15872,6 +13171,11 @@ Server list was %2.</source> Lista klienta: %1. Lista serwera: %2.</translation> </message> + <message> + <source>Server requested invalid combination of key exchange and hashing algorithms. Key exchange algorithm list was: %1. +Hashing algorithm list was %2.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>CodePaster::NetworkProtocol</name> @@ -15913,10 +13217,6 @@ Lista serwera: %2.</translation> <translation>Symbole C++</translation> </message> <message> - <source>Searching</source> - <translation type="vanished">Przeszukiwanie</translation> - </message> - <message> <source>Searching for Symbol</source> <translation>Wyszukiwanie symbolu</translation> </message> @@ -16047,18 +13347,6 @@ Flagi: %3</translation> <translation>Przerwij po rzuceniu wyjątku JavaScript</translation> </message> <message> - <source><html><head/><body><p>Determines how the path is specified when setting breakpoints:</p><ul><li><i>Use Engine Default</i>: Preferred setting of the debugger engine.</li><li><i>Use Full Path</i>: Pass full path, avoiding ambiguities should files of the same name exist in several modules. This is the engine default for CDB and LLDB.</li><li><i>Use File Name</i>: Pass the file name only. This is useful when using a source tree whose location does not match the one used when building the modules. It is the engine default for GDB as using full paths can be slow with this engine.</li></ul></body></html></source> - <translation><html><head/><body><p>Określa sposób wyznaczania ścieżki podczas ustawiania pułapek:</p><ul><li><i>Używaj domyślnego silnika</i>: preferowane ustawienie silnika debuggera.</li><li><i>Używaj pełnej ścieżki</i>: przekazuj pełną ścieżkę, aby uniknąć niejednoznaczności, gdy istnieją pliki o tej samej nazwie w różnych modułach. Jest to domyślne ustawienie dla silników CDB i LLDB.</li><li><i>Używaj nazwy pliku</i>: przekazuj tylko nazwę pliku. Jest to pomocne w trakcie używania drzewa źródeł, którego położenie jest inne niż użyte podczas budowania modułu. Jest to domyślne ustawienie silnika GDB, ponieważ używanie pełnych ścieżek może go spowolnić.</li></ul></body></html></translation> - </message> - <message> - <source>Specifying the module (base name of the library or executable) -for function or file type breakpoints can significantly speed up -debugger start-up times (CDB, LLDB).</source> - <translation>Podanie modułu (nazwy bazowej biblioteki lub pliku wykonywalnego) -dla funkcji bądź pułapek może znacząco przyspieszyć uruchomienie -debuggera (CDB, LLDB).</translation> - </message> - <message> <source>Edit Breakpoint Properties</source> <translation>Zmodyfikuj właściwości pułapki</translation> </message> @@ -16103,10 +13391,20 @@ debuggera (CDB, LLDB).</translation> <translation>Tylko &jeden raz:</translation> </message> <message> + <source><p>Determines how the path is specified when setting breakpoints:</p><ul><li><i>Use Engine Default</i>: Preferred setting of the debugger engine.</li><li><i>Use Full Path</i>: Pass full path, avoiding ambiguities should files of the same name exist in several modules. This is the engine default for CDB and LLDB.</li><li><i>Use File Name</i>: Pass the file name only. This is useful when using a source tree whose location does not match the one used when building the modules. It is the engine default for GDB as using full paths can be slow with this engine.</li></ul></source> + <translation><p>Określa sposób wyznaczania ścieżki podczas ustawiania pułapek:</p><ul><li><i>Używaj domyślnego silnika</i>: preferowane ustawienie silnika debuggera.</li><li><i>Używaj pełnej ścieżki</i>: przekazuj pełną ścieżkę, aby uniknąć niejednoznaczności, gdy istnieją pliki o tej samej nazwie w różnych modułach. Jest to domyślne ustawienie dla silników CDB i LLDB.</li><li><i>Używaj nazwy pliku</i>: przekazuj tylko nazwę pliku. Jest to pomocne w trakcie używania drzewa źródeł, którego położenie jest inne niż użyte podczas budowania modułu. Jest to domyślne ustawienie silnika GDB, ponieważ używanie pełnych ścieżek może go spowolnić.</li></ul></translation> + </message> + <message> <source>Pat&h:</source> <translation>Ś&cieżka:</translation> </message> <message> + <source><p>Specifying the module (base name of the library or executable) for function or file type breakpoints can significantly speed up debugger start-up times (CDB, LLDB).</source> + <translation><p>Podanie modułu (nazwy bazowej biblioteki lub pliku wykonywalnego) +dla funkcji bądź pułapek może znacząco przyspieszyć uruchomienie +debuggera (CDB, LLDB).</translation> + </message> + <message> <source>&Module:</source> <translation>&Moduł:</translation> </message> @@ -16123,12 +13421,6 @@ debuggera (CDB, LLDB).</translation> <translation>Używaj nazwy pliku</translation> </message> <message> - <source>Debugger commands to be executed when the breakpoint is hit. -This feature is only available for GDB.</source> - <translation>Komendy debuggera, które będą wykonane, gdy pułapka zostanie osiągnięta. -Ta funkcja jest dostępna jedynie dla GDB.</translation> - </message> - <message> <source>&Commands:</source> <translation>&Komendy:</translation> </message> @@ -16149,6 +13441,11 @@ Ta funkcja jest dostępna jedynie dla GDB.</translation> <translation>Wyraż&enie:</translation> </message> <message> + <source><p>Debugger commands to be executed when the breakpoint is hit. This feature is only available for GDB.</source> + <translation><p>Komendy debuggera, które będą wykonane, gdy pułapka zostanie osiągnięta. +Ta funkcja jest dostępna jedynie dla GDB.</translation> + </message> + <message> <source>&Message:</source> <translation>K&omunikat:</translation> </message> @@ -16156,10 +13453,6 @@ Ta funkcja jest dostępna jedynie dla GDB.</translation> <context> <name>Debugger::Internal::CdbEngine</name> <message> - <source>The console process '%1' could not be started.</source> - <translation type="vanished">Nie można uruchomić procesu konsolowego "%1".</translation> - </message> - <message> <source>The console process "%1" could not be started.</source> <translation>Nie można uruchomić procesu konsolowego "%1".</translation> </message> @@ -16180,26 +13473,10 @@ Ta funkcja jest dostępna jedynie dla GDB.</translation> <translation>Oddzielne okno</translation> </message> <message> - <source>Image</source> - <translation>Obrazek</translation> - </message> - <message> <source>There is no CDB executable specified.</source> <translation>Brak podanego pliku wykonywalnego CDB.</translation> </message> <message> - <source>CDB crashed</source> - <translation>CDB zakończone błędem</translation> - </message> - <message> - <source>CDB exited (%1)</source> - <translation>CDB zakończył pracę (%1)</translation> - </message> - <message> - <source>Unable to add expression</source> - <translation>Nie można dodać wyrażenia</translation> - </message> - <message> <source>Interrupting is not possible in remote sessions.</source> <translation>Przerywanie nie jest możliwe w zdalnych sesjach.</translation> </message> @@ -16216,8 +13493,12 @@ Ta funkcja jest dostępna jedynie dla GDB.</translation> <translation>"Wybierz widżet do obserwowania": nie obsługiwane w stanie "%1".</translation> </message> <message> - <source>Conditional breakpoint %1 (%2) in thread %3 triggered, examining expression '%4'.</source> - <translation type="vanished">Osiągnięto pułapkę warunkową %1 (%2) w wątku %3, sprawdzanie wyrażenia "%4".</translation> + <source>Internal error: Invalid start parameters passed for the CDB engine.</source> + <translation>Błąd wewnętrzny: niepoprawny parametr startowy przekazany do silnika CDB.</translation> + </message> + <message> + <source>Unsupported CDB host system.</source> + <translation type="unfinished"></translation> </message> <message> <source>Malformed stop response received.</source> @@ -16228,6 +13509,10 @@ Ta funkcja jest dostępna jedynie dla GDB.</translation> <translation>Przełączanie do głównego wątku...</translation> </message> <message> + <source>Module loaded: </source> + <translation>Załadowany moduł:</translation> + </message> + <message> <source>Value %1 obtained from evaluating the condition of breakpoint %2, stopping.</source> <translation>Wartość %1 otrzymana po przetworzeniu warunku pułapki %2, zatrzymano.</translation> </message> @@ -16239,10 +13524,6 @@ Ta funkcja jest dostępna jedynie dla GDB.</translation> <source>"Select Widget to Watch": Please stop the application first.</source> <translation>"Wybierz widżet do obserwowania": Najpierw zatrzymaj aplikację.</translation> </message> - <message> - <source>"Select Widget to Watch": Not supported in state '%1'.</source> - <translation type="vanished">"Wybierz widżet do obserwowania": Nie obsługiwane w stanie "%1".</translation> - </message> </context> <context> <name>Debugger::Internal::CacheDirectoryDialog</name> @@ -16267,214 +13548,9 @@ Ta funkcja jest dostępna jedynie dla GDB.</translation> <translation>Nie można utworzyć katalogu "%1".</translation> </message> <message> - <source>A file named '%1' already exists.</source> - <translation type="vanished">Plik o nazwie "%1" już istnieje.</translation> - </message> - <message> <source>Cannot Create</source> <translation>Nie można utworzyć</translation> </message> - <message> - <source>The folder '%1' could not be created.</source> - <translation type="vanished">Nie można utworzyć katalogu "%1".</translation> - </message> -</context> -<context> - <name>Debugger::DebuggerEngine</name> - <message> - <source>Launching</source> - <translation type="vanished">Uruchamianie</translation> - </message> - <message> - <source>Setup failed.</source> - <translation>Niepoprawna konfiguracja.</translation> - </message> - <message> - <source>Loading finished.</source> - <translation>Zakończono ładowanie.</translation> - </message> - <message> - <source>Run failed.</source> - <translation>Nieudane uruchomienie.</translation> - </message> - <message> - <source>Running.</source> - <translation>Uruchomiono.</translation> - </message> - <message> - <source>Run requested...</source> - <translation>Zażądano uruchomienia...</translation> - </message> - <message> - <source>This debugger cannot handle user input.</source> - <translation>Ten debugger nie obsługuje poleceń wejściowych użytkownika.</translation> - </message> - <message> - <source>Data breakpoint %1 (%2) at %3 triggered.</source> - <translation>Osiągnięto pułapkę warunkową %1 (%2) przy %3.</translation> - </message> - <message> - <source>Internal data breakpoint %1 at %2 triggered.</source> - <translation>Osiągnięto wewnętrzną pułapkę warunkową %1 przy %2.</translation> - </message> - <message> - <source>Data breakpoint %1 (%2) at %3 in thread %4 triggered.</source> - <translation>Osiągnięto pułapkę warunkową %1 (%2) przy %3 w wątku %4.</translation> - </message> - <message> - <source>Internal data breakpoint %1 at %2 in thread %3 triggered.</source> - <translation>Osiągnięto wewnętrzna pułapka warunkowa %1 przy %2 w wątku %3.</translation> - </message> - <message> - <source>Data breakpoint %1 (%2) at 0x%3 triggered.</source> - <translation>Osiągnięto pułapkę warunkową %1 (%2) pod 0x%3.</translation> - </message> - <message> - <source>Internal data breakpoint %1 at 0x%2 triggered.</source> - <translation>Osiągnięto wewnętrzną pułapkę warunkową %1 pod 0x%2.</translation> - </message> - <message> - <source>Data breakpoint %1 (%2) at 0x%3 in thread %4 triggered.</source> - <translation>Osiągnięto pułapkę warunkową %1 (%2) pod 0x%3 w wątku %4.</translation> - </message> - <message> - <source>Internal data breakpoint %1 at 0x%2 in thread %3 triggered.</source> - <translation>Osiągnięto wewnętrzną pułapkę warunkową %1 pod 0x%2 w wątku %3.</translation> - </message> - <message> - <source>Stopped at breakpoint %1 (%2) in thread %3.</source> - <translation>Zatrzymano w pułapce %1 (%2) w wątku %3.</translation> - </message> - <message> - <source>Stopped at internal breakpoint %1 in thread %2.</source> - <translation>Zatrzymano w wewnętrznej pułapce %1 w wątku %2.</translation> - </message> - <message> - <source><Unknown></source> - <comment>name</comment> - <translation><nieznana></translation> - </message> - <message> - <source><Unknown></source> - <comment>meaning</comment> - <translatorcomment>Still not translatable in Polish: unknown meaning of WHAT?</translatorcomment> - <translation><nieznane></translation> - </message> - <message> - <source>Found.</source> - <translation>Znaleziono.</translation> - </message> - <message> - <source>Not found.</source> - <translation>Nie znaleziono.</translation> - </message> - <message> - <source>Section %1: %2</source> - <translation>Sekcja %1: %2</translation> - </message> - <message> - <source>Warning</source> - <translation>Ostrzeżenie</translation> - </message> - <message> - <source>This does not seem to be a "Debug" build. -Setting breakpoints by file name and line number may fail.</source> - <translation>To nie jest wersja debugowa. -Ustawianie pułapek w liniach plików może się nie udać.</translation> - </message> - <message> - <source>Stopped.</source> - <translation>Zatrzymano.</translation> - </message> - <message> - <source>Launching Debugger</source> - <translation>Uruchamianie debuggera</translation> - </message> - <message> - <source>Stopped: "%1"</source> - <translation>Zatrzymano: "%1"</translation> - </message> - <message> - <source>Stopped: %1 (Signal %2).</source> - <translation>Zatrzymano: %1 (sygnał %2).</translation> - </message> - <message> - <source>Stopped in thread %1 by: %2.</source> - <translation>Zatrzymano w wątku %1 przez %2.</translation> - </message> - <message> - <source>Interrupted.</source> - <translation>Przerwano.</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><p>Podproces zatrzymany, ponieważ otrzymał on sygnał z systemu operacyjnego.<p><table><tr><td>Nazwa sygnału: </td><td>%1</td></tr><tr><td>Znaczenie sygnału: </td><td>%2</td></tr></table></translation> - </message> - <message> - <source>Signal received</source> - <translation>Otrzymano sygnał</translation> - </message> - <message> - <source><p>The inferior stopped because it triggered an exception.<p>%1</source> - <translation><p>Podproces zatrzymany z powodu rzuconego wyjątku.<p>%1</translation> - </message> - <message> - <source>Exception Triggered</source> - <translation>Rzucono wyjątek</translation> - </message> - <message> - <source>Taking notice of pid %1</source> - <translation>Zwracanie uwagi na pid %1</translation> - </message> - <message> - <source>Run to Address 0x%1</source> - <translation>Uruchom do adresu 0x%1</translation> - </message> - <message> - <source>Run to Line %1</source> - <translation>Uruchom do linii %1</translation> - </message> - <message> - <source>Jump to Address 0x%1</source> - <translation>Skocz do adresu 0x%1</translation> - </message> - <message> - <source>Jump to Line %1</source> - <translation>Skocz do linii %1</translation> - </message> -</context> -<context> - <name>Debugger::DebuggerPlugin</name> - <message> - <source>Debug</source> - <translation type="vanished">Debug</translation> - </message> - <message> - <source>Option '%1' is missing the parameter.</source> - <translation type="vanished">Brak parametru w opcji "%1".</translation> - </message> - <message> - <source>Only one executable allowed!</source> - <translation type="vanished">Dozwolony jest tylko jeden plik wykonywalny!</translation> - </message> - <message> - <source>The parameter '%1' of option '%2' does not match the pattern <handle>:<pid>.</source> - <translation type="vanished">Parametr "%1" opcji "%2" nie pasuje do wzoru <uchwyt>:<pid>.</translation> - </message> - <message> - <source>Invalid debugger option: %1</source> - <translation type="vanished">Niepoprawna opcja debuggera: %1</translation> - </message> - <message> - <source>Some breakpoints cannot be handled by the debugger languages currently active, and will be ignored. -Affected are breakpoints %1</source> - <translation type="vanished">Niektóre pułapki nie mogą być obsłużone przez aktywne języki debuggera i zostaną zignorowane. -Dotyczy to następujących pułapek: %1</translation> - </message> - <message> - <source>Not enough free ports for QML debugging.</source> - <translation type="vanished">Niewystarczająca ilość wolnych portów do debugowania QML. </translation> - </message> </context> <context> <name>Debugger::DebuggerRunControl</name> @@ -16553,7 +13629,7 @@ Dotyczy to następujących pułapek: %1</translation> </message> <message> <source>Log File</source> - <translation>Plik loga</translation> + <translation>Plik logu</translation> </message> </context> <context> @@ -16570,17 +13646,6 @@ Dotyczy to następujących pułapek: %1</translation> <context> <name>Git::Internal::SettingsPageWidget</name> <message> - <source>Set the environment variable HOME to '%1' -(%2). -This causes msysgit to look for the SSH-keys in that location -instead of its installation directory when run outside git bash.</source> - <translation type="vanished">Ustaw zmienną środowiskową HOME na "%1" -(%2). -Spowoduje to, że msysgit uruchomiony na zewnątrz powłoki git -zacznie poszukiwać kluczy SSH w tym położeniu -zamiast w jego katalogu instalacyjnym.</translation> - </message> - <message> <source>Set the environment variable HOME to "%1" (%2). This causes msysgit to look for the SSH-keys in that location @@ -16600,26 +13665,11 @@ zamiast w jego katalogu instalacyjnym.</translation> <translation>aktualnie ustawiona na "%1"</translation> </message> <message> - <source>currently set to '%1'</source> - <translation type="vanished">aktualnie ustawiona na "%1"</translation> - </message> - <message> <source>Git Repository Browser Command</source> <translation>Komenda przeglądarki repozytorium Git</translation> </message> </context> <context> - <name>Help::Internal::ExternalHelpWindow</name> - <message> - <source>Show Sidebar</source> - <translation type="vanished">Pokazuj boczny pasek</translation> - </message> - <message> - <source>Qt Creator Offline Help</source> - <translation type="vanished">Pomoc offline Qt Creatora</translation> - </message> -</context> -<context> <name>EditorManager</name> <message> <source>Go Back</source> @@ -16935,10 +13985,6 @@ zamiast w jego katalogu instalacyjnym.</translation> <source>Searching for Usages</source> <translation>Wyszukiwanie użyć</translation> </message> - <message> - <source>Searching</source> - <translation type="vanished">Przeszukiwanie</translation> - </message> </context> <context> <name>QmlJSEditor::QuickFix</name> @@ -16953,18 +13999,6 @@ zamiast w jego katalogu instalacyjnym.</translation> <source>Add Library</source> <translation>Dodaj bibliotekę</translation> </message> - <message> - <source>Type</source> - <translation type="vanished">Typ</translation> - </message> - <message> - <source>Details</source> - <translation type="vanished">Szczegóły</translation> - </message> - <message> - <source>Summary</source> - <translation type="vanished">Podsumowanie</translation> - </message> </context> <context> <name>QmakeProjectManager::Internal::LibraryTypePage</name> @@ -17097,39 +14131,6 @@ Adds the library and include paths to the .pro file.</source> </message> </context> <context> - <name>QmakeProjectManager::AbstractMobileApp</name> - <message> - <source>Could not open template file '%1'.</source> - <translation type="vanished">Nie można otworzyć pliku z szablonem "%1".</translation> - </message> -</context> -<context> - <name>QmakeProjectManager::Internal::QtQuickAppWizardDialog</name> - <message> - <source>New Qt Quick Application</source> - <translation>Nowa aplikacja Qt Quick</translation> - </message> - <message> - <source>This wizard generates a Qt Quick Application project.</source> - <translation>Ten kreator generuje projekt aplikacji Qt Quick.</translation> - </message> - <message> - <source>Component Set</source> - <translation type="vanished">Zestaw komponentów</translation> - </message> -</context> -<context> - <name>QmakeProjectManager::Internal::QtQuickAppWizard</name> - <message> - <source>Qt Quick Application</source> - <translation>Aplikacja Qt Quick</translation> - </message> - <message> - <source>Creates a Qt Quick application project that can contain both QML and C++ code.</source> - <translation>Tworzy projekt aplikacji Qt Quick, zawierający kod QML i C++.</translation> - </message> -</context> -<context> <name>TaskList::Internal::StopMonitoringHandler</name> <message> <source>Stop Monitoring</source> @@ -17141,28 +14142,6 @@ Adds the library and include paths to the .pro file.</source> </message> </context> <context> - <name>TaskList::Internal::TaskFileFactory</name> - <message> - <source>Task file reader</source> - <translation type="vanished">Czytnik plików z zadaniami</translation> - </message> - <message> - <source>File Error</source> - <translation type="vanished">Błąd pliku</translation> - </message> -</context> -<context> - <name>TaskList::TaskListPlugin</name> - <message> - <source>Cannot open task file %1: %2</source> - <translation type="vanished">Nie można otworzyć pliku z zadaniem %1: %2</translation> - </message> - <message> - <source>My Tasks</source> - <translation type="vanished">Moje zadania</translation> - </message> -</context> -<context> <name>TextEditor::HighlighterSettingsPage</name> <message> <source>Generic Highlighter</source> @@ -17245,33 +14224,6 @@ Adds the library and include paths to the .pro file.</source> </message> </context> <context> - <name>TextEditor::Internal::Manager</name> - <message> - <source>Registering definitions</source> - <translation type="vanished">Rejestrowanie definicji</translation> - </message> - <message> - <source>Downloading definitions</source> - <translation type="vanished">Pobieranie definicji</translation> - </message> - <message> - <source>Error downloading selected definition(s).</source> - <translation type="vanished">Błąd pobierania wybranych definicji.</translation> - </message> - <message> - <source>Error downloading one or more definitions.</source> - <translation type="vanished">Błąd pobierania jednej lub wielu definicji.</translation> - </message> - <message> - <source>Please check the directory's access rights.</source> - <translation type="vanished">Sprawdź prawa dostępu do katalogu.</translation> - </message> - <message> - <source>Download Error</source> - <translation type="vanished">Błąd pobierania</translation> - </message> -</context> -<context> <name>TextEditor::Internal::OutlineWidgetStack</name> <message> <source>No outline available</source> @@ -17294,25 +14246,14 @@ Adds the library and include paths to the .pro file.</source> </message> </context> <context> - <name>TextEditor::Internal::PlainTextEditorFactory</name> - <message> - <source>A highlight definition was not found for this file. Would you like to try to find one?</source> - <translation type="vanished">Definicja podświetleń nie została znaleziona. Czy chcesz spróbować ją znaleźć?</translation> - </message> - <message> - <source>Show Highlighter Options...</source> - <translation type="vanished">Pokaż opcje podświetlania...</translation> - </message> -</context> -<context> <name>ProjectExplorer::BuildableHelperLibrary</name> <message> <source>Cannot start process: %1</source> <translation>Nie można uruchomić procesu: %1</translation> </message> <message> - <source>Timeout after %1s.</source> - <translation>Bez odpowiedzi po %1s.</translation> + <source>Timeout after %1 s.</source> + <translation>Bez odpowiedzi po %1 s.</translation> </message> <message> <source>The process crashed.</source> @@ -17335,16 +14276,6 @@ Adds the library and include paths to the .pro file.</source> </translation> </message> <message> - <source>Error running '%1' in %2: %3</source> - <translation type="vanished">Błąd uruchamiania "%1" w %2: %3</translation> - </message> - <message> - <source>Building helper '%1' in %2 -</source> - <translation type="vanished">Budowanie asystenta "%1" w %2 -</translation> - </message> - <message> <source>Running %1 %2... </source> <translation>Uruchamianie %1 %2... @@ -17412,8 +14343,8 @@ Przyczyna: %2</translation> <context> <name>QmakeProjectManager::QmlDumpTool</name> <message> - <source>Only available for Qt for Desktop and Qt for Qt Simulator.</source> - <translation>Dostępne jedynie dla wersji Qt Desktop oraz dla Qt Simulator.</translation> + <source>Only available for Qt for Desktop.</source> + <translation>Dostępne jedynie dla wersji Qt Desktop.</translation> </message> <message> <source>Only available for Qt 4.7.1 or newer.</source> @@ -17435,10 +14366,6 @@ Przyczyna: %2</translation> <context> <name>QmlDumpBuildTask</name> <message> - <source>Building helper</source> - <translation type="vanished">Budowanie asystenta</translation> - </message> - <message> <source>Building QML Helpers</source> <translation>Budowanie asystentów QML</translation> </message> @@ -17481,73 +14408,6 @@ Zmiany wrzucone lokalnie nie są wrzucane do głównej gałęzi, dopóki nie dok </message> </context> <context> - <name>Bazaar::Internal::CloneOptionsPanel</name> - <message> - <source>Options</source> - <translation>Opcje</translation> - </message> - <message> - <source>Use existing directory</source> - <translation>Użyj istniejącego katalogu</translation> - </message> - <message> - <source>Stacked</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Standalone</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bind new branch to source location</source> - <translation>Powiąż nową gałąź z położeniem źródeł</translation> - </message> - <message> - <source>Switch checkout</source> - <translation>Przełącz kopię roboczą</translation> - </message> - <message> - <source>Hardlink</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No working-tree</source> - <translation>Bez kopii roboczej</translation> - </message> - <message> - <source>Revision:</source> - <translation>Poprawka:</translation> - </message> - <message> - <source>By default, branch will fail if the target directory exists, but does not already have a control directory. -This flag will allow branch to proceed.</source> - <translatorcomment>Who "does not have"? A branch or the target directory?</translatorcomment> - <translation type="unfinished">Domyślnie, utworzenie gałęzi nie powiedzie się, jeśli docelowy katalog istnieje -a gałąź nie ma katalogu kontrolnego. Opcja ta umożliwia utworzenie gałęzi w takim przypadku.</translation> - </message> - <message> - <source>Creates a stacked branch referring to the source branch. -The new branch will depend on the availability of the source branch for all operations.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Does not use a shared repository, even if available.</source> - <translation>Nie używa dzielonego repozytorium, nawet jeśli jest dostępne.</translation> - </message> - <message> - <source>Switches the checkout in the current directory to the new branch.</source> - <translation>Przełącza kopię roboczą w bieżącym katalogu do nowej gałęzi.</translation> - </message> - <message> - <source>Hard-links working tree files where possible.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Creates a branch without a working-tree.</source> - <translation>Tworzy gałąź bez drzewa roboczego.</translation> - </message> -</context> -<context> <name>Bazaar::Internal::OptionsPage</name> <message> <source>Form</source> @@ -17587,7 +14447,7 @@ The new branch will depend on the availability of the source branch for all oper </message> <message> <source>Log count:</source> - <translation>Licznik loga:</translation> + <translation>Licznik logu:</translation> </message> <message> <source>Timeout:</source> @@ -17817,12 +14677,40 @@ Local pulls are not applied to the master branch.</source> <li>Zastąp selekcję: zastępuje nimi selekcję w bieżącym dokumencie.</li> </ul></body></html></translation> </message> + <message> + <source>Environment:</source> + <translation>Środowisko:</translation> + </message> + <message> + <source>No changes to apply.</source> + <translation>Brak zmian do zastosowania.</translation> + </message> + <message> + <source>Change...</source> + <translation>Zmień...</translation> + </message> </context> <context> <name>Core::VariableChooser</name> <message> - <source>Insert variable</source> - <translation type="vanished">Wstaw zmienną</translation> + <source>Insert Variable</source> + <translation>Wstaw zmienną</translation> + </message> + <message> + <source>Current Value: %1</source> + <translation>Bieżąca wartość: %1</translation> + </message> + <message> + <source>Insert Unexpanded Value</source> + <translation>Wstaw zwiniętą wartość</translation> + </message> + <message> + <source>Insert "%1"</source> + <translation>Wstaw "%1"</translation> + </message> + <message> + <source>Insert Expanded Value</source> + <translation>Wstaw rozwiniętą wartość</translation> </message> <message> <source>Select a variable to insert.</source> @@ -17930,15 +14818,11 @@ Local pulls are not applied to the master branch.</source> <translation>Czytanie fragmentów pochodzących jedynie z wersji 1.1.</translation> </message> <message> - <source>Expected only Property, Method, Signal and Enum object definitions, not '%1'.</source> - <translation type="vanished">Oczekiwano jedynie definicji obiektu Property, Method, Signal lub Enum, a nie "%1".</translation> - </message> - <message> <source>Expected only Property, Method, Signal and Enum object definitions, not "%1".</source> <translation>Oczekiwano jedynie definicji obiektu Property, Method, Signal lub Enum, a nie "%1".</translation> </message> <message> - <source>Expected only name, prototype, defaultProperty, attachedType, exports isSingleton, isCreatable, isComposite and exportMetaObjectRevisions script bindings, not "%1".</source> + <source>Expected only name, prototype, defaultProperty, attachedType, exports, isSingleton, isCreatable, isComposite and exportMetaObjectRevisions script bindings, not "%1".</source> <translation type="unfinished"></translation> </message> <message> @@ -18076,13 +14960,6 @@ Local pulls are not applied to the master branch.</source> </message> </context> <context> - <name>Utils::IpAddressLineEdit</name> - <message> - <source>The IP address is not valid.</source> - <translation type="vanished">Niepoprawny adres IP.</translation> - </message> -</context> -<context> <name>Utils::QtcProcess</name> <message> <source>Error in command line.</source> @@ -18249,13 +15126,6 @@ Local pulls are not applied to the master branch.</source> </message> </context> <context> - <name>Analyzer::Internal::AnalyzerMode</name> - <message> - <source>Analyze</source> - <translation>Analiza</translation> - </message> -</context> -<context> <name>Analyzer::Internal::AnalyzerPlugin</name> <message> <source>Analyzer</source> @@ -18271,27 +15141,8 @@ Local pulls are not applied to the master branch.</source> </message> </context> <context> - <name>Bazaar::Internal::BazaarEditor</name> - <message> - <source>Annotate %1</source> - <translation type="vanished">Dołącz adnotację do %1</translation> - </message> - <message> - <source>Annotate parent revision %1</source> - <translation type="vanished">Dołącz adnotację do poprawki macierzystej "%1"</translation> - </message> -</context> -<context> <name>Bazaar::Internal::BazaarPlugin</name> <message> - <source>Clones a Bazaar branch and tries to load the contained project.</source> - <translation>Klonuje repozytorium Bazaar i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>Bazaar Clone (Or Branch)</source> - <translation>Klon repozytorium (lub gałęzi) Bazaar</translation> - </message> - <message> <source>Bazaar</source> <translation>Bazaar</translation> </message> @@ -18473,40 +15324,6 @@ Local pulls are not applied to the master branch.</source> </message> </context> <context> - <name>Bazaar::Internal::CloneWizard</name> - <message> - <source>Cloning</source> - <translation>Klonowanie</translation> - </message> - <message> - <source>Cloning started...</source> - <translation>Rozpoczęto klonowanie...</translation> - </message> - <message> - <source>Clones a Bazaar branch and tries to load the contained project.</source> - <translation type="vanished">Klonuje repozytorium Bazaar i próbuje załadować zawarty projekt.</translation> - </message> - <message> - <source>Bazaar Clone (Or Branch)</source> - <translation type="vanished">Klon repozytorium Bazaar (albo gałęzi)</translation> - </message> -</context> -<context> - <name>Bazaar::Internal::CloneWizardPage</name> - <message> - <source>Location</source> - <translation>Położenie</translation> - </message> - <message> - <source>Specify repository URL, clone directory and path.</source> - <translation>Podaj URL repozytorium, katalogu klonu i ścieżkę do niego.</translation> - </message> - <message> - <source>Clone URL:</source> - <translation>URL klonu:</translation> - </message> -</context> -<context> <name>Bazaar::Internal::CommitEditor</name> <message> <source>Commit Editor</source> @@ -18530,10 +15347,6 @@ Local pulls are not applied to the master branch.</source> <source>Failed opening project "%1": Project is not a file</source> <translation>Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik</translation> </message> - <message> - <source>Failed opening project '%1': Project is not a file</source> - <translation type="vanished">Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik</translation> - </message> </context> <context> <name>Core::Internal::ExternalToolModel</name> @@ -18566,18 +15379,6 @@ Local pulls are not applied to the master branch.</source> <context> <name>Core::Internal::ExternalToolRunner</name> <message> - <source>Could not find executable for '%1' (expanded '%2')</source> - <translation type="vanished">Nie można znaleźć pliku wykonywalnego dla "%1" (w rozwinięciu "%2")</translation> - </message> - <message> - <source>Starting external tool '%1' %2</source> - <translation type="vanished">Uruchamianie narzędzia zewnętrznego "%1" %2</translation> - </message> - <message> - <source>'%1' finished</source> - <translation type="vanished">Zakończono "%1"</translation> - </message> - <message> <source>Could not find executable for "%1" (expanded "%2")</source> <translation>Nie można znaleźć pliku wykonywalnego dla "%1" (w rozwinięciu "%2")</translation> </message> @@ -18612,8 +15413,8 @@ Local pulls are not applied to the master branch.</source> <translation>Błąd</translation> </message> <message> - <source>Not a valid byte pattern.</source> - <translation>Niepoprawny wzór bajtowy.</translation> + <source>Internal error: Type is invalid</source> + <translation>Błąd wewnętrzny: niepoprawny typ</translation> </message> <message> <source>Dialog</source> @@ -18624,10 +15425,6 @@ Local pulls are not applied to the master branch.</source> <translation>Wartość:</translation> </message> <message> - <source>Type</source> - <translation>Typ</translation> - </message> - <message> <source>String</source> <translation>Ciąg znakowy</translation> </message> @@ -18640,14 +15437,6 @@ Local pulls are not applied to the master branch.</source> <translation>Używaj rekomendowanych</translation> </message> <message> - <source>Start range:</source> - <translation>Początek zakresu:</translation> - </message> - <message> - <source>End range:</source> - <translation>Koniec zakresu:</translation> - </message> - <message> <source>Priority:</source> <translation>Priorytet:</translation> </message> @@ -18655,59 +15444,79 @@ Local pulls are not applied to the master branch.</source> <source><i>Note: Wide range values might impact Qt Creator's performance when opening files.</i></source> <translation><i>Uwaga: Szeroki zakres może wpłynąć na wydajność Qt Creatora podczas otwierania plików.</i></translation> </message> -</context> -<context> - <name>Core::Internal::MimeTypeSettingsModel</name> <message> - <source>MIME Type</source> - <translation>Typ MIME</translation> + <source><html><head/><body><p>MIME magic data is interpreted as defined by the Shared MIME-info Database specification from <a href="http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html">freedesktop.org</a>.<hr/></p></body></html></source> + <translation type="unfinished"></translation> </message> <message> - <source>Handler</source> - <translation>Jednostka obsługująca</translation> + <source>Type:</source> + <translation>Typ:</translation> </message> <message> - <source>Undefined</source> - <translation>Niezdefiniowana</translation> + <source>RegExp</source> + <translation type="unfinished"></translation> </message> <message> - <source>Invalid MIME Type</source> - <translation>Niepoprawny typ MIME</translation> + <source>Host16</source> + <translation type="unfinished"></translation> </message> <message> - <source>Conflicting pattern(s) will be discarded.</source> - <translation>Kolidujące wzory zostaną usunięte.</translation> + <source>Host32</source> + <translation type="unfinished"></translation> </message> - <message numerus="yes"> - <source>%n pattern(s) already in use.</source> - <translation> - <numerusform>%n wzór w użyciu.</numerusform> - <numerusform>%n wzory w użyciu.</numerusform> - <numerusform>%n wzorów w użyciu.</numerusform> - </translation> + <message> + <source>Big16</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Big32</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Little16</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Little32</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mask:</source> + <translation>Maska:</translation> + </message> + <message> + <source>Range start:</source> + <translation>Początek zakresu:</translation> + </message> + <message> + <source>Range end:</source> + <translation>Koniec zakresu:</translation> </message> </context> <context> - <name>Core::Internal::MimeTypeSettingsPrivate</name> + <name>Core::Internal::MimeTypeSettingsModel</name> <message> - <source>Error</source> - <translation>Błąd</translation> + <source>MIME Type</source> + <translation>Typ MIME</translation> </message> <message> - <source>No MIME type selected.</source> - <translation>Nie zaznaczono żadnego typu MIME.</translation> + <source>Handler</source> + <translation>Jednostka obsługująca</translation> </message> <message> - <source>No magic header selected.</source> - <translation>Nie zaznaczono żadnego magicznego nagłówka.</translation> + <source>Undefined</source> + <translation>Niezdefiniowana</translation> </message> +</context> +<context> + <name>Core::Internal::MimeTypeSettingsPrivate</name> <message> - <source>MIME Types</source> - <translation>Typy MIME</translation> + <source>Reset MIME Types</source> + <translation>Zresetuj typy MIME</translation> </message> <message> - <source>Changes will take effect in the next time you start Qt Creator.</source> - <translation>Zmiany zostaną zastosowana przy ponownym uruchomieniu Qt Creatora.</translation> + <source>Changes will take effect after Qt Creator restart.</source> + <translation>Zmiany zostaną zastosowane przy ponownym uruchomieniu Qt Creatora.</translation> </message> </context> <context> @@ -18767,10 +15576,12 @@ do systemu kontroli wersji (%2)?</translation> <message> <source>Could not add the file %1 -to version control (%2)</source> +to version control (%2) +</source> <translation>Nie można dodać pliku %1 -do systemu kontroli wersji (%2)</translation> +do systemu kontroli wersji (%2) +</translation> </message> <message> <source>Could not add the following files to version control (%1) @@ -18780,17 +15591,6 @@ do systemu kontroli wersji (%2)</translation> </message> </context> <context> - <name>CppEditor::Internal::CPPEditorWidget</name> - <message> - <source>Sort Alphabetically</source> - <translation type="vanished">Posortuj alfabetycznie</translation> - </message> - <message> - <source>&Refactor</source> - <translation type="vanished">&Refaktoryzacja</translation> - </message> -</context> -<context> <name>CppEditor::Internal::CppOutlineTreeView</name> <message> <source>Expand All</source> @@ -18966,10 +15766,6 @@ do systemu kontroli wersji (%2)</translation> <translation>Ustaw komunikat pod 0x%1...</translation> </message> <message> - <source>Start '%1' and break at function 'main()'</source> - <translation type="vanished">Rozpocznij "%1" i zatrzymaj na funkcji "main()"</translation> - </message> - <message> <source>Save Debugger Log</source> <translation>Zachowaj log debuggera</translation> </message> @@ -19042,22 +15838,6 @@ do systemu kontroli wersji (%2)</translation> <translation>Przenieś do wołającej ramki</translation> </message> <message> - <source>From</source> - <translation type="vanished">Od</translation> - </message> - <message> - <source>To</source> - <translation type="vanished">Do</translation> - </message> - <message> - <source>Flags</source> - <translation type="vanished">Flagi</translation> - </message> - <message> - <source>Sections in "%1"</source> - <translation type="vanished">Sekcje w "%1"</translation> - </message> - <message> <source>Error evaluating command line arguments: %1</source> <translation>Błąd podczas przetwarzania argumentów komendy: %1</translation> </message> @@ -19070,10 +15850,6 @@ do systemu kontroli wersji (%2)</translation> <translation>Uruchom i zdebuguj zewnętrzną aplikację...</translation> </message> <message> - <source>Attach to Remote Debug Server...</source> - <translation>Dołącz do zdalnego serwera debugowego...</translation> - </message> - <message> <source>Attach to QML Port...</source> <translation>Dołącz do portu QML...</translation> </message> @@ -19132,6 +15908,14 @@ Qt Creator nie może się do niego podłączyć.</translation> <translation type="unfinished"></translation> </message> <message> + <source>Attach to Running Debug Server...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start Debug Server Attached to Process...</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Select</source> <translation>Wybierz</translation> </message> @@ -19196,10 +15980,6 @@ Qt Creator nie może się do niego podłączyć.</translation> <translation>Załaduj plik zrzutu...</translation> </message> <message> - <source>Start Remote Debug Server Attached to Process...</source> - <translation>Uruchom zdalny serwer debugowy dołączony do procesu...</translation> - </message> - <message> <source>Attach to Running Application...</source> <translation>Dołącz do uruchomionej aplikacji...</translation> </message> @@ -19280,10 +16060,6 @@ Qt Creator nie może się do niego podłączyć.</translation> <translation>F9</translation> </message> <message> - <source>Apply Changes on Save</source> - <translation type="vanished">Zastosuj zmiany przy zachowywaniu</translation> - </message> - <message> <source>Show Application on Top</source> <translation>Pokazuj aplikację na wierzchu</translation> </message> @@ -19291,30 +16067,6 @@ Qt Creator nie może się do niego podłączyć.</translation> <source>Threads:</source> <translation>Wątki:</translation> </message> - <message> - <source>Symbol</source> - <translation type="vanished">Symbol</translation> - </message> - <message> - <source>Address</source> - <translation type="vanished">Adres</translation> - </message> - <message> - <source>Code</source> - <translation type="vanished">Kod</translation> - </message> - <message> - <source>Section</source> - <translation type="vanished">Sekcja</translation> - </message> - <message> - <source>Name</source> - <translation type="vanished">Nazwa</translation> - </message> - <message> - <source>Symbols in "%1"</source> - <translation type="vanished">Symbole w "%1"</translation> - </message> </context> <context> <name>Debugger::Internal::DebuggerSourcePathMappingWidget</name> @@ -19351,30 +16103,26 @@ Qt Creator nie może się do niego podłączyć.</translation> <translation>Mapowanie ścieżek źródłowych</translation> </message> <message> - <source><html><head/><body><p>Mappings of source file folders to be used in the debugger can be entered here.</p><p>This is useful when using a copy of the source tree at a location different from the one at which the modules where built, for example, while doing remote debugging.</p><p>If source is specified as a regular expression by starting it with an open parenthesis, Qt Creator matches the paths in the ELF with the regular expression to automatically determine the source path.</p><p>Example: <b>(/home/.*/Project)/KnownSubDir -> D:\Project</b> will substitute ELF built by any user to your local project directory.</p></body></html></source> - <translation type="unfinished"><html><head/><body><p>Tu można podać mapowanie katalogów plików źródłowych użytych w debuggerze.</p><p>Jest to przydatne podczas używania kopii drzewa źródeł z innego położenia niż to, w którym moduły były zbudowane, np. podczas zdalnego debugowania.</body></html></translation> + <source><p>Mappings of source file folders to be used in the debugger can be entered here.</p><p>This is useful when using a copy of the source tree at a location different from the one at which the modules where built, for example, while doing remote debugging.</p><p>If source is specified as a regular expression by starting it with an open parenthesis, Qt Creator matches the paths in the ELF with the regular expression to automatically determine the source path.</p><p>Example: <b>(/home/.*/Project)/KnownSubDir -> D:\Project</b> will substitute ELF built by any user to your local project directory.</p></source> + <translation type="unfinished"><p>Tu można podać mapowanie katalogów plików źródłowych użytych w debuggerze.</p><p>Jest to przydatne podczas używania kopii drzewa źródeł z innego położenia niż to, w którym moduły były zbudowane, np. podczas zdalnego debugowania.</p></translation> </message> <message> - <source><html><head/><body><p>Mappings of source file folders to be used in the debugger can be entered here.</p><p>This is useful when using a copy of the source tree at a location different from the one at which the modules where built, for example, while doing remote debugging.</body></html></source> - <translation type="vanished"><html><head/><body><p>Tu można podać mapowanie katalogów plików źródłowych użytych w debuggerze.</p><p>Jest to przydatne podczas używania kopii drzewa źródeł z innego położenia niż to, w którym moduły były zbudowane, np. podczas zdalnego debugowania.</body></html></translation> + <source><p>Add a mapping for Qt's source folders when using an unpatched version of Qt.</source> + <translation type="unfinished"></translation> </message> <message> - <source>Add a mapping for Qt's source folders when using an unpatched version of Qt.</source> - <translation>Dodaj mapowanie dla katalogów źródeł Qt podczas używania niezałatanej wersji Qt.</translation> + <source><p>The source path contained in the debug information of the executable as reported by the debugger</source> + <translation type="unfinished"></translation> </message> <message> - <source>The source path contained in the debug information of the executable as reported by the debugger</source> - <translation>Ścieżka źródłowa, zawarta w informacji debugowej pliku wykonywalnego, zgłoszona przez debugger</translation> + <source><p>The actual location of the source tree on the local machine</source> + <translation type="unfinished"></translation> </message> <message> <source>&Source path:</source> <translation>Ś&cieżka do źródła:</translation> </message> <message> - <source>The actual location of the source tree on the local machine</source> - <translation>Bieżące położenie drzewa źródeł na lokalnej maszynie</translation> - </message> - <message> <source>&Target path:</source> <translation>Ścieżka &docelowa:</translation> </message> @@ -19447,10 +16195,6 @@ Ponowić próbę?</translation> <translation>Debugger QML: Zdalny host zamknął połączenie.</translation> </message> <message> - <source>QML Debugger: Could not connect to service '%1'.</source> - <translation type="vanished">Debugger QML: Nie można nawiązać połączenia z serwisem "%1".</translation> - </message> - <message> <source>JS Source for %1</source> <translation>Źródło JS dla %1</translation> </message> @@ -19467,10 +16211,6 @@ Ponowić próbę?</translation> <translation>Uruchamianie %1 %2</translation> </message> <message> - <source>QML Debugger: Could not connect to service "%1".</source> - <translation>Debugger QML: Nie można nawiązać połączenia z serwisem "%1".</translation> - </message> - <message> <source>Failed to start application</source> <translation>Nie można uruchomić aplikacji</translation> </message> @@ -19507,37 +16247,6 @@ Ponowić próbę?</translation> </message> </context> <context> - <name>Git::Internal::GitShowArgumentsWidget</name> - <message> - <source>oneline</source> - <translation type="vanished">jedna linia</translation> - </message> - <message> - <source>short</source> - <translation type="vanished">krótki</translation> - </message> - <message> - <source>medium</source> - <translation type="vanished">średni</translation> - </message> - <message> - <source>full</source> - <translation type="vanished">pełny</translation> - </message> - <message> - <source>fuller</source> - <translation type="vanished">pełniejszy</translation> - </message> - <message> - <source>email</source> - <translation type="vanished">e-mail</translation> - </message> - <message> - <source>raw</source> - <translation type="vanished">surowy</translation> - </message> -</context> -<context> <name>Git::Internal::GitBlameArgumentsWidget</name> <message> <source>Hide the date of a change from the output.</source> @@ -19564,64 +16273,17 @@ Ponowić próbę?</translation> </message> </context> <context> - <name>GLSLEditor::Internal::GLSLEditorPlugin</name> - <message> - <source>GLSL</source> - <extracomment>GLSL sub-menu in the Tools menu</extracomment> - <translation type="vanished">GLSL</translation> - </message> - <message> - <source>Creates a fragment shader in the OpenGL/ES 2.0 Shading Language (GLSL/ES). Fragment shaders generate the final pixel colors for triangles, points and lines rendered with OpenGL.</source> - <translation type="vanished">Tworzy fragment shader OpenGL/ES 2.0 w języku GLSL/ES. Fragment shadery generują końcowe kolory pikseli trójkątów, punktów i linii renderowanych przez OpenGL.</translation> - </message> - <message> - <source>Fragment Shader (OpenGL/ES 2.0)</source> - <translation type="vanished">Fragment Shader (OpenGL/ES 2.0)</translation> - </message> - <message> - <source>Creates a vertex shader in the OpenGL/ES 2.0 Shading Language (GLSL/ES). Vertex shaders transform the positions, normals and texture co-ordinates of triangles, points and lines rendered with OpenGL.</source> - <translation type="vanished">Tworzy vertex shader OpenGL/ES 2.0 w języku GLSL/ES. Vertex shadery zmieniają transformacje, normalne i współrzędne tekstur trójkątów, punktów i linii renderowanych przez OpenGL.</translation> - </message> - <message> - <source>Vertex Shader (OpenGL/ES 2.0)</source> - <translation type="vanished">Vertex Shader (OpenGL/ES 2.0)</translation> - </message> - <message> - <source>Creates a fragment shader in the Desktop OpenGL Shading Language (GLSL). Fragment shaders generate the final pixel colors for triangles, points and lines rendered with OpenGL.</source> - <translation type="vanished">Tworzy fragment shader Desktop OpenGL w języku GLSL. Fragment shadery generują końcowe kolory pikseli trójkątów, punktów i linii renderowanych przez OpenGL.</translation> - </message> - <message> - <source>Fragment Shader (Desktop OpenGL)</source> - <translation type="vanished">Fragment Shader (Desktop OpenGL)</translation> - </message> - <message> - <source>Creates a vertex shader in the Desktop OpenGL Shading Language (GLSL). Vertex shaders transform the positions, normals and texture co-ordinates of triangles, points and lines rendered with OpenGL.</source> - <translation type="vanished">Tworzy vertex shader Desktop OpenGL w języku GLSL. Vertex shadery zmieniają transformacje, normalne i współrzędne tekstur trójkątów, punktów i linii renderowanych przez OpenGL.</translation> - </message> - <message> - <source>Vertex Shader (Desktop OpenGL)</source> - <translation type="vanished">Vertex Shader (Desktop OpenGL)</translation> - </message> -</context> -<context> - <name>GLSLEditor::GLSLFileWizard</name> - <message> - <source>New %1</source> - <translation type="vanished">Nowy %1</translation> - </message> -</context> -<context> <name>Macros::Internal::MacroLocatorFilter</name> <message> - <source>Macros</source> - <translation>Makra</translation> + <source>Text Editing Macros</source> + <translation>Makra do edycji tekstu</translation> </message> </context> <context> <name>Macros::Internal::MacrosPlugin</name> <message> - <source>&Macros</source> - <translation>&Makra</translation> + <source>Text Editing &Macros</source> + <translation>&Makra do edycji tekstu</translation> </message> <message> <source>Record Macro</source> @@ -19733,14 +16395,14 @@ Ponowić próbę?</translation> </message> </context> <context> - <name>ProjectExplorer::Internal::ToolChainModel</name> + <name>ProjectExplorer::Internal::ToolChainOptionsPage</name> <message> - <source>Auto-detected</source> - <translation>Automatycznie wykryte</translation> + <source>Compilers</source> + <translation>Kompilatory</translation> </message> <message> - <source>Manual</source> - <translation>Ustawione ręcznie</translation> + <source>Add</source> + <translation>Dodaj</translation> </message> <message> <source><nobr><b>ABI:</b> %1</source> @@ -19759,35 +16421,32 @@ Ponowić próbę?</translation> <translation>Typ</translation> </message> <message> - <source>Duplicate Compilers Detected</source> - <translation>Wykryto powielone kompilatory</translation> + <source>Auto-detected</source> + <translation>Automatycznie wykryte</translation> </message> <message> - <source>The following compiler was already configured:<br>&nbsp;%1<br>It was not configured again.</source> - <translation>Następujący kompilator został już skonfigurowany:<br>&nbsp;%1<br>Nie został on ponownie skonfigurowany.</translation> + <source>Manual</source> + <translation>Ustawione ręcznie</translation> </message> <message> - <source>The following compilers were already configured:<br>&nbsp;%1<br>They were not configured again.</source> - <translation>Następujące kompilatory zostały już skonfigurowane:<br>&nbsp;%1<br>Nie zostały one ponownie skonfigurowane.</translation> + <source>Clone</source> + <translation>Sklonuj</translation> </message> -</context> -<context> - <name>ProjectExplorer::Internal::ToolChainOptionsPage</name> <message> - <source>Compilers</source> - <translation>Kompilatory</translation> + <source>Remove</source> + <translation>Usuń</translation> </message> <message> - <source>Add</source> - <translation>Dodaj</translation> + <source>Duplicate Compilers Detected</source> + <translation>Wykryto powielone kompilatory</translation> </message> <message> - <source>Clone</source> - <translation>Sklonuj</translation> + <source>The following compiler was already configured:<br>&nbsp;%1<br>It was not configured again.</source> + <translation>Następujący kompilator został już skonfigurowany:<br>&nbsp;%1<br>Nie został on ponownie skonfigurowany.</translation> </message> <message> - <source>Remove</source> - <translation>Usuń</translation> + <source>The following compilers were already configured:<br>&nbsp;%1<br>They were not configured again.</source> + <translation>Następujące kompilatory zostały już skonfigurowane:<br>&nbsp;%1<br>Nie zostały one ponownie skonfigurowane.</translation> </message> </context> <context> @@ -19866,36 +16525,6 @@ Ponowić próbę?</translation> </message> </context> <context> - <name>JsFileOptionsPage</name> - <message> - <source>Options</source> - <translation type="vanished">Opcje</translation> - </message> - <message> - <source>Stateless library</source> - <translation type="vanished">Biblioteka bezstanowa</translation> - </message> - <message> - <source>Usually each QML component instance has a unique copy of -imported JavaScript libraries. Indicating that a library is -stateless means that a single instance will be shared among -all components. Stateless libraries will not be able to access -QML component instance objects and properties directly.</source> - <translation type="vanished">Zwykle każda instancja komponentu QML posiada unikalną kopię -zaimportowanych bibliotek JavaScript. Biblioteka bezstanowa oznacza, że -pojedyncza instancja będzie dzielona pomiędzy komponentami. Biblioteki -bezstanowe nie będą miały bezpośredniego dostępu do obiektów i właściwości -komponentów QML.</translation> - </message> -</context> -<context> - <name>QmlJSEditor::JsFileWizard</name> - <message> - <source>New %1</source> - <translation type="vanished">Nowy %1</translation> - </message> -</context> -<context> <name>QmlJSEditor::Internal::QmlJSOutlineTreeView</name> <message> <source>Expand All</source> @@ -19932,50 +16561,6 @@ komponentów QML.</translation> </message> </context> <context> - <name>QmakeProjectManager::AbstractMobileAppWizardDialog</name> - <message> - <source>Kits</source> - <translation type="vanished">Zestawy narzędzi</translation> - </message> -</context> -<context> - <name>QmakeProjectManager::Internal::Html5AppWizardDialog</name> - <message> - <source>New HTML5 Application</source> - <translation type="vanished">Nowa aplikacja HTML5</translation> - </message> - <message> - <source>This wizard generates a HTML5 Application project.</source> - <translation type="vanished">Ten kreator generuje projekt aplikacji HTML5.</translation> - </message> - <message> - <source>HTML Options</source> - <translation type="vanished">Opcje HTML</translation> - </message> -</context> -<context> - <name>QmakeProjectManager::Internal::Html5AppWizard</name> - <message> - <source>HTML5 Application</source> - <translation type="vanished">Aplikacja HTML5</translation> - </message> - <message> - <source>Creates an HTML5 application project that can contain both HTML5 and C++ code and includes a WebKit view. - -You can build the application and deploy it on desktop and mobile target platforms.</source> - <translation type="vanished">Tworzy projekt aplikacji HTML5, który może zawierać zarówno kod HTML5 jak i C++, oraz dołącza widok WebKit. - -Aplikację można zbudować i zainstalować na desktopie oraz na platformach mobilnych.</translation> - </message> -</context> -<context> - <name>QmakeProjectManager::Internal::Html5AppWizardOptionsPage</name> - <message> - <source>Select HTML File</source> - <translation type="vanished">Wybierz plik HTML</translation> - </message> -</context> -<context> <name>QmakeProjectManager::Internal::SubdirsProjectWizard</name> <message> <source>Subdirs Project</source> @@ -20007,41 +16592,6 @@ Aplikację można zbudować i zainstalować na desktopie oraz na platformach mob </message> </context> <context> - <name>TextEditor::BaseTextEditorWidget</name> - <message> - <source>CTRL+D</source> - <translation type="vanished">Ctrl+D</translation> - </message> - <message> - <source>Print Document</source> - <translation type="vanished">Wydruk dokumentu</translation> - </message> - <message> - <source>File Error</source> - <translation type="vanished">Błąd pliku</translation> - </message> - <message> - <source><b>Error:</b> Could not decode "%1" with "%2"-encoding. Editing not possible.</source> - <translation type="vanished"><b>Błąd:</b> Nie można odkodować "%1" używając kodowania "%2". Edycja nie jest możliwa.</translation> - </message> - <message> - <source>Select Encoding</source> - <translation type="vanished">Wybierz kodowanie</translation> - </message> - <message> - <source>Delete UTF-8 BOM on Save</source> - <translation type="vanished">Usuwaj UTF-8 BOM przy zachowywaniu</translation> - </message> - <message> - <source>Add UTF-8 BOM on Save</source> - <translation type="vanished">Dodawaj UTF-8 BOM przy zachowywaniu</translation> - </message> - <message> - <source>The text is too large to be displayed (%1 MB).</source> - <translation type="vanished">Tekst jest zbyt obszerny aby mógł zostać wyświetlony (%1 MB).</translation> - </message> -</context> -<context> <name>TextEditor::Internal::PlainTextSnippetProvider</name> <message> <source>Text</source> @@ -20091,25 +16641,6 @@ Aplikację można zbudować i zainstalować na desktopie oraz na platformach mob </message> </context> <context> - <name>VcsBase::VcsBaseClient</name> - <message> - <source>Unable to start process '%1': %2</source> - <translation type="vanished">Nie można rozpocząć procesu "%1": %2</translation> - </message> - <message> - <source>Unable to start process "%1": %2</source> - <translation>Nie można rozpocząć procesu "%1": %2</translation> - </message> - <message> - <source>Timed out after %1s waiting for the process %2 to finish.</source> - <translation>Przekroczono czas oczekiwania %1s na zakończenie procesu %2.</translation> - </message> - <message> - <source>Working...</source> - <translation>Przetwarzanie...</translation> - </message> -</context> -<context> <name>VcsBase::VcsBaseEditorWidget</name> <message> <source>Annotate "%1"</source> @@ -20120,8 +16651,8 @@ Aplikację można zbudować i zainstalować na desktopie oraz na platformach mob <translation>Skopiuj "%1"</translation> </message> <message> - <source>Describe Change %1</source> - <translation>Opisz zmianę %1</translation> + <source>&Describe Change %1</source> + <translation>&Opisz zmianę %1</translation> </message> <message> <source>Send to CodePaster...</source> @@ -20140,14 +16671,6 @@ Aplikację można zbudować i zainstalować na desktopie oraz na platformach mob <translation>Nie można odebrać danych.</translation> </message> <message> - <source>Unable to Paste</source> - <translation>Nie można wkleić</translation> - </message> - <message> - <source>Code pasting services are not available.</source> - <translation>Usługi wklejania kodu są niedostępne.</translation> - </message> - <message> <source>Revert Chunk</source> <translation>Odwróć zmiany we fragmencie</translation> </message> @@ -20570,10 +17093,6 @@ if (a && <translation>Usuń</translation> </message> <message> - <source>Clean up</source> - <translation type="vanished">Wyczyść</translation> - </message> - <message> <source>Add...</source> <translation>Dodaj...</translation> </message> @@ -20763,9 +17282,23 @@ With cache simulation, further event counters are enabled: <translation>Konfiguracja</translation> </message> <message> + <source>No version control set on "VcsConfiguration" page.</source> + <extracomment>Do not translate "VcsConfiguration", because it is the id of a page.</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <source>"vcsId" ("%1") is invalid for "VcsConfiguration" page. Possible values are: %2.</source> + <extracomment>Do not translate "VcsConfiguration", because it is the id of a page.</extracomment> + <translation type="unfinished"></translation> + </message> + <message> <source>Please configure <b>%1</b> now.</source> <translation>Skonfiguruj teraz <b>%1</b>.</translation> </message> + <message> + <source>No known version control selected.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FlowSpecifics</name> @@ -21078,22 +17611,10 @@ With cache simulation, further event counters are enabled: <translation type="unfinished"></translation> </message> <message> - <source>Preferred highlight begin - must be smaller than Preferred end.</source> - <translation type="vanished">Oczekiwany początek podświetlenia - musi być mniejszy od oczekiwanego końca.</translation> - </message> - <message> <source>Preferred end</source> <translation>Oczekiwany koniec</translation> </message> <message> - <source>Preferred highlight end - must be larger than Preferred begin.</source> - <translation type="vanished">Oczekiwany koniec - musi być większy od oczekiwanego początku.</translation> - </message> - <message> - <source>Determines whether the highlight is managed by the view.</source> - <translation type="vanished">Określa, czy podświetlenie jest zarządzane przed widok.</translation> - </message> - <message> <source>Interactive</source> <translation>Interaktywny</translation> </message> @@ -21128,22 +17649,6 @@ With cache simulation, further event counters are enabled: <translation>Odmowa usunięcia katalogu domowego.</translation> </message> <message> - <source>Failed to remove directory '%1'.</source> - <translation type="vanished">Nie można usunąć katalogu "%1".</translation> - </message> - <message> - <source>Failed to remove file '%1'.</source> - <translation type="vanished">Nie można usunąć pliku "%1".</translation> - </message> - <message> - <source>Failed to create directory '%1'.</source> - <translation type="vanished">Nie można utworzyć katalogu "%1".</translation> - </message> - <message> - <source>Could not copy file '%1' to '%2'.</source> - <translation type="vanished">Nie można skopiować pliku "%1" do "%2".</translation> - </message> - <message> <source>Failed to remove directory "%1".</source> <translation>Nie można usunąć katalogu "%1".</translation> </message> @@ -21421,25 +17926,10 @@ With cache simulation, further event counters are enabled: </message> </context> <context> - <name>Core::Internal::PromptOverwriteDialog</name> - <message> - <source>Overwrite Existing Files</source> - <translation type="vanished">Nadpisz istniejące pliki</translation> - </message> - <message> - <source>The following files already exist in the folder -%1. -Would you like to overwrite them?</source> - <translation type="vanished">Następujące pliki istnieją już w katalogu -%1. -Czy nadpisać je?</translation> - </message> -</context> -<context> <name>Core::InfoBarDisplay</name> <message> <source>Do Not Show Again</source> - <translation>Nie pokazuj więcej</translation> + <translation>Nie pokazuj ponownie</translation> </message> <message> <source>Close</source> @@ -21485,23 +17975,8 @@ Czy nadpisać je?</translation> </message> </context> <context> - <name>Debugger::Internal::DebuggerToolTipWidget</name> - <message> - <source>Previous</source> - <translation type="vanished">Poprzedni</translation> - </message> -</context> -<context> <name>Debugger::Internal::RegisterMemoryView</name> <message> - <source>Memory at Register '%1' (0x%2)</source> - <translation type="vanished">Pamięć pod adresem "%1" (0x%2)</translation> - </message> - <message> - <source>Register '%1'</source> - <translation type="vanished">Rejestr "%1"</translation> - </message> - <message> <source>Memory at Register "%1" (0x%2)</source> <translation>Pamięć pod adresem "%1" (0x%2)</translation> </message> @@ -21511,38 +17986,8 @@ Czy nadpisać je?</translation> </message> </context> <context> - <name>FakeVim::Internal::FakeVimUserCommandsModel</name> - <message> - <source>Action</source> - <translation type="vanished">Akcja</translation> - </message> - <message> - <source>Command</source> - <translation type="vanished">Komenda</translation> - </message> - <message> - <source>User command #%1</source> - <translation type="vanished">Komenda użytkownika #%1</translation> - </message> -</context> -<context> - <name>FakeVim::Internal::FakeVimUserCommandsPage</name> - <message> - <source>User Command Mapping</source> - <translation type="vanished">Mapa komend użytkownika</translation> - </message> - <message> - <source>FakeVim</source> - <translation type="vanished">FakeVim</translation> - </message> -</context> -<context> <name>ImageViewer::Internal::ImageViewer</name> <message> - <source>Cannot open image file %1.</source> - <translation>Nie można otworzyć pliku graficznego %1.</translation> - </message> - <message> <source>Play Animation</source> <translation>Odtwórz animację</translation> </message> @@ -21623,13 +18068,6 @@ Czy nadpisać je?</translation> </message> </context> <context> - <name>CodeStyleSettingsPanel</name> - <message> - <source>Code Style</source> - <translation type="vanished">Styl kodu</translation> - </message> -</context> -<context> <name>ProjectExplorer::EditorConfiguration</name> <message> <source>Project</source> @@ -21659,56 +18097,16 @@ Czy nadpisać je?</translation> <context> <name>QmlDesigner::NodeInstanceServerProxy</name> <message> - <source>Cannot Start QML Puppet Executable</source> - <translation type="vanished">Nie można uruchomić QML Puppet</translation> - </message> - <message> - <source>The executable of the QML Puppet process (%1) cannot be started. Please check your installation. QML Puppet is a process which runs in the background to render the items.</source> - <translation type="vanished">Nie można uruchomić procesu QML Puppet (%1). Sprawdź swoją instalację. QML Puppet jest procesem uruchamianym w tle w celu renderowania elementów.</translation> - </message> - <message> - <source>Wrong QML Puppet Executable Version</source> - <translation type="vanished">Niepoprawna wersja pliku wykonywalnego QML Puppet</translation> - </message> - <message> - <source>The QML Puppet version is incompatible with the Qt Creator version.</source> - <translation type="vanished">Wersja QML Puppet nie jest kompatybilna z wersją Qt Creatora.</translation> - </message> - <message> - <source>Cannot Find QML Puppet Executable</source> - <translation type="vanished">Nie można odnaleźć QML Puppet</translation> - </message> - <message> - <source>The executable of the QML Puppet process (<code>%1</code>) cannot be found. Check your installation. QML Puppet is a process which runs in the background to render the items.</source> - <translation type="vanished">Nie można odnaleźć procesu QML Puppet (<code>%1</code>). Sprawdź swoją instalację. QML Puppet jest procesem uruchamianym w tle w celu renderowania elementów.</translation> - </message> - <message> - <source>You can build <code>qml2puppet</code> yourself with Qt 5.2.0 or higher. The source can be found in <code>%1</code>.</source> - <translation type="vanished"><code>qml2puppet</code> można zbudować samodzielnie przy użyciu Qt 5.2.0 lub nowszej wersji. Źródła można znaleźć w <code>%1</code>.</translation> - </message> - <message> - <source><code>qml2puppet</code> will be installed to the <code>bin</code> directory of your Qt version. Qt Quick Designer will check the <code>bin</code> directory of the currently active Qt version of your project.</source> - <translation type="vanished"><code>qml2puppet</code> zostanie zainstalowany w katalogu <code>bin</code> w drzewie Qt. Qt Quick Designer sprawdzi katalog <code>bin</code> aktywnej wersji Qt dla projektu.</translation> - </message> - <message> - <source><code>qmlpuppet</code> will be installed to the <code>bin</code> directory of your Qt version. Qt Quick Designer will check the <code>bin</code> directory of the currently active Qt version of your project.</source> - <translation type="vanished"><code>qmlpuppet</code> zostanie zainstalowany w katalogu <code>bin</code> w drzewie Qt. Qt Quick Designer sprawdzi katalog <code>bin</code> aktywnej wersji Qt dla projektu.</translation> - </message> - <message> - <source>QML Puppet Crashed</source> - <translation type="vanished">QML Puppet zakończony błędem</translation> - </message> - <message> <source>Cannot Start QML Emulation Layer (QML Puppet)</source> <translation>Nie można uruchomić emulatora QML (QML Puppet)</translation> </message> <message> <source>The executable of the QML emulation layer (QML Puppet) process cannot be started or does not respond.</source> - <translation type="unfinished"></translation> + <translation>Nie można uruchomić emulatora QML (QML Puppet) lub pozostaje on bez odpowiedzi.</translation> </message> <message> <source>QML Emulation Layer (QML Puppet) Crashed</source> - <translation type="unfinished"></translation> + <translation>Błąd emulatora QML (QML Puppet)</translation> </message> <message> <source>You are recording a puppet stream and the emulations layer crashed. It is recommended to reopen the Qt Quick Designer and start again.</source> @@ -21716,21 +18114,6 @@ Czy nadpisać je?</translation> </message> </context> <context> - <name>QmlJSEditor::Internal::HoverHandler</name> - <message> - <source>Library at %1</source> - <translation type="vanished">Biblioteka w %1</translation> - </message> - <message> - <source>Dumped plugins successfully.</source> - <translation type="vanished">Wtyczki poprawnie zrzucone.</translation> - </message> - <message> - <source>Read typeinfo files successfully.</source> - <translation type="vanished">Pliki typeinfo poprawnie odczytane.</translation> - </message> -</context> -<context> <name>QmlJSTools</name> <message> <source>Code Style</source> @@ -21780,6 +18163,10 @@ Czy nadpisać je?</translation> <translation>Zachowaj stos QML</translation> </message> <message> + <source>Search timeline event notes.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>%1 s</source> <translation>%1 s</translation> </message> @@ -21864,31 +18251,8 @@ Czy kontynuować?</translation> </message> </context> <context> - <name>QmakeProjectManager::QmakeProFileNode</name> - <message> - <source>Error while parsing file %1. Giving up.</source> - <translation>Błąd parsowania pliku %1. Przetwarzanie przerwane.</translation> - </message> - <message> - <source>Could not find .pro file for sub dir "%1" in "%2"</source> - <translation>Nie można odnaleźć pliku .pro w podkatalogu "%1" w "%2"</translation> - </message> - <message> - <source>Could not find .pro file for sub dir '%1' in '%2'</source> - <translation type="vanished">Nie można odnaleźć pliku .pro w podkatalogu "%1" w "%2"</translation> - </message> -</context> -<context> <name>BaseQtVersion</name> <message> - <source>The compiler '%1' (%2) cannot produce code for the Qt version '%3' (%4).</source> - <translation type="vanished">Kompilator "%1" (%2) nie może utworzyć kodu dla wersji Qt "%3" (%4).</translation> - </message> - <message> - <source>The compiler '%1' (%2) may not produce code compatible with the Qt version '%3' (%4).</source> - <translation type="vanished">Kompilator "%1" (%2) nie może utworzyć kodu kompatybilnego z wersją Qt "%3" (%4).</translation> - </message> - <message> <source>The compiler "%1" (%2) cannot produce code for the Qt version "%3" (%4).</source> <translation>Kompilator "%1" (%2) nie może utworzyć kodu dla wersji Qt "%3" (%4).</translation> </message> @@ -21945,12 +18309,12 @@ Czy kontynuować?</translation> <translation>Wymaga Qt 5.3.0 lub nowszej wersji.</translation> </message> <message> - <source>Building Debugging Helpers</source> - <translation>Budowanie asystentów debuggera</translation> + <source>This Qt Version does not contain Qt Quick Compiler.</source> + <translation>Ta wersja Qt nie zawiera kompilatora Qt Quick.</translation> </message> <message> - <source>Building helpers</source> - <translation type="vanished">Budowanie asystentów</translation> + <source>Building Debugging Helpers</source> + <translation>Budowanie asystentów debuggera</translation> </message> </context> <context> @@ -21972,14 +18336,6 @@ Czy kontynuować?</translation> <translation>Czy usunąć wszystkie niepoprawne wersje Qt?<br>Usunięte zostaną:<br><ul><li>%1</li></ul>.</translation> </message> <message> - <source>Building helpers</source> - <translation type="vanished">Budowanie asystentów</translation> - </message> - <message> - <source>Debugging Helper Build Log for '%1'</source> - <translation type="vanished">Log budowania asystenta debuggera dla "%1"</translation> - </message> - <message> <source>Select a qmake Executable</source> <translation>Wskaż plik wykonywalny qmake</translation> </message> @@ -21996,10 +18352,6 @@ Czy kontynuować?</translation> <translation>Nie można dodać pliku wykonywalnego qmake %1: %2</translation> </message> <message> - <source>Select a qmake executable</source> - <translation type="vanished">Wskaż plik wykonywalny qmake</translation> - </message> - <message> <source>This Qt version was already registered as "%1".</source> <translation>Ta wersja Qt została już zarejestrowana jako "%1".</translation> </message> @@ -22037,6 +18389,10 @@ Czy kontynuować?</translation> <translation>Usuń niepoprawne wersje Qt</translation> </message> <message> + <source>Display Name is not unique.</source> + <translation>Widoczna nazwa nie jest unikatowa.</translation> + </message> + <message> <source>No compiler can produce code for this Qt version. Please define one or more compilers.</source> <translation>Żaden kompilator nie może wygenerować kodu dla tej wersji Qt. Zdefiniuj jeden lub więcej kompilatorów.</translation> </message> @@ -22074,13 +18430,6 @@ Czy kontynuować?</translation> </message> </context> <context> - <name>Subversion::Internal::SubversionDiffParameterWidget</name> - <message> - <source>Ignore Whitespace</source> - <translation>Ignoruj białe znaki</translation> - </message> -</context> -<context> <name>TextEditor::BehaviorSettingsPage</name> <message> <source>Global</source> @@ -22122,7 +18471,7 @@ Czy kontynuować?</translation> </message> <message> <source>Load External Log File</source> - <translation>Załaduj zewnętrzny plik loga</translation> + <translation>Załaduj zewnętrzny plik logu</translation> </message> <message> <source>Go back one step in history. This will select the previously selected item.</source> @@ -22133,10 +18482,6 @@ Czy kontynuować?</translation> <translation>Resetuje wszystkie liczniki zdarzeń.</translation> </message> <message> - <source>Load External XML Log File</source> - <translation type="vanished">Załaduj zewnętrzny plik loga XML</translation> - </message> - <message> <source>Request the dumping of profile information. This will update the Callgrind visualization.</source> <translation>Żąda zrzutu informacji i odświeża widok callgrinda.</translation> </message> @@ -22226,19 +18571,15 @@ Czy kontynuować?</translation> </message> <message> <source>Open Callgrind Log File</source> - <translation>Otwórz plik loga Callgrinda</translation> + <translation>Otwórz plik logu Callgrinda</translation> </message> <message> <source>Callgrind Output (callgrind.out*);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <source>Internal Error</source> - <translation>Błąd wewnętrzny</translation> - </message> - <message> - <source>Failed to open file for reading: %1</source> - <translation>Nie można otworzyć pliku do odczytu: %1</translation> + <source>Callgrind: Failed to open file for reading: %1</source> + <translation type="unfinished"></translation> </message> <message> <source>Parsing Profile Data...</source> @@ -22266,10 +18607,6 @@ Czy kontynuować?</translation> <context> <name>Valgrind::Internal::MemcheckErrorView</name> <message> - <source>Copy Selection</source> - <translation>Skopiuj selekcję</translation> - </message> - <message> <source>Suppress Error</source> <translation>Stłum błąd</translation> </message> @@ -22301,12 +18638,12 @@ Czy kontynuować?</translation> <translation>Niepoprawne wywołania "free()"</translation> </message> <message> - <source>Failed to open file for reading: %1</source> - <translation>Nie można otworzyć pliku do odczytu: %1</translation> + <source>Memcheck: Failed to open file for reading: %1</source> + <translation>Memcheck: Nie można otworzyć pliku do odczytu: %1</translation> </message> <message> - <source>Error occurred parsing Valgrind output: %1</source> - <translation>Błąd podczas parsowania komunikatów Valgrind'a: %1</translation> + <source>Memcheck: Error occurred parsing Valgrind output: %1</source> + <translation>Memcheck: Błąd podczas parsowania komunikatów Valgrind'a: %1</translation> </message> <message> <source>Memory Issues</source> @@ -22314,7 +18651,7 @@ Czy kontynuować?</translation> </message> <message> <source>Load External XML Log File</source> - <translation>Załaduj zewnętrzny plik loga XML</translation> + <translation>Załaduj zewnętrzny plik logu XML</translation> </message> <message> <source>Go to previous leak.</source> @@ -22338,23 +18675,12 @@ Czy kontynuować?</translation> </message> <message> <source>Open Memcheck XML Log File</source> - <translation>Otwórz plik XML loga Memchecka</translation> + <translation>Otwórz plik XML logu Memchecka</translation> </message> <message> <source>XML Files (*.xml);;All Files (*)</source> <translation>Pliki XML (*.xml);;Wszystkie pliki (*)</translation> </message> - <message> - <source>Internal Error</source> - <translation>Błąd wewnętrzny</translation> - </message> -</context> -<context> - <name>VcsBase::Internal::CommonSettingsWidget</name> - <message> - <source>Command used for reverting diff chunks.</source> - <translation type="vanished">Komenda użyta do zastosowywania odwrotnych fragmentów w różnicach.</translation> - </message> </context> <context> <name>Welcome::Internal::WelcomeMode</name> @@ -22611,33 +18937,6 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> </message> </context> <context> - <name>Analyzer::AnalyzerManagerPrivate</name> - <message> - <source>&Analyze</source> - <translation>&Analiza</translation> - </message> - <message> - <source>Start</source> - <translation>Uruchom</translation> - </message> - <message> - <source>Stop</source> - <translation>Zatrzymaj</translation> - </message> - <message> - <source>Analyzer Toolbar</source> - <translation>Pasek narzędzi analizatora</translation> - </message> - <message> - <source>An analysis is still in progress.</source> - <translation>Nadal trwa analiza.</translation> - </message> - <message> - <source>No analyzer tool selected.</source> - <translation>Brak wybranego narzędzia analizy.</translation> - </message> -</context> -<context> <name>RemoteLinux::CreateTarStepWidget</name> <message> <source>Ignore missing files</source> @@ -22746,40 +19045,40 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> <translation>Gadatliwy</translation> </message> <message> - <source>Show files changed in each revision</source> - <translation>Pokazuj pliki zmienione w każdej poprawce</translation> + <source>Show files changed in each revision.</source> + <translation type="unfinished"></translation> </message> <message> - <source>Forward</source> - <translation>Do przodu</translation> + <source>Show from oldest to newest.</source> + <translation type="unfinished"></translation> </message> <message> - <source>Show from oldest to newest</source> - <translation>Pokaż od najstarszych do najnowszych</translation> + <source>Include Merges</source> + <translation type="unfinished"></translation> </message> <message> - <source>Include merges</source> - <translation>Włączaj scalenia</translation> + <source>Show merged revisions.</source> + <translation type="unfinished"></translation> </message> <message> - <source>Show merged revisions</source> - <translation>Pokaż scalone poprawki</translation> + <source>Moderately Short</source> + <translation type="unfinished"></translation> </message> <message> - <source>Detailed</source> - <translation>Szczegółowo</translation> + <source>One Line</source> + <translation type="unfinished"></translation> </message> <message> - <source>Moderately short</source> - <translation>Umiarkowanie skrótowo</translation> + <source>GNU Change Log</source> + <translation type="unfinished"></translation> </message> <message> - <source>One line</source> - <translation>W jednej linijce</translation> + <source>Forward</source> + <translation>Do przodu</translation> </message> <message> - <source>GNU ChangeLog</source> - <translation>GNU ChangeLog</translation> + <source>Detailed</source> + <translation>Szczegółowo</translation> </message> </context> <context> @@ -22801,14 +19100,6 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> </translation> </message> <message> - <source>'%1' returned the following error: - -%2</source> - <translation type="vanished">"%1" zwrócił następujący błąd: - -%2</translation> - </message> - <message> <source>"%1" returned the following error: %2</source> @@ -22856,6 +19147,18 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> <source>Could not delete file %1.</source> <translation>Nie można usunąć pliku %1.</translation> </message> + <message> + <source>Click and type the new key sequence.</source> + <translation>Kliknij i wpisz nową sekwencję klawiszy.</translation> + </message> + <message> + <source>Stop Recording</source> + <translation>Zatrzymaj nagrywanie</translation> + </message> + <message> + <source>Record</source> + <translation>Rozpocznij nagrywanie</translation> + </message> </context> <context> <name>BaseFileWizard</name> @@ -22892,55 +19195,8 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> </message> </context> <context> - <name>Debugger::Internal::QScriptDebuggerClient</name> - <message> - <source><p>An uncaught exception occurred:</p><p>%1</p></source> - <translation><p>Wystąpił nieobsłużony wyjątek:</p><p>%1</p></translation> - </message> - <message> - <source><p>An uncaught exception occurred in '%1':</p><p>%2</p></source> - <translation type="vanished"><p>Wystąpił nieobsłużony wyjątek w "%1":</p><p>%2</p></translation> - </message> - <message> - <source><p>An uncaught exception occurred in "%1":</p><p>%2</p></source> - <translation><p>Wystąpił nieobsłużony wyjątek w "%1":</p><p>%2</p></translation> - </message> - <message> - <source>Uncaught Exception</source> - <translation>Nieobsłużony wyjątek</translation> - </message> - <message> - <source>No Local Variables</source> - <translation>Brak lokalnych zmiennych</translation> - </message> -</context> -<context> <name>ProjectExplorer::SettingsAccessor</name> <message> - <source>No valid .user file found for '%1'</source> - <translation type="vanished">Brak poprawnego pliku .user dla "%1"</translation> - </message> - <message> - <source><p>No valid settings file could be found for this installation of Qt Creator.</p><p>All settings files were either too new or too old to be read.</p></source> - <translation type="vanished"><p>Brak poprawnego pliku z ustawieniami dla tej instalacji Qt Creatora.</p><p>Napotkane pliki z ustawieniami były albo zbyt nowe, albo zbyt stare, aby je odczytać.</p></translation> - </message> - <message> - <source>Settings File for '%1' from a different Environment?</source> - <translation type="vanished">Plik z ustawieniami dla "%1" z innego środowiska?</translation> - </message> - <message> - <source><p>No .user settings file created by this instance of Qt Creator was found.</p><p>Did you work with this project on another machine or using a different settings path before?</p><p>Do you still want to load the settings file '%1'?</p></source> - <translation type="vanished"><p>Brak pliku .user z ustawieniami, utworzonego przez tego Qt Creatora.</p><p>Czy pracowałeś z tym projektem na innej maszynie lub używałeś innej ścieżki do ustawień?</p><p>Czy załadować plik "%1" z ustawieniami?</p></translation> - </message> - <message> - <source>Using Old Settings File for '%1'</source> - <translation type="vanished">Użyto starego pliku z ustawieniami dla "%1"</translation> - </message> - <message> - <source><p>The versioned backup '%1' of the .user settings file is used, because the non-versioned file was created by an incompatible version of Qt Creator.</p><p>Project settings changes made since the last time this version of Qt Creator was used with this project are ignored, and changes made now will <b>not</b> be propagated to the newer version.</p></source> - <translation type="vanished"><p>Użyta zostanie kopia zapasowa "%1" pliku z ustawieniami .user, ponieważ w międzyczasie oryginalny plik z ustawieniami został zachowany przez niekompatybilną wersję Qt Creatora.</p><p>Jeżeli nastąpią teraz zmiany w ustawieniach projektu to <b>nie</b> zostaną one zastosowane w nowszej wersji Qt Creatora.</p></translation> - </message> - <message> <source>Unsupported Shared Settings File</source> <translation>Nieobsługiwany plik z dzielonymi ustawieniami</translation> </message> @@ -22982,26 +19238,6 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> <source>Other files</source> <translation>Inne pliki</translation> </message> - <message> - <source>Failed</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There are unsaved changes for project file %1.</source> - <translation type="vanished">Plik z projektem %1 posiada niezachowane zmiany.</translation> - </message> - <message> - <source>Failed!</source> - <translation type="vanished">Niepoprawnie zakończone!</translation> - </message> - <message> - <source>Could not write project file %1.</source> - <translation>Nie można zapisać pliku projektu %1.</translation> - </message> - <message> - <source>File Error</source> - <translation>Błąd pliku</translation> - </message> </context> <context> <name>RemoteLinux::AbstractRemoteLinuxDeployService</name> @@ -23099,37 +19335,13 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> <translation>Przesyłanie pliku "%1"...</translation> </message> <message> - <source>Upload of file '%1' failed. The server said: '%2'.</source> - <translation type="vanished">Nie można przesłać pliku "%1". Odpowiedź serwera: "%2".</translation> - </message> - <message> - <source>If '%1' is currently running on the remote host, you might need to stop it first.</source> - <translation type="vanished">Jeżeli "%1" jest aktualnie uruchomiony na zdalnym hoście, należy go najpierw zatrzymać.</translation> - </message> - <message> - <source>Failed to upload file '%1'.</source> - <translation type="vanished">Nie można przesłać pliku "%1".</translation> - </message> - <message> <source>Failed to set executable flag.</source> <translation>Nie można uczynić pliku wykonywalnym.</translation> </message> <message> - <source>Failed to upload file '%1': Could not open for reading.</source> - <translation type="vanished">Nie można przesłać pliku "%1". Nie można otworzyć go do odczytu.</translation> - </message> - <message> <source>All files successfully deployed.</source> <translation>Wszystkie pliki poprawnie zainstalowane.</translation> </message> - <message> - <source>Warning: No remote path set for local file '%1'. Skipping upload.</source> - <translation type="vanished">Ostrzeżenie: Brak ustawionej zdalnej ścieżki dla lokalnego pliku "%1". Nie zostanie on przesłany.</translation> - </message> - <message> - <source>Uploading file '%1'...</source> - <translation type="vanished">Przesyłanie pliku "%1"...</translation> - </message> </context> <context> <name>RemoteLinux::Internal::ConfigWidget</name> @@ -23240,10 +19452,6 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> <translation>Nie podano linii komendy.</translation> </message> <message> - <source>Starting remote command '%1'...</source> - <translation type="vanished">Uruchamianie zdalnej komendy "%1"...</translation> - </message> - <message> <source>Starting remote command "%1"...</source> <translation>Uruchamianie zdalnej komendy "%1"...</translation> </message> @@ -23363,30 +19571,6 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> <translation>Błąd zapisu pliku tar "%1": %2.</translation> </message> <message> - <source>No remote path specified for file '%1', skipping.</source> - <translation type="vanished">Brak ustawionej zdalnej ścieżki dla pliku "%1", zostanie on pominięty.</translation> - </message> - <message> - <source>Error writing tar file '%1': %2.</source> - <translation type="vanished">Błąd zapisu pliku tar "%1": %2.</translation> - </message> - <message> - <source>Error reading file '%1': %2.</source> - <translation type="vanished">Błąd odczytu pliku "%1": %2.</translation> - </message> - <message> - <source>Adding file '%1' to tarball...</source> - <translation type="vanished">Dodawanie pliku "%1" do tarballa...</translation> - </message> - <message> - <source>Cannot add file '%1' to tar-archive: path too long.</source> - <translation type="vanished">Nie można dodać pliku "%1" do archiwum tar: zbyt długa ścieżka.</translation> - </message> - <message> - <source>Error writing tar file '%1': %2</source> - <translation type="vanished">Błąd zapisu pliku tar "%1": %2</translation> - </message> - <message> <source>Create tarball</source> <translation>Utwórz tarball</translation> </message> @@ -23497,10 +19681,6 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation> <translation>Pliki w systemie plików</translation> </message> <message> - <source>Directory '%1':</source> - <translation type="vanished">Katalog "%1":</translation> - </message> - <message> <source>Directory "%1":</source> <translation>Katalog "%1":</translation> </message> @@ -23518,10 +19698,6 @@ Filtr: %2 <translation>&Katalog:</translation> </message> <message> - <source>&Browse...</source> - <translation>&Przeglądaj...</translation> - </message> - <message> <source>Fi&le pattern:</source> <translation>&Wzorzec pliku:</translation> </message> @@ -23533,39 +19709,24 @@ Filtr: %2 <context> <name>UpdateInfo::Internal::UpdateInfoPlugin</name> <message> - <source>Could not determine location of maintenance tool. Please check your installation if you did not enable this plugin manually.</source> - <translation>Nie można określić położenia narzędzia kontrolnego. Sprawdź w instalacji, czy ta wtyczka nie została uaktywniona ręcznie.</translation> - </message> - <message> - <source>Could not find maintenance tool at "%1". Check your installation.</source> - <translation>Nie można odnaleźć narzędzia kontrolnego w "%1". Sprawdź instalację.</translation> + <source>Updater</source> + <translation>Aktualizator</translation> </message> <message> - <source>Updates Available</source> - <translation>Dostępne uaktualnienia</translation> + <source>New updates are available. Do you want to start update?</source> + <translation>Dostępne są nowe uaktualnienia. Czy chcesz rozpocząć aktualizację?</translation> </message> <message> - <source>Could not find maintenance tool at '%1'. Check your installation.</source> - <translation type="vanished">Nie można odnaleźć narzędzia kontrolnego w "%1". Sprawdź instalację.</translation> - </message> - <message> - <source>Start Updater</source> - <translation>Uruchom uaktualniacza</translation> + <source>Could not determine location of maintenance tool. Please check your installation if you did not enable this plugin manually.</source> + <translation>Nie można określić położenia narzędzia kontrolnego. Sprawdź w instalacji, czy ta wtyczka nie została uaktywniona ręcznie.</translation> </message> <message> - <source>Updates available</source> - <translation type="vanished">Dostępne uaktualnienia</translation> + <source>The maintenance tool at "%1" is not an executable. Check your installation.</source> + <translation>Narzędzie utrzymania "%1" nie jest plikiem wykonywalnym. Sprawdź instalację.</translation> </message> -</context> -<context> - <name>VcsBase::Command</name> <message> - <source>Unable to start process, binary is empty</source> - <translation type="vanished">Nie można uruchomić procesu, plik binarny jest pusty</translation> - </message> - <message> - <source>Error: Executable timed out after %1s.</source> - <translation type="vanished">Błąd: plik wykonywalny nie odpowiada po upływie %1s.</translation> + <source>Check for Updates</source> + <translation>Sprawdź dostępność aktualizacji</translation> </message> </context> <context> @@ -23722,10 +19883,6 @@ Filtr: %2 <translation>Plik o tej nazwie już istnieje. Czy nadpisać go?</translation> </message> <message> - <source>Failed to create directory: '%1'.</source> - <translation type="vanished">Nie można utworzyć katalogu: "%1".</translation> - </message> - <message> <source>Choose...</source> <translation>Wybierz...</translation> </message> @@ -23810,125 +19967,6 @@ Filtr: %2 </message> </context> <context> - <name>AndroidDeployStepWidget</name> - <message> - <source>Form</source> - <translation type="vanished">Formularz</translation> - </message> - <message> - <source>Qt Deployment</source> - <translation type="vanished">Instalacja Qt</translation> - </message> - <message> - <source>Use Ministro service to install Qt</source> - <translation type="vanished">Użyj usługi Ministro do zainstalowania Qt</translation> - </message> - <message> - <source>Deploy local Qt libraries to temporary directory</source> - <translation type="vanished">Zainstaluj lokalne biblioteki Qt do tymczasowego katalogu</translation> - </message> - <message> - <source>Creates a standalone APK.</source> - <translation type="vanished">Tworzy samodzielny APK.</translation> - </message> - <message> - <source>Bundle Qt libraries in APK</source> - <translation type="vanished">Dołącz biblioteki Qt do APK</translation> - </message> - <message> - <source>Advanced Actions</source> - <translation type="vanished">Zaawansowane akcje</translation> - </message> - <message> - <source>Clean Temporary Libraries Directory on Device</source> - <translation type="vanished">Wyczyść tymczasowe katalogi z bibliotekami na urządzeniu</translation> - </message> - <message> - <source>Install Ministro from APK</source> - <translation type="vanished">Zainstaluj Ministro z APK</translation> - </message> - <message> - <source>Reset Default Devices</source> - <translation type="vanished">Przywróć domyślne urządzenia</translation> - </message> - <message> - <source>Uses the external Ministro application to download and maintain Qt libraries.</source> - <translation type="vanished">Używa zewnętrznej aplikacji Ministro do pobierania bibliotek Qt i zarządzania nimi.</translation> - </message> - <message> - <source>Pushes local Qt libraries to device. You must have Qt libraries compiled for that platform. -The APK will not be usable on any other device.</source> - <translation type="vanished">Przesyła lokalne biblioteki Qt do urządzenia. -Należy przesłać biblioteki skompilowane dla tej platformy. -APK nie będzie przydatne na innych urządzeniach.</translation> - </message> -</context> -<context> - <name>AndroidPackageCreationWidget</name> - <message> - <source><b>Android target SDK:</b></source> - <translation type="vanished"><b>Docelowy SDK Androida:</b></translation> - </message> - <message> - <source>Application</source> - <translation type="vanished">Aplikacja</translation> - </message> - <message> - <source>Libraries</source> - <translation type="vanished">Biblioteki</translation> - </message> - <message> - <source>Read information from application (must be compiled)</source> - <translation type="vanished">Odczytaj informację z aplikacji (musi być skompilowana)</translation> - </message> - <message> - <source>Required Qt libraries</source> - <translation type="vanished">Wymagane biblioteki Qt</translation> - </message> - <message> - <source><center>Prebundled libraries</center> -<p align="justify">Please be aware that the order is very important: If library <i>A</i> depends on library <i>B</i>, <i>B</i> <b>must</b> go before <i>A</i>.</p></source> - <translation type="vanished"><center>Spakowane biblioteki</center> -<p align="justify">Kolejność jest bardzo istotna. Jeśli biblioteka <i>A</i> zależy od biblioteki <i>B</i>, <i>B</i> <b>musi</b> pojawić się przed <i>A</i>.</p></translation> - </message> - <message> - <source>Up</source> - <translation type="vanished">Do góry</translation> - </message> - <message> - <source>Down</source> - <translation type="vanished">Na dół</translation> - </message> - <message> - <source>Sign package</source> - <translation type="vanished">Podpisz pakiet</translation> - </message> - <message> - <source>Create</source> - <translation type="vanished">Utwórz</translation> - </message> - <message> - <source>Browse</source> - <translation type="vanished">Przeglądaj</translation> - </message> - <message> - <source>Open package location after is complete</source> - <translation type="vanished">Po zakończeniu otwórz w położeniu pakietu</translation> - </message> - <message> - <source>Certificate alias:</source> - <translation type="vanished">Alias certyfikatu:</translation> - </message> - <message> - <source>Signing a debug package</source> - <translation type="vanished">Podpisywanie pakietu debugowego</translation> - </message> - <message> - <source>Automatically check required Qt libraries from compiled application.</source> - <translation type="vanished">Automatycznie sprawdzaj wymagane biblioteki Qt na podstawie informacji uzyskanej ze skompilowanej aplikacji.</translation> - </message> -</context> -<context> <name>AndroidSettingsWidget</name> <message> <source>Android Configuration</source> @@ -23939,10 +19977,6 @@ APK nie będzie przydatne na innych urządzeniach.</translation> <translation>Położenie Android SDK:</translation> </message> <message> - <source>Browse</source> - <translation type="vanished">Przeglądaj</translation> - </message> - <message> <source>Android NDK location:</source> <translation>Położenie Android NDK:</translation> </message> @@ -24038,10 +20072,6 @@ APK nie będzie przydatne na innych urządzeniach.</translation> <translation>Wzory:</translation> </message> <message> - <source>Magic Header</source> - <translation type="vanished">Magiczny nagłówek</translation> - </message> - <message> <source>Type</source> <translation>Typ</translation> </message> @@ -24090,17 +20120,6 @@ APK nie będzie przydatne na innych urządzeniach.</translation> </message> </context> <context> - <name>Core::Internal::VariableChooser</name> - <message> - <source>Variables</source> - <translation type="vanished">Zmienne</translation> - </message> - <message> - <source>Select a variable to insert.</source> - <translation type="vanished">Wybierz zmienną do wstawienia.</translation> - </message> -</context> -<context> <name>CodePaster::Internal::FileShareProtocolSettingsWidget</name> <message> <source>Form</source> @@ -24204,10 +20223,6 @@ p, li { white-space: pre-wrap; } <translation>Łata 2</translation> </message> <message> - <source>Days</source> - <translation type="vanished">Dni</translation> - </message> - <message> <source>&Expires after:</source> <translation>Okr&es ważności:</translation> </message> @@ -24239,10 +20254,6 @@ p, li { white-space: pre-wrap; } <translation>Okr&es ważności:</translation> </message> <message> - <source>Days</source> - <translation type="vanished">Dni</translation> - </message> - <message> <source> Days</source> <translation>Dni</translation> </message> @@ -24342,51 +20353,6 @@ Przedrostki te, w dodatku do nazwy bieżącego pliku, używane są do przełącz </message> </context> <context> - <name>Debugger::Internal::DebuggingHelperOptionPage</name> - <message> - <source>Use Debugging Helper</source> - <translation type="vanished">Używaj asystenta debuggera</translation> - </message> - <message> - <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 Expressions&quot; view. It is not strictly necessary for debugging with Qt Creator. </p></body></html></source> - <translation type="vanished"><html><head/><body> -<p>Asystent debuggera jest używany do ładnego formatowania danych w widoku &quot;Zmienne lokalne i wyrażenia&quot; dla obiektów niektórych typów takich jak QString lub std::map. Nie jest on niezbędny do debugowania w Qt Creatorze.</p></body></html></translation> - </message> - <message> - <source>Makes use of Qt Creator's code model to find out if a variable has already been assigned a value at the point the debugger interrupts.</source> - <translation type="vanished">Korzysta z modelu kodu Qt Creatora w celu zbadania czy wartość została już przypisana do zmiennej w chwili przerwania debuggera.</translation> - </message> - <message> - <source>Use code model</source> - <translation type="vanished">Używaj modelu kodu</translation> - </message> - <message> - <source>Displays names of QThread based threads.</source> - <translation type="vanished">Wyświetla nazwy wątków dziedziczących z QThread.</translation> - </message> - <message> - <source>Display thread names</source> - <translation type="vanished">Wyświetlaj nazwy wątków</translation> - </message> - <message> - <source>Show "std::" namespace for types</source> - <translation type="vanished">Pokazuj przestrzeń nazw "std::" dla typów</translation> - </message> - <message> - <source>Show Qt's namespace for types</source> - <translation type="vanished">Pokazuj przestrzeń nazw Qt dla typów</translation> - </message> - <message> - <source>Shows 'std::' prefix for types from the standard library.</source> - <translation type="vanished">Pokazuje przedrostek "std::" dla typów z biblioteki standardowej.</translation> - </message> - <message> - <source>Shows Qt namespace prefix for Qt types. This is only relevant if Qt was configured with '-qtnamespace'.</source> - <translation type="vanished">Pokazuje przestrzeń nazw Qt dla typów Qt. Ma to zastosowanie jedynie dla Qt skonfigurowanego z "-qtnamespace".</translation> - </message> -</context> -<context> <name>ProjectExplorer::Internal::CodeStyleSettingsPropertiesPage</name> <message> <source>Form</source> @@ -24495,185 +20461,6 @@ Przedrostki te, w dodatku do nazwy bieżącego pliku, używane są do przełącz </message> </context> <context> - <name>Qnx::Internal::BlackBerryDeployConfigurationWidget</name> - <message> - <source>Packages to deploy:</source> - <translation>Pakiety do instalacji:</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeviceConfigurationWidget</name> - <message> - <source>&Device name:</source> - <translation>Nazwa urzą&dzenia:</translation> - </message> - <message> - <source>IP or host name of the device</source> - <translation>IP lub nazwa hosta urządzenia</translation> - </message> - <message> - <source>Device &password:</source> - <translation>&Hasło urządzenia:</translation> - </message> - <message> - <source>Show password</source> - <translation>Pokaż hasło</translation> - </message> - <message> - <source>Debug token:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Private key file:</source> - <translation>Plik z kluczem prywatnym:</translation> - </message> - <message> - <source>Connection log:</source> - <translation>Log połączeń:</translation> - </message> - <message> - <source>Request</source> - <translation>Żądanie</translation> - </message> - <message> - <source>Upload</source> - <translation>Prześlij</translation> - </message> - <message> - <source>Qt Creator</source> - <translation>Qt Creator</translation> - </message> - <message> - <source>Debug token successfully uploaded.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No route to host.</source> - <translation>Brak połączenia z hostem.</translation> - </message> - <message> - <source>Authentication failed.</source> - <translation>Brak autoryzacji.</translation> - </message> - <message> - <source>Development mode is disabled on the device.</source> - <translation>Tryb deweloperski nieaktywny na urządzeniu.</translation> - </message> - <message> - <source>Failed to start inferior process.</source> - <translation>Nie można uruchomić podprocesu.</translation> - </message> - <message> - <source>Inferior processes timed out.</source> - <translation>Przekroczony czas oczekiwania na podproces.</translation> - </message> - <message> - <source>Inferior process has crashed.</source> - <translation>Podproces zakończył pracę błędem.</translation> - </message> - <message> - <source>Failed to communicate with the inferior process.</source> - <translation>Nie można skomunikować się z podprocesem.</translation> - </message> - <message> - <source>An unknwon error has happened.</source> - <translation>Wystąpił nieznany błąd.</translation> - </message> - <message> - <source>Error</source> - <translation>Błąd</translation> - </message> - <message> - <source>Select Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>BAR file (*.bar)</source> - <translation>Plik BAR (*.bar)</translation> - </message> - <message> - <source>Invalid Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Debug token file %1 cannot be read.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Invalid debug token path.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Failed to upload debug token:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Operation in Progress</source> - <translation>Operacja w toku</translation> - </message> - <message> - <source>Uploading debug token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Import</source> - <translation>Zaimportuj</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeviceConfigurationWizardSetupPage</name> - <message> - <source>WizardPage</source> - <translation>StronaKreatora</translation> - </message> - <message> - <source>Device password:</source> - <translation>Hasło urządzenia:</translation> - </message> - <message> - <source>Device host name or IP address:</source> - <translation>Nazwa hosta lub adres IP urządzenia:</translation> - </message> - <message> - <source>Connection</source> - <translation>Połączenie</translation> - </message> - <message> - <source>Specify device manually</source> - <translation>Określ urządzenie ręcznie</translation> - </message> - <message> - <source>Auto-detecting devices - please wait...</source> - <translation>Detekcja urządzeń - proszę czekać...</translation> - </message> - <message> - <source>No device has been auto-detected.</source> - <translation>Brak urządzeń wykrytych automatycznie.</translation> - </message> - <message> - <source>Device auto-detection is available in BB NDK 10.2. Make sure that your device is in Development Mode.</source> - <translation>Detekcja urządzeń dostępna jest w BB NDK 10.2. Upewnij się, że urządzenie jest w trybie deweloperskim.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryRunConfigurationWidget</name> - <message> - <source>Device:</source> - <translation>Urządzenie:</translation> - </message> - <message> - <source>Package:</source> - <translation>Pakiet:</translation> - </message> -</context> -<context> - <name>Qnx::Internal::QnxBaseQtConfigWidget</name> - <message> - <source>SDK:</source> - <translation>SDK:</translation> - </message> -</context> -<context> <name>QmakeProjectManager::Internal::MakeStep</name> <message> <source>Make arguments:</source> @@ -24711,51 +20498,12 @@ Przedrostki te, w dodatku do nazwy bieżącego pliku, używane są do przełącz <translation>Ostateczna komenda qmake:</translation> </message> <message> - <source>Use QML compiler</source> - <translation>Użyj kompilatora QML</translation> - </message> -</context> -<context> - <name>QmakeProjectManager::Internal::Html5AppWizardSourcesPage</name> - <message> - <source>WizardPage</source> - <translation type="vanished">StronaKreatora</translation> - </message> - <message> - <source>Main HTML File</source> - <translation type="vanished">Główny plik HTML</translation> - </message> - <message> - <source>Generate an index.html file</source> - <translation type="vanished">Wygeneruj plik index.html</translation> - </message> - <message> - <source>Import an existing .html file</source> - <translation type="vanished">Zaimportuj istniejący plik .html</translation> - </message> - <message> - <source>Load a URL</source> - <translation type="vanished">Załaduj URL</translation> - </message> - <message> - <source>http://</source> - <translation type="vanished">http://</translation> - </message> - <message> - <source>Note: Unless you chose to load a URL, all files and directories that reside in the same directory as the main HTML file are deployed. You can modify the contents of the directory any time before deploying.</source> - <translation type="vanished">Uwaga: wszystkie pliki i katalogi, które leżą w tym samym katalogu, co główny plik HTML, zostaną zainstalowane, chyba że wybrałeś załadowanie URL. Możesz zmodyfikować zawartość katalogu przed zainstalowaniem.</translation> - </message> - <message> - <source>Touch optimized navigation</source> - <translation type="vanished">Nawigacja zoptymalizowana pod kątem urządzeń dotykowych</translation> - </message> - <message> - <source>Enable touch optimized navigation</source> - <translation type="vanished">Uaktywnij nawigację zoptymalizowaną pod kątem urządzeń dotykowych</translation> + <source>Generate separate debug info:</source> + <translation type="unfinished"></translation> </message> <message> - <source>Touch optimized navigation will make the HTML page flickable and enlarge the area of touch sensitive elements. If you use a JavaScript framework which optimizes the touch interaction, leave the checkbox unchecked.</source> - <translation type="obsolete">Nawigacja zoptymalizowana pod kątem urządzeń dotykowych spowoduje ???miganie??? strony HTML i zwiększy obszar elementów czułych na dotyk. Jeśli używasz JavaScript ze zoptymalizowaną interakcją dotykową, pozostaw tę opcję niezaznaczoną.</translation> + <source>Use QML compiler:</source> + <translation>Używaj kompilatora QML:</translation> </message> </context> <context> @@ -24855,6 +20603,10 @@ Przedrostki te, w dodatku do nazwy bieżącego pliku, używane są do przełącz <source>You can enter lists and ranges like this: '1024,1026-1028,1030'.</source> <translation>Można wprowadzać listy i zakresy, np.: "1024,1026-1028,1030".</translation> </message> + <message> + <source>&Check host key</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RemoteLinux::Internal::GenericLinuxDeviceConfigurationWizardSetupPage</name> @@ -24871,10 +20623,6 @@ Przedrostki te, w dodatku do nazwy bieżącego pliku, używane są do przełącz <translation>Nazwa hosta lub adres IP urządzenia:</translation> </message> <message> - <source>The user name to log into the device:</source> - <translation type="vanished">Nazwa użytkownika na urządzeniu:</translation> - </message> - <message> <source>The authentication type:</source> <translation>Typ autoryzacji:</translation> </message> @@ -24915,17 +20663,6 @@ Przedrostki te, w dodatku do nazwy bieżącego pliku, używane są do przełącz </message> </context> <context> - <name>RemoteLinux::Internal::RemoteLinuxDeployConfigurationWidget</name> - <message> - <source>Form</source> - <translation type="vanished">Formularz</translation> - </message> - <message> - <source>Files to deploy:</source> - <translation type="vanished">Pliki do zainstalowania:</translation> - </message> -</context> -<context> <name>TextEditor::Internal::BehaviorSettingsPage</name> <message> <source>Form</source> @@ -25227,6 +20964,10 @@ Ustala, jak klawisz "Backspace" reaguje na wcięcia. <source>Shows tabs and spaces.</source> <translation>Pokazuje tabulatory i spacje.</translation> </message> + <message> + <source>Highlight search results on the scrollbar</source> + <translation>Podświetlaj rezultaty wyszukiwań na pasku przewijania</translation> + </message> </context> <context> <name>TextEditor::Internal::HighlighterSettingsPage</name> @@ -25472,57 +21213,6 @@ Wpływa na wcięcia przeniesionych linii. </message> </context> <context> - <name>VcsBase::Internal::BaseCheckoutWizardPage</name> - <message> - <source>WizardPage</source> - <translation>StronaKreatora</translation> - </message> - <message> - <source>Repository</source> - <translation>Repozytorium</translation> - </message> - <message> - <source>The remote repository to check out.</source> - <translation>Zdalne repozytorium dla kopii roboczej.</translation> - </message> - <message> - <source>Branch:</source> - <translation>Gałąź:</translation> - </message> - <message> - <source>The development branch in the remote repository to check out.</source> - <translation>Gałąź w zdalnym repozytorium dla kopii roboczej.</translation> - </message> - <message> - <source>Retrieve list of branches in repository.</source> - <translation>Pozyskaj listę gałęzi z repozytorium.</translation> - </message> - <message> - <source>...</source> - <translation>...</translation> - </message> - <message> - <source>Working Copy</source> - <translation>Kopia robocza</translation> - </message> - <message> - <source>The path in which the directory containing the checkout will be created.</source> - <translation>Ścieżka, w której zostanie utworzony katalog zawierający kopię roboczą.</translation> - </message> - <message> - <source>The local directory that will contain the code after the checkout.</source> - <translation>Lokalny katalog, który będzie zawierał kod po utworzeniu kopii roboczej.</translation> - </message> - <message> - <source>Path:</source> - <translation>Ścieżka:</translation> - </message> - <message> - <source>Directory:</source> - <translation>Katalog:</translation> - </message> -</context> -<context> <name>VcsBase::Internal::CleanDialog</name> <message> <source>Clean Repository</source> @@ -25564,10 +21254,6 @@ Wpływa na wcięcia przeniesionych linii. <translation>Plik z konfiguracją &pól użytkownika:</translation> </message> <message> - <source>&Patch command:</source> - <translation type="vanished">Komenda "pa&tch":</translation> - </message> - <message> <source>&SSH prompt command:</source> <translation>Komenda monitu &SSH:</translation> </message> @@ -25578,12 +21264,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Sprawdź dokumentację SSH i zmienną środowiskową SSH_ASKPASS.</translation> </message> <message> - <source>A file listing user names and email addresses in a 4-column mailmap format: -'name <email> alias <email>'.</source> - <translation type="vanished">Plik z listą nazw użytkowników i adresami e-mail w 4 kolumnach (format mailmap): -"nazwa <e-mail> alias <e-mail>".</translation> - </message> - <message> <source>A file listing nicknames in a 4-column mailmap format: 'name <email> alias <email>'.</source> <translation>Plik z listą identyfikatorów użytkowników w 4 kolumnach (format mailmap): @@ -25711,22 +21391,6 @@ Sprawdź dokumentację SSH i zmienną środowiskową SSH_ASKPASS.</translation> <translation>Nieznany błąd.</translation> </message> <message> - <source>Created remote directory '%1'.</source> - <translation type="vanished">Utworzono zdalny katalog "%1".</translation> - </message> - <message> - <source>Remote directory '%1' already exists.</source> - <translation type="vanished">Zdalny katalog "%1" już istnieje.</translation> - </message> - <message> - <source>Error creating directory '%1': %2</source> - <translation type="vanished">Błąd tworzenia katalogu "%1": %2</translation> - </message> - <message> - <source>Could not open local file '%1': %2</source> - <translation type="vanished">Nie można otworzyć lokalnego pliku "%1": %2</translation> - </message> - <message> <source>Created remote directory "%1".</source> <translation>Utworzono zdalny katalog "%1".</translation> </message> @@ -25813,14 +21477,6 @@ Sprawdź dokumentację SSH i zmienną środowiskową SSH_ASKPASS.</translation> <source>Error listing contents of directory "%1": %2</source> <translation>Błąd podczas listowania zawartości katalogu "%1": %2</translation> </message> - <message> - <source>Error getting 'stat' info about '%1': %2</source> - <translation type="vanished">Błąd podczas pobierania informacji "stat" o "%1": %2</translation> - </message> - <message> - <source>Error listing contents of directory '%1': %2</source> - <translation type="vanished">Błąd podczas listowania zawartości katalogu "%1": %2</translation> - </message> </context> <context> <name>QSsh::Internal::SshChannelManager</name> @@ -25852,14 +21508,6 @@ Sprawdź dokumentację SSH i zmienną środowiskową SSH_ASKPASS.</translation> <translation>Ciąg identyfikujący serwer zawiera niedozwolony znak NUL.</translation> </message> <message> - <source>Server Identification string '%1' is invalid.</source> - <translation type="vanished">Ciąg identyfikujący serwer "%1" jest niepoprawny.</translation> - </message> - <message> - <source>Server protocol version is '%1', but needs to be 2.0 or 1.99.</source> - <translation type="vanished">Wersja protokołu serwera to "%1", wymagana to 2.0 lub 1.99.</translation> - </message> - <message> <source>Server Identification string "%1" is invalid.</source> <translation>Ciąg identyfikujący serwer "%1" jest niepoprawny.</translation> </message> @@ -25926,6 +21574,14 @@ Sprawdź dokumentację SSH i zmienną środowiskową SSH_ASKPASS.</translation> <source>Please enter the password for your private key.</source> <translation>Podaj hasło do prywatnego klucza.</translation> </message> + <message> + <source>Failed to open key file "%1" for reading: %2</source> + <translation>Nie można otworzyć pliku z kluczem "%1" do odczytu: %2</translation> + </message> + <message> + <source>Failed to open key file "%1" for writing: %2</source> + <translation>Nie można otworzyć pliku z kluczem "%1" do zapisu: %2</translation> + </message> </context> <context> <name>QSsh::Internal::SshRemoteProcessPrivate</name> @@ -25937,33 +21593,10 @@ Sprawdź dokumentację SSH i zmienną środowiskową SSH_ASKPASS.</translation> <source>Server sent invalid signal "%1"</source> <translation>Serwer wysłał niepoprawny sygnał "%1"</translation> </message> - <message> - <source>Server sent invalid signal '%1'</source> - <translation type="vanished">Serwer wysłał niepoprawny sygnał "%1"</translation> - </message> -</context> -<context> - <name>Utils::BaseTreeView</name> - <message> - <source>Adjust Column Widths to Contents</source> - <translation type="vanished">Wyrównaj szerokości kolumn do ich zawartości</translation> - </message> </context> <context> <name>Utils::ElfReader</name> <message> - <source>'%1' is an invalid ELF object (%2)</source> - <translation type="vanished">"%1" nie jest poprawnym obiektem ELF (%2)</translation> - </message> - <message> - <source>'%1' is not an ELF object (file too small)</source> - <translation type="vanished">"%1" nie jest obiektem ELF (za mały plik)</translation> - </message> - <message> - <source>'%1' is not an ELF object</source> - <translation type="vanished">"%1" nie jest obiektem ELF</translation> - </message> - <message> <source>"%1" is an invalid ELF object (%2)</source> <translation>"%1" nie jest poprawnym obiektem ELF (%2)</translation> </message> @@ -26036,98 +21669,6 @@ Sprawdź dokumentację SSH i zmienną środowiskową SSH_ASKPASS.</translation> </message> </context> <context> - <name>ZeroConf::Internal::ZConfLib</name> - <message> - <source>AvahiZConfLib could not load the native library '%1': %2</source> - <translation type="vanished">AvahiZConfLib nie może załadować natywnej biblioteki "%1": %2</translation> - </message> - <message> - <source>%1 cannot create a client. The daemon is probably not running.</source> - <translation type="vanished">%1 nie może utworzyć klienta. Prawdopodobnie demon nie jest uruchomiony.</translation> - </message> - <message> - <source>cAvahiClient, server collision.</source> - <translation type="vanished">cAvahiClient, kolizja serwerów.</translation> - </message> - <message> - <source>cAvahiClient, an error occurred on the client side.</source> - <translation type="vanished">cAvahiClient, wystąpił błąd po stronie klienta.</translation> - </message> - <message> - <source>cAvahiClient, still connecting, no server available.</source> - <translation type="vanished">cAvahiClient, trwa łączenie, brak dostępnych serwerów.</translation> - </message> - <message> - <source>Unexpected state %1 in cAvahiClientReply.</source> - <translation type="vanished">Nieoczekiwany stan %1 w cAvahiClientReply.</translation> - </message> - <message> - <source>Unexpected state %1 in cAvahiBrowseReply.</source> - <translation type="vanished">Nieoczekiwany stan %1 w cAvahiBrowseReply.</translation> - </message> - <message> - <source>%1 failed to kill other daemons with '%2'.</source> - <translation type="vanished">%1 nie może zamknąć innych demonów przy pomocy "%2".</translation> - </message> - <message> - <source>%1 detected a file at /tmp/mdnsd, daemon startup will probably fail.</source> - <translation type="vanished">%1 wykrył plik w /tmp/mdnsd, prawdopodobnie nie uda się uruchomić demona.</translation> - </message> - <message> - <source>%1: log of previous daemon run is: '%2'.</source> - <translation type="vanished">%1: log z poprzedniego uruchomienia demona: "%2".</translation> - </message> - <message> - <source>%1 failed starting embedded daemon at %2.</source> - <translation type="vanished">%1 nie może uruchomić wbudowanego demona w %2.</translation> - </message> -</context> -<context> - <name>ZeroConf</name> - <message> - <source>Zeroconf could not load a valid library, failing.</source> - <translation type="vanished">Zeroconf nie może załadować poprawnej biblioteki i tym samym kończy działanie.</translation> - </message> - <message> - <source>Zeroconf has no valid library, aborting connection.</source> - <translation type="vanished">Zeroconf nie ma poprawnej biblioteki, przerwano połączenie.</translation> - </message> - <message> - <source>Trying %1...</source> - <translation type="vanished">Próbowanie %1...</translation> - </message> - <message> - <source>Succeeded using %1.</source> - <translation type="vanished">Poprawnie zakończone przy pomocy %1.</translation> - </message> - <message> - <source>Could not load native library.</source> - <translation type="vanished">Nie można załadować natywnej biblioteki.</translation> - </message> - <message> - <source>Warning: Detected an obsolete version of Apple Bonjour. Disable, uninstall, or upgrade it, or zeroconf will fail.</source> - <translation type="vanished">Ostrzeżenie: wykryto przestarzałą wersję Apple Bonjour. Zdezaktywuj, odinstaluj albo uaktualnij ją, w przeciwnym razie zeroconf nie zadziała.</translation> - </message> -</context> -<context> - <name>ZeroConf::ServiceBrowser</name> - <message> - <source>Starting Zeroconf Browsing</source> - <translation type="vanished">Uruchamianie zeroconf</translation> - </message> -</context> -<context> - <name>Android::Internal::AndroidConfigurations</name> - <message> - <source>Android Debugger for %1</source> - <translation type="vanished">Debugger Android dla %1</translation> - </message> - <message> - <source>Android for %1 (GCC %2, Qt %3)</source> - <translation type="vanished">Android dla %1 (GCC %2, Qt %3)</translation> - </message> -</context> -<context> <name>Android</name> <message> <source>Android</source> @@ -26188,72 +21729,6 @@ Sprawdź dokumentację SSH i zmienną środowiskową SSH_ASKPASS.</translation> </message> </context> <context> - <name>Android::Internal::AndroidDeployStep</name> - <message> - <source>Deploy to Android device</source> - <extracomment>AndroidDeployStep default display name</extracomment> - <translation type="vanished">Zainstaluj na urządzeniu Android</translation> - </message> - <message> - <source>No Android toolchain selected.</source> - <translation type="vanished">Brak wybranego zestawu narzędzi dla Androida.</translation> - </message> - <message> - <source>Package deploy: Running command '%1 %2'.</source> - <translation type="vanished">Instalacja pakietu: Uruchamianie komendy "%1 %2".</translation> - </message> - <message> - <source>Packaging error: Could not start command '%1 %2'. Reason: %3</source> - <translation type="vanished">Błąd pakowania: Nie można uruchomić komendy "%1 %2". Przyczyna: %3</translation> - </message> - <message> - <source>Packaging Error: Command '%1 %2' failed.</source> - <translation type="vanished">Błąd pakowania: Komenda "%1 %2" zakończona błędem.</translation> - </message> - <message> - <source>Reason: %1</source> - <translation type="vanished">Przyczyna: %1</translation> - </message> - <message> - <source>Exit code: %1</source> - <translation type="vanished">Kod wyjściowy: %1</translation> - </message> - <message> - <source>Deploy Qt libraries. This may take some time, please wait.</source> - <translation type="vanished">Instalowanie bibliotek Qt. To może zająć trochę czasu.</translation> - </message> - <message> - <source>Package installation failed.</source> - <translation type="vanished">Błąd instalowania pakietu.</translation> - </message> - <message> - <source>Installing package onto %1.</source> - <translation type="vanished">Instalowanie pakietów na %1.</translation> - </message> -</context> -<context> - <name>Android::Internal::AndroidDeployStepFactory</name> - <message> - <source>Deploy to Android device or emulator</source> - <translation type="vanished">Zainstaluj na urządzeniu lub emulatorze Android</translation> - </message> -</context> -<context> - <name>Android::Internal::AndroidDeployStepWidget</name> - <message> - <source><b>Deploy configurations</b></source> - <translation type="vanished"><b>Konfiguracje instalacji</b></translation> - </message> - <message> - <source>Qt Android Smart Installer</source> - <translation type="vanished">Qt Android Smart Installer</translation> - </message> - <message> - <source>Android package (*.apk)</source> - <translation type="vanished">Pakiet androida (*.apk)</translation> - </message> -</context> -<context> <name>Android::Internal::AndroidDevice</name> <message> <source>Run on Android</source> @@ -26272,177 +21747,6 @@ Sprawdź dokumentację SSH i zmienną środowiskową SSH_ASKPASS.</translation> </message> </context> <context> - <name>Android::Internal::AndroidManager</name> - <message> - <source>Error creating Android directory '%1'.</source> - <translation type="vanished">Błąd podczas tworzenia androidowego katalogu "%1".</translation> - </message> - <message> - <source>No Qt for Android SDKs were found. -Please install at least one SDK.</source> - <translation type="vanished">Brak Qt dla Android SDK. -Zainstaluj przynajmniej jeden SDK.</translation> - </message> - <message> - <source>Warning</source> - <translation type="vanished">Ostrzeżenie</translation> - </message> - <message> - <source>Android files have been updated automatically.</source> - <translation type="vanished">Pliki Androida zostały automatycznie uaktualnione.</translation> - </message> - <message> - <source>Unknown Android version.</source> - <translation type="vanished">Nieznana wersja Androida.</translation> - </message> - <message> - <source>Error creating Android templates.</source> - <translation type="vanished">Błąd tworzenia szablonów Androida.</translation> - </message> - <message> - <source>Cannot parse '%1'.</source> - <translation type="vanished">Błąd parsowania "%1".</translation> - </message> - <message> - <source>Cannot open '%1'.</source> - <translation type="vanished">Nie można otworzyć "%1".</translation> - </message> - <message> - <source>Starting Android virtual device failed.</source> - <translation type="vanished">Nie można uruchomić wirtualnego urządzenia Android.</translation> - </message> -</context> -<context> - <name>Android::Internal::AndroidPackageCreationFactory</name> - <message> - <source>Create Android (.apk) Package</source> - <translation type="vanished">Utwórz pakiet androidowy (.apk)</translation> - </message> -</context> -<context> - <name>Android::Internal::AndroidPackageCreationStep</name> - <message> - <source>Packaging for Android</source> - <translation type="vanished">Pakowanie dla Androida</translation> - </message> - <message> - <source>Cannot create Android package: current build configuration is not Qt 4.</source> - <translation type="vanished">Nie można utworzyć pakietu androidowego: bieżąca konfiguracja budowania nie używa Qt 4.</translation> - </message> - <message> - <source>Cannot create Android package: No ANDROID_TARGET_ARCH set in make spec.</source> - <translation type="vanished">Nie można utworzyć pakietu androidowego: brak ustawionej zmiennej ANDROID_TARGET_ARCH w make spec.</translation> - </message> - <message> - <source>Warning: Signing a debug package.</source> - <translation type="vanished">Ostrzeżenie: podpisywanie pakietu debugowego.</translation> - </message> - <message> - <source>Cannot find ELF information</source> - <translation type="vanished">Nie można odnaleźć informacji o ELF</translation> - </message> - <message> - <source>Cannot find '%1'. -Please make sure your application is built successfully and is selected in Application tab ('Run option').</source> - <translation type="vanished">Nie można odnaleźć "%1". -Upewnij się, że aplikacja jest poprawnie zbudowana i jest ona wybrana w zakładce "Aplikacja" ("Opcje uruchamiania").</translation> - </message> - <message> - <source>Error</source> - <translation type="vanished">Błąd</translation> - </message> - <message> - <source>Invalid password</source> - <translation type="vanished">Niepoprawne hasło</translation> - </message> - <message> - <source>Copy Qt app & libs to Android package ...</source> - <translation type="vanished">Kopiowanie bibliotek i aplikacji Qt do pakietu androidowego...</translation> - </message> - <message> - <source>Can't copy gdbserver from '%1' to '%2'</source> - <translation type="vanished">Nie można skopiować gdbserver z "%1" do "%2"</translation> - </message> - <message> - <source>Creating package file ...</source> - <translation type="vanished">Tworzenie pliku pakietu...</translation> - </message> - <message> - <source>Signing package ...</source> - <translation type="vanished">Podpisywanie pakietu...</translation> - </message> - <message> - <source>Failed, try again</source> - <translation type="vanished">Nie udało się, spróbuj ponownie</translation> - </message> - <message> - <source>Release signed package created to %1</source> - <translation type="vanished">Utworzono podpisany releasowy pakiet w %1</translation> - </message> - <message> - <source>Package created.</source> - <translation type="vanished">Utworzono pakiet.</translation> - </message> - <message> - <source>Package deploy: Running command '%1 %2'.</source> - <translation type="vanished">Instalacja pakietu: Uruchamianie komendy "%1 %2".</translation> - </message> - <message> - <source>Packaging failed.</source> - <translation type="vanished">Błąd pakowania.</translation> - </message> - <message> - <source>Packaging error: Could not start command '%1 %2'. Reason: %3</source> - <translation type="vanished"> -Błąd pakowania: Nie można uruchomić komendy "%1 %2". Przyczyna: %3</translation> - </message> - <message> - <source>Packaging Error: Command '%1 %2' failed.</source> - <translation type="vanished">Błąd pakowania: Komenda "%1 %2" zakończona błędem.</translation> - </message> - <message> - <source>Reason: %1</source> - <translation type="vanished">Przyczyna: %1</translation> - </message> - <message> - <source>Exit code: %1</source> - <translation type="vanished">Kod wyjściowy: %1</translation> - </message> - <message> - <source>Certificate</source> - <translation type="vanished">Certyfikat</translation> - </message> - <message> - <source>Certificate password (%1):</source> - <translation type="vanished">Hasło dla certyfikatu (%1):</translation> - </message> -</context> -<context> - <name>Android::Internal::AndroidPackageCreationWidget</name> - <message> - <source><b>Package configurations</b></source> - <translation type="vanished"><b>Konfiguracje pakietu</b></translation> - </message> -</context> -<context> - <name>Android::Internal::AndroidPackageInstallationFactory</name> - <message> - <source>Deploy to device</source> - <translation type="vanished">Zainstaluj na urządzeniu</translation> - </message> -</context> -<context> - <name>Android::Internal::AndroidPackageInstallationStep</name> - <message> - <source>Copy application data</source> - <translation type="vanished">Skopiuj dane aplikacji</translation> - </message> - <message> - <source>Removing directory %1</source> - <translation type="vanished">Usuwanie katalogu %1</translation> - </message> -</context> -<context> <name>Android::Internal::AndroidQtVersion</name> <message> <source>Failed to detect the ABIs used by the Qt version.</source> @@ -26455,17 +21759,6 @@ Błąd pakowania: Nie można uruchomić komendy "%1 %2". Przyczyna: %3 </message> </context> <context> - <name>Android::Internal::AndroidRunConfiguration</name> - <message> - <source>The .pro file '%1' is currently being parsed.</source> - <translation type="vanished">Trwa parsowanie pliku projektu "%1".</translation> - </message> - <message> - <source>Run on Android device</source> - <translation type="vanished">Uruchom na urządzeniu Android</translation> - </message> -</context> -<context> <name>Android::Internal::AndroidRunControl</name> <message> <source>Starting remote process.</source> @@ -26519,10 +21812,6 @@ Błąd pakowania: Nie można uruchomić komendy "%1 %2". Przyczyna: %3 <translation type="unfinished"></translation> </message> <message> - <source>Unable to start '%1'.</source> - <translation type="vanished">Nie można uruchomić "%1".</translation> - </message> - <message> <source>"%1" terminated.</source> <translation>Zakończono "%1".</translation> </message> @@ -26564,6 +21853,12 @@ Błąd pakowania: Nie można uruchomić komendy "%1 %2". Przyczyna: %3 <source>The Android NDK cannot be installed into a path with spaces.</source> <translation>Nie można zainstalować Android NDK w ścieżce zawierającej spacje.</translation> </message> + <message> + <source>Qt versions for %1 architectures are missing. +To add the Qt versions, select Options > Build & Run > Qt Versions.</source> + <translation>Brak wersji Qt dla architektury %1. +Wersje Qt można dodać w Opcje -> Budowanie i uruchamianie -> Wersje Qt.</translation> + </message> <message numerus="yes"> <source>Found %n toolchains for this NDK.</source> <translation> @@ -26580,13 +21875,7 @@ Aby dodać wersję Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tra </message> <message> <source>Select JDK Path</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Qt versions for architectures %1 are missing. -To add the Qt versions, select Options > Build & Run > Qt Versions.</source> - <translation>Brak ustawionych wersji Qt dla architektur %1. -Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</translation> + <translation>Wybierz ścieżkę do JDK</translation> </message> <message> <source>The Platform tools are missing. Please use the Android SDK Manager to install them.</source> @@ -26598,18 +21887,18 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran </message> <message> <source>Remove Android Virtual Device</source> - <translation type="unfinished"></translation> + <translation>Usuń wirtualne urządzenie Android</translation> </message> <message> <source>Remove device "%1"? This cannot be undone.</source> - <translation type="unfinished"></translation> + <translation>Usunąć urządzenie "%1"? Zmiana ta będzie nieodwracalna.</translation> </message> <message> <source>Unsupported GDB</source> - <translation type="unfinished"></translation> + <translation>Nieobsługiwany GDB</translation> </message> <message> - <source>The GDB inside this NDK seems to not support Python. The Qt Project offers fixed GDB builds at: <a href="http://download.qt-project.org/official_releases/gdb/">http://download.qt-project.org/official_releases/gdb/</a></source> + <source>The GDB inside this NDK seems to not support Python. The Qt Project offers fixed GDB builds at: <a href="http://download.qt.io/official_releases/gdb/">http://download.qt.io/official_releases/gdb/</a></source> <translation type="unfinished"></translation> </message> <message> @@ -26624,10 +21913,6 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran <source>Select ant Script</source> <translation>Wybierz skrypt "ant"</translation> </message> - <message> - <source>Select OpenJDK Path</source> - <translation type="vanished">Wybierz ścieżkę do OpenJDK</translation> - </message> </context> <context> <name>Android::Internal::AndroidToolChainFactory</name> @@ -26724,10 +22009,6 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran <context> <name>AutotoolsProjectManager::Internal::AutotoolsManager</name> <message> - <source>Failed opening project '%1': Project is not a file</source> - <translation type="vanished">Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik</translation> - </message> - <message> <source>Failed opening project "%1": Project is not a file</source> <translation>Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik</translation> </message> @@ -26810,14 +22091,6 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran <source>Make</source> <translation>Make</translation> </message> - <message> - <source>Qt Creator needs a compiler set up to build. Configure a compiler in the kit options.</source> - <translation type="vanished">Do budowy Qt Creator wymaga ustawionego kompilatora. Skonfiguruj go w opcjach zestawu narzędzi.</translation> - </message> - <message> - <source>Configuration is faulty. Check the Issues view for details.</source> - <translation type="vanished">Błędna konfiguracja. Sprawdź szczegóły w widoku "Problemy budowania".</translation> - </message> </context> <context> <name>AutotoolsProjectManager::Internal::MakeStepConfigWidget</name> @@ -26832,21 +22105,6 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran </message> </context> <context> - <name>BinEditorDocument</name> - <message> - <source>The Binary Editor cannot open empty files.</source> - <translation type="vanished">Edytor plików binarnych nie może otwierac pustych plików.</translation> - </message> - <message> - <source>Cannot open %1: %2</source> - <translation type="vanished">Nie można otworzyć %1: %2</translation> - </message> - <message> - <source>File Error</source> - <translation type="vanished">Błąd pliku</translation> - </message> -</context> -<context> <name>Bookmarks::Internal::BookmarkViewFactory</name> <message> <source>Alt+Meta+M</source> @@ -26888,10 +22146,6 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran <translation>Element o nazwie "%1" istnieje już w tym miejscu. Czy nadpisać go?</translation> </message> <message> - <source>An item named '%1' already exists at this location. Do you want to overwrite it?</source> - <translation type="vanished">Element o nazwie "%1" istnieje już w tym miejscu. Czy nadpisać go?</translation> - </message> - <message> <source>Save File As</source> <translation>Zapisz plik jako</translation> </message> @@ -26952,12 +22206,12 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran <translation type="unfinished"></translation> </message> <message> - <source>Enter function name</source> - <translation>Wprowadź nazwę funkcji</translation> + <source>Function name</source> + <translation>Nazwa funkcji</translation> </message> <message> - <source>Invalid function name</source> - <translation>Niepoprawna nazwa funkcji</translation> + <source>Access</source> + <translation>Dostęp</translation> </message> </context> <context> @@ -26970,10 +22224,6 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran <context> <name>Debugger::Internal::BreakTreeView</name> <message> - <source>Delete Breakpoint</source> - <translation>Usuń pułapkę</translation> - </message> - <message> <source>Delete All Breakpoints</source> <translation>Usuń wszystkie pułapki</translation> </message> @@ -26986,8 +22236,8 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran <translation>Usuń pułapki w pliku</translation> </message> <message> - <source>Adjust Column Widths to Contents</source> - <translation type="vanished">Wyrównaj szerokości kolumn do ich zawartości</translation> + <source>Delete Selected Breakpoints</source> + <translation>Usuń zaznaczone pułapki</translation> </message> <message> <source>Edit Breakpoint...</source> @@ -27104,50 +22354,8 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran </message> </context> <context> - <name>Debugger::DebuggerEnginePrivate</name> - <message> - <source>Debugged executable</source> - <translation>Debugowany program</translation> - </message> - <message> - <source>Attempting to interrupt.</source> - <translation>Próba przerwania.</translation> - </message> -</context> -<context> - <name>Debugger::Internal::DebuggerRunConfigWidget</name> - <message> - <source>Debugger Settings</source> - <translation>Ustawienia debuggera</translation> - </message> - <message> - <source>Enable C++</source> - <translation>Uaktywnij C++</translation> - </message> - <message> - <source>Enable QML</source> - <translation>Uaktywnij QML</translation> - </message> - <message> - <source>Debug port:</source> - <translation>Port debugowania:</translation> - </message> - <message> - <source><a href="qthelp://org.qt-project.qtcreator/doc/creator-debugging-qml.html">What are the prerequisites?</a></source> - <translation><a href="qthelp://org.qt-project.qtcreator/doc/creator-debugging-qml.html">Jakie są wymagania?</a></translation> - </message> - <message> - <source>Enable Debugging of Subprocesses</source> - <translation>Uaktywnij debugowanie podprocesów</translation> - </message> -</context> -<context> <name>DebuggerPlugin</name> <message> - <source>Unable to create a debugger engine of the type '%1'</source> - <translation type="vanished">Nie można utworzyć silnika debuggera typu "%1"</translation> - </message> - <message> <source>Install &Debug Information</source> <translation>Zainstaluj informację &debugową</translation> </message> @@ -27162,6 +22370,18 @@ Aby dodać wersje Qt wybierz Opcje | Budowanie i uruchamianie | Wersje Qt.</tran <source>Attached to process %1.</source> <translation>Dołączono do procesu %1.</translation> </message> + <message> + <source>Attached to running application</source> + <translation>Dołączono do uruchomionej aplikacji</translation> + </message> + <message> + <source>Failed to attach to application: %1</source> + <translation>Nie można dołączyć do aplikacji: %1</translation> + </message> + <message> + <source>Debugger Error</source> + <translation>Błąd debuggera</translation> + </message> </context> <context> <name>Debugger::Internal::GdbCoreEngine</name> @@ -27465,38 +22685,6 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział </message> </context> <context> - <name>Debugger::Internal::QmlAdapter</name> - <message> - <source>Connecting to debug server %1:%2</source> - <translation type="vanished">Łączenie z serwerem debugowym %1: %2</translation> - </message> - <message> - <source>Error: (%1) %2</source> - <comment>%1=error code, %2=error message</comment> - <translation type="vanished">Błąd: (%1) %2</translation> - </message> - <message> - <source>Disconnected.</source> - <translation type="vanished">Rozłączony.</translation> - </message> - <message> - <source>Connected.</source> - <translation type="vanished">Połączony.</translation> - </message> - <message> - <source>Resolving host.</source> - <translation type="vanished">Rozwiązywanie adresu hosta.</translation> - </message> - <message> - <source>Connecting to debug server.</source> - <translation type="vanished">Łączenie z serwerem debugowym.</translation> - </message> - <message> - <source>Closing.</source> - <translation type="vanished">Zamykanie.</translation> - </message> -</context> -<context> <name>Debugger::Internal::QmlInspectorAgent</name> <message> <source>Success:</source> @@ -27508,40 +22696,6 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział </message> </context> <context> - <name>Debugger::Internal::QmlLiveTextPreview</name> - <message> - <source>The %1 attribute at line %2, column %3 cannot be changed without reloading the QML application. </source> - <translation>Atrybut %1 w linii %2, w kolumnie %3, nie może być zmieniony bez przeładowania aplikacji QML. </translation> - </message> - <message> - <source>The %1 element at line %2, column %3 cannot be changed without reloading the QML application. </source> - <translation>Element %1 w linii %2, w kolumnie %3, nie może być zmieniony bez przeładowania aplikacji QML. </translation> - </message> - <message> - <source>The changes in JavaScript cannot be applied without reloading the QML application. </source> - <translation>Nie można zastosować zmian w JavaScript bez przeładowania aplikacji QML. </translation> - </message> - <message> - <source>The changes made cannot be applied without reloading the QML application. </source> - <translation>Nie można zastosować zmian bez przeładowania aplikacji QML. </translation> - </message> - <message> - <source>You can continue debugging, but behavior can be unexpected.</source> - <translation>Można kontynuować debugowanie, ale zachowanie może być nieoczekiwane.</translation> - </message> - <message> - <source>Reload QML</source> - <translation>Przeładuj QML</translation> - </message> -</context> -<context> - <name>Debugger::Internal::QmlV8DebuggerClient</name> - <message> - <source>Anonymous Function</source> - <translation>Anonimowa funkcja</translation> - </message> -</context> -<context> <name>Debugger::Internal::RegisterTreeView</name> <message> <source>Reload Register Listing</source> @@ -27758,10 +22912,6 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział <translation type="unfinished"></translation> </message> <message> - <source>Change Local Display Format...</source> - <translation>Zmień format wyświetlania zmiennych lokalnych...</translation> - </message> - <message> <source>Copy View Contents to Clipboard</source> <translation>Skopiuj zawartość widoku do schowka</translation> </message> @@ -27814,14 +22964,6 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział <translation>Automatyczny</translation> </message> <message> - <source>Change Display for Type or Item...</source> - <translation type="vanished">Zmień wyświetlanie dla typu lub elementu...</translation> - </message> - <message> - <source>Add Data Breakpoint...</source> - <translation>Dodaj pułapkę warunkową...</translation> - </message> - <message> <source>Add Data Breakpoint at Object's Address (0x%1)</source> <translation>Dodaj pułapkę warunkową pod adresem obiektu (0x%1)</translation> </message> @@ -27874,6 +23016,18 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział <translation type="unfinished"></translation> </message> <message> + <source>Remove All Expression Evaluators</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Change Local Display Format</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Open Memory Editor</source> + <translation type="unfinished">Otwórz edytor pamięci</translation> + </message> + <message> <source>Open Memory Editor...</source> <translation>Otwórz edytor pamięci...</translation> </message> @@ -27898,26 +23052,14 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział <translation>Otwórz edytor pamięci z układem stosu</translation> </message> <message> - <source>Copy Contents to Clipboard</source> - <translation type="vanished">Skopiuj zawartość do schowka</translation> - </message> - <message> <source>Copy Value to Clipboard</source> <translation>Skopiuj wartość do schowka</translation> </message> <message> - <source>Show View Contents in Editor</source> - <translation type="vanished">Pokaż zawartość widoku w edytorze</translation> - </message> - <message> <source>Close Editor Tooltips</source> <translation>Zamknij podpowiedzi edytora</translation> </message> <message> - <source>Expression:</source> - <translation type="vanished">Wyrażenie:</translation> - </message> - <message> <source>Locals & Expressions</source> <translation>Zmienne lokalne i wyrażenia</translation> </message> @@ -27996,10 +23138,6 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział <translation>&Odśwież</translation> </message> <message> - <source>&Show...</source> - <translation type="vanished">&Pokaż...</translation> - </message> - <message> <source>&Show</source> <translation>&Pokaż</translation> </message> @@ -28019,10 +23157,6 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział <context> <name>Gerrit::Internal::GerritModel</name> <message> - <source><html><head/><body><table><tr><td>Subject</td><td>%1</td></tr><tr><td>Number</td><td><a href="%11">%2</a></td></tr><tr><td>Owner</td><td>%3 <a href="mailto:%4">%4</a></td></tr><tr><td>Project</td><td>%5 (%6)</td></tr><tr><td>Status</td><td>%7, %8</td></tr><tr><td>Patch set</td><td>%9</td></tr>%10<tr><td>URL</td><td><a href="%11">%11</a></td></tr></table></body></html></source> - <translation type="vanished"><html><head/><body><table><tr><td>Temat</td><td>%1</td></tr><tr><td>Numer</td><td><a href="%11">%2</a></td></tr><tr><td>Właściciel</td><td>%3 <a href="mailto:%4">%4</a></td></tr><tr><td>Projekt</td><td>%5 (%6)</td></tr><tr><td>Stan</td><td>%7, %8</td></tr><tr><td>Zestaw łat</td><td>%9</td></tr>%10<tr><td>URL</td><td><a href="%11">%11</a></td></tr></table></body></html></translation> - </message> - <message> <source>Subject</source> <translation>Temat</translation> </message> @@ -28074,26 +23208,10 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział <source>Parse error: "%1"</source> <translation>Błąd parsowania: "%1"</translation> </message> - <message> - <source>Parse error: '%1' -> %2</source> - <translation type="vanished">Błąd parsowania: "%1" -> %2</translation> - </message> - <message> - <source>Parse error: '%1'</source> - <translation type="vanished">Błąd parsowania: "%1"</translation> - </message> - <message> - <source>Parse error in line '%1'</source> - <translation type="vanished">Błąd parsowania w linii "%1"</translation> - </message> </context> <context> <name>Gerrit::Internal::QueryContext</name> <message> - <source>Gerrit</source> - <translation type="vanished">Gerrit</translation> - </message> - <message> <source>Querying Gerrit</source> <translation type="unfinished"></translation> </message> @@ -28114,10 +23232,10 @@ Wskakiwanie do wnętrza modułu lub ustawianie pułapek w plikach powinno dział <translation>Przekroczony czas oczekiwania</translation> </message> <message> - <source>The gerrit process has not responded within %1s. + <source>The gerrit process has not responded within %1 s. Most likely this is caused by problems with SSH authentication. Would you like to terminate it?</source> - <translation>Proces gerrit nie odpowiedział po %1s. + <translation>Proces gerrit nie odpowiedział po %1 s. Najprawdopodobniej jest to problem autoryzacji SSH. Czy zakończyć proces?</translation> </message> @@ -28144,10 +23262,6 @@ Czy zakończyć proces?</translation> <translation>HTTPS</translation> </message> <message> - <source>Always prompt for repository folder</source> - <translation type="vanished">Zawsze pytaj o katalog repozytorium</translation> - </message> - <message> <source>&Host:</source> <translation>&Host:</translation> </message> @@ -28160,24 +23274,6 @@ Czy zakończyć proces?</translation> <translation>&ssh:</translation> </message> <message> - <source>&Repository:</source> - <translation type="vanished">&Repozytorium:</translation> - </message> - <message> - <source>Default repository where patches will be applied.</source> - <translation type="vanished">Domyślne repozytorium do którego będą aplikowane łaty.</translation> - </message> - <message> - <source>Pr&ompt:</source> - <translation type="vanished">Py&taj:</translation> - </message> - <message> - <source>If checked, user will always be -asked to confirm the repository path.</source> - <translation type="vanished">Jeśli zaznaczone, użytkownik będzie -zawsze pytany o potwierdzenie ścieżki do repozytorium.</translation> - </message> - <message> <source>&Port:</source> <translation>&Port:</translation> </message> @@ -28195,10 +23291,6 @@ zawsze pytany o potwierdzenie ścieżki do repozytorium.</translation> <context> <name>Gerrit::Internal::FetchContext</name> <message> - <source>Gerrit Fetch</source> - <translation type="vanished">Gerrit Fetch</translation> - </message> - <message> <source>Fetching from Gerrit</source> <translation>Pobieranie danych z Gerrita</translation> </message> @@ -28260,10 +23352,6 @@ were not verified among remotes in %3. Select different folder?</source> <source>Enter Local Repository for "%1" (%2)</source> <translation>Podaj lokalne repozytorium dla "%1" (%2)</translation> </message> - <message> - <source>Enter Local Repository for '%1' (%2)</source> - <translation type="vanished">Podaj lokalne repozytorium dla "%1" (%2)</translation> - </message> </context> <context> <name>Git::Internal::GitLogArgumentsWidget</name> @@ -28287,6 +23375,10 @@ were not verified among remotes in %3. Select different folder?</source> <context> <name>Git::Internal::GitSubmitEditorWidget</name> <message> + <source>Provide a valid email to commit.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Detached HEAD</source> <translation>Odłączony HEAD</translation> </message> @@ -28650,14 +23742,6 @@ Spróbować ponownie?</translation> <source>Failed to connect!</source> <translation>Nie można uzyskać połączenia!</translation> </message> - <message> - <source>QML Profiler: Connecting to %1:%2 ...</source> - <translation type="vanished">Profiler QML: łączenie z %1:%2...</translation> - </message> - <message> - <source>QML Profiler: connected and running</source> - <translation type="vanished">Profiler QML: połączony i uruchomiony</translation> - </message> </context> <context> <name>QmlProfiler::Internal::QmlProfilerEventsWidget</name> @@ -28773,26 +23857,6 @@ odniesienia do elementów w innych plikach, pętle, itd.)</translation> <context> <name>QmlProfiler::Internal::QmlProfilerTraceView</name> <message> - <source>Jump to previous event.</source> - <translation type="vanished">Skocz do poprzedniego zdarzenia.</translation> - </message> - <message> - <source>Jump to next event.</source> - <translation type="vanished">Skocz do następnego zdarzenia.</translation> - </message> - <message> - <source>Show zoom slider.</source> - <translation type="vanished">Pokaż suwak powiększania.</translation> - </message> - <message> - <source>Select range.</source> - <translation type="vanished">Wybierz zakres.</translation> - </message> - <message> - <source>View event information on mouseover.</source> - <translation type="vanished">Pokazuj informacje o zdarzeniach po najechaniu myszą.</translation> - </message> - <message> <source>Limit Events Pane to Current Range</source> <translation>Ogranicz liczbę zdarzeń panelu do bieżącego zakresu</translation> </message> @@ -28812,421 +23876,9 @@ odniesienia do elementów w innych plikach, pętle, itd.)</translation> <translation>Zdarzenia</translation> </message> <message> - <source>V8</source> - <translation>V8</translation> - </message> - <message> <source>Timeline</source> <translation>Oś czasu</translation> </message> - <message> - <source>JavaScript</source> - <translation type="vanished">JavaScript</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryAbstractDeployStep</name> - <message> - <source>Starting: "%1" %2</source> - <translation>Uruchamianie "%1" %2</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryApplicationRunner</name> - <message> - <source>Cannot determine device runtime version.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cannot determine API level version.</source> - <translation>Nie można określić wersji poziomu API.</translation> - </message> - <message> - <source>Confirmation</source> - <translation>Potwierdzenie</translation> - </message> - <message> - <source>The device runtime version (%1) does not match the API level version (%2). -This may cause unexpected behavior when debugging. -Do you want to continue anyway?</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>API level version does not match Runtime version.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Querying device runtime version...</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Launching application failed</source> - <translation>Nie można uruchomić aplikacji</translation> - </message> - <message> - <source>Checking qmljsdebugger command line argument.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cannot find Native Packager executable.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cannot read bar package manifest.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Internal error: Cannot create temporary manifest file "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cannot set command line arguments.</source> - <translation>Nie można ustawić argumentów linii komend.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryCreatePackageStep</name> - <message> - <source>Create packages</source> - <translation>Utwórz pakiety</translation> - </message> - <message> - <source>Could not find packager command '%1' in the build environment.</source> - <translation type="vanished">Nie można odnaleźć komendy pakującej "%1" w środowisku budowania.</translation> - </message> - <message> - <source>Could not find packager command "%1" in the build environment.</source> - <translation>Nie można odnaleźć komendy pakującej "%1" w środowisku budowania.</translation> - </message> - <message> - <source>No packages enabled for deployment.</source> - <translation>Brak włączonych pakietów do instalacji.</translation> - </message> - <message> - <source>BAR application descriptor file not specified. Check deployment settings.</source> - <translation>Nie podano pliku deskryptora aplikacji, sprawdź ustawienia instalacji.</translation> - </message> - <message> - <source>No package specified. Check deployment settings.</source> - <translation>Nie podano pakietu, sprawdź ustawienia instalacji.</translation> - </message> - <message> - <source>Could not create build directory "%1".</source> - <translation>Nie można utworzyć katalogu budowania "%1".</translation> - </message> - <message> - <source>In order to link to the correct Qt library specified in the deployment settings Qt Creator needs to update the Qt environment variables in the BAR application file as follows: - -<env var="LD_LIBRARY_PATH" value="%1"/> -<env var="QT_PLUGIN_PATH" value="%2"/> -<env var="QML_IMPORT_PATH" value="%3"/> -</source> - <translation type="unfinished"></translation> - </message> - <message> - <source> -Do you want to update it?</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Confirmation</source> - <translation>Potwierdzenie</translation> - </message> - <message> - <source>Error saving BAR application descriptor file "%1" - %2</source> - <translation>Błąd podczas zachowywania pliku BAR deskryptora aplikacji "%1" %2</translation> - </message> - <message> - <source>Could not create build directory '%1'.</source> - <translation type="vanished">Nie można utworzyć katalogu budowania "%1".</translation> - </message> - <message> - <source>Missing passwords for signing packages.</source> - <translation>Brak haseł do podpisania pakietów.</translation> - </message> - <message> - <source>Error opening BAR application descriptor file "%1" - %2</source> - <translation>Błąd podczas otwierania pliku BAR deskryptora aplikacji "%1" %2</translation> - </message> - <message> - <source>Error preparing BAR application descriptor file.</source> - <translation>Błąd przygotowywania pliku BAR deskryptora aplikacji.</translation> - </message> - <message> - <source>Error opening BAR application descriptor file '%1' - %2</source> - <translation type="vanished">Błąd otwierania pliku BAR deskryptora aplikacji "%1" %2</translation> - </message> - <message> - <source>Error saving prepared BAR application descriptor file '%1' - %2</source> - <translation type="vanished">Błąd podczas zachowywania pliku BAR deskryptora aplikacji "%1" %2</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryCreatePackageStepConfigWidget</name> - <message> - <source>Use the Qt libraries shipped with the BlackBerry device.</source> - <translation>Używaj bibliotek Qt dostarczonych z urządzeniem BlackBerry.</translation> - </message> - <message> - <source>Include Qt libraries in the package. This will increase the package size.</source> - <translation>Dołączaj biblioteki Qt do pakietu. Pakiet zwiększy swój rozmiar.</translation> - </message> - <message> - <source>Use deployed Qt libraries on the device.</source> - <translation>Używaj bibliotek Qt na urządzeniu.</translation> - </message> - <message> - <source>Use Pre-installed Qt</source> - <translation>Używaj preinstalowanego Qt</translation> - </message> - <message> - <source>Bundle Qt in Package</source> - <translation>Dowiązuj Qt do pakietu</translation> - </message> - <message> - <source>Use Deployed Qt</source> - <translation>Używaj zainstalowanego Qt</translation> - </message> - <message> - <source><b>Create packages</b></source> - <translation><b>Utwórz pakiety</b></translation> - </message> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Sign packages</source> - <translation>Podpisane pakiety</translation> - </message> - <message> - <source>CSK password:</source> - <translation>Hasło CSK:</translation> - </message> - <message> - <source>Keystore password:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Note: This will store the passwords in a world-readable file.</source> - <translation>Uwaga: hasła zostaną zachowane w pliku dostępnym dla wszystkich.</translation> - </message> - <message> - <source>Save passwords</source> - <translation>Zachowaj hasła</translation> - </message> - <message> - <source>Show passwords</source> - <translation>Pokaż hasła</translation> - </message> - <message> - <source>Package in development mode</source> - <translation>Pakiet w trybie deweloperskim</translation> - </message> - <message> - <source>/accounts/devuser/</source> - <translation>/accounts/devuser/</translation> - </message> - <message> - <source>Deploy Now</source> - <translation>Zainstaluj teraz</translation> - </message> - <message> - <source>No device configured, cannot deploy.</source> - <translation>Brak skonfigurowanego urządzenia, nie można zainstalować.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryCreatePackageStepFactory</name> - <message> - <source>Create BAR Packages</source> - <translation>Utwórz pakiety BAR</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeployConfiguration</name> - <message> - <source>Deploy to BlackBerry Device</source> - <translation>Zainstaluj na urządzeniu BlackBerry</translation> - </message> - <message> - <source>Setup Application Descriptor File</source> - <translation type="vanished">Ustaw plik deskryptora aplikacji</translation> - </message> - <message> - <source>You need to set up a BAR descriptor file to enable packaging. -Do you want Qt Creator to generate it for your project (%1)?</source> - <translation type="vanished">Należy ustawić plik deskryptora aplikacji BAR aby umożliwić utorzenie pakietu. -Czy wygenerować plik BAR dla projektu (%1)?</translation> - </message> - <message> - <source>Do not ask again for this project</source> - <translation type="vanished">Nie pytaj więcej o ten projekt</translation> - </message> - <message> - <source>Reading the BAR descriptor template failed.</source> - <translation type="vanished">Błąd odczytu szablonu deskryptora BAR.</translation> - </message> - <message> - <source>Writing the BAR descriptor file failed.</source> - <translation type="vanished">Błąd zapisu pliku deskryptora BAR.</translation> - </message> - <message> - <source>Cannot Set up Application Descriptor File</source> - <translation type="vanished">Nie można ustawić pliku deskryptora aplikacji</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeployConfigurationFactory</name> - <message> - <source>Deploy to BlackBerry Device</source> - <translation>Zainstaluj na urządzeniu BlackBerry</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeployInformation</name> - <message> - <source>Enabled</source> - <translation>Aktywne</translation> - </message> - <message> - <source>Application descriptor file</source> - <translation>Plik deskryptora aplikacji</translation> - </message> - <message> - <source>Package</source> - <translation>Pakiet</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeployStep</name> - <message> - <source>Deploy packages</source> - <translation>Zainstaluj pakiety</translation> - </message> - <message> - <source>Could not find deploy command '%1' in the build environment</source> - <translation type="vanished">Nie można odnaleźć komendy instalującej "%1" w środowisku budowania</translation> - </message> - <message> - <source>Could not find deploy command "%1" in the build environment</source> - <translation>Nie można odnaleźć komendy instalującej "%1" w środowisku budowania</translation> - </message> - <message> - <source>No hostname specified for device</source> - <translation>Brak nazwy hosta dla urządzenia</translation> - </message> - <message> - <source>No packages enabled for deployment</source> - <translation>Brak pakietów do instalacji</translation> - </message> - <message> - <source>Package "%1" does not exist. Create the package first.</source> - <translation>Pakiet "%1" nie istnieje. Najpierw go utwórz.</translation> - </message> - <message> - <source>Package '%1' does not exist. Create the package first.</source> - <translation type="vanished">Pakiet "%1" nie istnieje. Najpierw go utwórz.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeployStepConfigWidget</name> - <message> - <source><b>Deploy packages</b></source> - <translation><b>Zainstaluj pakiety</b></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeployStepFactory</name> - <message> - <source>Deploy Package</source> - <translation>Zainstaluj pakiet</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeviceConfiguration</name> - <message> - <source>BlackBerry</source> - <translation>BlackBerry</translation> - </message> - <message> - <source>Connect to device</source> - <translation>Połącz z urządzeniem</translation> - </message> - <message> - <source>Disconnect from device</source> - <translation>Rozłącz z urządzeniem</translation> - </message> - <message> - <source>Deploy Qt libraries...</source> - <translation>Instaluj biblioteki Qt...</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeviceConfigurationFactory</name> - <message> - <source>BlackBerry Device</source> - <translation>Urządzenie BlackBerry</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeviceConfigurationWizard</name> - <message> - <source>New BlackBerry Device Configuration Setup</source> - <translation>Nowa konfiguracja urządzenia BlackBerry</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeviceConfigurationWizardFinalPage</name> - <message> - <source>Summary</source> - <translation>Podsumowanie</translation> - </message> - <message> - <source>The new device configuration will be created now.</source> - <translation>Zostanie teraz utworzona nowa konfiguracja urządzenia.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryQtVersion</name> - <message> - <source>BlackBerry %1</source> - <comment>Qt Version is meant for BlackBerry</comment> - <translation>BlackBerry %1</translation> - </message> - <message> - <source>BlackBerry</source> - <translation>BlackBerry</translation> - </message> - <message> - <source>BlackBerry Native SDK:</source> - <translation>Natywny SDK BlackBerry:</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryRunConfiguration</name> - <message> - <source>Run on BlackBerry device</source> - <translation>Uruchom na urządzeniu BlackBerry</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryRunControlFactory</name> - <message> - <source>No active deploy configuration</source> - <translation>Brak aktywnej konfiguracji instalacji</translation> - </message> - <message> - <source>Target Qt version (%1) might not support QML profiling. Cascades applications are not affected and should work as expected. For more info see http://qt-project.org/wiki/Qt-Creator-with-BlackBerry-10</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Qnx::Internal::QnxAbstractQtVersion</name> - <message> - <source>No SDK path set</source> - <translation>Nie ustawiono ścieżki do SDK</translation> - </message> </context> <context> <name>Qnx::Internal::QnxDebugSupport</name> @@ -29246,10 +23898,6 @@ Czy wygenerować plik BAR dla projektu (%1)?</translation> <source>Warning: "slog2info" is not found on the device, debug output not available.</source> <translation>Ostrzeżenie: brak"slog2info" na urządzeniu, komunikaty debugowe nie będą dostępne.</translation> </message> - <message> - <source>Warning: "slog2info" is not found on the device, debug output not available!</source> - <translation type="vanished">Ostrzeżenie: brak"slog2info" na urządzeniu, komunikaty debugowe nie będą dostępne.</translation> - </message> </context> <context> <name>Qnx::Internal::QnxDeployConfigurationFactory</name> @@ -29302,8 +23950,8 @@ Czy wygenerować plik BAR dla projektu (%1)?</translation> <translation>QNX</translation> </message> <message> - <source>QNX Software Development Platform:</source> - <translation>Platforma dewelopmentowa QNX:</translation> + <source>No SDK path was set up.</source> + <translation>Nie ustawiono ścieżki do SDK.</translation> </message> </context> <context> @@ -29327,17 +23975,9 @@ Czy wygenerować plik BAR dla projektu (%1)?</translation> <translation>Plik wykonywalny:</translation> </message> <message> - <source>Arguments:</source> - <translation>Argumenty:</translation> - </message> - <message> <source>Working directory:</source> <translation>Katalog roboczy:</translation> </message> - <message> - <source>Run in &terminal</source> - <translation>Uruchom w &terminalu</translation> - </message> </context> <context> <name>QtSupport::CustomExecutableRunConfiguration</name> @@ -29484,10 +24124,6 @@ w ścieżce.</translation> <source>Cannot check for free disk space: "%1" is not an absolute path.</source> <translation>Nie można sprawdzić wolnego miejsca na dysku: "%1" nie jest ścieżką bezwzględną.</translation> </message> - <message> - <source>Unexpected output from remote process: '%1'.</source> - <translation type="vanished">Nieoczekiwany komunikat od zdalnego procesu: "%1".</translation> - </message> <message numerus="yes"> <source>The remote file system has only %n megabytes of free space, but %1 megabytes are required.</source> <translation> @@ -29504,10 +24140,6 @@ w ścieżce.</translation> <numerusform>Zdalny system plików ma %n megabajtów wolnego miejsca, wznowiono pracę.</numerusform> </translation> </message> - <message> - <source>Cannot check for free disk space: '%1' is not an absolute path.</source> - <translation type="vanished">Nie można sprawdzić wolnego miejsca na dysku: "%1" nie jest ścieżką bezwzględną.</translation> - </message> </context> <context> <name>RemoteLinux::Internal::RemoteLinuxCheckForFreeDiskSpaceStepWidget</name> @@ -29794,6 +24426,14 @@ w ścieżce.</translation> <source>VOBs list, separated by comma. Indexer will only traverse the specified VOBs. If left blank, all active VOBs will be indexed.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Check out or check in files with no comment (-nc/omment).</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Do &not prompt for comment during check out or check in</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ClearCase::Internal::UndoCheckOut</name> @@ -29865,13 +24505,6 @@ w ścieżce.</translation> </message> </context> <context> - <name>ClearCase::Internal::ClearCaseEditor</name> - <message> - <source>Annotate version "%1"</source> - <translation type="vanished">Dołącz adnotację do wersji "%1"</translation> - </message> -</context> -<context> <name>ClearCase::Internal::ClearCasePlugin</name> <message> <source>C&learCase</source> @@ -30165,10 +24798,6 @@ w ścieżce.</translation> <source>Enter activity headline</source> <translation type="unfinished"></translation> </message> - <message> - <source>CC Indexing</source> - <translation type="vanished">Indeksowanie CC</translation> - </message> </context> <context> <name>ClearCase::Internal::ClearCaseSubmitEditor</name> @@ -30199,12 +24828,12 @@ w ścieżce.</translation> <translation>Komenda ClearCase</translation> </message> <message> - <source>In order to use External diff, 'diff' command needs to be accessible.</source> - <translation>Aby użyć zewnętrzego edytora różnic, należy udostępnić komendę "diff".</translation> + <source>In order to use External diff, "diff" command needs to be accessible.</source> + <translation type="unfinished"></translation> </message> <message> - <source>DiffUtils is available for free download <a href="http://gnuwin32.sourceforge.net/packages/diffutils.htm">here</a>. Please extract it to a directory in your PATH.</source> - <translation>DiffUtils można darmowo pobrać <a href="http://gnuwin32.sourceforge.net/packages/diffutils.htm">tutaj</a>. Rozpakuj pakiet w katalogu dostępnym ze zmiennej PATH.</translation> + <source>DiffUtils is available for free download athttp://gnuwin32.sourceforge.net/packages/diffutils.htm.Extract it to a directory in your PATH.</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -30303,10 +24932,6 @@ w ścieżce.</translation> <source>The <RCC> root element is missing.</source> <translation>Brak głównego elementu <RCC>.</translation> </message> - <message> - <source>Cannot write file. Disk full?</source> - <translation type="vanished">Nie można zapisać pliku. Pełny dysk?</translation> - </message> </context> <context> <name>ClearCase::Internal::ClearCaseControl</name> @@ -30348,14 +24973,6 @@ w ścieżce.</translation> <translation>Brak ustawionego debuggera.</translation> </message> <message> - <source>Debugger '%1' not found.</source> - <translation type="vanished">Brak debuggera "%1".</translation> - </message> - <message> - <source>Debugger '%1' not executable.</source> - <translation type="vanished">Debugger "%1" nie jest plikiem wykonywalnym.</translation> - </message> - <message> <source>Debugger "%1" not found.</source> <translation>Brak debuggera "%1".</translation> </message> @@ -30372,8 +24989,24 @@ w ścieżce.</translation> <translation type="unfinished"></translation> </message> <message> - <source>unknown</source> - <translation>nieznany</translation> + <source>Unknown debugger version</source> + <translation>Nieznana wersja debuggera</translation> + </message> + <message> + <source>Unknown debugger ABI</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Name of Debugger</source> + <translation>Nazwa debuggera</translation> + </message> + <message> + <source>Unknown debugger</source> + <translation>Nieznany debugger</translation> + </message> + <message> + <source>Unknown debugger type</source> + <translation>Nieznany typ debuggera</translation> </message> <message> <source>No Debugger</source> @@ -30434,7 +25067,7 @@ w ścieżce.</translation> <translation>Nazwa aktywnego zestawu narzędzi.</translation> </message> <message> - <source>The name of the currently active kit in a filesystem friendly version.</source> + <source>The name of the currently active kit in a filesystem-friendly version.</source> <translation>Nazwa aktywnego zestawu narzędzi w wersji przyjaznej dla systemu plików.</translation> </message> <message> @@ -30494,10 +25127,6 @@ w ścieżce.</translation> <context> <name>ProjectExplorer::DeviceKitInformation</name> <message> - <source>Device does not match device type.</source> - <translation type="vanished">Urządzenie nie odpowiada typowi urządzenia.</translation> - </message> - <message> <source>No device set.</source> <translation>Brak ustawionego urządzenia.</translation> </message> @@ -30682,47 +25311,68 @@ w ścieżce.</translation> <translation>"mkspec" bieżącej wersji Qt.</translation> </message> <message> - <source>None</source> - <translation>Brak</translation> + <source>The installation prefix of the current Qt version.</source> + <translation>Przedrostek instalacji bieżącej wersji Qt.</translation> </message> <message> - <source>Name of Qt Version</source> - <translation>Nazwa wersji Qt</translation> + <source>The installation location of the current Qt version's data.</source> + <translation>Położenie danych wewnątrz instalacji bieżącej wersji Qt.</translation> </message> <message> - <source>unknown</source> - <translation>nieznana</translation> + <source>The installation location of the current Qt version's header files.</source> + <translation>Położenie plików nagłówkowych wewnątrz instalacji bieżącej wersji Qt.</translation> </message> -</context> -<context> - <name>CMakeProjectManager::Internal::ChooseCMakePage</name> <message> - <source>CMake Executable:</source> - <translation>Plik wykonywalny CMake:</translation> + <source>The installation location of the current Qt version's library files.</source> + <translation>Położenie plików bibliotecznych wewnątrz instalacji bieżącej wersji Qt.</translation> </message> <message> - <source>Choose CMake Executable</source> - <translation>Wybierz plik wykonywalny CMake</translation> + <source>The installation location of the current Qt version's documentation files.</source> + <translation>Położenie plików z dokumentacją wewnątrz instalacji bieżącej wersji Qt.</translation> </message> <message> - <source>The CMake executable is valid.</source> - <translation>Plik wykonywalny CMake jest poprawny.</translation> + <source>The installation location of the current Qt version's executable files.</source> + <translation>Położenie plików wykonywalnych wewnątrz instalacji bieżącej wersji Qt.</translation> </message> <message> - <source>Specify the path to the CMake executable. No CMake executable was found in the path.</source> - <translation>Podaj ścieżkę do pliku wykonywalnego CMake. Nie odnaleziono go w ścieżce.</translation> + <source>The installation location of the current Qt version's plugins.</source> + <translation>Położenie wtyczek wewnątrz instalacji bieżącej wersji Qt.</translation> </message> <message> - <source>The CMake executable (%1) does not exist.</source> - <translation>Plik wykonywalny CMake (%1) nie istnieje.</translation> + <source>The installation location of the current Qt version's imports.</source> + <translation>Położenie importów wewnątrz instalacji bieżącej wersji Qt.</translation> </message> <message> - <source>The path %1 is not an executable.</source> - <translation>Ścieżka %1 nie wskazuje na plik wykonywalny.</translation> + <source>The installation location of the current Qt version's translation files.</source> + <translation>Położenie plików z tłumaczeniami wewnątrz instalacji bieżącej wersji Qt.</translation> </message> <message> - <source>The path %1 is not a valid CMake executable.</source> - <translation>Ścieżka %1 nie wskazuje na poprawny plik wykonywalny CMake.</translation> + <source>The installation location of the current Qt version's examples.</source> + <translation>Położenie przykładów wewnątrz instalacji bieżącej wersji Qt.</translation> + </message> + <message> + <source>The installation location of the current Qt version's demos.</source> + <translation>Położenie dem wewnątrz instalacji bieżącej wersji Qt.</translation> + </message> + <message> + <source>The current Qt version's default mkspecs.</source> + <translation>Domyślny mkspecs bieżącej wersji Qt.</translation> + </message> + <message> + <source>The current Qt's qmake version.</source> + <translation>Wersja qmake bieżącej wersji Qt.</translation> + </message> + <message> + <source>None</source> + <translation>Brak</translation> + </message> + <message> + <source>Name of Qt Version</source> + <translation>Nazwa wersji Qt</translation> + </message> + <message> + <source>unknown</source> + <translation>nieznana</translation> </message> </context> <context> @@ -30773,60 +25423,10 @@ w ścieżce.</translation> <source>Select all, if possible: </source> <translation>Zaznacz wszystko, jeśli to możliwe: </translation> </message> - <message> - <source>Mixed</source> - <translation type="vanished">Mieszane</translation> - </message> - <message> - <source>No Version Control System Found</source> - <translation type="vanished">Brak systemu kontroli wersji (VCS)</translation> - </message> - <message> - <source>Cannot Set Permissions</source> - <translation type="vanished">Nie można ustawić praw dostępu</translation> - </message> - <message> - <source>Cannot Save File</source> - <translation type="vanished">Nie można zachować pliku</translation> - </message> - <message> - <source>Cannot open file %1 from version control system. -No version control system found.</source> - <translation type="vanished">Nie można otworzyć pliku %1 z systemu kontroli wersji. -Brak systemu kontroli wersji.</translation> - </message> - <message> - <source>Cannot set permissions for %1 to writable.</source> - <translation type="vanished">Nie można uczynić pliku %1 zapisywalnym.</translation> - </message> - <message> - <source>Cannot save file %1</source> - <translation type="vanished">Nie można zachować pliku %1</translation> - </message> - <message> - <source>Canceled Changing Permissions</source> - <translation type="vanished">Anulowano zmianę praw dostępu</translation> - </message> - <message> - <source>Could Not Change Permissions on Some Files</source> - <translation type="vanished">Nie można zmienić praw dostępu niektórych plików</translation> - </message> - <message> - <source>See details for a complete list of files.</source> - <translation type="vanished">W szczegółach pełna lista plików.</translation> - </message> - <message> - <source>Change &Permission</source> - <translation type="vanished">Zmień &prawa dostępu</translation> - </message> </context> <context> <name>Debugger::Internal::SymbolPathsDialog</name> <message> - <source>Dialog</source> - <translation>Dialog</translation> - </message> - <message> <source><html><head/><body><p>The debugger is not configured to use the public Microsoft Symbol Server.<br/>This is recommended for retrieval of the symbols of the operating system libraries.</p><p><span style=" font-style:italic;">Note:</span> It is recommended, that if you use the Microsoft Symbol Server, to also use a local symbol cache.<br/>A fast internet connection is required for this to work smoothly,<br/>and a delay might occur when connecting for the first time and caching the symbols.</p><p>What would you like to set up?</p></body></html></source> <translation><html><head/><body><p>Debugger nie jest skonfigurowany do użycia publicznego Microsoft Symbol Servera.<br/>Zalecane jest pobranie symboli dla bibliotek systemu operacyjnego. </p><p><span style=" font-style:italic;"><i>Uwaga:</i> Zalecane jest używanie lokalnego cache'a z symbolami wraz z Microsoft Symbol Serverem.<br/>Wymagane jest szybkie połączenie z internetem do płynnego działania.<br>Może wystąpić opóźnienie przy pierwszym połączeniu i cache'owaniu symboli.</p><p>Czy skonfigurować?</p></body></html></translation> </message> @@ -30839,8 +25439,8 @@ Brak systemu kontroli wersji.</translation> <translation>Użyj Microsoft Symbol Servera</translation> </message> <message> - <source>Do not ask again</source> - <translation>Nie pytaj ponownie</translation> + <source>Set up Symbol Paths</source> + <translation>Ustaw ścieżki z symbolami</translation> </message> </context> <context> @@ -30889,18 +25489,6 @@ Brak systemu kontroli wersji.</translation> <translation>Wyślij do Gerrita</translation> </message> <message> - <source><b>Local repository:</b></source> - <translation><b>Lokalne repozytorium:</b></translation> - </message> - <message> - <source>Destination:</source> - <translation>Przeznaczenie:</translation> - </message> - <message> - <source>R&emote:</source> - <translation>Zdaln&e repozytorium:</translation> - </message> - <message> <source>&Topic:</source> <translation>&Temat:</translation> </message> @@ -30913,10 +25501,6 @@ Brak systemu kontroli wersji.</translation> <translation>Liczba zmian</translation> </message> <message> - <source>&Push up to commit:</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Pushes the selected commit and all dependent commits.</source> <translation type="unfinished"></translation> </message> @@ -30925,18 +25509,6 @@ Brak systemu kontroli wersji.</translation> <translation>&Recenzenci:</translation> </message> <message> - <source>Comma-separated list of reviewers. - -Partial names can be used if they are unambiguous.</source> - <translation type="vanished">Lista recenzentów, oddzielona przecinkami. - -Można używać częściowych nazw, jeśli będą unikatowe.</translation> - </message> - <message> - <source><b>Local repository:</b> %1</source> - <translation><b>Lokalne repozytorium:</b> %1</translation> - </message> - <message> <source>Number of commits between %1 and %2: %3</source> <translation>Liczba zmian pomiędzy %1 a %2: %3</translation> </message> @@ -30945,14 +25517,6 @@ Można używać częściowych nazw, jeśli będą unikatowe.</translation> <translation>... Dołącz inne gałęzie ...</translation> </message> <message> - <source>&Local branch:</source> - <translation>&Lokalna gałąź:</translation> - </message> - <message> - <source>Target &branch:</source> - <translation>Docelowa &gałąź:</translation> - </message> - <message> <source>Comma-separated list of reviewers. Reviewers can be specified by nickname or email address. Spaces not allowed. @@ -30960,6 +25524,22 @@ Reviewers can be specified by nickname or email address. Spaces not allowed. Partial names can be used if they are unambiguous.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Push:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Commits:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Local repository</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>To:</source> + <translation type="unfinished">Do:</translation> + </message> </context> <context> <name>Mercurial::Internal::AuthenticationDialog</name> @@ -30968,10 +25548,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Dialog</translation> </message> <message> - <source>User name:</source> - <translation type="vanished">Nazwa użytkownika:</translation> - </message> - <message> <source>Password:</source> <translation>Hasło:</translation> </message> @@ -31046,8 +25622,12 @@ Partial names can be used if they are unambiguous.</source> <translation>Może to sprawić, że aplikacja stanie się podatna na ataki. Używaj tylko w bezpiecznym środowisku.</translation> </message> <message> - <source>Parallel Jobs:</source> - <translation>Liczba równoległych zadań:</translation> + <source>Could not split properties.</source> + <translation>Nie można rozdzielić właściwości.</translation> + </message> + <message> + <source>No ":" found in property definition.</source> + <translation>Brak ":" w definicji właściwości.</translation> </message> <message> <source>Flags:</source> @@ -31074,12 +25654,20 @@ Partial names can be used if they are unambiguous.</source> <translation>Budowanie będzie kontynuowane, nawet jeśli wystąpią błędy, o ile budowanie w dalszym ciągu będzie możliwe.</translation> </message> <message> - <source>Instead of using the file timestamps that are stored in the build graph, retrieve the timestamps from the file system.</source> - <translation type="vanished">Zamiast używania czasów dostępu, zgromadzonych w grafie budowania, pobiera je z systemu plików.</translation> + <source>Parallel jobs:</source> + <translation>Liczba równoległych zadań:</translation> </message> <message> - <source>Check timestamps</source> - <translation type="vanished">Spawdzaj czas dostępu</translation> + <source>Show command lines</source> + <translation>Pokazuj linie komend</translation> + </message> + <message> + <source>Install</source> + <translation>Zainstaluj</translation> + </message> + <message> + <source>Clean install root</source> + <translation>Wyczyść korzeń instalacji</translation> </message> </context> <context> @@ -31182,18 +25770,10 @@ Partial names can be used if they are unambiguous.</source> <translation>Tekst</translation> </message> <message> - <source>The text shown on the button</source> - <translation type="vanished">Tekst pokazany na przycisku</translation> - </message> - <message> <source>Checked</source> <translation>Wciśnięty</translation> </message> <message> - <source>The state of the button</source> - <translation type="vanished">Stan przycisku</translation> - </message> - <message> <source>Text displayed on the button.</source> <translation>Tekst pokazany na przycisku.</translation> </message> @@ -31261,14 +25841,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Tekst</translation> </message> <message> - <source>The text shown on the check box</source> - <translation type="vanished">Tekst etykiety przycisku wyboru</translation> - </message> - <message> - <source>The state of the check box</source> - <translation type="vanished">Stan przycisku wyboru</translation> - </message> - <message> <source>Determines whether the check box gets focus if pressed.</source> <translation>Określa, czy przycisk wyboru otrzymuje fokus po naciśnięciu.</translation> </message> @@ -31300,14 +25872,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Określa, czy pole wyboru otrzymuje fokus po naciśnięciu.</translation> </message> <message> - <source>Tool tip</source> - <translation type="vanished">Podpowiedź</translation> - </message> - <message> - <source>The tool tip shown for the combobox.</source> - <translation type="vanished">Podpowiedź ukazująca się dla pola wyboru.</translation> - </message> - <message> <source>Focus on press</source> <translation>Fokus po naciśnięciu</translation> </message> @@ -31323,10 +25887,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Tekst</translation> </message> <message> - <source>The text label for the radio button</source> - <translation type="vanished">Tekst etykiety przycisku opcji</translation> - </message> - <message> <source>Text label for the radio button.</source> <translation>Tekst etykiety przycisku opcji.</translation> </message> @@ -31374,26 +25934,14 @@ Partial names can be used if they are unambiguous.</source> <translation>Marginesy dokumentu</translation> </message> <message> - <source>The margins of the text area</source> - <translation type="vanished">Marginesy pola tekstowego</translation> - </message> - <message> <source>Text Area</source> <translation>Obszar tekstowy</translation> </message> <message> - <source>The text shown on the text area</source> - <translation type="vanished">Tekst pokazany w obszarze tekstowym</translation> - </message> - <message> <source>Frame width</source> <translation>Szerokość ramki</translation> </message> <message> - <source>The width of the frame</source> - <translation type="vanished">Szerokość ramki</translation> - </message> - <message> <source>Margins of the text area.</source> <translation>Marginesy pola tekstowego.</translation> </message> @@ -31449,18 +25997,10 @@ Partial names can be used if they are unambiguous.</source> <translation>Tekst</translation> </message> <message> - <source>The text shown on the text field</source> - <translation type="vanished">Tekst pokazany w polu tekstowym</translation> - </message> - <message> <source>Placeholder text</source> <translation>Tekst zastępczy</translation> </message> <message> - <source>The placeholder text</source> - <translation type="vanished">Tekst zastępczy</translation> - </message> - <message> <source>Read only</source> <translation>Tylko do odczytu</translation> </message> @@ -31469,14 +26009,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Określa, czy pole tekstowe jest edytowalne.</translation> </message> <message> - <source>Password mode</source> - <translation type="vanished">Tryb hasła</translation> - </message> - <message> - <source>Determines whether the text field is in password mode.</source> - <translation type="vanished">Określa, czy pole tekstowe jest w trybie hasła.</translation> - </message> - <message> <source>Text shown on the text field.</source> <translation>Tekst pokazany w polu tekstowym.</translation> </message> @@ -31538,767 +26070,6 @@ Partial names can be used if they are unambiguous.</source> </message> </context> <context> - <name>Qnx::Internal::BarDescriptorEditorAssetsWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Add...</source> - <translation>Dodaj...</translation> - </message> - <message> - <source>Remove</source> - <translation>Usuń</translation> - </message> - <message> - <source>Path</source> - <translation>Ścieżka</translation> - </message> - <message> - <source>Destination</source> - <translation>Przeznaczenie</translation> - </message> - <message> - <source>Entry-Point</source> - <translation>Punkt wejścia</translation> - </message> - <message> - <source>Select File to Add</source> - <translation>Wybierz plik do dodania</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorEditorAuthorInformationWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Author:</source> - <translation>Autor:</translation> - </message> - <message> - <source>Author ID:</source> - <translation>Identyfikator autora:</translation> - </message> - <message> - <source>Set from debug token...</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Select Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Debug token:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Error Reading Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>There was a problem reading debug token.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorEditorEntryPointWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Name:</source> - <translation>Nazwa:</translation> - </message> - <message> - <source>Description:</source> - <translation>Opis:</translation> - </message> - <message> - <source>Icon:</source> - <translation>Ikona:</translation> - </message> - <message> - <source>Clear</source> - <translation>Wyczyść</translation> - </message> - <message> - <source>Splash screens:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Add...</source> - <translation>Dodaj...</translation> - </message> - <message> - <source>Remove</source> - <translation>Usuń</translation> - </message> - <message> - <source>Images (*.jpg *.png)</source> - <translation>Pliki graficzne (*.jpg *.png)</translation> - </message> - <message> - <source>Select Splash Screen</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><font color="red">Could not open "%1" for reading.</font></source> - <translation><font color="red">Nie można otworzyć '%1' do odczytu.</font></translation> - </message> - <message> - <source><font color="red">Could not open '%1' for reading.</font></source> - <translation type="vanished"><font color="red">Nie można otworzyć '%1' do odczytu.</font></translation> - </message> - <message> - <source><font color="red">The selected image is too big (%1x%2). The maximum size is %3x%4 pixels.</font></source> - <translation><font color="red">Wybrany plik graficzny jest za duży (%1x%2). Maksymalny rozmiar to %3x%4 piksli.</font></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorEditorEnvironmentWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Device Environment</source> - <translation>Środowisko urządzenia</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorEditorGeneralWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Orientation:</source> - <translation>Orientacja:</translation> - </message> - <message> - <source>Chrome:</source> - <translation>Chrome:</translation> - </message> - <message> - <source>Transparent main window</source> - <translation>Główne okno przezroczyste</translation> - </message> - <message> - <source>Application Arguments:</source> - <translation>Argumenty aplikacji:</translation> - </message> - <message> - <source>Default</source> - <translation>Domyślna</translation> - </message> - <message> - <source>Auto-orient</source> - <translation>Automatyczna</translation> - </message> - <message> - <source>Landscape</source> - <translation>Pejzaż</translation> - </message> - <message> - <source>Portrait</source> - <translation>Portret</translation> - </message> - <message> - <source>Standard</source> - <translation>Standard</translation> - </message> - <message> - <source>None</source> - <translation>Brak</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorEditorPackageInformationWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Package ID:</source> - <translation>Identyfikator pakietu:</translation> - </message> - <message> - <source>Package version:</source> - <translation>Wersja pakietu:</translation> - </message> - <message> - <source>Package build ID:</source> - <translation>Identyfikator wersji pakietu:</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorEditorPermissionsWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Select All</source> - <translation>Zaznacz wszystko</translation> - </message> - <message> - <source>Deselect All</source> - <translation>Odznacz wszystko</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryCreateCertificateDialog</name> - <message> - <source>Create Certificate</source> - <translation>Utwórz certyfikat</translation> - </message> - <message> - <source>Author:</source> - <translation>Autor:</translation> - </message> - <message> - <source>Password:</source> - <translation>Hasło:</translation> - </message> - <message> - <source>Confirm password:</source> - <translation>Potwierdź hasło:</translation> - </message> - <message> - <source>Show password</source> - <translation>Pokaż hasło</translation> - </message> - <message> - <source>Status</source> - <translation>Stan</translation> - </message> - <message> - <source>Base directory does not exist.</source> - <translation>Katalog bazowy nie istnieje.</translation> - </message> - <message> - <source>The entered passwords do not match.</source> - <translation>Wprowadzone hasła nie zgadzają się.</translation> - </message> - <message> - <source>Password must be at least 6 characters long.</source> - <translation>Hasło musi się składać przynajmniej z sześciu znaków.</translation> - </message> - <message> - <source>Are you sure?</source> - <translation>Czy kontynuować?</translation> - </message> - <message> - <source>The file '%1' will be overwritten. Do you want to proceed?</source> - <translation type="vanished">Plik "%1" zostanie nadpisany. Kontynuować?</translation> - </message> - <message> - <source>The file "%1" will be overwritten. Do you want to proceed?</source> - <translation>Plik "%1" zostanie nadpisany. Kontynuować?</translation> - </message> - <message> - <source>The blackberry-keytool process is already running.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>The password entered is invalid.</source> - <translation>Wprowadzone hasło jest niepoprawne.</translation> - </message> - <message> - <source>The password entered is too short.</source> - <translation>Wprowadzone hasło jest za krótkie.</translation> - </message> - <message> - <source>Invalid output format.</source> - <translation>Niepoprawny format wyjściowy.</translation> - </message> - <message> - <source>An unknown error occurred.</source> - <translation>Wystąpił nieznany błąd.</translation> - </message> - <message> - <source>Error</source> - <translation>Błąd</translation> - </message> - <message> - <source>Please be patient...</source> - <translation>Cierpliwości...</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDebugTokenRequestDialog</name> - <message> - <source>Request Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Debug token path:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Device PIN:</source> - <translation>PIN urządzenia:</translation> - </message> - <message> - <source>Status</source> - <translation>Stan</translation> - </message> - <message> - <source>BAR Files (*.bar)</source> - <translation>Pliki BAR (*.bar)</translation> - </message> - <message> - <source>Requesting Device PIN...</source> - <translation>Oczekiwanie na PIN urządzenia...</translation> - </message> - <message> - <source>Base directory does not exist.</source> - <translation>Katalog bazowy nie istnieje.</translation> - </message> - <message> - <source>Are you sure?</source> - <translation>Czy kontynuować?</translation> - </message> - <message> - <source>The file '%1' will be overwritten. Do you want to proceed?</source> - <translation type="vanished">Plik "%1" zostanie nadpisany. Kontynuować?</translation> - </message> - <message> - <source>The file "%1" will be overwritten. Do you want to proceed?</source> - <translation>Plik "%1" zostanie nadpisany. Kontynuować?</translation> - </message> - <message> - <source>Failed to request debug token:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Wrong CSK password.</source> - <translation>Złe hasło CSK.</translation> - </message> - <message> - <source>Wrong keystore password.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Network unreachable.</source> - <translation>Sieć nieosiągalna.</translation> - </message> - <message> - <source>Illegal device PIN.</source> - <translation>Niepoprawny PIN urządzenia.</translation> - </message> - <message> - <source>Failed to start inferior process.</source> - <translation>Nie można uruchomić podprocesu.</translation> - </message> - <message> - <source>Inferior processes timed out.</source> - <translation>Przekroczony czas oczekiwania na podproces.</translation> - </message> - <message> - <source>Inferior process has crashed.</source> - <translation>Podproces zakończył pracę błędem.</translation> - </message> - <message> - <source>Failed to communicate with the inferior process.</source> - <translation>Nie można skomunikować się z podprocesem.</translation> - </message> - <message> - <source>Not yet registered to request debug tokens.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>An unknwon error has occurred.</source> - <translation>Wystąpił nieznany błąd.</translation> - </message> - <message> - <source>Error</source> - <translation>Błąd</translation> - </message> - <message> - <source>Requesting debug token...</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryImportCertificateDialog</name> - <message> - <source>Import Certificate</source> - <translation>Zaimportuj certyfikat</translation> - </message> - <message> - <source>Path:</source> - <translation>Ścieżka:</translation> - </message> - <message> - <source>Password:</source> - <translation>Hasło:</translation> - </message> - <message> - <source>PKCS 12 Archives (*.p12)</source> - <translation>Archiwa PKCS 12 (*.p12)</translation> - </message> - <message> - <source>The keystore password is invalid.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Error parsing inferior process output.</source> - <translation>Błąd parsowania wyjścia podprocesu.</translation> - </message> - <message> - <source>An unknown error has occurred.</source> - <translation>Wystąpił nieznany błąd.</translation> - </message> - <message> - <source>Error</source> - <translation>Błąd</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryKeysWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>BlackBerry Signing Authority</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Developer Certificate</source> - <translation>Certyfikat dewelopera</translation> - </message> - <message> - <source>Error</source> - <translation>Błąd</translation> - </message> - <message> - <source>STATUS</source> - <translation>STAN</translation> - </message> - <message> - <source>Path:</source> - <translation>Ścieżka:</translation> - </message> - <message> - <source>PATH</source> - <translation>ŚCIEŻKA</translation> - </message> - <message> - <source>Author:</source> - <translation>Autor:</translation> - </message> - <message> - <source>LABEL</source> - <translation>ETYKIETA</translation> - </message> - <message> - <source>No developer certificate has been found.</source> - <translation>Brak certyfikatu deweloperskiego.</translation> - </message> - <message> - <source>Open Certificate</source> - <translation>Otwórz certyfikat</translation> - </message> - <message> - <source>Clear Certificate</source> - <translation>Wyczyść certyfikat</translation> - </message> - <message> - <source>Path</source> - <translation>Ścieżka</translation> - </message> - <message> - <source>Author</source> - <translation>Autor</translation> - </message> - <message> - <source>PINs</source> - <translation>PINy</translation> - </message> - <message> - <source>Expiry</source> - <translation>Ważność</translation> - </message> - <message> - <source>Qt Creator</source> - <translation>Qt Creator</translation> - </message> - <message> - <source>Invalid certificate password. Try again?</source> - <translation>Niepoprawne hasło certyfikatu. Spróbować ponownie?</translation> - </message> - <message> - <source>Error loading certificate.</source> - <translation>Błąd ładowania certyfikatu.</translation> - </message> - <message> - <source>This action cannot be undone. Would you like to continue?</source> - <translation>Ta akcja nie będzie mogła zostać cofnięta. Kontynuować?</translation> - </message> - <message> - <source>It appears you are using legacy key files. Please refer to the <a href="%1">BlackBerry website</a> to find out how to update your keys.</source> - <translation>Użyto starych kluczy. Na <a href="%1">stronie BlackBerry</a> można znaleźć informacje o tym, jak je uaktualnić.</translation> - </message> - <message> - <source>No keys found. Please refer to the <a href="%1">BlackBerry website</a> to find out how to request your keys.</source> - <translation>Brak kluczy. Na <a href="%1">stronie BlackBerry</a> można znaleźć informacje o tym, jak je uzyskać.</translation> - </message> - <message> - <source>Select Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bar file (*.bar)</source> - <translation>Plik BAR (*.bar)</translation> - </message> - <message> - <source>Invalid Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Debug token file %1 cannot be read.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Confirmation</source> - <translation>Potwierdzenie</translation> - </message> - <message> - <source>Are you sure you want to remove %1?</source> - <translation>Czy usunąć %1?</translation> - </message> - <message> - <source>Failed to request debug token:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Wrong CSK password.</source> - <translation>Złe hasło CSK.</translation> - </message> - <message> - <source>Wrong keystore password.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Network unreachable.</source> - <translation>Sieć nieosiągalna.</translation> - </message> - <message> - <source>Illegal device PIN.</source> - <translation>Niepoprawny PIN urządzenia.</translation> - </message> - <message> - <source>Failed to start inferior process.</source> - <translation>Nie można uruchomić podprocesu.</translation> - </message> - <message> - <source>Inferior processes timed out.</source> - <translation>Przekroczony czas oczekiwania na podproces.</translation> - </message> - <message> - <source>Inferior process has crashed.</source> - <translation>Podproces zakończył pracę błędem.</translation> - </message> - <message> - <source>Failed to communicate with the inferior process.</source> - <translation>Nie można skomunikować się z podprocesem.</translation> - </message> - <message> - <source>Not yet registered to request debug tokens.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>An unknown error has occurred.</source> - <translation>Wystąpił nieznany błąd.</translation> - </message> - <message> - <source>Your keys are ready to be used</source> - <translation>Klucze są gotowe do użycia</translation> - </message> - <message> - <source>Create Certificate...</source> - <translation>Utwórz certyfikat...</translation> - </message> - <message> - <source>Debug Tokens</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Request...</source> - <translation>Żądanie...</translation> - </message> - <message> - <source>Import...</source> - <translation>Importuj...</translation> - </message> - <message> - <source>Edit...</source> - <translation>Modyfikuj...</translation> - </message> - <message> - <source>Remove</source> - <translation>Usuń</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryNDKSettingsWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Remove</source> - <translation>Usuń</translation> - </message> - <message> - <source>Auto-Detected</source> - <translation>Automatycznie wykryte</translation> - </message> - <message> - <source>Manual</source> - <translation>Ustawione ręcznie</translation> - </message> - <message> - <source>Configuration</source> - <translation>Konfiguracja</translation> - </message> - <message> - <source>API Levels</source> - <translation>Poziomy API</translation> - </message> - <message> - <source>Runtimes</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Invalid target %1:</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>- Target no longer installed.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>- No NDK environment file found.</source> - <translation>- Brak pliku ze środowiskiem NDK.</translation> - </message> - <message> - <source>- No Qt version found.</source> - <translation>- Brak wersji Qt.</translation> - </message> - <message> - <source>- No compiler found.</source> - <translation>- Brak kompilatora.</translation> - </message> - <message> - <source>- No debugger found for device.</source> - <translation>- Brak debuggera dla urządzenia.</translation> - </message> - <message> - <source>- No debugger found for simulator.</source> - <translation>- Brak debuggera dla symulatora.</translation> - </message> - <message> - <source>Clean BlackBerry 10 Configuration</source> - <translation>Wyczyść konfigurację BlackBerry 10</translation> - </message> - <message> - <source>Are you sure you want to remove: - %1?</source> - <translation>Czy usunąć: -%1?</translation> - </message> - <message> - <source>Runtime Information</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>API Level Information</source> - <translation>Informacja o poziomie API</translation> - </message> - <message> - <source>Environment file:</source> - <translation>Plik ze środowiskiem:</translation> - </message> - <message> - <source>Confirmation</source> - <translation>Potwierdzenie</translation> - </message> - <message> - <source>Are you sure you want to uninstall %1?</source> - <translation>Czy zdezinstalować %1?</translation> - </message> - <message> - <source>Newest Version</source> - <translation>Najnowsza wersja</translation> - </message> - <message> - <source>Activate</source> - <translation>Uaktywnij</translation> - </message> - <message> - <source>Deactivate</source> - <translation>Zdezaktywuj</translation> - </message> - <message> - <source>Default API level:</source> - <translation>Domyślny poziom API:</translation> - </message> - <message> - <source>Add...</source> - <translation>Dodaj...</translation> - </message> - <message> - <source>Clean Up</source> - <translation>Wyczyść</translation> - </message> - <message> - <source>GroupBox</source> - <translation>GroupBox</translation> - </message> - <message> - <source>Path:</source> - <translation>Ścieżka:</translation> - </message> - <message> - <source>Name:</source> - <translation>Nazwa:</translation> - </message> - <message> - <source>Version:</source> - <translation>Wersja:</translation> - </message> - <message> - <source>Host:</source> - <translation>Host:</translation> - </message> - <message> - <source>Target:</source> - <translation>Cel:</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerrySigningPasswordsDialog</name> - <message> - <source>Package signing passwords</source> - <translation>Hasła podpisujące pakiety</translation> - </message> - <message> - <source>CSK password:</source> - <translation>Hasło CSK:</translation> - </message> - <message> - <source>Keystore password:</source> - <translation></translation> - </message> -</context> -<context> <name>VcsBase::SubmitEditorWidget</name> <message> <source>Subversion Submit</source> @@ -32312,10 +26083,6 @@ Partial names can be used if they are unambiguous.</source> <source>F&iles</source> <translation>Pl&iki</translation> </message> - <message> - <source>Check a&ll</source> - <translation type="vanished">&Zaznacz wszystko</translation> - </message> <message numerus="yes"> <source>%1 %2/%n File(s)</source> <translation> @@ -32339,16 +26106,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Odznacz wszystko</translation> </message> <message> - <source>Check All</source> - <extracomment>Check all for submit</extracomment> - <translation type="vanished">Zaznacz wszystko</translation> - </message> - <message> - <source>Uncheck All</source> - <extracomment>Uncheck all for submit</extracomment> - <translation type="vanished">Odznacz wszystko</translation> - </message> - <message> <source>Select a&ll</source> <translation>Zaznacz &wszystko</translation> </message> @@ -32361,13 +26118,6 @@ Partial names can be used if they are unambiguous.</source> </message> </context> <context> - <name>CppQmlTypesLoader</name> - <message> - <source>%1 seems not to be encoded in UTF8 or has a BOM.</source> - <translation type="vanished">Wygląda na to, że %1 nie jest zakodowane w UTF-8 lub posiada BOM.</translation> - </message> -</context> -<context> <name>QmlJS::QrcParser</name> <message> <source>XML error on line %1, col %2: %3</source> @@ -32411,10 +26161,6 @@ Partial names can be used if they are unambiguous.</source> <context> <name>QmlJS::StaticAnalysisMessages</name> <message> - <source>Do not use '%1' as a constructor.</source> - <translation type="vanished">Nie używaj "%1" jako konstruktora.</translation> - </message> - <message> <source>Do not use "%1" as a constructor.</source> <translation>Nie używaj "%1" jako konstruktora.</translation> </message> @@ -32547,8 +26293,8 @@ Partial names can be used if they are unambiguous.</source> <translation>Funkcje nie są obsługiwane w formularzach Qt Quick UI.</translation> </message> <message> - <source>Java Script blocks are not supported in a Qt Quick UI form.</source> - <translation>Bloki Java Script nie są obsługiwane w formularzy Qt Quick UI.</translation> + <source>JavaScript blocks are not supported in a Qt Quick UI form.</source> + <translation type="unfinished"></translation> </message> <message> <source>Behavior type is not supported in a Qt Quick UI form.</source> @@ -32563,18 +26309,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Odwołanie do rodzica elementu głównego nie jest obsługiwane w formularzu Qt Quick UI.</translation> </message> <message> - <source>Invalid property name '%1'.</source> - <translation type="vanished">Niepoprawna nazwa właściwości "%1".</translation> - </message> - <message> - <source>'%1' does not have members.</source> - <translation type="vanished">"%1" nie posiada składników.</translation> - </message> - <message> - <source>'%1' is not a member of '%2'.</source> - <translation type="vanished">"%1" nie jest składnikiem "%2".</translation> - </message> - <message> <source>Assignment in condition.</source> <translation>Podstawienie w warunku.</translation> </message> @@ -32599,34 +26333,10 @@ Partial names can be used if they are unambiguous.</source> <translation>Nie używaj wyrażeń przecinkowych.</translation> </message> <message> - <source>'%1' already is a formal parameter.</source> - <translation type="vanished">"%1" jest już formalnym parametrem.</translation> - </message> - <message> <source>Unnecessary message suppression.</source> <translation>Niepotrzebne stłumienie komunikatu.</translation> </message> <message> - <source>'%1' already is a function.</source> - <translation type="vanished">"%1" jest już funkcją.</translation> - </message> - <message> - <source>var '%1' is used before its declaration.</source> - <translation type="vanished">Zmienna "%1" jest użyta przed jej deklaracją.</translation> - </message> - <message> - <source>'%1' already is a var.</source> - <translation type="vanished">"%1" jest już zmienną.</translation> - </message> - <message> - <source>'%1' is declared more than once.</source> - <translation type="vanished">"%1" jest zadeklarowana więcej niż jeden raz.</translation> - </message> - <message> - <source>Function '%1' is used before its declaration.</source> - <translation type="vanished">Funkcja "%1" jest użyta przed jej deklaracją.</translation> - </message> - <message> <source>The 'function' keyword and the opening parenthesis should be separated by a single space.</source> <translation>Słowo kluczowe "function" i nawias otwierający powinny być oddzielone pojedynczą spacją.</translation> </message> @@ -32675,22 +26385,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Nieznany komponent.</translation> </message> <message> - <source>Could not resolve the prototype '%1' of '%2'.</source> - <translation type="vanished">Nie można rozwiązać prototypu "%1" klasy "%2".</translation> - </message> - <message> - <source>Could not resolve the prototype '%1'.</source> - <translation type="vanished">Nie można rozwiązać prototypu "%1".</translation> - </message> - <message> - <source>Prototype cycle, the last non-repeated component is '%1'.</source> - <translation type="vanished">Cykl w prototypie, ostatni niepowtórzony komponent to "%1".</translation> - </message> - <message> - <source>Invalid property type '%1'.</source> - <translation type="vanished">Niepoprawny typ właściwości "%1".</translation> - </message> - <message> <source>== and != perform type coercion, use === or !== to avoid it.</source> <translation>== i != mogą dokonać konwersji typu, zamiast tego używaj === lub !==.</translation> </message> @@ -32715,10 +26409,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Używaj %1 zamiast "var" lub "variant" aby poprawić wydajność.</translation> </message> <message> - <source>Missing property '%1'.</source> - <translation type="vanished">Brak właściwości "%1".</translation> - </message> - <message> <source>Object value expected.</source> <translation>Oczekiwano wartości w postaci obiektu.</translation> </message> @@ -32767,10 +26457,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Kod imperatywny nie jest obsługiwany w Qt Quick Designerze.</translation> </message> <message> - <source>This type is not supported in the Qt Quick Designer.</source> - <translation type="vanished">Ten typ nie jest obsługiwany przez Qt Quick Designera.</translation> - </message> - <message> <source>Reference to parent item cannot be resolved correctly by the Qt Quick Designer.</source> <translation>Qt Quick Designer nie może poprawnie rozwiązać referencji do rodzica elementu.</translation> </message> @@ -32898,6 +26584,10 @@ Partial names can be used if they are unambiguous.</source> <translation>Nazwa aplikacji:</translation> </message> <message> + <source>Activity name:</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Run:</source> <translation>Uruchom:</translation> </message> @@ -32926,14 +26616,6 @@ Partial names can be used if they are unambiguous.</source> <translation>API %1: %2</translation> </message> <message> - <source>Could not parse file: '%1'.</source> - <translation type="vanished">Błąd parsowania pliku: "%1".</translation> - </message> - <message> - <source>%2: Could not parse file: '%1'.</source> - <translation type="vanished">%2: Błąd parsowania pliku: "%1".</translation> - </message> - <message> <source>Application icon:</source> <translation>Ikona aplikacji:</translation> </message> @@ -32987,126 +26669,8 @@ Partial names can be used if they are unambiguous.</source> </message> </context> <context> - <name>Android::AndroidPlugin</name> - <message> - <source>Android Manifest file</source> - <translation>Plik manifest Androida</translation> - </message> - <message> - <source>Could not add mime-type for AndroidManifest.xml editor.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>BINEditor::BinEditorWidget</name> - <message> - <source>Memory at 0x%1</source> - <translation type="vanished">Pamięć w 0x%1</translation> - </message> - <message> - <source>Decimal&nbsp;unsigned&nbsp;value:</source> - <translation type="vanished">Wartość&nbsp;dziesiętna&nbsp;bez&nbsp;znaku:</translation> - </message> - <message> - <source>Decimal&nbsp;signed&nbsp;value:</source> - <translation type="vanished">Wartość&nbsp;dziesiętna&nbsp;ze&nbsp;znakiem:</translation> - </message> - <message> - <source>Previous&nbsp;decimal&nbsp;unsigned&nbsp;value:</source> - <translation type="vanished">Poprzednia&nbsp;wartość&nbsp;dziesiętna&nbsp;bez&nbsp;znaku:</translation> - </message> - <message> - <source>Previous&nbsp;decimal&nbsp;signed&nbsp;value:</source> - <translation type="vanished">Poprzednia&nbsp;wartość&nbsp;dziesiętna&nbsp;ze&nbsp;znakiem:</translation> - </message> - <message> - <source>%1-bit&nbsp;Integer&nbsp;Type</source> - <translation type="vanished">%1-bitowy&nbsp;typ&nbsp;całkowity</translation> - </message> - <message> - <source>Little Endian</source> - <translation type="vanished">Little Endian</translation> - </message> - <message> - <source>Big Endian</source> - <translation type="vanished">Big Endian</translation> - </message> - <message> - <source>Binary&nbsp;value:</source> - <translation type="vanished">Wartość&nbsp;binarna:</translation> - </message> - <message> - <source>Octal&nbsp;value:</source> - <translation type="vanished">Wartość&nbsp;ósemkowa:</translation> - </message> - <message> - <source>Previous&nbsp;binary&nbsp;value:</source> - <translation type="vanished">Poprzednia&nbsp;wartość&nbsp;binarna:</translation> - </message> - <message> - <source>Previous&nbsp;octal&nbsp;value:</source> - <translation type="vanished">Poprzednia&nbsp;wartość&nbsp;ósemkowa:</translation> - </message> - <message> - <source><i>double</i>&nbsp;value:</source> - <translation type="vanished">Wartość&nbsp;<i>double</i>:</translation> - </message> - <message> - <source>Previous <i>double</i>&nbsp;value:</source> - <translation type="vanished">Poprzednia&nbsp;wartość&nbsp;<i>double</i>:</translation> - </message> - <message> - <source><i>float</i>&nbsp;value:</source> - <translation type="vanished">Wartość&nbsp;<i>float</i>:</translation> - </message> - <message> - <source>Previous <i>float</i>&nbsp;value:</source> - <translation type="vanished">Poprzednia&nbsp;wartość&nbsp;<i>float</i>:</translation> - </message> - <message> - <source>Copying Failed</source> - <translation type="vanished">Błąd kopiowania</translation> - </message> - <message> - <source>You cannot copy more than 4 MB of binary data.</source> - <translation type="vanished">Nie można skopiować więcej niż 4 MB danych binarnych.</translation> - </message> - <message> - <source>Copy Selection as ASCII Characters</source> - <translation type="vanished">Skopiuj jako znaki ASCII</translation> - </message> - <message> - <source>Copy Selection as Hex Values</source> - <translation type="vanished">Skopiuj jako wartości szesnastkowe</translation> - </message> - <message> - <source>Set Data Breakpoint on Selection</source> - <translation type="vanished">Ustaw pułapkę warunkową na selekcji</translation> - </message> - <message> - <source>Jump to Address in This Window</source> - <translation type="vanished">Skocz do adresu w tym oknie</translation> - </message> - <message> - <source>Jump to Address in New Window</source> - <translation type="vanished">Skocz do adresu w nowym oknie</translation> - </message> - <message> - <source>Jump to Address 0x%1 in This Window</source> - <translation type="vanished">Skocz do adresu 0x%1 w tym oknie</translation> - </message> - <message> - <source>Jump to Address 0x%1 in New Window</source> - <translation type="vanished">Skocz do adresu 0x%1 w nowym oknie</translation> - </message> -</context> -<context> <name>Bookmarks::Internal::BookmarkManager</name> <message> - <source>Edit Note</source> - <translation type="vanished">Zmodyfikuj notatkę</translation> - </message> - <message> <source>Edit Bookmark</source> <translation>Zmodyfikuj zakładkę</translation> </message> @@ -33184,55 +26748,8 @@ Partial names can be used if they are unambiguous.</source> </message> </context> <context> - <name>Core::VariableManager</name> - <message> - <source>%1: Full path including file name.</source> - <translation type="vanished">%1: Pełna ścieżka zawierająca nazwę pliku.</translation> - </message> - <message> - <source>%1: Full path excluding file name.</source> - <translation type="vanished">%1: Pełna ścieżka bez nazwy pliku.</translation> - </message> - <message> - <source>%1: File name without path.</source> - <translation type="vanished">%1: Nazwa pliku bez ścieżki.</translation> - </message> - <message> - <source>%1: File base name without path and suffix.</source> - <translation type="vanished">%1: Bazowa nazwa pliku bez ścieżki i rozszerzenia.</translation> - </message> - <message> - <source>Access environment variables.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>CppEditor::Internal::CppEditorPlugin</name> <message> - <source>C++ Class</source> - <translation type="vanished">Klasa C++</translation> - </message> - <message> - <source>Creates a C++ header and a source file for a new class that you can add to a C++ project.</source> - <translation type="vanished">Tworzy plik nagłówkowy i źródłowy C++ z nową klasą, którą można dodać do projektu C++.</translation> - </message> - <message> - <source>Creates a C++ source file that you can add to a C++ project.</source> - <translation type="vanished">Tworzy plik źródłowy C++, który można dodać do projektu C++.</translation> - </message> - <message> - <source>C++ Source File</source> - <translation type="vanished">Plik źródłowy C++</translation> - </message> - <message> - <source>Creates a C++ header file that you can add to a C++ project.</source> - <translation type="vanished">Tworzy plik nagłówkowy C++, który można dodać do projektu C++.</translation> - </message> - <message> - <source>C++ Header File</source> - <translation type="vanished">Plik nagłówkowy C++</translation> - </message> - <message> <source>Shift+F2</source> <translation>Shift+F2</translation> </message> @@ -33314,25 +26831,6 @@ Partial names can be used if they are unambiguous.</source> </message> </context> <context> - <name>TextEditor::QuickFixFactory</name> - <message> - <source>Create Getter and Setter Member Functions</source> - <translation>Dodaj metodę zwracającą (getter) i ustawiającą (setter)</translation> - </message> - <message> - <source>Convert to Stack Variable</source> - <translation>Przekształć do zmiennej na stosie</translation> - </message> - <message> - <source>Convert to Pointer</source> - <translation>Przekształć do wskaźnika</translation> - </message> - <message> - <source>Generate Missing Q_PROPERTY Members...</source> - <translation>Wygeneruj brakujące składniki Q_PROPERTY...</translation> - </message> -</context> -<context> <name>CppEditor::QuickFix</name> <message> <source>Move Definition Outside Class</source> @@ -33343,6 +26841,14 @@ Partial names can be used if they are unambiguous.</source> <translation>Przenieś definicję do %1</translation> </message> <message> + <source>Move All Function Definitions Outside Class</source> + <translation>Przenieś wszystkie definicje funkcji poza klasę</translation> + </message> + <message> + <source>Move All Function Definitions to %1</source> + <translation>Przenieś wszystkie definicje funkcji do %1</translation> + </message> + <message> <source>Move Definition to Class</source> <translation>Przenieś definicję do klasy</translation> </message> @@ -33386,17 +26892,21 @@ Partial names can be used if they are unambiguous.</source> <translation>Wstaw definicje w pliku z implementacjami</translation> </message> <message> - <source>&Add keyword 'virtual' to function declaration</source> - <translation>&Dodaj słowo kluczowe "virtual" do deklaracji metod</translation> + <source>Add "&virtual" to function declaration</source> + <translation>Dodaj "&virtual" do deklaracji funkcji</translation> + </message> + <message> + <source>Add "override" equivalent to function declaration:</source> + <translation>Dodaj odpowiednik "override" do deklaracji funkcji:</translation> + </message> + <message> + <source>Clear Added "override" Equivalents</source> + <translation>Usuń dodany odpowiednik "override"</translation> </message> </context> <context> <name>CppTools::Internal::BuiltinIndexingSupport</name> <message> - <source>Parsing</source> - <translation type="vanished">Parsowanie</translation> - </message> - <message> <source>Parsing C/C++ Files</source> <translation>Parsowanie plików C / C++</translation> </message> @@ -33436,6 +26946,10 @@ Partial names can be used if they are unambiguous.</source> <source>&Edit</source> <translation>&Edycja</translation> </message> + <message> + <source>CVS Checkout</source> + <translation>Kopia robocza CVS</translation> + </message> </context> <context> <name>Debugger::Internal::CdbPathsPageWidget</name> @@ -33486,14 +27000,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Wypełniaj automatycznie widok pliku źródłowego</translation> </message> <message> - <source>Close temporary views on debugger exit</source> - <translation type="vanished">Zamykaj widoki tymczasowe po zakończeniu debugowania</translation> - </message> - <message> - <source>Stopping and stepping in the debugger will automatically open source or disassembler views associated with the current location. Select this option to automatically close them when the debugger exits.</source> - <translation type="vanished">Zatrzymanie lub kroczenie w debuggerze automatycznie otwiera widok źródła lub dezasemblacji bieżącego miejsca. Wybranie tej opcji spowoduje automatyczne zamknięcie tych widoków po zakończeniu debugowania.</translation> - </message> - <message> <source>Switch to previous mode on debugger exit</source> <translation>Przełączaj do poprzedniego trybu po zakończeniu debugowania</translation> </message> @@ -33502,10 +27008,6 @@ Partial names can be used if they are unambiguous.</source> <translation>Przywołuj Qt Creatora w przypadku zatrzymania aplikacji</translation> </message> <message> - <source>Shows QML object tree in Locals & Expressions when connected and not stepping.</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Enables a full file path in breakpoints by default also for GDB.</source> <translation>Domyślnie uaktywnia pełne ścieżki również dla GDB.</translation> </message> @@ -33523,7 +27025,7 @@ Partial names can be used if they are unambiguous.</source> </message> <message> <source>Stopping and stepping in the debugger will automatically open views associated with the current location.</source> - <translation type="unfinished"></translation> + <translation>Zatrzymanie i kroczenie w debuggerze automatycznie otworzy widoki związane z bieżącym położeniem.</translation> </message> <message> <source>Close temporary source views on debugger exit</source> @@ -33542,6 +27044,10 @@ Partial names can be used if they are unambiguous.</source> <translation>Opcja ta powoduje automatyczne zamykanie widoków pamięci otwartych w trakcie debugowania po jego zakończeniu.</translation> </message> <message> + <source>Shows QML object tree in Locals and Expressions when connected and not stepping.</source> + <translation>Pokazuje drzewo obiektów QML w widoku "Zmienne lokalne i wyrażenia" gdy podłączono i zatrzymano.</translation> + </message> + <message> <source>Set breakpoints using a full absolute path</source> <translation>Włącz pełne, bezwzględne ścieżki</translation> </message> @@ -33569,10 +27075,6 @@ Partial names can be used if they are unambiguous.</source> <source><unlimited></source> <translation><nieograniczona></translation> </message> - <message> - <source>Maximum string length:</source> - <translation type="vanished">Maksymalna długość ciągu tekstowego:</translation> - </message> </context> <context> <name>Debugger::DebuggerRunConfigurationAspect</name> @@ -33622,6 +27124,10 @@ Partial names can be used if they are unambiguous.</source> <translation>Nie można uruchomić adaptera.</translation> </message> <message> + <source>Setting up inferior...</source> + <translation type="unfinished">Ustawianie podprocesu...</translation> + </message> + <message> <source>Running requested...</source> <translation>Zażądano uruchomienia...</translation> </message> @@ -33667,53 +27173,6 @@ Partial names can be used if they are unambiguous.</source> </message> </context> <context> - <name>DiffEditor::DiffEditor</name> - <message> - <source>Ignore Whitespace</source> - <translation>Ignoruj białe znaki</translation> - </message> - <message> - <source>Context Lines:</source> - <translation>Linie z kontekstem:</translation> - </message> - <message> - <source>Reload Editor</source> - <translation>Przeładuj edytor</translation> - </message> - <message> - <source>Synchronize Horizontal Scroll Bars</source> - <translation>Synchronizuj poziome paski przesuwania</translation> - </message> - <message> - <source>[%1] vs. [%2] %3</source> - <translation>[%1] vs [%2] %3</translation> - </message> - <message> - <source>%1 vs. %2</source> - <translation>%1 vs %2</translation> - </message> - <message> - <source>[%1] %2 vs. [%3] %4</source> - <translation>[%1] %2 vs [%3] %4</translation> - </message> - <message> - <source>Hide Change Description</source> - <translation>Ukryj opis zmiany</translation> - </message> - <message> - <source>Show Change Description</source> - <translation>Pokaż opis zmiany</translation> - </message> - <message> - <source>Switch to Side By Side Diff Editor</source> - <translation>Przełącz do edytora różnic wyświetlającego zawartość sąsiadująco</translation> - </message> - <message> - <source>Switch to Unified Diff Editor</source> - <translation>Przełącz do edytora różnic wyświetlającego zawartość w formacie ujednoliconym</translation> - </message> -</context> -<context> <name>DiffEditor</name> <message> <source>Diff Editor</source> @@ -33755,21 +27214,6 @@ Partial names can be used if they are unambiguous.</source> </message> </context> <context> - <name>Git::Internal::GitDiffHandler</name> - <message> - <source>Working tree</source> - <translation type="vanished">Drzewo robocze</translation> - </message> - <message> - <source>Index</source> - <translation type="vanished">Indeks</translation> - </message> - <message> - <source>Waiting for data...</source> - <translation>Oczekiwanie na dane...</translation> - </message> -</context> -<context> <name>Git::Internal::LogChangeWidget</name> <message> <source>Sha1</source> @@ -34041,40 +27485,6 @@ Remote: %4</source> </message> </context> <context> - <name>PythonEditor::FileWizard</name> - <message> - <source>Python source file</source> - <translation type="vanished">Plik źródłowy Pythona</translation> - </message> - <message> - <source>Creates an empty Python script with UTF-8 charset</source> - <translation type="vanished">Tworzy pusty skrypt Python z kodowaniem UTF-8</translation> - </message> - <message> - <source>New %1</source> - <translation type="vanished">Nowy %1</translation> - </message> -</context> -<context> - <name>PythonEditor::ClassWizard</name> - <message> - <source>Python class</source> - <translation type="vanished">Klasa Pythona</translation> - </message> - <message> - <source>Creates new Python class</source> - <translation type="vanished">Tworzy nową klasę Pythona</translation> - </message> - <message> - <source>C++ module for Python</source> - <translation type="vanished">Moduł C++ dla Pythona</translation> - </message> - <message> - <source>Creates C++/Boost file with bindings for Python</source> - <translation type="vanished">Tworzy plik C++ / Boost z powiązaniem dla Pythona</translation> - </message> -</context> -<context> <name>QbsProjectManager::Internal::QbsBuildConfiguration</name> <message> <source>Parsing the Qbs project.</source> @@ -34097,10 +27507,22 @@ Remote: %4</source> <translation>Debug</translation> </message> <message> + <source>Debug</source> + <comment>Shadow build directory suffix</comment> + <extracomment>Non-ASCII characters in directory suffix may cause build issues.</extracomment> + <translation>Debug</translation> + </message> + <message> <source>Release</source> <extracomment>The name of the release build configuration created by default for a qbs project.</extracomment> <translation>Release</translation> </message> + <message> + <source>Release</source> + <comment>Shadow build directory suffix</comment> + <extracomment>Non-ASCII characters in directory suffix may cause build issues.</extracomment> + <translation>Release</translation> + </message> </context> <context> <name>QbsProjectManager::Internal::QbsBuildConfigurationWidget</name> @@ -34168,10 +27590,6 @@ Remote: %4</source> <context> <name>QbsProjectManager::Internal::QbsProject</name> <message> - <source>Evaluating</source> - <translation type="vanished">Ewaluowanie</translation> - </message> - <message> <source>Failed!</source> <translation>Niepoprawnie zakończone!</translation> </message> @@ -34180,23 +27598,12 @@ Remote: %4</source> <translation>Nie można zapisać pliku projektu %1.</translation> </message> <message> - <source>Reading Project "%1"</source> - <translation>Odczyt projektu "%1"</translation> - </message> -</context> -<context> - <name>QbsProjectManager::QbsManager</name> - <message> - <source>Failed opening project '%1': Project is not a file.</source> - <translation type="vanished">Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik.</translation> + <source>Cannot build: Selected products do not exist anymore.</source> + <translation>Nie można zbudować: wybrane produkty docelowe już nie istnieją.</translation> </message> <message> - <source>Failed opening project "%1": Project is not a file.</source> - <translation>Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik.</translation> - </message> - <message> - <source>Failed to set up kit for Qbs: %1</source> - <translation>Nie można ustawić zestawu narzędzi dla Qbs: %1</translation> + <source>Reading Project "%1"</source> + <translation>Odczyt projektu "%1"</translation> </message> </context> <context> @@ -34247,17 +27654,6 @@ Remote: %4</source> </message> </context> <context> - <name>QbsProjectManager::Internal::QbsPropertyLineEdit</name> - <message> - <source>Could not split properties.</source> - <translation>Nie można rozdzielić właściwości.</translation> - </message> - <message> - <source>No ':' found in property definition.</source> - <translation>Brak ":" w definicji właściwości.</translation> - </message> -</context> -<context> <name>QbsProjectManager::Internal::QbsRunConfiguration</name> <message> <source>The .qbs files are currently being parsed.</source> @@ -34282,26 +27678,6 @@ Remote: %4</source> <source>Executable:</source> <translation>Plik wykonywalny:</translation> </message> - <message> - <source>Arguments:</source> - <translation>Argumenty:</translation> - </message> - <message> - <source>Select Working Directory</source> - <translation>Wybierz katalog roboczy</translation> - </message> - <message> - <source>Reset to default</source> - <translation>Przywróć domyślne</translation> - </message> - <message> - <source>Working directory:</source> - <translation>Katalog roboczy:</translation> - </message> - <message> - <source>Run in terminal</source> - <translation>Uruchom w terminalu</translation> - </message> </context> <context> <name>QmlDesignerContextMenu</name> @@ -34639,10 +28015,6 @@ Remote: %4</source> <source>Unsupported QtQuick version</source> <translation>Nieobsługiwana wersja QtQuick</translation> </message> - <message> - <source>This .qml file contains features which are not supported by Qt Quick Designer</source> - <translation type="vanished">Ten plik .qml zawiera cechy nieobsługiwane przez Qt Quick Designera</translation> - </message> </context> <context> <name>QmlDesigner::QmlDesignerPlugin</name> @@ -34706,10 +28078,6 @@ Remote: %4</source> <translation>Przełącz boczny pasek</translation> </message> <message> - <source>Toggle Full Screen</source> - <translation type="vanished">Przełącz pełny ekran</translation> - </message> - <message> <source>&Restore Default View</source> <translation>Przywróć &domyślny widok</translation> </message> @@ -34815,43 +28183,6 @@ Remote: %4</source> </message> </context> <context> - <name>QmlApplicationWizard</name> - <message> - <source>Failed to read %1 template.</source> - <translation>Nie można odczytać szablonu %1.</translation> - </message> - <message> - <source>Failed to read file %1.</source> - <translation>Nie można odczytać pliku %1.</translation> - </message> -</context> -<context> - <name>QmlProjectManager::Internal::QmlApplicationWizardDialog</name> - <message> - <source>New Qt Quick UI Project</source> - <translation>Nowy Qt Quick UI projekt</translation> - </message> - <message> - <source>This wizard generates a Qt Quick UI project.</source> - <translation>Ten kreator generuje Qt Quick UI projekt.</translation> - </message> - <message> - <source>Component Set</source> - <translation type="vanished">Zestaw komponentów</translation> - </message> -</context> -<context> - <name>QmlProjectManager::Internal::QmlApplicationWizard</name> - <message> - <source>Qt Quick UI</source> - <translation>Qt Quick UI</translation> - </message> - <message> - <source>Creates a Qt Quick UI project.</source> - <translation>Tworzy projekt Qt Quick UI.</translation> - </message> -</context> -<context> <name>QmlProjectManager::QmlProjectEnvironmentAspect</name> <message> <source>System Environment</source> @@ -34859,241 +28190,6 @@ Remote: %4</source> </message> </context> <context> - <name>Qnx::Internal::BarDescriptorDocument</name> - <message> - <source>%1 does not appear to be a valid application descriptor file</source> - <translation>%1 nie jest poprawnym plikiem deskryptora aplikacji</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorEditor</name> - <message> - <source>General</source> - <translation>Ogólne</translation> - </message> - <message> - <source>Application</source> - <translation>Aplikacja</translation> - </message> - <message> - <source>Assets</source> - <translation>Zasoby</translation> - </message> - <message> - <source>XML Source</source> - <translation>Źródło XML</translation> - </message> - <message> - <source>Line: %1, Col: %2</source> - <translation>Linia: %1, kolumna: %2</translation> - </message> - <message> - <source>Line: 9999, Col: 999</source> - <translation>Linia: 9999, kolumna: 999</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorEditorFactory</name> - <message> - <source>Bar descriptor editor</source> - <translation>Edytor deskryptorów Bar</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorEditorWidget</name> - <message> - <source>Entry-Point Text and Images</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Package Information</source> - <translation>Informacje o pakiecie</translation> - </message> - <message> - <source>Author Information</source> - <translation>Informacje o autorze</translation> - </message> - <message> - <source>General</source> - <translation>Ogólne</translation> - </message> - <message> - <source>Permissions</source> - <translation>Prawa dostępu</translation> - </message> - <message> - <source>Environment</source> - <translation>Środowisko</translation> - </message> - <message> - <source>Assets</source> - <translation>Zasoby</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorPermissionsModel</name> - <message> - <source>Permission</source> - <translation>Prawa dostępu</translation> - </message> - <message> - <source>BlackBerry Messenger</source> - <translation>Komunikator BlackBerry</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to connect to the BBM Social Platform to access BBM contact lists and user profiles, invite BBM contacts to download your app, initiate BBM chats and share content from within your app, or stream data between apps in real time.</p></body></html></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Calendar</source> - <translation>Kalendarz</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to access the calendar on the device. This access includes viewing, adding, and deleting calendar appointments.</p></body></html></source> - <translation><html><head/><body><p>Udostępnia tej aplikacji kalendarz w urządzeniu, włącznie z przeglądaniem, dodawaniem i usuwaniem terminów w kalendarzu.</p></body></html></translation> - </message> - <message> - <source>Camera</source> - <translation>Kamera</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to take pictures, record video, and use the flash.</p></body></html></source> - <translation><html><head/><body><p>Pozwala tej aplikacji robić zdjęcia, nagrywać wideo i używać lampy błyskowej.</p></body></html></translation> - </message> - <message> - <source>Contacts</source> - <translation>Kontakty</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to access the contacts stored on the device. This access includes viewing, creating, and deleting the contacts.</p></body></html></source> - <translation><html><head/><body><p>Udostępnia tej aplikacji kontakty przechowywane w urządzeniu, włącznie z przeglądaniem, dodawaniem i usuwaniem kontaktów.</p></body></html></translation> - </message> - <message> - <source>Device Identifying Information</source> - <translation>Informacja identyfikująca urządzenie</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to access device identifiers such as serial number and PIN.</p></body></html></source> - <translation><html><head/><body><p>Udostępnia tej aplikacji dane służące do identyfikacji urządzenia, włącznie z numerem seryjnym i kodem PIN.</p></body></html></translation> - </message> - <message> - <source>Email and PIN Messages</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to access the email and PIN messages stored on the device. This access includes viewing, creating, sending, and deleting the messages.</p></body></html></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>GPS Location</source> - <translation>Pozycja GPS</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to access the current GPS location of the device.</p></body></html></source> - <translation><html><head/><body><p>Udostępnia tej aplikacji bieżącą pozycję GPS urządzenia.</p></body></html></translation> - </message> - <message> - <source>Internet</source> - <translation>Internet</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to use Wi-fi, wired, or other connections to a destination that is not local on the user's device.</p></body></html></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Location</source> - <translation>Położenie</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to access the device's current or saved locations.</p></body></html></source> - <translation><html><head/><body><p>Udostępnia tej aplikacji bieżącą lub zapisane pozycje urządzenia.</p></body></html></translation> - </message> - <message> - <source>Microphone</source> - <translation>Mikrofon</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to record sound using the microphone.</p></body></html></source> - <translation><html><head/><body><p>Pozwala tej aplikacji rejestrować dźwięk przy użyciu mikrofonu.</p></body></html></translation> - </message> - <message> - <source>Notebooks</source> - <translation>Notatniki</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to access the content stored in the notebooks on the device. This access includes adding and deleting entries and content.</p></body></html></source> - <translation><html><head/><body><p>Udostępnia tej aplikacji zawartość notatników przechowywanych na urządzeniu, włącznie z dodawaniem i usuwaniem treści.</p></body></html></translation> - </message> - <message> - <source>Post Notifications</source> - <translation>Wysłanie powiadomienia</translation> - </message> - <message> - <source><html><head/><body><p>Post a notification to the notifications area of the screen.</p></body></html></source> - <translation><html><head/><body><p>Wysyła powiadomienie do obszaru z powiadomieniami na ekranie.</p></body></html></translation> - </message> - <message> - <source>Push</source> - <translation type="unfinished">Push</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to use the Push Service with the BlackBerry Internet Service. This access allows the app to receive and request push messages. To use the Push Service with the BlackBerry Internet Service, you must register with BlackBerry. When you register, you receive a confirmation email message that contains information that your application needs to receive and request push messages. For more information about registering, visit https://developer.blackberry.com/services/push/. If you're using the Push Service with the BlackBerry Enterprise Server or the BlackBerry Device Service, you don't need to register with BlackBerry.</p></body></html></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Run When Backgrounded</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><html><head/><body><p>Allows background processing. Without this permission, the app is stopped when the user switches focus to another app. Apps that use this permission are rigorously reviewed for acceptance to BlackBerry App World storefront for their use of power.</p></body></html></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Shared Files</source> - <translation>Pliki dzielone</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to access pictures, music, documents, and other files stored on the user's device, at a remote storage provider, on a media card, or in the cloud.</p></body></html></source> - <translation><html><head/><body><p>Udostępnia tej aplikacji zdjęcia, muzykę, dokumenty i inne pliki przechowywane na urządzeniu, karcie pamięci, bądź w chmurze użytkownika.</p></body></html></translation> - </message> - <message> - <source>Text Messages</source> - <translation>Komunikaty tekstowe</translation> - </message> - <message> - <source><html><head/><body><p>Allows this app to access the text messages stored on the device. The access includes viewing, creating, sending, and deleting text messages.</p></body></html></source> - <translation><html><head/><body><p>Udostępnia tej aplikacji komunikaty tekstowe, przechowywane na urządzeniu, włącznie z przeglądaniem, tworzeniem, wysyłaniem i usuwaniem komunikatów tekstowych.</p></body></html></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeviceConnection</name> - <message> - <source>Error connecting to device: java could not be found in the environment.</source> - <translation>Błąd połączenia z urządzeniem: brak "java" w środowisku.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryKeysPage</name> - <message> - <source>Keys</source> - <translation>Klucze</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryNDKSettingsPage</name> - <message> - <source>API Levels and Runtimes</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryProcessParser</name> - <message> - <source>Authentication failed. Please make sure the password for the device is correct.</source> - <translation>Błąd autoryzacji. Upewnij się, że hasło dla urządzenia jest poprawne.</translation> - </message> -</context> -<context> <name>Qnx::Internal::QnxAbstractRunSupport</name> <message> <source>Not enough free ports on device for debugging.</source> @@ -35118,17 +28214,6 @@ Remote: %4</source> <source>Warning: "slog2info" is not found on the device, debug output not available.</source> <translation>Ostrzeżenie: brak"slog2info" na urządzeniu, komunikaty debugowe nie będą dostępne.</translation> </message> - <message> - <source>Warning: "slog2info" is not found on the device, debug output not available!</source> - <translation type="vanished">Ostrzeżenie: brak"slog2info" na urządzeniu, komunikaty debugowe nie będą dostępne.</translation> - </message> -</context> -<context> - <name>BlackBerry</name> - <message> - <source>BlackBerry</source> - <translation>BlackBerry</translation> - </message> </context> <context> <name>Qnx::Internal::QnxDeviceTester</name> @@ -35167,10 +28252,6 @@ Remote: %4</source> <context> <name>QtSupport::QtVersionFactory</name> <message> - <source>No factory found for qmake: '%1'</source> - <translation type="vanished">Brak fabryki dla qmake: "%1"</translation> - </message> - <message> <source>No factory found for qmake: "%1"</source> <translation>Brak fabryki dla qmake: "%1"</translation> </message> @@ -35198,17 +28279,6 @@ Remote: %4</source> </message> </context> <context> - <name>RemoteLinux::RemoteLinuxDeploymentDataModel</name> - <message> - <source>Local File Path</source> - <translation type="vanished">Ścieżka do lokalnego pliku</translation> - </message> - <message> - <source>Remote Directory</source> - <translation type="vanished">Zdalny katalog</translation> - </message> -</context> -<context> <name>RemoteLinux::RemoteLinuxEnvironmentAspect</name> <message> <source>Clean Environment</source> @@ -35257,81 +28327,6 @@ Remote: %4</source> </message> </context> <context> - <name>QmlProjectManager::QmlApplicationWizard</name> - <message> - <source>Creates a Qt Quick 1 UI project with a single QML file that contains the main view. You can review Qt Quick 1 UI projects in the QML Viewer and you need not build them. You do not need to have the development environment installed on your computer to create and run this type of project. Requires Qt 4.8 or newer.</source> - <translation>Tworzy projekt UI Qt Quick 1 z pojedynczym plikiem QML, zawierającym główny widok. Projekty można przeglądać przy pomocy QML Viewera, bez ich uprzedniego budowania. Do tworzenia i uruchamiania tego typu projektów nie jest wymagana instalacja środowiska deweloperskiego. Wymagana jest zaś wersja Qt 4.8 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick 1.1</source> - <translation>Qt Quick 1.1</translation> - </message> - <message> - <source>Creates a Qt Quick 2 UI project with a single QML file that contains the main view. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. You do not need to have the development environment installed on your computer to create and run this type of project. Requires Qt 5.1 or newer.</source> - <translation>Tworzy projekt UI Qt Quick 2 z pojedynczym plikiem QML, zawierającym główny widok. Projekty można przeglądać przy pomocy QML Scene, bez ich uprzedniego budowania. Do tworzenia i uruchamiania tego typu projektów nie jest wymagana instalacja środowiska deweloperskiego. Wymagana jest zaś wersja Qt 5.1 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick 2.1</source> - <translation>Qt Quick 2.1</translation> - </message> - <message> - <source>Creates a Qt Quick 2 UI project with a single QML file that contains the main view. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. You do not need to have the development environment installed on your computer to create and run this type of project. Requires Qt 5.2 or newer.</source> - <translation>Tworzy projekt UI Qt Quick 2 z pojedynczym plikiem QML, zawierającym główny widok. Projekty można przeglądać przy pomocy QML Scene, bez ich uprzedniego budowania. Do tworzenia i uruchamiania tego typu projektów nie jest wymagana instalacja środowiska deweloperskiego. Wymagana jest zaś wersja Qt 5.2 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick 2.2</source> - <translation>Qt Quick 2.2</translation> - </message> - <message> - <source>Creates a Qt Quick 2 UI project with a single QML file that contains the main view. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. You do not need to have the development environment installed on your computer to create and run this type of project. Requires Qt 5.3 or newer.</source> - <translation>Tworzy projekt UI Qt Quick 2 z pojedynczym plikiem QML, zawierającym główny widok. Projekty można przeglądać przy pomocy QML Scene, bez ich uprzedniego budowania. Do tworzenia i uruchamiania tego typu projektów nie jest wymagana instalacja środowiska deweloperskiego. Wymagana jest zaś wersja Qt 5.3 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick 2.3</source> - <translation>Qt Quick 2.3</translation> - </message> - <message> - <source>Creates a Qt Quick 2 UI project that contains a .ui.qml file. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. Requires Qt 5.4 or newer.</source> - <translation>Tworzy projekt UI Qt Quick 2 zawierający plik .ui.qml. Projekty można przeglądać przy pomocy QML Scene, bez ich uprzedniego budowania. Wymagana jest wersja Qt 5.4 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick 2.4</source> - <translation>Qt Quick 2.4</translation> - </message> - <message> - <source>Creates a Qt Quick 2 UI project with a single QML file that contains the main view and uses Qt Quick Controls. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.2 or newer.</source> - <translation>Tworzy projekt UI Qt Quick 2 z pojedynczym plikiem QML, zawierającym główny widok i używającym Qt Quick Controls. Projekty można przeglądać przy pomocy QML Scene, bez ich uprzedniego budowania. Takie projekty wymagają instalacji Qt Quick Controls. Wymagana jest również wersja Qt 5.2 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick Controls 1.1</source> - <translation>Qt Quick Controls 1.1</translation> - </message> - <message> - <source>Creates a Qt Quick 2 UI project with a single QML file that contains the main view and uses Qt Quick Controls. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.3 or newer.</source> - <translation>Tworzy projekt UI Qt Quick 2 z pojedynczym plikiem QML, zawierającym główny widok i używającym Qt Quick Controls. Projekty można przeglądać przy pomocy QML Scene, bez ich uprzedniego budowania. Takie projekty wymagają instalacji Qt Quick Controls. Wymagana jest również wersja Qt 5.3 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick Controls 1.2</source> - <translation>Qt Quick Controls 1.2</translation> - </message> - <message> - <source>Creates a Qt Quick 2 UI project that contains a .ui.qml file and uses Qt Quick Controls. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.4 or newer.</source> - <translation>Tworzy projekt UI Qt Quick 2 zawierający plik .ui.qml i używający Qt Quick Controls. Projekty można przeglądać przy pomocy QML Scene, bez ich uprzedniego budowania. Takie projekty wymagają instalacji Qt Quick Controls. Wymagana jest również wersja Qt 5.4 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick Controls 1.3</source> - <translation>Qt Quick Controls 1.3</translation> - </message> - <message> - <source>Creates a Qt Quick 2 UI project with a single QML file that contains the main view and uses Qt Quick Controls. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.1 or newer.</source> - <translation>Tworzy projekt UI Qt Quick 2 z pojedynczym plikiem QML, zawierającym główny widok i używającym Qt Quick Controls. Projekty można przeglądać przy pomocy QML Scene, bez ich uprzedniego budowania. Takie projekty wymagają instalacji Qt Quick Controls. Wymagana jest również wersja Qt 5.1 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick Controls 1.0</source> - <translation>Qt Quick Controls 1.0</translation> - </message> -</context> -<context> <name>Android::Internal::AddNewAVDDialog</name> <message> <source>Create new AVD</source> @@ -35365,22 +28360,6 @@ Remote: %4</source> <translation>Formularz</translation> </message> <message> - <source>Sign package</source> - <translation type="vanished">Podpis pakietu</translation> - </message> - <message> - <source>Signing a debug package</source> - <translation type="vanished">Podpisanie pakietu debugowego</translation> - </message> - <message> - <source>Certificate alias:</source> - <translation type="vanished">Alias certyfikatu:</translation> - </message> - <message> - <source>Advanced Actions</source> - <translation type="vanished">Zaawansowane akcje</translation> - </message> - <message> <source>Clean Temporary Libraries Directory on Device</source> <translation>Wyczyść tymczasowe katalogi z bibliotekami na urządzeniu</translation> </message> @@ -35393,89 +28372,6 @@ Remote: %4</source> <translation>Przywróc domyślne urządzenia</translation> </message> <message> - <source>Open package location after build</source> - <translation type="vanished">Po zakończeniu budowania otwórz w położeniu pakietu</translation> - </message> - <message> - <source>Verbose output</source> - <translation type="vanished">Gadatliwe komunikaty</translation> - </message> - <message> - <source>Create AndroidManifest.xml</source> - <translation type="vanished">Utwórz AndroidManifest.xml</translation> - </message> - <message> - <source>Application</source> - <translation type="vanished">Aplikacja</translation> - </message> - <message> - <source>Input file for androiddeployqt:</source> - <translation type="vanished">Plik wejściowy dla androiddeployqt:</translation> - </message> - <message> - <source>Qt no longer uses the folder "android" in the project's source directory.</source> - <translation type="vanished">Qt nie używa już katalogu "android" w katalogu źródłowym projektu.</translation> - </message> - <message> - <source>Qt Deployment</source> - <translation type="vanished">Instalacja Qt</translation> - </message> - <message> - <source>Use Ministro service to install Qt</source> - <translation type="vanished">Użyj usługi Ministro do zainstalowania Qt</translation> - </message> - <message> - <source>Deploy local Qt libraries to temporary directory</source> - <translation type="vanished">Zainstaluj lokalne biblioteki Qt do tymczasowego katalogu</translation> - </message> - <message> - <source>Creates a standalone APK.</source> - <translation type="vanished">Tworzy samodzielny APK.</translation> - </message> - <message> - <source>Bundle Qt libraries in APK</source> - <translation type="vanished">Dołącz biblioteki Qt do APK</translation> - </message> - <message> - <source>Additional Libraries</source> - <translation type="vanished">Dodatkowe biblioteki</translation> - </message> - <message> - <source>List of extra libraries to include in Android package and load on startup.</source> - <translation type="vanished">Lista dodatkowych bibliotek dołączanych do pakietu Android i ładowanych przy uruchamianiu.</translation> - </message> - <message> - <source>Select library to include in package.</source> - <translation type="vanished">Wybierz bibliotekę, którą dołączyć do pakietu.</translation> - </message> - <message> - <source>Remove currently selected library from list.</source> - <translation type="vanished">Usuń zaznaczoną bibliotekę z listy.</translation> - </message> - <message> - <source>Remove</source> - <translation type="vanished">Usuń</translation> - </message> - <message> - <source>Create...</source> - <translation type="vanished">Utwórz...</translation> - </message> - <message> - <source>Add...</source> - <translation type="vanished">Dodaj...</translation> - </message> - <message> - <source>Uses the external Ministro application to download and maintain Qt libraries.</source> - <translation type="vanished">Używa zewnętrznej aplikacji Ministro do pobierania bibliotek Qt i zarządzania nimi.</translation> - </message> - <message> - <source>Pushes local Qt libraries to device. You must have Qt libraries compiled for that platform. -The APK will not be usable on any other device.</source> - <translation type="vanished">Przesyła lokalne biblioteki Qt do urządzenia. -Należy przesłać biblioteki skompilowane dla tej platformy. -APK nie będzie przydatne na innych urządzeniach.</translation> - </message> - <message> <source>Deploy options</source> <translation>Opcje instalacji</translation> </message> @@ -35547,36 +28443,21 @@ APK nie będzie przydatne na innych urządzeniach.</translation> <translation>Brak urządzeń</translation> </message> <message> - <source><html><head/><body><p><a href="aaa"><span style=" text-decoration: underline; color:#0057ae;">My device is missing</span></a></p></body></html></source> - <translation><html><head/><body><p><a href="aaa"><span style=" text-decoration: underline; color:#0057ae;">Brak mojego urządzenia</span></a></p></body></html></translation> - </message> -</context> -<context> - <name>BareMetal::BareMetalDeviceConfigurationWidget</name> - <message> - <source>Form</source> - <translation type="vanished">Formularz</translation> + <source>Looking for default device <b>%1</b>.</source> + <translation>Poszukiwanie domyślnego urządzenia <b>%1</b>.</translation> </message> <message> - <source>GDB host:</source> - <translation type="vanished">Host GDB:</translation> - </message> - <message> - <source>GDB port:</source> - <translation type="vanished">Port GDB:</translation> + <source><html><head/><body><p><a href="aaa"><span style=" text-decoration: underline; color:#0057ae;">My device is missing</span></a></p></body></html></source> + <translation><html><head/><body><p><a href="aaa"><span style=" text-decoration: underline; color:#0057ae;">Brak mojego urządzenia</span></a></p></body></html></translation> </message> <message> - <source>GDB commands:</source> - <translation type="vanished">Komendy GDB:</translation> + <source>Cancel</source> + <translation>Anuluj</translation> </message> </context> <context> <name>BareMetal::Internal::BareMetalDeviceConfigurationWizardSetupPage</name> <message> - <source>Form</source> - <translation type="vanished">Formularz</translation> - </message> - <message> <source>Set up GDB Server or Hardware Debugger</source> <translation>Ustaw serwer GDB lub debugger sprzętowy</translation> </message> @@ -35585,39 +28466,13 @@ APK nie będzie przydatne na innych urządzeniach.</translation> <translation>Nazwa:</translation> </message> <message> - <source>Init commands:</source> - <translation>Komendy inicjalizujące:</translation> - </message> - <message> - <source>Reset commands:</source> - <translation>Komendy resetujące:</translation> + <source>GDB server provider:</source> + <translation type="unfinished"></translation> </message> <message> <source>Bare Metal Device</source> <translation>Urządzenie Bare Metal</translation> </message> - <message> - <source>localhost</source> - <translation type="vanished">localhost</translation> - </message> - <message> - <source>GDB port:</source> - <translation>Port GDB:</translation> - </message> - <message> - <source>GDB host:</source> - <translation>Host GDB:</translation> - </message> - <message> - <source>GDB commands:</source> - <translation type="vanished">Komendy GDB:</translation> - </message> - <message> - <source>load -monitor reset</source> - <translation type="vanished">load -monitor reset</translation> - </message> </context> <context> <name>Core::Internal::AddToVcsDialog</name> @@ -35710,14 +28565,6 @@ monitor reset</translation> <source>xcodebuild</source> <translation>xcodebuild</translation> </message> - <message> - <source>Qt Creator needs a compiler set up to build. Configure a compiler in the kit preferences.</source> - <translation type="vanished">Do budowy Qt Creator wymaga ustawionego kompilatora. Skonfiguruj go w opcjach zestawu narzędzi.</translation> - </message> - <message> - <source>Configuration is faulty. Check the Issues output pane for details.</source> - <translation type="vanished">Konfiguracja jest błędna, sprawdź szczegóły w widoku "Problemy budowania".</translation> - </message> </context> <context> <name>IosDeployStepWidget</name> @@ -35874,212 +28721,38 @@ monitor reset</translation> </message> </context> <context> - <name>Qnx::Internal::BlackBerryDeviceConfigurationWizardConfigPage</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Location:</source> - <translation>Położenie:</translation> - </message> - <message> - <source>Generate</source> - <translation>Wygeneruj</translation> - </message> - <message> - <source>Debug token is needed for deploying applications to BlackBerry devices.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Type:</source> - <translation>Typ:</translation> - </message> - <message> - <source>Host name or IP address:</source> - <translation>Nazwa hosta lub adres IP:</translation> - </message> - <message> - <source>Configuration name:</source> - <translation>Nazwa konfiguracji:</translation> - </message> - <message> - <source>Configuration</source> - <translation>Konfiguracja</translation> - </message> - <message> - <source>Select Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>BAR file (*.bar)</source> - <translation>Plik BAR (*.bar)</translation> - </message> - <message> - <source>Invalid Debug Token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Debug token file %1 cannot be read.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Import</source> - <translation>Zaimportuj</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeviceConfigurationWizardQueryPage</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Device Information</source> - <translation>Informacja o urządzeniu</translation> - </message> - <message> - <source>Querying device information. Please wait...</source> - <translation>Oczekiwanie na informacje o urządzeniu...</translation> - </message> - <message> - <source>Cannot connect to the device. Check that the device is in development mode and has matching host name and password.</source> - <translation>Nie można nawiązać połączenia z urządzeniem. Sprawdź, czy urządzenie jest w trybie deweloperskim i czy nazwa hosta i hasło są zgodne.</translation> - </message> - <message> - <source>Generating SSH keys. Please wait...</source> - <translation>Generowanie kluczy SSH...</translation> - </message> - <message> - <source>Failed generating SSH key needed for securing connection to a device. Error:</source> - <translation>Błąd podczas generowania kluczy SSH niezbędnych do bezpiecznej komunikacji z urządzeniem:</translation> - </message> - <message> - <source>Failed saving SSH key needed for securing connection to a device. Error:</source> - <translation>Błąd podczas zachowywania kluczy SSH niezbędnych do bezpiecznej komunikacji z urządzeniem:</translation> - </message> - <message> - <source>Device information retrieved successfully.</source> - <translation>Otrzymano informacje o urządzeniu.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryInstallWizardNdkPage</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Select Native SDK path:</source> - <translation>Wybierz rdzenną ścieżkę SDK:</translation> - </message> - <message> - <source>Native SDK</source> - <translation>Rdzenny SDK</translation> - </message> - <message> - <source>Specify 10.2 NDK path manually</source> - <translation>Podaj ręcznie ścieżkę do NDK 10.2</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryInstallWizardProcessPage</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Please wait...</source> - <translation>Oczekiwanie...</translation> - </message> - <message> - <source>Uninstalling</source> - <translation>Dezinstalowanie</translation> - </message> - <message> - <source>Installing</source> - <translation>Instalowanie</translation> - </message> - <message> - <source>API level</source> - <translation>Poziom API</translation> - </message> - <message> - <source>simulator</source> - <translation>symulator</translation> - </message> - <message> - <source>runtime</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Uninstalling %1 version: %2</source> - <translation>Dezinstalowanie %1 wersja: %2</translation> - </message> - <message> - <source>Installing %1 version: %2</source> - <translation>Instalowanie %1 wersja: %2</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryInstallWizardTargetPage</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Version</source> - <translation>Wersja</translation> - </message> + <name>UpdateInfo::Internal::SettingsWidget</name> <message> - <source>Name</source> - <translation>Nazwa</translation> + <source>Configure Filters</source> + <translation>Konfiguracja filtrów</translation> </message> <message> - <source>Querying available versions. Please wait...</source> - <translation>Oczekiwanie na informacje o dostępnych wersjach...</translation> + <source>Automatic Check for Updates</source> + <translation>Automatyczne sprawdzanie dostępnych aktualizacji</translation> </message> <message> - <source>Please select version:</source> - <translation>Wybierz wersję:</translation> + <source>Check interval basis:</source> + <translation>Częstość sprawdzania:</translation> </message> -</context> -<context> - <name>Qnx::Internal::SrcProjectWizardPage</name> <message> - <source>Choose the Location</source> - <translation>Wybierz położenie</translation> + <source>Qt Creator automatically runs a scheduled check for updates on a time interval basis. If Qt Creator is not in use on the scheduled date, the automatic check for updates will be performed next time Qt Creator starts.</source> + <translation>Qt Creator automatycznie sprawdza dostępność aktualizacji co określony czas. Jeśli Qt Creator nie jest używany w dniu, w którym powinno nastąpić sprawdzenie dostępnych aktualizacji, nastąpi ono przy najbliższym uruchomieniu Qt Creatora.</translation> </message> <message> - <source>Project path:</source> - <translation>Ścieżka do projektu:</translation> - </message> - <message> - <source>Momentics</source> - <translation>Momentics</translation> - </message> -</context> -<context> - <name>UpdateInfo::Internal::SettingsWidget</name> - <message> - <source>Configure Filters</source> - <translation>Konfiguracja filtrów</translation> + <source>Next check date:</source> + <translation>Data najbiższego sprawdzenia:</translation> </message> <message> - <source>Qt Creator Update Settings</source> - <translation>Ustawienia uaktualniania Qt Creatora</translation> + <source>Last check date:</source> + <translation>Data ostatniego sprawdzenia:</translation> </message> <message> - <source>Qt Creator automatically runs a scheduled update check on a daily basis. If Qt Creator is not in use on the scheduled time or maintenance is behind schedule, the automatic update check will be run next time Qt Creator starts.</source> - <translation>Qt Creator automatycznie uruchamia zaplanowane sprawdzenie uaktualnień każdego dnia. Jeśli Qt Creator nie jest uruchomiony w zaplanowanym czasie, automatycznie sprawdzenie zostanie rozpoczęte przy najbliższym uruchomieniu Qt Creatora.</translation> + <source>Not checked yet</source> + <translation>Jeszcze nie sprawdzano</translation> </message> <message> - <source>Run update check daily at:</source> - <translation>Uruchamiaj codzienne sprawdzanie uaktualnień o:</translation> + <source>Check Now</source> + <translation>Sprawdź teraz</translation> </message> </context> <context> @@ -36284,14 +28957,6 @@ monitor reset</translation> <source>Anchors</source> <translation>Kotwice</translation> </message> - <message> - <source>Target</source> - <translation type="obsolete">Cel</translation> - </message> - <message> - <source>Margin</source> - <translation type="vanished">Margines</translation> - </message> </context> <context> <name>QtObjectPane</name> @@ -36485,50 +29150,50 @@ monitor reset</translation> <translation>Odinstaluj poprzedni pakiet %1.</translation> </message> <message> - <source>Package deploy: Running command "%1 %2".</source> - <translation>Instalacja pakietu: uruchomiono komendę "%1 %2".</translation> + <source>Starting: "%1" %2</source> + <translation>Uruchamianie "%1" %2</translation> </message> <message> - <source>Packaging error: Could not start command "%1 %2". Reason: %3</source> - <translation>Błąd pakowania: nie można uruchomić komendy "%1 %2". Przyczyna: %3</translation> + <source>The process "%1" exited normally.</source> + <translation>Proces "%1" zakończył pracę normalnie.</translation> </message> <message> - <source>Packaging Error: Command "%1 %2" failed.</source> - <translation>Błąd pakowania: Komenda "%1 %2" niepoprawnie zakończona.</translation> + <source>The process "%1" exited with code %2.</source> + <translation>Proces "%1" zakończył pracę kodem wyjściowym %2.</translation> </message> <message> - <source>Install failed</source> - <translation>Instalacja niepoprawnie zakończona</translation> + <source>The process "%1" crashed.</source> + <translation>Proces "%1" zakończył pracę błędem.</translation> </message> <message> - <source>Another application with the same package id but signed with different ceritificate already exists. -Do you want to uninstall the existing package next time?</source> + <source>Another application with the same package id but signed with different certificate already exists. +Do you want to uninstall the existing package?</source> <translation>Istnieje już inna aplikacja o tym samym identyfikatorze pakietu, lecz z innym certyfikatem. -Czy odinstalować istniejący pakiet następnym razem?</translation> +Czy odinstalować istniejący pakiet?</translation> </message> <message> - <source>Warning: Signing a debug package.</source> - <translation type="vanished">Ostrzeżenie: podpisywanie pakietu debugowego.</translation> + <source>Package deploy: Failed to pull "%1" to "%2".</source> + <translation type="unfinished"></translation> </message> <message> - <source>Internal Error: Could not find .pro file.</source> - <translation type="vanished">Błąd wewnętrzny: brak pliku .pro.</translation> + <source>Package deploy: Running command "%1 %2".</source> + <translation>Instalacja pakietu: uruchomiono komendę "%1 %2".</translation> </message> <message> - <source>Pulling files necessary for debugging.</source> - <translation type="unfinished"></translation> + <source>Packaging error: Could not start command "%1 %2". Reason: %3</source> + <translation>Błąd pakowania: nie można uruchomić komendy "%1 %2". Przyczyna: %3</translation> </message> <message> - <source>Package deploy: Running command '%1 %2'.</source> - <translation type="vanished">Instalacja pakietu: Uruchamianie komendy "%1 %2".</translation> + <source>Packaging error: Command "%1 %2" failed.</source> + <translation>Błąd pakowania: Komenda "%1 %2" zakończona błędem.</translation> </message> <message> - <source>Packaging error: Could not start command '%1 %2'. Reason: %3</source> - <translation type="vanished">Błąd pakowania: Nie można uruchomić komendy "%1 %2". Przyczyna: %3</translation> + <source>Install failed</source> + <translation>Instalacja niepoprawnie zakończona</translation> </message> <message> - <source>Packaging Error: Command '%1 %2' failed.</source> - <translation type="vanished">Błąd pakowania: Komenda "%1 %2" zakończona błędem.</translation> + <source>Pulling files necessary for debugging.</source> + <translation type="unfinished"></translation> </message> <message> <source>Reason: %1</source> @@ -36538,22 +29203,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> <source>Exit code: %1</source> <translation>Kod wyjściowy: %1</translation> </message> - <message> - <source>Error</source> - <translation type="vanished">Błąd</translation> - </message> - <message> - <source>Invalid password.</source> - <translation type="vanished">Niepoprawne hasło.</translation> - </message> - <message> - <source>Certificate</source> - <translation type="vanished">Certyfikat</translation> - </message> - <message> - <source>Certificate password (%1):</source> - <translation type="vanished">Hasło dla certyfikatu (%1):</translation> - </message> </context> <context> <name>Android::Internal::AndroidDeployQtWidget</name> @@ -36569,14 +29218,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> <source>Android package (*.apk)</source> <translation>Pakiet androida (*.apk)</translation> </message> - <message> - <source>Select additional libraries</source> - <translation type="vanished">Wybierz dodatkowe biblioteki</translation> - </message> - <message> - <source>Libraries (*.so)</source> - <translation type="vanished">Biblioteki (*.so)</translation> - </message> </context> <context> <name>Android::Internal::AndroidErrorMessage</name> @@ -36629,82 +29270,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> </message> </context> <context> - <name>Android::Internal::NoApplicationProFilePage</name> - <message> - <source>No application .pro file found in this project.</source> - <translation type="vanished">Brak pliku .pro aplikacji w tym projekcie.</translation> - </message> - <message> - <source>No Application .pro File</source> - <translation type="vanished">Brak pliku .pro aplikacji</translation> - </message> -</context> -<context> - <name>Android::Internal::ChooseProFilePage</name> - <message> - <source>Select the .pro file for which you want to create an AndroidManifest.xml file.</source> - <translation type="vanished">Wybierz plik .pro dla którego utworzyć plik AndroidManifest.xml.</translation> - </message> - <message> - <source>.pro file:</source> - <translation type="vanished">Plik .pro:</translation> - </message> - <message> - <source>Select a .pro File</source> - <translation type="vanished">Wybierz plik .pro</translation> - </message> -</context> -<context> - <name>Android::Internal::ChooseDirectoryPage</name> - <message> - <source>Android package source directory:</source> - <translation type="vanished">Katalog źródłowy pakietu Android:</translation> - </message> - <message> - <source>The Android manifest file will be created in the ANDROID_PACKAGE_SOURCE_DIR set in the .pro file.</source> - <translation type="vanished">Plik manifest Androida zostanie utworzony w katalogu, na który wskazuje zmienna ANDROID_PACKAGE_SOURCE_DIR ustawiona w pliku .pro.</translation> - </message> -</context> -<context> - <name>Android::Internal::CreateAndroidManifestWizard</name> - <message> - <source>Create Android Manifest Wizard</source> - <translation type="vanished">Kreator pliku manifest Androida</translation> - </message> - <message> - <source>Overwrite AndroidManifest.xml</source> - <translation type="vanished">Nadpisanie AndroidManifest.xml</translation> - </message> - <message> - <source>Overwrite existing AndroidManifest.xml?</source> - <translation type="vanished">Nadpisać istniejący plik AndroidManifest.xml?</translation> - </message> - <message> - <source>File Removal Error</source> - <translation type="vanished">Błąd usuwania pliku</translation> - </message> - <message> - <source>Could not remove file %1.</source> - <translation type="vanished">Nie można usunąć pliku %1.</translation> - </message> - <message> - <source>File Creation Error</source> - <translation type="vanished">Błąd tworzenia pliku</translation> - </message> - <message> - <source>Could not create file %1.</source> - <translation type="vanished">Nie można utworzyć pliku %1.</translation> - </message> - <message> - <source>Project File not Updated</source> - <translation type="vanished">Nieaktualny plik projektu</translation> - </message> - <message> - <source>Could not update the .pro file %1.</source> - <translation type="vanished">Nie można uaktualnić pliku .pro %1.</translation> - </message> -</context> -<context> <name>BareMetal::Internal::BareMetalDevice</name> <message> <source>Bare Metal</source> @@ -36712,31 +29277,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> </message> </context> <context> - <name>BareMetal::BareMetalDeviceConfigurationFactory</name> - <message> - <source>Bare Metal Device</source> - <translation type="vanished">Urządzenie Bare Metal</translation> - </message> -</context> -<context> - <name>BareMetal::BareMetalDeviceConfigurationWizard</name> - <message> - <source>New Bare Metal Device Configuration Setup</source> - <translation type="vanished">Nowa konfiguracja urządzenia Bare Metal</translation> - </message> -</context> -<context> - <name>BareMetal::BareMetalDeviceConfigurationWizardSetupPage</name> - <message> - <source>Set up GDB Server or Hardware Debugger</source> - <translation type="vanished">Ustaw serwer GDB lub debugger sprzętowy</translation> - </message> - <message> - <source>Bare Metal Device</source> - <translation type="vanished">Urządzenie Bare Metal</translation> - </message> -</context> -<context> <name>BareMetal::Internal::BareMetalGdbCommandsDeployStepWidget</name> <message> <source>GDB commands:</source> @@ -36744,25 +29284,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> </message> </context> <context> - <name>BareMetal::BareMetalGdbCommandsDeployStep</name> - <message> - <source>GDB commands</source> - <translation type="vanished">Komendy GDB:</translation> - </message> -</context> -<context> - <name>BareMetal::BareMetalRunConfiguration</name> - <message> - <source>%1 (via GDB server or hardware debugger)</source> - <translation type="vanished">%1 (poprzez serwer GDB lub debugger sprzętowy)</translation> - </message> - <message> - <source>Run on GDB server or hardware debugger</source> - <extracomment>Bare Metal run configuration default run name</extracomment> - <translation type="vanished">Uruchom na serwerze GDB lub debuggerze sprzętowym</translation> - </message> -</context> -<context> <name>BareMetal::Internal::BareMetalRunConfigurationFactory</name> <message> <source>%1 (on GDB server or hardware debugger)</source> @@ -36770,40 +29291,22 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> </message> </context> <context> - <name>BareMetal::BareMetalRunConfigurationWidget</name> - <message> - <source>Executable:</source> - <translation type="vanished">Plik wykonywalny:</translation> - </message> - <message> - <source>Arguments:</source> - <translation type="vanished">Argumenty:</translation> - </message> + <name>BareMetal::Internal::BareMetalRunControlFactory</name> <message> - <source><default></source> - <translation type="vanished"><domyślny></translation> + <source>Cannot debug: Local executable is not set.</source> + <translation>Nie można debugować: brak ustawionego lokalnego pliku wykonywalnego.</translation> </message> <message> - <source>Working directory:</source> - <translation type="vanished">Katalog roboczy:</translation> + <source>Cannot debug: Could not find executable for "%1".</source> + <translation>Nie można debugować: nie można odnaleźć pliku wykonywalnego dla "%1".</translation> </message> -</context> -<context> - <name>BareMetal::Internal::BareMetalRunControlFactory</name> <message> <source>Cannot debug: Kit has no device.</source> <translation>Nie można debugować: brak urządzenia w zestawie narzędzi.</translation> </message> -</context> -<context> - <name>Core::DocumentModel</name> - <message> - <source><no document></source> - <translation type="vanished"><brak dokumentu></translation> - </message> <message> - <source>No document is selected.</source> - <translation type="vanished">Brak zaznaczonego dokumenty.</translation> + <source>Cannot debug: Device has no GDB server provider configuration.</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -36854,37 +29357,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> </message> </context> <context> - <name>Debugger::Internal::DebuggerOptionsPage</name> - <message> - <source>Not recognized</source> - <translation>Nierozpoznany</translation> - </message> - <message> - <source>Debuggers</source> - <translation>Debuggery</translation> - </message> - <message> - <source>Add</source> - <translation>Dodaj</translation> - </message> - <message> - <source>Clone</source> - <translation>Sklonuj</translation> - </message> - <message> - <source>Remove</source> - <translation>Usuń</translation> - </message> - <message> - <source>Clone of %1</source> - <translation>Klon %1</translation> - </message> - <message> - <source>New Debugger</source> - <translation>Nowy debugger</translation> - </message> -</context> -<context> <name>Debugger::DebuggerItemManager</name> <message> <source>Auto-detected CDB at %1</source> @@ -36901,65 +29373,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> </message> </context> <context> - <name>Debugger::Internal::DebuggerItemModel</name> - <message> - <source>Auto-detected</source> - <translation>Automatycznie wykryte</translation> - </message> - <message> - <source>Manual</source> - <translation>Ustawione ręcznie</translation> - </message> - <message> - <source>Name</source> - <translation>Nazwa</translation> - </message> - <message> - <source>Path</source> - <translation>Ścieżka</translation> - </message> - <message> - <source>Type</source> - <translation>Typ</translation> - </message> -</context> -<context> - <name>Debugger::Internal::DebuggerItemConfigWidget</name> - <message> - <source>Unknown</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Name:</source> - <translation>Nazwa:</translation> - </message> - <message> - <source>Path:</source> - <translation>Ścieżka:</translation> - </message> - <message> - <source>ABIs:</source> - <translation>ABIs:</translation> - </message> - <message> - <source>Version:</source> - <translation>Wersja:</translation> - </message> - <message> - <source>64-bit version</source> - <translation>w wersji 64 bitowej</translation> - </message> - <message> - <source>32-bit version</source> - <translation>w wersji 32 bitowej</translation> - </message> - <message> - <source><html><body><p>Specify the path to the <a href="%1">Windows Console Debugger executable</a> (%2) here.</p></body></html></source> - <extracomment>Label text for path configuration. %2 is "x-bit version".</extracomment> - <translation><html><body><p>Podaj ścieżkę do <a href="%1">pliku wykonywalnego Windows Console Debugger</a> (%2).</p></body></html></translation> - </message> -</context> -<context> <name>Debugger::Internal::GdbPlainEngine</name> <message> <source>Starting executable failed:</source> @@ -36971,17 +29384,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> </message> </context> <context> - <name>Git::Internal::GitDiffSwitcher</name> - <message> - <source>Switch to Text Diff Editor</source> - <translation type="vanished">Przełącz do tekstowego edytora różnic</translation> - </message> - <message> - <source>Switch to Side By Side Diff Editor</source> - <translation type="vanished">Przełącz do edytora różnic wyświetlającego zawartość sąsiadująco</translation> - </message> -</context> -<context> <name>Ios::Internal::IosBuildStepConfigWidget</name> <message> <source>iOS build</source> @@ -37033,10 +29435,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> <source>Run ended.</source> <translation>Praca zakończona.</translation> </message> - <message> - <source>Run failed unexpectedly.</source> - <translation type="vanished">Praca nieoczekiwanie zakończona.</translation> - </message> </context> <context> <name>Ios::Internal::IosDeployConfiguration</name> @@ -37091,13 +29489,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> </message> </context> <context> - <name>Ios::Internal::IosDeployStepWidget</name> - <message> - <source><b>Deploy to %1</b></source> - <translation type="vanished"><b>Zainstaluj na %1</b></translation> - </message> -</context> -<context> <name>Ios::Internal::IosDevice</name> <message> <source>iOS</source> @@ -37167,10 +29558,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> <translation>Uruchom na %1</translation> </message> <message> - <source>The .pro file '%1' is currently being parsed.</source> - <translation type="vanished">Trwa parsowanie pliku projektu "%1".</translation> - </message> - <message> <source>Run %1 on %2</source> <translation>Uruchom %1 na %2</translation> </message> @@ -37232,10 +29619,6 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> <source>Run ended.</source> <translation>Praca zakończona.</translation> </message> - <message> - <source>Run ended unexpectedly.</source> - <translation type="vanished">Praca nieoczekiwanie zakończona.</translation> - </message> </context> <context> <name>Ios::Internal::IosRunner</name> @@ -37349,8 +29732,8 @@ Czy odinstalować istniejący pakiet następnym razem?</translation> <translation>Błąd DebugBreakProcess:</translation> </message> <message> - <source>%1 does not exist. If you built Qt Creator yourself, check out http://qt.gitorious.org/qt-creator/binary-artifacts.</source> - <translation>%1 nie istnieje. Jeśli zbudowałeś Qt Creatora samodzielnie, sprawdź http://qt.gitorious.org/qt-creator/binary-artifacts.</translation> + <source>%1 does not exist. If you built Qt Creator yourself, check out https://code.qt.io/cgit/qt-creator/binary-artifacts.git/.</source> + <translation>%1 nie istnieje. Jeśli zbudowałeś Qt Creatora samodzielnie, sprawdź http://code.qt.io/cgit/qt-creator/binary-artifacts.git/.</translation> </message> <message> <source>Cannot start %1. Check src\tools\win64interrupt\win64interrupt.c for more information.</source> @@ -37467,13 +29850,6 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani </message> </context> <context> - <name>ProjectExplorer::Internal::UnconfiguredProjectPanel</name> - <message> - <source>Configure Project</source> - <translation type="vanished">Skonfiguruj projekt</translation> - </message> -</context> -<context> <name>ProjectExplorer::Internal::TargetSetupPageWrapper</name> <message> <source>Configure Project</source> @@ -37497,34 +29873,8 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani </message> </context> <context> - <name>PythonEditor::Internal::ClassNamePage</name> - <message> - <source>Enter Class Name</source> - <translation type="vanished">Wprowadź nazwę klasy</translation> - </message> - <message> - <source>The source file name will be derived from the class name</source> - <translation type="vanished">Nazwa pliku źródłowego zostanie zaproponowana na podstawie nazwy klasy</translation> - </message> -</context> -<context> - <name>PythonEditor::Internal::ClassWizardDialog</name> - <message> - <source>Python Class Wizard</source> - <translation type="vanished">Kreator klasy Pythona</translation> - </message> - <message> - <source>Details</source> - <translation type="vanished">Szczegóły</translation> - </message> -</context> -<context> <name>QmakeProjectManager::Internal::DesktopQmakeRunConfiguration</name> <message> - <source>The .pro file '%1' is currently being parsed.</source> - <translation type="vanished">Trwa parsowanie pliku .pro "%1".</translation> - </message> - <message> <source>The .pro file "%1" is currently being parsed.</source> <translation>Trwa parsowanie pliku .pro "%1".</translation> </message> @@ -37548,8 +29898,8 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani <translation>Wybierz katalog roboczy</translation> </message> <message> - <source>Reset to default</source> - <translation>Przywróć domyślne</translation> + <source>Reset to Default</source> + <translation>Przywróć domyślny</translation> </message> <message> <source>Working directory:</source> @@ -37592,21 +29942,6 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani </message> </context> <context> - <name>QmakeProjectManager::Internal::QtQuickComponentSetPage</name> - <message> - <source>Select Qt Quick Component Set</source> - <translation>Wybierz zestaw komponentów Qt Quick</translation> - </message> - <message> - <source>Qt Quick component set:</source> - <translation>Zestaw komponentów Qt Quick:</translation> - </message> - <message> - <source>Component Set</source> - <translation>Zestaw komponentów</translation> - </message> -</context> -<context> <name>TabViewToolAction</name> <message> <source>Add Tab...</source> @@ -37618,17 +29953,6 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani </message> </context> <context> - <name>QmlDesigner::TabViewDesignerAction</name> - <message> - <source>Naming Error</source> - <translation type="vanished">Błąd nazwy</translation> - </message> - <message> - <source>Component already exists.</source> - <translation type="vanished">Komponent już istnieje.</translation> - </message> -</context> -<context> <name>QmlDesigner::ImportLabel</name> <message> <source>Remove Import</source> @@ -37680,60 +30004,6 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani </message> </context> <context> - <name>QmlProfiler::Internal::LocalQmlProfilerRunner</name> - <message> - <source>No executable file to launch.</source> - <translation>Brak pliku do uruchomienia.</translation> - </message> -</context> -<context> - <name>QmlProfiler::Internal::QmlProfilerRunControl</name> - <message> - <source>Qt Creator</source> - <translation>Qt Creator</translation> - </message> - <message> - <source>Could not connect to the in-process QML debugger: -%1</source> - <extracomment>%1 is detailed error message</extracomment> - <translation>Nie można podłączyć się do wewnątrzprocesowego debuggera QML: -%1</translation> - </message> - <message> - <source>QML Profiler</source> - <translation>Profiler QML</translation> - </message> -</context> -<context> - <name>QmlProfiler::Internal::QmlProfilerEventsModelProxy</name> - <message> - <source><program></source> - <translation type="vanished"><program></translation> - </message> - <message> - <source>Main Program</source> - <translation type="vanished">Główny program</translation> - </message> -</context> -<context> - <name>QmlProfiler::Internal::QmlProfilerEventParentsModelProxy</name> - <message> - <source><program></source> - <translation type="vanished"><program></translation> - </message> - <message> - <source>Main Program</source> - <translation type="vanished">Główny program</translation> - </message> -</context> -<context> - <name>QmlProfiler::Internal::QmlProfilerEventChildrenModelProxy</name> - <message> - <source><program></source> - <translation type="vanished"><program></translation> - </message> -</context> -<context> <name>QmlProfiler::Internal::QmlProfilerEventRelativesView</name> <message> <source><bytecode></source> @@ -37766,39 +30036,16 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani <translation>Nie można otworzyć "%1" do zapisu.</translation> </message> <message> - <source>Could not open %1 for reading.</source> - <translation>Nie można otworzyć "%1" do odczytu.</translation> - </message> -</context> -<context> - <name>QmlProfiler::Internal::PaintEventsModelProxy</name> - <message> - <source>Painting</source> - <translation type="vanished">Rysowanie</translation> - </message> - <message> - <source>Animations</source> - <translation>Animacje</translation> - </message> - <message> - <source>GUI Thread</source> - <translation>Wątek GUI</translation> - </message> - <message> - <source>Render Thread</source> - <translation>Wątek renderingu</translation> - </message> - <message> - <source>Duration</source> - <translation>Czas trwania</translation> + <source>Saving Trace Data</source> + <translation type="unfinished"></translation> </message> <message> - <source>Framerate</source> - <translation>Klatki na sekundę</translation> + <source>Could not open %1 for reading.</source> + <translation>Nie można otworzyć "%1" do odczytu.</translation> </message> <message> - <source>Context</source> - <translation>Kontekst</translation> + <source>Loading Trace Data</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -37827,244 +30074,8 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani </message> </context> <context> - <name>QmlProjectManager::Internal::QmlComponentSetPage</name> - <message> - <source>Select Qt Quick Component Set</source> - <translation>Wybierz zestaw komponentów Qt Quick</translation> - </message> - <message> - <source>Qt Quick component set:</source> - <translation>Zestaw komponentów Qt Quick:</translation> - </message> - <message> - <source>Component Set</source> - <translation>Zestaw komponentów</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryConfigurationManager</name> - <message> - <source>NDK Already Known</source> - <translation>NDK już znane</translation> - </message> - <message> - <source>The NDK already has a configuration.</source> - <translation>NDK już jest skonfigurowane.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryInstallWizard</name> - <message> - <source>BlackBerry NDK Installation Wizard</source> - <translation>Kreator instalacji NDK BlackBerry</translation> - </message> - <message> - <source>Confirmation</source> - <translation>Potwierdzenie</translation> - </message> - <message> - <source>Are you sure you want to cancel?</source> - <translation>Czy anulować?</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryInstallWizardOptionPage</name> - <message> - <source>Options</source> - <translation>Opcje</translation> - </message> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Install API level</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Install new target</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Add existing target</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Install simulator</source> - <translation>Zainstaluj symulator</translation> - </message> - <message> - <source>Install runtime</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryInstallWizardFinalPage</name> - <message> - <source>Summary</source> - <translation>Podsumowanie</translation> - </message> - <message> - <source>An error has occurred while adding target from: - %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Target %1 is being added.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Target %1 is already added.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Finished uninstalling %1 version: - %2</source> - <translation>Zakończono dezinstalowanie %1 wersja: - %2</translation> - </message> - <message> - <source>Finished installing %1 version: - %2</source> - <translation>Zakończono instalowanie %1 wersja: - %2</translation> - </message> - <message> - <source>An error has occurred while uninstalling %1 version: - %2</source> - <translation>Wystąpił błąd podczas dezinstalowania %1 wersja: - %2</translation> - </message> - <message> - <source>An error has occurred while installing %1 version: - %2</source> - <translation>Wystąpił błąd podczas instalowania %1 wersja: - %2</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryLogProcessRunner</name> - <message> - <source>Cannot show debug output. Error: %1</source> - <translation>Nie można pokazać komunikatów debugowych. Błąd: %1</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerrySigningUtils</name> - <message> - <source>Please provide your BlackBerry ID Token PIN.</source> - <translation>Podaj BlackBerry ID Token PIN.</translation> - </message> - <message> - <source>Please enter your certificate password.</source> - <translation>Podaj hasło do certyfikatu.</translation> - </message> - <message> - <source>Qt Creator</source> - <translation>Qt Creator</translation> - </message> -</context> -<context> - <name>BarDescriptorConverter</name> - <message> - <source>Setting asset path: %1 to %2 type: %3 entry point: %4</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Removing asset path: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Replacing asset source path: %1 -> %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cannot find image asset definition: <%1></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Error parsing XML file "%1": %2</source> - <translation>Błąd parsowania pliku XML "%1": %2</translation> - </message> - <message> - <source>Error parsing XML file '%1': %2</source> - <translation type="vanished">Błąd parsowania pliku XML "%1": %2</translation> - </message> -</context> -<context> - <name>Qnx::Internal::CascadesImportWizardDialog</name> - <message> - <source>Import Existing Momentics Cascades Project</source> - <translation>Import istniejącego projektu Momentics Cascades</translation> - </message> - <message> - <source>Momentics Cascades Project Name and Location</source> - <translation>Nazwa projektu Momentics Cascades i położenie</translation> - </message> - <message> - <source>Project Name and Location</source> - <translation>Nazwa projektu i położenie</translation> - </message> - <message> - <source>Momentics</source> - <translation type="vanished">Momentics</translation> - </message> - <message> - <source>Qt Creator</source> - <translation>Qt Creator</translation> - </message> -</context> -<context> - <name>Qnx::Internal::CascadesImportWizard</name> - <message> - <source>Momentics Cascades Project</source> - <translation>Projekt Momentics Cascades</translation> - </message> - <message> - <source>Imports existing Cascades projects created within QNX Momentics IDE. This allows you to use the project in Qt Creator.</source> - <translation>Importuje istniejące projekty Cascades utworzone przy pomocy QNX Momentics IDE.</translation> - </message> - <message> - <source>Error generating file "%1": %2</source> - <translation>Błąd generowania pliku "%1": %2</translation> - </message> - <message> - <source>Error generating file '%1': %2</source> - <translation type="vanished">Błąd podczas generowania pliku "%1": %2</translation> - </message> -</context> -<context> - <name>FileConverter</name> - <message> - <source>===== Converting file: %1</source> - <translation>===== Konwersja pliku: %1</translation> - </message> -</context> -<context> - <name>ImportLogConverter</name> - <message> - <source>Generated by cascades importer ver: %1, %2</source> - <translation>Wygenerowany przez importer cascades w wersji: %1, %2</translation> - </message> -</context> -<context> - <name>ProjectFileConverter</name> - <message> - <source>File '%1' not listed in '%2' file, should it be?</source> - <translation type="vanished">Plik "%1" nie występuje w pliku "%2", czy powinien?</translation> - </message> - <message> - <source>File "%1" not listed in "%2" file, should it be?</source> - <translation>Plik "%1" nie wymieniony wewnątrz pliku "%2", czy powinien zostać wymieniony?</translation> - </message> -</context> -<context> <name>Qnx::Internal::QnxRunControl</name> <message> - <source>Warning: "slog2info" is not found on the device, debug output not available!</source> - <translation type="vanished">Ostrzeżenie: brak"slog2info" na urządzeniu, komunikaty debugowe nie będą dostępne.</translation> - </message> - <message> <source>Warning: "slog2info" is not found on the device, debug output not available.</source> <translation>Ostrzeżenie: brak"slog2info" na urządzeniu, komunikaty debugowe nie będą dostępne.</translation> </message> @@ -38100,13 +30111,6 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani </message> </context> <context> - <name>Qt4ProjectManager</name> - <message> - <source>Qt Versions</source> - <translation type="vanished">Wersje Qt</translation> - </message> -</context> -<context> <name>RemoteLinux::RemoteLinuxSignalOperation</name> <message> <source>Exit code is %1. stderr:</source> @@ -38134,22 +30138,6 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani <context> <name>Valgrind::Memcheck::MemcheckRunner</name> <message> - <source>No network interface found for remote analysis.</source> - <translation type="vanished">Brak interfejsu sieciowego do zdalnej analizy.</translation> - </message> - <message> - <source>Select Network Interface</source> - <translation type="vanished">Wybierz interfejs sieciowy</translation> - </message> - <message> - <source>More than one network interface was found on your machine. Please select the one you want to use for remote analysis.</source> - <translation type="vanished">Znaleziono kilka interfejsów sieciowych. Wybierz ten, który ma zostać użyty do zdalnej analizy.</translation> - </message> - <message> - <source>No network interface was chosen for remote analysis.</source> - <translation type="vanished">Nie wybrano interfejsu sieciowego do zdalnej analizy.</translation> - </message> - <message> <source>XmlServer on %1:</source> <translation>XmlServer na %1:</translation> </message> @@ -38186,34 +30174,14 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani <message numerus="yes"> <source>Log file processed, %n issues were found.</source> <translation> - <numerusform>Przetworzono plik loga, znaleziono %n problem.</numerusform> - <numerusform>Przetworzono plik loga, znaleziono %n problemy.</numerusform> - <numerusform>Przetworzono plik loga, znaleziono %n problemów.</numerusform> + <numerusform>Przetworzono plik logu, znaleziono %n problem.</numerusform> + <numerusform>Przetworzono plik logu, znaleziono %n problemy.</numerusform> + <numerusform>Przetworzono plik logu, znaleziono %n problemów.</numerusform> </translation> </message> <message> <source>Log file processed, no issues were found.</source> - <translation>Przetworzono plik loga, nie znaleziono żadnych problemów.</translation> - </message> - <message> - <source>Debug</source> - <translation>Debug</translation> - </message> - <message> - <source>Release</source> - <translation>Release</translation> - </message> - <message> - <source>Tool</source> - <translation>Narzędzie</translation> - </message> - <message> - <source>Run %1 in %2 Mode?</source> - <translation>Uruchomić %1 w trybie %2?</translation> - </message> - <message> - <source><html><head/><body><p>You are trying to run the tool "%1" on an application in %2 mode. The tool is designed to be used in %3 mode.</p><p>Debug and Release mode run-time characteristics differ significantly, analytical findings for one mode may or may not be relevant for the other.</p><p>Do you want to continue and run the tool in %2 mode?</p></body></html></source> - <translation><html><head/><body><p>Próba uruchomienia narzędzia "%1" na aplikacji w trybie %2. Narzędzie nie jest zaprojektowane do użycia w trybie %3.</p><p>Charakterystyki uruchamiania w trybach Debug i Release znacznie się różnią, analityczne dane z jednego trybu nie będą odpowiadały drugiemu trybowi.</p><p>Czy kontynuować i uruchomić je w trybie %2?</p></body></html></translation> + <translation>Przetworzono plik logu, nie znaleziono żadnych problemów.</translation> </message> </context> <context> @@ -38257,18 +30225,27 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani <context> <name>Valgrind::Internal::ValgrindPlugin</name> <message> - <source>Valgrind Function Profile uses the "callgrind" tool to record function calls when a program runs.</source> - <translation>Profiler funkcji Valgrinda używa narzędzia "callgrind" do rejestrowania wywołań funkcji w trakcie działania programu.</translation> + <source>Valgrind Function Profile uses the Callgrind tool to record function calls when a program runs.</source> + <translation type="unfinished"></translation> </message> <message> - <source>Valgrind Analyze Memory uses the "memcheck" tool to find memory leaks.</source> - <translation>Analiza pamięci Valgrinda używa narzędzia "memcheck" do znajdywania wycieków pamięci.</translation> + <source>Valgrind Analyze Memory uses the Memcheck tool to find memory leaks.</source> + <translation type="unfinished"></translation> </message> <message> <source>Valgrind Memory Analyzer</source> <translation>Analizator pamięci Valgrind</translation> </message> <message> + <source>Valgrind Memory Analyzer with GDB</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Valgrind Analyze Memory with GDB uses the Memcheck tool to find memory leaks. +When a problem is detected, the application is interrupted and can be debugged.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Valgrind Function Profiler</source> <translation>Profiler funkcji Valgrind</translation> </message> @@ -38281,14 +30258,6 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani <translation>Profiler funkcji Valgrind (zewnętrzna zdalna aplikacja)</translation> </message> <message> - <source>Valgrind Memory Analyzer (Remote)</source> - <translation type="vanished">Analizator pamięci Valgrind (zdalny)</translation> - </message> - <message> - <source>Valgrind Function Profiler (Remote)</source> - <translation type="vanished">Profiler funkcji Valgrind (zdalny)</translation> - </message> - <message> <source>Profile Costs of This Function and Its Callees</source> <translation type="unfinished"></translation> </message> @@ -38308,81 +30277,6 @@ Proszę zamknąć wszystkie instancje tej aplikacji przed uruchomieniem budowani </message> </context> <context> - <name>QmakeProjectManager::QtQuickAppWizard</name> - <message> - <source>Creates a deployable Qt Quick 1 application using the QtQuick 1.1 import. Requires Qt 4.8 or newer.</source> - <translation>Tworzy aplikację Qt Quick 1, która importuje QtQuick 1.1. Wymaga Qt 4.8 lub nowszej wersji.</translation> - </message> - <message> - <source>Qt Quick 1.1</source> - <translation>Qt Quick 1.1</translation> - </message> - <message> - <source>Creates a deployable Qt Quick 2 application using the QtQuick 2.1 import. Requires Qt 5.1 or newer.</source> - <translation>Tworzy aplikację Qt Quick 2, która importuje QtQuick 2.1. Wymaga Qt 5.1 lub nowszej wersji.</translation> - </message> - <message> - <source>Qt Quick 2.1</source> - <translation>Qt Quick 2.1</translation> - </message> - <message> - <source>Creates a deployable Qt Quick 2 application using the QtQuick 2.2 import. Requires Qt 5.2 or newer.</source> - <translation>Tworzy aplikację Qt Quick 2, która importuje QtQuick 2.2. Wymaga Qt 5.2 lub nowszej wersji.</translation> - </message> - <message> - <source>Qt Quick 2.2</source> - <translation>Qt Quick 2.2</translation> - </message> - <message> - <source>Creates a deployable Qt Quick 2 application using the QtQuick 2.3 import. Requires Qt 5.3 or newer.</source> - <translation>Tworzy aplikację Qt Quick 2, która importuje QtQuick 2.3. Wymaga Qt 5.3 lub nowszej wersji.</translation> - </message> - <message> - <source>Qt Quick 2.3</source> - <translation>Qt Quick 2.3</translation> - </message> - <message> - <source>Creates a deployable Qt Quick 2 application that contains a .ui.qml file using the QtQuick 2.4 import. Requires Qt 5.4 or newer.</source> - <translation>Tworzy aplikację Qt Quick 2, zawierającą plik .ui.qml i importuje QtQuick 2.4. Wymaga Qt 5.4 lub nowszej wersji.</translation> - </message> - <message> - <source>Qt Quick 2.4</source> - <translation>Qt Quick 2.4</translation> - </message> - <message> - <source>Creates a deployable Qt Quick 2 application using Qt Quick Controls. Requires Qt 5.2 or newer.</source> - <translation>Tworzy aplikację Qt Quick 2, która używa Qt Quick Controls. Wymaga Qt 5.2 lub nowszej wersji.</translation> - </message> - <message> - <source>Qt Quick Controls 1.1</source> - <translation>Qt Quick Controls 1.1</translation> - </message> - <message> - <source>Creates a deployable Qt Quick 2 application using Qt Quick Controls. Requires Qt 5.3 or newer.</source> - <translation>Tworzy aplikację Qt Quick 2, która używa Qt Quick Controls. Wymaga Qt 5.3 lub nowszej wersji.</translation> - </message> - <message> - <source>Qt Quick Controls 1.2</source> - <translation>Qt Quick Controls 1.2</translation> - </message> - <message> - <source>Creates a deployable Qt Quick 2 application that contains a .ui.qml file and uses Qt Quick Controls. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.4 or newer.</source> - <translation>Tworzy aplikację Qt Quick 2 zawierającą plik .ui.qml i używającą Qt Quick Controls. Projekty Qt Quick 2 można przeglądać przy pomocy QML Scene, bez ich uprzedniego budowania. Takie projekty wymagają instalacji Qt Quick Controls. Wymagana jest również wersja Qt 5.4 lub nowsza.</translation> - </message> - <message> - <source>Qt Quick Controls 1.3</source> - <translation>Qt Quick Controls 1.3</translation> - </message> - <message> - <source>Creates a deployable Qt Quick 2 application using Qt Quick Controls. Requires Qt 5.1 or newer.</source> - <translation>Tworzy aplikację Qt Quick 2, która używa Qt Quick Controls. Wymaga Qt 5.1 lub nowszej wersji.</translation> - </message> - <message> - <source>Qt Quick Controls 1.0</source> - <translation>Qt Quick Controls 1.0</translation> - </message> -</context> -<context> <name>Bazaar::Internal::UnCommitDialog</name> <message> <source>Uncommit</source> @@ -38441,17 +30335,13 @@ For example, "Revision: 15" will leave the branch at revision 15.</sou <translation>Używaj plików *.astylerc zdefiniowanych w plikach projektów</translation> </message> <message> - <source>Use self-defined style:</source> - <translation type="vanished">Używaj własnego stylu:</translation> - </message> - <message> <source>Artistic Style</source> <translation>Styl Artistic</translation> </message> <message> <source>Use file .astylerc or astylerc in HOME</source> <extracomment>HOME is replaced by the user's home directory</extracomment> - <translation type="unfinished"></translation> + <translation>Używaj plików .astylerc lub astylerc zdefiniowanych w HOME</translation> </message> <message> <source>Use customized style:</source> @@ -38477,14 +30367,6 @@ For example, "Revision: 15" will leave the branch at revision 15.</sou <translation>Opcje</translation> </message> <message> - <source>Use Predefined Style:</source> - <translation type="vanished">Używaj stylu predefiniowanego:</translation> - </message> - <message> - <source>Use Customized Style:</source> - <translation type="vanished">Używaj własnego stylu:</translation> - </message> - <message> <source>Format entire file if no text was selected. (For action Format Selected Text)</source> <translation>Formatuj cały plik w przypadku braku zaznaczonego tekstu. (Dla akcji "Sformatuj zaznaczony tekst")</translation> </message> @@ -38516,10 +30398,6 @@ For example, "Revision: 15" will leave the branch at revision 15.</sou <translation>Dokumentacja</translation> </message> <message> - <source>Documentation for '%1'</source> - <translation type="vanished">Dokumentacja dla "%1"</translation> - </message> - <message> <source>Documentation for "%1"</source> <translation>Dokumentacja dla "%1"</translation> </message> @@ -38574,10 +30452,6 @@ For example, "Revision: 15" will leave the branch at revision 15.</sou <translation>Używaj plików uncrustify.cfg zdefiniowanych w plikach projektów</translation> </message> <message> - <source>Use self-defined style:</source> - <translation type="vanished">Używaj własnego stylu:</translation> - </message> - <message> <source>Uncrustify</source> <translation type="unfinished"></translation> </message> @@ -38699,21 +30573,12 @@ For example, "Revision: 15" will leave the branch at revision 15.</sou <translation>Podaj filtry nazw plików. oddzielone przecinkiem. Filtry mogą zawierać dżokery.</translation> </message> <message> - <source>Prefix:</source> - <translation>Przedrostek:</translation> - </message> - <message> <source>Specify a short word/abbreviation that can be used to restrict completions to files from this directory tree. To do this, you type this shortcut and a space in the Locator entry field, and then the word to search for.</source> <translation>Podaj krótkie słowo lub skrót, który zostanie użyty do odfiltrowania plików w podanych katalogach. Aby uaktywnić ten filtr, wpisz w lokalizatorze powyższy skrót i po spacji podaj szukane słowo.</translation> </message> <message> - <source>Limit to prefix</source> - <translation>Ogranicz aktywność filtru: -aktywny tylko po wpisaniu przedrostka</translation> - </message> - <message> <source>Add...</source> <translation>Dodaj...</translation> </message> @@ -38733,19 +30598,6 @@ aktywny tylko po wpisaniu przedrostka</translation> <context> <name>Core::Internal::FileSystemFilterOptions</name> <message> - <source>Add Filter Configuration</source> - <translation>Dodaj konfigurację filtra</translation> - </message> - <message> - <source>Prefix:</source> - <translation>Przedrostek:</translation> - </message> - <message> - <source>Limit to prefix</source> - <translation>Ogranicz aktywność filtru: -aktywny tylko po wpisaniu przedrostka</translation> - </message> - <message> <source>Include hidden files</source> <translation>Włącz ukryte pliki</translation> </message> @@ -38786,123 +30638,6 @@ aktywny tylko po wpisaniu przedrostka</translation> </message> </context> <context> - <name>Qnx::Internal::BlackBerryCheckDeviceStatusStepConfigWidget</name> - <message> - <source>Form</source> - <translation>Formularz</translation> - </message> - <message> - <source>Check device runtime</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Check debug token</source> - <translation type="unfinished"></translation> - </message> - <message> - <source><b>Check device status</b></source> - <translation><b>Sprawdź stan urządzenia</b></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDebugTokenPinsDialog</name> - <message> - <source>Dialog</source> - <translation>Dialog</translation> - </message> - <message> - <source><html><head/><body><p><span style=" font-weight:600;">Debug token: </span></p></body></html></source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Add</source> - <translation>Dodaj</translation> - </message> - <message> - <source>Edit</source> - <translation>Zmodyfikuj</translation> - </message> - <message> - <source>Remove</source> - <translation>Usuń</translation> - </message> - <message> - <source>Debug Token PINs</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Confirmation</source> - <translation>Potwierdzenie</translation> - </message> - <message> - <source>Are you sure you want to remove PIN: %1?</source> - <translation>Czy usunąć PIN: %1?</translation> - </message> - <message> - <source>Debug Token PIN</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryDeployQtLibrariesDialog</name> - <message> - <source>Deploy Qt to BlackBerry Device</source> - <translation type="vanished">Instalacja Qt na urządzeniu BlackBerry</translation> - </message> - <message> - <source>Qt library to deploy:</source> - <translation type="vanished">Biblioteka Qt do zainstalowania:</translation> - </message> - <message> - <source>Deploy</source> - <translation type="vanished">Zainstaluj</translation> - </message> - <message> - <source>Remote directory:</source> - <translation type="vanished">Zdalny katalog:</translation> - </message> - <message> - <source>/accounts/devuser/</source> - <translation type="vanished">/accounts/devuser/</translation> - </message> - <message> - <source>qt</source> - <translation type="vanished">qt</translation> - </message> - <message> - <source>Close</source> - <translation type="vanished">Zamknij</translation> - </message> - <message> - <source>Closing the dialog will stop the deployment. Are you sure you want to do this?</source> - <translation type="vanished">Zamknięcie dialogu spowoduje zatrzymanie instalacji. Czy zamknąć dialog?</translation> - </message> - <message> - <source>Please input a remote directory to deploy to.</source> - <translation type="vanished">Wprowadź zdalny katalog instalacji.</translation> - </message> - <message> - <source>Connection failed: %1</source> - <translation type="vanished">Błąd połączenia: %1</translation> - </message> - <message> - <source>The remote directory '%1' already exists. Deploying to that directory will remove any files already present. - -Are you sure you want to continue?</source> - <translation type="vanished">Zdalny katalog "%1" już istnieje. Instalacja do tego katalogu spowoduje usunięcie całej jego zawartości. - -Czy kontynuować instalację?</translation> - </message> - <message> - <source>Checking existence of '%1'</source> - <translation type="vanished">Sprawdzanie obecności "%1"</translation> - </message> - <message> - <source>Removing '%1'</source> - <translation type="vanished">Usuwanie "%1"</translation> - </message> -</context> -<context> <name>WinRt::Internal::WinRtRunConfigurationWidget</name> <message> <source>Arguments:</source> @@ -38920,14 +30655,6 @@ Czy kontynuować instalację?</translation> <context> <name>QmlJS::ModelManagerInterface</name> <message> - <source>Indexing</source> - <translation type="vanished">Indeksowanie</translation> - </message> - <message> - <source>QML import scan</source> - <translation type="vanished">Skanowanie importów QML</translation> - </message> - <message> <source>Parsing QML Files</source> <translation>Parsowanie plików QML</translation> </message> @@ -39005,12 +30732,6 @@ Error: %2</source> Błąd: %2</translation> </message> <message> - <source>Failed to parse '%1'. -Error: %2</source> - <translation type="vanished">Nie można sparsować "%1". -Błąd: %2</translation> - </message> - <message> <source>Errors while reading typeinfo files:</source> <translation>Błędy podczas czytania plików typeinfo:</translation> </message> @@ -39050,12 +30771,6 @@ Zbuduj aplikację qmldump na stronie z opcjami wersji Qt.</translation> <translation>Błąd w trakcie tworzenia AVD</translation> </message> <message> - <source>Cannot create a new AVD. No sufficiently recent Android SDK available. -Please install an SDK of at least API version %1.</source> - <translation type="vanished">Nie można utworzyć nowego AVD. Brak aktualnego Android SDK. -Zainstaluj SDK z wersją API %1 lub nowszą.</translation> - </message> - <message> <source>Could not start process "%1 %2"</source> <translation>Nie można uruchomić procesu "%1 %2"</translation> </message> @@ -39075,17 +30790,6 @@ Zainstaluj SDK z wersją API %1 lub nowszą.</translation> </message> </context> <context> - <name>Android::Internal::JavaFileWizard</name> - <message> - <source>Creates a Java file with boilerplate code.</source> - <translation type="vanished">Tworzy plik Java ze wstępnym kodem.</translation> - </message> - <message> - <source>Java File</source> - <translation type="vanished">Plik Java</translation> - </message> -</context> -<context> <name>AbstractSettings</name> <message> <source>Cannot save styles. %1 does not exist.</source> @@ -39146,6 +30850,10 @@ Zainstaluj SDK z wersją API %1 lub nowszą.</translation> <translation>Przekroczono czas oczekiwania na sformatowanie pliku %1.</translation> </message> <message> + <source>Could not format file %1.</source> + <translation>Nie można sformatować pliku %1.</translation> + </message> + <message> <source>File %1 was closed.</source> <translation>Zamknięto plik %1.</translation> </message> @@ -39191,10 +30899,6 @@ Zainstaluj SDK z wersją API %1 lub nowszą.</translation> <context> <name>ClangCodeModel::Internal::ClangIndexer</name> <message> - <source>C++ Indexing</source> - <translation type="vanished">Indeksowanie C++</translation> - </message> - <message> <source>Parsing C/C++/ObjC Files</source> <translation>Parsowanie plików C / C++ / ObjC</translation> </message> @@ -39223,22 +30927,6 @@ Zainstaluj SDK z wersją API %1 lub nowszą.</translation> </message> </context> <context> - <name>ClangCodeModel::CompletionProposalsBuilder</name> - <message> - <source>Is deprecated</source> - <extracomment>deprecated C++ symbol</extracomment> - <translation>Jest przestarzały</translation> - </message> - <message> - <source>Slot of %1, returns %2</source> - <translation>Slot w %1, zwraca %2</translation> - </message> - <message> - <source>Signal of %1, returns %2</source> - <translation>Sygnał w %1, zwraca %2</translation> - </message> -</context> -<context> <name>ClangCodeModel::Diagnostic</name> <message> <source>ignored</source> @@ -39275,10 +30963,6 @@ Zainstaluj SDK z wersją API %1 lub nowszą.</translation> <source>Precompiling</source> <translation>Prekompilacja</translation> </message> - <message> - <source>Precompiling...</source> - <translation type="vanished">Prekompilacja...</translation> - </message> </context> <context> <name>Core::FindPlugin</name> @@ -39466,9 +31150,9 @@ Zainstaluj SDK z wersją API %1 lub nowszą.</translation> <message numerus="yes"> <source>The search resulted in more than %n items, do you still want to continue?</source> <translation> - <numerusform>Odnaleziono wiecej niż %n element, czy kontynuować?</numerusform> - <numerusform>Odnaleziono wiecej niż %n elementy, czy kontynuować?</numerusform> - <numerusform>Odnaleziono wiecej niż %n elementów, czy kontynuować?</numerusform> + <numerusform>Odnaleziono wiecej niż %n element, kontynuować?</numerusform> + <numerusform>Odnaleziono wiecej niż %n elementy, kontynuować?</numerusform> + <numerusform>Odnaleziono wiecej niż %n elementów, kontynuować?</numerusform> </translation> </message> <message> @@ -39522,10 +31206,6 @@ Zainstaluj SDK z wersją API %1 lub nowszą.</translation> <translation>Ogólny filtr katalogów</translation> </message> <message> - <source>Filter Configuration</source> - <translation>Konfiguracja filtra</translation> - </message> - <message> <source>Select Directory</source> <translation>Wybierz katalog</translation> </message> @@ -39571,32 +31251,10 @@ Czy przerwać ją?</translation> <translation>Uruchamianie komendy "%1".</translation> </message> <message> - <source>Previous command is still running ('%1'). -Do you want to kill it?</source> - <translation type="vanished">Poprzednia komenda jest wciąż uruchomiona ("%1"). -Czy przerwać ją?</translation> - </message> - <message> <source>Kill Previous Process?</source> <translation>Czy przerwać poprzedni proces?</translation> </message> <message> - <source>Command '%1' finished.</source> - <translation type="vanished">Komenda "%1" zakończona.</translation> - </message> - <message> - <source>Command '%1' failed.</source> - <translation type="vanished">Komenda "%1" zakończona błędem.</translation> - </message> - <message> - <source>Could not find executable for '%1'.</source> - <translation type="vanished">Nie można odnaleźć pliku wykonywalnego dla "%1".</translation> - </message> - <message> - <source>Starting command '%1'.</source> - <translation type="vanished">Uruchamianie komendy "%1".</translation> - </message> - <message> <source>Could not start process: %1.</source> <translation>Nie można uruchomić procesu %1.</translation> </message> @@ -39623,9 +31281,16 @@ Czy przerwać ją?</translation> <translation>Konfiguracja filtra</translation> </message> <message> - <source>Limit to prefix</source> - <translation>Ogranicz aktywność filtru: -aktywny tylko po wpisaniu przedrostka</translation> + <source>Type the prefix followed by a space and search term to restrict search to the filter.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Include by default</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Include the filter when not using a prefix for searches.</source> + <translation type="unfinished"></translation> </message> <message> <source>Prefix:</source> @@ -39647,12 +31312,20 @@ aktywny tylko po wpisaniu przedrostka</translation> <translation>Wpisz aby znaleźć (%1)</translation> </message> <message> - <source>Updating Locator Caches</source> + <source><html><body style="color:#909090; font-size:14px"><div align='center'><div style="font-size:20px">Open a document</div><table><tr><td><hr/><div style="margin-top: 5px">&bull; File > Open File or Project (%1)</div><div style="margin-top: 5px">&bull; File > Recent Files</div><div style="margin-top: 5px">&bull; Tools > Locate (%2) and</div><div style="margin-left: 1em">- type to open file from any open project</div>%4%5<div style="margin-left: 1em">- type <code>%3&lt;space&gt;&lt;filename&gt;</code> to open file from file system</div><div style="margin-left: 1em">- select one of the other filters for jumping to a location</div><div style="margin-top: 5px">&bull; Drag and drop files here</div></td></tr></table></div></body></html></source> <translation type="unfinished"></translation> </message> <message> - <source>Indexing</source> - <translation type="vanished">Indeksowanie</translation> + <source><div style="margin-left: 1em">- type <code>%1&lt;space&gt;&lt;pattern&gt;</code> to jump to a class definition</div></source> + <translation type="unfinished"></translation> + </message> + <message> + <source><div style="margin-left: 1em">- type <code>%1&lt;space&gt;&lt;pattern&gt;</code> to jump to a function definition</div></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Updating Locator Caches</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -39689,13 +31362,6 @@ aktywny tylko po wpisaniu przedrostka</translation> </message> </context> <context> - <name>Core::Internal::SettingsPage</name> - <message> - <source>%1 (prefix: %2)</source> - <translation>%1 (przedrostek: %2)</translation> - </message> -</context> -<context> <name>Debugger::Internal::UnstartedAppWatcherDialog</name> <message> <source>Attach to Process Not Yet Started</source> @@ -39752,10 +31418,6 @@ aktywny tylko po wpisaniu przedrostka</translation> </context> <context> <name>DiffEditor::DiffEditorController</name> - <message> - <source>No difference</source> - <translation>Brak różnic</translation> - </message> <message numerus="yes"> <source>and %n more</source> <extracomment>Displayed after the untranslated message "Branches: branch1, branch2 'and %n more'"</extracomment> @@ -39765,90 +31427,9 @@ aktywny tylko po wpisaniu przedrostka</translation> <numerusform>i jeszcze %n gałęzi</numerusform> </translation> </message> -</context> -<context> - <name>DiffEditor::DiffEditorManager</name> <message> - <source>Waiting for data...</source> - <translation>Oczekiwanie na dane...</translation> - </message> -</context> -<context> - <name>DiffEditor::SideDiffEditorWidget</name> - <message numerus="yes"> - <source>Skipped %n lines...</source> - <translation type="vanished"> - <numerusform>Opuszczono %n linię...</numerusform> - <numerusform>Opuszczono %n linie...</numerusform> - <numerusform>Opuszczono %n linii...</numerusform> - </translation> - </message> - <message> - <source>[%1] %2</source> - <translation>[%1] %2</translation> - </message> -</context> -<context> - <name>DiffEditor::SideBySideDiffEditorWidget</name> - <message numerus="yes"> - <source>Skipped %n lines...</source> - <translation> - <numerusform>Opuszczono %n linię...</numerusform> - <numerusform>Opuszczono %n linie...</numerusform> - <numerusform>Opuszczono %n linii...</numerusform> - </translation> - </message> - <message> - <source>Binary files differ</source> - <translation>Pliki binarne różnią się</translation> - </message> - <message> - <source>Skipped unknown number of lines...</source> - <translation>Pominięto nieznaną ilość linii...</translation> - </message> - <message> - <source>No controller</source> - <translation>Brak kontrolera</translation> - </message> - <message> - <source>No difference</source> - <translation>Brak różnic</translation> - </message> - <message> - <source>Send Chunk to CodePaster...</source> - <translation>Wyślij fragment do Codepaster...</translation> - </message> - <message> - <source>Apply Chunk...</source> - <translation>Zastosuj fragment...</translation> - </message> - <message> - <source>Revert Chunk...</source> - <translation>Zastosuj odwrotny fragment...</translation> - </message> - <message> - <source>Unable to Paste</source> - <translation>Nie można wkleić</translation> - </message> - <message> - <source>Code pasting services are not available.</source> - <translation>Usługi wklejania kodu są niedostępne.</translation> - </message> - <message> - <source>Revert Chunk</source> - <translation>Odwróć zmiany we fragmencie</translation> - </message> - <message> - <source>Apply Chunk</source> - <translation>Zastosuj fragment</translation> - </message> - <message> - <source>Would you like to revert the chunk?</source> - <translation>Czy zastosować odwrotny fragment?</translation> - </message> - <message> - <source>Would you like to apply the chunk?</source> - <translation>Czy zastosować fragment?</translation> + <source><None></source> + <translation><Brak></translation> </message> </context> <context> @@ -39920,17 +31501,6 @@ Te pliki są zabezpieczone.</numerusform> </message> </context> <context> - <name>QmlJSEditor::Internal::QmlJSTextEditorWidget</name> - <message> - <source>Show Qt Quick ToolBar</source> - <translation type="vanished">Pokaż pasek narzędzi Qt Quick</translation> - </message> - <message> - <source>Refactoring</source> - <translation type="vanished">Refaktoryzacja</translation> - </message> -</context> -<context> <name>QmlProfiler::QmlProfilerBaseModel</name> <message> <source> µs</source> @@ -39956,399 +31526,9 @@ Te pliki są zabezpieczone.</numerusform> <translation>Wątek GUI</translation> </message> <message> - <source>Source code not available.</source> - <translation type="vanished">Kod źródłowy nie jest dostępny.</translation> - </message> - <message> <source>anonymous function</source> <translation>anonimowa funkcja</translation> </message> - <message> - <source>Animations</source> - <translation type="vanished">Animacje</translation> - </message> -</context> -<context> - <name>QmlProfiler::QV8ProfilerDataModel</name> - <message> - <source><program></source> - <translation><program></translation> - </message> - <message> - <source>Main Program</source> - <translation>Główny program</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryApiLevelConfiguration</name> - <message> - <source>Qt %1 for %2</source> - <translation type="vanished">Qt %1 dla %2</translation> - </message> - <message> - <source>QCC for %1</source> - <translation>QCC dla %1</translation> - </message> - <message> - <source>Debugger for %1</source> - <translation>Debugger dla %1</translation> - </message> - <message> - <source>- No Qt version found.</source> - <translation>- Brak wersji Qt.</translation> - </message> - <message> - <source>- No GCC compiler found.</source> - <translation type="vanished">- Brak kompilatora GCC.</translation> - </message> - <message> - <source>- No GDB debugger found for BB10 Device.</source> - <translation type="vanished">- Brak debuggera GDB dla urządzenia BB10.</translation> - </message> - <message> - <source>- No GDB debugger found for BB10 Simulator.</source> - <translation type="vanished">- Brak debuggera GDB dla symulatora BB10.</translation> - </message> - <message> - <source>Qt %{Qt:Version} for %2</source> - <translation>Qt %{Qt:Version} dla %2</translation> - </message> - <message> - <source>- No auto detection source found.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>- No sysroot found.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>The following errors occurred while activating target "%1": -</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cannot Set up BB10 Configuration</source> - <translation>Nie można skonfigurować BB10</translation> - </message> - <message> - <source>BlackBerry %1 Device</source> - <translation>Urządzenie BlackBerry %1</translation> - </message> - <message> - <source>BlackBerry %1 Simulator</source> - <translation>Symulator BlackBerry %1</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryCheckDeviceStatusStep</name> - <message> - <source>Check Device Status</source> - <translation>Kontrola stanu urządzenia</translation> - </message> - <message> - <source>Authentication failed.</source> - <translation>Brak autoryzacji.</translation> - </message> - <message> - <source>Cannot connect to device.</source> - <translation>Nie można połączyć się z urządzeniem</translation> - </message> - <message> - <source>Device is not in the development mode.</source> - <translation>Urządzenie nie jest w trybie deweloperskim.</translation> - </message> - <message> - <source>Timeout querying device information.</source> - <translation>Przekroczony czas oczekiwania na informacje o urządzeniu.</translation> - </message> - <message> - <source>Failed to query device information.</source> - <translation>Nie można uzyskać informacji o urządzeniu.</translation> - </message> - <message> - <source>Process to query device information has crashed.</source> - <translation>Proces uzyskujący informacje o urządzeniu zakończył pracę błędem.</translation> - </message> - <message> - <source>Cannot query device information.</source> - <translation>Nie można uzyskać informacji o urządzeniu.</translation> - </message> - <message> - <source>%1. Upload a valid debug token into the device.</source> - <extracomment>%1: Error message from BlackBerryDeviceInformation</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cannot determine device runtime version.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Cannot determine API level version.</source> - <translation>Nie można określić wersji poziomu API.</translation> - </message> - <message> - <source>The device runtime version (%1) is inferior to the API level version (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Checking device status...</source> - <translation>Kontrola stanu urządzenia...</translation> - </message> - <message> - <source>Confirmation</source> - <translation>Potwierdzenie</translation> - </message> - <message> - <source>The device runtime version (%1) does not match the API level version (%2). -Do you want to continue anyway?</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No hostname specified for the device</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryCheckDeviceStatusStepFactory</name> - <message> - <source>Check Device Status</source> - <translation>Kontrola stanu urządzenia</translation> - </message> -</context> -<context> - <name>BlackBerryPotentialKit</name> - <message> - <source>Configure BlackBerry...</source> - <translation>Konfiguracja BlackBerry...</translation> - </message> -</context> -<context> - <name>BlackBerryPotentialKitWidget</name> - <message> - <source><b>BlackBerry has not been configured. Create BlackBerry kits.</b></source> - <translation><b>BlackBerry nie został skonfigurowany. Utwórz zestawy narzędzi BlackBerry.</b></translation> - </message> - <message> - <source>Qt Creator needs additional settings to enable BlackBerry support. You can configure those settings in the Options dialog.</source> - <translation>Wymagane są dodatkowe ustawienia do obsługi BlackBerry. Można je skonfigurować w dialogu z opcjami.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerryRuntimeConfiguration</name> - <message> - <source>Runtime %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerrySetupPage</name> - <message> - <source>Setup</source> - <translation>Ustawienia</translation> - </message> -</context> -<context> - <name>Qnx::Internal::APILevelSetupItem</name> - <message> - <source>API Level defines kits, Qt versions, compilers, debuggers needed for building BlackBerry applications.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>No API Level is installed.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Install</source> - <translation>Zainstaluj</translation> - </message> - <message> - <source>No valid API Level is installed.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Valid API Level is not activated.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Activate</source> - <translation>Uaktywnij</translation> - </message> - <message> - <source>Valid API Level 10.2 or newer is not installed.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Valid API Level 10.2 or newer is not set as default.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Set</source> - <translation>Ustaw</translation> - </message> - <message> - <source>API Level is configured.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Qnx::Internal::SigningKeysSetupItem</name> - <message> - <source>Signing keys are needed for signing BlackBerry applications and managing debug tokens.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Found legacy BlackBerry signing keys.</source> - <translation>Znaleziono stare klucze podpisujące BlackBerry.</translation> - </message> - <message> - <source>Update</source> - <translation>Uaktualnij</translation> - </message> - <message> - <source>Cannot find BlackBerry signing keys.</source> - <translation>Brak kluczy podpisujących BlackBerry.</translation> - </message> - <message> - <source>Request</source> - <translation>Zażądaj</translation> - </message> - <message> - <source>Cannot find developer certificate.</source> - <translation>Brak certyfikatu deweloperskiego.</translation> - </message> - <message> - <source>Create</source> - <translation>Utwórz</translation> - </message> - <message> - <source>Developer certificate is not opened.</source> - <translation>Certyfikat deweloperski nie jest otwarty.</translation> - </message> - <message> - <source>Open</source> - <translation>Otwórz</translation> - </message> - <message> - <source>Signing keys are ready to use.</source> - <translation>Klucze podpisujące gotowe do użycia.</translation> - </message> - <message> - <source>Opening certificate...</source> - <translation>Otwieranie certyfikatu...</translation> - </message> - <message> - <source>Qt Creator</source> - <translation>Qt Creator</translation> - </message> - <message> - <source>Invalid certificate password.</source> - <translation>Niepoprawne hasło certyfikatu.</translation> - </message> - <message> - <source>Error loading certificate.</source> - <translation>Błąd ładowania certyfikatu.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::DeviceSetupItem</name> - <message> - <source>BlackBerry 10 device or simulator is needed for running BlackBerry applications.</source> - <translation>Aby uruchamiać aplikacje BlackBerry wymagane jest urządzenie BlackBerry 10 lub symulator.</translation> - </message> - <message> - <source>No BlackBerry 10 device or simulator is registered.</source> - <translation>Brak zarejestrowanego urządzenia BlackBerry 10 lub symulatora.</translation> - </message> - <message> - <source>Add</source> - <translation>Dodaj</translation> - </message> - <message> - <source>BlackBerry 10 device or simulator is registered.</source> - <translation>Istnieje zarejestrowane urządzenie BlackBerry 10 lub symulator.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BlackBerrySetupWidget</name> - <message> - <source><a href="%1">How to Setup Qt Creator for BlackBerry 10 development</a></source> - <translation><a href="%1">Jak skonfigurować Qt Creatora do tworzenia oprogramowania dla BlackBerry</a></translation> - </message> -</context> -<context> - <name>BlackBerrySetupWizardWelcomePage</name> - <message> - <source>Welcome to the BlackBerry Development Environment Setup Wizard. -This wizard will guide you through the essential steps to deploy a ready-to-go development environment for BlackBerry 10 devices.</source> - <translation>Kreator konfiguracji środowiska deweloperskiego BlackBerry. -Kreator ten składa się z etapów prowadzących do instalacji gotowego środowiska deweloperskiego dla urządzeń BlackBerry 10.</translation> - </message> - <message> - <source>BlackBerry Development Environment Setup</source> - <translation>Konfiguracja środowiska deweloperskiego BlackBerry</translation> - </message> -</context> -<context> - <name>BlackBerrySetupWizardNdkPage</name> - <message> - <source>Configure the NDK Path</source> - <translation>Skonfiguruj ścieżkę NDK</translation> - </message> -</context> -<context> - <name>BlackBerrySetupWizardKeysPage</name> - <message> - <source>Setup Signing Keys</source> - <translation>Ustawienia kluczy</translation> - </message> - <message> - <source>Qt Creator</source> - <translation>Qt Creator</translation> - </message> - <message> - <source>This wizard will be closed and you will be taken to the BlackBerry key request web page. Do you want to continue?</source> - <translation>Ten kreator zostanie zamknięty i otwarta zostanie strona webowa BlackBerry, na której można zamówić klucze. Kontynuować?</translation> - </message> -</context> -<context> - <name>BlackBerrySetupWizardCertificatePage</name> - <message> - <source>Create Developer Certificate</source> - <translation>Utwórz certyfikat deweloperski</translation> - </message> - <message> - <source>The entered passwords do not match.</source> - <translation>Wprowadzone hasła nie zgadzają się.</translation> - </message> -</context> -<context> - <name>BlackBerrySetupWizardDevicePage</name> - <message> - <source>Configure BlackBerry Device Connection</source> - <translation>Skonfiguruj połączenie z urządzeniem BlackBerry</translation> - </message> - <message> - <source>BlackBerry Device</source> - <translation>Urządzenie BlackBerry</translation> - </message> -</context> -<context> - <name>BlackBerrySetupWizardFinishPage</name> - <message> - <source>Your environment is ready to be configured.</source> - <translation>Środowisko gotowe do konfiguracji.</translation> - </message> -</context> -<context> - <name>Qnx::Internal::SrcProjectPathChooser</name> - <message> - <source>Choose imported Cascades project directory</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Directory does not seem to be a valid Cascades project.</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>Qnx::Internal::QnxAttachDebugDialog</name> @@ -40373,46 +31553,6 @@ Kreator ten składa się z etapów prowadzących do instalacji gotowego środowi </message> </context> <context> - <name>Qnx::Internal::QNXPlugin</name> - <message> - <source>BAR descriptor file (BlackBerry)</source> - <translation type="vanished">Plik deskryptora BAR (BlackBerry)</translation> - </message> - <message> - <source>BAR Descriptor</source> - <translation type="vanished">Deskryptor BAR</translation> - </message> - <message> - <source>Attach to remote QNX application...</source> - <translation type="vanished">Dołącz do zdalnej aplikacji QNX...</translation> - </message> -</context> -<context> - <name>PrefixLangDialog</name> - <message> - <source>Prefix:</source> - <translation type="vanished">Przedrostek:</translation> - </message> - <message> - <source>Language:</source> - <translation type="vanished">Język:</translation> - </message> -</context> -<context> - <name>ResourceEditor::ResourceTopLevelNode</name> - <message> - <source>%1 Prefix: %2</source> - <translation>%1 Przedrostek: %2</translation> - </message> -</context> -<context> - <name>ResourceEditor::Internal::ResourceFolderNode</name> - <message> - <source>%1 Prefix: %2</source> - <translation>%1 Przedrostek: %2</translation> - </message> -</context> -<context> <name>FontSettings_C_OCCURRENCES_UNUSED</name> <message> <source>Unused variable</source> @@ -40553,35 +31693,6 @@ Kreator ten składa się z etapów prowadzących do instalacji gotowego środowi </message> </context> <context> - <name>WinRt::Internal::WinRtRunControl</name> - <message> - <source>The current kit has no Qt version.</source> - <translation type="vanished">Brak wersji Qt w bieżącym zestawie narzędzi.</translation> - </message> - <message> - <source>Cannot find winrtrunner.exe in "%1".</source> - <translation type="vanished">Brak winrtrunner.exe w "%1".</translation> - </message> - <message> - <source>winrtrunner crashed.</source> - <translation type="vanished">winrtrunner zakończony błędem.</translation> - </message> - <message> - <source>winrtrunner returned with exit code %1.</source> - <translation type="vanished">winrtrunner zakończył pracę kodem wyjściowym %1.</translation> - </message> - <message> - <source>winrtrunner finished successfully.</source> - <translation type="vanished">winrtrunner poprawnie zakończony.</translation> - </message> - <message> - <source>Error while executing winrtrunner: %1 -</source> - <translation type="vanished">Błąd podczas uruchamiania winrtrunner: %1 -</translation> - </message> -</context> -<context> <name>WinRt::Internal::WinRtRunConfigurationFactory</name> <message> <source>Run App Package</source> @@ -40665,12 +31776,6 @@ Kreator ten składa się z etapów prowadzących do instalacji gotowego środowi <translation>Alias certyfikatu:</translation> </message> <message> - <source>Signing an APK that uses "Deploy local Qt libraries" is not allowed. -Deploying local Qt libraries is incompatible with Android 5</source> - <translation>Podpisywanie APK, które używa "Zainstaluj lokalne biblioteki Qt" jest niedozwolone. -Instalowanie lokalnych bibliotek Qt nie jest kompatybilne z Androidem 5</translation> - </message> - <message> <source>Application</source> <translation>Aplikacja</translation> </message> @@ -40725,6 +31830,12 @@ APK nie będzie przydatne na innych urządzeniach.</translation> <source>Deploy local Qt libraries to temporary directory</source> <translation>Zainstaluj lokalne biblioteki Qt do tymczasowego katalogu</translation> </message> + <message> + <source>Signing an APK that uses "Deploy local Qt libraries" is not allowed. +Deploying local Qt libraries is incompatible with Android 5.</source> + <translation>Podpisywanie APK, które używa "Zainstaluj lokalne biblioteki Qt" jest niedozwolone. +Instalowanie lokalnych bibliotek Qt nie jest kompatybilne z Androidem 5.</translation> + </message> </context> <context> <name>Core::Internal::ThemeEditor::ThemeEditorWidget</name> @@ -40797,10 +31908,6 @@ APK nie będzie przydatne na innych urządzeniach.</translation> <translation>Utwórz szablony</translation> </message> <message> - <source>Input file for androiddeployqt:</source> - <translation>Plik wejściowy dla androiddeployqt:</translation> - </message> - <message> <source>Additional Libraries</source> <translation>Dodatkowe biblioteki</translation> </message> @@ -40942,7 +32049,7 @@ APK nie będzie przydatne na innych urządzeniach.</translation> <translation>Zakładki widoczne</translation> </message> <message> - <source>Determines the visibility of the the tab bar.</source> + <source>Determines the visibility of the tab bar.</source> <translation>Określa, czy widoczny jest pasek z zakładkami.</translation> </message> <message> @@ -41006,15 +32113,11 @@ APK nie będzie przydatne na innych urządzeniach.</translation> <context> <name>CategoryLabel</name> <message> - <source><bytecode></source> - <translation><kod bajtowy></translation> - </message> - <message> <source>Collapse category</source> <translation>Zwiń kategorię</translation> </message> <message> - <source>Expand category.</source> + <source>Expand category</source> <translation>Rozwiń kategorię</translation> </message> </context> @@ -41100,10 +32203,6 @@ Czy kontynuować instalację?</translation> <translation>Cel:</translation> </message> <message> - <source>Add</source> - <translation>Dodaj</translation> - </message> - <message> <source>Remove</source> <translation>Usuń</translation> </message> @@ -41129,6 +32228,10 @@ Czy kontynuować instalację?</translation> <translation>Czy usunąć: %1?</translation> </message> + <message> + <source>Add...</source> + <translation>Dodaj...</translation> + </message> </context> <context> <name>QtSupport::Internal::CodeGenSettingsPageWidget</name> @@ -41211,7 +32314,7 @@ Czy kontynuować instalację?</translation> <name>AnchorRow</name> <message> <source>Target</source> - <translation type="unfinished">Cel</translation> + <translation>Cel</translation> </message> </context> <context> @@ -41224,6 +32327,10 @@ Czy kontynuować instalację?</translation> <source>Expand</source> <translation>Rozwiń</translation> </message> + <message> + <source>Add a new state.</source> + <translation>Dodaje nowy stan.</translation> + </message> </context> <context> <name>QmlDebug::QmlDebugConnectionPrivate</name> @@ -41313,6 +32420,14 @@ Czy kontynuować instalację?</translation> <translation>%1: Pełna ścieżka bez nazwy pliku.</translation> </message> <message> + <source>%1: Full path including file name, with native path separator (backslash on Windows).</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1: Full path excluding file name, with native path separator (backslash on Windows).</source> + <translation type="unfinished"></translation> + </message> + <message> <source>%1: File name without path.</source> <translation>%1: Nazwa pliku bez ścieżki.</translation> </message> @@ -41324,9 +32439,6 @@ Czy kontynuować instalację?</translation> <source>Global variables</source> <translation>Zmienne globalne</translation> </message> -</context> -<context> - <name>Utils::GlobalMacroExpander</name> <message> <source>Access environment variables.</source> <translation>Dostęp do zmiennych środowiskowych.</translation> @@ -41337,7 +32449,7 @@ Czy kontynuować instalację?</translation> <message> <source>Build Android APK</source> <extracomment>AndroidBuildApkStep default display name</extracomment> - <translation type="unfinished"></translation> + <translation type="unfinished">Zbuduj Android APK</translation> </message> <message> <source>Warning: Signing a debug package.</source> @@ -41402,7 +32514,7 @@ Czy kontynuować instalację?</translation> <name>Android::AndroidManager</name> <message> <source>Unknown Android version. API Level: %1</source> - <translation type="unfinished"></translation> + <translation>Nieznana wersja Androida. Poziom API: %1</translation> </message> <message> <source>Error creating Android templates.</source> @@ -41422,29 +32534,30 @@ Czy kontynuować instalację?</translation> <message> <source>Cannot create a new AVD. No sufficiently recent Android SDK available. Install an SDK of at least API version %1.</source> - <translation type="unfinished"></translation> + <translation>Nie można utworzyć AVD. Brak wystarczająco nowego Android SDK. +Zainstaluj SDK o wersji %1 lub wyższej.</translation> </message> <message> <source>Cannot create a AVD for ABI %1. Install an image for it.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Allowed characters are: a-z A-Z 0-9 and . _ -</source> + <translation>Dozwolone znaki to: a-z A-Z 0-9 i . _ -</translation> + </message> </context> <context> <name>BareMetal</name> <message> - <source>Example:</source> - <translation>Przykład:</translation> - </message> - <message> - <source>Enter your hostname like "localhost" or "192.0.2.1" or a command which must support GDB pipelining starting with a pipe symbol.</source> - <translation>Wprowadź nazwę swojego hosta, np. "localhost", "192.0.2.1" lub komendę, która obsługuje potoki GDB, rozpoczynając symbolem potoku.</translation> + <source>BareMetal</source> + <translation type="unfinished"></translation> </message> <message> - <source>Enter the hardware reset command here.<br>The CPU should be halted after this command.</source> - <translation>Wprowadź tutaj komendę resetującą sprzęt.<br>Procesor powinien się zatrzymać.</translation> + <source>Enter GDB commands to reset the board and to write the nonvolatile memory.</source> + <translation type="unfinished"></translation> </message> <message> - <source>Enter commands to reset the board, and write the nonvolatile memory.</source> + <source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source> <translation type="unfinished"></translation> </message> </context> @@ -41458,20 +32571,8 @@ Install an SDK of at least API version %1.</source> <context> <name>BareMetal::Internal::BareMetalDeviceConfigurationWidget</name> <message> - <source>GDB host:</source> - <translation>Host GDB:</translation> - </message> - <message> - <source>GDB port:</source> - <translation>Port GDB:</translation> - </message> - <message> - <source>Init commands:</source> - <translation>Komendy inicjalizujące:</translation> - </message> - <message> - <source>Reset commands:</source> - <translation>Komendy resetujące:</translation> + <source>GDB server provider:</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -41526,12 +32627,12 @@ Install an SDK of at least API version %1.</source> <context> <name>Bazaar::Internal::BazaarEditorWidget</name> <message> - <source>Annotate %1</source> - <translation>Dołącz adnotację do %1</translation> + <source>&Annotate %1</source> + <translation>Dołącz &adnotację do %1</translation> </message> <message> - <source>Annotate parent revision %1</source> - <translation>Dołącz adnotację do poprawki macierzystej "%1"</translation> + <source>Annotate &parent revision %1</source> + <translation>Dołącz adnotację do &poprawki macierzystej "%1"</translation> </message> </context> <context> @@ -41648,6 +32749,10 @@ Install an SDK of at least API version %1.</source> <translation>Błąd pliku</translation> </message> <message> + <source>The file is too big for the Binary Editor (max. 2GB).</source> + <translation>Plik jest zbyt wielki dla edytora binarnego (maks. 2GB).</translation> + </message> + <message> <source>Cannot open %1: %2</source> <translation>Nie można otworzyć %1: %2</translation> </message> @@ -41673,14 +32778,6 @@ Install an SDK of at least API version %1.</source> <context> <name>Core::BaseFileWizardFactory</name> <message> - <source>File Generation Failure</source> - <translation>Błąd w trakcie generowania pliku</translation> - </message> - <message> - <source>Existing files</source> - <translation>Istniejące pliki</translation> - </message> - <message> <source>Failed to open an editor for "%1".</source> <translation>Nie można otworzyć edytora dla "%1".</translation> </message> @@ -41730,13 +32827,41 @@ Install an SDK of at least API version %1.</source> <translation>Bieżący czas (Ustawienia lokalne).</translation> </message> <message> - <source>The current date (QDate formatstring)</source> - <translation>Bieżąca data (QDate formatstring).</translation> + <source>The configured default directory for projects.</source> + <translation>Skonfigurowany domyślny katalog projektów.</translation> + </message> + <message> + <source>The directory last visited in a file dialog.</source> + <translation>Katalog ostatnio widoczny w przeglądarce plików.</translation> + </message> + <message> + <source>Is Qt Creator running on Windows?</source> + <translation>Czy Qt Creator jest uruchomiony na Windows?</translation> + </message> + <message> + <source>Is Qt Creator running on OS X?</source> + <translation>Czy Qt Creator jest uruchomiony na OS X?</translation> + </message> + <message> + <source>Is Qt Creator running on Linux?</source> + <translation>Czy Qt Creator jest uruchomiony na Linux'ie?</translation> + </message> + <message> + <source>Is Qt Creator running on any unix-based platform?</source> + <translation>Czy Qt Creator jest uruchomiony na platformnie unix'owej?</translation> </message> <message> - <source>The current time (QTime formatstring)</source> + <source>The current date (QDate formatstring).</source> + <translation>Bieżący dzień (QDate fromatstring).</translation> + </message> + <message> + <source>The current time (QTime formatstring).</source> <translation>Bieżący czas (QTime formatstring).</translation> </message> + <message> + <source>A comment.</source> + <translation>Komentarz.</translation> + </message> </context> <context> <name>Core::PromptOverwriteDialog</name> @@ -41983,6 +33108,18 @@ Do you want to check them out now?</source> <translation>Współrzędna Y lewego górnego rogu bieżącego edytora względem ekranu.</translation> </message> <message> + <source>Could not open "%1": Cannot open files of type "%2".</source> + <translation>Nie można otworzyć "%1". Nie można otwierać plików typu "%2".</translation> + </message> + <message> + <source>Could not open "%1" for reading. Either the file does not exist or you do not have the permissions to open it.</source> + <translation>Nie można otworzyć "%1" do odczytu. Albo plik nie istnieje, albo brak praw dostępu do niego.</translation> + </message> + <message> + <source>Could not open "%1": Unknown error.</source> + <translation>Nie można otworzyć "%1": nieznany błąd.</translation> + </message> + <message> <source><b>Warning:</b> This file was not opened in %1 yet.</source> <translation><b>Ostrzeżenie:</b> Ten plik nie był jeszcze otwarty w %1.</translation> </message> @@ -42072,7 +33209,8 @@ Do you want to check them out now?</source> <message> <source>Evaluate simple Javascript statements. The statements may not contain '{' nor '}' characters.</source> - <translation type="unfinished"></translation> + <translation>Wykonaj proste wyrażenia Javascript. +Wyrażenia nie mogą zawierać znaków "{" i "}".</translation> </message> </context> <context> @@ -42106,11 +33244,11 @@ The statements may not contain '{' nor '}' characters.</sour <name>Core::Internal::ThemeEditor::ThemeSettingsItemDelegate</name> <message> <source><Unnamed> (Current)</source> - <translation type="unfinished"></translation> + <translation><Nienazwany> (bieżący)</translation> </message> <message> <source> (Current)</source> - <translation type="unfinished"></translation> + <translation> (bieżący)</translation> </message> <message> <source>Remove Variable Name</source> @@ -42144,12 +33282,8 @@ The statements may not contain '{' nor '}' characters.</sour <translation>Flagi</translation> </message> <message> - <source>Image Files</source> - <translation>Pliki graficzne</translation> - </message> - <message> <source>Role</source> - <translation type="unfinished"></translation> + <translation>Rola</translation> </message> <message> <source>Value</source> @@ -42174,7 +33308,7 @@ The statements may not contain '{' nor '}' characters.</sour <translation>Usuń motyw</translation> </message> <message> - <source>Are you sure you want to delete the theme '%1' permanently?</source> + <source>Are you sure you want to delete the theme "%1" permanently?</source> <translation>Czy na pewno usunąć motyw "%1" na stałe?</translation> </message> <message> @@ -42207,28 +33341,6 @@ The statements may not contain '{' nor '}' characters.</sour </message> </context> <context> - <name>Core::Internal::VariableChooserPrivate</name> - <message> - <source>Insert variable</source> - <translation>Wstaw zmienną</translation> - </message> -</context> -<context> - <name>Core::Internal::VariableTreeView</name> - <message> - <source>Insert unexpanded value</source> - <translation>Wstaw zwiniętą wartość</translation> - </message> - <message> - <source>Insert "%1"</source> - <translation>Wstaw "%1"</translation> - </message> - <message> - <source>Insert expanded value</source> - <translation>Wstaw rozwiniętą wartość</translation> - </message> -</context> -<context> <name>Core::Internal::WindowSupport</name> <message> <source>Exit Full Screen</source> @@ -42247,13 +33359,6 @@ The statements may not contain '{' nor '}' characters.</sour </message> </context> <context> - <name>CppEditor::Internal::CppEditorOutline</name> - <message> - <source>Sort Alphabetically</source> - <translation>Posortuj alfabetycznie</translation> - </message> -</context> -<context> <name>CppSourceProcessor</name> <message> <source>%1: No such file or directory</source> @@ -42282,38 +33387,6 @@ The statements may not contain '{' nor '}' characters.</sour <translation>Asystenci debuggera pomagają lepiej wizualizować obiekty pewnych typów, jak np. QString lib std::map w widoku &quot;Zmienne lokalne i wyrażenia&quot;.</translation> </message> <message> - <source>Use code model</source> - <translation>Używaj modelu kodu</translation> - </message> - <message> - <source>Makes use of Qt Creator's code model to find out if a variable has already been assigned a value at the point the debugger interrupts.</source> - <translation>Korzysta z modelu kodu Qt Creatora w celu zbadania czy wartość została już przypisana do zmiennej w chwili przerwania debuggera.</translation> - </message> - <message> - <source>Displays names of QThread based threads.</source> - <translation>Wyświetla nazwy wątków dziedziczących z QThread.</translation> - </message> - <message> - <source>Display thread names</source> - <translation>Wyświetlaj nazwy wątków</translation> - </message> - <message> - <source>Shows "std::" prefix for types from the standard library.</source> - <translation>Pokazuje przedrostek "std::" dla typów z biblioteki standardowej.</translation> - </message> - <message> - <source>Show "std::" namespace for types</source> - <translation>Pokazuj przestrzeń nazw "std::" dla typów</translation> - </message> - <message> - <source>Shows Qt namespace prefix for Qt types. This is only relevant if Qt was configured with '-qtnamespace'.</source> - <translation>Pokazuje przestrzeń nazw Qt dla typów Qt. Ma to zastosowanie jedynie dla Qt skonfigurowanego z "-qtnamespace".</translation> - </message> - <message> - <source>Qt's namespace for types</source> - <translation>Pokazuj przestrzeń nazw Qt dla typów</translation> - </message> - <message> <source><unlimited></source> <translation><nieograniczona></translation> </message> @@ -42403,6 +33476,10 @@ Dotyczy to następujących pułapek: %1</translation> <translation>Niewystarczająca ilość wolnych portów do debugowania QML. </translation> </message> <message> + <source>Unknown debugger type "%1"</source> + <translation>Nieznany typ debuggera "%1"</translation> + </message> + <message> <source>Unable to create a debugger engine of the type "%1"</source> <translation>Nie można utworzyć silnika debuggera typu "%1"</translation> </message> @@ -42414,14 +33491,34 @@ Dotyczy to następujących pułapek: %1</translation> <translation>%1 (poprzedni)</translation> </message> <message> - <source>%1 (Restored</source> - <translation>%1 (Przywrócony)</translation> + <source>Name</source> + <translation>Nazwa</translation> + </message> + <message> + <source>Value</source> + <translation>Wartość</translation> + </message> + <message> + <source>Type</source> + <translation>Typ</translation> + </message> + <message> + <source>Copy Contents to Clipboard</source> + <translation>Skopiuj zawartość do schowka</translation> + </message> + <message> + <source>Expression %1 in function %2 from line %3 to %4</source> + <translation>Wyrażenie %1 w funkcji %2 od linii %3 do %4</translation> </message> <message> <source>No valid expression</source> <translation>Brak poprawnego wyrażenia</translation> </message> <message> + <source>%1 (Restored)</source> + <translation>%1 (przywrócony)</translation> + </message> + <message> <source>Expression too complex</source> <translation>Wyrażenie zbyt skomplikowane</translation> </message> @@ -42576,10 +33673,34 @@ Dotyczy to następujących pułapek: %1</translation> <translation>Nie można przetworzyć wygenerowanych plików</translation> </message> <message> + <source>Failed to Polish Files</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Failed to Open Files</source> <translation>Nie można otworzyć plików</translation> </message> <message> + <source>"%1" does not exist in the file system.</source> + <translation>Brak "%1" w systemie plików.</translation> + </message> + <message> + <source>No file to open found in "%1".</source> + <translation>Brak plików do otwarcia w "%1".</translation> + </message> + <message> + <source>Failed to open project.</source> + <translation>Nie można otworzyć projektu.</translation> + </message> + <message> + <source>Failed to open project in "%1".</source> + <translation>Nie można otworzyć projektu w "%1".</translation> + </message> + <message> + <source>Cannot Open Project</source> + <translation>Nie można otworzyć projektu</translation> + </message> + <message> <source>When processing "%1":<br>%2</source> <translation>W trakcie przetwarzania "%1":<br>%2</translation> </message> @@ -42600,74 +33721,34 @@ Dotyczy to następujących pułapek: %1</translation> <translation>"data" na stronie "File" powinna pozostać nieustawiona lub być pustym obiektem.</translation> </message> <message> + <source>Error parsing "%1" in "Kits" page: %2</source> + <translation>Błąd parsowania "%1" na stronie "Zestawy narzędzi": %2</translation> + </message> + <message> <source>"data" must be a JSON object for "Kits" pages.</source> <translation>"data" musi być obiektem JSON dla stron "Kits".</translation> </message> <message> - <source>"Kits" page requires a "projectFilePath" set.</source> - <translation>Strona "Kits" wymaga ustawienia "projectFilePath".</translation> + <source>"Kits" page requires a "%1" set.</source> + <translation>Strona "Zestawy narzędzi" wymaga ustawionego "%1".</translation> </message> <message> - <source>"data" for a "Project" page needs to be unset or an empty object.</source> - <translation>"data" na stronie "Project" powinna pozostać nieustawiona lub być pustym obiektem.</translation> + <source>"data" must be empty or a JSON object for "Project" pages.</source> + <translation>"data" na stronach "Project" powinna pozostać nieustawiona lub być obiektem JSON.</translation> </message> <message> <source>"data" for a "Summary" page needs to be unset or an empty object.</source> <translation>"data" na stronie "Summary" powinna pozostać nieustawiona lub być pustym obiektem.</translation> </message> -</context> -<context> - <name>DiffEditor::DiffEditorDocument</name> <message> - <source>Could not parse patch file "%1". The content is not of unified diff format.</source> - <translation>Nie można sparsować pliku z łatami "%1". Zawartość nie jest w formacie ujednoliconym (unified diff).</translation> + <source>"data" must be a JSON object for "VcsConfiguration" pages.</source> + <extracomment>Do not translate "VcsConfiguration", because it is the id of a page.</extracomment> + <translation>"data" na stronach "VcsConfiguration" powinna być obiektem JSON.</translation> </message> -</context> -<context> - <name>DiffEditor::UnifiedDiffEditorWidget</name> <message> - <source>No controller</source> - <translation>Brak kontrolera</translation> - </message> - <message> - <source>Send Chunk to CodePaster...</source> - <translation>Wyślij fragment do Codepaster...</translation> - </message> - <message> - <source>Apply Chunk...</source> - <translation>Zastosuj fragment...</translation> - </message> - <message> - <source>Revert Chunk...</source> - <translation>Zastosuj odwrotny fragment...</translation> - </message> - <message> - <source>Unable to Paste</source> - <translation>Nie można wkleić</translation> - </message> - <message> - <source>Code pasting services are not available.</source> - <translation>Usługi wklejania kodu są niedostępne.</translation> - </message> - <message> - <source>Revert Chunk</source> - <translation>Odwróć zmiany we fragmencie</translation> - </message> - <message> - <source>Apply Chunk</source> - <translation>Zastosuj fragment</translation> - </message> - <message> - <source>Would you like to revert the chunk?</source> - <translation>Czy zastosować odwrotny fragment?</translation> - </message> - <message> - <source>Would you like to apply the chunk?</source> - <translation>Czy zastosować fragment?</translation> - </message> - <message> - <source>No difference</source> - <translation>Brak różnic</translation> + <source>"VcsConfiguration" page requires a "vcsId" set.</source> + <extracomment>Do not translate "VcsConfiguration", because it is the id of a page.</extracomment> + <translation>Strona "VcsConfiguration" wymaga ustawienia "vcsId".</translation> </message> </context> <context> @@ -42949,6 +34030,14 @@ Dotyczy to następujących pułapek: %1</translation> <translation>Wyzwalacz Ex</translation> </message> <message> + <source>Reset</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reset to default.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Regular expression:</source> <translation>Wyrażenie regularne:</translation> </message> @@ -42973,26 +34062,26 @@ Dotyczy to następujących pułapek: %1</translation> <translation>Komenda użytkownika #%1</translation> </message> <message> - <source>Meta+V,Meta+V</source> - <translation>Meta+V,Meta+V</translation> - </message> - <message> <source>Alt+V,Alt+V</source> <translation>Alt+V,Alt+V</translation> </message> <message> - <source>Execute User Action #%1</source> - <translation>Wykonaj akcję użytkownika #%1</translation> + <source>Meta+Shift+V,Meta+Shift+V</source> + <translation>Meta+Shift+V,Meta+Shift+V</translation> </message> <message> - <source>Meta+V,%1</source> - <translation>Meta+V,%1</translation> + <source>Execute User Action #%1</source> + <translation>Wykonaj akcję użytkownika #%1</translation> </message> <message> <source>Alt+V,%1</source> <translation>Alt+V,%1</translation> </message> <message> + <source>Meta+Shift+V,%1</source> + <translation>Meta+Shift+V,%1</translation> + </message> + <message> <source>"%1" %2 %3L, %4C written</source> <translation>"%1" %2 zapisano: %3 linii, %4 znaków</translation> </message> @@ -43016,47 +34105,55 @@ Dotyczy to następujących pułapek: %1</translation> <context> <name>Git::Internal::GitEditorWidget</name> <message> - <source>Blame %1</source> - <translation>Blame %1</translation> + <source>&Blame %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Blame &Parent Revision %1</source> + <translation type="unfinished"></translation> </message> <message> - <source>Blame Parent Revision %1</source> + <source>Chunk successfully staged</source> <translation type="unfinished"></translation> </message> <message> - <source>Reset</source> - <translation>Zresetuj</translation> + <source>Stage Chunk...</source> + <translation type="unfinished"></translation> </message> <message> - <source>All changes in working directory will be discarded. Are you sure?</source> - <translation>Wszystkie zmiany w katalogu roboczym zostaną utracone. Czy kontynuować?</translation> + <source>Unstage Chunk...</source> + <translation type="unfinished"></translation> </message> <message> - <source>Chunk successfully staged</source> + <source>Cherr&y-Pick Change %1</source> <translation type="unfinished"></translation> </message> <message> - <source>Stage Chunk...</source> + <source>Re&vert Change %1</source> <translation type="unfinished"></translation> </message> <message> - <source>Unstage Chunk...</source> + <source>C&heckout Change %1</source> <translation type="unfinished"></translation> </message> <message> - <source>Cherry-Pick Change %1</source> + <source>&Log for Change %1</source> <translation type="unfinished"></translation> </message> <message> - <source>Revert Change %1</source> - <translation>Odwróć zmianę %1</translation> + <source>&Reset to Change %1</source> + <translation type="unfinished"></translation> </message> <message> - <source>Checkout Change %1</source> + <source>&Hard</source> <translation type="unfinished"></translation> </message> <message> - <source>Hard Reset to Change %1</source> + <source>&Mixed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>&Soft</source> <translation type="unfinished"></translation> </message> </context> @@ -43149,8 +34246,8 @@ Dotyczy to następujących pułapek: %1</translation> <translation>Uaktywnij widok z zakładkami pomocy</translation> </message> <message> - <source>Meta+B</source> - <translation>Meta+B</translation> + <source>Alt+Meta+M</source> + <translation>Alt+Meta+M</translation> </message> <message> <source>Ctrl+Shift+B</source> @@ -43247,12 +34344,12 @@ Dotyczy to następujących pułapek: %1</translation> <context> <name>Mercurial::Internal::MercurialEditorWidget</name> <message> - <source>Annotate %1</source> - <translation>Dołącz adnotację do %1</translation> + <source>&Annotate %1</source> + <translation>Dołącz &adnotację do %1</translation> </message> <message> - <source>Annotate parent revision %1</source> - <translation>Dołącz adnotację do poprawki macierzystej "%1"</translation> + <source>Annotate &parent revision %1</source> + <translation>Dołącz adnotację do &poprawki macierzystej "%1"</translation> </message> </context> <context> @@ -43274,17 +34371,6 @@ Dotyczy to następujących pułapek: %1</translation> </message> </context> <context> - <name>ProjectExplorer::LineEditValidator</name> - <message> - <source>Line Edit Validator Expander</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>The text edit input to fix up.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>ProjectExplorer::JsonFieldPage</name> <message> <source>Field is not an object.</source> @@ -43295,18 +34381,6 @@ Dotyczy to następujących pułapek: %1</translation> <translation>Pole nie posiada nazwy.</translation> </message> <message> - <source>Field '%1' has no type.</source> - <translation>Pole "%1" nie posiada typu.</translation> - </message> - <message> - <source>Field '%1' has unsupported type '%2'.</source> - <translation>Pole "%1" posiada nieobsługiwany typ "%2".</translation> - </message> - <message> - <source>When parsing Field '%1': %2</source> - <translation>W trakcie parsowania pola "%1": %2</translation> - </message> - <message> <source>Label data is not an object.</source> <translation>Dane etykiety nie są obiektem.</translation> </message> @@ -43319,7 +34393,27 @@ Dotyczy to następujących pułapek: %1</translation> <translation>Dane dystansu nie są obiektem.</translation> </message> <message> - <source>'factor' is no integer value.</source> + <source>Line Edit Validator Expander</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The text edit input to fix up.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Field "%1" has no type.</source> + <translation>Pole "%1" nie posiada typu.</translation> + </message> + <message> + <source>Field "%1" has unsupported type "%2".</source> + <translation>Pole "%1" posiada nieobsługiwany type "%2".</translation> + </message> + <message> + <source>When parsing Field "%1": %2</source> + <translation>Podczas parsowania pola "%1": %2</translation> + </message> + <message> + <source>"factor" is no integer value.</source> <translation>"factor" nie jest liczbą całkowitą.</translation> </message> <message> @@ -43339,52 +34433,56 @@ Dotyczy to następujących pułapek: %1</translation> <translation>Dane PatchChooser nie są obiektem.</translation> </message> <message> - <source>kind '%1' is not one of the supported 'existingDirectory', 'directory', 'file', 'saveFile', 'existingCommand', 'command', 'any'.</source> + <source>kind "%1" is not one of the supported "existingDirectory", "directory", "file", "saveFile", "existingCommand", "command", "any".</source> <translation type="unfinished"></translation> </message> <message> - <source>CheckBox data is not an object.</source> - <translation>Dane CheckBox nie są obiektem.</translation> + <source>No "key" found in ComboBox items.</source> + <translation type="unfinished"></translation> </message> <message> - <source>CheckBox values for checked and unchecked state are identical.</source> - <translation>Jednakowe wartości CheckBox dla stanów: zaznaczony i niezaznaczony.</translation> + <source>ComboBox "index" is not an integer value.</source> + <translation type="unfinished"></translation> </message> <message> - <source>No lists allowed inside ComboBox items list.</source> - <translation>Listy są niedozwolone wewnątrz listy elementów ComboBox.</translation> + <source>ComboBox "disabledIndex" is not an integer value.</source> + <translation type="unfinished"></translation> </message> <message> - <source>No 'key' found in ComboBox items.</source> - <translation>Brak pola "key" w elementach ComboBox.</translation> + <source>ComboBox "items" missing.</source> + <translation type="unfinished"></translation> </message> <message> - <source>ComboBox data is not an object.</source> - <translation>Dane ComboBox nie są obiektem.</translation> + <source>ComboBox "items" is not a list.</source> + <translation type="unfinished"></translation> </message> <message> - <source>ComboBox 'index' is not a integer value.</source> - <translation>"index" w ComboBox nie jest liczbą całkowitą.</translation> + <source>Internal Error: ComboBox items lists got mixed up.</source> + <translation type="unfinished"></translation> </message> <message> - <source>ComboBox 'disabledIndex' is not a integer value.</source> - <translation>"disabledIndex" w ComboBox nie jest liczbą całkowitą.</translation> + <source>CheckBox data is not an object.</source> + <translation>Dane CheckBox nie są obiektem.</translation> </message> <message> - <source>ComboBox 'items' missing.</source> - <translation>Brak "items" w ComboBox.</translation> + <source>CheckBox values for checked and unchecked state are identical.</source> + <translation>Jednakowe wartości CheckBox dla stanów: zaznaczony i niezaznaczony.</translation> </message> <message> - <source>ComboBox 'items' is not a list.</source> - <translation>"items" w ComboBox nie jest listą.</translation> + <source>No lists allowed inside ComboBox items list.</source> + <translation>Listy są niedozwolone wewnątrz listy elementów ComboBox.</translation> + </message> + <message> + <source>ComboBox data is not an object.</source> + <translation>Dane ComboBox nie są obiektem.</translation> </message> <message> <source>Files data list entry is not an object.</source> <translation type="unfinished"></translation> </message> <message> - <source>No source given for file in file list.</source> - <translation>Brak źródła pliku w liście plików.</translation> + <source>Source and target are both empty.</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -43402,7 +34500,7 @@ Dotyczy to następujących pułapek: %1</translation> <translation type="unfinished"></translation> </message> <message> - <source>Error message from Version Control System: '%1'.</source> + <source>Error message from Version Control System: "%1".</source> <translation>Komunikat o błędzie z systemu kontroli wersji: "%1".</translation> </message> <message> @@ -43437,7 +34535,7 @@ do projektu "%2".</translation> <translation>Nieznany typeid "%1" generatora. Obsługiwane typy: "%2".</translation> </message> <message> - <source>Page is not a object.</source> + <source>Page is not an object.</source> <translation>Strona nie jest obiektem.</translation> </message> <message> @@ -43460,7 +34558,8 @@ do projektu "%2".</translation> <message> <source>Checking "%1" for %2. </source> - <translation type="unfinished"></translation> + <translation>Sprawdzanie "%1" dla "%2". +</translation> </message> <message> <source>* Failed to parse "%1":%2:%3: %4 @@ -43487,10 +34586,32 @@ do projektu "%2".</translation> </translation> </message> <message> - <source>* Wizard is disabled. -</source> - <translation>* Kreator jest niedostępny. -</translation> + <source>The platform selected for the wizard.</source> + <translation>Wybrana platforma dla kreatora.</translation> + </message> + <message> + <source>The features available to this wizard.</source> + <translation>Funkcje dostępne w tym kreatorze.</translation> + </message> + <message> + <source>The plugins loaded.</source> + <translation>Załadowane wtyczki.</translation> + </message> + <message> + <source>"kind" value "%1" is not "class" (deprecated), "file" or "project".</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Icon file "%1" not found.</source> + <translation>Brak ikony "%1".</translation> + </message> + <message> + <source>Image file "%1" not found.</source> + <translation>Brak pliku graficznego "%1".</translation> + </message> + <message> + <source>Value for "options" is not a list.</source> + <translation>Wartością "options" nie jest lista..</translation> </message> <message> <source>* Failed to create: %1 @@ -43505,12 +34626,12 @@ do projektu "%2".</translation> </translation> </message> <message> - <source>Expected an object or a list.</source> - <translation>Oczekiwano obiektu lub listy.</translation> + <source>key not found.</source> + <translation>brak klucza.</translation> </message> <message> - <source>"kind" value "%1" is not "class", "file" or "project".</source> - <translation type="unfinished"></translation> + <source>Expected an object or a list.</source> + <translation>Oczekiwano obiektu lub listy.</translation> </message> <message> <source>No id set.</source> @@ -43521,10 +34642,6 @@ do projektu "%2".</translation> <translation>Brak ustawionej kategorii.</translation> </message> <message> - <source>Icon "%1" not found.</source> - <translation>Brak ikony "%1".</translation> - </message> - <message> <source>No displayName set.</source> <translation>Brak ustawionego pola displayName.</translation> </message> @@ -43556,10 +34673,6 @@ do projektu "%2".</translation> <source>When parsing "options": Key "%1" set more than once.</source> <translation>W trakcie parsowania "options": klucz "%1" ustawiony wielokrotnie.</translation> </message> - <message> - <source>Value for "options" is not a list</source> - <translation>Wartością "options" nie jest lista</translation> - </message> </context> <context> <name>ProjectExplorer::JsonWizardGenerator</name> @@ -43592,8 +34705,8 @@ do projektu "%2".</translation> <context> <name>ProjectExplorer::Internal::KitEnvironmentConfigWidget</name> <message> - <source>Change ...</source> - <translation>Zmień ...</translation> + <source>Change...</source> + <translation>Zmień...</translation> </message> <message> <source>Environment:</source> @@ -43604,8 +34717,8 @@ do projektu "%2".</translation> <translation>Dodatkowe ustawienia środowiska w czasie używania tego zestawu narzędzi.</translation> </message> <message> - <source>No Changes to apply</source> - <translation>Brak zmian do zastosowania</translation> + <source>No changes to apply.</source> + <translation>Brak zmian do zastosowania.</translation> </message> <message> <source>Edit Environment Changes</source> @@ -43624,77 +34737,6 @@ do projektu "%2".</translation> </message> </context> <context> - <name>ProjectExplorer::ProjectExplorerPluginPrivate</name> - <message> - <source>Build Without Dependencies</source> - <translation>Zbuduj bez zależności</translation> - </message> - <message> - <source>Rebuild Without Dependencies</source> - <translation>Przebuduj bez zależności</translation> - </message> - <message> - <source>Clean Without Dependencies</source> - <translation>Wyczyść bez zależności</translation> - </message> - <message> - <source>Build</source> - <translation>Zbuduj</translation> - </message> - <message> - <source>Rebuild</source> - <translation>Przebuduj</translation> - </message> - <message> - <source>Clean</source> - <translation>Wyczyść</translation> - </message> - <message> - <source>The project %1 is not configured, skipping it.</source> - <translation>Projekt %1 nie jest skonfigurowany, zostaje pominięty.</translation> - </message> - <message> - <source>No project loaded.</source> - <translation>Nie załadowano projektu.</translation> - </message> - <message> - <source>Currently building the active project.</source> - <translation>Trwa budowanie aktywnego projektu.</translation> - </message> - <message> - <source>The project %1 is not configured.</source> - <translation>Projekt %1 nie jest skonfigurowany.</translation> - </message> - <message> - <source>Project has no build settings.</source> - <translation>Brak ustawień budowania w projekcie.</translation> - </message> - <message> - <source>Building "%1" is disabled: %2<br></source> - <translation>Budowanie "%1" jest wyłączone: %2<br></translation> - </message> - <message> - <source>No project loaded</source> - <translation>Nie załadowano projektu</translation> - </message> - <message> - <source>A build is in progress</source> - <translation>Trwa budowanie</translation> - </message> - <message> - <source>Project has no build settings</source> - <translation>Brak ustawień budowania w projekcie</translation> - </message> - <message> - <source>Building "%1" is disabled: %2</source> - <translation>Budowanie "%1" jest wyłączone: %2</translation> - </message> - <message> - <source>Run %1</source> - <translation>Uruchom %1</translation> - </message> -</context> -<context> <name>ProjectWizard</name> <message> <source>The files are implicitly added to the projects:</source> @@ -43773,13 +34815,6 @@ do projektu "%2".</translation> </message> </context> <context> - <name>QbsProjectManager::Internal::QbsRootProjectNode</name> - <message> - <source>Qbs files</source> - <translation>Pliki qbs</translation> - </message> -</context> -<context> <name>QmakeAndroidSupport::Internal::AndroidPackageInstallationFactory</name> <message> <source>Deploy to device</source> @@ -43845,6 +34880,10 @@ do projektu "%2".</translation> <translation>Katalog źródłowy pakietu Android:</translation> </message> <message> + <source>It is highly recommended if you are planning to extend the Java part of your Qt application.</source> + <translation>Jest to rekomendowane w przypadku rozszerzania kodu Java w aplikacji Qt.</translation> + </message> + <message> <source>Select the Android package source directory. The files in the Android package source directory are copied to the build directory's Android directory and the default files are overwritten.</source> @@ -43860,10 +34899,6 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan <source>Copy the Gradle files to Android directory</source> <translation>Skopiuj pliki Gradle do katalogu Android</translation> </message> - <message> - <source>It is highly recommended if you are plannig to extend the Java part of your Qt application.</source> - <translation>Jest to rekomendowane w przypadku planowania rozszerzania częsci Java aplikacji Qt.</translation> - </message> </context> <context> <name>QmakeAndroidSupport::Internal::CreateAndroidManifestWizard</name> @@ -43900,7 +34935,7 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan <name>QmakeAndroidSupport::Internal::QmakeAndroidBuildApkStepFactory</name> <message> <source>Build Android APK</source> - <translation type="unfinished"></translation> + <translation>Zbuduj Android APK</translation> </message> </context> <context> @@ -43910,12 +34945,8 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan <translation>Odnaleziono folder "android" w katalogu źródłowym. Qt 5.2 domyślnie nie używa tego katalogu.</translation> </message> <message> - <source>Internal Error: Could not find .pro file.</source> - <translation>Błąd wewnętrzny: brak pliku .pro.</translation> - </message> - <message> - <source>Internal Error: Unknown Android deployment JSON file location.</source> - <translation type="unfinished"></translation> + <source>No application .pro file found, not building an APK.</source> + <translation>Brak pliku .pro aplikacji, budowanie APK wstrzymane.</translation> </message> <message> <source>Starting: "%1" %2</source> @@ -43966,18 +34997,18 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan <name>NodeInstanceServerProxy</name> <message> <source>Cannot Connect to QML Emulation Layer (QML Puppet)</source> - <translation type="unfinished"></translation> + <translation>Nie można podłączyć emulatora QML (QML Puppet)</translation> </message> <message> <source>The executable of the QML emulation layer (QML Puppet) may not be responding. Switching to another kit might help.</source> - <translation type="unfinished"></translation> + <translation>Emulator QML (QML Puppet) pozostaje bez odpowiedzi. Pomocne może być przełączenie się na inny zestaw narzędzi.</translation> </message> </context> <context> <name>PuppetCreator</name> <message> <source>QML Emulation Layer (QML Puppet) Building was Unsuccessful</source> - <translation type="unfinished"></translation> + <translation>Nie można zbudować emulatora QML (QML Puppet)</translation> </message> <message> <source>The QML emulation layer (QML Puppet) cannot be built. The fallback emulation layer, which does not support all features, will be used.</source> @@ -44007,6 +35038,18 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan <translation>Pokaż pasek narzędzi Qt Quick</translation> </message> <message> + <source>Code Model Not Available</source> + <translation>Model kodu niedostępny</translation> + </message> + <message> + <source>Code model not available.</source> + <translation>Model kodu niedostępny</translation> + </message> + <message> + <source>Code Model of %1</source> + <translation>Model kodu "%1"</translation> + </message> + <message> <source>Refactoring</source> <translation>Refaktoryzacja</translation> </message> @@ -44035,77 +35078,6 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan </message> </context> <context> - <name>QmlProfiler::Internal::RangeTimelineModel</name> - <message> - <source>Duration</source> - <translation>Czas trwania</translation> - </message> - <message> - <source>Details</source> - <translation>Szczegóły</translation> - </message> - <message> - <source>Location</source> - <translation>Położenie</translation> - </message> -</context> -<context> - <name>Qnx::Internal::BarDescriptorFileNodeManager</name> - <message> - <source>Cannot save bar descriptor file: %1</source> - <translation>Nie można zachować pliku deskryptora "bar": %1</translation> - </message> - <message> - <source>Cannot reload bar descriptor file: %1</source> - <translation>Nie można przeładować pliku deskryptora "bar": %1</translation> - </message> - <message> - <source>Setup Application Descriptor File</source> - <translation>Ustaw plik deskryptora aplikacji</translation> - </message> - <message> - <source>You need to set up a bar descriptor file to enable packaging. -Do you want Qt Creator to generate it for your project (%1)?</source> - <translation>Należy ustawić plik deskryptora aplikacji "bar" aby umożliwić utorzenie pakietu. -Czy wygenerować plik "bar" dla projektu (%1)?</translation> - </message> - <message> - <source>Don't ask again for this project</source> - <translation>Nie pytaj więcej o ten projekt</translation> - </message> - <message> - <source>Cannot set up application descriptor file: Reading the bar descriptor template failed.</source> - <translation>Nie można ustawić pliku deskryptora "bar": odczyt szablonu deskryptora "bar" zakończony błędem.</translation> - </message> - <message> - <source>Cannot set up application descriptor file: Writing the bar descriptor file failed.</source> - <translation>Nie można ustawić pliku deskryptora "bar": zapis deskryptora "bar" zakończony błędem.</translation> - </message> - <message> - <source>Error</source> - <translation>Błąd</translation> - </message> - <message> - <source>Cannot open BAR application descriptor file</source> - <translation>Nie można otworzyć pliku deskryptora BAR aplikacji</translation> - </message> -</context> -<context> - <name>Qnx::Internal::QnxBaseConfiguration</name> - <message> - <source>- No GCC compiler found.</source> - <translation>- Brak kompilatora GCC.</translation> - </message> - <message> - <source>- No GDB debugger found for armvle7.</source> - <translation>- Brak debuggera GDB dla urządzenia armvle7.</translation> - </message> - <message> - <source>- No GDB debugger found for x86.</source> - <translation>- Brak debuggera dla urządzenia x86.</translation> - </message> -</context> -<context> <name>Qnx::Internal::QnxConfiguration</name> <message> <source>The following errors occurred while activating the QNX configuration:</source> @@ -44139,6 +35111,18 @@ Czy wygenerować plik "bar" dla projektu (%1)?</translation> <source>Kit for %1 (x86)</source> <translation>Zestaw narzędzi dla %1 (x86)</translation> </message> + <message> + <source>- No GCC compiler found.</source> + <translation>- Brak kompilatora GCC.</translation> + </message> + <message> + <source>- No GDB debugger found for armvle7.</source> + <translation>- Brak debuggera GDB dla urządzenia armvle7.</translation> + </message> + <message> + <source>- No GDB debugger found for x86.</source> + <translation>- Brak debuggera dla urządzenia x86.</translation> + </message> </context> <context> <name>QNX</name> @@ -44150,18 +35134,6 @@ Czy wygenerować plik "bar" dla projektu (%1)?</translation> <context> <name>Qnx::Internal::QnxPlugin</name> <message> - <source>BAR descriptor file (BlackBerry)</source> - <translation>Plik deskryptora BAR (BlackBerry)</translation> - </message> - <message> - <source>Could not add MIME type for bar-descriptor.xml editor.</source> - <translation>Nie można dodać typu MIME dla edytora bar-descriptor.xml.</translation> - </message> - <message> - <source>BAR Descriptor</source> - <translation>Deskryptor BAR</translation> - </message> - <message> <source>Attach to remote QNX application...</source> <translation>Dołącz do zdalnej aplikacji QNX...</translation> </message> @@ -44252,23 +35224,12 @@ Czy wygenerować plik "bar" dla projektu (%1)?</translation> </message> </context> <context> - <name>TextEditor::Internal::TextEditorWidgetPrivate</name> + <name>TextEditor::TextEditorWidget</name> <message> <source>CTRL+D</source> <translation>Ctrl+D</translation> </message> <message> - <source>Line: %1, Col: %2</source> - <translation>Linia: %1, kolumna: %2</translation> - </message> - <message> - <source>Line: 9999, Col: 999</source> - <translation>Linia: 9999, kolumna: 999</translation> - </message> -</context> -<context> - <name>TextEditor::TextEditorWidget</name> - <message> <source>Print Document</source> <translation>Wydruk dokumentu</translation> </message> @@ -44296,9 +35257,1708 @@ Czy wygenerować plik "bar" dla projektu (%1)?</translation> <source>Add UTF-8 BOM on Save</source> <translation>Dodawaj UTF-8 BOM przy zachowywaniu</translation> </message> + <message> + <source>Line: %1, Col: %2</source> + <translation>Linia: %1, kolumna: %2</translation> + </message> + <message> + <source>Line: 9999, Col: 999</source> + <translation>Linia: 9999, kolumna: 999</translation> + </message> +</context> +<context> + <name>VcsBase::VcsOutputWindow</name> + <message> + <source>Open "%1"</source> + <translation>Otwórz "%1"</translation> + </message> + <message> + <source>Clear</source> + <translation>Wyczyść</translation> + </message> + <message> + <source>Version Control</source> + <translation>System kontroli wersji</translation> + </message> + <message> + <source>Executing: %1 %2</source> + <translation>Wykonywanie: %1 %2</translation> + </message> + <message> + <source>Executing in %1: %2 %3</source> + <translation>Wykonywanie w %1: %2 %3</translation> + </message> +</context> +<context> + <name>WinRt::Internal::WinRtDebugSupport</name> + <message> + <source>The WinRT debugging helper is missing from your Qt Creator installation. It was assumed to be located at %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot start the WinRT Runner Tool.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot establish connection to the WinRT debugging helper.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot extract the PID from the WinRT debugging helper. (output: %1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot create an appropriate run control for the current run configuration.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>WinRt::Internal::WinRtRunnerHelper</name> + <message> + <source>The current kit has no Qt version.</source> + <translation>Brak wersji Qt w bieżącym zestawie narzędzi.</translation> + </message> + <message> + <source>Cannot find winrtrunner.exe in "%1".</source> + <translation>Brak winrtrunner.exe w "%1".</translation> + </message> + <message> + <source>Cannot determine the executable file path for "%1".</source> + <translation>Nie można określić ścieżki do pliku wykonywalnego dla "%1".</translation> + </message> + <message> + <source>Error while executing the WinRT Runner Tool: %1 +</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Help::Internal::IndexWindow</name> + <message> + <source>&Look for:</source> + <translation>Wy&szukaj:</translation> + </message> + <message> + <source>Open Link</source> + <translation>Otwórz odsyłacz</translation> + </message> + <message> + <source>Open Link as New Page</source> + <translation>Otwórz odsyłacz na nowej stronie</translation> + </message> +</context> +<context> + <name>RowLabel</name> + <message> + <source>[unknown]</source> + <translation>[nieznany]</translation> + </message> +</context> +<context> + <name>QbsProjectManager::Internal::CustomQbsPropertiesDialog</name> + <message> + <source>Custom Properties</source> + <translation>Własne właściwości</translation> + </message> + <message> + <source>&Add</source> + <translation>&Dodaj</translation> + </message> + <message> + <source>&Remove</source> + <translation>&Usuń</translation> + </message> + <message> + <source>Key</source> + <translation>Klucz</translation> + </message> + <message> + <source>Value</source> + <translation>Wartość</translation> + </message> +</context> +<context> + <name>QbsProjectManager::Internal::QbsProfilesSettingsWidget</name> + <message> + <source>Form</source> + <translation>Formularz</translation> + </message> + <message> + <source>Kit:</source> + <translation>Zestaw narzędzi:</translation> + </message> + <message> + <source>Associated profile:</source> + <translation>Skojarzony profil:</translation> + </message> + <message> + <source>Profile properties:</source> + <translation>Właściwości profilu:</translation> + </message> + <message> + <source>E&xpand All</source> + <translation>&Rozwiń wszystko</translation> + </message> + <message> + <source>&Collapse All</source> + <translation>&Zwiń wszystko</translation> + </message> + <message> + <source>&Edit...</source> + <translation>&Modyfikuj...</translation> + </message> +</context> +<context> + <name>Todo::Internal::TodoProjectSettingsWidget</name> + <message> + <source>Excluded Files</source> + <translation>Wyłączone pliki</translation> + </message> + <message> + <source>Regular expressions for file paths to be excluded from scanning.</source> + <translation>Wyrażenie regularne dla plików, które mają być wyłączone ze skanowania.</translation> + </message> + <message> + <source>Add</source> + <translation>Dodaj</translation> + </message> + <message> + <source>Remove</source> + <translation>Usuń</translation> + </message> + <message> + <source>To-Do Settings</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>LayoutPoperties</name> + <message> + <source>Alignment</source> + <translation>Wyrównanie</translation> + </message> + <message> + <source>Alignment of an item within the cells it occupies.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fill layout</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The item will expand as much as possible while respecting the given constraints if true.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fill width</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fill height</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Preferred size</source> + <translation>Preferowany rozmiar</translation> + </message> + <message> + <source>Preferred height of an item in a layout. If the preferred height is -1, it will be ignored.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Minimum size</source> + <translation>Minimalny rozmiar</translation> + </message> + <message> + <source>Minimum size of an item in a layout.</source> + <translation>Minimalny rozmiar elementu w rozmieszczeniu.</translation> + </message> + <message> + <source>Maximum size</source> + <translation>Maksymalny rozmiar</translation> + </message> + <message> + <source>Maximum size of an item in a layout.</source> + <translation>Maksymalny rozmiar elementu w rozmieszczeniu.</translation> + </message> + <message> + <source>Row span</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Row span of an item in a GridLayout.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Column span</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Column span of an item in a GridLayout.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Utils::ShellCommand</name> + <message> + <source>UNKNOWN</source> + <translation>NIEZNANY</translation> + </message> + <message> + <source>Unknown</source> + <translation>Nieznany</translation> + </message> + <message> + <source>Error: Executable timed out after %1 s.</source> + <translation>Błąd: plik wykonywalny nie odpowiada po upływie %1 s.</translation> + </message> +</context> +<context> + <name>Utils::ShellCommandPage</name> + <message> + <source>Command started...</source> + <translation>Komenda uruchomiona...</translation> + </message> + <message> + <source>Run Command</source> + <translation>Uruchom komendę</translation> + </message> + <message> + <source>No job running, please abort.</source> + <translation>Brak uruchomionych zadań, przerwij.</translation> + </message> + <message> + <source>Succeeded.</source> + <translation>Poprawnie zakończone.</translation> + </message> + <message> + <source>Failed.</source> + <translation>Niepoprawnie zakończone.</translation> + </message> +</context> +<context> + <name>Analyzer::AnalyzerManager</name> + <message> + <source>Analyze</source> + <translation>Analiza</translation> + </message> + <message> + <source>&Analyze</source> + <translation>&Analiza</translation> + </message> + <message> + <source>Start</source> + <translation>Uruchom</translation> + </message> + <message> + <source>Stop</source> + <translation>Zatrzymaj</translation> + </message> + <message> + <source>Analyzer Toolbar</source> + <translation>Pasek narzędzi analizatora</translation> + </message> + <message> + <source>An analysis is still in progress.</source> + <translation>Nadal trwa analiza.</translation> + </message> + <message> + <source>No analyzer tool selected.</source> + <translation>Brak wybranego narzędzia analizy.</translation> + </message> + <message> + <source>Debug</source> + <translation>Debug</translation> + </message> + <message> + <source>Release</source> + <translation>Release</translation> + </message> + <message> + <source>Tool</source> + <translation>Narzędzie</translation> + </message> + <message> + <source>Run %1 in %2 Mode?</source> + <translation>Uruchomić %1 w trybie %2?</translation> + </message> + <message> + <source><html><head/><body><p>You are trying to run the tool "%1" on an application in %2 mode. The tool is designed to be used in %3 mode.</p><p>Debug and Release mode run-time characteristics differ significantly, analytical findings for one mode may or may not be relevant for the other.</p><p>Do you want to continue and run the tool in %2 mode?</p></body></html></source> + <translation><html><head/><body><p>Próba uruchomienia narzędzia "%1" dla aplikacji w trybie %2. Narzędzie nie jest zaprojektowane do użycia w trybie %3.</p><p>Charakterystyki uruchamiania w trybach Debug i Release znacznie się różnią, analityczne dane z jednego trybu nie będą odpowiadały drugiemu trybowi.</p><p>Czy kontynuować i uruchomić je w trybie %2?</p></body></html></translation> + </message> +</context> +<context> + <name>Analyzer::DetailedErrorView</name> + <message> + <source>Copy</source> + <translation>Skopiuj</translation> + </message> +</context> +<context> + <name>Android::Internal::AndroidDeviceModelDelegate</name> + <message> + <source>OpenGL enabled</source> + <translation>OpenGL aktywny</translation> + </message> + <message> + <source>OpenGL disabled</source> + <translation>OpenGL nieaktywny</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::BareMetalCustomRunConfigWidget</name> + <message> + <source>Executable:</source> + <translation>Plik wykonywalny:</translation> + </message> + <message> + <source>Arguments:</source> + <translation>Argumenty:</translation> + </message> + <message> + <source>Work directory:</source> + <translation>Katalog roboczy:</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::BareMetalCustomRunConfiguration</name> + <message> + <source>The remote executable must be set in order to run a custom remote run configuration.</source> + <translation>W celu uruchomienia własnej, zdalnej konfiguracji uruchamiania, należy ustawić zdalny plik wykonywalny.</translation> + </message> + <message> + <source>Custom Executable (on GDB server or hardware debugger)</source> + <translation>Własny plik wykonywalny (na serwerze GDB lub debuggerze sprzętowym)</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::BareMetalDebugSupport</name> + <message> + <source>Debugging failed.</source> + <translation>Błąd debugowania.</translation> + </message> + <message> + <source>Initial setup failed: %1</source> + <translation>Błąd wstępnej konfiguracji: %1</translation> + </message> + <message> + <source>Starting GDB server...</source> + <translation>Uruchamianie serwera GDB...</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::DefaultGdbServerProviderFactory</name> + <message> + <source>Default</source> + <translation>Domyślny</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::DefaultGdbServerProviderConfigWidget</name> + <message> + <source>Host:</source> + <translation>Host:</translation> + </message> + <message> + <source>Init commands:</source> + <translation>Komendy inicjalizujące:</translation> + </message> + <message> + <source>Reset commands:</source> + <translation>Komendy resetujące:</translation> + </message> +</context> +<context> + <name>BareMetal::GdbServerProvider</name> + <message> + <source>Clone of %1</source> + <translation>Klon %1</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::GdbServerProviderConfigWidget</name> + <message> + <source>Enter the name of the GDB server provider.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Name:</source> + <translation>Nazwa:</translation> + </message> + <message> + <source>Choose the desired startup mode of the GDB server provider.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Startup mode:</source> + <translation>Tryb startowy:</translation> + </message> + <message> + <source>No Startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Startup in TCP/IP Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Startup in Pipe Mode</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>BareMetal::Internal::HostWidget</name> + <message> + <source>Enter TCP/IP hostname of the GDB server provider, like "localhost" or "192.0.2.1".</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enter TCP/IP port which will be listened by the GDB server provider.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>BareMetal::Internal::GdbServerProviderChooser</name> + <message> + <source>Manage...</source> + <translation>Zarządzaj...</translation> + </message> + <message> + <source>None</source> + <translation>Brak</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::GdbServerProviderModel</name> + <message> + <source>Name</source> + <translation>Nazwa</translation> + </message> + <message> + <source>Type</source> + <translation>Typ</translation> + </message> + <message> + <source>Duplicate Providers Detected</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The following providers were already configured:<br>&nbsp;%1<br>They were not configured again.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>BareMetal::Internal::GdbServerProvidersSettingsPage</name> + <message> + <source>Add</source> + <translation>Dodaj</translation> + </message> + <message> + <source>Clone</source> + <translation>Sklonuj</translation> + </message> + <message> + <source>Remove</source> + <translation>Usuń</translation> + </message> + <message> + <source>GDB Server Providers</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>BareMetal::Internal::OpenOcdGdbServerProviderFactory</name> + <message> + <source>OpenOCD</source> + <translation>OpenOCD</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::OpenOcdGdbServerProviderConfigWidget</name> + <message> + <source>Host:</source> + <translation>Host:</translation> + </message> + <message> + <source>Executable file:</source> + <translation>Plik wykonywalny:</translation> + </message> + <message> + <source>Root scripts directory:</source> + <translation>Korzeń katalogu ze skryptami:</translation> + </message> + <message> + <source>Configuration file:</source> + <translation>Plik z konfiguracją:</translation> + </message> + <message> + <source>Additional arguments:</source> + <translation>Dodatkowe argumenty:</translation> + </message> + <message> + <source>Init commands:</source> + <translation>Komendy inicjalizujące:</translation> + </message> + <message> + <source>Reset commands:</source> + <translation>Komendy resetujące:</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::StLinkUtilGdbServerProviderFactory</name> + <message> + <source>ST-LINK Utility</source> + <translation>Narzędzie ST-LINK</translation> + </message> +</context> +<context> + <name>BareMetal::Internal::StLinkUtilGdbServerProviderConfigWidget</name> + <message> + <source>Host:</source> + <translation>Host:</translation> + </message> + <message> + <source>Executable file:</source> + <translation>Plik wykonywalny:</translation> + </message> + <message> + <source>Specify the verbosity level (0..99).</source> + <translation>Poziom gadatliwości (0..99).</translation> + </message> + <message> + <source>Verbosity level:</source> + <translation>Poziom gadatliwości:</translation> + </message> + <message> + <source>Continue listening for connections after disconnect.</source> + <translation>Kontynuuj nasłuchiwanie nowych połączeń po rozłączeniu.</translation> + </message> + <message> + <source>Extended mode:</source> + <translation>Tryb rozszerzony:</translation> + </message> + <message> + <source>Reset board on connection.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reset on connection:</source> + <translation>Zresetuj po połączeniu:</translation> + </message> + <message> + <source>Transport layer type.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Version:</source> + <translation>Wersja:</translation> + </message> + <message> + <source>Init commands:</source> + <translation>Komendy inicjalizujące:</translation> + </message> + <message> + <source>Reset commands:</source> + <translation>Komendy resetujące:</translation> + </message> + <message> + <source>ST-LINK/V1</source> + <translation>ST-LINK/V1</translation> + </message> + <message> + <source>ST-LINK/V2</source> + <translation>ST-LINK/V2</translation> + </message> +</context> +<context> + <name>CMakeProjectManager::Internal::CMakeKitConfigWidget</name> + <message> + <source>CMake Tool:</source> + <translation>Narzędzie CMake:</translation> + </message> + <message> + <source>The CMake Tool to use when building a project with CMake.<br>This setting is ignored when using other build systems.</source> + <translation>Narzędzie CMake używane podczas budowania projektu CMake.<br>Ustawienie to jest ignorowane podczas budowania za pomocą innych systemów budowania.</translation> + </message> + <message> + <source><No CMake Tool available></source> + <translation><Brak narzędzia CMake></translation> + </message> +</context> +<context> + <name>CMakeProjectManager::CMakeKitInformation</name> + <message> + <source>CMake</source> + <translation>CMake</translation> + </message> + <message> + <source>Unconfigured</source> + <translation>Nieskonfigurowane</translation> + </message> +</context> +<context> + <name>CMakeProjectManager::Internal::NoCMakePage</name> + <message> + <source>Check CMake Tools</source> + <translation>Sprawdź narzędzia CMake</translation> + </message> + <message> + <source>There are CMake Tools registered.</source> + <translation>Istnieją zarejestrowane narzędzia CMake.</translation> + </message> + <message> + <source>Qt Creator has no CMake Tools that are required for CMake projects. Please configure at least one.</source> + <translation>Qt Creator nie posiada skonfigurowanych narzędzi CMake. Skonfiguruj przynajmniej jedno.</translation> + </message> +</context> +<context> + <name>CMakeProjectManager::CMakeSettingsPage</name> + <message> + <source> (Default)</source> + <translatorcomment>what default???</translatorcomment> + <translation> (domyślny)</translation> + </message> + <message> + <source>Name</source> + <translation>Nazwa</translation> + </message> + <message> + <source>Location</source> + <translation>Położenie</translation> + </message> + <message> + <source>Auto-detected</source> + <translation>Automatycznie wykryte</translation> + </message> + <message> + <source>Manual</source> + <translation>Ustawione ręcznie</translation> + </message> + <message> + <source>Name:</source> + <translation>Nazwa:</translation> + </message> + <message> + <source>Path:</source> + <translation>Ścieżka:</translation> + </message> +</context> +<context> + <name>CMakeProjectManager::Internal::CMakeToolConfigWidget</name> + <message> + <source>Add</source> + <translation>Dodaj</translation> + </message> + <message> + <source>Clone</source> + <translation>Sklonuj</translation> + </message> + <message> + <source>Remove</source> + <translation>Usuń</translation> + </message> + <message> + <source>Make Default</source> + <translation>Ustaw jako domyślny</translation> + </message> + <message> + <source>Set as the default CMake Tool to use when creating a new Kit, or no value is set.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Prefer Ninja generator (CMake 2.8.9 or higher required)</source> + <translation>Preferuj generator Ninja (wymagany CMake 2.8.9 lub nowszy)</translation> + </message> + <message> + <source>Clone of %1</source> + <translation>Klon %1</translation> + </message> + <message> + <source>New CMake</source> + <translation>Nowy CMake</translation> + </message> +</context> +<context> + <name>CMakeProjectManager::CMakeToolManager</name> + <message> + <source>CMake at %1</source> + <translation>CMake w %1</translation> + </message> + <message> + <source>System CMake at %1</source> + <translation>Systemowy CMake w %1</translation> + </message> +</context> +<context> + <name>Core::Internal::EnvironmentChangesDialog</name> + <message> + <source>Edit Environment Changes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Change system environment by assigning one environment variable per line:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>PATH=C:\dev\bin;${PATH}</source> + <translation>PATH=C:\dev\bin;${PATH}</translation> + </message> + <message> + <source>PATH=/opt/bin:${PATH}</source> + <translation>PATH=/opt/bin:${PATH}</translation> + </message> +</context> +<context> + <name>Core::Internal::ShortcutSettingsWidget</name> + <message> + <source>Keyboard Shortcuts</source> + <translation>Skróty klawiszowe</translation> + </message> + <message> + <source>Shortcut</source> + <translation>Skrót</translation> + </message> + <message> + <source>Enter key sequence as text</source> + <translation>Wprowadź sekwencję klawiszy jako tekst</translation> + </message> + <message> + <source>Key sequence:</source> + <translation>Sekwencja klawiszy:</translation> + </message> + <message> + <source>Use "Cmd", "Opt", "Ctrl", and "Shift" for modifier keys. Use "Escape", "Backspace", "Delete", "Insert", "Home", and so on, for special keys. Combine individual keys with "+", and combine multiple shortcuts to a shortcut sequence with ",". For example, if the user must hold the Ctrl and Shift modifier keys while pressing Escape, and then release and press A, enter "Ctrl+Shift+Escape,A".</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Use "Ctrl", "Alt", "Meta", and "Shift" for modifier keys. Use "Escape", "Backspace", "Delete", "Insert", "Home", and so on, for special keys. Combine individual keys with "+", and combine multiple shortcuts to a shortcut sequence with ",". For example, if the user must hold the Ctrl and Shift modifier keys while pressing Escape, and then release and press A, enter "Ctrl+Shift+Escape,A".</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reset</source> + <translation>Reset</translation> + </message> + <message> + <source>Reset to default.</source> + <translation>Przywróć domyślny.</translation> + </message> + <message> + <source>Key sequence has potential conflicts. <a href="#conflicts">Show.</a></source> + <translation>Sekwencja klawiszy potencjalnie w konflikcie. <a href="#conflicts">Pokaż.</a></translation> + </message> + <message> + <source>Invalid key sequence.</source> + <translation>Niepoprawna sekwencja klawiszy.</translation> + </message> + <message> + <source>Import Keyboard Mapping Scheme</source> + <translation>Zaimportuj schemat mapowania klawiatury</translation> + </message> + <message> + <source>Keyboard Mapping Scheme (*.kms)</source> + <translation>Schemat mapowania klawiatury (*.kms)</translation> + </message> + <message> + <source>Export Keyboard Mapping Scheme</source> + <translation>Wyeksportuj schemat mapowania klawiatury</translation> + </message> +</context> +<context> + <name>Core::Internal::CurrentDocumentFind</name> + <message> + <source>%1 occurrences replaced.</source> + <translation type="unfinished">Zastąpiono %1 wystąpień.</translation> + </message> +</context> +<context> + <name>Core::IWizardFactory</name> + <message> + <source>Factory with id="%1" already registered. Deleting.</source> + <translation>Fabryka o identyfikatorze "%1" już zarejestrowana. Nowa fabryka zostanie usunięta.</translation> + </message> + <message> + <source>Reload All Wizards</source> + <translation>Przeładuj wszystkie kreatory</translation> + </message> + <message> + <source>Inspect Wizard State</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Core::Internal::ExternalToolsFilter</name> + <message> + <source>Run External Tool</source> + <translation>Uruchom zewnętrzne narzędzie</translation> + </message> +</context> +<context> + <name>Core::Internal::LocatorSettingsPage</name> + <message> + <source>Name</source> + <translation>Nazwa</translation> + </message> + <message> + <source>Prefix</source> + <translation>Przedrostek</translation> + </message> + <message> + <source>Default</source> + <translation>Domyślny</translation> + </message> + <message> + <source>Built-in</source> + <translation>Wbudowany</translation> + </message> + <message> + <source>Custom</source> + <translation>Własny</translation> + </message> +</context> +<context> + <name>QuickFixFactory</name> + <message> + <source>Create Getter and Setter Member Functions</source> + <translation>Dodaj metodę zwracającą (getter) i ustawiającą (setter)</translation> + </message> + <message> + <source>Create Getter Member Function</source> + <translation>Dodaj metodę zwracającą (getter)</translation> + </message> + <message> + <source>Create Setter Member Function</source> + <translation>Dodaj metodę ustawiającą (setter)</translation> + </message> + <message> + <source>Convert to Stack Variable</source> + <translation>Przekształć do zmiennej na stosie</translation> + </message> + <message> + <source>Convert to Pointer</source> + <translation>Przekształć do wskaźnika</translation> + </message> + <message> + <source>Generate Missing Q_PROPERTY Members...</source> + <translation>Wygeneruj brakujące składniki Q_PROPERTY...</translation> + </message> +</context> +<context> + <name>CppTools::CppEditorOutline</name> + <message> + <source>Sort Alphabetically</source> + <translation>Posortuj alfabetycznie</translation> + </message> +</context> +<context> + <name>CppTools::Internal::CppIncludesFilter</name> + <message> + <source>All Included C/C++ Files</source> + <translation>Wszystkie dołączone pliki C/C++</translation> + </message> +</context> +<context> + <name>Debugger::Internal::DebuggerEnginePrivate</name> + <message> + <source>Debugged executable</source> + <translation>Debugowany program</translation> + </message> + <message> + <source>Attempting to interrupt.</source> + <translation>Próba przerwania.</translation> + </message> </context> <context> - <name>TextEditor::Internal::TextEditorActionHandlerPrivate</name> + <name>Debugger::Internal::DebuggerEngine</name> + <message> + <source>Launching Debugger</source> + <translation>Uruchamianie debuggera</translation> + </message> + <message> + <source>Setup failed.</source> + <translation>Niepoprawna konfiguracja.</translation> + </message> + <message> + <source>Loading finished.</source> + <translation>Zakończono ładowanie.</translation> + </message> + <message> + <source>Run failed.</source> + <translation>Nieudane uruchomienie.</translation> + </message> + <message> + <source>Running.</source> + <translation>Uruchomiono.</translation> + </message> + <message> + <source>Stopped.</source> + <translation>Zatrzymano.</translation> + </message> + <message> + <source>Run requested...</source> + <translation>Zażądano uruchomienia...</translation> + </message> + <message> + <source>The %1 process terminated.</source> + <translation>Proces %1 zakończył pracę.</translation> + </message> + <message> + <source>The %2 process terminated unexpectedly (exit code %1).</source> + <translation>Proces %2 nieoczekiwanie zakończył pracę (kod %1).</translation> + </message> + <message> + <source>Unexpected %1 Exit</source> + <translation>Nieoczekiwane zakończenie %1</translation> + </message> + <message> + <source>Taking notice of pid %1</source> + <translation>Zwracanie uwagi na pid %1</translation> + </message> + <message> + <source>This debugger cannot handle user input.</source> + <translation>Ten debugger nie obsługuje poleceń wejściowych użytkownika.</translation> + </message> + <message> + <source>Stopped: "%1".</source> + <translation>Zatrzymano: "%1".</translation> + </message> + <message> + <source>Stopped: %1 (Signal %2).</source> + <translation>Zatrzymano: %1 (sygnał %2).</translation> + </message> + <message> + <source>Stopped in thread %1 by: %2.</source> + <translation>Zatrzymano w wątku %1 przez %2.</translation> + </message> + <message> + <source>Interrupted.</source> + <translation>Przerwano.</translation> + </message> + <message> + <source><Unknown></source> + <comment>name</comment> + <translation><Nieznana></translation> + </message> + <message> + <source><Unknown></source> + <comment>meaning</comment> + <translation><Nieznane></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><p>Podproces zatrzymany, ponieważ otrzymał on sygnał z systemu operacyjnego.<p><table><tr><td>Nazwa sygnału: </td><td>%1</td></tr><tr><td>Znaczenie sygnału: </td><td>%2</td></tr></table></translation> + </message> + <message> + <source>Signal Received</source> + <translation>Otrzymano sygnał</translation> + </message> + <message> + <source><p>The inferior stopped because it triggered an exception.<p>%1</source> + <translation><p>Podproces zatrzymany z powodu rzuconego wyjątku.<p>%1</translation> + </message> + <message> + <source>Exception Triggered</source> + <translation>Rzucono wyjątek</translation> + </message> + <message> + <source>Found.</source> + <translation>Znaleziono.</translation> + </message> + <message> + <source>Not found.</source> + <translation>Nie znaleziono.</translation> + </message> + <message> + <source>Section %1: %2</source> + <translation>Sekcja %1: %2</translation> + </message> + <message> + <source>Warning</source> + <translation>Ostrzeżenie</translation> + </message> + <message> + <source>This does not seem to be a "Debug" build. +Setting breakpoints by file name and line number may fail.</source> + <translation>To nie jest wersja debugowa. +Ustawianie pułapek w liniach plików może się nie udać.</translation> + </message> + <message> + <source>Run to Address 0x%1</source> + <translation>Uruchom do adresu 0x%1</translation> + </message> + <message> + <source>Run to Line %1</source> + <translation>Uruchom do linii %1</translation> + </message> + <message> + <source>Jump to Address 0x%1</source> + <translation>Skocz do adresu 0x%1</translation> + </message> + <message> + <source>Jump to Line %1</source> + <translation>Skocz do linii %1</translation> + </message> +</context> +<context> + <name>Debugger::DebuggerOptionsPage</name> + <message> + <source>Not recognized</source> + <translation>Nierozpoznany</translation> + </message> + <message> + <source>Name</source> + <translation>Nazwa</translation> + </message> + <message> + <source>Location</source> + <translation>Położenie</translation> + </message> + <message> + <source>Type</source> + <translation>Typ</translation> + </message> + <message> + <source>Auto-detected</source> + <translation>Automatycznie wykryte</translation> + </message> + <message> + <source>Manual</source> + <translation>Ustawione ręcznie</translation> + </message> + <message> + <source>Unknown</source> + <translation>Nieznany</translation> + </message> + <message> + <source>Name:</source> + <translation>Nazwa:</translation> + </message> + <message> + <source>Path:</source> + <translation>Ścieżka:</translation> + </message> + <message> + <source>Type:</source> + <translation>Typ:</translation> + </message> + <message> + <source>ABIs:</source> + <translation>ABIs:</translation> + </message> + <message> + <source>Version:</source> + <translation>Wersja:</translation> + </message> + <message> + <source>64-bit version</source> + <translation>w wersji 64 bitowej</translation> + </message> + <message> + <source>32-bit version</source> + <translation>w wersji 32 bitowej</translation> + </message> + <message> + <source><html><body><p>Specify the path to the <a href="%1">Windows Console Debugger executable</a> (%2) here.</p></body></html></source> + <extracomment>Label text for path configuration. %2 is "x-bit version".</extracomment> + <translation><html><body><p>Podaj ścieżkę do <a href="%1">pliku wykonywalnego Windows Console Debugger</a> (%2).</p></body></html></translation> + </message> + <message> + <source>Add</source> + <translation>Dodaj</translation> + </message> + <message> + <source>Clone</source> + <translation>Sklonuj</translation> + </message> + <message> + <source>Remove</source> + <translation>Usuń</translation> + </message> + <message> + <source>Clone of %1</source> + <translation>Klon %1</translation> + </message> + <message> + <source>New Debugger</source> + <translation>Nowy debugger</translation> + </message> + <message> + <source>Debuggers</source> + <translation>Debuggery</translation> + </message> +</context> +<context> + <name>DeviceProcessesDialog</name> + <message> + <source>&Attach to Process</source> + <translation>&Dołącz do procesu</translation> + </message> +</context> +<context> + <name>Debugger::Internal::RunConfigWidget</name> + <message> + <source>Debugger Settings</source> + <translation>Ustawienia debuggera</translation> + </message> + <message> + <source>Enable C++</source> + <translation>Uaktywnij C++</translation> + </message> + <message> + <source>Enable QML</source> + <translation>Uaktywnij QML</translation> + </message> + <message> + <source>Debug port:</source> + <translation>Port debugowania:</translation> + </message> + <message> + <source><a href="qthelp://org.qt-project.qtcreator/doc/creator-debugging-qml.html">What are the prerequisites?</a></source> + <translation><a href="qthelp://org.qt-project.qtcreator/doc/creator-debugging-qml.html">Jakie są wymagania?</a></translation> + </message> + <message> + <source>Enable Debugging of Subprocesses</source> + <translation>Uaktywnij debugowanie podprocesów</translation> + </message> +</context> +<context> + <name>Debugger::Internal::Terminal</name> + <message> + <source>Terminal: Cannot open /dev/ptmx: %1</source> + <translation>Terminal: Nie można otworzyć /dev/ptmx: %1</translation> + </message> + <message> + <source>Terminal: ptsname failed: %1</source> + <translation>Terminal: ptsname zakończył pracę błędem: %1</translation> + </message> + <message> + <source>Terminal: Error: %1</source> + <translation>Terminal: Błąd: %1</translation> + </message> + <message> + <source>Terminal: Slave is no character device.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Terminal: grantpt failed: %1</source> + <translation>Terminal: grantpt zakończył pracę błędem: %1</translation> + </message> + <message> + <source>Terminal: unlock failed: %1</source> + <translation>Terminal: unlock zakończył pracę błędem: %1</translation> + </message> + <message> + <source>Terminal: Read failed: %1</source> + <translation>Terminal: błąd odczytu: %1</translation> + </message> +</context> +<context> + <name>DiffEditor::Internal::DiffEditor</name> + <message> + <source>Context lines:</source> + <translation>Linie z kontekstem:</translation> + </message> + <message> + <source>Ignore Whitespace</source> + <translation>Ignoruj białe znaki</translation> + </message> + <message> + <source>Reload Diff</source> + <translation>Przeładuj różnice</translation> + </message> + <message> + <source>[%1] vs. [%2] %3</source> + <translation>[%1] vs [%2] %3</translation> + </message> + <message> + <source>%1 vs. %2</source> + <translation>%1 vs %2</translation> + </message> + <message> + <source>[%1] %2 vs. [%3] %4</source> + <translation>[%1] %2 vs [%3] %4</translation> + </message> + <message> + <source>Hide Change Description</source> + <translation>Ukryj opis zmiany</translation> + </message> + <message> + <source>Show Change Description</source> + <translation>Pokaż opis zmiany</translation> + </message> +</context> +<context> + <name>DiffEditor::Internal::DiffEditorDocument</name> + <message> + <source>Could not parse patch file "%1". The content is not of unified diff format.</source> + <translation>Nie można sparsować pliku z łatami "%1". Zawartość nie jest w formacie ujednoliconym (unified diff).</translation> + </message> +</context> +<context> + <name>DiffEditor::UnifiedView</name> + <message> + <source>Switch to Unified Diff Editor</source> + <translation>Przełącz do edytora różnic wyświetlającego zawartość w formacie ujednoliconym (unified diff)</translation> + </message> +</context> +<context> + <name>DiffEditor::Internal::UnifiedView</name> + <message> + <source>Waiting for data...</source> + <translation>Oczekiwanie na dane...</translation> + </message> +</context> +<context> + <name>DiffEditor::SideBySideView</name> + <message> + <source>Switch to Side By Side Diff Editor</source> + <translation>Przełącz do edytora różnic wyświetlającego zawartość sąsiadująco</translation> + </message> +</context> +<context> + <name>DiffEditor::Internal::SideBySideView</name> + <message> + <source>Synchronize Horizontal Scroll Bars</source> + <translation>Synchronizuj poziome paski przesuwania</translation> + </message> + <message> + <source>Waiting for data...</source> + <translation>Oczekiwanie na dane...</translation> + </message> +</context> +<context> + <name>DiffEditor::Internal::SideBySideDiffEditorWidget</name> + <message numerus="yes"> + <source>Skipped %n lines...</source> + <translation> + <numerusform>Opuszczono %n linię...</numerusform> + <numerusform>Opuszczono %n linie...</numerusform> + <numerusform>Opuszczono %n linii...</numerusform> + </translation> + </message> + <message> + <source>Binary files differ</source> + <translation>Pliki binarne różnią się</translation> + </message> + <message> + <source>Skipped unknown number of lines...</source> + <translation>Pominięto nieznaną ilość linii...</translation> + </message> + <message> + <source>No difference</source> + <translation>Brak różnic</translation> + </message> + <message> + <source>Send Chunk to CodePaster...</source> + <translation>Wyślij fragment do Codepaster...</translation> + </message> + <message> + <source>Apply Chunk...</source> + <translation>Zastosuj fragment...</translation> + </message> + <message> + <source>Revert Chunk...</source> + <translation>Zastosuj odwrotny fragment...</translation> + </message> + <message> + <source>Revert Chunk</source> + <translation>Odwróć zmiany we fragmencie</translation> + </message> + <message> + <source>Apply Chunk</source> + <translation>Zastosuj fragment</translation> + </message> + <message> + <source>Would you like to revert the chunk?</source> + <translation>Czy zastosować odwrotny fragment?</translation> + </message> + <message> + <source>Would you like to apply the chunk?</source> + <translation>Czy zastosować fragment?</translation> + </message> +</context> +<context> + <name>DiffEditor::Internal::SideDiffEditorWidget</name> + <message> + <source>[%1] %2</source> + <translation>[%1] %2</translation> + </message> +</context> +<context> + <name>DiffEditor::Internal::UnifiedDiffEditorWidget</name> + <message> + <source>No document</source> + <translation>Brak dokumentu</translation> + </message> + <message> + <source>Send Chunk to CodePaster...</source> + <translation>Wyślij fragment do Codepaster...</translation> + </message> + <message> + <source>Apply Chunk...</source> + <translation>Zastosuj fragment...</translation> + </message> + <message> + <source>Revert Chunk...</source> + <translation>Zastosuj odwrotny fragment...</translation> + </message> + <message> + <source>Revert Chunk</source> + <translation>Odwróć zmiany we fragmencie</translation> + </message> + <message> + <source>Apply Chunk</source> + <translation>Zastosuj fragment</translation> + </message> + <message> + <source>Would you like to revert the chunk?</source> + <translation>Czy zastosować odwrotny fragment?</translation> + </message> + <message> + <source>Would you like to apply the chunk?</source> + <translation>Czy zastosować fragment?</translation> + </message> + <message> + <source>No difference.</source> + <translation>Brak różnic.</translation> + </message> +</context> +<context> + <name>ImageViewer::Internal::ImageViewerFile</name> + <message> + <source>Image format not supported.</source> + <translation>Nieobsługiwany format pliku graficznego.</translation> + </message> + <message> + <source>Failed to read SVG image.</source> + <translation>Błąd odczytu pliku graficznego SVG.</translation> + </message> + <message> + <source>Failed to read image.</source> + <translation>Błąd odczytu pliku graficznego.</translation> + </message> +</context> +<context> + <name>ProjectExplorer::JsonKitsPage</name> + <message> + <source>Feature list is set and not of type list.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>No "%1" key found in feature list object.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Feature list element is not a string or object.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::JsonWizard</name> + <message> + <source>Key is not an object.</source> + <translation>Klucz nie jest obiektem.</translation> + </message> + <message> + <source>Pattern "%1" is no valid regular expression.</source> + <translation>Wzorzec "%1" jest niepoprawnym wyrażeniem regularnym.</translation> + </message> + <message> + <source>ScannerGenerator: Binary pattern "%1" not valid.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::LocalApplicationRunControl</name> + <message> + <source>No executable specified.</source> + <translation>Nie podano pliku wykonywalnego.</translation> + </message> + <message> + <source>Executable %1 does not exist.</source> + <translation>Brak pliku wykonywalnego %1.</translation> + </message> + <message> + <source>Starting %1...</source> + <translation>Uruchamianie %1...</translation> + </message> + <message> + <source>%1 crashed</source> + <translation>%1 zakończył pracę błędem</translation> + </message> + <message> + <source>%1 exited with code %2</source> + <translation>%1 zakończone kodem %2</translation> + </message> +</context> +<context> + <name>ProjectExplorer::ProjectTree</name> + <message> + <source><b>Warning:</b> This file is outside the project directory.</source> + <translation><b>Ostrzeżenie:</b> Ten plik leży poza katalogiem projektu.</translation> + </message> +</context> +<context> + <name>ProjectExplorer::TerminalAspect</name> + <message> + <source>Terminal</source> + <translation>Terminal</translation> + </message> + <message> + <source>Run in terminal</source> + <translation>Uruchom w terminalu</translation> + </message> +</context> +<context> + <name>ProjectExplorer::WorkingDirectoryAspect</name> + <message> + <source>Working Directory</source> + <translation>Katalog roboczy</translation> + </message> + <message> + <source>Select Working Directory</source> + <translation>Wybierz katalog roboczy</translation> + </message> + <message> + <source>Reset to Default</source> + <translation>Przywróć domyślny</translation> + </message> + <message> + <source>Working directory:</source> + <translation>Katalog roboczy:</translation> + </message> +</context> +<context> + <name>ProjectExplorer::ArgumentsAspect</name> + <message> + <source>Arguments</source> + <translation>Argumenty</translation> + </message> + <message> + <source>Command line arguments:</source> + <translation>Argumenty linii komend:</translation> + </message> +</context> +<context> + <name>PythonEditor::Internal::PythonRunConfiguration</name> + <message> + <source>Run %1</source> + <translation>Uruchom %1</translation> + </message> + <message> + <source>(disabled)</source> + <translation>(nieaktywny)</translation> + </message> + <message> + <source>The script is currently disabled.</source> + <translation>Skrypt jest aktualnie wyłączony.</translation> + </message> +</context> +<context> + <name>PythonEditor::Internal::PythonRunConfigurationWidget</name> + <message> + <source>Interpreter: </source> + <translation>Interpreter: </translation> + </message> + <message> + <source>Script: </source> + <translation>Skrypt: </translation> + </message> +</context> +<context> + <name>PythonEditor::Internal::PythonProjectManager</name> + <message> + <source>Failed opening project "%1": Project is not a file.</source> + <translation>Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik.</translation> + </message> +</context> +<context> + <name>PythonEditor::Internal::PythonRunControl</name> + <message> + <source>No Python interpreter specified.</source> + <translation>Brak interpretera Pythona</translation> + </message> + <message> + <source>Python interpreter %1 does not exist.</source> + <translation>Interpreter Pythona %1 nie istnieje.</translation> + </message> + <message> + <source>Starting %1...</source> + <translation>Uruchamianie %1...</translation> + </message> + <message> + <source>%1 crashed</source> + <translation>%1 zakończył pracę błędem</translation> + </message> + <message> + <source>%1 exited with code %2</source> + <translation>%1 zakończone kodem %2</translation> + </message> +</context> +<context> + <name>QbsProjectManager</name> + <message> + <source>Qbs</source> + <translation>Qbs</translation> + </message> + <message> + <source>Profiles</source> + <translation>Profile</translation> + </message> +</context> +<context> + <name>QbsRootProjectNode</name> + <message> + <source>Qbs files</source> + <translation>Pliki qbs</translation> + </message> +</context> +<context> + <name>QbsProjectManager::Internal::QbsManager</name> + <message> + <source>Failed opening project "%1": Project is not a file.</source> + <translation>Nie można otworzyć projektu "%1": Ścieżka projektu nie wskazuje na plik.</translation> + </message> + <message> + <source>Failed to set up kit for Qbs: %1</source> + <translation>Nie można ustawić zestawu narzędzi dla Qbs: %1</translation> + </message> +</context> +<context> + <name>QmakePriFileNode</name> + <message> + <source>Failed</source> + <translation>Niepoprawnie zakończone</translation> + </message> + <message> + <source>Could not write project file %1.</source> + <translation>Nie można zapisać pliku projektu %1.</translation> + </message> + <message> + <source>File Error</source> + <translation>Błąd pliku</translation> + </message> +</context> +<context> + <name>QmakeProFileNode</name> + <message> + <source>Error while parsing file %1. Giving up.</source> + <translation>Błąd parsowania pliku %1. Przetwarzanie przerwane.</translation> + </message> + <message> + <source>Could not find .pro file for subdirectory "%1" in "%2".</source> + <translation>Nie można odnaleźć pliku .pro w podkatalogu "%1" w "%2".</translation> + </message> +</context> +<context> + <name>QmlProfiler::LocalQmlProfilerRunner</name> + <message> + <source>No executable file to launch.</source> + <translation>Brak pliku do uruchomienia.</translation> + </message> +</context> +<context> + <name>QmlProfiler::Internal::QmlProfilerAnimationsModel</name> + <message> + <source>Animations</source> + <translation>Animacje</translation> + </message> + <message> + <source>GUI Thread</source> + <translation>Wątek GUI</translation> + </message> + <message> + <source>Render Thread</source> + <translation>Wątek renderingu</translation> + </message> + <message> + <source>Duration</source> + <translation>Czas trwania</translation> + </message> + <message> + <source>Framerate</source> + <translation>Klatki na sekundę</translation> + </message> + <message> + <source>Context</source> + <translation>Kontekst</translation> + </message> +</context> +<context> + <name>QmlProfiler::QmlProfilerRunControl</name> + <message> + <source>Qt Creator</source> + <translation>Qt Creator</translation> + </message> + <message> + <source>Could not connect to the in-process QML debugger: +%1</source> + <extracomment>%1 is detailed error message</extracomment> + <translation>Nie można podłączyć się do wewnątrzprocesowego debuggera QML: +%1</translation> + </message> + <message> + <source>QML Profiler</source> + <translation>Profiler QML</translation> + </message> +</context> +<context> + <name>QmlProfiler::Internal::QmlProfilerRangeModel</name> + <message> + <source>Duration</source> + <translation>Czas trwania</translation> + </message> + <message> + <source>Details</source> + <translation>Szczegóły</translation> + </message> + <message> + <source>Location</source> + <translation>Położenie</translation> + </message> +</context> +<context> + <name>ResourceTopLevelNode</name> + <message> + <source>%1 Prefix: %2</source> + <translation>%1 Przedrostek: %2</translation> + </message> +</context> +<context> + <name>Subversion::Internal::SubversionLogParameterWidget</name> + <message> + <source>Verbose</source> + <translation>Gadatliwy</translation> + </message> + <message> + <source>Show files changed in each revision</source> + <translation>Pokazuj pliki zmienione w każdej poprawce</translation> + </message> +</context> +<context> + <name>GenericHighlighter</name> + <message> + <source>Element name is empty.</source> + <translation>Nazwa elementu jest pusta.</translation> + </message> + <message> + <source>Duplicate element name "%1".</source> + <translation>Powielona nazwa elementu "%1".</translation> + </message> + <message> + <source>Name "%1" not found.</source> + <translation>Brak nazwy "%1".</translation> + </message> + <message> + <source>Generic highlighter error: </source> + <translation>Błąd ogólnego podświetlacza:</translation> + </message> + <message> + <source>Reached empty context.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TextEditor::Internal::TextEditorActionHandler</name> <message> <source>&Undo</source> <translation>&Cofnij</translation> @@ -44433,7 +37093,7 @@ Czy wygenerować plik "bar" dla projektu (%1)?</translation> </message> <message> <source>Move the View a Page Up and Keep the Cursor Position</source> - <translation type="unfinished"></translation> + <translation>Przesuń widok o cały ekran do góry i zachowaj pozycję kursora</translation> </message> <message> <source>Ctrl+PgUp</source> @@ -44441,7 +37101,7 @@ Czy wygenerować plik "bar" dla projektu (%1)?</translation> </message> <message> <source>Move the View a Page Down and Keep the Cursor Position</source> - <translation type="unfinished"></translation> + <translation>Przesuń widok o cały ekran na dół i zachowaj pozycję kursora</translation> </message> <message> <source>Ctrl+PgDown</source> @@ -44449,7 +37109,7 @@ Czy wygenerować plik "bar" dla projektu (%1)?</translation> </message> <message> <source>Move the View a Line Up and Keep the Cursor Position</source> - <translation type="unfinished"></translation> + <translation>Przesuń widok o jedną linię do góry i zachowaj pozycję kursora</translation> </message> <message> <source>Ctrl+Up</source> @@ -44457,7 +37117,7 @@ Czy wygenerować plik "bar" dla projektu (%1)?</translation> </message> <message> <source>Move the View a Line Down and Keep the Cursor Position</source> - <translation type="unfinished"></translation> + <translation>Przesuń widok o jedną linię na dół i zachowaj pozycję kursora</translation> </message> <message> <source>Ctrl+Down</source> @@ -44729,114 +37389,117 @@ Czy wygenerować plik "bar" dla projektu (%1)?</translation> </message> </context> <context> - <name>VcsBase::BaseCheckoutWizardFactory</name> + <name>QObject</name> <message> - <source>Cannot Open Project</source> - <translation>Nie można otworzyć projektu</translation> + <source><Enter regular expression to exclude></source> + <translation type="unfinished"></translation> </message> +</context> +<context> + <name>UpdateInfo::Internal::SettingsPage</name> <message> - <source>Failed to open project in "%1".</source> - <translation>Nie można otworzyć projektu w "%1".</translation> + <source>Daily</source> + <translation>Codziennie</translation> </message> <message> - <source>Could not find any project files matching (%1) in the directory "%2".</source> - <translation>Nie można odnaleźć żadnych plików z projektami, pasujących do (%1) w katalogu "%2".</translation> + <source>Weekly</source> + <translation>Cotygodniowo</translation> </message> <message> - <source>"%1" does not exist.</source> - <translation>"%1" nie istnieje.</translation> + <source>Monthly</source> + <translation>Comiesięcznie</translation> </message> -</context> -<context> - <name>VcsBase::VcsCommand</name> <message> - <source>Unable to start process, binary is empty</source> - <translation>Nie można uruchomić procesu, plik binarny jest pusty</translation> + <source>New updates are available.</source> + <translation>Dostępne są nowe aktualizacje.</translation> </message> <message> - <source>Error: Executable timed out after %1s.</source> - <translation>Błąd: plik wykonywalny nie odpowiada po upływie %1s.</translation> + <source>No new updates are available.</source> + <translation>Brak nowych aktualizacji.</translation> </message> -</context> -<context> - <name>VcsBase::VcsOutputWindow</name> <message> - <source>Open "%1"</source> - <translation>Otwórz "%1"</translation> + <source>Checking for updates...</source> + <translation>Sprawdzanie dostępności aktualizacji...</translation> </message> <message> - <source>Clear</source> - <translation>Wyczyść</translation> + <source>Not checked yet</source> + <translation>Jeszcze nie sprawdzano</translation> </message> +</context> +<context> + <name>VcsBase::VcsBaseClientImpl</name> <message> - <source>Version Control</source> - <translation>System kontroli wersji</translation> + <source>Working...</source> + <translation>Przetwarzanie...</translation> </message> +</context> +<context> + <name>VcsBase::Internal::VcsCommandPage</name> <message> - <source>Executing: %1 %2</source> - <translation>Wykonywanie: %1 %2</translation> + <source>"data" is no JSON object in "VcsCommand" page.</source> + <translation type="unfinished"></translation> </message> <message> - <source>Executing in %1: %2 %3</source> - <translation>Wykonywanie w %1: %2 %3</translation> + <source>"%1" not set in "data" section of "VcsCommand" page.</source> + <translation type="unfinished"></translation> </message> -</context> -<context> - <name>WinRt::Internal::WinRtDebugSupport</name> <message> - <source>The WinRT debugging helper is missing from your Qt Creator installation. It was assumed to be located at %1</source> + <source>"%1" in "data" section of "VcsCommand" page has unexpected type (unset, String or List).</source> <translation type="unfinished"></translation> </message> <message> - <source>Cannot start the WinRT Runner Tool.</source> + <source>"%1" in "data" section of "VcsCommand" page has unexpected type (unset or List).</source> <translation type="unfinished"></translation> </message> <message> - <source>Cannot establish connection to the WinRT debugging helper.</source> + <source>Job in "VcsCommand" page is empty.</source> <translation type="unfinished"></translation> </message> <message> - <source>Cannot extract the PID from the WinRT debugging helper. (output: %1)</source> + <source>Job in "VcsCommand" page is not an object.</source> <translation type="unfinished"></translation> </message> <message> - <source>Cannot create an appropriate run control for the current run configuration.</source> + <source>Job in "VcsCommand" page has no "%1" set.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Checkout</source> + <translation type="unfinished">Kopia robocza</translation> + </message> </context> <context> - <name>WinRt::Internal::WinRtRunnerHelper</name> + <name>VcsBase::VcsCommandPage</name> <message> - <source>The current kit has no Qt version.</source> - <translation>Brak wersji Qt w bieżącym zestawie narzędzi.</translation> + <source>"%1" (%2) not found.</source> + <translation>"%1" brak (%2).</translation> </message> <message> - <source>Cannot find winrtrunner.exe in "%1".</source> - <translation>Brak winrtrunner.exe w "%1".</translation> + <source>Version control "%1" is not configured.</source> + <translation>System kontroli wersji "%1" nie jest skonfigurowany.</translation> </message> <message> - <source>Cannot determine the executable file path for "%1".</source> - <translation>Nie można określić ścieżki do pliku wykonywalnego dla "%1".</translation> + <source>Version control "%1" does not support initial checkouts.</source> + <translation type="unfinished"></translation> </message> <message> - <source>Error while executing the WinRT Runner Tool: %1 -</source> + <source>"%1" is empty when trying to run checkout.</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>Help::Internal::IndexWindow</name> <message> - <source>&Look for:</source> - <translation>Wy&szukaj:</translation> + <source>"%1" (%2) does not exist.</source> + <translation>"%1" (%2) nie istnieje.</translation> </message> +</context> +<context> + <name>QmlEngine</name> <message> - <source>Open Link</source> - <translation>Otwórz odsyłacz</translation> + <source>JS Source for %1</source> + <translation>Źródło JS dla %1</translation> </message> <message> - <source>Open Link as New Page</source> - <translation>Otwórz odsyłacz na nowej stronie</translation> + <source>Anonymous Function</source> + <translation>Anonimowa funkcja</translation> </message> </context> </TS> diff --git a/share/share.qbs b/share/share.qbs index 6187623281..eea8a00aed 100644 --- a/share/share.qbs +++ b/share/share.qbs @@ -10,6 +10,7 @@ Product { qbs.installSourceBase: "qtcreator" prefix: "qtcreator/" files: [ + "cplusplus/**/*", "debugger/**/*", "designer/**/*", "generic-highlighter/**/*", diff --git a/src/libs/3rdparty/cplusplus/Scope.cpp b/src/libs/3rdparty/cplusplus/Scope.cpp index 107df10dff..783eff77ae 100644 --- a/src/libs/3rdparty/cplusplus/Scope.cpp +++ b/src/libs/3rdparty/cplusplus/Scope.cpp @@ -117,6 +117,7 @@ void SymbolTable::enterSymbol(Symbol *symbol) _allocatedSymbols = DefaultInitialSize; _symbols = reinterpret_cast<Symbol **>(realloc(_symbols, sizeof(Symbol *) * _allocatedSymbols)); + memset(_symbols + _symbolCount, 0, sizeof(Symbol *) * (_allocatedSymbols - _symbolCount)); } symbol->_index = _symbolCount; @@ -214,7 +215,7 @@ unsigned SymbolTable::symbolCount() const Symbol *SymbolTable::symbolAt(unsigned index) const { - if (! _symbols) + if (! _symbols || index >= symbolCount()) return 0; return _symbols[index]; } diff --git a/src/libs/clangbackendipc/clangbackendipc-lib.pri b/src/libs/clangbackendipc/clangbackendipc-lib.pri index 50c5974d4e..8dda2d1f59 100644 --- a/src/libs/clangbackendipc/clangbackendipc-lib.pri +++ b/src/libs/clangbackendipc/clangbackendipc-lib.pri @@ -36,7 +36,8 @@ SOURCES += $$PWD/ipcserverinterface.cpp \ $$PWD/codecompletionchunk.cpp \ $$PWD/projectpartcontainer.cpp \ $$PWD/projectpartsdonotexistcommand.cpp \ - $$PWD/lineprefixer.cpp + $$PWD/lineprefixer.cpp \ + $$PWD/clangbackendipcdebugutils.cpp HEADERS += \ $$PWD/ipcserverinterface.h \ @@ -67,6 +68,7 @@ HEADERS += \ $$PWD/projectpartsdonotexistcommand.h \ $$PWD/container_common.h \ $$PWD/clangbackendipc_global.h \ - $$PWD/lineprefixer.h + $$PWD/lineprefixer.h \ + $$PWD/clangbackendipcdebugutils.h contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols diff --git a/src/libs/clangbackendipc/clangbackendipcdebugutils.cpp b/src/libs/clangbackendipc/clangbackendipcdebugutils.cpp new file mode 100644 index 0000000000..09bd066d18 --- /dev/null +++ b/src/libs/clangbackendipc/clangbackendipcdebugutils.cpp @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "clangbackendipcdebugutils.h" + +#include "filecontainer.h" + +#include <utf8string.h> + +#include <QDir> +#include <QLoggingCategory> +#include <QString> +#include <QTemporaryDir> +#include <QTemporaryFile> + +namespace { + +Q_LOGGING_CATEGORY(timersLog, "qtc.clangbackend.timers"); + +class DebugInspectionDir : public QTemporaryDir +{ +public: + DebugInspectionDir() + : QTemporaryDir(QDir::tempPath() + QLatin1String("/qtc-clangbackendipc-XXXXXX")) + { + setAutoRemove(false); // Keep around for later inspection. + } +}; + +class DebugInspectionFile : public QTemporaryFile +{ +public: + DebugInspectionFile(const QString &directoryPath, + const Utf8String &id, + const Utf8String &fileContent) + : QTemporaryFile(directoryPath + QString::fromUtf8("/%1-XXXXXX").arg(id.toString())) + { + setAutoRemove(false); // Keep around for later inspection. + m_isValid = open() && write(fileContent.constData(), fileContent.byteSize()); + } + + bool isValid() const + { + return m_isValid; + } + +private: + bool m_isValid = false; +}; + +} + +namespace ClangBackEnd { + +Utf8String debugWriteFileForInspection(const Utf8String &fileContent, const Utf8String &id) +{ + static DebugInspectionDir debugInspectionDir; + if (!debugInspectionDir.isValid()) + return Utf8String(); + + DebugInspectionFile file(debugInspectionDir.path(), id, fileContent); + if (file.isValid()) + return Utf8String::fromString(file.fileName()); + return Utf8String(); +} + +Utf8String debugId(const FileContainer &fileContainer) +{ + const Utf8String filePath = fileContainer.filePath(); + Utf8String id(Utf8StringLiteral("unsavedfilecontent-")); + id.append(QFileInfo(filePath).fileName()); + return id; +} + +VerboseScopeDurationTimer::VerboseScopeDurationTimer(const char *id) + : id(id) +{ + if (timersLog().isDebugEnabled()) + timer.start(); +} + +VerboseScopeDurationTimer::~VerboseScopeDurationTimer() +{ + qCDebug(timersLog) << id << "needed" << timer.elapsed() << "ms"; +} + +} // namespace ClangBackEnd diff --git a/src/plugins/projectexplorer/devicesupport/devicetypekitchooser.h b/src/libs/clangbackendipc/clangbackendipcdebugutils.h index 98a45f9cb8..a086ae5c12 100644 --- a/src/plugins/projectexplorer/devicesupport/devicetypekitchooser.h +++ b/src/libs/clangbackendipc/clangbackendipcdebugutils.h @@ -1,7 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company -** Contact: info@kdab.com +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing ** ** This file is part of Qt Creator. ** @@ -28,29 +28,34 @@ ** ****************************************************************************/ -#ifndef PROJECTEXPLORER_DEVICETYPEKITCHOOSER_H -#define PROJECTEXPLORER_DEVICETYPEKITCHOOSER_H +#ifndef CLANGBACKENDIPCDEBUGUTILS_H +#define CLANGBACKENDIPCDEBUGUTILS_H -#include "../kitchooser.h" -#include "../projectexplorer_export.h" +#include "clangbackendipc_global.h" -#include <coreplugin/id.h> +#include <QElapsedTimer> -namespace ProjectExplorer { +class FileContainer; +class Utf8String; -class PROJECTEXPLORER_EXPORT DeviceTypeKitChooser : public KitChooser +namespace ClangBackEnd { + +Utf8String debugWriteFileForInspection(const Utf8String &fileContent, const Utf8String &id); +Utf8String debugId(const FileContainer &fileContainer); + +class CMBIPC_EXPORT VerboseScopeDurationTimer { - Q_OBJECT public: - explicit DeviceTypeKitChooser(Core::Id deviceType, QWidget *parent = 0); - -protected: - bool kitMatches(const Kit *k) const; + VerboseScopeDurationTimer(const char *id = 0); + ~VerboseScopeDurationTimer(); private: - Core::Id m_deviceType; + const char * const id; + QElapsedTimer timer; }; -} // namespace ProjectExplorer +} // namespace ClangBackEnd + +#define TIME_SCOPE_DURATION(id) ClangBackEnd::VerboseScopeDurationTimer scopeDurationTimer(id) -#endif // PROJECTEXPLORER_DEVICETYPEKITCHOOSER_H +#endif // CLANGBACKENDIPCDEBUGUTILS_H diff --git a/src/libs/clangbackendipc/cmbcodecompletedcommand.cpp b/src/libs/clangbackendipc/cmbcodecompletedcommand.cpp index af4fe57e61..c378e88ba2 100644 --- a/src/libs/clangbackendipc/cmbcodecompletedcommand.cpp +++ b/src/libs/clangbackendipc/cmbcodecompletedcommand.cpp @@ -37,13 +37,13 @@ namespace ClangBackEnd { -CodeCompletedCommand::CodeCompletedCommand(const QVector<CodeCompletion> &codeCompletions, quint64 ticketNumber) +CodeCompletedCommand::CodeCompletedCommand(const CodeCompletions &codeCompletions, quint64 ticketNumber) : codeCompletions_(codeCompletions), ticketNumber_(ticketNumber) { } -const QVector<CodeCompletion> &CodeCompletedCommand::codeCompletions() const +const CodeCompletions &CodeCompletedCommand::codeCompletions() const { return codeCompletions_; } diff --git a/src/libs/clangbackendipc/cmbcodecompletedcommand.h b/src/libs/clangbackendipc/cmbcodecompletedcommand.h index 0550b14af0..f4e8abf2e3 100644 --- a/src/libs/clangbackendipc/cmbcodecompletedcommand.h +++ b/src/libs/clangbackendipc/cmbcodecompletedcommand.h @@ -48,14 +48,14 @@ class CMBIPC_EXPORT CodeCompletedCommand friend void PrintTo(const CodeCompletedCommand &command, ::std::ostream* os); public: CodeCompletedCommand() = default; - CodeCompletedCommand(const QVector<CodeCompletion> &codeCompletions, quint64 ticketNumber); + CodeCompletedCommand(const CodeCompletions &codeCompletions, quint64 ticketNumber); - const QVector<CodeCompletion> &codeCompletions() const; + const CodeCompletions &codeCompletions() const; quint64 ticketNumber() const; private: - QVector<CodeCompletion> codeCompletions_; + CodeCompletions codeCompletions_; quint64 ticketNumber_ = 0; }; diff --git a/src/libs/clangbackendipc/codecompletion.cpp b/src/libs/clangbackendipc/codecompletion.cpp index e9c5ad569f..3a04192d23 100644 --- a/src/libs/clangbackendipc/codecompletion.cpp +++ b/src/libs/clangbackendipc/codecompletion.cpp @@ -70,12 +70,12 @@ CodeCompletion::Kind CodeCompletion::completionKind() const return completionKind_; } -void CodeCompletion::setChunks(const QVector<CodeCompletionChunk> &chunks) +void CodeCompletion::setChunks(const CodeCompletionChunks &chunks) { chunks_ = chunks; } -const QVector<CodeCompletionChunk> &CodeCompletion::chunks() const +const CodeCompletionChunks &CodeCompletion::chunks() const { return chunks_; } diff --git a/src/libs/clangbackendipc/codecompletion.h b/src/libs/clangbackendipc/codecompletion.h index 5c7064b5e5..7bc1e59332 100644 --- a/src/libs/clangbackendipc/codecompletion.h +++ b/src/libs/clangbackendipc/codecompletion.h @@ -37,9 +37,13 @@ #include <utf8string.h> #include <QMetaType> +#include <QVector> namespace ClangBackEnd { +class CodeCompletion; +using CodeCompletions = QVector<CodeCompletion>; + class CMBIPC_EXPORT CodeCompletion { friend CMBIPC_EXPORT QDataStream &operator<<(QDataStream &out, const CodeCompletion &command); @@ -91,8 +95,8 @@ public: void setCompletionKind(Kind completionKind); Kind completionKind() const; - void setChunks(const QVector<CodeCompletionChunk> &chunks); - const QVector<CodeCompletionChunk> &chunks() const; + void setChunks(const CodeCompletionChunks &chunks); + const CodeCompletionChunks &chunks() const; void setAvailability(Availability availability); Availability availability() const; @@ -109,7 +113,7 @@ private: private: Utf8String text_; - QVector<CodeCompletionChunk> chunks_; + CodeCompletionChunks chunks_; quint32 priority_ = 0; Kind completionKind_ = Other; Availability availability_ = NotAvailable; diff --git a/src/libs/clangbackendipc/codecompletionchunk.cpp b/src/libs/clangbackendipc/codecompletionchunk.cpp index d6affedfa4..5586953490 100644 --- a/src/libs/clangbackendipc/codecompletionchunk.cpp +++ b/src/libs/clangbackendipc/codecompletionchunk.cpp @@ -44,7 +44,7 @@ CodeCompletionChunk::CodeCompletionChunk() CodeCompletionChunk::CodeCompletionChunk(CodeCompletionChunk::Kind kind, const Utf8String &text, - const QVector<CodeCompletionChunk> &optionalChunks) + const CodeCompletionChunks &optionalChunks) : text_(text), optionalChunks_(optionalChunks), kind_(kind) @@ -61,7 +61,7 @@ const Utf8String &CodeCompletionChunk::text() const return text_; } -const QVector<CodeCompletionChunk> &CodeCompletionChunk::optionalChunks() const +const CodeCompletionChunks &CodeCompletionChunk::optionalChunks() const { return optionalChunks_; } diff --git a/src/libs/clangbackendipc/codecompletionchunk.h b/src/libs/clangbackendipc/codecompletionchunk.h index fd25880d92..72df089f28 100644 --- a/src/libs/clangbackendipc/codecompletionchunk.h +++ b/src/libs/clangbackendipc/codecompletionchunk.h @@ -39,6 +39,9 @@ namespace ClangBackEnd { +class CodeCompletionChunk; +using CodeCompletionChunks = QVector<CodeCompletionChunk>; + class CMBIPC_EXPORT CodeCompletionChunk { friend CMBIPC_EXPORT QDataStream &operator<<(QDataStream &out, const CodeCompletionChunk &chunk); @@ -73,18 +76,18 @@ public: CodeCompletionChunk(); CodeCompletionChunk(Kind kind, const Utf8String &text, - const QVector<CodeCompletionChunk> &optionalChunks = QVector<CodeCompletionChunk>()); + const CodeCompletionChunks &optionalChunks = CodeCompletionChunks()); Kind kind() const; const Utf8String &text() const; - const QVector<CodeCompletionChunk> &optionalChunks() const; + const CodeCompletionChunks &optionalChunks() const; private: quint32 &kindAsInt(); private: Utf8String text_; - QVector<CodeCompletionChunk> optionalChunks_; + CodeCompletionChunks optionalChunks_; Kind kind_ = Invalid; }; diff --git a/src/libs/clangbackendipc/connectionclient.cpp b/src/libs/clangbackendipc/connectionclient.cpp index 83b01fc4a2..f13e889f8f 100644 --- a/src/libs/clangbackendipc/connectionclient.cpp +++ b/src/libs/clangbackendipc/connectionclient.cpp @@ -30,6 +30,7 @@ #include "connectionclient.h" +#include "clangbackendipcdebugutils.h" #include "cmbcompletecodecommand.h" #include "cmbregistertranslationunitsforcodecompletioncommand.h" #include "cmbunregistertranslationunitsforcodecompletioncommand.h" @@ -55,8 +56,8 @@ QString connectionName() ConnectionClient::ConnectionClient(IpcClientInterface *client) : serverProxy_(client, &localSocket), isAliveTimerResetted(false), - stdErrPrefixer("ClangBackEnd-StdErr: "), - stdOutPrefixer("ClangBackEnd: ") + stdErrPrefixer("clangbackend.stderr: "), + stdOutPrefixer("clangbackend.stdout: ") { processAliveTimer.setInterval(10000); @@ -76,6 +77,8 @@ ConnectionClient::~ConnectionClient() bool ConnectionClient::connectToServer() { + TIME_SCOPE_DURATION("ConnectionClient::connectToServer"); + startProcess(); resetProcessAliveTimer(); const bool isConnected = connectToLocalSocket(); @@ -123,6 +126,8 @@ void ConnectionClient::setProcessAliveTimerInterval(int processTimerInterval) void ConnectionClient::startProcess() { + TIME_SCOPE_DURATION("ConnectionClient::startProcess"); + if (!isProcessIsRunning()) { connectProcessFinished(); connectStandardOutputAndError(); @@ -216,6 +221,8 @@ void ConnectionClient::printStandardError() void ConnectionClient::finishProcess() { + TIME_SCOPE_DURATION("ConnectionClient::finishProcess"); + processAliveTimer.stop(); disconnectProcessFinished(); diff --git a/src/libs/clangbackendipc/filecontainer.cpp b/src/libs/clangbackendipc/filecontainer.cpp index 65f81a1ea0..a158a6721e 100644 --- a/src/libs/clangbackendipc/filecontainer.cpp +++ b/src/libs/clangbackendipc/filecontainer.cpp @@ -30,6 +30,8 @@ #include "filecontainer.h" +#include "clangbackendipcdebugutils.h" + #include <QDataStream> #include <QDebug> @@ -108,9 +110,13 @@ QDebug operator<<(QDebug debug, const FileContainer &container) << ", " << container.projectPartId(); - if (container.hasUnsavedFileContent()) + if (container.hasUnsavedFileContent()) { + const Utf8String fileWithContent = debugWriteFileForInspection( + container.unsavedFileContent(), + debugId(container)); debug.nospace() << ", " - << container.unsavedFileContent(); + << "<" << fileWithContent << ">"; + } debug.nospace() << ")"; diff --git a/src/libs/clangbackendipc/projectpartcontainer.cpp b/src/libs/clangbackendipc/projectpartcontainer.cpp index 50b4bcc6a4..85bb60a8e2 100644 --- a/src/libs/clangbackendipc/projectpartcontainer.cpp +++ b/src/libs/clangbackendipc/projectpartcontainer.cpp @@ -30,9 +30,10 @@ #include "projectpartcontainer.h" -#include <QDebug> +#include "clangbackendipcdebugutils.h" #include <QDataStream> +#include <QDebug> #include <ostream> @@ -91,10 +92,15 @@ static Utf8String quotedArguments(const Utf8StringVector &arguments) QDebug operator<<(QDebug debug, const ProjectPartContainer &container) { + const Utf8String arguments = quotedArguments(container.arguments()); + const Utf8String fileWithArguments = debugWriteFileForInspection( + arguments, + Utf8StringLiteral("projectpartargs-")); + debug.nospace() << "ProjectPartContainer(" << container.projectPartId() << "," - << quotedArguments(container.arguments()) + << "<" << fileWithArguments << ">" << ")"; return debug; diff --git a/src/libs/cplusplus/ASTPath.cpp b/src/libs/cplusplus/ASTPath.cpp index a38c5eadc1..9a4ef293a7 100644 --- a/src/libs/cplusplus/ASTPath.cpp +++ b/src/libs/cplusplus/ASTPath.cpp @@ -65,8 +65,8 @@ void ASTPath::dump(const QList<AST *> nodes) bool ASTPath::preVisit(AST *ast) { - unsigned firstToken = ast->firstToken(); - unsigned lastToken = ast->lastToken(); + const unsigned firstToken = firstNonGeneratedToken(ast); + const unsigned lastToken = lastNonGeneratedToken(ast); if (firstToken > 0) { if (lastToken <= firstToken) @@ -89,3 +89,24 @@ bool ASTPath::preVisit(AST *ast) return false; } + +unsigned ASTPath::firstNonGeneratedToken(AST *ast) const +{ + const unsigned lastTokenIndex = ast->lastToken(); + unsigned tokenIndex = ast->firstToken(); + while (tokenIndex <= lastTokenIndex && tokenAt(tokenIndex).generated()) + ++tokenIndex; + return tokenIndex; +} + +unsigned ASTPath::lastNonGeneratedToken(AST *ast) const +{ + const unsigned firstTokenIndex = ast->firstToken(); + const unsigned lastTokenIndex = ast->lastToken(); + unsigned tokenIndex = lastTokenIndex; + while (firstTokenIndex <= tokenIndex && tokenAt(tokenIndex).generated()) + --tokenIndex; + return tokenIndex != lastTokenIndex + ? tokenIndex + 1 + : tokenIndex; +} diff --git a/src/libs/cplusplus/ASTPath.h b/src/libs/cplusplus/ASTPath.h index 8a3eb43a5e..49bc6a8d7a 100644 --- a/src/libs/cplusplus/ASTPath.h +++ b/src/libs/cplusplus/ASTPath.h @@ -62,7 +62,11 @@ public: #endif protected: - virtual bool preVisit(AST *ast); + bool preVisit(AST *ast) override; + +private: + unsigned firstNonGeneratedToken(AST *ast) const; + unsigned lastNonGeneratedToken(AST *ast) const; private: Document::Ptr _doc; diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index f9660ac26b..a034e169db 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -41,6 +41,7 @@ #include <cplusplus/Names.h> #include <cplusplus/Scope.h> #include <cplusplus/Control.h> +#include <cplusplus/cppassert.h> #include <QStack> #include <QHash> @@ -1255,12 +1256,14 @@ LookupScopePrivate *LookupScopePrivate::nestedType(const Name *name, LookupScope if (baseTemplate) break; } - if (LookupScopePrivate *specialization = - findSpecialization(baseTemplate, templId, specializations, origin)) { - reference = specialization; - if (Q_UNLIKELY(debug)) { - Overview oo; - qDebug() << "picked specialization" << oo(specialization->_name); + if (baseTemplate) { + if (LookupScopePrivate *specialization = + findSpecialization(baseTemplate, templId, specializations, origin)) { + reference = specialization; + if (Q_UNLIKELY(debug)) { + Overview oo; + qDebug() << "picked specialization" << oo(specialization->_name); + } } } } @@ -1970,9 +1973,11 @@ FullySpecifiedType CreateBindings::resolveTemplateArgument(Clone &cloner, unsigned index) { FullySpecifiedType ty; + CPP_ASSERT(specialization && instantiation, return ty); - const TypenameArgument *tParam - = specialization->templateParameterAt(index)->asTypenameArgument(); + const TypenameArgument *tParam = 0; + if (Symbol *tArgument = specialization->templateParameterAt(index)) + tParam = tArgument->asTypenameArgument(); if (!tParam) return ty; diff --git a/src/libs/sqlite/utf8string.h b/src/libs/sqlite/utf8string.h index 4a7c8512cc..70531db218 100644 --- a/src/libs/sqlite/utf8string.h +++ b/src/libs/sqlite/utf8string.h @@ -115,27 +115,7 @@ SQLITE_EXPORT QDataStream &operator>>(QDataStream &datastream, Utf8String &text) SQLITE_EXPORT QDebug operator<<(QDebug debug, const Utf8String &text); SQLITE_EXPORT void PrintTo(const Utf8String &text, ::std::ostream* os); -#if defined(Q_COMPILER_LAMBDA) - -# define Utf8StringLiteral(str) \ - ([]() -> Utf8String { \ - enum { Size = sizeof(str) - 1 }; \ - static const QStaticByteArrayData<Size> qbytearray_literal = { \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER(Size), \ - str }; \ - QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; \ - const QByteArray byteArray(holder); \ - return Utf8String::fromByteArray(byteArray); \ - }()) \ - /**/ - -#endif - -#ifndef Utf8StringLiteral -// no lambdas, not GCC, just return a temporary QByteArray - -# define Utf8StringLiteral(str) Utf8String(str, sizeof(str) - 1) -#endif +#define Utf8StringLiteral(str) Utf8String::fromByteArray(QByteArrayLiteral(str)) Q_DECLARE_METATYPE(Utf8String) diff --git a/src/plugins/analyzerbase/startremotedialog.cpp b/src/plugins/analyzerbase/startremotedialog.cpp index e971e6a7ee..6f18fa8d0f 100644 --- a/src/plugins/analyzerbase/startremotedialog.cpp +++ b/src/plugins/analyzerbase/startremotedialog.cpp @@ -46,24 +46,10 @@ using namespace Utils; namespace Analyzer { namespace Internal { -class SshKitChooser : public KitChooser -{ -public: - SshKitChooser(QWidget *parent = 0) : KitChooser(parent) { } - -private: - bool kitMatches(const Kit *kit) const { - if (!KitChooser::kitMatches(kit)) - return false; - const IDevice::ConstPtr device = DeviceKitInformation::device(kit); - return device && !device->sshParameters().host.isEmpty(); - } -}; - class StartRemoteDialogPrivate { public: - SshKitChooser *kitChooser; + KitChooser *kitChooser; QLineEdit *executable; QLineEdit *arguments; QLineEdit *workingDirectory; @@ -79,7 +65,11 @@ StartRemoteDialog::StartRemoteDialog(QWidget *parent) setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); setWindowTitle(tr("Start Remote Analysis")); - d->kitChooser = new Internal::SshKitChooser(this); + d->kitChooser = new KitChooser(this); + d->kitChooser->setKitMatcher([](const Kit *kit) { + const IDevice::ConstPtr device = DeviceKitInformation::device(kit); + return kit->isValid() && device && !device->sshParameters().host.isEmpty(); + }); d->executable = new QLineEdit(this); d->arguments = new QLineEdit(this); d->workingDirectory = new QLineEdit(this); diff --git a/src/plugins/android/androiddevicedialog.cpp b/src/plugins/android/androiddevicedialog.cpp index 45bdecdc90..ca0ac7e27a 100644 --- a/src/plugins/android/androiddevicedialog.cpp +++ b/src/plugins/android/androiddevicedialog.cpp @@ -109,6 +109,7 @@ private: class AndroidDeviceModelDelegate : public QStyledItemDelegate { + Q_OBJECT public: AndroidDeviceModelDelegate(QObject * parent = 0) : QStyledItemDelegate(parent) @@ -239,6 +240,7 @@ public: class AndroidDeviceModel : public QAbstractItemModel { + Q_OBJECT public: AndroidDeviceModel(int apiLevel, const QString &abi, AndroidConfigurations::Options options); QModelIndex index(int row, int column, @@ -663,3 +665,5 @@ void AndroidDeviceDialog::defaultDeviceClear() m_ui->lookingForDeviceCancel->setVisible(false); m_defaultDevice.clear(); } + +#include "androiddevicedialog.moc" diff --git a/src/plugins/android/androidqtsupport.cpp b/src/plugins/android/androidqtsupport.cpp index 8527ca8b6b..2f4c2dafe5 100644 --- a/src/plugins/android/androidqtsupport.cpp +++ b/src/plugins/android/androidqtsupport.cpp @@ -48,9 +48,9 @@ Utils::FileName Android::AndroidQtSupport::apkPath(ProjectExplorer::Target *targ QString apkPath; if (buildApkStep->useGradle()) - apkPath = QLatin1String("/build/outputs/apk/android-build-"); + apkPath = QLatin1String("build/outputs/apk/android-build-"); else - apkPath = QLatin1String("/bin/QtApp-"); + apkPath = QLatin1String("bin/QtApp-"); if (buildApkStep->signPackage()) apkPath += QLatin1String("release.apk"); else diff --git a/src/plugins/clangcodemodel/activationsequencecontextprocessor.cpp b/src/plugins/clangcodemodel/activationsequencecontextprocessor.cpp new file mode 100644 index 0000000000..1b03f0e5b7 --- /dev/null +++ b/src/plugins/clangcodemodel/activationsequencecontextprocessor.cpp @@ -0,0 +1,272 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "activationsequencecontextprocessor.h" + +#include "activationsequenceprocessor.h" + +#include <cplusplus/BackwardsScanner.h> +#include <cplusplus/ExpressionUnderCursor.h> +#include <cplusplus/SimpleLexer.h> + +#include <QRegExp> +#include <QTextDocument> + +namespace ClangCodeModel { +namespace Internal { + +ActivationSequenceContextProcessor::ActivationSequenceContextProcessor(const ClangCompletionAssistInterface *assistInterface) + : m_textCursor(assistInterface->textDocument()), + m_assistInterface(assistInterface), + m_positionInDocument(assistInterface->position()), + m_startOfNamePosition(m_positionInDocument), + m_operatorStartPosition(m_positionInDocument) + +{ + m_textCursor.setPosition(m_positionInDocument); + + process(); +} + +CPlusPlus::Kind ActivationSequenceContextProcessor::completionKind() const +{ + return m_completionKind; +} + +const QTextCursor &ActivationSequenceContextProcessor::textCursor_forTestOnly() const +{ + return m_textCursor; +} + +int ActivationSequenceContextProcessor::startOfNamePosition() const +{ + return m_startOfNamePosition; +} + +int ActivationSequenceContextProcessor::operatorStartPosition() const +{ + return m_operatorStartPosition; +} + +void ActivationSequenceContextProcessor::process() +{ + goBackToStartOfName(); + processActivationSequence(); + + if (m_completionKind != CPlusPlus::T_EOF_SYMBOL) { + processStringLiteral(); + processComma(); + generateTokens(); + processDoxygenComment(); + processComment(); + processInclude(); + processSlashOutsideOfAString(); + processLeftParen(); + processPreprocessorInclude(); + } + + resetPositionsForEOFCompletionKind(); +} + +void ActivationSequenceContextProcessor::processActivationSequence() +{ + const int nonSpacePosition = skipPrecedingWhitespace(m_assistInterface, m_startOfNamePosition); + const auto activationSequence = m_assistInterface->textAt(nonSpacePosition - 3, 3); + ActivationSequenceProcessor activationSequenceProcessor(activationSequence, + nonSpacePosition, + true); + + m_completionKind = activationSequenceProcessor.completionKind(); + m_operatorStartPosition = activationSequenceProcessor.operatorStartPosition(); +} + +void ActivationSequenceContextProcessor::processStringLiteral() +{ + if (m_completionKind == CPlusPlus::T_STRING_LITERAL) { + QTextCursor selectionTextCursor = m_textCursor; + selectionTextCursor.movePosition(QTextCursor::StartOfLine, QTextCursor::KeepAnchor); + QString selection = selectionTextCursor.selectedText(); + if (selection.indexOf(QLatin1Char('"')) < selection.length() - 1) + m_completionKind = CPlusPlus::T_EOF_SYMBOL; + } +} + +void ActivationSequenceContextProcessor::processComma() +{ + if (m_completionKind == CPlusPlus::T_COMMA) { + CPlusPlus::ExpressionUnderCursor expressionUnderCursor(m_assistInterface->languageFeatures()); + if (expressionUnderCursor.startOfFunctionCall(m_textCursor) == -1) + m_completionKind = CPlusPlus::T_EOF_SYMBOL; + } +} + +void ActivationSequenceContextProcessor::generateTokens() +{ + CPlusPlus::SimpleLexer tokenize; + tokenize.setLanguageFeatures(m_assistInterface->languageFeatures()); + tokenize.setSkipComments(false); + auto state = CPlusPlus::BackwardsScanner::previousBlockState(m_textCursor.block()); + m_tokens = tokenize(m_textCursor.block().text(), state); + int leftOfCursorTokenIndex = std::max(0, m_textCursor.positionInBlock() - 1); + m_tokenIndex= CPlusPlus::SimpleLexer::tokenBefore(m_tokens, leftOfCursorTokenIndex); // get the token at the left of the cursor + if (m_tokenIndex > -1) + m_token = m_tokens.at(m_tokenIndex); +} + +void ActivationSequenceContextProcessor::processDoxygenComment() +{ + if (m_completionKind == CPlusPlus::T_DOXY_COMMENT + && !(m_token.is(CPlusPlus::T_DOXY_COMMENT) + || m_token.is(CPlusPlus::T_CPP_DOXY_COMMENT))) + m_completionKind = CPlusPlus::T_EOF_SYMBOL; +} + +void ActivationSequenceContextProcessor::processComment() +{ + if (m_token.is(CPlusPlus::T_COMMENT) || m_token.is(CPlusPlus::T_CPP_COMMENT)) + m_completionKind = CPlusPlus::T_EOF_SYMBOL; +} + +void ActivationSequenceContextProcessor::processInclude() +{ + if (m_token.isLiteral() && !isCompletionKindStringLiteralOrSlash()) + m_completionKind = CPlusPlus::T_EOF_SYMBOL; +} + +void ActivationSequenceContextProcessor::processSlashOutsideOfAString() +{ + if (m_completionKind ==CPlusPlus::T_SLASH + && (m_token.isNot(CPlusPlus::T_STRING_LITERAL) + && m_token.isNot(CPlusPlus::T_ANGLE_STRING_LITERAL))) + m_completionKind = CPlusPlus::T_EOF_SYMBOL; +} + +void ActivationSequenceContextProcessor::processLeftParen() +{ + if (m_completionKind == CPlusPlus::T_LPAREN) { + if (m_tokenIndex > 0) { + // look at the token at the left of T_LPAREN + const CPlusPlus::Token &previousToken = m_tokens.at(m_tokenIndex - 1); + switch (previousToken.kind()) { + case CPlusPlus::T_IDENTIFIER: + case CPlusPlus::T_GREATER: + case CPlusPlus::T_SIGNAL: + case CPlusPlus::T_SLOT: + break; // good + + default: + // that's a bad token :) + m_completionKind = CPlusPlus::T_EOF_SYMBOL; + } + } + } +} + +bool ActivationSequenceContextProcessor::isCompletionKindStringLiteralOrSlash() const +{ + return m_completionKind == CPlusPlus::T_STRING_LITERAL + || m_completionKind == CPlusPlus::T_ANGLE_STRING_LITERAL + || m_completionKind == CPlusPlus::T_SLASH; +} + +bool ActivationSequenceContextProcessor::isProbablyPreprocessorIncludeDirective() const +{ + return m_tokens.size() >= 3 + && m_tokens.at(0).is(CPlusPlus::T_POUND) + && m_tokens.at(1).is(CPlusPlus::T_IDENTIFIER) + && (m_tokens.at(2).is(CPlusPlus::T_STRING_LITERAL) + || m_tokens.at(2).is(CPlusPlus::T_ANGLE_STRING_LITERAL)); +} + +void ActivationSequenceContextProcessor::processPreprocessorInclude() +{ + if (isCompletionKindStringLiteralOrSlash()) { + if (isProbablyPreprocessorIncludeDirective()) { + const CPlusPlus::Token &directiveToken = m_tokens.at(1); + QString directive = m_textCursor.block().text().mid(directiveToken.bytesBegin(), + directiveToken.bytes()); + if (directive != QStringLiteral("include") + && directive != QStringLiteral("include_next") + && directive != QStringLiteral("import")) + m_completionKind = CPlusPlus::T_EOF_SYMBOL; + } else { + m_completionKind = CPlusPlus::T_EOF_SYMBOL; + } + } +} + +void ActivationSequenceContextProcessor::resetPositionsForEOFCompletionKind() +{ + if (m_completionKind == CPlusPlus::T_EOF_SYMBOL) + m_operatorStartPosition = m_positionInDocument; +} + +int ActivationSequenceContextProcessor::skipPrecedingWhitespace( + const TextEditor::AssistInterface *assistInterface, + int startPosition) +{ + int position = startPosition; + while (assistInterface->characterAt(position - 1).isSpace()) + --position; + return position; +} + +static bool isValidIdentifierChar(const QChar &character) +{ + return character.isLetterOrNumber() + || character == QLatin1Char('_') + || character.isHighSurrogate() + || character.isLowSurrogate(); +} + +int ActivationSequenceContextProcessor::findStartOfName( + const TextEditor::AssistInterface *assistInterface, + int startPosition) +{ + int position = startPosition; + QChar character; + do { + character = assistInterface->characterAt(--position); + } while (isValidIdentifierChar(character)); + + return position + 1; +} + +void ActivationSequenceContextProcessor::goBackToStartOfName() +{ + m_startOfNamePosition = findStartOfName(m_assistInterface, m_positionInDocument); + + if (m_startOfNamePosition != m_positionInDocument) + m_textCursor.setPosition(m_startOfNamePosition); +} + +} // namespace Internal +} // namespace ClangCodeModel + diff --git a/src/plugins/clangcodemodel/activationsequencecontextprocessor.h b/src/plugins/clangcodemodel/activationsequencecontextprocessor.h new file mode 100644 index 0000000000..f63bfa2c5a --- /dev/null +++ b/src/plugins/clangcodemodel/activationsequencecontextprocessor.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef CLANGCODEMODEL_INTERNAL_ACTIVATIONSEQUENCECONTEXTPROCESSOR_H +#define CLANGCODEMODEL_INTERNAL_ACTIVATIONSEQUENCECONTEXTPROCESSOR_H + +#include <clangcodemodel/clangcompletionassistinterface.h> + +#include <cplusplus/Token.h> + +#include <QTextCursor> + +QT_BEGIN_NAMESPACE +class QTextDocument; +QT_END_NAMESPACE + +namespace ClangCodeModel { +namespace Internal { + +class ActivationSequenceContextProcessor +{ +public: + ActivationSequenceContextProcessor(const ClangCompletionAssistInterface *assistInterface); + + CPlusPlus::Kind completionKind() const; + int startOfNamePosition() const; // e.g. points to 'b' in "foo.bar<CURSOR>" + int operatorStartPosition() const; // e.g. points to '.' for "foo.bar<CURSOR>" + + const QTextCursor &textCursor_forTestOnly() const; + + static int findStartOfName(const TextEditor::AssistInterface *assistInterface, + int startPosition); + static int skipPrecedingWhitespace(const TextEditor::AssistInterface *assistInterface, + int startPosition); + +protected: + void process(); + void goBackToStartOfName(); + void processActivationSequence(); + void processStringLiteral(); + void processComma(); + void generateTokens(); + void processDoxygenComment(); + void processComment(); + void processInclude(); + void processSlashOutsideOfAString(); + void processLeftParen(); + void processPreprocessorInclude(); + void resetPositionsForEOFCompletionKind(); + + bool isCompletionKindStringLiteralOrSlash() const; + bool isProbablyPreprocessorIncludeDirective() const; + +private: + QVector<CPlusPlus::Token> m_tokens; + QTextCursor m_textCursor; + CPlusPlus::Token m_token; + const ClangCompletionAssistInterface *m_assistInterface; + int m_tokenIndex; + const int m_positionInDocument; + int m_startOfNamePosition; + int m_operatorStartPosition; + CPlusPlus::Kind m_completionKind; +}; + +} // namespace Internal +} // namespace ClangCodeModel + +#endif // CLANGCODEMODEL_INTERNAL_ACTIVATIONSEQUENCECONTEXTPROCESSOR_H diff --git a/src/plugins/clangcodemodel/activationsequenceprocessor.cpp b/src/plugins/clangcodemodel/activationsequenceprocessor.cpp index fac5a58c28..a7f4ea948d 100644 --- a/src/plugins/clangcodemodel/activationsequenceprocessor.cpp +++ b/src/plugins/clangcodemodel/activationsequenceprocessor.cpp @@ -71,7 +71,7 @@ int ActivationSequenceProcessor::offset() const return m_offset; } -int ActivationSequenceProcessor::position() const +int ActivationSequenceProcessor::operatorStartPosition() const { return m_positionInDocument - m_offset; } @@ -164,8 +164,8 @@ void ActivationSequenceProcessor::processArrowStar() void ActivationSequenceProcessor::processDoxyGenComment() { - if ((m_char2 == QLatin1Char('\\') || m_char2 == QLatin1Char('@')) - && (m_char3.isNull() || m_char3.isSpace())) { + if ((m_char2.isNull() || m_char2.isSpace()) + && (m_char3 == QLatin1Char('\\') || m_char3 == QLatin1Char('@'))) { m_completionKind = CPlusPlus::T_DOXY_COMMENT; m_offset = 1; } diff --git a/src/plugins/clangcodemodel/activationsequenceprocessor.h b/src/plugins/clangcodemodel/activationsequenceprocessor.h index eacc81af20..2c6350dbaf 100644 --- a/src/plugins/clangcodemodel/activationsequenceprocessor.h +++ b/src/plugins/clangcodemodel/activationsequenceprocessor.h @@ -47,7 +47,7 @@ public: CPlusPlus::Kind completionKind() const; int offset() const; - int position() const; + int operatorStartPosition() const; // e.g. points to '.' for "foo.bar<CURSOR>" private: void extractCharactersBeforePosition(const QString &activationString); diff --git a/src/plugins/clangcodemodel/clangassistproposalitem.cpp b/src/plugins/clangcodemodel/clangassistproposalitem.cpp index 41cb770207..474d2d2b6e 100644 --- a/src/plugins/clangcodemodel/clangassistproposalitem.cpp +++ b/src/plugins/clangcodemodel/clangassistproposalitem.cpp @@ -54,8 +54,6 @@ bool ClangAssistProposalItem::prematurelyApplies(const QChar &typedChar) const applies = QString::fromLatin1("(,").contains(typedChar); else if (m_completionOperator == T_STRING_LITERAL || m_completionOperator == T_ANGLE_STRING_LITERAL) applies = (typedChar == QLatin1Char('/')) && text().endsWith(QLatin1Char('/')); - else if (!isCodeCompletion()) - applies = (typedChar == QLatin1Char('(')); /* && data().canConvert<CompleteFunctionDeclaration>()*/ //### else if (codeCompletion().completionKind() == CodeCompletion::ObjCMessageCompletionKind) applies = QString::fromLatin1(";.,").contains(typedChar); else @@ -247,18 +245,14 @@ void ClangAssistProposalItem::addOverload(const CodeCompletion &ccr) m_overloads.append(ccr); } -CodeCompletion ClangAssistProposalItem::codeCompletion() const +void ClangAssistProposalItem::setCodeCompletion(const CodeCompletion &codeCompletion) { - const QVariant &value = data(); - if (value.canConvert<CodeCompletion>()) - return value.value<CodeCompletion>(); - else - return CodeCompletion(); + m_codeCompletion = codeCompletion; } -bool ClangAssistProposalItem::isCodeCompletion() const +const ClangBackEnd::CodeCompletion &ClangAssistProposalItem::codeCompletion() const { - return data().canConvert<CodeCompletion>(); + return m_codeCompletion; } } // namespace Internal diff --git a/src/plugins/clangcodemodel/clangassistproposalitem.h b/src/plugins/clangcodemodel/clangassistproposalitem.h index b636f6d81b..3aedd8c0b7 100644 --- a/src/plugins/clangcodemodel/clangassistproposalitem.h +++ b/src/plugins/clangcodemodel/clangassistproposalitem.h @@ -52,13 +52,14 @@ public: bool isOverloaded() const; void addOverload(const ClangBackEnd::CodeCompletion &ccr); - ClangBackEnd::CodeCompletion codeCompletion() const; + void setCodeCompletion(const ClangBackEnd::CodeCompletion &codeCompletion); + const ClangBackEnd::CodeCompletion &codeCompletion() const; - bool isCodeCompletion() const; private: + ClangBackEnd::CodeCompletion m_codeCompletion; + QList<ClangBackEnd::CodeCompletion> m_overloads; unsigned m_completionOperator; mutable QChar m_typedChar; - QList<ClangBackEnd::CodeCompletion> m_overloads; }; } // namespace Internal diff --git a/src/plugins/clangcodemodel/clangbackendipcintegration.cpp b/src/plugins/clangcodemodel/clangbackendipcintegration.cpp index d03b56b89a..3d44710072 100644 --- a/src/plugins/clangcodemodel/clangbackendipcintegration.cpp +++ b/src/plugins/clangcodemodel/clangbackendipcintegration.cpp @@ -145,8 +145,11 @@ void IpcReceiver::codeCompleted(const CodeCompletedCommand &command) const quint64 ticket = command.ticketNumber(); QScopedPointer<ClangCompletionAssistProcessor> processor(m_assistProcessorsTable.take(ticket)); - if (processor) - processor->asyncCompletionsAvailable(command.codeCompletions()); + if (processor) { + const bool finished = processor->handleAvailableAsyncCompletions(command.codeCompletions()); + if (!finished) + processor.take(); + } } void IpcReceiver::translationUnitDoesNotExist(const TranslationUnitDoesNotExistCommand &command) @@ -233,13 +236,10 @@ static bool areCommandsRegistered = false; void IpcCommunicator::initializeBackend() { - // TODO: Add a asynchron API to ConnectionClient, otherwise we might hang here - if (!areCommandsRegistered) { areCommandsRegistered = true; Commands::registerCommands(); } - QElapsedTimer timer; timer.start(); const QString clangBackEndProcessPath = backendProcessPath(); qCDebug(log) << "Starting" << clangBackEndProcessPath; @@ -251,12 +251,9 @@ void IpcCommunicator::initializeBackend() connect(&m_connection, &ConnectionClient::processRestarted, this, &IpcCommunicator::onBackendRestarted); - if (m_connection.connectToServer()) { - qCDebug(log) << "...started and connected in" << timer.elapsed() << "ms."; + // TODO: Add a asynchron API to ConnectionClient, otherwise we might hang here + if (m_connection.connectToServer()) initializeBackendWithCurrentData(); - } else { - qCDebug(log) << "...failed."; - } } void IpcCommunicator::registerEmptyProjectForProjectLessFiles() @@ -310,8 +307,7 @@ static ClangBackEnd::ProjectPartContainer toProjectPartContainer( const CppTools::ProjectPart::Ptr &projectPart) { const QStringList arguments = projectPartCommandLine(projectPart); - return ClangBackEnd::ProjectPartContainer(projectPart->projectFile, - Utf8StringVector(arguments)); + return ClangBackEnd::ProjectPartContainer(projectPart->id(), Utf8StringVector(arguments)); } static QVector<ClangBackEnd::ProjectPartContainer> toProjectPartContainers( @@ -339,13 +335,13 @@ void IpcCommunicator::updateUnsavedFileFromCppEditorDocument(const QString &file void IpcCommunicator::updateUnsavedFile(const QString &filePath, const QByteArray &contents) { - const QString projectFilePath = Utils::projectFilePathForFile(filePath); + const QString projectPartId = Utils::projectPartIdForFile(filePath); const bool hasUnsavedContent = true; // TODO: Send new only if changed registerFilesForCodeCompletion({ ClangBackEnd::FileContainer(filePath, - projectFilePath, + projectPartId, Utf8String::fromByteArray(contents), hasUnsavedContent) }); @@ -432,12 +428,12 @@ void IpcCommunicator::registerProjectPartsForCodeCompletion( m_ipcSender->registerProjectPartsForCodeCompletion(command); } -void IpcCommunicator::unregisterProjectPartsForCodeCompletion(const QStringList &filePaths) +void IpcCommunicator::unregisterProjectPartsForCodeCompletion(const QStringList &projectPartIds) { if (m_sendMode == IgnoreSendRequests) return; - const UnregisterProjectPartsForCodeCompletionCommand command((Utf8StringVector(filePaths))); + const UnregisterProjectPartsForCodeCompletionCommand command((Utf8StringVector(projectPartIds))); qCDebug(log) << ">>>" << command; m_ipcSender->unregisterProjectPartsForCodeCompletion(command); } diff --git a/src/plugins/clangcodemodel/clangbackendipcintegration.h b/src/plugins/clangcodemodel/clangbackendipcintegration.h index 4a4ca40ab0..70aaf7c88d 100644 --- a/src/plugins/clangcodemodel/clangbackendipcintegration.h +++ b/src/plugins/clangcodemodel/clangbackendipcintegration.h @@ -112,7 +112,7 @@ public: void registerFilesForCodeCompletion(const FileContainers &fileContainers); void unregisterFilesForCodeCompletion(const FileContainers &fileContainers); void registerProjectPartsForCodeCompletion(const ProjectPartContainers &projectPartContainers); - void unregisterProjectPartsForCodeCompletion(const QStringList &filePaths); + void unregisterProjectPartsForCodeCompletion(const QStringList &projectPartIds); void completeCode(ClangCompletionAssistProcessor *assistProcessor, const QString &filePath, quint32 line, quint32 column, diff --git a/src/plugins/clangcodemodel/clangcodemodel.pro b/src/plugins/clangcodemodel/clangcodemodel.pro index 9ad3b7a989..b4758730d8 100644 --- a/src/plugins/clangcodemodel/clangcodemodel.pro +++ b/src/plugins/clangcodemodel/clangcodemodel.pro @@ -12,6 +12,7 @@ DEFINES += "\"CLANG_RESOURCE_DIR=\\\"$${LLVM_LIBDIR}/clang/$${LLVM_VERSION}/incl unix:QMAKE_LFLAGS += -Wl,-rpath,\'$$LLVM_LIBDIR\' SOURCES += \ + activationsequencecontextprocessor.cpp \ activationsequenceprocessor.cpp \ clangassistproposal.cpp \ clangassistproposalitem.cpp \ @@ -48,6 +49,7 @@ SOURCES += \ HEADERS += \ + activationsequencecontextprocessor.h \ activationsequenceprocessor.h \ clangassistproposal.h \ clangassistproposalitem.h \ @@ -107,13 +109,10 @@ equals(TEST, 1) { test/clang_tests_database.qrc HEADERS += \ - test/clangcodecompletion_test.h \ - test/clangcompletioncontextanalyzertest.h + test/clangcodecompletion_test.h SOURCES += \ - test/clangcodecompletion_test.cpp \ - test/clangcompletioncontextanalyzertest.cpp - + test/clangcodecompletion_test.cpp DISTFILES += \ test/mysource.cpp \ diff --git a/src/plugins/clangcodemodel/clangcodemodel.qbs b/src/plugins/clangcodemodel/clangcodemodel.qbs index e0ba967fb7..cc41d8ebd2 100644 --- a/src/plugins/clangcodemodel/clangcodemodel.qbs +++ b/src/plugins/clangcodemodel/clangcodemodel.qbs @@ -1,6 +1,7 @@ import qbs import qbs.File import QtcClangInstallation as Clang +import QtcFunctions import QtcProcessOutputReader QtcPlugin { @@ -23,7 +24,7 @@ QtcPlugin { property bool clangHighlighting: true property bool clangIndexing: false - property string llvmConfig: Clang.llvmConfig(qbs) + property string llvmConfig: Clang.llvmConfig(qbs, QtcFunctions, QtcProcessOutputReader) property string llvmIncludeDir: Clang.includeDir(llvmConfig, QtcProcessOutputReader) property string llvmLibDir: Clang.libDir(llvmConfig, QtcProcessOutputReader) property string llvmLibs: Clang.libraries(qbs.targetOS) @@ -53,6 +54,8 @@ QtcPlugin { name: "Completion support" condition: product.clangCompletion files: [ + "activationsequencecontextprocessor.cpp", + "activationsequencecontextprocessor.h", "activationsequenceprocessor.cpp", "activationsequenceprocessor.h", "clangassistproposal.cpp", @@ -104,8 +107,6 @@ QtcPlugin { "clang_tests_database.qrc", "clangcodecompletion_test.cpp", "clangcodecompletion_test.h", - "clangcompletioncontextanalyzertest.cpp", - "clangcompletioncontextanalyzertest.h", ] } diff --git a/src/plugins/clangcodemodel/clangcodemodelplugin.cpp b/src/plugins/clangcodemodel/clangcodemodelplugin.cpp index 8f68803eb0..c6c42855a9 100644 --- a/src/plugins/clangcodemodel/clangcodemodelplugin.cpp +++ b/src/plugins/clangcodemodel/clangcodemodelplugin.cpp @@ -36,7 +36,6 @@ #ifdef WITH_TESTS # include "test/clangcodecompletion_test.h" -# include "test/clangcompletioncontextanalyzertest.h" #endif #include <cpptools/cppmodelmanager.h> @@ -93,7 +92,6 @@ QList<QObject *> ClangCodeModelPlugin::createTestObjects() const { return { new Tests::ClangCodeCompletionTest, - new Tests::ClangCompletionContextAnalyzerTest }; } #endif diff --git a/src/plugins/clangcodemodel/clangcodemodelunittestfiles.pri b/src/plugins/clangcodemodel/clangcodemodelunittestfiles.pri index e40a4c8fa4..7105594178 100644 --- a/src/plugins/clangcodemodel/clangcodemodelunittestfiles.pri +++ b/src/plugins/clangcodemodel/clangcodemodelunittestfiles.pri @@ -1,7 +1,11 @@ INCLUDEPATH += $$PWD SOURCES += $$PWD/completionchunkstotextconverter.cpp \ - $$PWD/activationsequenceprocessor.cpp + $$PWD/activationsequenceprocessor.cpp \ + $$PWD/activationsequencecontextprocessor.cpp \ + $$PWD/clangcompletioncontextanalyzer.cpp HEADERS += $$PWD/completionchunkstotextconverter.h \ - $$PWD/activationsequenceprocessor.h + $$PWD/activationsequenceprocessor.h \ + $$PWD/activationsequencecontextprocessor.h \ + $$PWD/clangcompletioncontextanalyzer.h diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp index 505b5fcc22..bff0c4577e 100644 --- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp +++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp @@ -61,6 +61,7 @@ namespace ClangCodeModel { namespace Internal { +using ClangBackEnd::CodeCompletion; using TextEditor::AssistProposalItem; namespace { @@ -72,8 +73,6 @@ QList<AssistProposalItem *> toAssistProposalItems(const CodeCompletions &complet { static CPlusPlus::Icons m_icons; // de-deduplicate - QList<AssistProposalItem *> result; - bool signalCompletion = false; // TODO bool slotCompletion = false; // TODO @@ -105,11 +104,10 @@ QList<AssistProposalItem *> toAssistProposalItems(const CodeCompletions &complet if (ccr.completionKind() == CodeCompletion::KeywordCompletionKind) item->setDetail(CompletionChunksToTextConverter::convertToToolTip(ccr.chunks())); - item->setData(QVariant::fromValue(ccr)); + item->setCodeCompletion(ccr); } // FIXME: show the effective accessebility instead of availability - using ClangBackEnd::CodeCompletion; using CPlusPlus::Icons; switch (ccr.completionKind()) { @@ -179,10 +177,11 @@ QList<AssistProposalItem *> toAssistProposalItems(const CodeCompletions &complet } } - foreach (ClangAssistProposalItem *item, items.values()) - result.append(item); + QList<AssistProposalItem *> results; + results.reserve(items.size()); + std::copy(items.cbegin(), items.cend(), std::back_inserter(results)); - return result; + return results; } bool isFunctionHintLikeCompletion(CodeCompletion::Kind kind) @@ -194,10 +193,10 @@ bool isFunctionHintLikeCompletion(CodeCompletion::Kind kind) || kind == CodeCompletion::SlotCompletionKind; } -QVector<CodeCompletion> matchingFunctionCompletions(const QVector<CodeCompletion> completions, - const QString &functionName) +CodeCompletions matchingFunctionCompletions(const CodeCompletions completions, + const QString &functionName) { - QVector<CodeCompletion> matching; + CodeCompletions matching; foreach (const CodeCompletion &completion, completions) { if (isFunctionHintLikeCompletion(completion.completionKind()) @@ -227,25 +226,32 @@ IAssistProposal *ClangCompletionAssistProcessor::perform(const AssistInterface * { m_interface.reset(static_cast<const ClangCompletionAssistInterface *>(interface)); - if (interface->reason() != ExplicitlyInvoked && !accepts()) + if (interface->reason() != ExplicitlyInvoked && !accepts()) { + setPerformWasApplicable(false); return 0; + } return startCompletionHelper(); // == 0 if results are calculated asynchronously } -void ClangCompletionAssistProcessor::asyncCompletionsAvailable(const CodeCompletions &completions) +bool ClangCompletionAssistProcessor::handleAvailableAsyncCompletions( + const CodeCompletions &completions) { + bool handled = true; + switch (m_sentRequestType) { case CompletionRequestType::NormalCompletion: - onCompletionsAvailable(completions); + handleAvailableCompletions(completions); break; case CompletionRequestType::FunctionHintCompletion: - onFunctionHintCompletionsAvailable(completions); + handled = handleAvailableFunctionHintCompletions(completions); break; default: QTC_CHECK(!"Unhandled ClangCompletionAssistProcessor::CompletionRequestType"); break; } + + return handled; } const TextEditorWidget *ClangCompletionAssistProcessor::textEditorWidget() const @@ -302,8 +308,6 @@ static QByteArray modifyInput(QTextDocument *doc, int endOfExpression) { IAssistProposal *ClangCompletionAssistProcessor::startCompletionHelper() { - sendFileContent(Utils::projectFilePathForFile(m_interface->fileName()), QByteArray()); // TODO: Remoe - ClangCompletionContextAnalyzer analyzer(m_interface.data(), m_interface->languageFeatures()); analyzer.analyze(); m_completionOperator = analyzer.completionOperator(); @@ -361,7 +365,7 @@ int ClangCompletionAssistProcessor::startOfOperator(int positionInDocument, *kind = activationSequenceProcessor.completionKind(); - int start = activationSequenceProcessor.position(); + int start = activationSequenceProcessor.operatorStartPosition(); if (start != positionInDocument) { QTextCursor tc(m_interface->textDocument()); tc.setPosition(positionInDocument); @@ -648,34 +652,44 @@ void ClangCompletionAssistProcessor::addCompletionItem(const QString &text, m_completions.append(item); } -void ClangCompletionAssistProcessor::sendFileContent(const QString &projectFilePath, - const QByteArray &modifiedFileContent) +ClangCompletionAssistProcessor::UnsavedFileContentInfo +ClangCompletionAssistProcessor::unsavedFileContent(const QByteArray &customFileContent) const { - const QString filePath = m_interface->fileName(); - const QByteArray unsavedContent = modifiedFileContent.isEmpty() - ? m_interface->textDocument()->toPlainText().toUtf8() - : modifiedFileContent; - const bool hasUnsavedContent = true; // TODO + const bool hasCustomModification = !customFileContent.isEmpty(); + + UnsavedFileContentInfo info; + info.isDocumentModified = hasCustomModification || m_interface->textDocument()->isModified(); + info.unsavedContent = hasCustomModification + ? customFileContent + : m_interface->textDocument()->toPlainText().toUtf8(); + return info; +} + +void ClangCompletionAssistProcessor::sendFileContent(const QString &projectPartId, + const QByteArray &customFileContent) +{ + // TODO: Revert custom modification after the completions + const UnsavedFileContentInfo info = unsavedFileContent(customFileContent); IpcCommunicator &ipcCommunicator = m_interface->ipcCommunicator(); ipcCommunicator.registerFilesForCodeCompletion( - {ClangBackEnd::FileContainer(filePath, - projectFilePath, - Utf8String::fromByteArray(unsavedContent), - hasUnsavedContent)}); + {ClangBackEnd::FileContainer(m_interface->fileName(), + projectPartId, + Utf8String::fromByteArray(info.unsavedContent), + info.isDocumentModified)}); } void ClangCompletionAssistProcessor::sendCompletionRequest(int position, - const QByteArray &modifiedFileContent) + const QByteArray &customFileContent) { int line, column; TextEditor::Convenience::convertPosition(m_interface->textDocument(), position, &line, &column); ++column; const QString filePath = m_interface->fileName(); - const QString projectFilePath = Utils::projectFilePathForFile(filePath); - sendFileContent(projectFilePath, modifiedFileContent); - m_interface->ipcCommunicator().completeCode(this, filePath, line, column, projectFilePath); + const QString projectPartId = Utils::projectPartIdForFile(filePath); + sendFileContent(projectPartId, customFileContent); + m_interface->ipcCommunicator().completeCode(this, filePath, line, column, projectPartId); } TextEditor::IAssistProposal *ClangCompletionAssistProcessor::createProposal() const @@ -685,7 +699,7 @@ TextEditor::IAssistProposal *ClangCompletionAssistProcessor::createProposal() co return new ClangAssistProposal(m_positionForProposal, model); } -void ClangCompletionAssistProcessor::onCompletionsAvailable(const CodeCompletions &completions) +void ClangCompletionAssistProcessor::handleAvailableCompletions(const CodeCompletions &completions) { QTC_CHECK(m_completions.isEmpty()); @@ -696,20 +710,24 @@ void ClangCompletionAssistProcessor::onCompletionsAvailable(const CodeCompletion setAsyncProposalAvailable(createProposal()); } -void ClangCompletionAssistProcessor::onFunctionHintCompletionsAvailable( +bool ClangCompletionAssistProcessor::handleAvailableFunctionHintCompletions( const CodeCompletions &completions) { QTC_CHECK(!m_functionName.isEmpty()); const auto relevantCompletions = matchingFunctionCompletions(completions, m_functionName); if (!relevantCompletions.isEmpty()) { - TextEditor::IFunctionHintProposalModel *model = new ClangFunctionHintModel(relevantCompletions); - TextEditor::FunctionHintProposal *proposal = new FunctionHintProposal(m_positionForProposal, model); + auto *model = new ClangFunctionHintModel(relevantCompletions); + auto *proposal = new FunctionHintProposal(m_positionForProposal, model); setAsyncProposalAvailable(proposal); + return true; } else { - QTC_CHECK(!"Function completion failed. Would fallback to global completion here..."); - // TODO: If we need this, the processor can't be deleted in IpcClient. + m_addSnippets = false; + m_functionName.clear(); + m_sentRequestType = NormalCompletion; + sendCompletionRequest(m_interface->position(), QByteArray()); + return false; // We are not yet finished. } } diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.h b/src/plugins/clangcodemodel/clangcompletionassistprocessor.h index f712246406..c76987c8f0 100644 --- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.h +++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.h @@ -34,20 +34,16 @@ #include "clangcompletionassistinterface.h" #include <cpptools/cppcompletionassistprocessor.h> - #include <texteditor/texteditor.h> -#include <QCoreApplication> +#include <clangbackendipc/codecompletion.h> -namespace ClangBackEnd { -class CodeCompletion; -} +#include <QCoreApplication> namespace ClangCodeModel { namespace Internal { -using CodeCompletions = QVector<ClangBackEnd::CodeCompletion>; -using ClangBackEnd::CodeCompletion; +using ClangBackEnd::CodeCompletions; class ClangCompletionAssistProcessor : public CppTools::CppCompletionAssistProcessor { @@ -59,7 +55,7 @@ public: TextEditor::IAssistProposal *perform(const TextEditor::AssistInterface *interface) override; - void asyncCompletionsAvailable(const CodeCompletions &completions); + bool handleAvailableAsyncCompletions(const CodeCompletions &completions); const TextEditor::TextEditorWidget *textEditorWidget() const; @@ -81,11 +77,17 @@ private: int order = 0, const QVariant &data = QVariant()); - void sendFileContent(const QString &projectFilePath, const QByteArray &modifiedFileContent); - void sendCompletionRequest(int position, const QByteArray &modifiedFileContent); + struct UnsavedFileContentInfo { + QByteArray unsavedContent; + bool isDocumentModified = false; + }; + UnsavedFileContentInfo unsavedFileContent(const QByteArray &customFileContent) const; + + void sendFileContent(const QString &projectPartId, const QByteArray &customFileContent); + void sendCompletionRequest(int position, const QByteArray &customFileContent); - void onCompletionsAvailable(const CodeCompletions &completions); - void onFunctionHintCompletionsAvailable(const CodeCompletions &completions); + void handleAvailableCompletions(const CodeCompletions &completions); + bool handleAvailableFunctionHintCompletions(const CodeCompletions &completions); private: QScopedPointer<const ClangCompletionAssistInterface> m_interface; diff --git a/src/plugins/clangcodemodel/clangcompletioncontextanalyzer.cpp b/src/plugins/clangcodemodel/clangcompletioncontextanalyzer.cpp index 568eb9e1e8..eaa2b3d90a 100644 --- a/src/plugins/clangcodemodel/clangcompletioncontextanalyzer.cpp +++ b/src/plugins/clangcodemodel/clangcompletioncontextanalyzer.cpp @@ -31,6 +31,9 @@ #include "clangcompletioncontextanalyzer.h" +#include "activationsequenceprocessor.h" +#include "activationsequencecontextprocessor.h" + #include <texteditor/codeassist/assistinterface.h> #include <cplusplus/BackwardsScanner.h> @@ -47,80 +50,6 @@ using namespace CPlusPlus; namespace { -int activationSequenceChar(const QChar &ch, const QChar &ch2, const QChar &ch3, - unsigned *kind, bool wantFunctionCall) -{ - int referencePosition = 0; - int completionKind = T_EOF_SYMBOL; - switch (ch.toLatin1()) { - case '.': - if (ch2 != QLatin1Char('.')) { - completionKind = T_DOT; - referencePosition = 1; - } - break; - case ',': - completionKind = T_COMMA; - referencePosition = 1; - break; - case '(': - if (wantFunctionCall) { - completionKind = T_LPAREN; - referencePosition = 1; - } - break; - case ':': - if (ch3 != QLatin1Char(':') && ch2 == QLatin1Char(':')) { - completionKind = T_COLON_COLON; - referencePosition = 2; - } - break; - case '>': - if (ch2 == QLatin1Char('-')) { - completionKind = T_ARROW; - referencePosition = 2; - } - break; - case '*': - if (ch2 == QLatin1Char('.')) { - completionKind = T_DOT_STAR; - referencePosition = 2; - } else if (ch3 == QLatin1Char('-') && ch2 == QLatin1Char('>')) { - completionKind = T_ARROW_STAR; - referencePosition = 3; - } - break; - case '\\': - case '@': - if (ch2.isNull() || ch2.isSpace()) { - completionKind = T_DOXY_COMMENT; - referencePosition = 1; - } - break; - case '<': - completionKind = T_ANGLE_STRING_LITERAL; - referencePosition = 1; - break; - case '"': - completionKind = T_STRING_LITERAL; - referencePosition = 1; - break; - case '/': - completionKind = T_SLASH; - referencePosition = 1; - break; - case '#': - completionKind = T_POUND; - referencePosition = 1; - break; - } - - if (kind) - *kind = completionKind; - - return referencePosition; -} - bool isTokenForIncludePathCompletion(unsigned tokenKind) { return tokenKind == T_STRING_LITERAL @@ -143,7 +72,7 @@ namespace ClangCodeModel { namespace Internal { ClangCompletionContextAnalyzer::ClangCompletionContextAnalyzer( - const TextEditor::AssistInterface *assistInterface, + const ClangCompletionAssistInterface *assistInterface, CPlusPlus::LanguageFeatures languageFeatures) : m_interface(assistInterface) , m_languageFeatures(languageFeatures) @@ -153,79 +82,33 @@ ClangCompletionContextAnalyzer::ClangCompletionContextAnalyzer( void ClangCompletionContextAnalyzer::analyze() { QTC_ASSERT(m_interface, return); - const int startOfName = findStartOfName(); - m_positionForProposal = startOfName; setActionAndClangPosition(PassThroughToLibClang, -1); - const int endOfOperator = skipPrecedingWhitespace(startOfName); - m_completionOperator = T_EOF_SYMBOL; - m_positionEndOfExpression = startOfOperator(endOfOperator, &m_completionOperator, - /*want function call =*/ true); + ActivationSequenceContextProcessor activationSequenceContextProcessor(m_interface); + m_completionOperator = activationSequenceContextProcessor.completionKind(); + int afterOperatorPosition = activationSequenceContextProcessor.startOfNamePosition(); + m_positionEndOfExpression = activationSequenceContextProcessor.operatorStartPosition(); + m_positionForProposal = activationSequenceContextProcessor.startOfNamePosition(); - if (isTokenForPassThrough(m_completionOperator)) { - setActionAndClangPosition(PassThroughToLibClang, endOfOperator); - return; - } else if (m_completionOperator == T_DOXY_COMMENT) { - setActionAndClangPosition(CompleteDoxygenKeyword, -1); - return; - } else if (m_completionOperator == T_POUND) { - // TODO: Check if libclang can complete preprocessor directives - setActionAndClangPosition(CompletePreprocessorDirective, -1); - return; - } else if (isTokenForIncludePathCompletion(m_completionOperator)) { - setActionAndClangPosition(CompleteIncludePath, -1); - return; + const bool actionIsSet = handleNonFunctionCall(afterOperatorPosition); + if (!actionIsSet) { + handleCommaInFunctionCall(); + handleFunctionCall(afterOperatorPosition); } - - ExpressionUnderCursor expressionUnderCursor(m_languageFeatures); - QTextCursor textCursor(m_interface->textDocument()); - - if (m_completionOperator == T_COMMA) { // For function hints - textCursor.setPosition(m_positionEndOfExpression); - const int start = expressionUnderCursor.startOfFunctionCall(textCursor); - QTC_ASSERT(start != -1, setActionAndClangPosition(PassThroughToLibClang, startOfName); return); - m_positionEndOfExpression = start; - m_positionForProposal = start + 1; // After '(' of function call - m_completionOperator = T_LPAREN; - } - - if (m_completionOperator == T_LPAREN) { - textCursor.setPosition(m_positionEndOfExpression); - const QString expression = expressionUnderCursor(textCursor); - - if (expression.endsWith(QLatin1String("SIGNAL"))) { - setActionAndClangPosition(CompleteSignal, endOfOperator); - } else if (expression.endsWith(QLatin1String("SLOT"))) { - setActionAndClangPosition(CompleteSlot, endOfOperator); - } else if (m_interface->position() != endOfOperator) { - // No function completion if cursor is not after '(' or ',' - m_positionForProposal = startOfName; - setActionAndClangPosition(PassThroughToLibClang, endOfOperator); - } else { - const FunctionInfo functionInfo = analyzeFunctionCall(endOfOperator); - m_functionName = functionInfo.functionName; - setActionAndClangPosition(PassThroughToLibClangAfterLeftParen, - functionInfo.functionNamePosition); - } - - return; - } - - QTC_CHECK(!"Unexpected completion context"); - setActionAndClangPosition(PassThroughToLibClang, startOfName); - return; } -ClangCompletionContextAnalyzer::FunctionInfo ClangCompletionContextAnalyzer::analyzeFunctionCall( - int endOfOperator) const +ClangCompletionContextAnalyzer::FunctionInfo +ClangCompletionContextAnalyzer::analyzeFunctionCall(int endOfOperator) const { - int index = skipPrecedingWhitespace(endOfOperator); + int index = ActivationSequenceContextProcessor::skipPrecedingWhitespace(m_interface, + endOfOperator); QTextCursor textCursor(m_interface->textDocument()); textCursor.setPosition(index); ExpressionUnderCursor euc(m_languageFeatures); index = euc.startOfFunctionCall(textCursor); - const int functionNameStart = findStartOfName(index); + const int functionNameStart = ActivationSequenceContextProcessor::findStartOfName(m_interface, + index); QTextCursor textCursor2(m_interface->textDocument()); textCursor2.setPosition(functionNameStart); @@ -237,133 +120,76 @@ ClangCompletionContextAnalyzer::FunctionInfo ClangCompletionContextAnalyzer::ana return info; } -int ClangCompletionContextAnalyzer::findStartOfName(int position) const +void ClangCompletionContextAnalyzer::setActionAndClangPosition(CompletionAction action, + int position) { - if (position == -1) - position = m_interface->position(); - QChar chr; - - do { - chr = m_interface->characterAt(--position); - // TODO: Check also chr.isHighSurrogate() / ch.isLowSurrogate()? - // See also CppTools::isValidFirstIdentifierChar - } while (chr.isLetterOrNumber() || chr == QLatin1Char('_')); - - return position + 1; + QTC_CHECK(position >= -1); + m_completionAction = action; + m_positionForClang = position; } -int ClangCompletionContextAnalyzer::skipPrecedingWhitespace(int position) const +void +ClangCompletionContextAnalyzer::setAction(ClangCompletionContextAnalyzer::CompletionAction action) { - QTC_ASSERT(position >= 0, return position); - while (m_interface->characterAt(position - 1).isSpace()) - --position; - return position; + setActionAndClangPosition(action, -1); } -int ClangCompletionContextAnalyzer::startOfOperator(int pos, - unsigned *kind, - bool wantFunctionCall) const +void ClangCompletionContextAnalyzer::handleCommaInFunctionCall() { - const QChar ch = pos > -1 ? m_interface->characterAt(pos - 1) : QChar(); - const QChar ch2 = pos > 0 ? m_interface->characterAt(pos - 2) : QChar(); - const QChar ch3 = pos > 1 ? m_interface->characterAt(pos - 3) : QChar(); - - int start = pos - activationSequenceChar(ch, ch2, ch3, kind, wantFunctionCall); - if (start != pos) { - QTextCursor tc(m_interface->textDocument()); - tc.setPosition(pos); - - // Include completion: make sure the quote character is the first one on the line - if (*kind == T_STRING_LITERAL) { - QTextCursor s = tc; - s.movePosition(QTextCursor::StartOfLine, QTextCursor::KeepAnchor); - QString sel = s.selectedText(); - if (sel.indexOf(QLatin1Char('"')) < sel.length() - 1) { - *kind = T_EOF_SYMBOL; - start = pos; - } - } else if (*kind == T_COMMA) { - ExpressionUnderCursor expressionUnderCursor(m_languageFeatures); - if (expressionUnderCursor.startOfFunctionCall(tc) == -1) { - *kind = T_EOF_SYMBOL; - start = pos; - } - } - - SimpleLexer tokenize; - tokenize.setLanguageFeatures(m_languageFeatures); - tokenize.setSkipComments(false); - const Tokens &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block())); - const int tokenIdx = SimpleLexer::tokenBefore(tokens, qMax(0, tc.positionInBlock() - 1)); // get the token at the left of the cursor - const Token tk = (tokenIdx == -1) ? Token() : tokens.at(tokenIdx); - - if (*kind == T_DOXY_COMMENT && !(tk.is(T_DOXY_COMMENT) || tk.is(T_CPP_DOXY_COMMENT))) { - *kind = T_EOF_SYMBOL; - start = pos; - } - // Don't complete in comments or strings, but still check for include completion - else if (tk.is(T_COMMENT) || tk.is(T_CPP_COMMENT) || - (tk.isLiteral() && (*kind != T_STRING_LITERAL - && *kind != T_ANGLE_STRING_LITERAL - && *kind != T_SLASH))) { - *kind = T_EOF_SYMBOL; - start = pos; - } - // Include completion: can be triggered by slash, but only in a string - else if (*kind == T_SLASH && (tk.isNot(T_STRING_LITERAL) && tk.isNot(T_ANGLE_STRING_LITERAL))) { - *kind = T_EOF_SYMBOL; - start = pos; - } - else if (*kind == T_LPAREN) { - if (tokenIdx > 0) { - const Token &previousToken = tokens.at(tokenIdx - 1); // look at the token at the left of T_LPAREN - switch (previousToken.kind()) { - case T_IDENTIFIER: - case T_GREATER: - case T_SIGNAL: - case T_SLOT: - break; // good + if (m_completionOperator == T_COMMA) { + ExpressionUnderCursor expressionUnderCursor(m_languageFeatures); + QTextCursor textCursor(m_interface->textDocument()); + textCursor.setPosition(m_positionEndOfExpression); + const int start = expressionUnderCursor.startOfFunctionCall(textCursor); + m_positionEndOfExpression = start; + m_positionForProposal = start + 1; // After '(' of function call + m_completionOperator = T_LPAREN; + } +} - default: - // that's a bad token :) - *kind = T_EOF_SYMBOL; - start = pos; - } - } - } - // Check for include preprocessor directive - else if (*kind == T_STRING_LITERAL || *kind == T_ANGLE_STRING_LITERAL || *kind == T_SLASH) { - bool include = false; - if (tokens.size() >= 3) { - if (tokens.at(0).is(T_POUND) && tokens.at(1).is(T_IDENTIFIER) && (tokens.at(2).is(T_STRING_LITERAL) || - tokens.at(2).is(T_ANGLE_STRING_LITERAL))) { - const Token &directiveToken = tokens.at(1); - QString directive = tc.block().text().mid(directiveToken.bytesBegin(), - directiveToken.bytes()); - if (directive == QLatin1String("include") || - directive == QLatin1String("include_next") || - directive == QLatin1String("import")) { - include = true; - } - } - } +void ClangCompletionContextAnalyzer::handleFunctionCall(int afterOperatorPosition) +{ + if (m_completionOperator == T_LPAREN) { + ExpressionUnderCursor expressionUnderCursor(m_languageFeatures); + QTextCursor textCursor(m_interface->textDocument()); + textCursor.setPosition(m_positionEndOfExpression); + const QString expression = expressionUnderCursor(textCursor); - if (!include) { - *kind = T_EOF_SYMBOL; - start = pos; - } + if (expression.endsWith(QLatin1String("SIGNAL"))) { + setActionAndClangPosition(CompleteSignal, afterOperatorPosition); + } else if (expression.endsWith(QLatin1String("SLOT"))) { + setActionAndClangPosition(CompleteSlot, afterOperatorPosition); + } else if (m_interface->position() != afterOperatorPosition) { + // No function completion if cursor is not after '(' or ',' + m_positionForProposal = afterOperatorPosition; + setActionAndClangPosition(PassThroughToLibClang, afterOperatorPosition); + } else { + const FunctionInfo functionInfo = analyzeFunctionCall(afterOperatorPosition); + m_functionName = functionInfo.functionName; + setActionAndClangPosition(PassThroughToLibClangAfterLeftParen, + functionInfo.functionNamePosition); } } - - return start; } -void ClangCompletionContextAnalyzer::setActionAndClangPosition(CompletionAction action, - int position) +bool ClangCompletionContextAnalyzer::handleNonFunctionCall(int position) { - QTC_CHECK(position >= -1); - m_completionAction = action; - m_positionForClang = position; + if (isTokenForPassThrough(m_completionOperator)) { + setActionAndClangPosition(PassThroughToLibClang, position); + return true; + } else if (m_completionOperator == T_DOXY_COMMENT) { + setAction(CompleteDoxygenKeyword); + return true; + } else if (m_completionOperator == T_POUND) { + // TODO: Check if libclang can complete preprocessor directives + setAction(CompletePreprocessorDirective); + return true; + } else if (isTokenForIncludePathCompletion(m_completionOperator)) { + setAction(CompleteIncludePath); + return true; + } + + return false; } } // namespace Internal diff --git a/src/plugins/clangcodemodel/clangcompletioncontextanalyzer.h b/src/plugins/clangcodemodel/clangcompletioncontextanalyzer.h index 3a0a8f21ff..3df4041675 100644 --- a/src/plugins/clangcodemodel/clangcompletioncontextanalyzer.h +++ b/src/plugins/clangcodemodel/clangcompletioncontextanalyzer.h @@ -40,10 +40,12 @@ namespace TextEditor { class AssistInterface; } namespace ClangCodeModel { namespace Internal { +class ClangCompletionAssistInterface; + class ClangCompletionContextAnalyzer { public: - ClangCompletionContextAnalyzer(const TextEditor::AssistInterface *assistInterface, + ClangCompletionContextAnalyzer(const ClangCompletionAssistInterface *assistInterface, CPlusPlus::LanguageFeatures languageFeatures); void analyze(); @@ -70,18 +72,20 @@ private: struct FunctionInfo { int functionNamePosition; QString functionName; }; FunctionInfo analyzeFunctionCall(int endOfExpression) const; - int findStartOfName(int position = -1) const; - int skipPrecedingWhitespace(int position) const; - int startOfOperator(int position, unsigned *kind, bool wantFunctionCall) const; - void setActionAndClangPosition(CompletionAction action, int position); + void setAction(CompletionAction action); - const TextEditor::AssistInterface * const m_interface; // Not owned + bool handleNonFunctionCall(int position); + void handleCommaInFunctionCall(); + void handleFunctionCall(int endOfOperator); + +private: + const ClangCompletionAssistInterface *m_interface; // Not owned const CPlusPlus::LanguageFeatures m_languageFeatures; // TODO: Get from assistInterface?! // Results CompletionAction m_completionAction = PassThroughToLibClang; - unsigned m_completionOperator = CPlusPlus::T_EOF_SYMBOL; + CPlusPlus::Kind m_completionOperator = CPlusPlus::T_EOF_SYMBOL; int m_positionForProposal = -1; int m_positionForClang = -1; int m_positionEndOfExpression = -1; diff --git a/src/plugins/clangcodemodel/clangeditordocumentparser.cpp b/src/plugins/clangcodemodel/clangeditordocumentparser.cpp index c4897befbc..694de45f20 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentparser.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentparser.cpp @@ -86,6 +86,9 @@ ClangEditorDocumentParser::ClangEditorDocumentParser(const QString &filePath) : BaseEditorDocumentParser(filePath) , m_marker(new ClangCodeModel::SemanticMarker) { + BaseEditorDocumentParser::Configuration config = configuration(); + config.stickToPreviousProjectPart = false; + setConfiguration(config); } void ClangEditorDocumentParser::updateHelper(const BaseEditorDocumentParser::InMemoryInfo &info) diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index 5ca055b0a1..f8a4191513 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -44,10 +44,6 @@ #include <utils/qtcassert.h> #include <utils/QtConcurrentTools> -#include <QLoggingCategory> - -static Q_LOGGING_CATEGORY(log, "qtc.clangcodemodel.clangeditordocumentprocessor") - namespace { typedef CPlusPlus::Document::DiagnosticMessage CppToolsDiagnostic; @@ -59,8 +55,6 @@ QList<CppToolsDiagnostic> toCppToolsDiagnostics( QList<CppToolsDiagnostic> converted; foreach (const ClangCodeModel::Diagnostic &d, diagnostics) { - qCDebug(log) << "diagnostic" << d.severityAsString() << d.location() << d.spelling(); - if (d.location().fileName() != filePath) continue; @@ -112,6 +106,9 @@ ClangEditorDocumentProcessor::ClangEditorDocumentProcessor( connect(&m_builtinProcessor, &CppTools::BuiltinEditorDocumentProcessor::semanticInfoUpdated, this, &ClangEditorDocumentProcessor::semanticInfoUpdated); + connect(CppTools::CppModelManager::instance(), &CppTools::CppModelManager::projectPartsRemoved, + this, &ClangEditorDocumentProcessor::onProjectPartsRemoved); + m_semanticHighlighter.setHighlightingRunner( [this]() -> QFuture<TextEditor::HighlightingResult> { const int firstLine = 1; @@ -129,16 +126,11 @@ ClangEditorDocumentProcessor::~ClangEditorDocumentProcessor() m_parserWatcher.cancel(); m_parserWatcher.waitForFinished(); - const CppTools::ProjectPart::Ptr projectPart = m_parser.projectPart(); - QTC_ASSERT(projectPart, return); - - QString projectFilePath; - if (Utils::isProjectPartValid(projectPart)) - projectFilePath = projectPart->projectFile; // OK, Project Part is still loaded - - QTC_ASSERT(m_modelManagerSupport, return); - m_modelManagerSupport->ipcCommunicator().unregisterFilesForCodeCompletion( - {ClangBackEnd::FileContainer(filePath(), projectFilePath)}); + if (m_projectPart) { + QTC_ASSERT(m_modelManagerSupport, return); + m_modelManagerSupport->ipcCommunicator().unregisterFilesForCodeCompletion( + {ClangBackEnd::FileContainer(filePath(), m_projectPart->id())}); + } } void ClangEditorDocumentProcessor::run() @@ -192,6 +184,25 @@ bool ClangEditorDocumentProcessor::isParserRunning() const return m_parserWatcher.isRunning(); } +CppTools::ProjectPart::Ptr ClangEditorDocumentProcessor::projectPart() const +{ + return m_projectPart; +} + +ClangEditorDocumentProcessor *ClangEditorDocumentProcessor::get(const QString &filePath) +{ + return qobject_cast<ClangEditorDocumentProcessor *>(BaseEditorDocumentProcessor::get(filePath)); +} + +void ClangEditorDocumentProcessor::updateProjectPartAndTranslationUnitForCompletion() +{ + const CppTools::ProjectPart::Ptr projectPart = m_parser.projectPart(); + QTC_ASSERT(projectPart, return); + + updateTranslationUnitForCompletion(*projectPart.data()); + m_projectPart = projectPart; +} + void ClangEditorDocumentProcessor::onParserFinished() { if (revision() != m_parserRevision) @@ -208,6 +219,34 @@ void ClangEditorDocumentProcessor::onParserFinished() // Run semantic highlighter m_semanticHighlighter.run(); + + updateProjectPartAndTranslationUnitForCompletion(); +} + +void ClangEditorDocumentProcessor::onProjectPartsRemoved(const QStringList &projectPartIds) +{ + if (m_projectPart && projectPartIds.contains(m_projectPart->id())) + m_projectPart.clear(); +} + +void ClangEditorDocumentProcessor::updateTranslationUnitForCompletion( + CppTools::ProjectPart &projectPart) +{ + QTC_ASSERT(m_modelManagerSupport, return); + IpcCommunicator &ipcCommunicator = m_modelManagerSupport->ipcCommunicator(); + + if (m_projectPart) { + if (projectPart.id() != m_projectPart->id()) { + auto container1 = {ClangBackEnd::FileContainer(filePath(), m_projectPart->id())}; + ipcCommunicator.unregisterFilesForCodeCompletion(container1); + + auto container2 = {ClangBackEnd::FileContainer(filePath(), projectPart.id())}; + ipcCommunicator.registerFilesForCodeCompletion(container2); + } + } else { + auto container = {ClangBackEnd::FileContainer(filePath(), projectPart.id())}; + ipcCommunicator.registerFilesForCodeCompletion(container); + } } } // namespace Internal diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h index d62ff455d1..4d8564685c 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h @@ -63,13 +63,23 @@ public: CPlusPlus::Snapshot snapshot() override; bool isParserRunning() const override; + CppTools::ProjectPart::Ptr projectPart() const; + +public: + static ClangEditorDocumentProcessor *get(const QString &filePath); + private slots: void onParserFinished(); + void onProjectPartsRemoved(const QStringList &projectPartIds); private: + void updateProjectPartAndTranslationUnitForCompletion(); + void updateTranslationUnitForCompletion(CppTools::ProjectPart &projectPart); + QPointer<ModelManagerSupportClang> m_modelManagerSupport; ClangEditorDocumentParser m_parser; + CppTools::ProjectPart::Ptr m_projectPart; QFutureWatcher<void> m_parserWatcher; unsigned m_parserRevision; diff --git a/src/plugins/clangcodemodel/clangfunctionhintmodel.cpp b/src/plugins/clangcodemodel/clangfunctionhintmodel.cpp index f950947448..d037186b99 100644 --- a/src/plugins/clangcodemodel/clangfunctionhintmodel.cpp +++ b/src/plugins/clangcodemodel/clangfunctionhintmodel.cpp @@ -39,7 +39,7 @@ namespace Internal { using namespace CPlusPlus; -ClangFunctionHintModel::ClangFunctionHintModel(const CodeCompletions &functionSymbols) +ClangFunctionHintModel::ClangFunctionHintModel(const ClangBackEnd::CodeCompletions &functionSymbols) : m_functionSymbols(functionSymbols) , m_currentArg(-1) { diff --git a/src/plugins/clangcodemodel/clangfunctionhintmodel.h b/src/plugins/clangcodemodel/clangfunctionhintmodel.h index c1e9f656b3..65a9c0affa 100644 --- a/src/plugins/clangcodemodel/clangfunctionhintmodel.h +++ b/src/plugins/clangcodemodel/clangfunctionhintmodel.h @@ -38,12 +38,10 @@ namespace ClangCodeModel { namespace Internal { -using CodeCompletions = QVector<ClangBackEnd::CodeCompletion>; - class ClangFunctionHintModel : public TextEditor::IFunctionHintProposalModel { public: - ClangFunctionHintModel(const CodeCompletions &functionSymbols); + ClangFunctionHintModel(const ClangBackEnd::CodeCompletions &functionSymbols); void reset() override; int size() const override; @@ -51,7 +49,7 @@ public: int activeArgument(const QString &prefix) const override; private: - CodeCompletions m_functionSymbols; + ClangBackEnd::CodeCompletions m_functionSymbols; mutable int m_currentArg; }; diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 8115b52577..f28c0d215d 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -159,9 +159,9 @@ void ModelManagerSupportClang::onAbstractEditorSupportRemoved(const QString &fil { QTC_ASSERT(!filePath.isEmpty(), return); if (!cppModelManager()->cppEditorDocument(filePath)) { - const QString projectFilePath = Utils::projectFilePathForFile(filePath); + const QString projectPartId = Utils::projectPartIdForFile(filePath); m_ipcCommunicator.unregisterFilesForCodeCompletion( - {ClangBackEnd::FileContainer(filePath, projectFilePath)}); + {ClangBackEnd::FileContainer(filePath, projectPartId)}); } } @@ -173,9 +173,10 @@ void ModelManagerSupportClang::onProjectPartsUpdated(ProjectExplorer::Project *p m_ipcCommunicator.registerProjectsParts(projectInfo.projectParts()); } -void ModelManagerSupportClang::onProjectPartsRemoved(const QStringList &projectFiles) +void ModelManagerSupportClang::onProjectPartsRemoved(const QStringList &projectPartIds) { - m_ipcCommunicator.unregisterProjectPartsForCodeCompletion(projectFiles); + if (!projectPartIds.isEmpty()) + m_ipcCommunicator.unregisterProjectPartsForCodeCompletion(projectPartIds); } #ifdef QT_TESTLIB_LIB diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.h b/src/plugins/clangcodemodel/clangmodelmanagersupport.h index 7269e925dc..c3f0457660 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.h +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.h @@ -73,7 +73,7 @@ private: void onAbstractEditorSupportRemoved(const QString &filePath); void onProjectPartsUpdated(ProjectExplorer::Project *project); - void onProjectPartsRemoved(const QStringList &projectFiles); + void onProjectPartsRemoved(const QStringList &projectPartIds); IpcCommunicator m_ipcCommunicator; ClangCompletionAssistProvider m_completionAssistProvider; diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index 257d3c966e..02f448644f 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -114,53 +114,27 @@ static bool maybeIncludeBorlandExtensions() class LibClangOptionsBuilder : public CompilerOptionsBuilder { public: - static QStringList build(const ProjectPart::Ptr &pPart, ProjectFile::Kind fileKind) + static QStringList build(const ProjectPart::Ptr &projectPart, ProjectFile::Kind fileKind) { - if (pPart.isNull()) + if (projectPart.isNull()) return QStringList(); - LibClangOptionsBuilder optionsBuilder(pPart); + LibClangOptionsBuilder optionsBuilder(projectPart); if (verboseRunLog().isDebugEnabled()) optionsBuilder.add(QLatin1String("-v")); optionsBuilder.addLanguageOption(fileKind); optionsBuilder.addOptionsForLanguage(maybeIncludeBorlandExtensions()); - optionsBuilder.addToolchainAndProjectDefines(); - static const QString resourceDir = getResourceDir(); - if (!resourceDir.isEmpty()) { - optionsBuilder.add(QLatin1String("-nostdlibinc")); - optionsBuilder.add(QLatin1String("-I") + resourceDir); - optionsBuilder.add(QLatin1String("-undef")); - } + optionsBuilder.addToolchainAndProjectDefines(); + optionsBuilder.addResourceDirOptions(); + optionsBuilder.addWrappedQtHeadersIncludePath(); optionsBuilder.addHeaderPathOptions(); + optionsBuilder.addProjectConfigFileInclude(); - // Inject header file - static const QString injectedHeader = ICore::instance()->resourcePath() - + QLatin1String("/cplusplus/qt%1-qobjectdefs-injected.h"); - -// if (pPart->qtVersion == ProjectPart::Qt4) { -// builder.addOption(QLatin1String("-include")); -// builder.addOption(injectedHeader.arg(QLatin1Char('4'))); -// } - - if (pPart->qtVersion == ProjectPart::Qt5) { - optionsBuilder.add(QLatin1String("-include")); - optionsBuilder.add(injectedHeader.arg(QLatin1Char('5'))); - } - - if (!pPart->projectConfigFile.isEmpty()) { - optionsBuilder.add(QLatin1String("-include")); - optionsBuilder.add(pPart->projectConfigFile); - } - - optionsBuilder.add(QLatin1String("-fmessage-length=0")); - optionsBuilder.add(QLatin1String("-fdiagnostics-show-note-include-stack")); - optionsBuilder.add(QLatin1String("-fmacro-backtrace-limit=0")); - optionsBuilder.add(QLatin1String("-fretain-comments-from-system-headers")); - // TODO: -Xclang -ferror-limit -Xclang 0 ? + optionsBuilder.addExtraOptions(); return optionsBuilder.options(); } @@ -175,6 +149,44 @@ private: { return path.contains(QLatin1String("lib/gcc/i686-apple-darwin")); } + + void addResourceDirOptions() + { + static const QString resourceDir = getResourceDir(); + if (!resourceDir.isEmpty()) { + add(QLatin1String("-nostdlibinc")); + add(QLatin1String("-I") + resourceDir); + add(QLatin1String("-undef")); + } + } + + void addWrappedQtHeadersIncludePath() + { + static const QString wrappedQtHeaders = ICore::instance()->resourcePath() + + QLatin1String("/cplusplus/wrappedQtHeaders"); + + if (m_projectPart->qtVersion != ProjectPart::NoQt) { + add(QLatin1String("-I") + wrappedQtHeaders); + add(QLatin1String("-I") + wrappedQtHeaders + QLatin1String("/QtCore")); + } + } + + void addProjectConfigFileInclude() + { + if (!m_projectPart->projectConfigFile.isEmpty()) { + add(QLatin1String("-include")); + add(m_projectPart->projectConfigFile); + } + } + + void addExtraOptions() + { + add(QLatin1String("-fmessage-length=0")); + add(QLatin1String("-fdiagnostics-show-note-include-stack")); + add(QLatin1String("-fmacro-backtrace-limit=0")); + add(QLatin1String("-fretain-comments-from-system-headers")); + // TODO: -Xclang -ferror-limit -Xclang 0 ? + } }; /** @@ -218,16 +230,16 @@ ProjectPart::Ptr projectPartForFile(const QString &filePath) bool isProjectPartValid(const ProjectPart::Ptr projectPart) { if (projectPart) - return CppModelManager::instance()->projectPartForProjectFile(projectPart->projectFile); + return CppModelManager::instance()->projectPartForId(projectPart->id()); return false; } -QString projectFilePathForFile(const QString &filePath) +QString projectPartIdForFile(const QString &filePath) { const ProjectPart::Ptr projectPart = projectPartForFile(filePath); if (isProjectPartValid(projectPart)) - return projectPart->projectFile; // OK, Project Part is still loaded + return projectPart->id(); // OK, Project Part is still loaded return QString(); } diff --git a/src/plugins/clangcodemodel/clangutils.h b/src/plugins/clangcodemodel/clangutils.h index d3a78cc45b..fdee8af6f8 100644 --- a/src/plugins/clangcodemodel/clangutils.h +++ b/src/plugins/clangcodemodel/clangutils.h @@ -55,7 +55,7 @@ QStringList createPCHInclusionOptions(const QString &pchFile); CppTools::ProjectPart::Ptr projectPartForFile(const QString &filePath); bool isProjectPartValid(const CppTools::ProjectPart::Ptr projectPart); -QString projectFilePathForFile(const QString &filePath); +QString projectPartIdForFile(const QString &filePath); } // namespace Utils } // namespace Clang diff --git a/src/plugins/clangcodemodel/completionchunkstotextconverter.cpp b/src/plugins/clangcodemodel/completionchunkstotextconverter.cpp index 92d9c30074..f8f76989f1 100644 --- a/src/plugins/clangcodemodel/completionchunkstotextconverter.cpp +++ b/src/plugins/clangcodemodel/completionchunkstotextconverter.cpp @@ -36,7 +36,7 @@ namespace ClangCodeModel { namespace Internal { -void CompletionChunksToTextConverter::parseChunks(const QVector<ClangBackEnd::CodeCompletionChunk> &codeCompletionChunks) +void CompletionChunksToTextConverter::parseChunks(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks) { m_text.clear(); m_placeholderPositions.clear(); @@ -94,7 +94,7 @@ bool CompletionChunksToTextConverter::hasPlaceholderPositions() const return m_placeholderPositions.size() > 0; } -QString CompletionChunksToTextConverter::convertToFunctionSignature(const QVector<ClangBackEnd::CodeCompletionChunk> &codeCompletionChunks) +QString CompletionChunksToTextConverter::convertToFunctionSignature(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks) { CompletionChunksToTextConverter converter; converter.setAddPlaceHolderText(true); @@ -105,7 +105,7 @@ QString CompletionChunksToTextConverter::convertToFunctionSignature(const QVecto return converter.text(); } -QString CompletionChunksToTextConverter::convertToName(const QVector<ClangBackEnd::CodeCompletionChunk> &codeCompletionChunks) +QString CompletionChunksToTextConverter::convertToName(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks) { CompletionChunksToTextConverter converter; @@ -114,7 +114,7 @@ QString CompletionChunksToTextConverter::convertToName(const QVector<ClangBackEn return converter.text(); } -QString CompletionChunksToTextConverter::convertToToolTip(const QVector<ClangBackEnd::CodeCompletionChunk> &codeCompletionChunks) +QString CompletionChunksToTextConverter::convertToToolTip(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks) { CompletionChunksToTextConverter converter; converter.setAddPlaceHolderText(true); @@ -196,7 +196,7 @@ void CompletionChunksToTextConverter::addExtraVerticalSpaceBetweenBraces() addExtraVerticalSpaceBetweenBraces(m_codeCompletionChunks.begin()); } -void CompletionChunksToTextConverter::addExtraVerticalSpaceBetweenBraces(const QVector<ClangBackEnd::CodeCompletionChunk>::iterator &begin) +void CompletionChunksToTextConverter::addExtraVerticalSpaceBetweenBraces(const ClangBackEnd::CodeCompletionChunks::iterator &begin) { using ClangBackEnd::CodeCompletionChunk; diff --git a/src/plugins/clangcodemodel/completionchunkstotextconverter.h b/src/plugins/clangcodemodel/completionchunkstotextconverter.h index 6e1e6b290f..68c2bbcd14 100644 --- a/src/plugins/clangcodemodel/completionchunkstotextconverter.h +++ b/src/plugins/clangcodemodel/completionchunkstotextconverter.h @@ -45,7 +45,7 @@ namespace Internal { class CompletionChunksToTextConverter { public: - void parseChunks(const QVector<ClangBackEnd::CodeCompletionChunk> &codeCompletionChunks); + void parseChunks(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks); void setAddPlaceHolderText(bool addPlaceHolderText); void setAddPlaceHolderPositions(bool addPlaceHolderPositions); @@ -57,9 +57,9 @@ public: const std::vector<int> &placeholderPositions() const; bool hasPlaceholderPositions() const; - static QString convertToFunctionSignature(const QVector<ClangBackEnd::CodeCompletionChunk> &codeCompletionChunks); - static QString convertToName(const QVector<ClangBackEnd::CodeCompletionChunk> &codeCompletionChunks); - static QString convertToToolTip(const QVector<ClangBackEnd::CodeCompletionChunk> &codeCompletionChunks); + static QString convertToFunctionSignature(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks); + static QString convertToName(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks); + static QString convertToToolTip(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks); private: void parse(const ClangBackEnd::CodeCompletionChunk & codeCompletionChunk); void parseResultType(const Utf8String &text); @@ -69,13 +69,13 @@ private: void parseLeftParen(const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk); void parseLeftBrace(const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk); void addExtraVerticalSpaceBetweenBraces(); - void addExtraVerticalSpaceBetweenBraces(const QVector<ClangBackEnd::CodeCompletionChunk>::iterator &); + void addExtraVerticalSpaceBetweenBraces(const ClangBackEnd::CodeCompletionChunks::iterator &); bool canAddSpace() const; private: std::vector<int> m_placeholderPositions; - QVector<ClangBackEnd::CodeCompletionChunk> m_codeCompletionChunks; + ClangBackEnd::CodeCompletionChunks m_codeCompletionChunks; ClangBackEnd::CodeCompletionChunk m_previousCodeCompletionChunk; QString m_text; bool m_addPlaceHolderText = false; diff --git a/src/plugins/clangcodemodel/cppcreatemarkers.cpp b/src/plugins/clangcodemodel/cppcreatemarkers.cpp index 5a56b1e2fb..a7518b355c 100644 --- a/src/plugins/clangcodemodel/cppcreatemarkers.cpp +++ b/src/plugins/clangcodemodel/cppcreatemarkers.cpp @@ -32,6 +32,7 @@ #include "cppcreatemarkers.h" #include <cplusplus/CppDocument.h> +#include <utils/executeondestruction.h> #include <utils/runextensions.h> #include <QCoreApplication> @@ -77,6 +78,9 @@ CreateMarkers::~CreateMarkers() void CreateMarkers::run() { QMutexLocker lock(m_marker->mutex()); + + ::Utils::ExecuteOnDestruction reportFinishedOnDestruction([this]() { reportFinished(); }); + if (isCanceled()) return; @@ -86,23 +90,18 @@ void CreateMarkers::run() m_usages.clear(); - if (isCanceled()) { - reportFinished(); + if (isCanceled()) return; - } const QList<ClangCodeModel::SourceMarker> markers = m_marker->sourceMarkersInRange(m_firstLine, m_lastLine); foreach (const ClangCodeModel::SourceMarker &m, markers) addUse(SourceMarker(m.location().line(), m.location().column(), m.length(), m.kind())); - if (isCanceled()) { - reportFinished(); + if (isCanceled()) return; - } flush(); - reportFinished(); qCDebug(log) << "Creating markers took" << t.elapsed() << "ms in total."; } diff --git a/src/plugins/clangcodemodel/semanticmarker.cpp b/src/plugins/clangcodemodel/semanticmarker.cpp index 71a5abc03d..cb17346d10 100644 --- a/src/plugins/clangcodemodel/semanticmarker.cpp +++ b/src/plugins/clangcodemodel/semanticmarker.cpp @@ -33,6 +33,7 @@ #include "utils_p.h" #include "cxraii.h" +#include <utils/mimetypes/mimedatabase.h> #include <utils/qtcassert.h> using namespace ClangCodeModel; @@ -131,12 +132,23 @@ static void appendDiagnostic(const CXDiagnostic &diag, } } +static bool isBlackListedDiagnostic(const Utils::MimeType &mimeType, const QString &diagnostic) +{ + static QString pragmaOnceInMainFile = QLatin1String("#pragma once in main file"); + + return diagnostic == pragmaOnceInMainFile + && mimeType.inherits(QLatin1String("text/x-chdr")); +} + QList<Diagnostic> SemanticMarker::diagnostics() const { QList<Diagnostic> diagnostics; if (!m_unit || !m_unit->isLoaded()) return diagnostics; + Utils::MimeDatabase mimeDatabase; + const Utils::MimeType mimeType = mimeDatabase.mimeTypeForFile(fileName()); + const unsigned diagCount = m_unit->getNumDiagnostics(); for (unsigned i = 0; i < diagCount; ++i) { ScopedCXDiagnostic diag(m_unit->getDiagnostic(i)); @@ -148,6 +160,9 @@ QList<Diagnostic> SemanticMarker::diagnostics() const CXSourceLocation cxLocation = clang_getDiagnosticLocation(diag); QString spelling = Internal::getQString(clang_getDiagnosticSpelling(diag)); + if (isBlackListedDiagnostic(mimeType, spelling)) + continue; + // Attach messages with Diagnostic::Note severity ScopedCXDiagnosticSet cxChildren(clang_getChildDiagnostics(diag)); const unsigned numChildren = clang_getNumDiagnosticsInSet(cxChildren); @@ -333,9 +348,8 @@ QList<SourceMarker> SemanticMarker::sourceMarkersInRange(unsigned firstLine, unsigned lastLine) { QList<SourceMarker> result; - QTC_ASSERT(m_unit, return result); - if (!m_unit->isLoaded()) + if (!m_unit || !m_unit->isLoaded()) return result; // Highlighting called asynchronously, and a few lines at the end can be deleted for this time. diff --git a/src/plugins/clangcodemodel/test/clang_tests_database.qrc b/src/plugins/clangcodemodel/test/clang_tests_database.qrc index 7cc0ac8a87..aeda67e434 100644 --- a/src/plugins/clangcodemodel/test/clang_tests_database.qrc +++ b/src/plugins/clangcodemodel/test/clang_tests_database.qrc @@ -20,5 +20,6 @@ <file>exampleIncludeDir/otherFile.h</file> <file>exampleIncludeDir/mylib/mylib.h</file> <file>globalCompletion.cpp</file> + <file>constructorCompletion.cpp</file> </qresource> </RCC> diff --git a/src/plugins/clangcodemodel/test/clangcodecompletion_test.cpp b/src/plugins/clangcodemodel/test/clangcodecompletion_test.cpp index 584b47b3c2..3b5cbef89a 100644 --- a/src/plugins/clangcodemodel/test/clangcodecompletion_test.cpp +++ b/src/plugins/clangcodemodel/test/clangcodecompletion_test.cpp @@ -34,6 +34,7 @@ #include "../clangcompletionassistinterface.h" #include "../clangmodelmanagersupport.h" +#include <clangcodemodel/clangeditordocumentprocessor.h> #include <clangcodemodel/constants.h> #include <coreplugin/editormanager/editormanager.h> @@ -80,6 +81,13 @@ QString qrcPath(const QByteArray relativeFilePath) QString fileName(const QString &filePath) { return QFileInfo(filePath).fileName(); } +CppTools::Tests::TemporaryDir *globalTemporaryDir() +{ + static CppTools::Tests::TemporaryDir dir; + QTC_CHECK(dir.isValid()); + return &dir; +} + struct LogOutput { LogOutput(const QString &text) : text(text.toUtf8()) {} @@ -469,11 +477,13 @@ public: OpenEditorAtCursorPosition(const TestDocument &testDocument); ~OpenEditorAtCursorPosition(); // Close editor - bool succeeded() const { return m_editor; } + bool succeeded() const { return m_editor && m_backendIsNotified; } + bool waitUntilBackendIsNotified(int timeout = 10000); TextEditor::BaseTextEditor *editor() const { return m_editor; } private: TextEditor::BaseTextEditor *m_editor; + bool m_backendIsNotified = false; }; OpenEditorAtCursorPosition::OpenEditorAtCursorPosition(const TestDocument &testDocument) @@ -483,6 +493,8 @@ OpenEditorAtCursorPosition::OpenEditorAtCursorPosition(const TestDocument &testD QTC_CHECK(m_editor); if (m_editor && testDocument.hasValidCursorPosition()) m_editor->setCursorPosition(testDocument.cursorPosition); + m_backendIsNotified = waitUntilBackendIsNotified(); + QTC_CHECK(m_backendIsNotified); } OpenEditorAtCursorPosition::~OpenEditorAtCursorPosition() @@ -491,6 +503,30 @@ OpenEditorAtCursorPosition::~OpenEditorAtCursorPosition() Core::EditorManager::closeEditor(m_editor, /* askAboutModifiedEditors= */ false); } +bool OpenEditorAtCursorPosition::waitUntilBackendIsNotified(int timeout) +{ + QTC_ASSERT(m_editor, return false); + + const QString filePath = m_editor->document()->filePath().toString(); + + QTime time; + time.start(); + + forever { + if (time.elapsed() > timeout) + return false; + + const auto *processor = ClangEditorDocumentProcessor::get(filePath); + if (processor && processor->projectPart()) + return true; + + QCoreApplication::processEvents(); + QThread::msleep(20); + } + + return false; +} + CppTools::ProjectPart::Ptr createProjectPart(const QStringList &files, const QString &defines) { @@ -576,7 +612,7 @@ public: CppTools::Tests::TestCase garbageCollectionGlobalSnapshot; QVERIFY(garbageCollectionGlobalSnapshot.succeededSoFar()); - const TestDocument testDocument(testFileName); + const TestDocument testDocument(testFileName, globalTemporaryDir()); QVERIFY(testDocument.isCreatedAndHasValidCursorPosition()); OpenEditorAtCursorPosition openEditor(testDocument); @@ -838,6 +874,15 @@ void ClangCodeCompletionTest::testCompleteFunctions() QVERIFY(hasItem(t.proposal, "TType<QString> f(bool)")); } +void ClangCodeCompletionTest::testCompleteConstructorAndFallbackToGlobalCompletion() +{ + ProjectLessCompletionTest t("constructorCompletion.cpp"); + + QVERIFY(hasItem(t.proposal, "globalVariable")); + QVERIFY(hasItem(t.proposal, "GlobalClassWithCustomConstructor")); + QVERIFY(!hasSnippet(t.proposal, "class")); +} + void ClangCodeCompletionTest::testProjectDependentCompletion() { const TestDocument testDocument("completionWithProject.cpp"); @@ -1029,23 +1074,27 @@ void ClangCodeCompletionTest::testUpdateBackendAfterRestart() CppTools::Tests::ProjectOpenerAndCloser projectManager; const CppTools::ProjectInfo projectInfo = projectManager.open(projectFilePath, true); QVERIFY(projectInfo.isValid()); + QVERIFY(monitorGeneratedUiFile.waitUntilGenerated()); // ...and a file of the project const QString completionFile = testDir.absolutePath("mainwindow.cpp"); const TestDocument testDocument = TestDocument::fromExistingFile(completionFile); QVERIFY(testDocument.isCreatedAndHasValidCursorPosition()); OpenEditorAtCursorPosition openSource(testDocument); QVERIFY(openSource.succeeded()); - QVERIFY(monitorGeneratedUiFile.waitUntilGenerated()); // Check commands that would have been sent QVERIFY(compare(LogOutput(spy.senderLog), LogOutput( - "RegisterProjectPartsForCodeCompletionCommand\n" - " ProjectPartContainer id: qt-widgets-app.pro\n" "RegisterTranslationUnitForCodeCompletionCommand\n" " Path: myheader.h ProjectPart: \n" + "RegisterProjectPartsForCodeCompletionCommand\n" + " ProjectPartContainer id: qt-widgets-app.pro qt-widgets-app\n" "RegisterTranslationUnitForCodeCompletionCommand\n" " Path: ui_mainwindow.h ProjectPart: \n" + "RegisterTranslationUnitForCodeCompletionCommand\n" + " Path: myheader.h ProjectPart: \n" + "RegisterTranslationUnitForCodeCompletionCommand\n" + " Path: mainwindow.cpp ProjectPart: qt-widgets-app.pro qt-widgets-app\n" ))); spy.senderLog.clear(); @@ -1062,7 +1111,7 @@ void ClangCodeCompletionTest::testUpdateBackendAfterRestart() "RegisterProjectPartsForCodeCompletionCommand\n" " ProjectPartContainer id: \n" "RegisterProjectPartsForCodeCompletionCommand\n" - " ProjectPartContainer id: qt-widgets-app.pro\n" + " ProjectPartContainer id: qt-widgets-app.pro qt-widgets-app\n" "RegisterTranslationUnitForCodeCompletionCommand\n" " Path: myheader.h ProjectPart: \n" "RegisterTranslationUnitForCodeCompletionCommand\n" diff --git a/src/plugins/clangcodemodel/test/clangcodecompletion_test.h b/src/plugins/clangcodemodel/test/clangcodecompletion_test.h index 1f1bb4a8f8..52ff5f172d 100644 --- a/src/plugins/clangcodemodel/test/clangcodecompletion_test.h +++ b/src/plugins/clangcodemodel/test/clangcodecompletion_test.h @@ -57,6 +57,7 @@ private slots: void testCompleteGlobals(); void testCompleteMembers(); void testCompleteFunctions(); + void testCompleteConstructorAndFallbackToGlobalCompletion(); void testProjectDependentCompletion(); void testChangingProjectDependentCompletion(); diff --git a/src/plugins/clangcodemodel/test/clangcompletioncontextanalyzertest.cpp b/src/plugins/clangcodemodel/test/clangcompletioncontextanalyzertest.cpp deleted file mode 100644 index afa881eb05..0000000000 --- a/src/plugins/clangcodemodel/test/clangcompletioncontextanalyzertest.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms and -** conditions see http://www.qt.io/terms-conditions. For further information -** use the contact form at http://www.qt.io/contact-us. -** -** 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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -****************************************************************************/ - -#include "clangcompletioncontextanalyzertest.h" - -#include <clangcodemodel/clangcompletioncontextanalyzer.h> -#include <texteditor/codeassist/assistinterface.h> - -#include <utils/qtcassert.h> - -#include <QDebug> -#include <QTest> -#include <QTextDocument> - -using namespace CPlusPlus; -using namespace ClangCodeModel; -using namespace ClangCodeModel::Internal; -using namespace ClangCodeModel::Internal::Tests; - -Q_DECLARE_METATYPE(ClangCodeModel::Internal::ClangCompletionContextAnalyzer::CompletionAction) - -QT_BEGIN_NAMESPACE -namespace QTest { - -template<> char *toString(const ClangCompletionContextAnalyzer::CompletionAction &action) -{ - using CCA = ClangCompletionContextAnalyzer; - - switch (action) { - case CCA::PassThroughToLibClang: - return qstrdup("PassThroughToLibClang"); - case CCA::PassThroughToLibClangAfterLeftParen: - return qstrdup("PassThroughToLibClangAfterLeftParen"); - case CCA::CompleteDoxygenKeyword: - return qstrdup("CompleteDoxygenKeyword"); - case CCA::CompleteIncludePath: - return qstrdup("CompleteIncludePath"); - case CCA::CompletePreprocessorDirective: - return qstrdup("CompletePreprocessorDirective"); - case CCA::CompleteSignal: - return qstrdup("CompleteSignal"); - case CCA::CompleteSlot: - return qstrdup("CompleteSlot"); - } - return qstrdup("Unexpected Value"); -} - -} // namespace QTest -QT_END_NAMESPACE - -namespace { - -typedef QByteArray _; - -class DummyAssistInterface : public TextEditor::AssistInterface -{ -public: - DummyAssistInterface(const QByteArray &text, int position) - : AssistInterface(new QTextDocument(QString::fromUtf8(text)), - position, - QLatin1String("<testdocument>"), - TextEditor::ActivationCharacter) - {} - ~DummyAssistInterface() { delete textDocument(); } -}; - -class TestDocument -{ -public: - TestDocument(const QByteArray &theSource) - : source(theSource) - , position(theSource.lastIndexOf('@')) // Use 'lastIndexOf' due to doxygen: "//! @keyword" - { - QTC_CHECK(position != -1); - source.remove(position, 1); - } - - QByteArray source; - int position; -}; - -bool isAPassThroughToLibClangAction(ClangCompletionContextAnalyzer::CompletionAction action) -{ - return action == ClangCompletionContextAnalyzer::PassThroughToLibClang - || action == ClangCompletionContextAnalyzer::PassThroughToLibClangAfterLeftParen; -} - -ClangCompletionContextAnalyzer runAnalyzer(const TestDocument &testDocument) -{ - DummyAssistInterface assistInterface(testDocument.source, testDocument.position); - ClangCompletionContextAnalyzer analyzer(&assistInterface, LanguageFeatures::defaultFeatures()); - analyzer.analyze(); - return analyzer; -} - -} // anonymous namespace - -void ClangCompletionContextAnalyzerTest::testPassThroughToClangAndSignalSlotRecognition_data() -{ - QTest::addColumn<QByteArray>("givenSource"); - QTest::addColumn<ClangCompletionContextAnalyzer::CompletionAction>("expectedCompletionAction"); - QTest::addColumn<int>("expectedDiffBetweenCursorAndCalculatedClangPosition"); - QTest::addColumn<int>("expectedDiffBetweenCursorAndCalculatedProposalPosition"); - - using CCA = ClangCompletionContextAnalyzer; - - QTest::newRow("members - dot 1") << _("o.mem@") << CCA::PassThroughToLibClang << -3 << -3; - QTest::newRow("members - dot 2") << _("o. mem@") << CCA::PassThroughToLibClang << -4 << -3; - QTest::newRow("members - dot 3") << _("o.@mem") << CCA::PassThroughToLibClang << 0 << 0; - QTest::newRow("members - dot 4") << _("o. @ mem") << CCA::PassThroughToLibClang << -1 << 0; - QTest::newRow("members - arrow 1") << _("o->mem@") << CCA::PassThroughToLibClang << -3 << -3; - QTest::newRow("members - arrow 2") << _("o-> mem@") << CCA::PassThroughToLibClang << -4 << -3; - QTest::newRow("members - arrow 3") << _("o->@mem") << CCA::PassThroughToLibClang << 0 << 0; - QTest::newRow("members - arrow 4") << _("o-> @ mem") << CCA::PassThroughToLibClang << -1 << 0; - - QTest::newRow("call 1") << _("f(@") << CCA::PassThroughToLibClangAfterLeftParen << -2 << 0; - QTest::newRow("call 2") << _("f(1,@") << CCA::PassThroughToLibClangAfterLeftParen << -4 << -2; - QTest::newRow("call 3") << _("f(1, @") << CCA::PassThroughToLibClang << -1 << 0; - - QTest::newRow("qt4 signals 1") << _("SIGNAL(@") << CCA::CompleteSignal << 0 << 0; - QTest::newRow("qt4 signals 2") << _("SIGNAL(foo@") << CCA::CompleteSignal << -3 << -3; - QTest::newRow("qt4 slots 1") << _("SLOT(@") << CCA::CompleteSlot << 0 << 0; - QTest::newRow("qt4 slots 2") << _("SLOT(foo@") << CCA::CompleteSlot << -3 << -3; -} - -void ClangCompletionContextAnalyzerTest::testPassThroughToClangAndSignalSlotRecognition() -{ - QFETCH(QByteArray, givenSource); - QFETCH(ClangCompletionContextAnalyzer::CompletionAction, expectedCompletionAction); - QFETCH(int, expectedDiffBetweenCursorAndCalculatedClangPosition); - QFETCH(int, expectedDiffBetweenCursorAndCalculatedProposalPosition); - - const TestDocument testDocument(givenSource); - ClangCompletionContextAnalyzer analyzer = runAnalyzer(testDocument); - - QCOMPARE(analyzer.completionAction(), expectedCompletionAction); - QCOMPARE(analyzer.positionForClang() - testDocument.position, - expectedDiffBetweenCursorAndCalculatedClangPosition); - QCOMPARE(analyzer.positionForProposal() - testDocument.position, - expectedDiffBetweenCursorAndCalculatedProposalPosition); -} - -void ClangCompletionContextAnalyzerTest::testSpecialCompletionRecognition_data() -{ - QTest::addColumn<QByteArray>("givenSource"); - QTest::addColumn<ClangCompletionContextAnalyzer::CompletionAction>("expectedCompletionAction"); - QTest::addColumn<int>("expectedDiffBetweenCursorAndCalculatedProposalPosition"); - - using CCA = ClangCompletionContextAnalyzer; - - QTest::newRow("doxygen keywords 1") << _("//! \\@") << CCA::CompleteDoxygenKeyword << 0; - QTest::newRow("doxygen keywords 3") << _("//! @@") << CCA::CompleteDoxygenKeyword << 0; - QTest::newRow("doxygen keywords 2") << _("//! \\par@") << CCA::CompleteDoxygenKeyword << -3; - - QTest::newRow("pp directives 1") << _("#@") << CCA::CompletePreprocessorDirective << 0; - QTest::newRow("pp directives 2") << _("#if@") << CCA::CompletePreprocessorDirective << -2; - - QTest::newRow("pp include path 1") << _("#include \"foo@\"") << CCA::CompleteIncludePath << -3; - QTest::newRow("pp include path 2") << _("#include <foo@>") << CCA::CompleteIncludePath << -3; - QTest::newRow("pp include path 3") << _("#include <foo/@>") << CCA::CompleteIncludePath << 0; -} - -void ClangCompletionContextAnalyzerTest::testSpecialCompletionRecognition() -{ - QFETCH(QByteArray, givenSource); - QFETCH(ClangCompletionContextAnalyzer::CompletionAction, expectedCompletionAction); - QFETCH(int, expectedDiffBetweenCursorAndCalculatedProposalPosition); - - const TestDocument testDocument(givenSource); - ClangCompletionContextAnalyzer analyzer = runAnalyzer(testDocument); - - QCOMPARE(analyzer.completionAction(), expectedCompletionAction); - QCOMPARE(analyzer.positionForClang(), -1); - QCOMPARE(analyzer.positionForProposal() - testDocument.position, - expectedDiffBetweenCursorAndCalculatedProposalPosition); -} - -void ClangCompletionContextAnalyzerTest::testAvoidSpecialCompletionRecognition_data() -{ - QTest::addColumn<QByteArray>("givenSource"); - - QTest::newRow("no special completion for literals 1") << _("\"@"); - QTest::newRow("no special completion for literals 2") << _(" \"@"); - QTest::newRow("no special completion for literals 3") << _("\"text\"@"); - QTest::newRow("no special completion for literals 4") << _("\"hello cruel@ world\""); - QTest::newRow("no special completion for literals 5") << _("'@'"); - QTest::newRow("no special completion for literals 6") << _("'a@'"); - QTest::newRow("no special completion for comma operator") << _("a = b,@\""); - QTest::newRow("no special completion for doxygen marker not in doxygen comment 1") << _("@@"); - QTest::newRow("no special completion for doxygen marker not in doxygen comment 2") << _("\\@"); - QTest::newRow("no special completion in comments 1") << _("// text@"); - QTest::newRow("no special completion in comments 2") << _("/* text@ */"); - QTest::newRow("no special completion for slash") << _("5 /@"); - QTest::newRow("no special completion for '(' 1") << _("(@"); - QTest::newRow("no special completion for '(' 2") << _("((@"); - QTest::newRow("no special completion for '(' 3") << _("*(@"); -} - -void ClangCompletionContextAnalyzerTest::testAvoidSpecialCompletionRecognition() -{ - QFETCH(QByteArray, givenSource); - - const TestDocument testDocument(givenSource); - ClangCompletionContextAnalyzer analyzer = runAnalyzer(testDocument); - - QVERIFY(isAPassThroughToLibClangAction(analyzer.completionAction())); -} diff --git a/src/plugins/clangcodemodel/test/constructorCompletion.cpp b/src/plugins/clangcodemodel/test/constructorCompletion.cpp new file mode 100644 index 0000000000..1b19b68a10 --- /dev/null +++ b/src/plugins/clangcodemodel/test/constructorCompletion.cpp @@ -0,0 +1,9 @@ +int globalVariable; + +struct GlobalClassWithCustomConstructor { + GlobalClassWithCustomConstructor(int) {} +}; + +void f() { + GlobalClassWithCustomConstructor foo( /* COMPLETE HERE */ +} diff --git a/src/plugins/clangcodemodel/test/qt-widgets-app/mainwindow.ui b/src/plugins/clangcodemodel/test/qt-widgets-app/mainwindow.ui index 6050363fa7..f6ca1871f3 100644 --- a/src/plugins/clangcodemodel/test/qt-widgets-app/mainwindow.ui +++ b/src/plugins/clangcodemodel/test/qt-widgets-app/mainwindow.ui @@ -9,16 +9,12 @@ <height>300</height> </rect> </property> - <property name="windowTitle" > - <string>MainWindow</string> - </property> <widget class="QMenuBar" name="menuBar" /> <widget class="QToolBar" name="mainToolBar" /> <widget class="QWidget" name="centralWidget" /> <widget class="QStatusBar" name="statusBar" /> </widget> <layoutDefault spacing="6" margin="11" /> - <pixmapfunction></pixmapfunction> <resources/> <connections/> </ui> diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp index b0ce2c96f5..7b621b5a8c 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp @@ -47,6 +47,7 @@ CMakeKitInformation::CMakeKitInformation() { setObjectName(QLatin1String("CMakeKitInformation")); setId(CMakeKitInformation::id()); + setPriority(20000); //make sure the default value is set if a selected CMake is removed connect(CMakeToolManager::instance(), &CMakeToolManager::cmakeRemoved, diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp index 35808e404c..44c5624cf1 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp @@ -378,6 +378,7 @@ void CMakeToolItemConfigWidget::load(const CMakeToolTreeItem *item) class CMakeToolConfigWidget : public QWidget { + Q_OBJECT public: CMakeToolConfigWidget() : m_currentItem(0) { @@ -572,3 +573,5 @@ void CMakeSettingsPage::finish() } // namespace Internal } // namespace CMakeProjectManager + +#include "cmakesettingspage.moc" diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp index 2746303cf0..e64e4fe646 100644 --- a/src/plugins/cppeditor/cppeditordocument.cpp +++ b/src/plugins/cppeditor/cppeditordocument.cpp @@ -254,13 +254,13 @@ void CppEditorDocument::updatePreprocessorSettings() return; const QString prefix = QLatin1String(Constants::CPP_PREPROCESSOR_PROJECT_PREFIX); - const QString &projectFile = ProjectExplorer::SessionManager::value( + const QString &projectPartId = ProjectExplorer::SessionManager::value( prefix + filePath().toString()).toString(); - const QString directivesKey = projectFile + QLatin1Char(',') + filePath().toString(); + const QString directivesKey = projectPartId + QLatin1Char(',') + filePath().toString(); const QByteArray additionalDirectives = ProjectExplorer::SessionManager::value( directivesKey).toString().toUtf8(); - setPreprocessorSettings(mm()->projectPartForProjectFile(projectFile), additionalDirectives); + setPreprocessorSettings(mm()->projectPartForId(projectPartId), additionalDirectives); } void CppEditorDocument::setPreprocessorSettings(const CppTools::ProjectPart::Ptr &projectPart, diff --git a/src/plugins/cppeditor/cppeditorplugin.h b/src/plugins/cppeditor/cppeditorplugin.h index 8745dc9bb4..a4f4304b0c 100644 --- a/src/plugins/cppeditor/cppeditorplugin.h +++ b/src/plugins/cppeditor/cppeditorplugin.h @@ -213,8 +213,17 @@ private slots: void test_includehierarchy_data(); void test_includehierarchy(); - // The following tests depend on the projects that are loaded on startup - // and will be skipped in case no projects are loaded. + // The following tests operate on a project and require special invocation: + // + // Ensure that the project is properly configured for a given settings path: + // $ ./qtcreator -settingspath /your/settings/path /path/to/project + // + // ...and that it builds, which might prevent blocking dialogs for not + // existing files (e.g. ui_*.h). + // + // Run a test: + // $ export QTC_TEST_WAIT_FOR_LOADED_PROJECT=1 + // $ ./qtcreator -settingspath /your/settings/path -test CppEditor,test_openEachFile /path/to/project void test_openEachFile(); void test_switchHeaderSourceOnEachFile(); void test_moveTokenWiseThroughEveryFile(); diff --git a/src/plugins/cppeditor/cpppreprocessordialog.cpp b/src/plugins/cppeditor/cpppreprocessordialog.cpp index 2b9210f04b..fcc9f69c6d 100644 --- a/src/plugins/cppeditor/cpppreprocessordialog.cpp +++ b/src/plugins/cppeditor/cpppreprocessordialog.cpp @@ -70,7 +70,7 @@ CppPreProcessorDialog::CppPreProcessorDialog(QWidget *parent, const QString &fil ProjectPartAddition addition; addition.projectPart = projectPart; addition.additionalDirectives = ProjectExplorer::SessionManager::value( - projectPart->projectFile + QLatin1Char(',') + m_filePath).toString(); + projectPart->id() + QLatin1Char(',') + m_filePath).toString(); if (projectPart->id() == projectPartIdToUse) currentIndex = m_ui->projectComboBox->count() - 1; m_partAdditions << addition; @@ -96,16 +96,16 @@ int CppPreProcessorDialog::exec() ProjectExplorer::SessionManager::setValue( QLatin1String(Constants::CPP_PREPROCESSOR_PROJECT_PREFIX) + m_filePath, - m_partAdditions[m_ui->projectComboBox->currentIndex()].projectPart->projectFile); + m_partAdditions[m_ui->projectComboBox->currentIndex()].projectPart->id()); foreach (ProjectPartAddition partAddition, m_partAdditions) { const QString &previousDirectives = ProjectExplorer::SessionManager::value( - partAddition.projectPart->projectFile + partAddition.projectPart->id() + QLatin1Char(',') + m_filePath).toString(); if (previousDirectives != partAddition.additionalDirectives) { ProjectExplorer::SessionManager::setValue( - partAddition.projectPart->projectFile + QLatin1Char(',') + m_filePath, + partAddition.projectPart->id() + QLatin1Char(',') + m_filePath, partAddition.additionalDirectives); } } diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp index 4945fd8ae7..cbc04f6a67 100644 --- a/src/plugins/cppeditor/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/cppquickfix_test.cpp @@ -1720,6 +1720,23 @@ void CppEditorPlugin::test_quickfix_data() " f2(str);\n" "}\n"); + QTest::newRow("ConvertToPointerWithMacro") + << CppQuickFixFactoryPtr(new ConvertFromAndToPointer) + << _("#define BAR bar\n" + "void func()\n" + "{\n" + " int @foo = 42;\n" + " int bar;\n" + " BAR = foo;\n" + "}\n") + << _("#define BAR bar\n" + "void func()\n" + "{\n" + " int *foo = 42;\n" + " int bar;\n" + " BAR = *foo;\n" + "}\n"); + QTest::newRow("InsertQtPropertyMembers_noTriggerInvalidCode") << CppQuickFixFactoryPtr(new InsertQtPropertyMembers) << _("class C { @Q_PROPERTY(typeid foo READ foo) };\n") diff --git a/src/plugins/cppeditor/fileandtokenactions_test.cpp b/src/plugins/cppeditor/fileandtokenactions_test.cpp index 7e3e463589..63ab5cc688 100644 --- a/src/plugins/cppeditor/fileandtokenactions_test.cpp +++ b/src/plugins/cppeditor/fileandtokenactions_test.cpp @@ -118,17 +118,8 @@ private: CppEditor *editor, const Actions &tokenActions); static void undoAllChangesAndCloseAllEditors(); - - /// This function expects: - /// (1) Only Qt4 projects are loaded (qmake in PATH should point to Qt4/bin). - /// (2) No *.pro.user file exists for the projects. - static void configureAllProjects(const QList<QPointer<ProjectExplorer::Project> > &projects); - - static bool allProjectsConfigured; }; -bool TestActionsTestCase::allProjectsConfigured = false; - typedef TestActionsTestCase::Actions Actions; typedef TestActionsTestCase::ActionPointer ActionPointer; @@ -137,18 +128,35 @@ Actions singleAction(const ActionPointer &action) return Actions() << action; } +static bool waitUntilAProjectIsLoaded(int timeOutInMs = 30000) +{ + QElapsedTimer timer; + timer.start(); + + while (timer.elapsed() < timeOutInMs) { + if (!CppModelManager::instance()->projectInfos().isEmpty()) + return true; + + QCoreApplication::processEvents(); + QThread::msleep(20); + } + + return false; +} + TestActionsTestCase::TestActionsTestCase(const Actions &tokenActions, const Actions &fileActions) : Tests::TestCase(/*runGarbageCollector=*/false) { QVERIFY(succeededSoFar()); + if (qgetenv("QTC_TEST_WAIT_FOR_LOADED_PROJECT") != "1") + QSKIP("Environment variable QTC_TEST_WAIT_FOR_LOADED_PROJECT=1 not set."); + QVERIFY(waitUntilAProjectIsLoaded()); + // Collect files to process QStringList filesToOpen; QList<QPointer<ProjectExplorer::Project> > projects; - const QList<ProjectInfo> projectInfos - = m_modelManager->projectInfos(); - if (projectInfos.isEmpty()) - QSKIP("No project(s) loaded. Test operates only on loaded projects."); + const QList<ProjectInfo> projectInfos = m_modelManager->projectInfos(); foreach (const ProjectInfo &info, projectInfos) { QPointer<ProjectExplorer::Project> project = info.project(); @@ -160,12 +168,6 @@ TestActionsTestCase::TestActionsTestCase(const Actions &tokenActions, const Acti filesToOpen << sourceFile; } - // Configure all projects on first execution of this function (= very first test) - if (!TestActionsTestCase::allProjectsConfigured) { - configureAllProjects(projects); - TestActionsTestCase::allProjectsConfigured = true; - } - Utils::sort(filesToOpen); // Process all files from the projects @@ -311,15 +313,6 @@ void TestActionsTestCase::undoAllChangesAndCloseAllEditors() QCOMPARE(DocumentModel::openedDocuments().size(), 0); } -void TestActionsTestCase::configureAllProjects(const QList<QPointer<ProjectExplorer::Project> > - &projects) -{ - foreach (const QPointer<ProjectExplorer::Project> &project, projects) { - qDebug() << "*** Configuring project" << project->displayName(); - project->configureAsExampleProject(QStringList()); - } -} - class NoOpTokenAction : public TestActionsTestCase::AbstractAction { public: diff --git a/src/plugins/cpptools/baseeditordocumentparser.cpp b/src/plugins/cpptools/baseeditordocumentparser.cpp index 52fd64e113..314b7f98ab 100644 --- a/src/plugins/cpptools/baseeditordocumentparser.cpp +++ b/src/plugins/cpptools/baseeditordocumentparser.cpp @@ -126,7 +126,7 @@ ProjectPart::Ptr BaseEditorDocumentParser::determineProjectPart(const QString &f CppModelManager *cmm = CppModelManager::instance(); QList<ProjectPart::Ptr> projectParts = cmm->projectPart(filePath); if (projectParts.isEmpty()) { - if (projectPart) + if (projectPart && config.stickToPreviousProjectPart) // File is not directly part of any project, but we got one before. We will re-use it, // because re-calculating this can be expensive when the dependency table is big. return projectPart; diff --git a/src/plugins/cpptools/baseeditordocumentparser.h b/src/plugins/cpptools/baseeditordocumentparser.h index b9c8ecaadc..05f210716d 100644 --- a/src/plugins/cpptools/baseeditordocumentparser.h +++ b/src/plugins/cpptools/baseeditordocumentparser.h @@ -47,6 +47,7 @@ public: static BaseEditorDocumentParser *get(const QString &filePath); struct Configuration { + bool stickToPreviousProjectPart = true; bool usePrecompiledHeaders = false; QByteArray editorDefines; ProjectPart::Ptr manuallySetProjectPart; diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp index 11ecab7b3b..1285c40da3 100644 --- a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp +++ b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp @@ -491,7 +491,7 @@ void Dumper::dumpProjectInfos( const QList<ProjectInfo> &projectInfos) } if (!part->projectConfigFile.isEmpty()) m_out << i3 << "Project Config File: " << part->projectConfigFile << "\n"; - m_out << i2 << "Project Part \"" << part->projectFile << "\"{{{3\n"; + m_out << i2 << "Project Part \"" << part->id() << "\"{{{3\n"; m_out << i3 << "Project Part Name : " << part->displayName << "\n"; m_out << i3 << "Project Name : " << projectName << "\n"; m_out << i3 << "Project File : " << projectFilePath << "\n"; diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 0d1b13621d..be1fc9e258 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -54,6 +54,7 @@ #include <projectexplorer/projectexplorer.h> #include <projectexplorer/session.h> #include <extensionsystem/pluginmanager.h> +#include <utils/algorithm.h> #include <utils/fileutils.h> #include <utils/qtcassert.h> @@ -137,7 +138,7 @@ public: mutable QMutex m_projectMutex; QMap<ProjectExplorer::Project *, ProjectInfo> m_projectToProjectsInfo; QMap<Utils::FileName, QList<ProjectPart::Ptr> > m_fileToProjectParts; - QMap<QString, ProjectPart::Ptr> m_projectFileToProjectPart; + QMap<QString, ProjectPart::Ptr> m_projectPartIdToProjectProjectPart; // The members below are cached/(re)calculated from the projects and/or their project parts bool m_dirty; QStringList m_projectFiles; @@ -710,13 +711,11 @@ void CppModelManager::removeFilesFromSnapshot(const QSet<QString> &filesToRemove d->m_snapshot.remove(i.next()); } -static QStringList projectFilePaths(const QSet<ProjectPart::Ptr> &projectParts) +static QSet<QString> projectPartIds(const QSet<ProjectPart::Ptr> &projectParts) { - QStringList result; - QSetIterator<ProjectPart::Ptr> it(projectParts); - while (it.hasNext()) - result << it.next()->projectFile; - return result; + return Utils::transform(projectParts, [](const ProjectPart::Ptr &projectPart) { + return projectPart->id(); + }); } class ProjectInfoComparer @@ -750,9 +749,9 @@ public: QStringList removedProjectParts() { - QSet<ProjectPart::Ptr> removed = m_old.projectParts().toSet(); - removed.subtract(m_new.projectParts().toSet()); - return projectFilePaths(removed); + QSet<QString> removed = projectPartIds(m_old.projectParts().toSet()); + removed.subtract(projectPartIds(m_new.projectParts().toSet())); + return removed.toList(); } /// Returns a list of common files that have a changed timestamp. @@ -781,13 +780,13 @@ private: }; /// Make sure that m_projectMutex is locked when calling this. -void CppModelManager::recalculateFileToProjectParts() +void CppModelManager::recalculateProjectPartMappings() { - d->m_projectFileToProjectPart.clear(); + d->m_projectPartIdToProjectProjectPart.clear(); d->m_fileToProjectParts.clear(); foreach (const ProjectInfo &projectInfo, d->m_projectToProjectsInfo) { foreach (const ProjectPart::Ptr &projectPart, projectInfo.projectParts()) { - d->m_projectFileToProjectPart[projectPart->projectFile] = projectPart; + d->m_projectPartIdToProjectProjectPart[projectPart->id()] = projectPart; foreach (const ProjectFile &cxxFile, projectPart->files) d->m_fileToProjectParts[Utils::FileName::fromString(cxxFile.path)].append( projectPart); @@ -883,7 +882,7 @@ QFuture<void> CppModelManager::updateProjectInfo(const ProjectInfo &newProjectIn // Update Project/ProjectInfo and File/ProjectPart table d->m_projectToProjectsInfo.insert(project, newProjectInfo); - recalculateFileToProjectParts(); + recalculateProjectPartMappings(); } // Mutex scope @@ -908,9 +907,9 @@ QFuture<void> CppModelManager::updateProjectInfo(const ProjectInfo &newProjectIn return updateSourceFiles(filesToReindex, ForcedProgressNotification); } -ProjectPart::Ptr CppModelManager::projectPartForProjectFile(const QString &projectFile) const +ProjectPart::Ptr CppModelManager::projectPartForId(const QString &projectPartId) const { - return d->m_projectFileToProjectPart.value(projectFile); + return d->m_projectPartIdToProjectProjectPart.value(projectPartId); } QList<ProjectPart::Ptr> CppModelManager::projectPart(const Utils::FileName &fileName) const @@ -981,17 +980,17 @@ void CppModelManager::delayedGC() d->m_delayedGcTimer.start(500); } -static QStringList pathsOfAllProjectParts(const ProjectInfo &projectInfo) +static QStringList idsOfAllProjectParts(const ProjectInfo &projectInfo) { QStringList projectPaths; foreach (const ProjectPart::Ptr &part, projectInfo.projectParts()) - projectPaths << part->projectFile; + projectPaths << part->id(); return projectPaths; } void CppModelManager::onAboutToRemoveProject(ProjectExplorer::Project *project) { - QStringList projectFilePaths; + QStringList projectPartIds; { QMutexLocker locker(&d->m_projectMutex); @@ -999,14 +998,14 @@ void CppModelManager::onAboutToRemoveProject(ProjectExplorer::Project *project) // Save paths const ProjectInfo projectInfo = d->m_projectToProjectsInfo.value(project, ProjectInfo()); - projectFilePaths = pathsOfAllProjectParts(projectInfo); + projectPartIds = idsOfAllProjectParts(projectInfo); d->m_projectToProjectsInfo.remove(project); - recalculateFileToProjectParts(); + recalculateProjectPartMappings(); } - if (!projectFilePaths.isEmpty()) - emit projectPartsRemoved(projectFilePaths); + if (!projectPartIds.isEmpty()) + emit projectPartsRemoved(projectPartIds); delayedGC(); } @@ -1085,7 +1084,7 @@ void CppModelManager::onAboutToUnloadSession() do { QMutexLocker locker(&d->m_projectMutex); d->m_projectToProjectsInfo.clear(); - recalculateFileToProjectParts(); + recalculateProjectPartMappings(); d->m_dirty = true; } while (0); } diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index 24b2d2d6ee..b9ac4a9b0c 100644 --- a/src/plugins/cpptools/cppmodelmanager.h +++ b/src/plugins/cpptools/cppmodelmanager.h @@ -94,7 +94,7 @@ public: QFuture<void> updateProjectInfo(const ProjectInfo &newProjectInfo); /// \return The project part with the given project file - ProjectPart::Ptr projectPartForProjectFile(const QString &projectFile) const; + ProjectPart::Ptr projectPartForId(const QString &projectPartId) const; /// \return All project parts that mention the given file name as one of the sources/headers. QList<ProjectPart::Ptr> projectPart(const Utils::FileName &fileName) const; QList<ProjectPart::Ptr> projectPart(const QString &fileName) const @@ -170,7 +170,7 @@ signals: void sourceFilesRefreshed(const QSet<QString> &files); void projectPartsUpdated(ProjectExplorer::Project *project); - void projectPartsRemoved(const QStringList &projectFiles); + void projectPartsRemoved(const QStringList &projectPartIds); void globalSnapshotChanged(); @@ -198,7 +198,7 @@ private slots: private: void delayedGC(); - void recalculateFileToProjectParts(); + void recalculateProjectPartMappings(); void updateCppEditorDocuments() const; void replaceSnapshot(const CPlusPlus::Snapshot &newSnapshot); diff --git a/src/plugins/cpptools/cppprojects.cpp b/src/plugins/cpptools/cppprojects.cpp index d04da92b75..29f8d1cd8f 100644 --- a/src/plugins/cpptools/cppprojects.cpp +++ b/src/plugins/cpptools/cppprojects.cpp @@ -146,7 +146,10 @@ ProjectPart::Ptr ProjectPart::copy() const QString ProjectPart::id() const { - return QDir::fromNativeSeparators(projectFile) + QLatin1Char(' ') + displayName; + QString projectPartId = QDir::fromNativeSeparators(projectFile); + if (!displayName.isEmpty()) + projectPartId.append(QLatin1Char(' ') + displayName); + return projectPartId; } QByteArray ProjectPart::readProjectConfigFile(const ProjectPart::Ptr &part) @@ -669,13 +672,15 @@ void CompilerOptionsBuilder::addOptionsForLanguage(bool checkForBorlandExtension opts << (gnuExtensions ? QLatin1String("-std=gnu++98") : QLatin1String("-std=c++98")); break; case ProjectPart::CXX03: + // Clang 3.6 does not know -std=gnu++03. opts << QLatin1String("-std=c++03"); break; case ProjectPart::CXX14: - opts << QLatin1String("-std=c++1y"); // TODO: change to c++14 after 3.5 + opts << (gnuExtensions ? QLatin1String("-std=gnu++14") : QLatin1String("-std=c++14")); break; case ProjectPart::CXX17: - opts << QLatin1String("-std=c++1z"); // TODO: change to c++17 at some point in the future + // TODO: Change to (probably) "gnu++17"/"c++17" at some point in the future. + opts << (gnuExtensions ? QLatin1String("-std=gnu++1z") : QLatin1String("-std=c++1z")); break; } diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index baaef60d34..1731f527fa 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -1331,6 +1331,8 @@ BreakpointItem::~BreakpointItem() void BreakpointItem::destroyMarker() { + if (m_engine) + m_engine->updateBreakpointMarkers(); if (m_marker) { BreakpointMarker *m = m_marker; m->m_bp = 0; diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp index 7b1c8275fc..2e7e17ea19 100644 --- a/src/plugins/debugger/commonoptionspage.cpp +++ b/src/plugins/debugger/commonoptionspage.cpp @@ -125,7 +125,7 @@ CommonOptionsPageWidget::CommonOptionsPageWidget checkBoxBringToForegroundOnInterrrupt->setText(tr("Bring Qt Creator to foreground when application interrupts")); checkBoxShowQmlObjectTree = new QCheckBox(behaviorBox); - checkBoxShowQmlObjectTree->setToolTip(tr("Shows QML object tree in Locals & Expressions when connected and not stepping.")); + checkBoxShowQmlObjectTree->setToolTip(tr("Shows QML object tree in Locals and Expressions when connected and not stepping.")); checkBoxShowQmlObjectTree->setText(tr("Show QML object tree")); checkBoxBreakpointsFullPath = new QCheckBox(behaviorBox); diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp index 9e6417e0ed..1971367ce4 100644 --- a/src/plugins/debugger/debuggerdialogs.cpp +++ b/src/plugins/debugger/debuggerdialogs.cpp @@ -110,18 +110,16 @@ DebuggerKitChooser::DebuggerKitChooser(Mode mode, QWidget *parent) , m_hostAbi(Abi::hostAbi()) , m_mode(mode) { -} - -// Match valid debuggers and restrict local debugging to compatible toolchains. -bool DebuggerKitChooser::kitMatches(const Kit *k) const -{ - if (!DebuggerKitInformation::isValidDebugger(k)) - return false; - if (m_mode == LocalDebugging) { - const ToolChain *tc = ToolChainKitInformation::toolChain(k); - return tc && tc->targetAbi().os() == m_hostAbi.os(); - } - return true; + setKitMatcher([this](const Kit *k) { + // Match valid debuggers and restrict local debugging to compatible toolchains. + if (!DebuggerKitInformation::isValidDebugger(k)) + return false; + if (m_mode == LocalDebugging) { + const ToolChain *tc = ToolChainKitInformation::toolChain(k); + return tc && tc->targetAbi().os() == m_hostAbi.os(); + } + return true; + }); } QString DebuggerKitChooser::kitToolTip(Kit *k) const diff --git a/src/plugins/debugger/debuggerdialogs.h b/src/plugins/debugger/debuggerdialogs.h index ac262c962a..2b5c982bd6 100644 --- a/src/plugins/debugger/debuggerdialogs.h +++ b/src/plugins/debugger/debuggerdialogs.h @@ -69,7 +69,6 @@ public: explicit DebuggerKitChooser(Mode mode = AnyDebugging, QWidget *parent = 0); protected: - bool kitMatches(const ProjectExplorer::Kit *k) const; QString kitToolTip(ProjectExplorer::Kit *k) const; private: diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 96638cef07..950ffb1e86 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -46,6 +46,7 @@ #include "gdb/gdbengine.h" // REMOVE #include "registerhandler.h" #include "sourcefileshandler.h" +#include "sourceutils.h" #include "stackhandler.h" #include "terminal.h" #include "threadshandler.h" @@ -134,28 +135,28 @@ Location::Location(const StackFrame &frame, bool marker) } -class LocationMark : public TextMark +LocationMark::LocationMark(DebuggerEngine *engine, const QString &file, int line) + : TextMark(file, line, Constants::TEXT_MARK_CATEGORY_LOCATION), m_engine(engine) { -public: - LocationMark(DebuggerEngine *engine, const QString &file, int line) - : TextMark(file, line, Constants::TEXT_MARK_CATEGORY_LOCATION), m_engine(engine) - {} + setIcon(Internal::locationMarkIcon()); + setPriority(TextMark::HighPriority); +} -private: - bool isDraggable() const { return true; } +bool LocationMark::isDraggable() const +{ + return m_engine->hasCapability(JumpToLineCapability); +} - void dragToLine(int line) - { - if (m_engine) { - ContextData data; - data.fileName = fileName(); - data.lineNumber = line; - m_engine->executeJumpToLine(data); +void LocationMark::dragToLine(int line) +{ + if (m_engine) { + if (BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor()) { + ContextData location = getLocationContext(textEditor->textDocument(), line); + if (location.isValid()) + m_engine->executeJumpToLine(location); } } - - QPointer<DebuggerEngine> m_engine; -}; +} ////////////////////////////////////////////////////////////////////// // @@ -632,11 +633,8 @@ void DebuggerEngine::gotoLocation(const Location &loc) if (newEditor) editor->document()->setProperty(Constants::OPENED_BY_DEBUGGER, true); - if (loc.needsMarker()) { + if (loc.needsMarker()) d->m_locationMark.reset(new LocationMark(this, file, line)); - d->m_locationMark->setIcon(Internal::locationMarkIcon()); - d->m_locationMark->setPriority(TextMark::HighPriority); - } //qDebug() << "MEMORY: " << d->m_memoryAgent.hasVisibleEditor(); } @@ -1341,6 +1339,11 @@ QString DebuggerEngine::toFileInProject(const QUrl &fileUrl) return d->m_fileFinder.findFile(fileUrl); } +void DebuggerEngine::updateBreakpointMarkers() +{ + d->m_disassemblerAgent.updateBreakpointMarkers(); +} + bool DebuggerEngine::debuggerActionsEnabled() const { return debuggerActionsEnabled(d->m_state); diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index c830a0ded3..f62a7e381b 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -36,6 +36,7 @@ #include "debuggerstartparameters.h" #include <projectexplorer/devicesupport/idevice.h> +#include <texteditor/textmark.h> #include <QObject> #include <QProcess> @@ -169,15 +170,18 @@ private: quint64 m_address; }; +enum LocationType { UnknownLocation, LocationByFile, LocationByAddress }; + class ContextData { public: - ContextData() : lineNumber(0), address(0) {} + bool isValid() const { return type != UnknownLocation; } public: + LocationType type = UnknownLocation; QString fileName; - int lineNumber; - quint64 address; + int lineNumber = 0; + quint64 address = 0; }; class DebuggerEngine : public QObject @@ -312,6 +316,7 @@ public: virtual void notifyInferiorIll(); QString toFileInProject(const QUrl &fileUrl); + void updateBreakpointMarkers(); signals: void stateChanged(Debugger::DebuggerState state); @@ -446,6 +451,18 @@ private: DebuggerEnginePrivate *d; }; +class LocationMark : public TextEditor::TextMark +{ +public: + LocationMark(DebuggerEngine *engine, const QString &file, int line); + +private: + bool isDraggable() const; + void dragToLine(int line); + + QPointer<DebuggerEngine> m_engine; +}; + DebuggerEngine *createEngine(DebuggerEngineType et, const DebuggerRunParameters &rp, QStringList *errors); DebuggerRunControl *createAndScheduleRun(const DebuggerRunParameters &rp, const ProjectExplorer::Kit *kit); diff --git a/src/plugins/debugger/debuggerinternalconstants.h b/src/plugins/debugger/debuggerinternalconstants.h index 576ed7a82a..290edbde3f 100644 --- a/src/plugins/debugger/debuggerinternalconstants.h +++ b/src/plugins/debugger/debuggerinternalconstants.h @@ -47,6 +47,7 @@ namespace Internal { const char OPENED_BY_DEBUGGER[] = "OpenedByDebugger"; const char OPENED_WITH_DISASSEMBLY[] = "DisassemblerView"; +const char DISASSEMBLER_SOURCE_FILE[] = "DisassemblerSourceFile"; // Debug action const char DEBUG[] = "Debugger.Debug"; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index a79bef2e8c..d072df0c3b 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -552,25 +552,6 @@ static Kit *findUniversalCdbKit() return KitManager::find(cdbMatcher()); } -static bool currentTextEditorPosition(ContextData *data) -{ - BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor(); - if (!textEditor) - return false; - const TextDocument *document = textEditor->textDocument(); - QTC_ASSERT(document, return false); - data->fileName = document->filePath().toString(); - if (document->property(Constants::OPENED_WITH_DISASSEMBLY).toBool()) { - int lineNumber = textEditor->currentLine(); - QString line = textEditor->textDocument()->plainText() - .section(QLatin1Char('\n'), lineNumber - 1, lineNumber - 1); - data->address = DisassemblerLine::addressFromDisassemblyLine(line); - } else { - data->lineNumber = textEditor->currentLine(); - } - return true; -} - /////////////////////////////////////////////////////////////////////// // // DebuggerPluginPrivate @@ -637,7 +618,7 @@ public: { QString message; if (isMessageOnly) { - if (data.address) { + if (data.type == LocationByAddress) { //: Message tracepoint: Address hit. message = tr("0x%1 hit").arg(data.address, 0, 16); } else { @@ -657,10 +638,7 @@ public: return; message = dialog.textValue(); } - if (data.address) - toggleBreakpointByAddress(data.address, message); - else - toggleBreakpointByFileAndLine(data.fileName, data.lineNumber, message); + toggleBreakpoint(data, message); } void updateWatchersHeader(int section, int, int newSize) @@ -706,11 +684,8 @@ public: void activatePreviousMode(); void activateDebugMode(); - void toggleBreakpoint(); - void toggleBreakpointByFileAndLine(const QString &fileName, int lineNumber, - const QString &tracePointMessage = QString()); - void toggleBreakpointByAddress(quint64 address, - const QString &tracePointMessage = QString()); + void toggleBreakpointHelper(); + void toggleBreakpoint(const ContextData &location, const QString &tracePointMessage = QString()); void onModeChanged(IMode *mode); void onCoreAboutToOpen(); void updateDebugWithoutDeployMenu(); @@ -848,17 +823,23 @@ public slots: void handleExecJumpToLine() { currentEngine()->resetLocation(); - ContextData data; - if (currentTextEditorPosition(&data)) - currentEngine()->executeJumpToLine(data); + if (BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor()) { + ContextData location = getLocationContext(textEditor->textDocument(), + textEditor->currentLine()); + if (location.isValid()) + currentEngine()->executeJumpToLine(location); + } } void handleExecRunToLine() { currentEngine()->resetLocation(); - ContextData data; - if (currentTextEditorPosition(&data)) - currentEngine()->executeRunToLine(data); + if (BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor()) { + ContextData location = getLocationContext(textEditor->textDocument(), + textEditor->currentLine()); + if (location.isValid()) + currentEngine()->executeRunToLine(location); + } } void handleExecRunToSelectedFunction() @@ -1383,7 +1364,6 @@ void DebuggerPluginPrivate::attachToRemoteServer() rp.startMode = AttachToRemoteServer; if (StartApplicationDialog::run(ICore::dialogParent(), &rp, &kit)) { rp.closeMode = KillAtClose; - rp.serverStartScript.clear(); createAndScheduleRun(rp, kit); } } @@ -1593,26 +1573,18 @@ void DebuggerPluginPrivate::updateBreakMenuItem(IEditor *editor) void DebuggerPluginPrivate::requestContextMenu(TextEditorWidget *widget, int lineNumber, QMenu *menu) { - ContextData args; - args.lineNumber = lineNumber; - bool contextUsable = true; - Breakpoint bp; TextDocument *document = widget->textDocument(); - args.fileName = document->filePath().toString(); - if (document->property(Constants::OPENED_WITH_DISASSEMBLY).toBool()) { - QString line = document->plainText() - .section(QLatin1Char('\n'), lineNumber - 1, lineNumber - 1); + + ContextData args = getLocationContext(document, lineNumber); + if (args.type == LocationByAddress) { BreakpointResponse needle; needle.type = BreakpointByAddress; - needle.address = DisassemblerLine::addressFromDisassemblyLine(line); - args.address = needle.address; + needle.address = args.address; needle.lineNumber = -1; bp = breakHandler()->findSimilarBreakpoint(needle); - contextUsable = args.address != 0; - } else { - bp = breakHandler() - ->findBreakpointByFileAndLine(args.fileName, lineNumber); + } else if (args.type == LocationByFile) { + bp = breakHandler()->findBreakpointByFileAndLine(args.fileName, lineNumber); if (!bp) bp = breakHandler()->findBreakpointByFileAndLine(args.fileName, lineNumber, false); } @@ -1645,7 +1617,7 @@ void DebuggerPluginPrivate::requestContextMenu(TextEditorWidget *widget, ? tr("Set Breakpoint at 0x%1").arg(args.address, 0, 16) : tr("Set Breakpoint at Line %1").arg(lineNumber); auto act = menu->addAction(text); - act->setEnabled(contextUsable); + act->setEnabled(args.isValid()); connect(act, &QAction::triggered, [this, args] { breakpointSetMarginActionTriggered(false, args); }); @@ -1655,14 +1627,14 @@ void DebuggerPluginPrivate::requestContextMenu(TextEditorWidget *widget, ? tr("Set Message Tracepoint at 0x%1...").arg(args.address, 0, 16) : tr("Set Message Tracepoint at Line %1...").arg(lineNumber); act = menu->addAction(tracePointText); - act->setEnabled(contextUsable); + act->setEnabled(args.isValid()); connect(act, &QAction::triggered, [this, args] { breakpointSetMarginActionTriggered(true, args); }); } // Run to, jump to line below in stopped state. - if (currentEngine()->state() == InferiorStopOk && contextUsable) { + if (currentEngine()->state() == InferiorStopOk && args.isValid()) { menu->addSeparator(); if (currentEngine()->hasCapability(RunToLineCapability)) { auto act = menu->addAction(args.address @@ -1698,72 +1670,58 @@ void DebuggerPluginPrivate::requestContextMenu(TextEditorWidget *widget, } } -void DebuggerPluginPrivate::toggleBreakpoint() -{ - BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor(); - QTC_ASSERT(textEditor, return); - const int lineNumber = textEditor->currentLine(); - if (textEditor->property(Constants::OPENED_WITH_DISASSEMBLY).toBool()) { - QString line = textEditor->textDocument()->plainText() - .section(QLatin1Char('\n'), lineNumber - 1, lineNumber - 1); - quint64 address = DisassemblerLine::addressFromDisassemblyLine(line); - toggleBreakpointByAddress(address); - } else if (lineNumber >= 0) { - toggleBreakpointByFileAndLine(textEditor->document()->filePath().toString(), lineNumber); - } -} - -void DebuggerPluginPrivate::toggleBreakpointByFileAndLine(const QString &fileName, - int lineNumber, const QString &tracePointMessage) +void DebuggerPluginPrivate::toggleBreakpoint(const ContextData &location, const QString &tracePointMessage) { + QTC_ASSERT(location.isValid(), return); BreakHandler *handler = m_breakHandler; - Breakpoint bp = handler->findBreakpointByFileAndLine(fileName, lineNumber, true); - if (!bp) - bp = handler->findBreakpointByFileAndLine(fileName, lineNumber, false); + Breakpoint bp; + if (location.type == LocationByFile) { + bp = handler->findBreakpointByFileAndLine(location.fileName, location.lineNumber, true); + if (!bp) + bp = handler->findBreakpointByFileAndLine(location.fileName, location.lineNumber, false); + } else if (location.type == LocationByAddress) { + bp = handler->findBreakpointByAddress(location.address); + } if (bp) { bp.removeBreakpoint(); } else { - BreakpointParameters data(BreakpointByFileAndLine); - if (boolSetting(BreakpointsFullPathByDefault)) - data.pathUsage = BreakpointUseFullPath; - data.tracepoint = !tracePointMessage.isEmpty(); - data.message = tracePointMessage; - data.fileName = fileName; - data.lineNumber = lineNumber; + BreakpointParameters data; + if (location.type == LocationByFile) { + data.type = BreakpointByFileAndLine; + if (boolSetting(BreakpointsFullPathByDefault)) + data.pathUsage = BreakpointUseFullPath; + data.tracepoint = !tracePointMessage.isEmpty(); + data.message = tracePointMessage; + data.fileName = location.fileName; + data.lineNumber = location.lineNumber; + } else if (location.type == LocationByAddress) { + data.type = BreakpointByAddress; + data.tracepoint = !tracePointMessage.isEmpty(); + data.message = tracePointMessage; + data.address = location.address; + } handler->appendBreakpoint(data); } } -void DebuggerPluginPrivate::toggleBreakpointByAddress(quint64 address, - const QString &tracePointMessage) +void DebuggerPluginPrivate::toggleBreakpointHelper() { - BreakHandler *handler = m_breakHandler; - if (Breakpoint bp = handler->findBreakpointByAddress(address)) { - bp.removeBreakpoint(); - } else { - BreakpointParameters data(BreakpointByAddress); - data.tracepoint = !tracePointMessage.isEmpty(); - data.message = tracePointMessage; - data.address = address; - handler->appendBreakpoint(data); - } + BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor(); + QTC_ASSERT(textEditor, return); + const int lineNumber = textEditor->currentLine(); + ContextData location = getLocationContext(textEditor->textDocument(), lineNumber); + if (location.isValid()) + toggleBreakpoint(location); } void DebuggerPluginPrivate::requestMark(TextEditorWidget *widget, int lineNumber, TextMarkRequestKind kind) { - if (kind != BreakpointRequest) - return; - - TextDocument *document = widget->textDocument(); - if (document->property(Constants::OPENED_WITH_DISASSEMBLY).toBool()) { - QString line = document->plainText() - .section(QLatin1Char('\n'), lineNumber - 1, lineNumber - 1); - quint64 address = DisassemblerLine::addressFromDisassemblyLine(line); - toggleBreakpointByAddress(address); - } else { - toggleBreakpointByFileAndLine(document->filePath().toString(), lineNumber); + if (kind == BreakpointRequest) { + ContextData location = getLocationContext(widget->textDocument(), lineNumber); + if (location.isValid()) + toggleBreakpoint(location); } } @@ -2821,7 +2779,7 @@ void DebuggerPluginPrivate::extensionsInitialized() cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("F8") : tr("F9"))); debugMenu->addAction(cmd); connect(m_breakAction, &QAction::triggered, - this, &DebuggerPluginPrivate::toggleBreakpoint); + this, &DebuggerPluginPrivate::toggleBreakpointHelper); debugMenu->addSeparator(); @@ -3130,6 +3088,12 @@ void openTextEditor(const QString &titlePattern0, const QString &contents) IEditor *editor = EditorManager::openEditorWithContents( CC::K_DEFAULT_TEXT_EDITOR_ID, &titlePattern, contents.toUtf8(), QString(), EditorManager::IgnoreNavigationHistory); + if (auto textEditor = qobject_cast<BaseTextEditor *>(editor)) { + QString suggestion = titlePattern; + if (!suggestion.contains(QLatin1Char('.'))) + suggestion.append(QLatin1String(".txt")); + textEditor->textDocument()->setSuggestedFileName(suggestion); + } QTC_ASSERT(editor, return); } diff --git a/src/plugins/debugger/debuggerprotocol.cpp b/src/plugins/debugger/debuggerprotocol.cpp index 5be634c83f..ad0f9e8659 100644 --- a/src/plugins/debugger/debuggerprotocol.cpp +++ b/src/plugins/debugger/debuggerprotocol.cpp @@ -728,6 +728,36 @@ QString decodeData(const QByteArray &ba, int encoding) union { char c[8]; double d; } u = { { s[7], s[6], s[5], s[4], s[3], s[2], s[1], s[0] } }; return QString::number(u.d); } + case SpecialEmptyValue: { + return QCoreApplication::translate("Debugger::Internal::WatchHandler", "<empty>"); + } + case SpecialUninitializedValue: { + return QCoreApplication::translate("Debugger::Internal::WatchHandler", "<uninitialized>"); + } + case SpecialInvalidValue: { + return QCoreApplication::translate("Debugger::Internal::WatchHandler", "<invalid>"); + } + case SpecialNotAccessibleValue: { + return QCoreApplication::translate("Debugger::Internal::WatchHandler", "<not accessible>"); + } + case SpecialItemCountValue: { + return QCoreApplication::translate("Debugger::Internal::WatchHandler", "<%n items>", 0, ba.toInt()); + } + case SpecialMinimumItemCountValue: { + return QCoreApplication::translate("Debugger::Internal::WatchHandler", "<at least %n items>", 0, ba.toInt()); + } + case SpecialNotCallableValue: { + return QCoreApplication::translate("Debugger::Internal::WatchHandler", "<not callable>"); + } + case SpecialNullReferenceValue: { + return QCoreApplication::translate("Debugger::Internal::WatchHandler", "<null reference>"); + } + case SpecialOptimizedOutValue: { + return QCoreApplication::translate("Debugger::Internal::WatchHandler", "<optimized out>"); + } + case SpecialEmptyStructureValue: { + return QLatin1String("{...}"); + } } qDebug() << "ENCODING ERROR: " << encoding; return QCoreApplication::translate("Debugger", "<Encoding error>"); diff --git a/src/plugins/debugger/debuggerprotocol.h b/src/plugins/debugger/debuggerprotocol.h index eac5c03da2..24644610b9 100644 --- a/src/plugins/debugger/debuggerprotocol.h +++ b/src/plugins/debugger/debuggerprotocol.h @@ -240,7 +240,17 @@ enum DebuggerEncoding Hex2EncodedFloat8 = 26, IPv6AddressAndHexScopeId = 27, Hex2EncodedUtf8WithoutQuotes = 28, - DateTimeInternal = 29 + DateTimeInternal = 29, + SpecialEmptyValue = 30, + SpecialUninitializedValue = 31, + SpecialInvalidValue = 32, + SpecialNotAccessibleValue = 33, + SpecialItemCountValue = 34, + SpecialMinimumItemCountValue = 35, + SpecialNotCallableValue = 36, + SpecialNullReferenceValue = 37, + SpecialOptimizedOutValue = 38, + SpecialEmptyStructureValue = 39 }; // Keep in sync with dumper.py, symbolgroupvalue.cpp of CDB diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index b02ddb7291..2fb3fc1297 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -350,8 +350,8 @@ void DebuggerRunControlCreator::enrich(const RunConfiguration *runConfig, const m_kit = m_target->kit(); } - // We might have get an executable from a local PID. - if (m_rp.executable.isEmpty()) { + // We might get an executable from a local PID. + if (m_rp.executable.isEmpty() && m_rp.attachPID != InvalidPid) { foreach (const DeviceProcessItem &p, DeviceProcessList::localProcesses()) if (p.pid == m_rp.attachPID) m_rp.executable = p.exe; diff --git a/src/plugins/debugger/disassembleragent.cpp b/src/plugins/debugger/disassembleragent.cpp index a7df1f215e..7712875693 100644 --- a/src/plugins/debugger/disassembleragent.cpp +++ b/src/plugins/debugger/disassembleragent.cpp @@ -38,6 +38,7 @@ #include "debuggerstartparameters.h" #include "debuggerstringutils.h" #include "disassemblerlines.h" +#include "sourceutils.h" #include <coreplugin/coreconstants.h> #include <coreplugin/icore.h> @@ -98,7 +99,7 @@ typedef QPair<FrameKey, DisassemblerLines> CacheEntry; class DisassemblerAgentPrivate { public: - DisassemblerAgentPrivate(); + DisassemblerAgentPrivate(DebuggerEngine *engine); ~DisassemblerAgentPrivate(); void configureMimeType(); DisassemblerLines contentsAtCurrentLocation() const; @@ -107,22 +108,20 @@ public: QPointer<TextDocument> document; Location location; QPointer<DebuggerEngine> engine; - TextMark locationMark; + LocationMark locationMark; QList<TextMark *> breakpointMarks; QList<CacheEntry> cache; QString mimeType; bool resetLocationScheduled; }; -DisassemblerAgentPrivate::DisassemblerAgentPrivate() +DisassemblerAgentPrivate::DisassemblerAgentPrivate(DebuggerEngine *engine) : document(0), - locationMark(QString(), 0, Constants::TEXT_MARK_CATEGORY_LOCATION), + engine(engine), + locationMark(engine, QString(), 0), mimeType(_("text/x-qtcreator-generic-asm")), resetLocationScheduled(false) -{ - locationMark.setIcon(Internal::locationMarkIcon()); - locationMark.setPriority(TextMark::HighPriority); -} +{} DisassemblerAgentPrivate::~DisassemblerAgentPrivate() { @@ -157,10 +156,8 @@ DisassemblerLines DisassemblerAgentPrivate::contentsAtCurrentLocation() const */ DisassemblerAgent::DisassemblerAgent(DebuggerEngine *engine) - : QObject(0), d(new DisassemblerAgentPrivate) -{ - d->engine = engine; -} + : d(new DisassemblerAgentPrivate(engine)) +{} DisassemblerAgent::~DisassemblerAgent() { @@ -296,10 +293,13 @@ void DisassemblerAgent::setContentsToDocument(const DisassemblerLines &contents) widget->setReadOnly(true); widget->setRequestMarkEnabled(true); } + // FIXME: This is accumulating quite a bit out-of-band data. + // Make that a proper TextDocument reimplementation. d->document = qobject_cast<TextDocument *>(editor->document()); QTC_ASSERT(d->document, return); d->document->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, true); d->document->setProperty(Debugger::Constants::OPENED_WITH_DISASSEMBLY, true); + d->document->setProperty(Debugger::Constants::DISASSEMBLER_SOURCE_FILE, d->location.fileName()); d->configureMimeType(); } else { EditorManager::activateEditorForDocument(d->document); @@ -349,9 +349,19 @@ void DisassemblerAgent::updateBreakpointMarkers() const quint64 address = bp.response().address; if (!address) continue; - const int lineNumber = contents.lineForAddress(address); + int lineNumber = contents.lineForAddress(address); if (!lineNumber) continue; + + // HACK: If it's a FileAndLine breakpoint, and there's a source line + // above, move the marker up there. That allows setting and removing + // normal breakpoints from within the disassembler view. + if (bp.type() == BreakpointByFileAndLine) { + ContextData context = getLocationContext(d->document, lineNumber - 1); + if (context.type == LocationByFile) + --lineNumber; + } + TextMark *marker = new TextMark(QString(), lineNumber, Constants::TEXT_MARK_CATEGORY_BREAKPOINT); marker->setIcon(bp.icon()); diff --git a/src/plugins/debugger/disassemblerlines.cpp b/src/plugins/debugger/disassemblerlines.cpp index f769f827b3..83d078447d 100644 --- a/src/plugins/debugger/disassemblerlines.cpp +++ b/src/plugins/debugger/disassemblerlines.cpp @@ -29,7 +29,9 @@ ****************************************************************************/ #include "disassemblerlines.h" +#include "debuggerengine.h" #include "debuggerstringutils.h" +#include "sourceutils.h" #include <QDebug> #include <QFile> @@ -72,13 +74,6 @@ void DisassemblerLine::fromString(const QString &unparsed) data = unparsed; } -quint64 DisassemblerLine::addressFromDisassemblyLine(const QString &line) -{ - DisassemblerLine l; - l.fromString(line); - return l.address; -} - quint64 DisassemblerLines::startAddress() const { for (int i = 0; i < m_data.size(); ++i) diff --git a/src/plugins/debugger/disassemblerlines.h b/src/plugins/debugger/disassemblerlines.h index c968546c1c..ee91e58aae 100644 --- a/src/plugins/debugger/disassemblerlines.h +++ b/src/plugins/debugger/disassemblerlines.h @@ -53,9 +53,6 @@ public: QString toString(int maxOp = 0) const; void fromString(const QString &unparsed); - // Return address of an assembly line "0x0dfd bla". - static quint64 addressFromDisassemblyLine(const QString &line); - public: quint64 address; // (ass) Address of instruction in memory/in binary. QString function; // (ass) Function to which current instruction belongs. diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 5eac84b116..5af199ff15 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -241,6 +241,7 @@ GdbEngine::GdbEngine(const DebuggerRunParameters &startParameters) m_fullStartDone = false; m_systemDumpersLoaded = false; m_rerunPending = false; + m_inUpdateLocals = false; m_debugInfoTaskHandler = new DebugInfoTaskHandler(this); //ExtensionSystem::PluginManager::addObject(m_debugInfoTaskHandler); @@ -442,23 +443,31 @@ void GdbEngine::handleResponse(const QByteArray &buff) } } if (asyncClass == "stopped") { - handleStopResponse(result); - m_pendingLogStreamOutput.clear(); - m_pendingConsoleStreamOutput.clear(); + if (m_inUpdateLocals) { + showMessage(_("UNEXPECTED *stopped NOTIFICATION IGNORED"), LogWarning); + } else { + handleStopResponse(result); + m_pendingLogStreamOutput.clear(); + m_pendingConsoleStreamOutput.clear(); + } } else if (asyncClass == "running") { - GdbMi threads = result["thread-id"]; - threadsHandler()->notifyRunning(threads.data()); - if (state() == InferiorRunOk || state() == InferiorSetupRequested) { - // We get multiple *running after thread creation and in Windows terminals. - showMessage(QString::fromLatin1("NOTE: INFERIOR STILL RUNNING IN STATE %1."). - arg(QLatin1String(DebuggerEngine::stateName(state())))); - } else if (HostOsInfo::isWindowsHost() && (state() == InferiorStopRequested - || state() == InferiorShutdownRequested)) { - // FIXME: Breakpoints on Windows are exceptions which are thrown in newly - // created threads so we have to filter out the running threads messages when - // we request a stop. + if (m_inUpdateLocals) { + showMessage(_("UNEXPECTED *running NOTIFICATION IGNORED"), LogWarning); } else { - notifyInferiorRunOk(); + GdbMi threads = result["thread-id"]; + threadsHandler()->notifyRunning(threads.data()); + if (state() == InferiorRunOk || state() == InferiorSetupRequested) { + // We get multiple *running after thread creation and in Windows terminals. + showMessage(QString::fromLatin1("NOTE: INFERIOR STILL RUNNING IN STATE %1."). + arg(QLatin1String(DebuggerEngine::stateName(state())))); + } else if (HostOsInfo::isWindowsHost() && (state() == InferiorStopRequested + || state() == InferiorShutdownRequested)) { + // FIXME: Breakpoints on Windows are exceptions which are thrown in newly + // created threads so we have to filter out the running threads messages when + // we request a stop. + } else { + notifyInferiorRunOk(); + } } } else if (asyncClass == "library-loaded") { // Archer has 'id="/usr/lib/libdrm.so.2", @@ -1187,6 +1196,8 @@ void GdbEngine::handleResultRecord(DebuggerResponse *response) if (!(cmd.flags & Discardable)) --m_nonDiscardableCount; + m_inUpdateLocals = (cmd.flags & InUpdateLocals); + if (cmd.callback) cmd.callback(*response); @@ -3557,7 +3568,9 @@ void GdbEngine::reloadRegisters() if (true) { if (!m_registerNamesListed) { - postCommand("-data-list-register-names", NoFlags, CB(handleRegisterListNames)); + // The MI version does not give register size. + // postCommand("-data-list-register-names", NoFlags, CB(handleRegisterListNames)); + postCommand("maintenance print raw-registers", NoFlags, CB(handleRegisterListing)); m_registerNamesListed = true; } // Can cause i386-linux-nat.c:571: internal-error: Got request @@ -3638,15 +3651,47 @@ void GdbEngine::handleRegisterListNames(const DebuggerResponse &response) } GdbMi names = response.data["register-names"]; - m_registerNames.clear(); + m_registers.clear(); int gdbRegisterNumber = 0; foreach (const GdbMi &item, names.children()) { - if (!item.data().isEmpty()) - m_registerNames[gdbRegisterNumber] = item.data(); + if (!item.data().isEmpty()) { + Register reg; + reg.name = item.data(); + m_registers[gdbRegisterNumber] = reg; + } ++gdbRegisterNumber; } } +void GdbEngine::handleRegisterListing(const DebuggerResponse &response) +{ + if (response.resultClass != ResultDone) { + m_registerNamesListed = false; + return; + } + + // &"maintenance print raw-registers\n" + // >~" Name Nr Rel Offset Size Type Raw value\n" + // >~" rax 0 0 0 8 int64_t 0x0000000000000005\n" + // >~" rip 16 16 128 8 *1 0x000000000040232a\n" + // >~" '' 145 145 536 0 int0_t <invalid>\n" + + m_registers.clear(); + QList<QByteArray> lines = response.consoleStreamOutput.split('\n'); + for (int i = 1; i < lines.size(); ++i) { + QStringList parts = QString::fromLatin1(lines.at(i)) + .split(QLatin1Char(' '), QString::SkipEmptyParts); + if (parts.size() < 7) + continue; + int gdbRegisterNumber = parts.at(1).toInt(); + Register reg; + reg.name = parts.at(0).toLatin1(); + reg.size = parts.at(4).toInt(); + reg.reportedType = parts.at(5).toLatin1(); + m_registers[gdbRegisterNumber] = reg; + } +} + void GdbEngine::handleRegisterListValues(const DebuggerResponse &response) { if (response.resultClass != ResultDone) @@ -3656,9 +3701,8 @@ void GdbEngine::handleRegisterListValues(const DebuggerResponse &response) // 24^done,register-values=[{number="0",value="0xf423f"},...] const GdbMi values = response.data["register-values"]; foreach (const GdbMi &item, values.children()) { - Register reg; const int number = item["number"].toInt(); - reg.name = m_registerNames[number]; + Register reg = m_registers[number]; QByteArray data = item["value"].data(); if (data.startsWith("0x")) { reg.value = data; @@ -4725,7 +4769,7 @@ void GdbEngine::doUpdateLocals(const UpdateParameters ¶ms) cmd.arg("resultvarname", m_resultVarName); cmd.arg("partialVariable", params.partialVariable); cmd.arg("sortStructMembers", boolSetting(SortStructMembers)); - cmd.flags = Discardable; + cmd.flags = Discardable | InUpdateLocals; cmd.callback = [this](const DebuggerResponse &r) { handleStackFrame(r); }; runCommand(cmd); @@ -4735,6 +4779,8 @@ void GdbEngine::doUpdateLocals(const UpdateParameters ¶ms) void GdbEngine::handleStackFrame(const DebuggerResponse &response) { + m_inUpdateLocals = false; + if (response.resultClass == ResultDone) { QByteArray out = response.consoleStreamOutput; while (out.endsWith(' ') || out.endsWith('\n')) diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index d994a1cbbd..e8d46ee426 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -34,6 +34,7 @@ #include <debugger/debuggerengine.h> #include <debugger/breakhandler.h> +#include <debugger/registerhandler.h> #include <debugger/watchhandler.h> #include <debugger/watchutils.h> #include <debugger/debuggertooltipmanager.h> @@ -170,7 +171,9 @@ private: ////////// Gdb Command Management ////////// // This command needs to be send immediately. Immediate = 256, // This is a command that needs to be wrapped into -interpreter-exec console - ConsoleCommand = 512 + ConsoleCommand = 512, + // This is the UpdateLocals commannd during which we ignore notifications + InUpdateLocals = 1024 }; Q_DECLARE_FLAGS(GdbCommandFlags, GdbCommandFlag) @@ -327,9 +330,10 @@ private: ////////// View & Data Stuff ////////// Q_SLOT void reloadRegisters(); void setRegisterValue(const QByteArray &name, const QString &value); void handleRegisterListNames(const DebuggerResponse &response); + void handleRegisterListing(const DebuggerResponse &response); void handleRegisterListValues(const DebuggerResponse &response); void handleMaintPrintRegisters(const DebuggerResponse &response); - QHash<int, QByteArray> m_registerNames; // Map GDB register numbers to indices + QHash<int, Register> m_registers; // Map GDB register numbers to indices // // Disassembler specific stuff @@ -430,6 +434,10 @@ protected: // For short-circuiting stack and thread list evaluation. bool m_stackNeeded; + // For suppressing processing *stopped and *running responses + // while updating locals. + bool m_inUpdateLocals; + bool isQFatalBreakpoint(const BreakpointResponseId &id) const; bool isHiddenBreakpoint(const BreakpointResponseId &id) const; diff --git a/src/plugins/debugger/gdb/gdboptionspage.cpp b/src/plugins/debugger/gdb/gdboptionspage.cpp index 6933792594..392ea1a3c8 100644 --- a/src/plugins/debugger/gdb/gdboptionspage.cpp +++ b/src/plugins/debugger/gdb/gdboptionspage.cpp @@ -63,6 +63,7 @@ namespace Internal { class GdbOptionsPageWidget : public QWidget { + Q_OBJECT public: GdbOptionsPageWidget(); Utils::SavedActionSet group; @@ -70,6 +71,7 @@ public: class GdbOptionsPage : public Core::IOptionsPage { + Q_OBJECT public: GdbOptionsPage(); @@ -337,6 +339,7 @@ void GdbOptionsPage::finish() class GdbOptionsPageWidget2 : public QWidget { + Q_OBJECT public: GdbOptionsPageWidget2(); @@ -437,6 +440,7 @@ GdbOptionsPageWidget2::GdbOptionsPageWidget2() // The "Dangerous" options. class GdbOptionsPage2 : public Core::IOptionsPage { + Q_OBJECT public: GdbOptionsPage2(); @@ -488,3 +492,5 @@ void addGdbOptionPages(QList<IOptionsPage *> *opts) } // namespace Internal } // namespace Debugger + +#include "gdboptionspage.moc" diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp index 95f99d136a..0f3f4f234a 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp @@ -78,24 +78,27 @@ void GdbRemoteServerEngine::setupEngine() { QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); showMessage(_("TRYING TO START ADAPTER")); - if (!runParameters().serverStartScript.isEmpty()) { + QString serverStartScript = runParameters().serverStartScript; + if (!serverStartScript.isEmpty()) { // Provide script information about the environment QString arglist; - QtcProcess::addArg(&arglist, runParameters().serverStartScript); + QtcProcess::addArg(&arglist, serverStartScript); QtcProcess::addArg(&arglist, runParameters().executable); QtcProcess::addArg(&arglist, runParameters().remoteChannel); - m_uploadProc.start(_("/bin/sh ") + arglist); + m_uploadProc.start(arglist); m_uploadProc.waitForStarted(); } if (!runParameters().workingDirectory.isEmpty()) m_gdbProc.setWorkingDirectory(runParameters().workingDirectory); - if (runParameters().remoteSetupNeeded) + if (runParameters().remoteSetupNeeded) { notifyEngineRequestRemoteSetup(); - else + } else { + m_startAttempted = true; startGdb(); + } } void GdbRemoteServerEngine::uploadProcError(QProcess::ProcessError error) @@ -151,7 +154,8 @@ void GdbRemoteServerEngine::readUploadStandardError() void GdbRemoteServerEngine::uploadProcFinished() { if (m_uploadProc.exitStatus() == QProcess::NormalExit && m_uploadProc.exitCode() == 0) { - startGdb(); + if (!m_startAttempted) + startGdb(); } else { RemoteSetupResult result; result.success = false; diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 735840fee1..f8dcc2372c 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -1214,7 +1214,7 @@ void QmlEnginePrivate::updateScriptSource(const QString &fileName, int lineOffse } //update open editors - QString titlePattern = tr("JS Source for %1").arg(fileName); + QString titlePattern = QCoreApplication::translate("QmlEngine", "JS Source for %1").arg(fileName); //Check if there are open editors with the same title foreach (IDocument *doc, DocumentModel::openedDocuments()) { if (doc->displayName() == titlePattern) { @@ -1677,8 +1677,9 @@ QmlV8ObjectData QmlEnginePrivate::extractData(const QVariant &data) const objectData.value = dataMap.value(_(VALUE)); } else if (type == _("string")) { + QLatin1Char quote('"'); objectData.type = QByteArray("string"); - objectData.value = dataMap.value(_(VALUE)); + objectData.value = QString(quote + dataMap.value(_(VALUE)).toString() + quote); } else if (type == _("object")) { objectData.type = QByteArray("object"); @@ -2134,7 +2135,7 @@ StackFrame QmlEnginePrivate::extractStackFrame(const QVariant &bodyVal) QmlV8ObjectData objectData = extractData(body.value(_("func"))); QString functionName = objectData.value.toString(); if (functionName.isEmpty()) - functionName = tr("Anonymous Function"); + functionName = QCoreApplication::translate("QmlEngine", "Anonymous Function"); stackFrame.function = functionName; objectData = extractData(body.value(_("script"))); diff --git a/src/plugins/debugger/registerhandler.cpp b/src/plugins/debugger/registerhandler.cpp index da667a2e07..ca2dd95706 100644 --- a/src/plugins/debugger/registerhandler.cpp +++ b/src/plugins/debugger/registerhandler.cpp @@ -42,214 +42,22 @@ namespace Internal { // ////////////////////////////////////////////////////////////////// -static struct RegisterNameAndType -{ - const char *name; - RegisterKind kind; - int size; -} theNameAndType[] = { - // ARM - { "r0", IntegerRegister, 4 }, - { "r1", IntegerRegister, 4 }, - { "r2", IntegerRegister, 4 }, - { "r3", IntegerRegister, 4 }, - { "r4", IntegerRegister, 4 }, - { "r5", IntegerRegister, 4 }, - { "r6", IntegerRegister, 4 }, - { "r7", IntegerRegister, 4 }, - { "r8", IntegerRegister, 4 }, - { "r9", IntegerRegister, 4 }, - { "r10", IntegerRegister, 4 }, - { "r11", IntegerRegister, 4 }, - { "r12", IntegerRegister, 4 }, - { "sp", IntegerRegister, 4 }, - { "lr", IntegerRegister, 4 }, - { "pc", IntegerRegister, 4 }, - { "cpsr", FlagRegister, 4 }, - { "d0", IntegerRegister, 8 }, - { "d1", IntegerRegister, 8 }, - { "d2", IntegerRegister, 8 }, - { "d3", IntegerRegister, 8 }, - { "d4", IntegerRegister, 8 }, - { "d5", IntegerRegister, 8 }, - { "d6", IntegerRegister, 8 }, - { "d7", IntegerRegister, 8 }, - { "d8", IntegerRegister, 8 }, - { "d9", IntegerRegister, 8 }, - { "d10", IntegerRegister, 8 }, - { "d11", IntegerRegister, 8 }, - { "d12", IntegerRegister, 8 }, - { "d13", IntegerRegister, 8 }, - { "d14", IntegerRegister, 8 }, - { "d15", IntegerRegister, 8 }, - { "d16", IntegerRegister, 8 }, - { "d17", IntegerRegister, 8 }, - { "d18", IntegerRegister, 8 }, - { "d19", IntegerRegister, 8 }, - { "d20", IntegerRegister, 8 }, - { "d21", IntegerRegister, 8 }, - { "d22", IntegerRegister, 8 }, - { "d23", IntegerRegister, 8 }, - { "d24", IntegerRegister, 8 }, - { "d25", IntegerRegister, 8 }, - { "d26", IntegerRegister, 8 }, - { "d27", IntegerRegister, 8 }, - { "d28", IntegerRegister, 8 }, - { "d29", IntegerRegister, 8 }, - { "d30", IntegerRegister, 8 }, - { "d31", IntegerRegister, 8 }, - { "fpscr", FlagRegister, 4 }, - { "s0", IntegerRegister, 4 }, - { "s1", IntegerRegister, 4 }, - { "s2", IntegerRegister, 4 }, - { "s3", IntegerRegister, 4 }, - { "s4", IntegerRegister, 4 }, - { "s5", IntegerRegister, 4 }, - { "s6", IntegerRegister, 4 }, - { "s7", IntegerRegister, 4 }, - { "s8", IntegerRegister, 4 }, - { "s9", IntegerRegister, 4 }, - { "s10", IntegerRegister, 4 }, - { "s11", IntegerRegister, 4 }, - { "s12", IntegerRegister, 4 }, - { "s13", IntegerRegister, 4 }, - { "s14", IntegerRegister, 4 }, - { "s15", IntegerRegister, 4 }, - { "s16", IntegerRegister, 4 }, - { "s17", IntegerRegister, 4 }, - { "s18", IntegerRegister, 4 }, - { "s19", IntegerRegister, 4 }, - { "s20", IntegerRegister, 4 }, - { "s21", IntegerRegister, 4 }, - { "s22", IntegerRegister, 4 }, - { "s23", IntegerRegister, 4 }, - { "s24", IntegerRegister, 4 }, - { "s25", IntegerRegister, 4 }, - { "s26", IntegerRegister, 4 }, - { "s27", IntegerRegister, 4 }, - { "s28", IntegerRegister, 4 }, - { "s29", IntegerRegister, 4 }, - { "s30", IntegerRegister, 4 }, - { "s31", IntegerRegister, 4 }, - { "q0", IntegerRegister, 16 }, - { "q1", IntegerRegister, 16 }, - { "q2", IntegerRegister, 16 }, - { "q3", IntegerRegister, 16 }, - { "q4", IntegerRegister, 16 }, - { "q5", IntegerRegister, 16 }, - { "q6", IntegerRegister, 16 }, - { "q7", IntegerRegister, 16 }, - { "q8", IntegerRegister, 16 }, - { "q9", IntegerRegister, 16 }, - { "q10", IntegerRegister, 16 }, - { "q11", IntegerRegister, 16 }, - { "q12", IntegerRegister, 16 }, - { "q13", IntegerRegister, 16 }, - { "q14", IntegerRegister, 16 }, - { "q15", IntegerRegister, 16 }, - - // Intel - { "eax", IntegerRegister, 4 }, - { "ecx", IntegerRegister, 4 }, - { "edx", IntegerRegister, 4 }, - { "ebx", IntegerRegister, 4 }, - { "esp", IntegerRegister, 4 }, - { "ebp", IntegerRegister, 4 }, - { "esi", IntegerRegister, 4 }, - { "edi", IntegerRegister, 4 }, - { "eip", IntegerRegister, 4 }, - { "rax", IntegerRegister, 8 }, - { "rcx", IntegerRegister, 8 }, - { "rdx", IntegerRegister, 8 }, - { "rbx", IntegerRegister, 8 }, - { "rsp", IntegerRegister, 8 }, - { "rbp", IntegerRegister, 8 }, - { "rsi", IntegerRegister, 8 }, - { "rdi", IntegerRegister, 8 }, - { "rip", IntegerRegister, 8 }, - { "eflags", FlagRegister, 4 }, - { "cs", IntegerRegister, 2 }, - { "ss", IntegerRegister, 2 }, - { "ds", IntegerRegister, 2 }, - { "es", IntegerRegister, 2 }, - { "fs", IntegerRegister, 2 }, - { "gs", IntegerRegister, 2 }, - { "st0", FloatRegister, 10 }, - { "st1", FloatRegister, 10 }, - { "st2", FloatRegister, 10 }, - { "st3", FloatRegister, 10 }, - { "st4", FloatRegister, 10 }, - { "st5", FloatRegister, 10 }, - { "st6", FloatRegister, 10 }, - { "st7", FloatRegister, 10 }, - { "fctrl", FlagRegister, 4 }, - { "fstat", FlagRegister, 4 }, - { "ftag", FlagRegister, 4 }, - { "fiseg", FlagRegister, 4 }, - { "fioff", FlagRegister, 4 }, - { "foseg", FlagRegister, 4 }, - { "fooff", FlagRegister, 4 }, - { "fop", FlagRegister, 4 }, - { "mxcsr", FlagRegister, 4 }, - { "orig_eax", IntegerRegister, 4 }, - { "al", IntegerRegister, 1 }, - { "cl", IntegerRegister, 1 }, - { "dl", IntegerRegister, 1 }, - { "bl", IntegerRegister, 1 }, - { "ah", IntegerRegister, 1 }, - { "ch", IntegerRegister, 1 }, - { "dh", IntegerRegister, 1 }, - { "bh", IntegerRegister, 1 }, - { "ax", IntegerRegister, 2 }, - { "cx", IntegerRegister, 2 }, - { "dx", IntegerRegister, 2 }, - { "bx", IntegerRegister, 2 }, - { "bp", IntegerRegister, 2 }, - { "si", IntegerRegister, 2 }, - { "di", IntegerRegister, 2 } - }; - -////////////////////////////////////////////////////////////////// -// -// RegisterValue -// -////////////////////////////////////////////////////////////////// - -// FIXME: This should not really be needed. Instead the guessing, if any, -// should done by the engines. -static void fixup(Register *reg, RegisterKind kind, int size) -{ - reg->kind = kind; - if (!reg->size) - reg->size = size; -} - void Register::guessMissingData() { - if (name.startsWith("xmm")) { - fixup(this, VectorRegister, 16); - return; - } - - for (int i = 0; i != sizeof(theNameAndType) / sizeof(theNameAndType[0]); ++i) { - if (theNameAndType[i].name == name) { - fixup(this, theNameAndType[i].kind, theNameAndType[i].size); - return; - } - } - if (reportedType == "int") - fixup(this, IntegerRegister, 4); + kind = IntegerRegister; else if (reportedType == "float") - fixup(this, IntegerRegister, 8); + kind = FloatRegister; else if (reportedType == "_i387_ext") - fixup(this, IntegerRegister, 10); + kind = FloatRegister; else if (reportedType == "*1" || reportedType == "long") - fixup(this, IntegerRegister, 0); + kind = IntegerRegister; else if (reportedType.contains("vec")) - fixup(this, VectorRegister, 0); + kind = VectorRegister; else if (reportedType.startsWith("int")) - fixup(this, IntegerRegister, 0); + kind = IntegerRegister; + else if (name.startsWith("xmm") || name.startsWith("ymm")) + kind = VectorRegister; } static QString subTypeName(RegisterKind kind, int size, RegisterFormat format) @@ -267,7 +75,8 @@ static QString subTypeName(RegisterKind kind, int size, RegisterFormat format) switch (format) { case BinaryFormat: name += QLatin1Char('b'); break; case OctalFormat: name += QLatin1Char('o'); break; - case DecimalFormat: name += QLatin1Char('d'); break; + case DecimalFormat: name += QLatin1Char('u'); break; + case SignedDecimalFormat: name += QLatin1Char('s'); break; case HexadecimalFormat: name += QLatin1Char('x'); break; case CharacterFormat: name += QLatin1Char('c'); break; } @@ -329,6 +138,18 @@ static QByteArray formatRegister(quint64 v, int size, RegisterFormat format) } else if (format == DecimalFormat) { result = QByteArray::number(v, 10); result.prepend(QByteArray(2*size - result.size(), ' ')); + } else if (format == SignedDecimalFormat) { + qint64 sv; + if (size >= 8) + sv = qint64(v); + else if (size >= 4) + sv = qint32(v); + else if (size >= 2) + sv = qint16(v); + else + sv = qint8(v); + result = QByteArray::number(sv, 10); + result.prepend(QByteArray(2*size - result.size(), ' ')); } else if (format == CharacterFormat) { if (v >= 32 && v < 127) { result += '\''; @@ -436,8 +257,13 @@ RegisterItem::RegisterItem(const Register ®) : m_reg.guessMissingData(); if (m_reg.kind == IntegerRegister || m_reg.kind == VectorRegister) { + if (m_reg.size <= 8) { + appendChild(new RegisterSubItem(IntegerRegister, m_reg.size, 1, SignedDecimalFormat)); + appendChild(new RegisterSubItem(IntegerRegister, m_reg.size, 1, DecimalFormat)); + } for (int s = m_reg.size / 2; s; s = s / 2) { appendChild(new RegisterSubItem(IntegerRegister, s, m_reg.size / s, HexadecimalFormat)); + appendChild(new RegisterSubItem(IntegerRegister, s, m_reg.size / s, SignedDecimalFormat)); appendChild(new RegisterSubItem(IntegerRegister, s, m_reg.size / s, DecimalFormat)); if (s == 1) appendChild(new RegisterSubItem(IntegerRegister, s, m_reg.size / s, CharacterFormat)); @@ -548,8 +374,16 @@ QVariant RegisterSubItem::data(int column, int role) const if (m_subKind == IntegerRegister) { if (m_subFormat == CharacterFormat) return RegisterHandler::tr("Content as ASCII Characters"); - else - return RegisterHandler::tr("Content as %1-bit Integer Values").arg(8 * m_subSize); + if (m_subFormat == SignedDecimalFormat) + return RegisterHandler::tr("Content as %1-bit Signed Decimal Values").arg(8 * m_subSize); + if (m_subFormat == DecimalFormat) + return RegisterHandler::tr("Content as %1-bit Unsigned Decimal Values").arg(8 * m_subSize); + if (m_subFormat == HexadecimalFormat) + return RegisterHandler::tr("Content as %1-bit Hexadecimal Values").arg(8 * m_subSize); + if (m_subFormat == OctalFormat) + return RegisterHandler::tr("Content as %1-bit Octal Values").arg(8 * m_subSize); + if (m_subFormat == BinaryFormat) + return RegisterHandler::tr("Content as %1-bit Binary Values").arg(8 * m_subSize); } if (m_subKind == FloatRegister) return RegisterHandler::tr("Contents as %1-bit Floating Point Values").arg(8 * m_subSize); diff --git a/src/plugins/debugger/registerhandler.h b/src/plugins/debugger/registerhandler.h index 1d42a85edf..3afe40bd4c 100644 --- a/src/plugins/debugger/registerhandler.h +++ b/src/plugins/debugger/registerhandler.h @@ -71,6 +71,7 @@ enum RegisterFormat CharacterFormat, HexadecimalFormat, DecimalFormat, + SignedDecimalFormat, OctalFormat, BinaryFormat }; diff --git a/src/plugins/debugger/registerwindow.cpp b/src/plugins/debugger/registerwindow.cpp index 3862bd46e6..1cdc690f5e 100644 --- a/src/plugins/debugger/registerwindow.cpp +++ b/src/plugins/debugger/registerwindow.cpp @@ -71,7 +71,7 @@ public: // Big integers are assumed to be hexadecimal. int base = 16; if (!big) { - if (format == DecimalFormat) + if (format == DecimalFormat || format == SignedDecimalFormat) base = 10; else if (format == OctalFormat) base = 8; diff --git a/src/plugins/debugger/sourceutils.cpp b/src/plugins/debugger/sourceutils.cpp index e70696ccc5..2e55dc8cbd 100644 --- a/src/plugins/debugger/sourceutils.cpp +++ b/src/plugins/debugger/sourceutils.cpp @@ -30,6 +30,9 @@ #include "sourceutils.h" +#include "debuggerinternalconstants.h" +#include "debuggerengine.h" +#include "disassemblerlines.h" #include "watchdata.h" #include "watchutils.h" @@ -45,6 +48,8 @@ #include <utils/qtcassert.h> #include <QDebug> +#include <QTextDocument> +#include <QTextBlock> #include <string.h> #include <ctype.h> @@ -333,5 +338,37 @@ QString fixCppExpression(const QString &expIn) return removeObviousSideEffects(exp); } +ContextData getLocationContext(TextDocument *document, int lineNumber) +{ + ContextData data; + QTC_ASSERT(document, return data); + if (document->property(Constants::OPENED_WITH_DISASSEMBLY).toBool()) { + QString line = document->document()->findBlockByNumber(lineNumber - 1).text(); + DisassemblerLine l; + l.fromString(line); + if (l.address) { + data.type = LocationByAddress; + data.address = l.address; + } else { + QString fileName = document->property(Constants::DISASSEMBLER_SOURCE_FILE).toString(); + if (!fileName.isEmpty()) { + // Possibly one of the "27 [1] foo = x" lines + int pos = line.indexOf(QLatin1Char('[')); + int ln = line.left(pos - 1).toInt(); + if (ln > 0) { + data.type = LocationByFile; + data.fileName = fileName; + data.lineNumber = ln; + } + } + } + } else { + data.type = LocationByFile; + data.fileName = document->filePath().toString(); + data.lineNumber = lineNumber; + } + return data; +} + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/sourceutils.h b/src/plugins/debugger/sourceutils.h index 9d3d50be97..862ecfc9eb 100644 --- a/src/plugins/debugger/sourceutils.h +++ b/src/plugins/debugger/sourceutils.h @@ -33,12 +33,18 @@ #include <QString> -namespace TextEditor { class TextEditorWidget; } +namespace TextEditor { +class TextDocument; +class TextEditorWidget; +} + namespace CPlusPlus { class Snapshot; } namespace Debugger { namespace Internal { +class ContextData; + // Editor tooltip support QString cppExpressionAt(TextEditor::TextEditorWidget *editorWidget, int pos, int *line, int *column, QString *function = 0, @@ -53,6 +59,8 @@ bool getUninitializedVariables(const CPlusPlus::Snapshot &snapshot, const QString &function, const QString &file, int line, QStringList *uninitializedVariables); +ContextData getLocationContext(TextEditor::TextDocument *document, int lineNumber); + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/watchdata.cpp b/src/plugins/debugger/watchdata.cpp index 265d0bbc1b..98e382d9f2 100644 --- a/src/plugins/debugger/watchdata.cpp +++ b/src/plugins/debugger/watchdata.cpp @@ -300,14 +300,15 @@ QString WatchData::toString() const return res + QLatin1Char('}'); } -// Format a tooltip fow with aligned colon. -static void formatToolTipRow(QTextStream &str, - const QString &category, const QString &value) +// Format a tooltip row with aligned colon. +static void formatToolTipRow(QTextStream &str, const QString &category, const QString &value) { QString val = value.toHtmlEscaped(); val.replace(QLatin1Char('\n'), QLatin1String("<br>")); - str << "<tr><td>" << category << "</td><td> : </td><td>" - << val << "</td></tr>"; + str << "<tr><td>" << category << "</td><td>"; + if (!category.isEmpty()) + str << ':'; + str << "</td><td>" << val << "</td></tr>"; } QString WatchData::toToolTip() const @@ -320,20 +321,22 @@ QString WatchData::toToolTip() const formatToolTipRow(str, tr("Internal Type"), QLatin1String(type)); if (!displayedType.isEmpty()) formatToolTipRow(str, tr("Displayed Type"), displayedType); - QString val = value; - // Automatically display hex value for unsigned integers. - if (!val.isEmpty() && val.at(0).isDigit() && isIntType(type)) { - bool ok; - const quint64 intValue = val.toULongLong(&ok); - if (ok && intValue) - val += QLatin1String(" (hex) ") + QString::number(intValue, 16); - } - if (val.size() > 1000) { - val.truncate(1000); - val += QLatin1Char(' '); - val += tr("... <cut off>"); + bool ok; + const quint64 intValue = value.toULongLong(&ok); + if (ok && intValue) { + formatToolTipRow(str, tr("Value"), QLatin1String("(dec) ") + value); + formatToolTipRow(str, QString(), QLatin1String("(hex) ") + QString::number(intValue, 16)); + formatToolTipRow(str, QString(), QLatin1String("(oct) ") + QString::number(intValue, 8)); + formatToolTipRow(str, QString(), QLatin1String("(bin) ") + QString::number(intValue, 2)); + } else { + QString val = value; + if (val.size() > 1000) { + val.truncate(1000); + val += QLatin1Char(' '); + val += tr("... <cut off>"); + } + formatToolTipRow(str, tr("Value"), val); } - formatToolTipRow(str, tr("Value"), val); if (address) formatToolTipRow(str, tr("Object Address"), formatToolTipAddress(address)); if (origaddr) diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index b8fbacb202..80d59291fa 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -511,34 +511,6 @@ static QString quoteUnprintable(const QString &str) return encoded; } -static QString translate(const QString &str) -{ - if (str.startsWith(QLatin1Char('<'))) { - if (str == QLatin1String("<empty>")) - return WatchHandler::tr("<empty>"); - if (str == QLatin1String("<uninitialized>")) - return WatchHandler::tr("<uninitialized>"); - if (str == QLatin1String("<invalid>")) - return WatchHandler::tr("<invalid>"); - if (str == QLatin1String("<not accessible>")) - return WatchHandler::tr("<not accessible>"); - if (str.endsWith(QLatin1String(" items>"))) { - // '<10 items>' or '<>10 items>' (more than) - bool ok; - const bool moreThan = str.at(1) == QLatin1Char('>'); - const int numberPos = moreThan ? 2 : 1; - const int len = str.indexOf(QLatin1Char(' ')) - numberPos; - const int size = str.mid(numberPos, len).toInt(&ok); - QTC_ASSERT(ok, qWarning("WatchHandler: Invalid item count '%s'", - qPrintable(str))); - return moreThan ? - WatchHandler::tr("<more than %n items>", 0, size) : - WatchHandler::tr("<%n items>", 0, size); - } - } - return quoteUnprintable(str); -} - QString WatchItem::formattedValue() const { if (type == "bool") { @@ -594,12 +566,11 @@ QString WatchItem::formattedValue() const if (elided) { QString v = value; v.chop(1); - v = translate(v); QString len = elided > 0 ? QString::number(elided) : QLatin1String("unknown length"); return v + QLatin1String("\"... (") + len + QLatin1Char(')'); } - return translate(value); + return quoteUnprintable(value); } // Get a pointer address from pointer values reported by the debugger. @@ -657,7 +628,7 @@ QVariant WatchItem::editValue() const stringValue.replace(QLatin1String("\n"), QLatin1String("\\n")); } } - return QVariant(translate(stringValue)); + return QVariant(quoteUnprintable(stringValue)); } bool WatchItem::canFetchMore() const diff --git a/src/plugins/ios/iosprobe.cpp b/src/plugins/ios/iosprobe.cpp index cdf0c8157a..49634dcfbc 100644 --- a/src/plugins/ios/iosprobe.cpp +++ b/src/plugins/ios/iosprobe.cpp @@ -131,15 +131,14 @@ void IosProbe::setupDefaultToolchains(const QString &devPath, const QString &xco foreach (const QFileInfo &fInfo, platforms) { if (fInfo.isDir() && fInfo.suffix() == QLatin1String("platform")) { qCDebug(probeLog) << indent << QString::fromLatin1("Setting up %1").arg(fInfo.fileName()); - QSettingsPtr infoSettings(new QSettings( - fInfo.absoluteFilePath() + QLatin1String("/Info.plist"), - QSettings::NativeFormat)); - if (!infoSettings->contains(QLatin1String("Name"))) { + QSettings infoSettings(fInfo.absoluteFilePath() + QLatin1String("/Info.plist"), + QSettings::NativeFormat); + if (!infoSettings.contains(QLatin1String("Name"))) { qCWarning(probeLog) << indent << QString::fromLatin1("Missing platform name in Info.plist of %1") .arg(fInfo.absoluteFilePath()); continue; } - QString name = infoSettings->value(QLatin1String("Name")).toString(); + QString name = infoSettings.value(QLatin1String("Name")).toString(); if (name != QLatin1String("macosx") && name != QLatin1String("iphoneos") && name != QLatin1String("iphonesimulator")) { @@ -147,10 +146,12 @@ void IosProbe::setupDefaultToolchains(const QString &devPath, const QString &xco continue; } + const QString platformSdkVersion = infoSettings.value(QLatin1String("Version")).toString(); + // prepare default platform properties - QVariantMap defaultProp = infoSettings->value(QLatin1String("DefaultProperties")) + QVariantMap defaultProp = infoSettings.value(QLatin1String("DefaultProperties")) .toMap(); - QVariantMap overrideProp = infoSettings->value(QLatin1String("OverrideProperties")) + QVariantMap overrideProp = infoSettings.value(QLatin1String("OverrideProperties")) .toMap(); QMapIterator<QString, QVariant> i(overrideProp); while (i.hasNext()) { @@ -184,7 +185,6 @@ void IosProbe::setupDefaultToolchains(const QString &devPath, const QString &xco clangProfile.platformKind = 0; clangProfile.name = clangFullName; clangProfile.platformPath = Utils::FileName(fInfo); - clangProfile.platformInfo = infoSettings; clangProfile.compilerPath = Utils::FileName(clangFileInfo); QStringList flags = extraFlags; flags << QLatin1String("-dumpmachine"); @@ -208,7 +208,6 @@ void IosProbe::setupDefaultToolchains(const QString &devPath, const QString &xco gccProfile.platformKind = 0; // use the arm-apple-darwin10-llvm-* variant and avoid the extraFlags if available??? gccProfile.platformPath = Utils::FileName(fInfo); - gccProfile.platformInfo = infoSettings; gccProfile.compilerPath = Utils::FileName(gccFileInfo); QStringList flags = extraFlags; flags << QLatin1String("-dumpmachine"); @@ -223,23 +222,23 @@ void IosProbe::setupDefaultToolchains(const QString &devPath, const QString &xco // set SDKs/sysroot QString sysRoot; - QSettingsPtr sdkSettings; { QString sdkName; if (defaultProp.contains(QLatin1String("SDKROOT"))) sdkName = defaultProp.value(QLatin1String("SDKROOT")).toString(); QString sdkPath; + QString sdkPathWithSameVersion; QDir sdks(fInfo.absoluteFilePath() + QLatin1String("/Developer/SDKs")); QString maxVersion; foreach (const QFileInfo &sdkDirInfo, sdks.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { indent = QLatin1String(" "); - QSettingsPtr sdkInfo(new QSettings(sdkDirInfo.absoluteFilePath() - + QLatin1String("/SDKSettings.plist"), - QSettings::NativeFormat)); - QString versionStr = sdkInfo->value(QLatin1String("Version")).toString(); - QVariant currentSdkName = sdkInfo->value(QLatin1String("CanonicalName")); - bool isBaseSdk = sdkInfo->value((QLatin1String("isBaseSDK"))).toString() + QSettings sdkInfo(sdkDirInfo.absoluteFilePath() + + QLatin1String("/SDKSettings.plist"), + QSettings::NativeFormat); + QString versionStr = sdkInfo.value(QLatin1String("Version")).toString(); + QVariant currentSdkName = sdkInfo.value(QLatin1String("CanonicalName")); + bool isBaseSdk = sdkInfo.value((QLatin1String("isBaseSDK"))).toString() .toLower() != QLatin1String("no"); if (!isBaseSdk) { qCDebug(probeLog) << indent << QString::fromLatin1("Skipping non base Sdk %1") @@ -250,30 +249,29 @@ void IosProbe::setupDefaultToolchains(const QString &devPath, const QString &xco if (maxVersion.isEmpty() || compareVersions(maxVersion, versionStr) > 0) { maxVersion = versionStr; sdkPath = sdkDirInfo.canonicalFilePath(); - sdkSettings = sdkInfo; } } else if (currentSdkName == sdkName) { sdkPath = sdkDirInfo.canonicalFilePath(); - sdkSettings = sdkInfo; - } + } else if (currentSdkName.toString().startsWith(sdkName) /*if sdkName doesn't contain version*/ + && compareVersions(platformSdkVersion, versionStr) == 0) + sdkPathWithSameVersion = sdkDirInfo.canonicalFilePath(); } - if (!sdkPath.isEmpty()) + if (sdkPath.isEmpty()) + sysRoot = sdkPathWithSameVersion; + else sysRoot = sdkPath; - else if (!sdkName.isEmpty()) + if (sysRoot.isEmpty() && !sdkName.isEmpty()) qCDebug(probeLog) << indent << QString::fromLatin1("Failed to find sysroot %1").arg(sdkName); } if (hasClang && !sysRoot.isEmpty()) { m_platforms[clangFullName].platformKind |= Platform::BasePlatform; m_platforms[clangFullName].sdkPath = Utils::FileName::fromString(sysRoot); - m_platforms[clangFullName].sdkSettings = sdkSettings; m_platforms[clang11FullName].platformKind |= Platform::BasePlatform; m_platforms[clang11FullName].sdkPath = Utils::FileName::fromString(sysRoot); - m_platforms[clang11FullName].sdkSettings = sdkSettings; } if (hasGcc && !sysRoot.isEmpty()) { m_platforms[gccFullName].platformKind |= Platform::BasePlatform; m_platforms[gccFullName].sdkPath = Utils::FileName::fromString(sysRoot); - m_platforms[gccFullName].sdkSettings = sdkSettings; } } indent = QLatin1String(" "); diff --git a/src/plugins/ios/iosprobe.h b/src/plugins/ios/iosprobe.h index 4e1bd0aff2..8f70f1fa8e 100644 --- a/src/plugins/ios/iosprobe.h +++ b/src/plugins/ios/iosprobe.h @@ -37,8 +37,6 @@ namespace Ios { -typedef QSharedPointer<QSettings> QSettingsPtr; - class Platform { public: @@ -56,8 +54,6 @@ public: Utils::FileName compilerPath; QString architecture; QStringList backendFlags; - QSettingsPtr platformInfo; - QSettingsPtr sdkSettings; }; class IosProbe diff --git a/src/plugins/projectexplorer/kitchooser.cpp b/src/plugins/projectexplorer/kitchooser.cpp index b0ad5dc62e..6dfc1eb427 100644 --- a/src/plugins/projectexplorer/kitchooser.cpp +++ b/src/plugins/projectexplorer/kitchooser.cpp @@ -47,7 +47,10 @@ namespace ProjectExplorer { const char lastKitKey[] = "LastSelectedKit"; KitChooser::KitChooser(QWidget *parent) : - QWidget(parent) + QWidget(parent), + m_kitMatcher([](const Kit *k) { + return k->isValid(); + }) { m_chooser = new QComboBox(this); m_chooser->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); @@ -79,11 +82,6 @@ void KitChooser::onCurrentIndexChanged(int index) emit currentIndexChanged(index); } -bool KitChooser::kitMatches(const Kit *k) const -{ - return k->isValid(); -} - QString KitChooser::kitText(const Kit *k) const { return k->displayName(); @@ -98,7 +96,7 @@ void KitChooser::populate() { m_chooser->clear(); foreach (Kit *kit, KitManager::sortKits(KitManager::kits())) { - if (kitMatches(kit)) { + if (m_kitMatcher(kit)) { m_chooser->addItem(kitText(kit), qVariantFromValue(kit->id())); m_chooser->setItemData(m_chooser->count() - 1, kitToolTip(kit), Qt::ToolTipRole); } @@ -140,6 +138,12 @@ Core::Id KitChooser::currentKitId() const return kit ? kit->id() : Core::Id(); } +void KitChooser::setKitMatcher(const KitChooser::KitMatcher &matcher) +{ + m_kitMatcher = matcher; + populate(); +} + Kit *KitChooser::kitAt(int index) const { Core::Id id = qvariant_cast<Core::Id>(m_chooser->itemData(index)); diff --git a/src/plugins/projectexplorer/kitchooser.h b/src/plugins/projectexplorer/kitchooser.h index 571864efb7..c10e29a9a4 100644 --- a/src/plugins/projectexplorer/kitchooser.h +++ b/src/plugins/projectexplorer/kitchooser.h @@ -35,6 +35,8 @@ #include <QWidget> +#include <functional> + QT_BEGIN_NAMESPACE class QComboBox; class QPushButton; @@ -57,6 +59,9 @@ public: void setCurrentKitId(Core::Id id); Core::Id currentKitId() const; + typedef std::function<bool(const Kit *k)> KitMatcher; + void setKitMatcher(const KitMatcher &matcher); + Kit *currentKit() const; signals: @@ -71,11 +76,11 @@ private slots: void onManageButtonClicked(); protected: - virtual bool kitMatches(const Kit *k) const; virtual QString kitText(const Kit *k) const; virtual QString kitToolTip(Kit *k) const; private: + KitMatcher m_kitMatcher; Kit *kitAt(int index) const; QComboBox *m_chooser; QPushButton *m_manageButton; diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 7812b291b4..947c907d59 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -93,15 +93,9 @@ KitManagerConfigWidget::KitManagerConfigWidget(Kit *k) : QWidget *inner = new QWidget; inner->setLayout(m_layout); - QScrollArea *scroll = new QScrollArea; - scroll->setWidget(inner); - scroll->setFrameShape(QFrame::NoFrame); - scroll->setWidgetResizable(true); - scroll->setFocusPolicy(Qt::NoFocus); - QGridLayout *mainLayout = new QGridLayout(this); mainLayout->setMargin(1); - mainLayout->addWidget(scroll, 0, 0); + mainLayout->addWidget(inner, 0, 0); toolTip = tr("Kit name and icon."); label = createLabel(tr("Name:"), toolTip); diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index 3629c43ff9..d80732f7d5 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -130,7 +130,6 @@ HEADERS += projectexplorer.h \ devicesupport/devicesettingswidget.h \ devicesupport/devicesettingspage.h \ devicesupport/devicetestdialog.h \ - devicesupport/devicetypekitchooser.h \ devicesupport/deviceusedportsgatherer.h \ devicesupport/deviceapplicationrunner.h \ devicesupport/localprocesslist.h \ @@ -272,7 +271,6 @@ SOURCES += projectexplorer.cpp \ devicesupport/devicesettingswidget.cpp \ devicesupport/devicesettingspage.cpp \ devicesupport/devicetestdialog.cpp \ - devicesupport/devicetypekitchooser.cpp \ devicesupport/deviceusedportsgatherer.cpp \ devicesupport/deviceapplicationrunner.cpp \ devicesupport/localprocesslist.cpp \ diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs index f74ffdd9ed..154a0d7280 100644 --- a/src/plugins/projectexplorer/projectexplorer.qbs +++ b/src/plugins/projectexplorer/projectexplorer.qbs @@ -213,7 +213,6 @@ QtcPlugin { "devicesettingspage.cpp", "devicesettingspage.h", "devicesettingswidget.cpp", "devicesettingswidget.h", "devicesettingswidget.ui", "devicetestdialog.cpp", "devicetestdialog.h", "devicetestdialog.ui", - "devicetypekitchooser.cpp", "devicetypekitchooser.h", "deviceusedportsgatherer.cpp", "deviceusedportsgatherer.h", "idevice.cpp", "idevice.h", "idevicefactory.cpp", "idevicefactory.h", diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 9bd96946f7..dfa43f239e 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -96,11 +96,7 @@ ProjectWindow::~ProjectWindow() void ProjectWindow::aboutToShutdown() { - showProperties(-1, -1); // that's a bit stupid, but otherwise stuff is still - // connected to the session - m_cache.clear(); - disconnect(KitManager::instance(), 0, this, 0); - disconnect(SessionManager::instance(), 0, this, 0); + showProperties(-1, -1); } void ProjectWindow::removedTarget(Target *) @@ -179,13 +175,14 @@ bool ProjectWindow::deregisterProject(Project *project) if (index == -1) return false; + disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), + this, SLOT(removedTarget(ProjectExplorer::Target*))); + QVector<QWidget *> deletedWidgets = m_cache.deregisterProject(project); if (deletedWidgets.contains(m_currentWidget)) m_currentWidget = 0; m_tabWidget->removeTab(index); - disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), - this, SLOT(removedTarget(ProjectExplorer::Target*))); return true; } @@ -383,8 +380,3 @@ int WidgetCache::recheckFactories(Project *project, int oldSupportsIndex) return newIndex; } -void WidgetCache::clear() -{ - while (!m_projects.isEmpty()) - deregisterProject(m_projects.first().project); -} diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp index 7fe5ba8c95..a02bc0bb01 100644 --- a/src/plugins/pythoneditor/pythoneditorplugin.cpp +++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp @@ -228,6 +228,7 @@ static Core::Id idFromScript(const QString &target) class PythonProjectManager : public IProjectManager { + Q_OBJECT public: PythonProjectManager() {} @@ -366,6 +367,7 @@ private: class PythonRunConfigurationWidget : public QWidget { + Q_OBJECT public: PythonRunConfigurationWidget(PythonRunConfiguration *runConfiguration, QWidget *parent = 0); void setInterpreter(const QString &interpreter); @@ -379,6 +381,7 @@ private: class PythonRunConfiguration : public RunConfiguration { + Q_OBJECT public: PythonRunConfiguration(Target *parent, Core::Id id); @@ -405,6 +408,7 @@ private: class PythonRunControl : public RunControl { + Q_OBJECT public: PythonRunControl(PythonRunConfiguration *runConfiguration, Core::Id mode); @@ -1270,3 +1274,5 @@ QSet<QString> PythonEditorPlugin::builtins() } // namespace Internal } // namespace PythonEditor + +#include "pythoneditorplugin.moc" diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 527f546241..d473fb735f 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -31,11 +31,12 @@ #include "defaultpropertyprovider.h" #include "qbsconstants.h" +#include <projectexplorer/abi.h> #include <projectexplorer/kit.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/toolchain.h> #include <projectexplorer/projectexplorerconstants.h> -#include <qtsupport/baseqtversion.h> + #include <utils/hostosinfo.h> #include <utils/qtcassert.h> @@ -189,6 +190,9 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor default: break; } + } else if (targetAbi.architecture() == ProjectExplorer::Abi::ArmArchitecture && + targetAbi.os() == ProjectExplorer::Abi::MacOS) { + architecture.append(QLatin1String("v7")); } data.insert(QLatin1String(QBS_ARCHITECTURE), qbs::canonicalArchitecture(architecture)); @@ -226,41 +230,13 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor const QString toolchainPrefix = extractToolchainPrefix(&compilerName); if (!toolchainPrefix.isEmpty()) data.insert(QLatin1String(CPP_TOOLCHAINPREFIX), toolchainPrefix); - data.insert(QLatin1String(CPP_COMPILERNAME), compilerName); + data.insert(QLatin1String(CPP_CXXCOMPILERNAME), compilerName); if (targetAbi.os() != ProjectExplorer::Abi::WindowsOS || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) { data.insert(QLatin1String(CPP_LINKERNAME), compilerName); } data.insert(QLatin1String(CPP_TOOLCHAINPATH), cxxFileInfo.absolutePath()); - QVariantMap m; - if (toolchain.contains(QLatin1String("clang"))) { - m[QLatin1String("c")] = m[QLatin1String("objc")] = QLatin1String("clang"); - m[QLatin1String("cpp")] = m[QLatin1String("objcpp")] = QLatin1String("clang++"); - } else if (toolchain.contains(QLatin1String("gcc"))) { - m[QLatin1String("c")] = m[QLatin1String("objc")] = QLatin1String("gcc"); - m[QLatin1String("cpp")] = m[QLatin1String("objcpp")] = QLatin1String("g++"); - } - const QString fullPrefix = cxxFileInfo.absolutePath() + QLatin1Char('/') + toolchainPrefix; - for (auto it = m.begin(); it != m.end();) { - const QString filePath = Utils::HostOsInfo::withExecutableSuffix(fullPrefix - + it.value().toString()); - if (QFile::exists(filePath)) { - it.value() = filePath; - ++it; - } else { - it = m.erase(it); - } - } - if (!m.isEmpty()) - data.insert(QLatin1String(CPP_COMPILERPATHBYLANGUAGE), m); - - if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor - || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor) { - const QLatin1String flags("/FS"); - data.insert(QLatin1String(CPP_PLATFORMCFLAGS), flags); - data.insert(QLatin1String(CPP_PLATFORMCXXFLAGS), flags); - } return data; } diff --git a/src/plugins/qbsprojectmanager/qbsconstants.h b/src/plugins/qbsprojectmanager/qbsconstants.h index 0f76d4963d..666a7dc577 100644 --- a/src/plugins/qbsprojectmanager/qbsconstants.h +++ b/src/plugins/qbsprojectmanager/qbsconstants.h @@ -38,15 +38,11 @@ namespace Constants { const char QBS_TARGETOS[] = "qbs.targetOS"; const char QBS_SYSROOT[] = "qbs.sysroot"; const char QBS_ARCHITECTURE[] = "qbs.architecture"; -const char QBS_ENDIANNESS[] = "qbs.endianness"; const char QBS_TOOLCHAIN[] = "qbs.toolchain"; const char CPP_TOOLCHAINPATH[] = "cpp.toolchainInstallPath"; -const char CPP_COMPILERPATHBYLANGUAGE[] = "cpp.compilerPathByLanguage"; const char CPP_TOOLCHAINPREFIX[] = "cpp.toolchainPrefix"; -const char CPP_COMPILERNAME[] = "cpp.compilerName"; +const char CPP_CXXCOMPILERNAME[] = "cpp.cxxCompilerName"; const char CPP_LINKERNAME[] = "cpp.linkerName"; -const char CPP_PLATFORMCFLAGS[] = "cpp.platformCFlags"; -const char CPP_PLATFORMCXXFLAGS[] = "cpp.platformCxxFlags"; const char CPP_PLATFORMPATH[] = "cpp.platformPath"; const char CPP_XCODESDKNAME[] = "cpp.xcodeSdkName"; const char CPP_XCODESDKVERSION[] = "cpp.xcodeSdkVersion"; diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index 8b6defe2f0..5ba2661fa8 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -245,6 +245,23 @@ public: bool m_isFile; }; + +static QList<ProjectExplorer::ProjectAction> supportedNodeActions(ProjectExplorer::Node *node, + bool managesFiles) +{ + QList<ProjectExplorer::ProjectAction> actions; + const QbsProject * const project = parentQbsProjectNode(node)->project(); + if (!project->isProjectEditable()) + return actions; + if (managesFiles) + actions << ProjectExplorer::AddNewFile << ProjectExplorer::AddExistingFile; + if (node->nodeType() == ProjectExplorer::FileNodeType + && !project->qbsProject().buildSystemFiles().contains(node->path().toString())) { + actions << ProjectExplorer::RemoveFile << ProjectExplorer::Rename; + } + return actions; +} + // ---------------------------------------------------------------------- // QbsFileNode: // ---------------------------------------------------------------------- @@ -273,8 +290,7 @@ QbsFolderNode::QbsFolderNode(const Utils::FileName &folderPath, ProjectExplorer: QList<ProjectExplorer::ProjectAction> QbsFolderNode::supportedActions(ProjectExplorer::Node *node) const { - Q_UNUSED(node); - return QList<ProjectExplorer::ProjectAction>(); + return supportedNodeActions(node, false); } // --------------------------------------------------------------------------- @@ -341,22 +357,6 @@ bool QbsBaseProjectNode::renameFile(const QString &filePath, const QString &newF return false; } - -static QList<ProjectExplorer::ProjectAction> supportedNodeActions(ProjectExplorer::Node *node) -{ - QList<ProjectExplorer::ProjectAction> actions; - const QbsProject * const project = parentQbsProjectNode(node)->project(); - if (!project->isProjectEditable()) - return actions; - actions << ProjectExplorer::AddNewFile << ProjectExplorer::AddExistingFile; - if (node->nodeType() == ProjectExplorer::FileNodeType - && !project->qbsProject().buildSystemFiles().contains(node->path().toString())) { - actions << ProjectExplorer::RemoveFile; - actions << ProjectExplorer::Rename; - } - return actions; -} - // -------------------------------------------------------------------- // QbsGroupNode: // -------------------------------------------------------------------- @@ -387,7 +387,7 @@ bool QbsGroupNode::isEnabled() const QList<ProjectExplorer::ProjectAction> QbsGroupNode::supportedActions(ProjectExplorer::Node *node) const { - return supportedNodeActions(node); + return supportedNodeActions(node, true); } bool QbsGroupNode::addFiles(const QStringList &filePaths, QStringList *notAdded) @@ -634,7 +634,7 @@ bool QbsProductNode::showInSimpleTree() const QList<ProjectExplorer::ProjectAction> QbsProductNode::supportedActions(ProjectExplorer::Node *node) const { - return supportedNodeActions(node); + return supportedNodeActions(node, true); } bool QbsProductNode::addFiles(const QStringList &filePaths, QStringList *notAdded) diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp index 8ab8089981..27601e45bc 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp @@ -207,9 +207,9 @@ bool QmakeAndroidBuildApkStep::init() return true; QString inputFile = node->singleVariableValue(QmakeProjectManager::AndroidDeploySettingsFile); - if (inputFile.isEmpty()) { // should never happen - emit addOutput(tr("Internal Error: Unknown Android deployment JSON file location."), BuildStep::ErrorMessageOutput); - return false; + if (inputFile.isEmpty()) { + m_skipBuilding = true; + return true; } QStringList arguments; diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 3a0511c73e..1340797eaf 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -2483,21 +2483,24 @@ QString QmakeProFileNode::buildDir(QmakeBuildConfiguration *bc) const return QDir::cleanPath(QDir(bc->buildDirectory().toString()).absoluteFilePath(relativeDir)); } -QString QmakeProFileNode::uiDirectory(const QString &buildDir) const +Utils::FileName QmakeProFileNode::uiDirectory(const Utils::FileName &buildDir) const { + if (buildDir.isEmpty()) + return buildDir; const QmakeVariablesHash::const_iterator it = m_varValues.constFind(UiDirVar); if (it != m_varValues.constEnd() && !it.value().isEmpty()) - return it.value().front(); + return Utils::FileName::fromString(it.value().front()); return buildDir; } -QString QmakeProFileNode::uiHeaderFile(const QString &uiDir, const FileName &formFile) +QString QmakeProFileNode::uiHeaderFile(const Utils::FileName &uiDir, const FileName &formFile) { - QString uiHeaderFilePath = uiDir; - uiHeaderFilePath += QLatin1String("/ui_"); - uiHeaderFilePath += formFile.toFileInfo().completeBaseName(); - uiHeaderFilePath += QLatin1String(".h"); - return QDir::cleanPath(uiHeaderFilePath); + if (uiDir.isEmpty()) + return QString(); + + Utils::FileName uiHeaderFilePath = uiDir; + uiHeaderFilePath.appendPath(QLatin1String("ui_") + formFile.toFileInfo().completeBaseName() + QLatin1String(".h")); + return QDir::cleanPath(uiHeaderFilePath.toString()); } void QmakeProFileNode::updateUiFiles(const QString &buildDir) @@ -2514,8 +2517,11 @@ void QmakeProFileNode::updateUiFiles(const QString &buildDir) const QList<FileNode*> uiFiles = uiFilesVisitor.uiFileNodes; // Find the UiDir, there can only ever be one - const QString uiDir = uiDirectory(buildDir); - foreach (const FileNode *uiFile, uiFiles) - m_uiFiles.insert(uiFile->path().toString(), uiHeaderFile(uiDir, uiFile->path())); + const Utils::FileName uiDir = uiDirectory(Utils::FileName::fromString(buildDir)); + foreach (const FileNode *uiFile, uiFiles) { + QString headerFile = uiHeaderFile(uiDir, uiFile->path()); + if (!headerFile.isEmpty()) + m_uiFiles.insert(uiFile->path().toString(), headerFile); + } } } diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index e6a6a02b27..1a9692f607 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -337,8 +337,8 @@ public: QString sourceDir() const; QString buildDir(QmakeBuildConfiguration *bc = 0) const; - QString uiDirectory(const QString &buildDir) const; - static QString uiHeaderFile(const QString &uiDir, const Utils::FileName &formFile); + Utils::FileName uiDirectory(const Utils::FileName &buildDir) const; + static QString uiHeaderFile(const Utils::FileName &uiDir, const Utils::FileName &formFile); QHash<QString, QString> uiFiles() const; QmakeProFileNode *findProFileFor(const Utils::FileName &string) const; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 4387c8806d..96915a08e2 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -897,7 +897,9 @@ QString QmakeProject::generatedUiHeader(const FileName &formFile) const // the top-level project only. if (m_rootProjectNode) if (const QmakeProFileNode *pro = proFileNodeOf(m_rootProjectNode, FormType, formFile)) - return QmakeProFileNode::uiHeaderFile(pro->uiDirectory(pro->buildDir()), formFile); + return QmakeProFileNode::uiHeaderFile( + pro->uiDirectory(Utils::FileName::fromString(pro->buildDir())), + formFile); return QString(); } diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index 8b01b260f3..c64aefedfd 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -378,7 +378,7 @@ void NodeInstanceServerProxy::writeCommand(const QVariant &command) writeCommandToIODecive(command, m_thirdSocket.data(), m_writeCommandCounter); if (m_captureFileForTest.isWritable()) { - qDebug() << "Write strean to file: " << m_captureFileForTest.fileName(); + qDebug() << "Write stream to file: " << m_captureFileForTest.fileName(); writeCommandToIODecive(command, &m_captureFileForTest, m_writeCommandCounter); qDebug() << "\twrite file: " << m_captureFileForTest.pos(); } diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 06ba8b9900..06cf93af76 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -1121,6 +1121,11 @@ QString NodeMetaInfoPrivate::importDirectoryPath() const const QString targetPath = QDir(importPath).filePath(importInfo.path()); if (QDir(targetPath).exists()) return targetPath; + const QString targetPathVersion = QDir(importPath).filePath(importInfo.path() + + QLatin1Char('.') + + QString::number(importInfo.version().majorVersion())); + if (QDir(targetPathVersion).exists()) + return targetPathVersion; } } } diff --git a/src/plugins/qmldesigner/designercore/model/qmlanchors.cpp b/src/plugins/qmldesigner/designercore/model/qmlanchors.cpp index b5e9eec8c6..a08f92b89c 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlanchors.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlanchors.cpp @@ -366,6 +366,9 @@ void QmlAnchors::removeAnchors() bool QmlAnchors::instanceHasAnchor(AnchorLineType sourceAnchorLine) const { + if (!qmlItemNode().isValid()) + return false; + const PropertyName propertyName = anchorPropertyName(sourceAnchorLine); if (sourceAnchorLine & AnchorLineFill) @@ -453,6 +456,9 @@ bool QmlAnchors::instanceHasMargin(AnchorLineType sourceAnchorLineType) const static bool checkForHorizontalCycleRecusive(const QmlAnchors &anchors, QList<QmlItemNode> &visitedItems) { + if (!anchors.isValid()) + return false; + visitedItems.append(anchors.qmlItemNode()); if (anchors.instanceHasAnchor(AnchorLineLeft)) { AnchorLine leftAnchorLine = anchors.instanceAnchor(AnchorLineLeft); @@ -477,6 +483,9 @@ static bool checkForHorizontalCycleRecusive(const QmlAnchors &anchors, QList<Qml static bool checkForVerticalCycleRecusive(const QmlAnchors &anchors, QList<QmlItemNode> &visitedItems) { + if (!anchors.isValid()) + return false; + visitedItems.append(anchors.qmlItemNode()); if (anchors.instanceHasAnchor(AnchorLineTop)) { diff --git a/src/plugins/qnx/qnxattachdebugsupport.cpp b/src/plugins/qnx/qnxattachdebugsupport.cpp index 3bb3f271a9..4c9eb69b74 100644 --- a/src/plugins/qnx/qnxattachdebugsupport.cpp +++ b/src/plugins/qnx/qnxattachdebugsupport.cpp @@ -40,10 +40,10 @@ #include <debugger/debuggerstartparameters.h> #include <projectexplorer/devicesupport/deviceapplicationrunner.h> #include <projectexplorer/devicesupport/deviceusedportsgatherer.h> -#include <projectexplorer/devicesupport/devicetypekitchooser.h> #include <projectexplorer/devicesupport/deviceprocessesdialog.h> #include <projectexplorer/devicesupport/deviceprocesslist.h> #include <projectexplorer/kit.h> +#include <projectexplorer/kitchooser.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/projectexplorer.h> #include <projectexplorer/toolchain.h> @@ -74,7 +74,11 @@ QnxAttachDebugSupport::QnxAttachDebugSupport(QObject *parent) void QnxAttachDebugSupport::showProcessesDialog() { - ProjectExplorer::DeviceTypeKitChooser *kitChooser = new ProjectExplorer::DeviceTypeKitChooser(Core::Id(Constants::QNX_QNX_OS_TYPE)); + auto kitChooser = new ProjectExplorer::KitChooser; + kitChooser->setKitMatcher([](const ProjectExplorer::Kit *k){ + return k->isValid() && ProjectExplorer::DeviceTypeKitInformation::deviceTypeId(k) == Core::Id(Constants::QNX_QNX_OS_TYPE); + }); + QnxAttachDebugDialog dlg(kitChooser, 0); dlg.addAcceptButton(ProjectExplorer::DeviceProcessesDialog::tr("&Attach to Process")); dlg.showAllDevices(); diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 49bf4f4b91..ff6b4e3d6b 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -210,7 +210,7 @@ void BaseFileFind::doReplace(const QString &text, QStringList files = replaceAll(text, items, preserveCase); if (!files.isEmpty()) { Utils::FadingIndicator::showText(ICore::mainWindow(), - tr("%1 occurrences replaced.").arg(items.size()), + tr("%n occurrences replaced.", 0, items.size()), Utils::FadingIndicator::SmallText); DocumentManager::notifyFilesChangedInternally(files); SearchResultWindow::instance()->hide(); diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index e7a4d181ae..8b4c5600de 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -34,6 +34,7 @@ #include "iassistprocessor.h" #include "textdocument.h" #include "iassistproposal.h" +#include "iassistproposalmodel.h" #include "iassistproposalwidget.h" #include "assistinterface.h" #include "assistproposalitem.h" @@ -229,8 +230,10 @@ void CodeAssistantPrivate::requestProposal(AssistReason reason, m_assistKind = kind; IAssistProcessor *processor = provider->createProcessor(); AssistInterface *assistInterface = m_editorWidget->createAssistInterface(kind, reason); - if (!assistInterface) + if (!assistInterface) { + delete processor; return; + } switch (provider->runType()) { case IAssistProvider::Synchronous: { @@ -261,8 +264,11 @@ void CodeAssistantPrivate::requestProposal(AssistReason reason, case IAssistProvider::Asynchronous: { processor->setAsyncCompletionAvailableHandler( [this, processor, reason](IAssistProposal *newProposal){ - if (m_asyncProcessor != processor) + if (m_asyncProcessor != processor) { + delete newProposal->model(); + delete newProposal; return; + } invalidateCurrentRequestData(); QTC_CHECK(newProposal); @@ -275,6 +281,8 @@ void CodeAssistantPrivate::requestProposal(AssistReason reason, if (IAssistProposal *newProposal = processor->perform(assistInterface)) { displayProposal(newProposal, reason); delete processor; + } else if (!processor->performWasApplicable()) { + delete processor; } // ...otherwise the async request was triggered diff --git a/src/plugins/texteditor/codeassist/iassistprocessor.h b/src/plugins/texteditor/codeassist/iassistprocessor.h index 0d4fd31e9d..3456434c86 100644 --- a/src/plugins/texteditor/codeassist/iassistprocessor.h +++ b/src/plugins/texteditor/codeassist/iassistprocessor.h @@ -56,8 +56,12 @@ public: using AsyncCompletionsAvailableHandler = std::function<void (IAssistProposal *proposal)>; void setAsyncCompletionAvailableHandler(const AsyncCompletionsAvailableHandler &finalizer); + bool performWasApplicable() { return m_performWasApplicable; } + void setPerformWasApplicable(bool applicable) { m_performWasApplicable = applicable; } + private: AsyncCompletionsAvailableHandler m_asyncCompletionsAvailableHandler; + bool m_performWasApplicable = true; }; } // TextEditor diff --git a/src/shared/clang/clang_installation.pri b/src/shared/clang/clang_installation.pri index 8a3df51e3d..7ce74635ee 100644 --- a/src/shared/clang/clang_installation.pri +++ b/src/shared/clang/clang_installation.pri @@ -3,6 +3,25 @@ LLVM_INSTALL_DIR = $$clean_path($$LLVM_INSTALL_DIR) isEmpty(LLVM_INSTALL_DIR): error("No LLVM_INSTALL_DIR provided") !exists($$LLVM_INSTALL_DIR): error("LLVM_INSTALL_DIR does not exist: $$LLVM_INSTALL_DIR") +defineReplace(extractVersion) { return($$replace(1, ^(\\d+\\.\\d+\\.\\d+)$, \\1)) } +defineReplace(extractMajorVersion) { return($$replace(1, ^(\\d+)\\.\\d+\\.\\d+$, \\1)) } +defineReplace(extractMinorVersion) { return($$replace(1, ^\\d+\\.(\\d+)\\.\\d+$, \\1)) } + +defineTest(versionIsAtLeast) { + actual_major_version = $$extractMajorVersion($$1) + actual_minor_version = $$extractMinorVersion($$1) + required_min_major_version = $$2 + required_min_minor_version = $$3 + + isEqual(actual_major_version, $$required_min_major_version) { + isEqual(actual_minor_version, $$required_min_minor_version): return(true) + greaterThan(actual_minor_version, $$required_min_minor_version): return(true) + } + greaterThan(actual_major_version, $$required_min_major_version): return(true) + + return(false) +} + defineReplace(findLLVMVersionFromLibDir) { libdir = $$1 version_dirs = $$files($$libdir/clang/*) @@ -60,7 +79,7 @@ unix { LLVM_LIBDIR = $$system($$llvm_config --libdir 2>/dev/null) LLVM_INCLUDEPATH = $$system($$llvm_config --includedir 2>/dev/null) output = $$system($$llvm_config --version 2>/dev/null) - LLVM_VERSION = $$replace(output, ^(\\d+\\.\\d+\\.\\d+)$, \\1) + LLVM_VERSION = $$extractVersion($$output) } else { #message("llvm-config not found, concluding paths and version from LLVM_INSTALL_DIR") LLVM_INCLUDEPATH = $$LLVM_INSTALL_DIR/include @@ -70,9 +89,13 @@ unix { !exists($$LLVM_INCLUDEPATH): error("Cannot detect include dir for clang, candidate: $$LLVM_INCLUDEPATH") !exists($$LLVM_LIBDIR): error("Cannot detect lib dir for clang, candidate: $$LLVM_LIBDIR") - isEmpty(LLVM_VERSION): error("Cannot determine clang version at $$LLVM_INSTALL_DIR") clang_lib = $$findClangLibInLibDir($$LLVM_LIBDIR) isEmpty(clang_lib): error("Cannot find Clang shared library in $$LLVM_LIBDIR") LLVM_LIBS = -L$${LLVM_LIBDIR} -l$${clang_lib} } + +isEmpty(LLVM_VERSION): error("Cannot determine clang version at $$LLVM_INSTALL_DIR") +!versionIsAtLeast($$LLVM_VERSION, 3, 6): { + error("LLVM/Clang version >= 3.6.0 required, version provided: $$LLVM_VERSION") +} diff --git a/src/shared/proparser/qmakeparser.cpp b/src/shared/proparser/qmakeparser.cpp index 070d8fe6a1..856b703e96 100644 --- a/src/shared/proparser/qmakeparser.cpp +++ b/src/shared/proparser/qmakeparser.cpp @@ -61,6 +61,17 @@ void ProFileCache::discardFile(const QString &fileName) #endif QHash<QString, Entry>::Iterator it = parsed_files.find(fileName); if (it != parsed_files.end()) { +#ifdef PROPARSER_THREAD_SAFE + if (it->locker) { + if (!it->locker->done) + it->locker->cond.wait(&mutex); + do { + lck.unlock(); + QThread::sleep(100); + lck.relock(); + } while (it->locker); + } +#endif if (it->pro) it->pro->deref(); parsed_files.erase(it); @@ -77,6 +88,17 @@ void ProFileCache::discardFiles(const QString &prefix) end = parsed_files.end(); while (it != end) if (it.key().startsWith(prefix)) { +#ifdef PROPARSER_THREAD_SAFE + if (it->locker) { + if (!it->locker->done) + it->locker->cond.wait(&mutex); + do { + lck.unlock(); + QThread::sleep(100); + lck.relock(); + } while (it->locker); + } +#endif if (it->pro) it->pro->deref(); it = parsed_files.erase(it); diff --git a/src/shared/proparser/spec_post.prf b/src/shared/proparser/spec_post.prf index fcc7314ce5..d4d01857ca 100644 --- a/src/shared/proparser/spec_post.prf +++ b/src/shared/proparser/spec_post.prf @@ -7,6 +7,7 @@ isEmpty(QMAKE_PLATFORM) { else: \ TARGET_PLATFORM = unix } else:if(equals(MAKEFILE_GENERATOR, MSVC.NET) \ + |equals(MAKEFILE_GENERATOR, MSVC) \ |equals(MAKEFILE_GENERATOR, BMAKE) \ |equals(MAKEFILE_GENERATOR, MSBUILD) \ |equals(MAKEFILE_GENERATOR, MINGW)) { diff --git a/src/shared/qbs b/src/shared/qbs -Subproject d69b32061f2cc97892ba1a2f7d851e21f0787a8 +Subproject 2867e2712e4c03308e4be76821d788c06bac565 diff --git a/src/src.qbs b/src/src.qbs index bcb6f2a865..5b8c62e332 100644 --- a/src/src.qbs +++ b/src/src.qbs @@ -38,7 +38,6 @@ Project { property string relativePluginsPath: FileInfo.relativePath(appInstallDir, pluginsInstallDir) property string relativeSearchPath: FileInfo.relativePath(appInstallDir, resourcesInstallDir) - property bool enableJava: project.enableQbsJavaSupport references: [ qbsBaseDir + "/src/lib/libs.qbs", diff --git a/src/tools/clangbackend/clangbackend.qbs b/src/tools/clangbackend/clangbackend.qbs index 04499e75d0..c46534240d 100644 --- a/src/tools/clangbackend/clangbackend.qbs +++ b/src/tools/clangbackend/clangbackend.qbs @@ -1,5 +1,6 @@ import qbs 1.0 import QtcClangInstallation as Clang +import QtcFunctions import QtcProcessOutputReader QtcTool { @@ -17,7 +18,7 @@ QtcTool { files: [ "clangbackendmain.cpp" ] - property string llvmConfig: Clang.llvmConfig(qbs) + property string llvmConfig: Clang.llvmConfig(qbs, QtcFunctions, QtcProcessOutputReader) property string llvmIncludeDir: Clang.includeDir(llvmConfig, QtcProcessOutputReader) property string llvmLibDir: Clang.libDir(llvmConfig, QtcProcessOutputReader) property string llvmLibs: Clang.libraries(qbs.targetOS) diff --git a/src/tools/clangbackend/clangbackendmain.cpp b/src/tools/clangbackend/clangbackendmain.cpp index 500515f51f..914d8827ca 100644 --- a/src/tools/clangbackend/clangbackendmain.cpp +++ b/src/tools/clangbackend/clangbackendmain.cpp @@ -29,6 +29,7 @@ ****************************************************************************/ #include <QCoreApplication> +#include <QLoggingCategory> #include <connectionserver.h> #include <cmbcommands.h> @@ -36,6 +37,8 @@ int main(int argc, char *argv[]) { + QLoggingCategory::setFilterRules(QStringLiteral("*.debug=false")); + QCoreApplication::setOrganizationName(QStringLiteral("QtProject")); QCoreApplication::setOrganizationDomain(QStringLiteral("qt-project.org")); QCoreApplication::setApplicationName(QStringLiteral("ClangBackend")); diff --git a/src/tools/clangbackend/ipcsource/clangipcserver.cpp b/src/tools/clangbackend/ipcsource/clangipcserver.cpp index e8b860520b..6ba3b0af5d 100644 --- a/src/tools/clangbackend/ipcsource/clangipcserver.cpp +++ b/src/tools/clangbackend/ipcsource/clangipcserver.cpp @@ -30,6 +30,7 @@ #include "clangipcserver.h" +#include <clangbackendipcdebugutils.h> #include <cmbcodecompletedcommand.h> #include <cmbcompletecodecommand.h> #include <cmbregisterprojectsforcodecompletioncommand.h> @@ -64,6 +65,8 @@ void ClangIpcServer::end() void ClangIpcServer::registerTranslationUnitsForCodeCompletion(const ClangBackEnd::RegisterTranslationUnitForCodeCompletionCommand &command) { + TIME_SCOPE_DURATION("ClangIpcServer::registerTranslationUnitsForCodeCompletion"); + try { translationUnits.createOrUpdate(command.fileContainers()); unsavedFiles.createOrUpdate(command.fileContainers()); @@ -76,6 +79,8 @@ void ClangIpcServer::registerTranslationUnitsForCodeCompletion(const ClangBackEn void ClangIpcServer::unregisterTranslationUnitsForCodeCompletion(const ClangBackEnd::UnregisterTranslationUnitsForCodeCompletionCommand &command) { + TIME_SCOPE_DURATION("ClangIpcServer::unregisterTranslationUnitsForCodeCompletion"); + try { translationUnits.remove(command.fileContainers()); } catch (const TranslationUnitDoesNotExistException &exception) { @@ -89,6 +94,8 @@ void ClangIpcServer::unregisterTranslationUnitsForCodeCompletion(const ClangBack void ClangIpcServer::registerProjectPartsForCodeCompletion(const RegisterProjectPartsForCodeCompletionCommand &command) { + TIME_SCOPE_DURATION("ClangIpcServer::registerProjectPartsForCodeCompletion"); + try { projects.createOrUpdate(command.projectContainers()); } catch (const std::exception &exception) { @@ -98,6 +105,8 @@ void ClangIpcServer::registerProjectPartsForCodeCompletion(const RegisterProject void ClangIpcServer::unregisterProjectPartsForCodeCompletion(const UnregisterProjectPartsForCodeCompletionCommand &command) { + TIME_SCOPE_DURATION("ClangIpcServer::unregisterProjectPartsForCodeCompletion"); + try { projects.remove(command.projectPartIds()); } catch (const ProjectPartDoNotExistException &exception) { @@ -109,6 +118,8 @@ void ClangIpcServer::unregisterProjectPartsForCodeCompletion(const UnregisterPro void ClangIpcServer::completeCode(const ClangBackEnd::CompleteCodeCommand &command) { + TIME_SCOPE_DURATION("ClangIpcServer::completeCode"); + try { CodeCompleter codeCompleter(translationUnits.translationUnit(command.filePath(), command.projectPartId())); @@ -120,7 +131,7 @@ void ClangIpcServer::completeCode(const ClangBackEnd::CompleteCodeCommand &comma } catch (const ProjectPartDoNotExistException &exception) { client()->projectPartsDoNotExist(ProjectPartsDoNotExistCommand(exception.projectPartIds())); } catch (const std::exception &exception) { - qWarning() << "Error in ClangIpcServer::unregisterProjectPartsForCodeCompletion:" << exception.what(); + qWarning() << "Error in ClangIpcServer::completeCode:" << exception.what(); } } diff --git a/src/tools/clangbackend/ipcsource/codecompleter.cpp b/src/tools/clangbackend/ipcsource/codecompleter.cpp index e8f88b4c1d..0f50a1fe86 100644 --- a/src/tools/clangbackend/ipcsource/codecompleter.cpp +++ b/src/tools/clangbackend/ipcsource/codecompleter.cpp @@ -47,8 +47,10 @@ CodeCompleter::CodeCompleter(TranslationUnit translationUnit) { } -QVector<CodeCompletion> CodeCompleter::complete(uint line, uint column) +CodeCompletions CodeCompleter::complete(uint line, uint column) { + translationUnit.reparse(); + ClangCodeCompleteResults completeResults(clang_codeCompleteAt(translationUnit.cxTranslationUnit(), translationUnit.filePath().constData(), line, diff --git a/src/tools/clangbackend/ipcsource/codecompleter.h b/src/tools/clangbackend/ipcsource/codecompleter.h index 488abc4987..2d2dc1abe0 100644 --- a/src/tools/clangbackend/ipcsource/codecompleter.h +++ b/src/tools/clangbackend/ipcsource/codecompleter.h @@ -47,7 +47,7 @@ public: CodeCompleter() = default; CodeCompleter(TranslationUnit translationUnit); - QVector<CodeCompletion> complete(uint line, uint column); + CodeCompletions complete(uint line, uint column); private: Utf8String filePath() const; diff --git a/src/tools/clangbackend/ipcsource/codecompletionchunkconverter.cpp b/src/tools/clangbackend/ipcsource/codecompletionchunkconverter.cpp index f58f6bda81..03adf6e13c 100644 --- a/src/tools/clangbackend/ipcsource/codecompletionchunkconverter.cpp +++ b/src/tools/clangbackend/ipcsource/codecompletionchunkconverter.cpp @@ -71,7 +71,7 @@ CodeCompletionChunk::Kind CodeCompletionChunkConverter::chunkKind(CXCompletionSt return CodeCompletionChunk::Kind(clang_getCompletionChunkKind(completionString, chunkIndex)); } -QVector<CodeCompletionChunk> CodeCompletionChunkConverter::extract(CXCompletionString completionString) +CodeCompletionChunks CodeCompletionChunkConverter::extract(CXCompletionString completionString) { CodeCompletionChunkConverter converter; @@ -85,7 +85,7 @@ Utf8String CodeCompletionChunkConverter::chunkText(CXCompletionString completion return ClangString(clang_getCompletionChunkText(completionString, chunkIndex)); } -QVector<CodeCompletionChunk> CodeCompletionChunkConverter::optionalChunks(CXCompletionString completionString, uint chunkIndex) +CodeCompletionChunks CodeCompletionChunkConverter::optionalChunks(CXCompletionString completionString, uint chunkIndex) { CodeCompletionChunkConverter converter; diff --git a/src/tools/clangbackend/ipcsource/codecompletionchunkconverter.h b/src/tools/clangbackend/ipcsource/codecompletionchunkconverter.h index a3b92de62b..6907690e81 100644 --- a/src/tools/clangbackend/ipcsource/codecompletionchunkconverter.h +++ b/src/tools/clangbackend/ipcsource/codecompletionchunkconverter.h @@ -42,18 +42,18 @@ namespace ClangBackEnd { class CodeCompletionChunkConverter { public: - static QVector<CodeCompletionChunk> extract(CXCompletionString completionString); + static CodeCompletionChunks extract(CXCompletionString completionString); static Utf8String chunkText(CXCompletionString completionString, uint chunkIndex); private: - QVector<CodeCompletionChunk> optionalChunks(CXCompletionString completionString, uint chunkIndex); + CodeCompletionChunks optionalChunks(CXCompletionString completionString, uint chunkIndex); static CodeCompletionChunk::Kind chunkKind(CXCompletionString completionString, uint chunkIndex); void extractCompletionChunks(CXCompletionString completionString); void extractOptionalCompletionChunks(CXCompletionString completionString); private: - QVector<CodeCompletionChunk> chunks; + CodeCompletionChunks chunks; }; } // namespace ClangBackEnd diff --git a/src/tools/clangbackend/ipcsource/codecompletionsextractor.cpp b/src/tools/clangbackend/ipcsource/codecompletionsextractor.cpp index 56e826db6f..1a3e7cb9c3 100644 --- a/src/tools/clangbackend/ipcsource/codecompletionsextractor.cpp +++ b/src/tools/clangbackend/ipcsource/codecompletionsextractor.cpp @@ -88,9 +88,9 @@ bool CodeCompletionsExtractor::peek(const Utf8String &name) return false; } -QVector<CodeCompletion> CodeCompletionsExtractor::extractAll() +CodeCompletions CodeCompletionsExtractor::extractAll() { - QVector<CodeCompletion> codeCompletions; + CodeCompletions codeCompletions; codeCompletions.reserve(cxCodeCompleteResults->NumResults); while (next()) diff --git a/src/tools/clangbackend/ipcsource/codecompletionsextractor.h b/src/tools/clangbackend/ipcsource/codecompletionsextractor.h index f01b12b64c..dbfbb8af4b 100644 --- a/src/tools/clangbackend/ipcsource/codecompletionsextractor.h +++ b/src/tools/clangbackend/ipcsource/codecompletionsextractor.h @@ -53,7 +53,7 @@ public: bool next(); bool peek(const Utf8String &name); - QVector<CodeCompletion> extractAll(); + CodeCompletions extractAll(); const CodeCompletion ¤tCodeCompletion() const; diff --git a/src/tools/clangbackend/ipcsource/translationunit.cpp b/src/tools/clangbackend/ipcsource/translationunit.cpp index 17871176fa..9581cb5750 100644 --- a/src/tools/clangbackend/ipcsource/translationunit.cpp +++ b/src/tools/clangbackend/ipcsource/translationunit.cpp @@ -40,6 +40,9 @@ #include <utf8string.h> #include <QFileInfo> +#include <QLoggingCategory> + +static Q_LOGGING_CATEGORY(verboseLibLog, "qtc.clangbackend.verboselib"); namespace ClangBackEnd { @@ -52,8 +55,7 @@ public: ~TranslationUnitData(); public: - time_point lastProjectPartChangeTimePoint; - time_point lastUnsavedFilesChangeTimePoint; + time_point lastChangeTimePoint; ProjectPart projectPart; Utf8String filePath; CXTranslationUnit translationUnit = nullptr; @@ -64,8 +66,7 @@ public: TranslationUnitData::TranslationUnitData(const Utf8String &filePath, const UnsavedFiles &unsavedFiles, const ProjectPart &projectPart) - : lastProjectPartChangeTimePoint(std::chrono::steady_clock::now()), - lastUnsavedFilesChangeTimePoint(lastProjectPartChangeTimePoint), + : lastChangeTimePoint(std::chrono::steady_clock::now()), projectPart(projectPart), filePath(filePath), unsavedFiles(unsavedFiles) @@ -98,12 +99,21 @@ void TranslationUnit::reset() d.reset(); } +void TranslationUnit::reparse() +{ + cxTranslationUnit(); + + reparseTranslationUnit(); +} + CXIndex TranslationUnit::index() const { checkIfNull(); - if (!d->index) - d->index = clang_createIndex(1, 1); + if (!d->index) { + const bool displayDiagnostics = verboseLibLog().isDebugEnabled(); + d->index = clang_createIndex(1, displayDiagnostics); + } return d->index; } @@ -111,9 +121,10 @@ CXIndex TranslationUnit::index() const CXTranslationUnit TranslationUnit::cxTranslationUnit() const { checkIfNull(); - removeTranslationUnitIfProjectPartWasChanged(); + + removeOutdatedTranslationUnit(); + createTranslationUnitIfNeeded(); - reparseTranslationUnitIfUnsavedFilesAreChanged(); return d->translationUnit; } @@ -132,19 +143,9 @@ const Utf8String &TranslationUnit::projectPartId() const return d->projectPart.projectPartId(); } -const time_point &TranslationUnit::lastProjectPartChangeTimePoint() const -{ - return d->lastProjectPartChangeTimePoint; -} - -const time_point &TranslationUnit::lastUnsavedFilesChangeTimePoint() const +const time_point &TranslationUnit::lastChangeTimePoint() const { - return d->lastUnsavedFilesChangeTimePoint; -} - -bool TranslationUnit::isNeedingReparse() const -{ - return d->lastUnsavedFilesChangeTimePoint < d->unsavedFiles.lastChangeTimePoint(); + return d->lastChangeTimePoint; } void TranslationUnit::checkIfNull() const @@ -159,29 +160,19 @@ void TranslationUnit::checkIfFileExists() const throw TranslationUnitFileNotExitsException(d->filePath); } -void TranslationUnit::updateLastProjectPartChangeTimePoint() const -{ - d->lastProjectPartChangeTimePoint = std::chrono::steady_clock::now(); -} - -void TranslationUnit::updateLastUnsavedFilesChangeTimePoint() const +void TranslationUnit::updateLastChangeTimePoint() const { - d->lastUnsavedFilesChangeTimePoint = std::chrono::steady_clock::now(); + d->lastChangeTimePoint = std::chrono::steady_clock::now(); } -void TranslationUnit::removeTranslationUnitIfProjectPartWasChanged() const +void TranslationUnit::removeOutdatedTranslationUnit() const { - if (projectPartIsOutdated()) { + if (d->projectPart.lastChangeTimePoint() >= d->lastChangeTimePoint) { clang_disposeTranslationUnit(d->translationUnit); d->translationUnit = nullptr; } } -bool TranslationUnit::projectPartIsOutdated() const -{ - return d->projectPart.lastChangeTimePoint() >= d->lastProjectPartChangeTimePoint; -} - void TranslationUnit::createTranslationUnitIfNeeded() const { if (!d->translationUnit) { @@ -201,7 +192,7 @@ void TranslationUnit::createTranslationUnitIfNeeded() const // e.g. clang_codeCompleteAt() dramatically. reparseTranslationUnit(); - updateLastProjectPartChangeTimePoint(); + updateLastChangeTimePoint(); } } @@ -219,14 +210,6 @@ void TranslationUnit::reparseTranslationUnit() const d->unsavedFiles.count(), d->unsavedFiles.cxUnsavedFiles(), clang_defaultReparseOptions(d->translationUnit)); - - updateLastUnsavedFilesChangeTimePoint(); -} - -void TranslationUnit::reparseTranslationUnitIfUnsavedFilesAreChanged() const -{ - if (isNeedingReparse()) - reparseTranslationUnit(); } int TranslationUnit::defaultOptions() diff --git a/src/tools/clangbackend/ipcsource/translationunit.h b/src/tools/clangbackend/ipcsource/translationunit.h index 5491f0acec..803e5e9c27 100644 --- a/src/tools/clangbackend/ipcsource/translationunit.h +++ b/src/tools/clangbackend/ipcsource/translationunit.h @@ -73,6 +73,7 @@ public: bool isNull() const; void reset(); + void reparse(); CXIndex index() const; CXTranslationUnit cxTranslationUnit() const; @@ -82,23 +83,16 @@ public: const Utf8String &filePath() const; const Utf8String &projectPartId() const; - const time_point &lastProjectPartChangeTimePoint() const; - const time_point &lastUnsavedFilesChangeTimePoint() const; - - bool isNeedingReparse() const; + const time_point &lastChangeTimePoint() const; private: void checkIfNull() const; void checkIfFileExists() const; - void updateLastProjectPartChangeTimePoint() const; - void updateLastUnsavedFilesChangeTimePoint() const; - void removeTranslationUnitIfProjectPartWasChanged() const; - bool projectPartIsOutdated() const; + void updateLastChangeTimePoint() const; + void removeOutdatedTranslationUnit() const; void createTranslationUnitIfNeeded() const; void checkTranslationUnitErrorCode(CXErrorCode errorCode) const; void reparseTranslationUnit() const; - void reparseTranslationUnitIfUnsavedFilesAreChanged() const; - void printIncludes() const; static int defaultOptions(); private: diff --git a/src/tools/qtcdebugger/qtcdebugger.pro b/src/tools/qtcdebugger/qtcdebugger.pro index 41c0d4af61..e4106a176c 100644 --- a/src/tools/qtcdebugger/qtcdebugger.pro +++ b/src/tools/qtcdebugger/qtcdebugger.pro @@ -1,5 +1,6 @@ include(../../shared/registryaccess/registryaccess.pri) include(../../qtcreatortool.pri) +CONFIG -= console QT += widgets TARGET = qtcdebugger SOURCES += main.cpp diff --git a/src/tools/sdktool/addkitoperation.cpp b/src/tools/sdktool/addkitoperation.cpp index 70c3f7acc5..2f02c098db 100644 --- a/src/tools/sdktool/addkitoperation.cpp +++ b/src/tools/sdktool/addkitoperation.cpp @@ -245,9 +245,6 @@ bool AddKitOperation::setArguments(const QStringList &args) return false; } - if (m_debuggerId.isEmpty() && m_debugger.isEmpty()) - m_debugger = QLatin1String("auto"); - return !m_id.isEmpty() && !m_displayName.isEmpty() && !m_deviceType.isEmpty(); } @@ -622,7 +619,7 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t data << KeyValuePair(QStringList() << kit << QLatin1String(AUTODETECTED), QVariant(true)); data << KeyValuePair(QStringList() << kit << QLatin1String(SDK), QVariant(true)); - if (!debuggerId.isNull() || !debugger.isNull()) { + if (!debuggerId.isEmpty() || !debugger.isEmpty()) { if (debuggerId.isEmpty()) { data << KeyValuePair(QStringList() << kit << QLatin1String(DATA) << QLatin1String(DEBUGGER) << QLatin1String(DEBUGGER_ENGINE), QVariant(debuggerType)); diff --git a/src/tools/sdktool/main.cpp b/src/tools/sdktool/main.cpp index 51cc49ac86..97bc41941b 100644 --- a/src/tools/sdktool/main.cpp +++ b/src/tools/sdktool/main.cpp @@ -193,11 +193,17 @@ int main(int argc, char *argv[]) << new FindValueOperation; #ifdef WITH_TESTS - std::cerr << std::endl << std::endl << "Starting tests..." << std::endl; - foreach (Operation *o, operations) - if (!o->test()) - std::cerr << "!!!! Test failed for: " << qPrintable(o->name()) << " !!!!" << std::endl; - std::cerr << "Tests done." << std::endl << std::endl; + if (argc == 2 && !strcmp(argv[1], "-test")) { + std::cerr << std::endl << std::endl << "Starting tests..." << std::endl; + int res = 0; + foreach (Operation *o, operations) + if (!o->test()) { + std::cerr << "!!!! Test failed for: " << qPrintable(o->name()) << " !!!!" << std::endl; + ++res; + } + std::cerr << "Tests done." << std::endl << std::endl; + return res; + } #endif int result = parseArguments(a.arguments(), &settings, operations); diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index c84f446c0c..20f4e69fc5 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -16,6 +16,7 @@ SUBDIRS += \ qtcprocess \ utils \ filesearch \ + sdktool \ valgrind qtHaveModule(declarative) { diff --git a/tests/auto/auto.qbs b/tests/auto/auto.qbs index 5bd5acaff4..84c6867cbb 100644 --- a/tests/auto/auto.qbs +++ b/tests/auto/auto.qbs @@ -18,6 +18,7 @@ Project { "profilewriter/profilewriter.qbs", "qml/qml.qbs", "qtcprocess/qtcprocess.qbs", + "sdktool/sdktool.qbs", "timeline/timeline.qbs", "treeviewfind/treeviewfind.qbs", "utils/utils.qbs", diff --git a/tests/auto/cplusplus/misc/tst_misc.cpp b/tests/auto/cplusplus/misc/tst_misc.cpp index 70914ca42d..c349761396 100644 --- a/tests/auto/cplusplus/misc/tst_misc.cpp +++ b/tests/auto/cplusplus/misc/tst_misc.cpp @@ -28,6 +28,7 @@ ** ****************************************************************************/ +#include <cplusplus/ASTPath.h> #include <cplusplus/CppDocument.h> #include <cplusplus/findcdbbreakpoint.h> @@ -48,6 +49,8 @@ private slots: void findBreakpoints(); void findBreakpoints2(); void findBreakpoints3(); + + void astPathOnGeneratedTokens(); }; void tst_Misc::diagnosticClient_error() @@ -202,5 +205,44 @@ void tst_Misc::findBreakpoints3() QCOMPARE(findBreakpoint(7), 7U); } +static Document::Ptr documentCreatedWithFastPreprocessor(const QByteArray source) +{ + Snapshot snapshot; + auto document = snapshot.preprocessedDocument(source, QLatin1String("test.cpp")); + document->check(); + return document; +} + +void tst_Misc::astPathOnGeneratedTokens() +{ + const QByteArray source = + "#define INT int\n" + "#define S ;\n" + "INT x S\n"; + const auto document = documentCreatedWithFastPreprocessor(source); + ASTPath astPath(document); + + // Check start + auto paths = astPath(3, 1); + QCOMPARE(paths.size(), 0); + + // Check middle + paths = astPath(3, 5); + QCOMPARE(paths.size(), 5); + QVERIFY(paths.at(0)->asTranslationUnit()); + QVERIFY(paths.at(1)->asSimpleDeclaration()); + QVERIFY(paths.at(2)->asDeclarator()); + QVERIFY(paths.at(3)->asDeclaratorId()); + QVERIFY(paths.at(4)->asSimpleName()); + + // Check end + for (auto i : { 7, 8, 9 }) { + paths = astPath(3, i); + QCOMPARE(paths.size(), 2); + QVERIFY(paths.at(0)->asTranslationUnit()); + QVERIFY(paths.at(1)->asSimpleDeclaration()); + } +} + QTEST_MAIN(tst_Misc) #include "tst_misc.moc" diff --git a/tests/auto/debugger/disassembler.pro b/tests/auto/debugger/disassembler.pro index 8f85fba5c3..c42b8e047d 100644 --- a/tests/auto/debugger/disassembler.pro +++ b/tests/auto/debugger/disassembler.pro @@ -1,5 +1,5 @@ QTC_LIB_DEPENDS += utils -QT = core network +QT = core network widgets include(../qttest.pri) DEBUGGERDIR = $$IDE_SOURCE_TREE/src/plugins/debugger diff --git a/tests/auto/debugger/disassembler.qbs b/tests/auto/debugger/disassembler.qbs index 5b204826d4..35a5aadd59 100644 --- a/tests/auto/debugger/disassembler.qbs +++ b/tests/auto/debugger/disassembler.qbs @@ -2,7 +2,8 @@ import qbs QtcAutotest { name: "disassembler autotest" - Depends { name: "Qt.network" } // For QHostAddress + Depends { name: "ProjectExplorer" } + Depends { name: "QtcSsh" } Group { name: "Sources from Debugger plugin" prefix: project.debuggerDir diff --git a/tests/auto/sdktool/sdktool.pro b/tests/auto/sdktool/sdktool.pro new file mode 100644 index 0000000000..cc5fb2d28c --- /dev/null +++ b/tests/auto/sdktool/sdktool.pro @@ -0,0 +1,3 @@ +include(../qttest.pri) + +SOURCES += tst_sdktool.cpp diff --git a/tests/auto/sdktool/sdktool.qbs b/tests/auto/sdktool/sdktool.qbs new file mode 100644 index 0000000000..1fd08fc258 --- /dev/null +++ b/tests/auto/sdktool/sdktool.qbs @@ -0,0 +1,10 @@ +import qbs + +QtcAutotest { + name: "sdktool autotest" + + Group { + name: "Test sources" + files: "tst_sdktool.cpp" + } +} diff --git a/src/plugins/clangcodemodel/test/clangcompletioncontextanalyzertest.h b/tests/auto/sdktool/tst_sdktool.cpp index 4b8dbbc7ef..8cc01357d4 100644 --- a/src/plugins/clangcodemodel/test/clangcompletioncontextanalyzertest.h +++ b/tests/auto/sdktool/tst_sdktool.cpp @@ -28,32 +28,34 @@ ** ****************************************************************************/ -#ifndef CLANGCOMPLETIONCONTEXTANALYZERTEST_H -#define CLANGCOMPLETIONCONTEXTANALYZERTEST_H +#include <QCoreApplication> +#include <QDebug> +#include <QProcess> +#include <QtTest> -#include <QObject> - -namespace ClangCodeModel { -namespace Internal { -namespace Tests { - -class ClangCompletionContextAnalyzerTest : public QObject +class SdktoolTest : public QObject { Q_OBJECT private slots: - void testPassThroughToClangAndSignalSlotRecognition(); - void testPassThroughToClangAndSignalSlotRecognition_data(); - - void testSpecialCompletionRecognition(); - void testSpecialCompletionRecognition_data(); - - void testAvoidSpecialCompletionRecognition(); - void testAvoidSpecialCompletionRecognition_data(); + void testSdktool(); }; -} // namespace Tests -} // namespace Internal -} // namespace ClangCodeModel - -#endif // CLANGCOMPLETIONCONTEXTANALYZERTEST_H +void SdktoolTest::testSdktool() +{ + QDir rootDir = QCoreApplication::applicationDirPath(); + rootDir.cdUp(); + rootDir.cdUp(); + rootDir.cdUp(); + rootDir.cd(QLatin1String("bin")); + QProcess process; + process.start(rootDir.absoluteFilePath(QLatin1String("sdktool")), + QStringList() << QLatin1String("-test")); + process.waitForFinished(); + qDebug() << process.readAllStandardError(); + QCOMPARE(process.exitCode(), 0); +} + +QTEST_MAIN(SdktoolTest) + +#include "tst_sdktool.moc" diff --git a/tests/system/objects.map b/tests/system/objects.map index 791fe94ae7..9cb1ce0197 100644 --- a/tests/system/objects.map +++ b/tests/system/objects.map @@ -60,7 +60,6 @@ :Compiler:_QLabel {container=':qt_tabwidget_stackedwidget_QWidget' text='Compiler:' type='QLabel' unnamed='1' visible='1'} :Core__Internal__GeneralSettings.User Interface_QGroupBox {container=':qt_tabwidget_stackedwidget.Core__Internal__GeneralSettings_QWidget' name='interfaceBox' title='User Interface' type='QGroupBox' visible='1'} :CppTools__Internal__CompletionSettingsPage.Behavior_QGroupBox {container=':qt_tabwidget_stackedwidget.CppTools__Internal__CompletionSettingsPage_QWidget' name='groupBox' title='Behavior' type='QGroupBox' visible='1'} -:CreateProject_QStyleItem {clip='false' container=':WelcomePageStyledBar.WelcomePage_QQuickView' enabled='true' text='New Project' type='Button' unnamed='1' visible='true'} :DebugModeWidget.Breakpoints_QDockWidget {container=':Qt Creator.DebugModeWidget_QSplitter' name='Debugger.Docks.Break' type='QDockWidget' visible='1' windowTitle='Breakpoints'} :DebugModeWidget.Debugger Log_QDockWidget {container=':Qt Creator.DebugModeWidget_QSplitter' name='Debugger.Docks.Output' type='QDockWidget' visible='1' windowTitle='Debugger Log'} :DebugModeWidget.Debugger Toolbar_QDockWidget {container=':Qt Creator.DebugModeWidget_QSplitter' name='Debugger Toolbar' type='QDockWidget' visible='1' windowTitle='Debugger Toolbar'} @@ -116,7 +115,6 @@ :New_Core::Internal::NewDialog {name='Core__Internal__NewDialog' type='Core::Internal::NewDialog' visible='1' windowTitle?='New*'} :Next_QPushButton {text~='(Next.*|Continue)' type='QPushButton' visible='1'} :OpenDocuments_Widget {type='Core::Internal::OpenEditorsWidget' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='Open Documents'} -:OpenProject_QStyleItem {clip='false' container=':WelcomePageStyledBar.WelcomePage_QQuickView' enabled='true' text='Open Project' type='Button' unnamed='1' visible='true'} :Options.Cancel_QPushButton {text='Cancel' type='QPushButton' unnamed='1' visible='1' window=':Options_Core::Internal::SettingsDialog'} :Options.OK_QPushButton {text='OK' type='QPushButton' unnamed='1' visible='1' window=':Options_Core::Internal::SettingsDialog'} :Options.qt_tabwidget_stackedwidget_QStackedWidget {name='qt_tabwidget_stackedwidget' type='QStackedWidget' visible='1' window=':Options_Core::Internal::SettingsDialog'} @@ -142,6 +140,7 @@ :Qt Creator.Stop_QToolButton {text='Stop' type='QToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.WelcomePageStyledBar_QWindowContainer {aboveWidget=':Qt Creator.WelcomePageStyledBar_Utils::StyledBar' type='QWindowContainer' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.WelcomePageStyledBar_Utils::StyledBar {name='WelcomePageStyledBar' type='Utils::StyledBar' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} +:Qt Creator.WelcomePage_QQuickWidget {name='WelcomePage' type='QQuickWidget' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.replaceEdit_Utils::FilterLineEdit {name='replaceEdit' type='Utils::FancyLineEdit' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.scrollArea_QScrollArea {type='ProjectExplorer::PanelsWidget' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.splitter_QSplitter {name='splitter' type='QSplitter' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py index 951ed4645b..93c04fae36 100644 --- a/tests/system/shared/project.py +++ b/tests/system/shared/project.py @@ -39,7 +39,13 @@ def openQbsProject(projectPath): def openQmakeProject(projectPath, targets=Targets.desktopTargetClasses(), fromWelcome=False): cleanUpUserFiles(projectPath) if fromWelcome: - mouseClick(waitForObject(":OpenProject_QStyleItem"), 5, 5, 0, Qt.LeftButton) + if isQt54Build: + welcomePage = ":WelcomePageStyledBar.WelcomePage_QQuickView" + else: + welcomePage = ":Qt Creator.WelcomePage_QQuickWidget" + mouseClick(waitForObject("{clip='false' container='%s' enabled='true' text='Open Project' " + "type='Button' unnamed='1' visible='true'}" % welcomePage), + 5, 5, 0, Qt.LeftButton) else: invokeMenuItem("File", "Open File or Project...") selectFromFileDialog(projectPath) @@ -94,7 +100,13 @@ def __handleCmakeWizardPage__(): # this list can be used in __chooseTargets__() def __createProjectOrFileSelectType__(category, template, fromWelcome = False, isProject=True): if fromWelcome: - mouseClick(waitForObject(":CreateProject_QStyleItem"), 5, 5, 0, Qt.LeftButton) + if isQt54Build: + welcomePage = ":WelcomePageStyledBar.WelcomePage_QQuickView" + else: + welcomePage = ":Qt Creator.WelcomePage_QQuickWidget" + mouseClick(waitForObject("{clip='false' container='%s' enabled='true' text='New Project' " + "type='Button' unnamed='1' visible='true'}" % welcomePage), + 5, 5, 0, Qt.LeftButton) else: invokeMenuItem("File", "New File or Project...") categoriesView = waitForObject(":New.templateCategoryView_QTreeView") diff --git a/tests/system/shared/qtcreator.py b/tests/system/shared/qtcreator.py index ff3d58afec..2ab82276aa 100644 --- a/tests/system/shared/qtcreator.py +++ b/tests/system/shared/qtcreator.py @@ -39,6 +39,8 @@ import sys import errno; from datetime import datetime,timedelta; +isQt54Build = os.getenv("SYSTEST_ISQT54BUILD") != "0" + srcPath = '' SettingsPath = '' tmpSettingsDir = '' diff --git a/tests/system/suite_CSUP/tst_CSUP02/test.py b/tests/system/suite_CSUP/tst_CSUP02/test.py index a177470d94..b856f167af 100644 --- a/tests/system/suite_CSUP/tst_CSUP02/test.py +++ b/tests/system/suite_CSUP/tst_CSUP02/test.py @@ -32,52 +32,64 @@ source("../../shared/qtcreator.py") # entry of test def main(): - startApplication("qtcreator" + SettingsPath) + clangLoaded = startCreatorTryingClang() if not startedWithoutPluginError(): return # create qt quick application # Step 1: Open test .pro project. createNewQtQuickApplication(tempDir(), "SampleApp") + models = iterateAvailableCodeModels() + for current in models: + if current != models[0]: + selectCodeModel(current) + test.log("Testing code model: %s" % current) # Step 2: Open .cpp file in Edit mode. - if not openDocument("SampleApp.Sources.main\\.cpp"): - test.fatal("Could not open main.cpp") - invokeMenuItem("File", "Exit") - return - test.verify(checkIfObjectExists(":Qt Creator_CppEditor::Internal::CPPEditorWidget"), - "Step 2: Verifying if: .cpp file is opened in Edit mode.") + if not openDocument("SampleApp.Sources.main\\.cpp"): + test.fatal("Could not open main.cpp") + invokeMenuItem("File", "Exit") + return + test.verify(checkIfObjectExists(":Qt Creator_CppEditor::Internal::CPPEditorWidget"), + "Step 2: Verifying if: .cpp file is opened in Edit mode.") # Steps 3&4: Insert text "class" to new line in Editor mode and press Ctrl+Space. # Focus "class derived from QObject" in the list and press Tab or Enter to complete the code. - editorWidget = findObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget") - mouseClick(editorWidget, 5, 5, 0, Qt.LeftButton) - type(editorWidget, "<Return>") - type(editorWidget, "<Up>") - type(editorWidget, "class") - if platform.system() == "Darwin": - type(editorWidget, "<Meta+Space>") - else: - type(editorWidget, "<Ctrl+Space>") - type(waitForObject(":popupFrame_Proposal_QListView"), "<Down>") - listView = waitForObject(":popupFrame_Proposal_QListView") - test.compare("class derived from QObject", str(listView.model().data(listView.currentIndex())), - "Verifying selecting the correct entry.") - type(waitForObject(":popupFrame_Proposal_QListView"), "<Return>") - test.verify(str(editorWidget.plainText).startswith("class name : public QObject"), - "Steps 3&4: Verifying if: The list of suggestions is opened. It is " - "possible to select one of the suggestions. Code with several " - "variables is inserted.") + editorWidget = findObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget") + mouseClick(editorWidget, 5, 5, 0, Qt.LeftButton) + type(editorWidget, "<Return>") + type(editorWidget, "<Up>") + type(editorWidget, "class") + if platform.system() == "Darwin": + type(editorWidget, "<Meta+Space>") + else: + type(editorWidget, "<Ctrl+Space>") + type(waitForObject(":popupFrame_Proposal_QListView"), "<Down>") + if current == "Clang": + # different order with Clang code model + type(waitForObject(":popupFrame_Proposal_QListView"), "<Down>") + listView = waitForObject(":popupFrame_Proposal_QListView") + test.compare("class derived from QObject", str(listView.model().data(listView.currentIndex())), + "Verifying selecting the correct entry.") + type(waitForObject(":popupFrame_Proposal_QListView"), "<Return>") + test.verify(str(editorWidget.plainText).startswith("class name : public QObject"), + "Steps 3&4: Verifying if: The list of suggestions is opened. It is " + "possible to select one of the suggestions. Code with several " + "variables is inserted.") # Step 5: Press Tab to move between the variables and specify values for them. For example write "Myname" for variable "name". - type(editorWidget, "<Tab>") - type(editorWidget, "<Tab>") - type(editorWidget, "<Tab>") - type(editorWidget, "Myname") - pattern = "(?<=class)\s+Myname\s*:\s*public\s+QObject\s*\{\s*Q_OBJECT\s+public:\s+Myname\(\)\s*\{\}\s+virtual\s+~Myname\(\)\s*\{\}\s+\};" - result = re.search(pattern, str(editorWidget.plainText)) - if result: - test.passes("Step 5: Verifying if: A value for a variable is inserted and all " - "instances of the variable within the snippet are renamed.") - else: - test.fail("Step 5: Seems that not all instances of variable had been renamed " - "- Content of editor:\n%s" % editorWidget.plainText) + type(editorWidget, "<Tab>") + type(editorWidget, "<Tab>") + type(editorWidget, "<Tab>") + type(editorWidget, "Myname") + pattern = "(?<=class)\s+Myname\s*:\s*public\s+QObject\s*\{\s*Q_OBJECT\s+public:\s+Myname\(\)\s*\{\}\s+virtual\s+~Myname\(\)\s*\{\}\s+\};" + result = re.search(pattern, str(editorWidget.plainText)) + if result: + test.passes("Step 5: Verifying if: A value for a variable is inserted and all " + "instances of the variable within the snippet are renamed.") + else: + test.fail("Step 5: Seems that not all instances of variable had been renamed " + "- Content of editor:\n%s" % editorWidget.plainText) + invokeMenuItem('File', 'Revert "main.cpp" to Saved') + clickButton(waitForObject(":Revert to Saved.Proceed_QPushButton")) + snooze(1) # 'Close "main.cpp"' might still be disabled + # editor must be closed to get the second code model applied on re-opening the file + invokeMenuItem('File', 'Close "main.cpp"') # exit qt creator - invokeMenuItem("File", "Save All") invokeMenuItem("File", "Exit") diff --git a/tests/system/suite_WELP/tst_WELP01/test.py b/tests/system/suite_WELP/tst_WELP01/test.py index 825985d3ba..863954692d 100755 --- a/tests/system/suite_WELP/tst_WELP01/test.py +++ b/tests/system/suite_WELP/tst_WELP01/test.py @@ -31,7 +31,11 @@ source("../../shared/qtcreator.py") source("../../shared/suites_qtta.py") -gettingStartedText = getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", False, +if isQt54Build: + welcomePage = ":WelcomePageStyledBar.WelcomePage_QQuickView" +else: + welcomePage = ":Qt Creator.WelcomePage_QQuickWidget" +gettingStartedText = getQmlItem("Button", welcomePage, False, "text='Get Started Now' id='gettingStartedButton'") def clickItemVerifyHelpCombo(qmlItem, expectedHelpComboRegex, testDetails): @@ -47,12 +51,9 @@ def clickItemVerifyHelpCombo(qmlItem, expectedHelpComboRegex, testDetails): "Verifying: Get Started Now button is being displayed.") def waitForButtonsState(projectsChecked, examplesChecked, tutorialsChecked, timeout=5000): - projButton = waitForObject(getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, "text='Projects'")) - exmpButton = waitForObject(getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, "text='Examples'")) - tutoButton = waitForObject(getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, "text='Tutorials'")) + projButton = waitForObject(getQmlItem("Button", welcomePage, False, "text='Projects'")) + exmpButton = waitForObject(getQmlItem("Button", welcomePage, False, "text='Examples'")) + tutoButton = waitForObject(getQmlItem("Button", welcomePage, False, "text='Tutorials'")) return waitFor('projButton.checked == projectsChecked ' 'and exmpButton.checked == examplesChecked ' 'and tutoButton.checked == tutorialsChecked', timeout) @@ -73,8 +74,7 @@ def main(): buttonsAndState = {'Projects':True, 'Examples':False, 'Tutorials':False, 'New Project':False, 'Open Project':False} for button, state in buttonsAndState.items(): - qmlItem = getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", False, - "text='%s'" % button) + qmlItem = getQmlItem("Button", welcomePage, False, "text='%s'" % button) if test.verify(checkIfObjectExists(qmlItem), "Verifying whether '%s' button is shown." % button): buttonObj = findObject(qmlItem) @@ -92,8 +92,7 @@ def main(): 'User Guide':'qthelp://org.qt-project.qtcreator/doc/index.html' } for text, url in textUrls.items(): - qmlItem = getQmlItem("LinkedText", ":WelcomePageStyledBar.WelcomePage_QQuickView", False, - "text='%s'" % text) + qmlItem = getQmlItem("LinkedText", welcomePage, False, "text='%s'" % text) if test.verify(checkIfObjectExists(qmlItem), "Verifying: Link to %s exists." % text): itemObj = findObject(qmlItem) @@ -116,8 +115,8 @@ def main(): test.verify(checkIfObjectExists(gettingStartedText), "Verifying: Getting Started topic is being displayed.") # select Examples and roughly check them - mouseClick(waitForObject(getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, "text='Examples'")), 5, 5, 0, Qt.LeftButton) + mouseClick(waitForObject(getQmlItem("Button", welcomePage, False, "text='Examples'")), + 5, 5, 0, Qt.LeftButton) waitForButtonsState(False, True, False) expect = (("Rectangle", "id='rectangle1' radius='0'", "examples rectangle"), ("TextField", "id='lineEdit' placeholderText='Search in Examples...'", @@ -126,13 +125,11 @@ def main(): ("Delegate", "id='delegate' radius='0' caption~='.*Example'", "at least one example") ) for (qType, prop, info) in expect: - test.verify(checkIfObjectExists(getQmlItem(qType, - ":WelcomePageStyledBar.WelcomePage_QQuickView", - None, prop)), + test.verify(checkIfObjectExists(getQmlItem(qType, welcomePage, None, prop)), "Verifying whether %s is shown" % info) # select Tutorials and roughly check them - mouseClick(waitForObject(getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, "text='Tutorials'")), 5, 5, 0, Qt.LeftButton) + mouseClick(waitForObject(getQmlItem("Button", welcomePage, False, "text='Tutorials'")), + 5, 5, 0, Qt.LeftButton) waitForButtonsState(False, False, True) expect = (("Rectangle", "id='rectangle1' radius='0'", "tutorials rectangle"), ("TextField", "id='lineEdit' placeholderText='Search in Tutorials...'", @@ -140,9 +137,7 @@ def main(): ("Delegate", "id='delegate' radius='0' caption~='Creating.*'", "at least one tutorial") ) for (qType, prop, info) in expect: - test.verify(checkIfObjectExists(getQmlItem(qType, - ":WelcomePageStyledBar.WelcomePage_QQuickView", - None, prop)), + test.verify(checkIfObjectExists(getQmlItem(qType, welcomePage, None, prop)), "Verifying whether %s is shown" % info) # exit Qt Creator invokeMenuItem("File", "Exit") diff --git a/tests/system/suite_WELP/tst_WELP02/test.py b/tests/system/suite_WELP/tst_WELP02/test.py index 896637ffbd..9a5c775b72 100644 --- a/tests/system/suite_WELP/tst_WELP02/test.py +++ b/tests/system/suite_WELP/tst_WELP02/test.py @@ -31,11 +31,14 @@ source("../../shared/qtcreator.py") source("../../shared/suites_qtta.py") +if isQt54Build: + welcomePage = ":WelcomePageStyledBar.WelcomePage_QQuickView" +else: + welcomePage = ":Qt Creator.WelcomePage_QQuickWidget" + def checkTypeAndProperties(typePropertiesDetails): for (qType, props, detail) in typePropertiesDetails: - test.verify(checkIfObjectExists(getQmlItem(qType, - ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, props)), + test.verify(checkIfObjectExists(getQmlItem(qType, welcomePage, False, props)), "Verifying: Qt Creator displays %s." % detail) def main(): @@ -85,13 +88,10 @@ def main(): "Verifying: The project is opened in 'Edit' mode after configuring.") # go to "Welcome page" again and check if there is an information about recent projects switchViewTo(ViewConstants.WELCOME) - test.verify(checkIfObjectExists(getQmlItem("LinkedText", - ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, + test.verify(checkIfObjectExists(getQmlItem("LinkedText", welcomePage, False, "text='propertyanimation' id='projectNameText'")) and - checkIfObjectExists(getQmlItem("LinkedText", - ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, "text='SampleApp' id='projectNameText'")), + checkIfObjectExists(getQmlItem("LinkedText", welcomePage, False, + "text='SampleApp' id='projectNameText'")), "Verifying: 'Welcome page' displays information about recently created and " "opened projects.") # exit Qt Creator diff --git a/tests/system/suite_WELP/tst_WELP03/test.py b/tests/system/suite_WELP/tst_WELP03/test.py index 286be802dc..ee28d29afc 100644 --- a/tests/system/suite_WELP/tst_WELP03/test.py +++ b/tests/system/suite_WELP/tst_WELP03/test.py @@ -50,6 +50,10 @@ def main(): test.log("Welcome mode is not scriptable with this Squish version") return global sdkPath + if isQt54Build: + welcomePage = ":WelcomePageStyledBar.WelcomePage_QQuickView" + else: + welcomePage = ":Qt Creator.WelcomePage_QQuickWidget" # open Qt Creator startApplication("qtcreator" + SettingsPath) if not startedWithoutPluginError(): @@ -59,7 +63,7 @@ def main(): qchs.extend([os.path.join(p, "qtopengl.qch"), os.path.join(p, "qtwidgets.qch")]) addHelpDocumentation(qchs) setAlwaysStartFullHelp() - getStartedNow = getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", False, + getStartedNow = getQmlItem("Button", welcomePage, False, "text='Get Started Now' id='gettingStartedButton'") if not test.verify(checkIfObjectExists(getStartedNow), "Verifying: Qt Creator displays Welcome Page with Getting Started."): @@ -67,11 +71,9 @@ def main(): invokeMenuItem("File", "Exit") return # select "Examples" topic - mouseClick(waitForObject(getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, "text='Examples'")), 5, 5, 0, Qt.LeftButton) - test.verify(checkIfObjectExists(getQmlItem("Text", - ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, "text='Examples'")), + mouseClick(waitForObject(getQmlItem("Button", welcomePage, False, "text='Examples'")), + 5, 5, 0, Qt.LeftButton) + test.verify(checkIfObjectExists(getQmlItem("Text", welcomePage, False, "text='Examples'")), "Verifying: 'Examples' topic is opened and the examples are shown.") basePath = "opengl/2dpainting/2dpainting.pro" qt4Exmpl = os.path.join(sdkPath, "Examples", "4.7", basePath) @@ -83,19 +85,18 @@ def main(): cleanUpUserFiles(proFiles) for p in proFiles: removePackagingDirectory(os.path.dirname(p)) - examplesLineEdit = getQmlItem("TextField", ":WelcomePageStyledBar.WelcomePage_QQuickView", + examplesLineEdit = getQmlItem("TextField", welcomePage, False, "id='lineEdit' placeholderText='Search in Examples...'") mouseClick(waitForObject(examplesLineEdit), 5, 5, 0, Qt.LeftButton) test.log("Using examples from Kit %s." - % (waitForObject(getQmlItem("ComboBox", ":WelcomePageStyledBar.WelcomePage_QQuickView", + % (waitForObject(getQmlItem("ComboBox", welcomePage, False, "id='comboBox'")).currentText)) replaceEditorContent(waitForObject(examplesLineEdit), "qwerty") - test.verify(checkIfObjectExists(getQmlItem("Delegate", - ":WelcomePageStyledBar.WelcomePage_QQuickView", + test.verify(checkIfObjectExists(getQmlItem("Delegate", welcomePage, False, "id='delegate' radius='0' caption~='.*'"), False), "Verifying: No example is shown.") replaceEditorContent(waitForObject(examplesLineEdit), "2d painting") - twoDPainting = getQmlItem("Delegate", ":WelcomePageStyledBar.WelcomePage_QQuickView", + twoDPainting = getQmlItem("Delegate", welcomePage, False, "id='delegate' radius='0' caption~='2D Painting.*'") test.verify(checkIfObjectExists(twoDPainting), "Verifying: Example (2D Painting) is shown.") @@ -132,8 +133,10 @@ def main(): cleanUpUserFiles(proFiles) for p in proFiles: removePackagingDirectory(os.path.dirname(p)) - replaceEditorContent(waitForObject(examplesLineEdit), "address book") - addressBook = getQmlItem("Delegate", ":WelcomePageStyledBar.WelcomePage_QQuickView", + examplesLineEditWidget = waitForObject(examplesLineEdit) + mouseClick(examplesLineEditWidget) + replaceEditorContent(examplesLineEditWidget, "address book") + addressBook = getQmlItem("Delegate", welcomePage, False, "id='delegate' radius='0' caption~='Address Book.*'") test.verify(checkIfObjectExists(addressBook), "Verifying: Example (address book) is shown.") mouseClick(waitForObject(addressBook), 5, 5, 0, Qt.LeftButton) diff --git a/tests/system/suite_WELP/tst_WELP04/test.py b/tests/system/suite_WELP/tst_WELP04/test.py index 5422d78c25..9cc23275d0 100644 --- a/tests/system/suite_WELP/tst_WELP04/test.py +++ b/tests/system/suite_WELP/tst_WELP04/test.py @@ -35,11 +35,15 @@ def main(): if not canTestEmbeddedQtQuick(): test.log("Welcome mode is not scriptable with this Squish version") return + if isQt54Build: + welcomePage = ":WelcomePageStyledBar.WelcomePage_QQuickView" + else: + welcomePage = ":Qt Creator.WelcomePage_QQuickWidget" # open Qt Creator startApplication("qtcreator" + SettingsPath) if not startedWithoutPluginError(): return - getStarted = getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", False, + getStarted = getQmlItem("Button", welcomePage, False, "text='Get Started Now' id='gettingStartedButton'") if not test.verify(checkIfObjectExists(getStarted), "Verifying: Qt Creator displays Welcome Page with Get Started Now button."): @@ -47,22 +51,20 @@ def main(): invokeMenuItem("File", "Exit") return # select "Tutorials" - mouseClick(waitForObject(getQmlItem("Button", ":WelcomePageStyledBar.WelcomePage_QQuickView", - False, "text='Tutorials'")), 5, 5, 0, Qt.LeftButton) - searchTut = getQmlItem("TextField", ":WelcomePageStyledBar.WelcomePage_QQuickView", False, + mouseClick(waitForObject(getQmlItem("Button", welcomePage, False, "text='Tutorials'")), + 5, 5, 0, Qt.LeftButton) + searchTut = getQmlItem("TextField", welcomePage, False, "placeholderText='Search in Tutorials...' id='lineEdit'") mouseClick(waitForObject(searchTut), 5, 5, 0, Qt.LeftButton) replaceEditorContent(waitForObject(searchTut), "qwerty") - test.verify(checkIfObjectExists(getQmlItem("Text", - ":WelcomePageStyledBar.WelcomePage_QQuickView", + test.verify(checkIfObjectExists(getQmlItem("Text", welcomePage, False, "text='Tutorials'")) and - checkIfObjectExists(getQmlItem("Delegate", - ":WelcomePageStyledBar.WelcomePage_QQuickView", + checkIfObjectExists(getQmlItem("Delegate", welcomePage, False, "id='delegate' radius='0' caption~='.*'"), False), "Verifying: 'Tutorials' topic is opened and nothing is shown.") replaceEditorContent(waitForObject(searchTut), "building and running an example application") - bldRunExmpl = getQmlItem("Delegate", ":WelcomePageStyledBar.WelcomePage_QQuickView", False, + bldRunExmpl = getQmlItem("Delegate", welcomePage, False, "caption='Building and Running an Example Application' " "id='delegate' radius='0'") test.verify(checkIfObjectExists(bldRunExmpl), "Verifying: Expected Text tutorial is shown.") @@ -74,9 +76,10 @@ def main(): # close help widget again to avoid focus issues sendEvent("QCloseEvent", waitForObject(":Help Widget_Help::Internal::HelpWidget")) # check a demonstration video link - replaceEditorContent(waitForObject(searchTut), "embedded device") - test.verify(checkIfObjectExists(getQmlItem("Delegate", - ":WelcomePageStyledBar.WelcomePage_QQuickView", + searchTutWidget = waitForObject(searchTut) + mouseClick(searchTutWidget) + replaceEditorContent(searchTutWidget, "embedded device") + test.verify(checkIfObjectExists(getQmlItem("Delegate", welcomePage, False, "id='delegate' radius='0' caption=" "'Device Creation with Qt'")), "Verifying: Link to the expected demonstration video exists.") diff --git a/tests/system/suite_debugger/tst_qml_js_console/test.py b/tests/system/suite_debugger/tst_qml_js_console/test.py index f6729f4c5a..8075ddd56a 100644 --- a/tests/system/suite_debugger/tst_qml_js_console/test.py +++ b/tests/system/suite_debugger/tst_qml_js_console/test.py @@ -151,7 +151,7 @@ def main(): checks = [("color", u"#\u200b008000"), ("width", "50"), ("color ='silver'", "silver", "color", u"#\u200bc0c0c0"), ("width=66", "66", "width"), ("anchors.centerIn", "<unnamed object>"), - ("opacity", "1"), ("opacity = .2", u"0.\u200b2", "opacity")] + ("opacity", "1"), ("opacity = .1875", u"0.\u200b1875", "opacity")] # check red inner Rectangle runChecks("text='Rectangle' occurrence='2'", rootIndex, checks) diff --git a/tests/system/suite_general/tst_opencreator_qbs/test.py b/tests/system/suite_general/tst_opencreator_qbs/test.py index 012187a969..eb431996bf 100644 --- a/tests/system/suite_general/tst_opencreator_qbs/test.py +++ b/tests/system/suite_general/tst_opencreator_qbs/test.py @@ -31,6 +31,8 @@ source("../../shared/qtcreator.py") def main(): + test.warning("This test is known to fail, see QTCREATORBUG-14828. Skipping it.") + return pathCreator = os.path.join(srcPath, "creator", "qtcreator.qbs") if not neededFilePresent(pathCreator): return diff --git a/tests/system/suite_general/tst_openqt_creator/test.py b/tests/system/suite_general/tst_openqt_creator/test.py index 35697d2416..4b734767e9 100644 --- a/tests/system/suite_general/tst_openqt_creator/test.py +++ b/tests/system/suite_general/tst_openqt_creator/test.py @@ -40,12 +40,24 @@ def main(): if not startedWithoutPluginError(): return + runButton = findObject(':*Qt Creator.Run_Core::Internal::FancyToolButton') openQmakeProject(pathSpeedcrunch, Targets.DESKTOP_480_DEFAULT) # Wait for parsing to complete - progressBarWait(30000) + waitFor("runButton.enabled", 30000) + # Starting before opening, because this is where Creator froze (QTCREATORBUG-10733) + startopening = datetime.utcnow() openQmakeProject(pathCreator, Targets.DESKTOP_531_DEFAULT) # Wait for parsing to complete - progressBarWait(300000) + startreading = datetime.utcnow() + waitFor("runButton.enabled", 300000) + secondsOpening = (datetime.utcnow() - startopening).seconds + secondsReading = (datetime.utcnow() - startreading).seconds + timeoutOpen = 45 + timeoutRead = 22 + test.verify(secondsOpening <= timeoutOpen, "Opening and reading qtcreator.pro took %d seconds. " + "It should not take longer than %d seconds" % (secondsOpening, timeoutOpen)) + test.verify(secondsReading <= timeoutRead, "Just reading qtcreator.pro took %d seconds. " + "It should not take longer than %d seconds" % (secondsReading, timeoutRead)) naviTreeView = "{column='0' container=':Qt Creator_Utils::NavigationTreeView' text~='%s' type='QModelIndex'}" compareProjectTree(naviTreeView % "speedcrunch( \[\S+\])?", "projecttree_speedcrunch.tsv") diff --git a/tests/system/suite_general/tst_session_handling/test.py b/tests/system/suite_general/tst_session_handling/test.py index 44a062b00d..e80f2b878a 100644 --- a/tests/system/suite_general/tst_session_handling/test.py +++ b/tests/system/suite_general/tst_session_handling/test.py @@ -111,19 +111,22 @@ def createAndSwitchToSession(toSession): "window=%s}" % sessionInputDialog)) def checkWelcomePage(sessionName, isCurrent=False): + if isQt54Build: + welcomePage = ":WelcomePageStyledBar.WelcomePage_QQuickView" + else: + welcomePage = ":Qt Creator.WelcomePage_QQuickWidget" switchViewTo(ViewConstants.WELCOME) - mouseClick(waitForObject("{container=':WelcomePageStyledBar.WelcomePage_QQuickView' text='Projects' " - "type='Button' unnamed='1' visible='true'}"), 5, 5, Qt.LeftButton) - waitForObject("{container=':WelcomePageStyledBar.WelcomePage_QQuickView' id='sessionsTitle' " - "text='Sessions' type='Text' unnamed='1' visible='true'}") + mouseClick(waitForObject("{container='%s' text='Projects' type='Button' " + "unnamed='1' visible='true'}" % welcomePage)) + waitForObject("{container='%s' id='sessionsTitle' text='Sessions' type='Text' " + "unnamed='1' visible='true'}" % welcomePage) if isCurrent: sessions = ["default", "%s (current session)" % sessionName] else: sessions = ["default (current session)", sessionName] for sessionName in sessions: - test.verify(object.exists("{container=':WelcomePageStyledBar.WelcomePage_QQuickView' " - "enabled='true' type='LinkedText' " - "unnamed='1' visible='true' text='%s'}" % sessionName), + test.verify(object.exists("{container='%s' enabled='true' type='LinkedText' unnamed='1' " + "visible='true' text='%s'}" % (welcomePage, sessionName)), "Verifying session '%s' exists." % sessionName) def checkNavigator(expectedRows, message): diff --git a/tests/unit/mockup/clangcodemodel/clangcompletionassistinterface.h b/tests/unit/mockup/clangcodemodel/clangcompletionassistinterface.h new file mode 100644 index 0000000000..c97bd4d562 --- /dev/null +++ b/tests/unit/mockup/clangcodemodel/clangcompletionassistinterface.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef CLANGCODEMODEL_INTERNAL_CLANGCOMPLETIONASSISTINTERFACE_H +#define CLANGCODEMODEL_INTERNAL_CLANGCOMPLETIONASSISTINTERFACE_H + +#include <texteditor/codeassist/assistinterface.h> + +#include <cplusplus/Token.h> + +namespace ClangCodeModel { +namespace Internal { + +class ClangCompletionAssistInterface: public TextEditor::AssistInterface +{ +public: + ClangCompletionAssistInterface(const QByteArray &text, + int position) + : TextEditor::AssistInterface(text, position), + languageFeatures_(CPlusPlus::LanguageFeatures::defaultFeatures()) + {} + + CPlusPlus::LanguageFeatures languageFeatures() const { return languageFeatures_; } + +private: + CPlusPlus::LanguageFeatures languageFeatures_; +}; + +} // namespace Internal +} // namespace ClangCodeModel + +#endif // CLANGCODEMODEL_INTERNAL_CLANGCOMPLETIONASSISTINTERFACE_H diff --git a/src/plugins/projectexplorer/devicesupport/devicetypekitchooser.cpp b/tests/unit/mockup/texteditor/assistenums.h index fe7fcbed3b..01740e64ef 100644 --- a/src/plugins/projectexplorer/devicesupport/devicetypekitchooser.cpp +++ b/tests/unit/mockup/texteditor/assistenums.h @@ -1,7 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company -** Contact: info@kdab.com +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing ** ** This file is part of Qt Creator. ** @@ -28,22 +28,25 @@ ** ****************************************************************************/ -#include "devicetypekitchooser.h" +#ifndef ASSISTENUMS_H +#define ASSISTENUMS_H -#include "../kitinformation.h" +namespace TextEditor { -using namespace ProjectExplorer; - -DeviceTypeKitChooser::DeviceTypeKitChooser(Core::Id deviceType, QWidget *parent) - : KitChooser(parent) - , m_deviceType(deviceType) +enum AssistKind { -} + Completion, + QuickFix, + FollowSymbol +}; -bool DeviceTypeKitChooser::kitMatches(const Kit *k) const +enum AssistReason { - if (!KitChooser::kitMatches(k)) - return false; + IdleEditor, + ActivationCharacter, + ExplicitlyInvoked +}; + +} // TextEditor - return DeviceTypeKitInformation::deviceTypeId(k) == m_deviceType; -} +#endif // ASSISTENUMS_H diff --git a/tests/unit/mockup/texteditor/codeassist/assistinterface.h b/tests/unit/mockup/texteditor/codeassist/assistinterface.h new file mode 100644 index 0000000000..d177a1ae32 --- /dev/null +++ b/tests/unit/mockup/texteditor/codeassist/assistinterface.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef ASSISTINTERFACE_H +#define ASSISTINTERFACE_H + +#include <QTextCursor> + +#include <QTextDocument> + +#include "../assistenums.h" + +namespace TextEditor { + +class AssistInterface +{ +public: + AssistInterface(const QByteArray &text, + int position) + : textDocument_(QString::fromUtf8(text)), + position_(position) + {} + + AssistInterface(QTextDocument *textDocument, + int position, + const QString &fileName, + AssistReason reason) + : textDocument_(textDocument), + fileName_(fileName), + position_(position), + reason_(reason) + {} + + QTextDocument *textDocument() const; + virtual int position() const; + virtual QChar characterAt(int position) const; + virtual QString textAt(int position, int length) const; + virtual QString fileName() const; + virtual AssistReason reason() const; + + +private: + mutable QTextDocument textDocument_; + QString fileName_; + int position_; + AssistReason reason_ = IdleEditor; +}; + +inline QTextDocument *AssistInterface::textDocument() const +{ + return &textDocument_; +} + +inline int AssistInterface::position() const +{ + return position_; +} + +inline QChar AssistInterface::characterAt(int position) const +{ + return textDocument_.characterAt(position); +} + +inline QString AssistInterface::textAt(int position, int length) const +{ + QTextCursor textCursor(&textDocument_); + if (position < 0) + position = 0; + textCursor.movePosition(QTextCursor::End); + if (position + length > textCursor.position()) + length = textCursor.position() - position; + + textCursor.setPosition(position); + textCursor.setPosition(position + length, QTextCursor::KeepAnchor); + + // selectedText() returns U+2029 (PARAGRAPH SEPARATOR) instead of newline + return textCursor.selectedText().replace(QChar::ParagraphSeparator, QLatin1Char('\n')); +} + +inline AssistReason AssistInterface::reason() const +{ + return reason_; +} + +inline QString AssistInterface::fileName() const +{ + return fileName_; +} +} + +#endif // ASSISTINTERFACE_H + diff --git a/tests/unit/unittest/activationsequencecontextprocessortest.cpp b/tests/unit/unittest/activationsequencecontextprocessortest.cpp new file mode 100644 index 0000000000..e69f8b97f1 --- /dev/null +++ b/tests/unit/unittest/activationsequencecontextprocessortest.cpp @@ -0,0 +1,220 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + + +#include <activationsequencecontextprocessor.h> + +#include <clangcodemodel/clangcompletionassistinterface.h> + +#include <cplusplus/Token.h> + +#include <QTextCursor> +#include <QTextDocument> + +#include <gmock/gmock.h> +#include <gmock/gmock-matchers.h> +#include <gtest/gtest.h> +#include "gtest-qt-printing.h" + +namespace { + +using ContextProcessor = ClangCodeModel::Internal::ActivationSequenceContextProcessor; +using TextEditor::AssistInterface; +using ClangCodeModel::Internal::ClangCompletionAssistInterface; + +TEST(ActivationSequeneContextProcessor, TextCursorPosition) +{ + ClangCompletionAssistInterface interface("foobar", 4); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.textCursor_forTestOnly().position(), 0); +} + +TEST(ActivationSequeneContextProcessor, StringLiteral) +{ + ClangCompletionAssistInterface interface("auto foo = \"bar\"", 12); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, EndOfStringLiteral) +{ + ClangCompletionAssistInterface interface("auto foo = \"bar\"", 16); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, FunctionCallComma) +{ + ClangCompletionAssistInterface interface("f(x, ", 4); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_COMMA); +} + +TEST(ActivationSequeneContextProcessor, NonFunctionCallComma) +{ + ClangCompletionAssistInterface interface("int x, ", 6); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, DoxygenComment) +{ + ClangCompletionAssistInterface interface("//! @", 5); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_DOXY_COMMENT); +} + +TEST(ActivationSequeneContextProcessor, NonDoxygenComment) +{ + ClangCompletionAssistInterface interface("// @", 4); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, Comment) +{ + ClangCompletionAssistInterface interface("//", 2); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, InsideALiteral) +{ + ClangCompletionAssistInterface interface("\"foo\"", 2); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, ShlashInsideAString) +{ + ClangCompletionAssistInterface interface("\"foo/bar\"", 5); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, ShlashOutsideAString) +{ + ClangCompletionAssistInterface interface("foo/bar", 4); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, FunctionLeftParen) +{ + ClangCompletionAssistInterface interface("foo(", 4); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_LPAREN); +} + +TEST(ActivationSequeneContextProcessor, TemplateFunctionLeftParen) +{ + ClangCompletionAssistInterface interface("foo<X>(", 7); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_LPAREN); +} + +TEST(ActivationSequeneContextProcessor, ExpressionLeftParen) +{ + ClangCompletionAssistInterface interface("x * (", 5); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, AngleInclude) +{ + ClangCompletionAssistInterface interface("#include <foo/bar>", 10); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_ANGLE_STRING_LITERAL); +} + +TEST(ActivationSequeneContextProcessor, SlashInclude) +{ + ClangCompletionAssistInterface interface("#include <foo/bar>", 14); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_SLASH); +} + +TEST(ActivationSequeneContextProcessor, QuoteInclude) +{ + ClangCompletionAssistInterface interface("#include \"foo/bar\"", 10); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_STRING_LITERAL); +} + +TEST(ActivationSequeneContextProcessor, SlashInExlude) +{ + ClangCompletionAssistInterface interface("#exclude <foo/bar>", 14); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, QuoteExclude) +{ + ClangCompletionAssistInterface interface("#exclude \"foo/bar\"", 10); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_EOF_SYMBOL); +} + +TEST(ActivationSequeneContextProcessor, SkipeWhiteSpacesBeforeCursor) +{ + ClangCompletionAssistInterface interface("x-> ", 7); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_ARROW); +} + +TEST(ActivationSequeneContextProcessor, SkipIdentifier) +{ + ClangCompletionAssistInterface interface("x->foo_", 7); + ContextProcessor processor{&interface}; + + ASSERT_THAT(processor.completionKind(), CPlusPlus::T_ARROW); +} + +} diff --git a/tests/unit/unittest/activationsequenceprocessortest.cpp b/tests/unit/unittest/activationsequenceprocessortest.cpp index b12f648703..d5962cdc5a 100644 --- a/tests/unit/unittest/activationsequenceprocessortest.cpp +++ b/tests/unit/unittest/activationsequenceprocessortest.cpp @@ -47,14 +47,14 @@ MATCHER_P3(HasResult, completionKind, offset, newPosition, std::string(negation ? "hasn't" : "has") + " result of completion kind " + PrintToString(Token::name(completionKind)) + ", offset " + PrintToString(offset) - + " and new position in document" + PrintToString(newPosition)) + + " and new operator start position" + PrintToString(newPosition)) { if (arg.completionKind() != completionKind || arg.offset() != offset - || arg.position() != newPosition) { + || arg.operatorStartPosition() != newPosition) { *result_listener << "completion kind is " << PrintToString(Token::name(arg.completionKind())) << ", offset is " << PrintToString(arg.offset()) - << " and new position in document is " << PrintToString(arg.position()); + << " and new operator start position is " << PrintToString(arg.operatorStartPosition()); return false; } @@ -133,14 +133,14 @@ TEST(ActivationSequenceProcessor, ArrowStar) TEST(ActivationSequenceProcessor, DoxyGenCommentBackSlash) { - ActivationSequenceProcessor processor(QStringLiteral("\\ "), 3, true); + ActivationSequenceProcessor processor(QStringLiteral(" \\"), 3, true); ASSERT_THAT(processor, HasResult(T_DOXY_COMMENT, 1, 2)); } TEST(ActivationSequenceProcessor, DoxyGenCommentAt) { - ActivationSequenceProcessor processor(QStringLiteral("@ "), 2, true); + ActivationSequenceProcessor processor(QStringLiteral(" @"), 2, true); ASSERT_THAT(processor, HasResult(T_DOXY_COMMENT, 1, 1)); } @@ -182,7 +182,7 @@ TEST(ActivationSequenceProcessor, PositionIsOne) TEST(ActivationSequenceProcessor, PositionIsTwo) { - ActivationSequenceProcessor processor(QStringLiteral("@ x"), 2, true); + ActivationSequenceProcessor processor(QStringLiteral(" @x"), 2, true); ASSERT_THAT(processor, HasResult(T_DOXY_COMMENT, 1, 1)); } diff --git a/tests/unit/unittest/clang_dependency.pri b/tests/unit/unittest/clang_dependency.pri new file mode 100644 index 0000000000..f70a839b7e --- /dev/null +++ b/tests/unit/unittest/clang_dependency.pri @@ -0,0 +1,5 @@ +include(../../../src/shared/clang/clang_installation.pri) +requires(!isEmpty(LLVM_LIBS)) + +INCLUDEPATH += $$LLVM_INCLUDEPATH +LIBS += $$LLVM_LIBS diff --git a/tests/unit/unittest/clangcompletioncontextanalyzertest.cpp b/tests/unit/unittest/clangcompletioncontextanalyzertest.cpp new file mode 100644 index 0000000000..08e92ee2f9 --- /dev/null +++ b/tests/unit/unittest/clangcompletioncontextanalyzertest.cpp @@ -0,0 +1,487 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include <clangcodemodel/clangcompletioncontextanalyzer.h> +#include <clangcodemodel/clangcompletionassistinterface.h> + +#include <utils/qtcassert.h> + +#include <QTextDocument> + +#include <gmock/gmock.h> +#include <gmock/gmock-matchers.h> +#include <gtest/gtest.h> +#include "gtest-qt-printing.h" + +namespace ClangCodeModel { +namespace Internal { + +void PrintTo(const ClangCompletionContextAnalyzer::CompletionAction &completionAction, + ::std::ostream* os) +{ + using CCA = ClangCompletionContextAnalyzer; + + switch (completionAction) { + case CCA::PassThroughToLibClang: *os << "PassThroughToLibClang"; break; + case CCA::PassThroughToLibClangAfterLeftParen: *os << "PassThroughToLibClangAfterLeftParen"; break; + case CCA::CompleteDoxygenKeyword: *os << "CompleteDoxygenKeyword"; break; + case CCA::CompleteIncludePath: *os << "CompleteIncludePath"; break; + case CCA::CompletePreprocessorDirective: *os << "CompletePreprocessorDirective"; break; + case CCA::CompleteSignal: *os << "CompleteSignal"; break; + case CCA::CompleteSlot: *os << "CompleteSlot"; break; + } +} + +} // Internal +} // ClangCodeModel + +namespace { + +using ::testing::PrintToString; +using ClangCodeModel::Internal::ClangCompletionAssistInterface; +using CCA = ClangCodeModel::Internal::ClangCompletionContextAnalyzer; + +class TestDocument +{ +public: + TestDocument(const QByteArray &theSource) + : source(theSource), + position(theSource.lastIndexOf('@')) // Use 'lastIndexOf' due to doxygen: "//! @keyword" + { + source.remove(position, 1); + } + + QByteArray source; + int position; +}; + +bool isPassThrough(CCA::CompletionAction completionAction) +{ + return completionAction != CCA::PassThroughToLibClang + && completionAction != CCA::PassThroughToLibClangAfterLeftParen; +} + +MATCHER(IsPassThroughToClang, std::string(negation ? "isn't" : "is") + " passed through to Clang") +{ + const auto completionAction = arg.completionAction(); + if (isPassThrough(completionAction)) { + *result_listener << "completion action is " << PrintToString(completionAction); + return false; + } + + return true; +} + +// Offsets are relative to positionInText +MATCHER_P4(HasResult, + completionAction, + positionForClangOffset, + positionForProposalOffset, + positionInText, + std::string(negation ? "hasn't" : "has") + + " result of completion action " + PrintToString(completionAction) + + " and offset for clang " + PrintToString(positionForClangOffset) + + " and offset for proprosal " + PrintToString(positionForProposalOffset)) +{ + const int actualPositionForClangOffset = arg.positionForClang() - positionInText; + const int actualPositionForProposalOffset = arg.positionForProposal() - positionInText; + + if (arg.completionAction() != completionAction + || actualPositionForClangOffset != positionForClangOffset + || actualPositionForProposalOffset != positionForProposalOffset) { + *result_listener << "completion action is " << PrintToString(arg.completionAction()) + << " and offset for clang is " << PrintToString(actualPositionForClangOffset) + << " and offset for proprosal is " << PrintToString(actualPositionForProposalOffset); + return false; + } + + return true; +} + +// Offsets are relative to positionInText +MATCHER_P4(HasResultWithoutClangDifference, + completionAction, + positionForClangOffset, + positionForProposalOffset, + positionInText, + std::string(negation ? "hasn't" : "has") + + " result of completion action " + PrintToString(completionAction) + + " and offset for clang " + PrintToString(positionForClangOffset) + + " and offset for proprosal " + PrintToString(positionForProposalOffset)) +{ + const int actualPositionForProposalOffset = arg.positionForProposal() - positionInText; + + if (arg.completionAction() != completionAction + || arg.positionForClang() != positionForClangOffset + || actualPositionForProposalOffset != positionForProposalOffset) { + *result_listener << "completion action is " << PrintToString(arg.completionAction()) + << " and offset for clang is " << PrintToString(arg.positionForClang()) + << " and offset for proprosal is " << PrintToString(actualPositionForProposalOffset); + return false; + } + + return true; +} + +class ClangCompletionContextAnalyzer : public ::testing::Test +{ +protected: + CCA runAnalyzer(const char *text); + +protected: + int positionInText = 0; +}; + +CCA ClangCompletionContextAnalyzer::runAnalyzer(const char *text) +{ + const TestDocument testDocument(text); + ClangCompletionAssistInterface assistInterface(testDocument.source, testDocument.position); + CCA analyzer(&assistInterface, CPlusPlus::LanguageFeatures::defaultFeatures()); + + positionInText = testDocument.position; + + analyzer.analyze(); + + return analyzer; +} + +TEST_F(ClangCompletionContextAnalyzer, WordsBeforeCursor) +{ + auto analyzer = runAnalyzer("foo bar@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, -3, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AfterSpace) +{ + auto analyzer = runAnalyzer("foo @"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AtEndOfDotMember) +{ + auto analyzer = runAnalyzer("o.mem@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, -3, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AtEndOfDotMemberWithSpaceInside) +{ + auto analyzer = runAnalyzer("o. mem@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, -3, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AtBeginOfDotMember) +{ + auto analyzer = runAnalyzer("o.@mem"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AtBeginOfDotMemberWithSpaceInside) +{ + auto analyzer = runAnalyzer("o. @mem"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AtEndOfArrow) +{ + auto analyzer = runAnalyzer("o->mem@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, -3, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AtEndOfArrowWithSpaceInside) +{ + auto analyzer = runAnalyzer("o-> mem@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, -3, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AtBeginOfArrow) +{ + auto analyzer = runAnalyzer("o->@mem"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AtBeginOfArrowWithSpaceInside) +{ + auto analyzer = runAnalyzer("o-> @mem"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, ParameteOneAtCall) +{ + auto analyzer = runAnalyzer("f(@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClangAfterLeftParen, -2, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, ParameteTwoAtCall) +{ + auto analyzer = runAnalyzer("f(1,@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClangAfterLeftParen, -4, -2, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, ParameteTwoWithSpaceAtCall) +{ + auto analyzer = runAnalyzer("f(1, @"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClangAfterLeftParen, -5, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, ParameteOneAtSignal) +{ + auto analyzer = runAnalyzer("SIGNAL(@"); + + ASSERT_THAT(analyzer, HasResult(CCA::CompleteSignal, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, ParameteOneWithLettersAtSignal) +{ + auto analyzer = runAnalyzer("SIGNAL(foo@"); + + ASSERT_THAT(analyzer, HasResult(CCA::CompleteSignal, -3, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, ParameteOneAtSlot) +{ + auto analyzer = runAnalyzer("SLOT(@"); + + ASSERT_THAT(analyzer, HasResult(CCA::CompleteSlot, -0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, ParameteOneWithLettersAtSlot) +{ + auto analyzer = runAnalyzer("SLOT(foo@"); + + ASSERT_THAT(analyzer, HasResult(CCA::CompleteSlot, -3, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, DoxygenWithBackslash) +{ + auto analyzer = runAnalyzer("//! \\@"); + + ASSERT_THAT(analyzer, HasResultWithoutClangDifference(CCA::CompleteDoxygenKeyword, -1, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, DoxygenWithAt) +{ + auto analyzer = runAnalyzer("//! @@"); + + ASSERT_THAT(analyzer, HasResultWithoutClangDifference(CCA::CompleteDoxygenKeyword, -1, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, DoxygenWithParameter) +{ + auto analyzer = runAnalyzer("//! \\par@"); + + ASSERT_THAT(analyzer, HasResultWithoutClangDifference(CCA::CompleteDoxygenKeyword, -1, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, Preprocessor) +{ + auto analyzer = runAnalyzer("#@"); + + ASSERT_THAT(analyzer, HasResultWithoutClangDifference(CCA::CompletePreprocessorDirective, -1, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, PreprocessorIf) +{ + auto analyzer = runAnalyzer("#if@"); + + ASSERT_THAT(analyzer, HasResultWithoutClangDifference(CCA::CompletePreprocessorDirective, -1, -2, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, LocalInclude) +{ + auto analyzer = runAnalyzer("#include \"foo@\""); + + ASSERT_THAT(analyzer, HasResultWithoutClangDifference(CCA::CompleteIncludePath, -1, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, GlobalInclude) +{ + auto analyzer = runAnalyzer("#include <foo@>"); + + ASSERT_THAT(analyzer, HasResultWithoutClangDifference(CCA::CompleteIncludePath, -1, -3, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, GlocalIncludeWithDirectory) +{ + auto analyzer = runAnalyzer("#include <foo/@>"); + + ASSERT_THAT(analyzer, HasResultWithoutClangDifference(CCA::CompleteIncludePath, -1, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AfterQuote) +{ + auto analyzer = runAnalyzer("\"@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, AfterSpaceQuote) +{ + auto analyzer = runAnalyzer(" \"@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, AfterQuotedText) +{ + auto analyzer = runAnalyzer("\"text\"@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, InQuotedText) +{ + auto analyzer = runAnalyzer("\"hello cruel@ world\""); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, SingleQuote) +{ + auto analyzer = runAnalyzer("'@'"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, AfterLetterInSingleQuoted) +{ + auto analyzer = runAnalyzer("'a@'"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, CommaOperator) +{ + auto analyzer = runAnalyzer("a = b,@\""); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, DoxygenMarkerInNonDoxygenComment) +{ + auto analyzer = runAnalyzer("@@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, DoxygenMarkerInNonDoxygenComment2) +{ + auto analyzer = runAnalyzer("\\@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, AtEndOfOneLineComment) +{ + auto analyzer = runAnalyzer("// comment@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, AfterOneLineCommentLine) +{ + auto analyzer = runAnalyzer("// comment\n" + "@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AfterEmptyOneLineComment) +{ + auto analyzer = runAnalyzer("//\n" + "@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AfterOneLineDoxygenComment1) +{ + auto analyzer = runAnalyzer("/// comment\n" + "@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, AfterOneLineDoxygenComment2) +{ + auto analyzer = runAnalyzer("//! comment \n" + "@"); + + ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText)); +} + +TEST_F(ClangCompletionContextAnalyzer, BeginEndComment) +{ + auto analyzer = runAnalyzer("/* text@ */"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, Slash) +{ + auto analyzer = runAnalyzer("5 /@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, LeftParen) +{ + auto analyzer = runAnalyzer("(@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, TwoLeftParen) +{ + auto analyzer = runAnalyzer("((@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +TEST_F(ClangCompletionContextAnalyzer, AsteriskLeftParen) +{ + auto analyzer = runAnalyzer("*(@"); + + ASSERT_THAT(analyzer, IsPassThroughToClang()); +} + +} diff --git a/tests/unit/unittest/clientserverinprocesstest.cpp b/tests/unit/unittest/clientserverinprocesstest.cpp index 9010b4130f..c654789bca 100644 --- a/tests/unit/unittest/clientserverinprocesstest.cpp +++ b/tests/unit/unittest/clientserverinprocesstest.cpp @@ -145,7 +145,7 @@ TEST_F(ClientServerInProcess, SendCompleteCodeCommand) TEST_F(ClientServerInProcess, SendCodeCompletedCommand) { - QVector<ClangBackEnd::CodeCompletion> codeCompletions({Utf8StringLiteral("newFunction()")}); + ClangBackEnd::CodeCompletions codeCompletions({Utf8StringLiteral("newFunction()")}); ClangBackEnd::CodeCompletedCommand command(codeCompletions, 1); EXPECT_CALL(mockIpcClient, codeCompleted(command)) diff --git a/tests/unit/unittest/codecompletionsextractortest.cpp b/tests/unit/unittest/codecompletionsextractortest.cpp index 29b62811bc..38a1190a3d 100644 --- a/tests/unit/unittest/codecompletionsextractortest.cpp +++ b/tests/unit/unittest/codecompletionsextractortest.cpp @@ -51,8 +51,7 @@ using ClangBackEnd::TranslationUnit; using ClangBackEnd::CodeCompletion; using ClangBackEnd::UnsavedFiles; using ClangBackEnd::CodeCompletionChunk; - - +using ClangBackEnd::CodeCompletionChunks; namespace { @@ -591,10 +590,10 @@ TEST_F(CodeCompletionsExtractor, CompletionChunksFunction) ::CodeCompletionsExtractor extractor(completeResults.data()); ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Function"), - QVector<CodeCompletionChunk>({{CodeCompletionChunk::ResultType, Utf8StringLiteral("void")}, - {CodeCompletionChunk::TypedText, Utf8StringLiteral("Function")}, - {CodeCompletionChunk::LeftParen, Utf8StringLiteral("(")}, - {CodeCompletionChunk::RightParen, Utf8StringLiteral(")")}}))); + CodeCompletionChunks({{CodeCompletionChunk::ResultType, Utf8StringLiteral("void")}, + {CodeCompletionChunk::TypedText, Utf8StringLiteral("Function")}, + {CodeCompletionChunk::LeftParen, Utf8StringLiteral("(")}, + {CodeCompletionChunk::RightParen, Utf8StringLiteral(")")}}))); } TEST_F(CodeCompletionsExtractor, CompletionChunksFunctionWithOptionalChunks) @@ -604,16 +603,16 @@ TEST_F(CodeCompletionsExtractor, CompletionChunksFunctionWithOptionalChunks) ::CodeCompletionsExtractor extractor(completeResults.data()); ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("FunctionWithOptional"), - QVector<CodeCompletionChunk>({{CodeCompletionChunk::ResultType, Utf8StringLiteral("void")}, - {CodeCompletionChunk::TypedText, Utf8StringLiteral("FunctionWithOptional")}, - {CodeCompletionChunk::LeftParen, Utf8StringLiteral("(")}, - {CodeCompletionChunk::Placeholder, Utf8StringLiteral("int x")}, - {CodeCompletionChunk::Optional, Utf8String(), QVector<CodeCompletionChunk>({ - {CodeCompletionChunk::Comma, Utf8StringLiteral(", ")}, - {CodeCompletionChunk::Placeholder, Utf8StringLiteral("char y")}, - {CodeCompletionChunk::Comma, Utf8StringLiteral(", ")}, - {CodeCompletionChunk::Placeholder, Utf8StringLiteral("int z")}})}, - {CodeCompletionChunk::RightParen, Utf8StringLiteral(")")}}))); + CodeCompletionChunks({{CodeCompletionChunk::ResultType, Utf8StringLiteral("void")}, + {CodeCompletionChunk::TypedText, Utf8StringLiteral("FunctionWithOptional")}, + {CodeCompletionChunk::LeftParen, Utf8StringLiteral("(")}, + {CodeCompletionChunk::Placeholder, Utf8StringLiteral("int x")}, + {CodeCompletionChunk::Optional, Utf8String(), CodeCompletionChunks({ + {CodeCompletionChunk::Comma, Utf8StringLiteral(", ")}, + {CodeCompletionChunk::Placeholder, Utf8StringLiteral("char y")}, + {CodeCompletionChunk::Comma, Utf8StringLiteral(", ")}, + {CodeCompletionChunk::Placeholder, Utf8StringLiteral("int z")}})}, + {CodeCompletionChunk::RightParen, Utf8StringLiteral(")")}}))); } TEST_F(CodeCompletionsExtractor, CompletionChunksField) @@ -623,8 +622,8 @@ TEST_F(CodeCompletionsExtractor, CompletionChunksField) ::CodeCompletionsExtractor extractor(completeResults.data()); ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Field"), - QVector<CodeCompletionChunk>({{CodeCompletionChunk::ResultType, Utf8StringLiteral("int")}, - {CodeCompletionChunk::TypedText, Utf8StringLiteral("Field")}}))); + CodeCompletionChunks({{CodeCompletionChunk::ResultType, Utf8StringLiteral("int")}, + {CodeCompletionChunk::TypedText, Utf8StringLiteral("Field")}}))); } TEST_F(CodeCompletionsExtractor, CompletionChunksEnumerator) @@ -634,8 +633,8 @@ TEST_F(CodeCompletionsExtractor, CompletionChunksEnumerator) ::CodeCompletionsExtractor extractor(completeResults.data()); ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Enumerator"), - QVector<CodeCompletionChunk>({{CodeCompletionChunk::ResultType, Utf8StringLiteral("Enumeration")}, - {CodeCompletionChunk::TypedText, Utf8StringLiteral("Enumerator")}}))); + CodeCompletionChunks({{CodeCompletionChunk::ResultType, Utf8StringLiteral("Enumeration")}, + {CodeCompletionChunk::TypedText, Utf8StringLiteral("Enumerator")}}))); } TEST_F(CodeCompletionsExtractor, CompletionChunksEnumeration) @@ -645,7 +644,7 @@ TEST_F(CodeCompletionsExtractor, CompletionChunksEnumeration) ::CodeCompletionsExtractor extractor(completeResults.data()); ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Enumeration"), - QVector<CodeCompletionChunk>({{CodeCompletionChunk::TypedText, Utf8StringLiteral("Enumeration")}}))); + CodeCompletionChunks({{CodeCompletionChunk::TypedText, Utf8StringLiteral("Enumeration")}}))); } TEST_F(CodeCompletionsExtractor, CompletionChunksClass) @@ -655,7 +654,7 @@ TEST_F(CodeCompletionsExtractor, CompletionChunksClass) ::CodeCompletionsExtractor extractor(completeResults.data()); ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Class"), - QVector<CodeCompletionChunk>({{CodeCompletionChunk::TypedText, Utf8StringLiteral("Class")}}))); + CodeCompletionChunks({{CodeCompletionChunk::TypedText, Utf8StringLiteral("Class")}}))); } diff --git a/tests/unit/unittest/completionchunkstotextconvertertest.cpp b/tests/unit/unittest/completionchunkstotextconvertertest.cpp index bc2bb4219a..ff52c90311 100644 --- a/tests/unit/unittest/completionchunkstotextconvertertest.cpp +++ b/tests/unit/unittest/completionchunkstotextconvertertest.cpp @@ -39,6 +39,7 @@ namespace { using ClangBackEnd::CodeCompletionChunk; +using ClangBackEnd::CodeCompletionChunks; using Converter = ClangCodeModel::Internal::CompletionChunksToTextConverter; class CompletionChunksToTextConverter : public ::testing::Test @@ -84,7 +85,7 @@ protected: TEST_F(CompletionChunksToTextConverter, ParseIsClearingText) { - QVector<CodeCompletionChunk> completionChunks({integerResultType, functionName, leftParen, rightParen}); + CodeCompletionChunks completionChunks({integerResultType, functionName, leftParen, rightParen}); converter.setAddResultType(true); converter.parseChunks(completionChunks); @@ -94,7 +95,7 @@ TEST_F(CompletionChunksToTextConverter, ParseIsClearingText) TEST_F(CompletionChunksToTextConverter, ConvertFunction) { - QVector<CodeCompletionChunk> completionChunks({integerResultType, functionName, leftParen, rightParen}); + CodeCompletionChunks completionChunks({integerResultType, functionName, leftParen, rightParen}); converter.setAddResultType(true); converter.parseChunks(completionChunks); @@ -104,7 +105,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertFunction) TEST_F(CompletionChunksToTextConverter, ConvertFunctionWithParameters) { - QVector<CodeCompletionChunk> completionChunks({integerResultType, functionName, leftParen, functionArgumentX,rightParen}); + CodeCompletionChunks completionChunks({integerResultType, functionName, leftParen, functionArgumentX,rightParen}); converter.setAddResultType(true); converter.setAddPlaceHolderText(true); @@ -115,7 +116,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertFunctionWithParameters) TEST_F(CompletionChunksToTextConverter, ConvertFunctionWithOptionalParameter) { - QVector<CodeCompletionChunk> completionChunks({integerResultType, functionName, leftParen, functionArgumentX, optional,rightParen}); + CodeCompletionChunks completionChunks({integerResultType, functionName, leftParen, functionArgumentX, optional,rightParen}); converter.setAddResultType(true); converter.setAddPlaceHolderText(true); @@ -126,7 +127,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertFunctionWithOptionalParameter) TEST_F(CompletionChunksToTextConverter, ConvertVariable) { - QVector<CodeCompletionChunk> completionChunks({integerResultType, variableName}); + CodeCompletionChunks completionChunks({integerResultType, variableName}); converter.setAddResultType(true); converter.parseChunks(completionChunks); @@ -136,7 +137,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertVariable) TEST_F(CompletionChunksToTextConverter, Enumerator) { - QVector<CodeCompletionChunk> completionChunks({enumerationResultType, enumeratorName}); + CodeCompletionChunks completionChunks({enumerationResultType, enumeratorName}); converter.setAddResultType(true); converter.parseChunks(completionChunks); @@ -146,7 +147,7 @@ TEST_F(CompletionChunksToTextConverter, Enumerator) TEST_F(CompletionChunksToTextConverter, Enumeration) { - QVector<CodeCompletionChunk> completionChunks({className}); + CodeCompletionChunks completionChunks({className}); converter.parseChunks(completionChunks); @@ -155,7 +156,7 @@ TEST_F(CompletionChunksToTextConverter, Enumeration) TEST_F(CompletionChunksToTextConverter, Switch) { - QVector<CodeCompletionChunk> completionChunks({switchName, + CodeCompletionChunks completionChunks({switchName, leftParen, condition, rightParen, @@ -172,7 +173,7 @@ TEST_F(CompletionChunksToTextConverter, Switch) TEST_F(CompletionChunksToTextConverter, For) { - QVector<CodeCompletionChunk> completionChunks({forName, + CodeCompletionChunks completionChunks({forName, leftParen, initStatement, semicolon, @@ -194,7 +195,7 @@ TEST_F(CompletionChunksToTextConverter, For) TEST_F(CompletionChunksToTextConverter, const_cast) { - QVector<CodeCompletionChunk> completionChunks({constCastName, + CodeCompletionChunks completionChunks({constCastName, leftAngle, rightAngle, leftParen, @@ -208,7 +209,7 @@ TEST_F(CompletionChunksToTextConverter, const_cast) TEST_F(CompletionChunksToTextConverter, Throw) { - QVector<CodeCompletionChunk> completionChunks({voidResultType, throwName}); + CodeCompletionChunks completionChunks({voidResultType, throwName}); auto completionName = Converter::convertToName(completionChunks); @@ -217,7 +218,7 @@ TEST_F(CompletionChunksToTextConverter, Throw) TEST_F(CompletionChunksToTextConverter, ElseIf) { - QVector<CodeCompletionChunk> completionChunks({elseName, + CodeCompletionChunks completionChunks({elseName, horizontalSpace, ifName, horizontalSpace, diff --git a/tests/unit/unittest/cplusplus.pri b/tests/unit/unittest/cplusplus.pri index 99a3d7e09c..d0eb17e6fd 100644 --- a/tests/unit/unittest/cplusplus.pri +++ b/tests/unit/unittest/cplusplus.pri @@ -1,5 +1,4 @@ INCLUDEPATH += $$PWD -SOURCES += $$PWD/../../../src/libs/3rdparty/cplusplus/Token.cpp - -HEADERS += $$PWD/../../../src/libs/3rdparty/cplusplus/Token.h +include($$PWD/../../../src/libs/utils/utils-lib.pri) +include($$PWD/../../../src/libs/cplusplus/cplusplus-lib.pri) diff --git a/tests/unit/unittest/creator_dependency.pri b/tests/unit/unittest/creator_dependency.pri new file mode 100644 index 0000000000..35e76dbb45 --- /dev/null +++ b/tests/unit/unittest/creator_dependency.pri @@ -0,0 +1,10 @@ +include(../../../src/libs/sqlite/sqlite-lib.pri) +include(../../../src/libs/clangbackendipc/clangbackendipc-lib.pri) +include(../../../src/tools/clangbackend/ipcsource/clangbackendclangipc-source.pri) +include(../../../src/plugins/clangcodemodel/clangcodemodelunittestfiles.pri) +include(cplusplus.pri) + +INCLUDEPATH += \ + $$PWD/../../../src/libs \ + $$PWD/../../../src/libs/3rdparty \ + $$PWD/../../../src/plugins diff --git a/tests/unit/unittest/gmock_dependency.pri b/tests/unit/unittest/gmock_dependency.pri new file mode 100644 index 0000000000..20d5f77334 --- /dev/null +++ b/tests/unit/unittest/gmock_dependency.pri @@ -0,0 +1,35 @@ +GMOCK_DIR = $$(GMOCK_DIR) +!isEmpty(GMOCK_DIR):GTEST_DIR = $$GMOCK_DIR/gtest +linux-* { + isEmpty(GMOCK_DIR):GMOCK_DIR = /usr/include/gmock + !exists($$GTEST_DIR):GTEST_DIR = /usr/include/gtest +} + +requires(exists($$GMOCK_DIR)) +!exists($$GMOCK_DIR):message("No gmock is found! To enabe unit tests set GMOCK_DIR") + +GTEST_SRC_DIR = $$GTEST_DIR +GMOCK_SRC_DIR = $$GMOCK_DIR +linux-* { + !exists($$GTEST_SRC_DIR/src/gtest-all.cc):GTEST_SRC_DIR = /usr/src/gtest + !exists($$GMOCK_SRC_DIR/src/gmock-all.cc):GMOCK_SRC_DIR = /usr/src/gmock +} + +DEFINES += \ + GTEST_HAS_STD_INITIALIZER_LIST_ \ + GTEST_LANG_CXX11 + +INCLUDEPATH *= \ + $$GTEST_DIR \ + $$GTEST_DIR/include \ + $$GMOCK_DIR \ + $$GMOCK_DIR/include \ + $$GTEST_SRC_DIR \ + $$GMOCK_SRC_DIR + +SOURCES += \ + $$GMOCK_SRC_DIR/src/gmock-all.cc \ + $$GTEST_SRC_DIR/src/gtest-all.cc + +HEADERS += \ + $$PWD/gtest-qt-printing.h diff --git a/tests/unit/unittest/readandwritecommandblocktest.cpp b/tests/unit/unittest/readandwritecommandblocktest.cpp index aab8672b43..c3561c141c 100644 --- a/tests/unit/unittest/readandwritecommandblocktest.cpp +++ b/tests/unit/unittest/readandwritecommandblocktest.cpp @@ -156,7 +156,7 @@ TEST_F(ReadAndWriteCommandBlockTest, CompareCompleteCodeCommand) TEST_F(ReadAndWriteCommandBlockTest, CompareCodeCompletedCommand) { - QVector<ClangBackEnd::CodeCompletion> codeCompletions({Utf8StringLiteral("newFunction()")}); + ClangBackEnd::CodeCompletions codeCompletions({Utf8StringLiteral("newFunction()")}); CompareCommand(ClangBackEnd::CodeCompletedCommand(codeCompletions, 1)); } @@ -183,7 +183,7 @@ TEST_F(ReadAndWriteCommandBlockTest, ReadCommandAfterInterruption) QVariant ReadAndWriteCommandBlockTest::writeCodeCompletedCommand() { - ClangBackEnd::CodeCompletedCommand command(QVector<ClangBackEnd::CodeCompletion>({Utf8StringLiteral("newFunction()")}), 1); + ClangBackEnd::CodeCompletedCommand command(ClangBackEnd::CodeCompletions({Utf8StringLiteral("newFunction()")}), 1); const QVariant writeCommand = QVariant::fromValue(command); writeCommandBlock.write(writeCommand); diff --git a/tests/unit/unittest/translationunittest.cpp b/tests/unit/unittest/translationunittest.cpp index 29ae9cd468..25235940bf 100644 --- a/tests/unit/unittest/translationunittest.cpp +++ b/tests/unit/unittest/translationunittest.cpp @@ -132,75 +132,15 @@ TEST(TranslationUnit, ResetedTranslationUnitIsNull) ASSERT_TRUE(translationUnit.isNull()); } -TEST(TranslationUnit, TimeStampForProjectPartChangeIsUpdatedAsNewCxTranslationUnitIsGenerated) +TEST(TranslationUnit, TimeStampIsUpdatedAsNewCxTranslationUnitIsGenerated) { TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"), UnsavedFiles(), ProjectPart(Utf8StringLiteral("/path/to/projectfile"))); - auto lastChangeTimePoint = translationUnit.lastProjectPartChangeTimePoint(); + auto lastChangeTimePoint = translationUnit.lastChangeTimePoint(); std::this_thread::sleep_for(std::chrono::steady_clock::duration(1)); translationUnit.cxTranslationUnit(); - ASSERT_THAT(translationUnit.lastProjectPartChangeTimePoint(), Gt(lastChangeTimePoint)); -} - -TEST(TranslationUnit, TimeStampForProjectPartChangeIsUpdatedAsProjectPartIsCleared) -{ - ProjectPart projectPart(Utf8StringLiteral("/path/to/projectfile")); - TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"), UnsavedFiles(), projectPart); - translationUnit.cxTranslationUnit(); - auto lastChangeTimePoint = translationUnit.lastProjectPartChangeTimePoint(); - std::this_thread::sleep_for(std::chrono::steady_clock::duration(1)); - - projectPart.clear(); - translationUnit.cxTranslationUnit(); - - ASSERT_THAT(translationUnit.lastProjectPartChangeTimePoint(), Gt(lastChangeTimePoint)); -} - -TEST(TranslationUnit, ReparseIsNeededAfterUnsavedFilesAreChanged) -{ - UnsavedFiles unsavedFiles; - TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"), - unsavedFiles, - ProjectPart(Utf8StringLiteral("/path/to/projectfile"))); - translationUnit.cxTranslationUnit(); - unsavedFiles.clear(); - translationUnit.cxTranslationUnit(); - - unsavedFiles.clear(); - - ASSERT_TRUE(translationUnit.isNeedingReparse()); -} - -TEST(TranslationUnit, NeedsNoReparseAfterUnsavedFilesAreNotChanged) -{ - UnsavedFiles unsavedFiles; - TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"), - unsavedFiles, - ProjectPart(Utf8StringLiteral("/path/to/projectfile"))); - translationUnit.cxTranslationUnit(); - unsavedFiles.clear(); - translationUnit.cxTranslationUnit(); - - ASSERT_FALSE(translationUnit.isNeedingReparse()); -} - -TEST(TranslationUnit, TimeStampForUnsavedFilesChange) -{ - UnsavedFiles unsavedFiles; - TranslationUnit translationUnit(Utf8StringLiteral(TESTDATA_DIR"/complete_testfile_1.cpp"), - unsavedFiles, - ProjectPart(Utf8StringLiteral("/path/to/projectfile"))); - translationUnit.cxTranslationUnit(); - unsavedFiles.clear(); - translationUnit.cxTranslationUnit(); - auto lastChangeTimePoint = translationUnit.lastUnsavedFilesChangeTimePoint(); - std::this_thread::sleep_for(std::chrono::steady_clock::duration(1)); - - unsavedFiles.clear(); - translationUnit.cxTranslationUnit(); - - ASSERT_THAT(translationUnit.lastUnsavedFilesChangeTimePoint(), Gt(lastChangeTimePoint)); + ASSERT_THAT(translationUnit.lastChangeTimePoint(), Gt(lastChangeTimePoint)); } diff --git a/tests/unit/unittest/unittest.pro b/tests/unit/unittest/unittest.pro index 826bf52f8c..42e7287c0c 100644 --- a/tests/unit/unittest/unittest.pro +++ b/tests/unit/unittest/unittest.pro @@ -1,90 +1,56 @@ -QT += core network testlib widgets +INCLUDEPATH += ../mockup -TARGET = unittest -CONFIG += console c++14 testcase -CONFIG -= app_bundle - -TEMPLATE = app - -GMOCK_DIR = $$(GMOCK_DIR) -GTEST_DIR = $$GMOCK_DIR/gtest - -requires(exists($$GMOCK_DIR)) -!exists($$GMOCK_DIR):message("No gmock is found! To enabe unit tests set GMOCK_DIR") - -INCLUDEPATH += $$GTEST_DIR $$GTEST_DIR/include $$GMOCK_DIR $$GMOCK_DIR/include - -include(../../../src/libs/sqlite/sqlite-lib.pri) -include(../../../src/libs/clangbackendipc/clangbackendipc-lib.pri) -include(../../../src/tools/clangbackend/ipcsource/clangbackendclangipc-source.pri) -include(../../../src/shared/clang/clang_installation.pri) -include(../../../src/plugins/clangcodemodel/clangcodemodelunittestfiles.pri) -include(cplusplus.pri) - -INCLUDEPATH += $$PWD/../../../src/libs $$PWD/../../../src/plugins $$PWD/../../../src/libs/3rdparty - -requires(!isEmpty(LLVM_LIBS)) - -LIBS += $$LLVM_LIBS -INCLUDEPATH += $$LLVM_INCLUDEPATH +include(gmock_dependency.pri) +include(clang_dependency.pri) +include(creator_dependency.pri) +QT += core network testlib widgets +CONFIG += console c++14 testcase +CONFIG -= app_bundle osx:QMAKE_CXXFLAGS = -stdlib=libc++ -SOURCES += main.cpp \ - $$GTEST_DIR/src/gtest-all.cc \ - $$GMOCK_DIR/src/gmock-all.cc \ - utf8test.cpp \ - sqlstatementbuildertest.cpp \ +DEFINES += \ + QT_NO_CAST_FROM_ASCII \ + CLANGBACKEND_TESTS \ + DONT_CHECK_COMMAND_COUNTER \ + TESTDATA_DIR=\"R\\\"xxx($$PWD/data)xxx\\\"\" +win32:DEFINES += ECHOSERVER=\"R\\\"xxx($$OUT_PWD/../echo)xxx\\\"\" +unix: DEFINES += ECHOSERVER=\"R\\\"xxx($$OUT_PWD/../echoserver/echo)xxx\\\"\" + +SOURCES += \ + activationsequencecontextprocessortest.cpp \ + activationsequenceprocessortest.cpp \ + clangcodecompleteresultstest.cpp \ + clangcompletioncontextanalyzertest.cpp \ + clangipcservertest.cpp \ + clangstringtest.cpp \ + clientserverinprocesstest.cpp \ + clientserveroutsideprocess.cpp \ + codecompletionsextractortest.cpp \ + codecompletiontest.cpp \ + completionchunkstotextconvertertest.cpp \ createtablesqlstatementbuildertest.cpp \ + lineprefixertest.cpp \ + main.cpp \ + projecttest.cpp \ + readandwritecommandblocktest.cpp \ + spydummy.cpp \ sqlitecolumntest.cpp \ + sqlitedatabasebackendtest.cpp \ + sqlitedatabasetest.cpp \ sqlitestatementtest.cpp \ sqlitetabletest.cpp \ - spydummy.cpp \ - sqlitedatabasetest.cpp \ - sqlitedatabasebackendtest.cpp \ - readandwritecommandblocktest.cpp \ - clientserverinprocesstest.cpp \ - clientserveroutsideprocess.cpp \ - codecompletiontest.cpp \ - ../../../src/libs/utils/qtcassert.cpp \ - clangstringtest.cpp \ + sqlstatementbuildertest.cpp \ + translationunitstest.cpp \ translationunittest.cpp \ - clangcodecompleteresultstest.cpp \ - codecompletionsextractortest.cpp \ unsavedfilestest.cpp \ - projecttest.cpp \ - clangipcservertest.cpp \ - translationunitstest.cpp \ - completionchunkstotextconvertertest.cpp \ - lineprefixertest.cpp \ - activationsequenceprocessortest.cpp + utf8test.cpp HEADERS += \ gtest-qt-printing.h \ - spydummy.h \ - ../../../src/libs/utils/qtcassert.h \ mockipclient.h \ - mockipcserver.h - -OTHER_FILES += data/complete_testfile_1.cpp \ - data/complete_completer.cpp \ - data/complete_completer_unsaved.cpp \ - data/complete_extractor_function.cpp \ - data/complete_extractor_function_unsaved.cpp \ - data/complete_extractor_function_unsaved_2.cpp \ - data/complete_extractor_variable.cpp \ - data/complete_extractor_class.cpp \ - data/complete_extractor_namespace.cpp \ - data/complete_extractor_enumeration.cpp \ - data/complete_extractor_constructor.cpp \ - data/complete_translationunit_parse_error.cpp + mockipcserver.h \ + spydummy.h -DEFINES += QT_NO_CAST_FROM_ASCII -DEFINES += CLANGBACKEND_TESTS -DEFINES += DONT_CHECK_COMMAND_COUNTER -DEFINES += GTEST_HAS_STD_INITIALIZER_LIST_ GTEST_LANG_CXX11 - -DEFINES += TESTDATA_DIR=\"R\\\"xxx($$PWD/data)xxx\\\"\" -win32:DEFINES += ECHOSERVER=\"R\\\"xxx($$OUT_PWD/../echo)xxx\\\"\" -unix:DEFINES += ECHOSERVER=\"R\\\"xxx($$OUT_PWD/../echoserver/echo)xxx\\\"\" +OTHER_FILES += $$files(data/*) |