Merge remote-tracking branch 'origin/2.4'

Conflicts:
	qtcreator.pri
	src/libs/qmljs/qmljstypedescriptionreader.cpp
	src/plugins/analyzerbase/startremotedialog.ui
	src/plugins/qmldesigner/designercore/include/rewriterview.h
	src/plugins/qt4projectmanager/makestep.cpp

Change-Id: If9d15a8c8f73106585fd8ce6ac47c253a40af6b1
This commit is contained in:
Eike Ziller
2011-11-25 09:48:25 +01:00
61 changed files with 5528 additions and 965 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -103,6 +103,13 @@
to mobile devices, use the \gui {Qt Quick Application} wizard to convert
them to Qt Quick applications.
\note Qt 4.7.3 supports Qt Quick 1.0 and Qt 4.7.4 supports Qt Quick 1.1. The
application wizards import Qt Quick 1.1, and therefore, you can use them
without changes if you target only platforms that run Qt 4.7.4 (such as
MeeGo or the desktop). If you also target platforms that run Qt 4.7.3
(such as Maemo and S60 5th Edition), you must change the import statement to
import Qt Quick 1.0.
\section1 Creating Qt Quick UI Projects
\list 1

View File

@@ -1987,7 +1987,7 @@
</message>
<message>
<source>Switch Between Method Declaration/Definition</source>
<translation>Wechsel zwischen Deklaration und Definition der Methode.</translation>
<translation>Wechsel zwischen Deklaration und Definition der Methode</translation>
</message>
<message>
<source>Rename Symbol Under Cursor</source>
@@ -4679,6 +4679,10 @@ Grund: %3</translation>
</context>
<context>
<name>FakeVim::Internal::FakeVimPluginPrivate</name>
<message>
<source>Execute User Action #%1</source>
<translation>Benutzerdefinierte Aktion #%1 ausführen</translation>
</message>
<message>
<source>File not saved</source>
<translation>Datei nicht gespeichert</translation>
@@ -7436,7 +7440,7 @@ rückgängig machen?</translation>
<message>
<source>Compile</source>
<comment>Category for compiler isses listed under &apos;Issues&apos;</comment>
<translation>Compilierung</translation>
<translation>Kompilierung</translation>
</message>
<message>
<source>Build System</source>
@@ -7447,11 +7451,6 @@ rückgängig machen?</translation>
<source>Error while building project %1 (target: %2)</source>
<translation>Fehler beim Erstellen des Projekts %1(Ziel: %2)</translation>
</message>
<message>
<source>Compile</source>
<comment>Category for compiler isses listened under &apos;Build Issues&apos;</comment>
<translation type="obsolete">Compilierung</translation>
</message>
</context>
<context>
<name>ProjectExplorer::CustomExecutableRunConfiguration</name>
@@ -7720,7 +7719,7 @@ Fehler: %2</translation>
</message>
<message>
<source>Run in &amp;Terminal</source>
<translation>In &amp;Terminal Ausführen</translation>
<translation>In &amp;Terminal ausführen</translation>
</message>
<message>
<source>Debugger:</source>
@@ -8333,7 +8332,7 @@ konnte dem Projekt &apos;%2&apos; nicht hinzugefügt werden.</translation>
</message>
<message>
<source>Deploy Project &quot;%1&quot;</source>
<translation>Deployment des Projekts %1&quot; durchführen</translation>
<translation>Deployment des Projekts &quot;%1&quot; durchführen</translation>
</message>
<message>
<source>Publish Project...</source>
@@ -8401,19 +8400,19 @@ konnte dem Projekt &apos;%2&apos; nicht hinzugefügt werden.</translation>
</message>
<message>
<source>Cancel Build &amp;&amp; Unload</source>
<translation>Erstellen abbrechen und Schließen</translation>
<translation>Erstellen abbrechen und schließen</translation>
</message>
<message>
<source>Do Not Unload</source>
<translation>Nicht Schließen</translation>
<translation>Nicht schließen</translation>
</message>
<message>
<source>Unload Project %1?</source>
<translation>Projekt %1 schließen?</translation>
<translation>Projekt &quot;%1&quot; schließen?</translation>
</message>
<message>
<source>The project %1 is currently being built.</source>
<translation>Das Projekt %1 wird gerade erstellt.</translation>
<translation>Das Projekt &quot;%1&quot; wird gerade erstellt.</translation>
</message>
<message>
<source>Do you want to cancel the build process and unload the project anyway?</source>
@@ -8433,7 +8432,7 @@ konnte dem Projekt &apos;%2&apos; nicht hinzugefügt werden.</translation>
</message>
<message>
<source>Building &apos;%1&apos; is disabled: %2&lt;br&gt;</source>
<translation>Das Erstellen von &apos;%1&apos; ist deaktiviert: %12&lt;br&gt;</translation>
<translation>Das Erstellen von &quot;%1&quot; ist deaktiviert: %2&lt;br&gt;</translation>
</message>
<message>
<source>A build is in progress</source>
@@ -8442,7 +8441,7 @@ konnte dem Projekt &apos;%2&apos; nicht hinzugefügt werden.</translation>
<message>
<source>Building &apos;%1&apos; is disabled: %2
</source>
<translation>Das Erstellen von &apos;%1&apos; ist deaktiviert: %12</translation>
<translation>Das Erstellen von &quot;%1&quot; ist deaktiviert: %2</translation>
</message>
<message>
<source>No active project</source>
@@ -8450,15 +8449,15 @@ konnte dem Projekt &apos;%2&apos; nicht hinzugefügt werden.</translation>
</message>
<message>
<source>The project &apos;%1&apos; has no active target</source>
<translation>Das Projekt &apos;%1&apos; hat kein aktives Ziel</translation>
<translation>Das Projekt &quot;%1&quot; hat kein aktives Ziel</translation>
</message>
<message>
<source>The target &apos;%1&apos; for project &apos;%2&apos; has no active run configuration</source>
<translation>Das Ziel &apos;%1&apos; des Projektes &apos;%2&apos; hat keine aktive Ausführungskonfiguration</translation>
<translation>Das Ziel &quot;%1&quot; des Projektes &quot;%2&quot; hat keine aktive Ausführungskonfiguration</translation>
</message>
<message>
<source>Cannot run &apos;%1&apos; in mode &apos;%2&apos;.</source>
<translation>&apos;%1&apos; kann nicht im Modus &apos;%2&apos; ausgeführt werden.</translation>
<translation>&quot;%1&quot; kann nicht im Modus &quot;%2&quot; ausgeführt werden.</translation>
</message>
<message>
<source>A build is still in progress.</source>
@@ -8532,7 +8531,7 @@ konnte dem Projekt &apos;%2&apos; nicht hinzugefügt werden.</translation>
</message>
<message>
<source>Delete %1 from file system?</source>
<translation>Soll die Datei %1 gelöscht werden?</translation>
<translation>Soll die Datei &quot;%1&quot; gelöscht werden?</translation>
</message>
<message>
<source>Close Project &quot;%1&quot;</source>
@@ -8548,7 +8547,7 @@ konnte dem Projekt &apos;%2&apos; nicht hinzugefügt werden.</translation>
</message>
<message>
<source>Build Project &quot;%1&quot;</source>
<translation>Projekt &apos;%1&quot; erstellen</translation>
<translation>Projekt &quot;%1&quot; erstellen</translation>
</message>
<message>
<source>Rebuild Project &quot;%1&quot;</source>
@@ -8585,7 +8584,7 @@ konnte dem Projekt &apos;%2&apos; nicht hinzugefügt werden.</translation>
</message>
<message>
<source>Do Not Close</source>
<translation>Nicht Schließen</translation>
<translation>Nicht schließen</translation>
</message>
<message>
<source>New File</source>
@@ -8599,7 +8598,7 @@ konnte dem Projekt &apos;%2&apos; nicht hinzugefügt werden.</translation>
<message>
<source>Could not add following files to project %1:
</source>
<translation>Die folgenden Dateien konnten nicht zum Projekt %1 hinzugefügt werden:
<translation>Die folgenden Dateien konnten nicht zum Projekt &quot;%1&quot; hinzugefügt werden:
</translation>
</message>
<message>
@@ -8622,11 +8621,11 @@ unter Versionsverwaltung (%2) gestellt werden?</translation>
</message>
<message>
<source>Could not remove file %1 from project %2.</source>
<translation>Die Datei %1 konnte nicht vom Projekt %2 entfernt werden.</translation>
<translation>Die Datei &quot;%1&quot; konnte nicht aus dem Projekt &quot;%2&quot; entfernt werden.</translation>
</message>
<message>
<source>Could not delete file %1.</source>
<translation>Die Datei %1 konnte nicht gelöscht werden.</translation>
<translation>Die Datei &quot;%1&quot; konnte nicht gelöscht werden.</translation>
</message>
</context>
<context>
@@ -10028,7 +10027,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich
</message>
<message>
<source>Run in &amp;terminal:</source>
<translation>In &amp;Terminal Ausführen:</translation>
<translation>In &amp;Terminal ausführen:</translation>
</message>
</context>
<context>
@@ -15880,6 +15879,14 @@ with a password, which you can can enter below.</source>
<source>Only select items with content (S)</source>
<translation>Nur Elemente mit Inhalt auswählen (S)</translation>
</message>
<message>
<source>width</source>
<translation>Breite</translation>
</message>
<message>
<source>height</source>
<translation>Höhe</translation>
</message>
<message>
<source>Reset view (R)</source>
<translation>Ansicht zurücksetzen (R)</translation>
@@ -19627,7 +19634,7 @@ Hinweis: Unter Umständen wird die lokale Datei gelöscht.</translation>
</message>
<message>
<source>Attach to Core...</source>
<translation>Debugge core-Datei</translation>
<translation>Debugge core-Datei...</translation>
</message>
<message>
<source>Start and Debug Remote Application...</source>
@@ -22393,7 +22400,7 @@ Einschränkungen bezüglich der Erstellung von SIS-Dateien bestehen.</translatio
</message>
<message>
<source>%1 is a default vendor name used for testing and development.</source>
<translation>%1 ist ein zum Testen und zur Entwicklung vorgegebener Anbietername.</translation>
<translation>&quot;%1&quot; ist ein zum Testen und zur Entwicklung vorgegebener Anbietername.</translation>
</message>
<message>
<source>%1 are default vendor names used for testing and development.</source>
@@ -26573,7 +26580,7 @@ Erfordert Qt 4.7.4 oder neuer sowie die Installation des Komponentensatzes für
</message>
<message>
<source>Compile</source>
<translation>Compilierung</translation>
<translation>Kompilierung</translation>
</message>
<message>
<source>Create</source>
@@ -27976,7 +27983,7 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete
</message>
<message>
<source>The project is missing some information important to publishing:</source>
<translation>Bei dem Projekt fehlen einige für die Veröffentlichung erforderliche Informationen:</translation>
<translation>Dem Projekt fehlen einige für die Veröffentlichung erforderliche Informationen:</translation>
</message>
<message>
<source>Publishing failed: Missing project information.</source>
@@ -28102,7 +28109,7 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete
</message>
<message>
<source>The package description is &apos;%1&apos;, which is probably not what you want. Please change it in Projects -&gt; Run -&gt; Create Package -&gt; Details.</source>
<translation>Die Paketbeschreibung ist gegenwärtig &apos;%1&apos;, was wahrscheinlich nicht beabsichtigt ist. Bitte ändern Sie sie unter Projekte -&gt; Ausführung -&gt; Paketerzeugung -&gt; Details.</translation>
<translation>Die Paketbeschreibung ist gegenwärtig &apos;%1&apos;, was wahrscheinlich nicht beabsichtigt ist. Bitte ändern Sie sie unter Projekte -&gt; Ausführung -&gt; Erzeuge Paketdatei -&gt; Details.</translation>
</message>
<message>
<source>You have not set an icon for the package manager. The icon must be set in Projects -&gt; Run -&gt; Create Package -&gt; Details.</source>

File diff suppressed because it is too large Load Diff

View File

@@ -352,11 +352,11 @@
</message>
<message>
<source>Reload All Unchanged Editors</source>
<translation>Przeładuj wszystkie niezmienione edytory</translation>
<translation>Przeładowuj wszystkie niezmienione edytory</translation>
</message>
<message>
<source>Ignore Modifications</source>
<translation>Zignoruj modyfikacje</translation>
<translation>Ignoruj modyfikacje</translation>
</message>
<message>
<source>Reset</source>
@@ -662,14 +662,14 @@ p, li { white-space: pre-wrap; }
<source>&amp;Tool chain:</source>
<translation>Zestaw &amp;narzędzi:</translation>
</message>
<message>
<source>Override &amp;Start script:</source>
<translation>Nadpisz skrypt &amp;startowy:</translation>
</message>
<message>
<source>Sys&amp;root:</source>
<translation>Sys&amp;root:</translation>
</message>
<message>
<source>Override &amp;start script:</source>
<translation>Nadpisz skrypt &amp;startowy:</translation>
</message>
</context>
<context>
<name>AttachExternalDialog</name>
@@ -712,18 +712,10 @@ p, li { white-space: pre-wrap; }
<source>Use Qt Creator for post-mortem debugging</source>
<translation>Używaj Creatora do pośmiertnego debugowania</translation>
</message>
<message>
<source>Close temporary buffers on debugger exit.</source>
<translation>Zamykaj tymczasowe bufory po zakończeniu debugowania.</translation>
</message>
<message>
<source>Close temporary buffers on debugger exit</source>
<translation>Zamykaj tymczasowe bufory 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>
<message>
<source>Switch to previous mode on debugger exit</source>
<translation>Przełączaj do poprzedniego trybu po zakończeniu debugowania</translation>
@@ -822,7 +814,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Use asynchronous mode to control the inferior</source>
<translation>Użyj trybu asynchronicznego do kontrolowania podprocesu</translation>
<translation>Używaj trybu asynchronicznego do kontrolowania podprocesu</translation>
</message>
<message>
<source>GDB</source>
@@ -872,7 +864,7 @@ I tak np. kod atomowego licznika referencji będzie pominięty, a pojedyncze &qu
</message>
<message>
<source>Stop when a qWarning is issued</source>
<translation>Zatrzymaj kiedy wystąpi qWarning</translation>
<translation>Zatrzymuj kiedy wystąpi qWarning</translation>
</message>
<message>
<source>Always try to set breakpoints in plugins automatically</source>
@@ -880,7 +872,7 @@ I tak np. kod atomowego licznika referencji będzie pominięty, a pojedyncze &qu
</message>
<message>
<source>Stop when a qFatal is issued</source>
<translation>Zatrzymaj kiedy wystąpi qFatal</translation>
<translation>Zatrzymuj kiedy wystąpi qFatal</translation>
</message>
<message>
<source>This adds common paths to locations of debug information at debugger startup.</source>
@@ -1203,7 +1195,7 @@ I tak np. kod atomowego licznika referencji będzie pominięty, a pojedyncze &qu
</message>
<message>
<source>Would you like to delete the &lt;b&gt;unmerged&lt;/b&gt; branch &apos;%1&apos;?</source>
<translation>Czy chcesz usunąć &lt;b&gt;niescaloną&lt;/b&gt; gałąź &quot;%1&quot;?</translation>
<translation>Czy usunąć &lt;b&gt;niescaloną&lt;/b&gt; gałąź &quot;%1&quot;?</translation>
</message>
<message>
<source>Delete Branch</source>
@@ -1211,7 +1203,7 @@ I tak np. kod atomowego licznika referencji będzie pominięty, a pojedyncze &qu
</message>
<message>
<source>Would you like to delete the branch &apos;%1&apos;?</source>
<translation>Czy chcesz usunąć gałąź &quot;%1&quot;?</translation>
<translation>Czy usunąć gałąź &quot;%1&quot;?</translation>
</message>
<message>
<source>Re&amp;fresh</source>
@@ -2187,10 +2179,6 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum
</context>
<context>
<name>Qt4ProjectManager::Internal::Qt4ProjectConfigWidget</name>
<message>
<source>Manage</source>
<translation>Zarządzaj</translation>
</message>
<message>
<source>&lt;a href=&quot;import&quot;&gt;Import existing build&lt;/a&gt;</source>
<translation>&lt;a href=&quot;import&quot;&gt;Zaimportuj istniejącą wersję&lt;/a&gt;</translation>
@@ -2275,6 +2263,10 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum
<source>Build directory:</source>
<translation>Katalog wersji:</translation>
</message>
<message>
<source>Manage...</source>
<translation>Zarządzaj...</translation>
</message>
</context>
<context>
<name>ShowBuildLog</name>
@@ -2633,7 +2625,7 @@ Dodaj, zmodyfikuj lub usuń filtry dokumentów, które determinują zestaw dokum
</message>
<message>
<source>Unable to send command line arguments to the already running instance. It appears to be not responding. Do you want to start a new instance of Creator?</source>
<translation>Nie można wysłać argumentów do uruchomionego programu. Wygląda na to, że program nie odpowiada. Czy chcesz uruchomić nową instancję Creatora?</translation>
<translation>Nie można wysłać argumentów do uruchomionego programu. Wygląda na to, że program nie odpowiada. Czy uruchomić nową instancję Creatora?</translation>
</message>
<message>
<source>Could not find &apos;Core.pluginspec&apos; in %1</source>
@@ -3118,7 +3110,7 @@ Przyczyna: %3</translation>
</message>
<message>
<source>The unsaved file &lt;i&gt;%1&lt;/i&gt; has been changed outside Qt Creator. Do you want to reload it and discard your changes?</source>
<translation>Niezachowany plik &lt;i&gt;%1&lt;/i&gt; został zmieniony na zewnątrz Qt Creatora. Czy chcesz go ponownie załadować tracąc swoje zmiany?</translation>
<translation>Niezachowany plik &lt;i&gt;%1&lt;/i&gt; został zmieniony na zewnątrz Qt Creatora. Czy chcesz ponownie go załadować tracąc swoje zmiany?</translation>
</message>
<message>
<source>The file &lt;i&gt;%1&lt;/i&gt; has changed outside Qt Creator. Do you want to reload it?</source>
@@ -3865,7 +3857,7 @@ Przyczyna: %3</translation>
</message>
<message>
<source>An item named &apos;%1&apos; already exists at this location. Do you want to overwrite it?</source>
<translation>Element o nazwie &quot;%1&quot; istnieje już w tym miejscu. Czy chcesz go nadpisać?</translation>
<translation>Element o nazwie &quot;%1&quot; istnieje już w tym miejscu. Czy nadpisać go?</translation>
</message>
<message>
<source>Save File As</source>
@@ -4401,7 +4393,7 @@ Przyczyna: %3</translation>
<context>
<name>CppTools::Internal::CppFunctionsFilter</name>
<message>
<source>Methods and functions</source>
<source>Methods and Functions</source>
<translation>Metody i funkcje</translation>
</message>
</context>
@@ -4659,11 +4651,11 @@ Przyczyna: %3</translation>
</message>
<message>
<source>Do you want to commit the change?</source>
<translation>Czy chcesz wrzucić zmianę?</translation>
<translation>Czy wrzucić zmianę?</translation>
</message>
<message>
<source>The commit message check failed. Do you want to commit the change?</source>
<translation>Błąd podczas sprawdzania opisu wrzucanych zmian. Czy chcesz wrzucić zmianę?</translation>
<translation>Błąd podczas sprawdzania opisu wrzucanych zmian. Czy wrzucić zmianę?</translation>
</message>
<message>
<source>The files do not differ.</source>
@@ -4675,7 +4667,7 @@ Przyczyna: %3</translation>
</message>
<message>
<source>Revert all pending changes to the repository?</source>
<translation>Czy chcesz odwrócić wszystkie oczekujące zmiany w repozytorium?</translation>
<translation>Czy odwrócić wszystkie oczekujące zmiany w repozytorium?</translation>
</message>
<message>
<source>Revert failed: %1</source>
@@ -4683,7 +4675,7 @@ Przyczyna: %3</translation>
</message>
<message>
<source>The file has been changed. Do you want to revert it?</source>
<translation>Plik został zmieniony. Czy chcesz odwrócić w nim zmiany?</translation>
<translation>Plik został zmieniony. Czy odwrócić w nim zmiany?</translation>
</message>
<message>
<source>Another commit is currently being executed.</source>
@@ -5726,6 +5718,10 @@ Może to spowodować uzyskanie błędnych rezultatów.</translation>
<source>The gdb process crashed some time after starting successfully.</source>
<translation>Proces gdb zakończony błędem po poprawnym uruchomieniu.</translation>
</message>
<message>
<source>The gdb process was ended forcefully</source>
<translation>Wymuszono zakończenie procesu gdb</translation>
</message>
<message>
<source>An error occurred when attempting to write to the gdb process. For example, the process may not be running, or it may have closed its input channel.</source>
<translation>Wystąpił błąd podczas próby pisania do procesu gdb. Być może proces nie jest uruchomiony lub zamknął on swój kanał wejściowy.</translation>
@@ -7045,6 +7041,10 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation>
</context>
<context>
<name>FakeVim::Internal::FakeVimPluginPrivate</name>
<message>
<source>Execute User Action #%1</source>
<translation>Wykonaj akcję użytkownika #%1</translation>
</message>
<message>
<source>File not saved</source>
<translation>Plik nie został zachowany</translation>
@@ -7456,7 +7456,7 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation>
</message>
<message>
<source>Would you like to stash your changes?</source>
<translation>Chcesz odłożyć swoje zmiany?</translation>
<translation>Czy odłożyć Twoje zmiany?</translation>
</message>
<message>
<source>Cannot obtain status: %1</source>
@@ -7682,10 +7682,6 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation>
<source>Alt+G,Alt+K</source>
<translation>Alt+G,Alt+K</translation>
</message>
<message>
<source>Undo Uncommited Changes...</source>
<translation>Cofnij niewrzucone zmiany...</translation>
</message>
<message>
<source>Remotes...</source>
<translation>Zdalne repozytoria...</translation>
@@ -7802,7 +7798,7 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation>
</message>
<message>
<source>Git will not accept this commit. Do you want to continue to edit it?</source>
<translation>Git nie zaakceptuje tej zmiany. Czy chcesz kontynuować edycję?</translation>
<translation>Git nie zaakceptuje tej zmiany. Czy kontynuować edycję?</translation>
</message>
<message>
<source>Unable to retrieve file list</source>
@@ -7848,6 +7844,10 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation>
<source>Status</source>
<translation>Stan</translation>
</message>
<message>
<source>Undo Uncommitted Changes...</source>
<translation>Cofnij niewrzucone zmiany...</translation>
</message>
<message>
<source>Clean...</source>
<translation>Wyczyść...</translation>
@@ -7890,7 +7890,7 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation>
</message>
<message>
<source>Do you want to commit the change?</source>
<translation>Czy chcesz wrzucić zmianę?</translation>
<translation>Czy wrzucić zmianę?</translation>
</message>
</context>
<context>
@@ -8521,8 +8521,8 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation>
%2</translation>
</message>
<message>
<source>File &amp;pattern:</source>
<translation>&amp;Wzorzec:</translation>
<source>Fi&amp;le pattern:</source>
<translation>&amp;Wzorzec pliku:</translation>
</message>
</context>
<context>
@@ -8638,21 +8638,37 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation>
<translation>Usuń</translation>
</message>
<message>
<source>Rename</source>
<translation>Zmień nazwę</translation>
<source>Cancel Build &amp;&amp; Remove Build Configuration</source>
<translation>Przerwij budowanie i usuń konfigurację budowania</translation>
</message>
<message>
<source>Do Not Remove</source>
<translation>Nie usuwaj</translation>
</message>
<message>
<source>Remove Build Configuration %1?</source>
<translation>Usunąć konfigurację budowania %1?</translation>
</message>
<message>
<source>The build configuration &lt;b&gt;%1&lt;/b&gt; is currently being built.</source>
<translation>Konfiguracja budowania &lt;b&gt;%1&lt;/b&gt; jest w tej chwili wykorzystywana.</translation>
</message>
<message>
<source>Do you want to cancel the build process and remove the Build Configuration anyway?</source>
<translation>Czy przerwać budowanie i usunąć konfigurację?</translation>
</message>
<message>
<source>Remove Build Configuration?</source>
<translation>Usunąć konfigurację budowania?</translation>
</message>
<message>
<source>Do you really want to delete build configuration &lt;b&gt;%1&lt;/b&gt;?</source>
<translation>Czy na pewno usunąć konfigurację budowania &lt;b&gt;%1&lt;/b&gt;?</translation>
</message>
<message>
<source>&amp;Clone Selected</source>
<translation>S&amp;klonuj wybraną</translation>
</message>
<message>
<source>Remove Build Configuration</source>
<translation>Usuń konfigurację budowania</translation>
</message>
<message>
<source>Do you really want to delete the build configuration &lt;b&gt;%1&lt;/b&gt;?</source>
<translation>Czy na pewno usunąć konfigurację budowania &lt;b&gt;%1&lt;/b&gt;?</translation>
</message>
<message>
<source>Rename...</source>
<translation>Zmień nazwę...</translation>
@@ -8850,11 +8866,11 @@ Powód: %2</translation>
</message>
<message>
<source>Unset &lt;a href=&quot;%1&quot;&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/a&gt;</source>
<translation>Usuń &lt;a href=&quot;%1&quot;&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/a&gt;</translation>
<translation>Usunięto &lt;a href=&quot;%1&quot;&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/a&gt;</translation>
</message>
<message>
<source>Set &lt;a href=&quot;%1&quot;&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/a&gt; to &lt;b&gt;%2&lt;/b&gt;</source>
<translation>Ustaw &lt;a href=&quot;%1&quot;&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/a&gt; na &lt;b&gt;%2&lt;/b&gt;</translation>
<translation>Ustawiono &lt;a href=&quot;%1&quot;&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/a&gt; na &lt;b&gt;%2&lt;/b&gt;</translation>
</message>
<message>
<source>Using &lt;b&gt;%1&lt;/b&gt;</source>
@@ -8862,7 +8878,7 @@ Powód: %2</translation>
</message>
<message>
<source>Using &lt;b&gt;%1&lt;/b&gt; and</source>
<translation>Użyto: &lt;b&gt;%1&lt;/b&gt; i</translation>
<translation>Użyto: &lt;b&gt;%1&lt;/b&gt; oraz</translation>
</message>
</context>
<context>
@@ -9072,6 +9088,10 @@ Powód: %2</translation>
<source>Delete File...</source>
<translation>Usuń plik...</translation>
</message>
<message>
<source>Rename...</source>
<translation>Zmień nazwę...</translation>
</message>
<message>
<source>Collapse All</source>
<translation>Zwiń wszystko</translation>
@@ -9088,9 +9108,29 @@ Powód: %2</translation>
<source>Failed to open project</source>
<translation>Nie można otworzyć projektu</translation>
</message>
<message>
<source>Cancel Build &amp;&amp; Unload</source>
<translation>Przerwij budowanie i wyładuj</translation>
</message>
<message>
<source>Do Not Unload</source>
<translation>Nie wyładowuj</translation>
</message>
<message>
<source>Unload Project %1?</source>
<translation>Wyładować projekt %1?</translation>
</message>
<message>
<source>The project %1 is currently being built.</source>
<translation>Trwa budowanie projektu %1.</translation>
</message>
<message>
<source>Do you want to cancel the build process and unload the project anyway?</source>
<translation>Czy przerwać budowanie i wyładować projekt?</translation>
</message>
<message>
<source>Cancel Build &amp;&amp; Close</source>
<translation>Anuluj budowanie i zamknij</translation>
<translation>Przerwij budowanie i zamknij</translation>
</message>
<message>
<source>Do Not Close</source>
@@ -9106,7 +9146,7 @@ Powód: %2</translation>
</message>
<message>
<source>Do you want to cancel the build process and close Qt Creator anyway?</source>
<translation>Czy chcesz anulować proces budowania i zamknąć Qt Creatora?</translation>
<translation>Czy przerwać budowanie i zamknąć Qt Creatora?</translation>
</message>
<message>
<source>New Subproject</source>
@@ -9143,7 +9183,7 @@ Powód: %2</translation>
</message>
<message>
<source>Cancel Build</source>
<translation>Anuluj budowanie</translation>
<translation>Przerwij budowanie</translation>
</message>
<message>
<source>Add New...</source>
@@ -9157,10 +9197,6 @@ Powód: %2</translation>
<source>Remove File...</source>
<translation>Usuń plik...</translation>
</message>
<message>
<source>Rename</source>
<translation>Zmień nazwę</translation>
</message>
<message>
<source>Set as Active Project</source>
<translation>Ustaw jako aktywny projekt</translation>
@@ -9389,10 +9425,6 @@ do projektu &quot;%2&quot;.</translation>
<source>Remove</source>
<translation>Usuń</translation>
</message>
<message>
<source>Rename</source>
<translation>Zmień nazwę</translation>
</message>
<message>
<source>Deployment</source>
<translation>Instalacja</translation>
@@ -9425,17 +9457,37 @@ do projektu &quot;%2&quot;.</translation>
<source>New name for run configuration &lt;b&gt;%1&lt;/b&gt;:</source>
<translation>Nowa nazwa dla konfiguracji uruchamiania &lt;b&gt;%1&lt;/b&gt;:</translation>
</message>
<message>
<source>Cancel Build &amp;&amp; Remove Deploy Configuration</source>
<translation>Przerwij budowanie i usuń konfigurację instalacji</translation>
</message>
<message>
<source>Do Not Remove</source>
<translation>Nie usuwaj</translation>
</message>
<message>
<source>Remove Deploy Configuration %1?</source>
<translation>Usunąć konfigurację instalacji %1?</translation>
</message>
<message>
<source>The deploy configuration &lt;b&gt;%1&lt;/b&gt; is currently being built.</source>
<translation>Konfiguracja instalacji &lt;b&gt;%1&lt;/b&gt; jest w tej chwili wykorzystywana.</translation>
</message>
<message>
<source>Do you want to cancel the build process and remove the Deploy Configuration anyway?</source>
<translation>Czy przerwać budowanie i usunąć konfigurację?</translation>
</message>
<message>
<source>Remove Deploy Configuration?</source>
<translation>Usunąć konfigurację instalowania?</translation>
<translation>Usunąć konfigurację instalacji?</translation>
</message>
<message>
<source>Do you really want to delete deploy configuration &lt;b&gt;%1&lt;/b&gt;?</source>
<translation>Czy na pewno usunąć konfigurację instalowania &lt;b&gt;%1&lt;/b&gt;?</translation>
<translation>Czy na pewno usunąć konfigurację instalacji &lt;b&gt;%1&lt;/b&gt;?</translation>
</message>
<message>
<source>New name for deploy configuration &lt;b&gt;%1&lt;/b&gt;:</source>
<translation>Nowa nazwa dla konfiguracji instalowania &lt;b&gt;%1&lt;/b&gt;:</translation>
<translation>Nowa nazwa dla konfiguracji instalacji &lt;b&gt;%1&lt;/b&gt;:</translation>
</message>
</context>
<context>
@@ -9672,10 +9724,6 @@ do projektu &quot;%2&quot;.</translation>
<source>Enable QML debugging:</source>
<translation>Włącz debugowanie QML:</translation>
</message>
<message>
<source>Link QML debugging library:</source>
<translation>Dowiąż bibliotekę debugującą QML:</translation>
</message>
<message>
<source>Might make your application vulnerable. Only use in a safe environment.</source>
<translation>Może to sprawić, że aplikacja będzie podatna na ataki. Używaj tylko w bezpiecznym środowisku.</translation>
@@ -10076,8 +10124,8 @@ Wstępnie wybiera wersję desktopową Qt do budowania aplikacji (jeśli jest dos
<translation>Biblioteka C++</translation>
</message>
<message>
<source>Creates a C++ library based on qmake. This can be used to create:&lt;ul&gt;&lt;li&gt;a shared C++ library for use with &lt;tt&gt;QPluginLoader&lt;/tt&gt; and runtime (Plugins)&lt;/li&gt;&lt;li&gt;a shared or static C++ library for use with another project at linktime&lt;/li&gt;&lt;/ul&gt;.</source>
<translation>Tworzy bibliotekę C++ bazującą na qmake. To pozwala na utworzenie:&lt;ul&gt;&lt;li&gt;dzielonej biblioteki C++ zdolnej do ładowania wtyczek za pomocą &lt;tt&gt;QPluginLoader&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;dzielonej lub statycznej biblioteki C++ ,którą można dowiązać do innego projektu&lt;/li&gt;&lt;/ul&gt;.</translation>
<source>Creates a C++ library based on qmake. This can be used to create:&lt;ul&gt;&lt;li&gt;a shared C++ library for use with &lt;tt&gt;QPluginLoader&lt;/tt&gt; and runtime (Plugins)&lt;/li&gt;&lt;li&gt;a shared or static C++ library for use with another project at linktime&lt;/li&gt;&lt;/ul&gt;</source>
<translation>Tworzy bibliotekę C++ bazującą na qmake. To pozwala na utworzenie:&lt;ul&gt;&lt;li&gt;dzielonej biblioteki C++, zdolnej do ładowania wtyczek za pomocą &lt;tt&gt;QPluginLoader&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;dzielonej lub statycznej biblioteki C++, którą można dowiązać do innego projektu&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
</context>
<context>
@@ -10565,7 +10613,7 @@ Następujące kodowania będą najprawdopodobniej pasowały:</translation>
</message>
<message>
<source>Auto-&amp;indent Selection</source>
<translation>Automatyczne wc&amp;ięcia dla selekcji</translation>
<translation>Sformatuj wc&amp;ięcia w zaznaczonym tekście</translation>
</message>
<message>
<source>Ctrl+I</source>
@@ -10681,7 +10729,7 @@ Następujące kodowania będą najprawdopodobniej pasowały:</translation>
</message>
<message>
<source>Toggle Comment &amp;Selection</source>
<translation>Wykomentuj / odkomentuj &amp;selekcję</translation>
<translation>Wykomentuj / odkomentuj zaznaczony tek&amp;st</translation>
</message>
<message>
<source>Copy &amp;Line</source>
@@ -11340,7 +11388,7 @@ Następujące kodowania będą najprawdopodobniej pasowały:</translation>
<translation>Pokaż zakładkę</translation>
</message>
<message>
<source>Show Bookmark in New Tab</source>
<source>Show Bookmark as New Page</source>
<translation>Pokaż zakładkę w nowej karcie</translation>
</message>
<message>
@@ -12281,7 +12329,7 @@ Możesz odłożyć zmiany lub je porzucić.</translation>
<translation>np. https://[użytkownik[:hasło]@]host[:port]/[ścieżka]</translation>
</message>
<message>
<source>Specify Url:</source>
<source>Specify URL:</source>
<translation>Podaj URL:</translation>
</message>
</context>
@@ -13720,6 +13768,14 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać scieżki i
<comment>Default short title for custom wizard page to be shown in the progress pane of the wizard.</comment>
<translation>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, nie uż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, nie używający biblioteki Qt.</translation>
</message>
<message>
<source>Creates a C++ plugin that makes it possible to offer extensions that can be loaded dynamically into applications using the QDeclarativeEngine class.</source>
<translation>Tworzy wtyczkę C++ umożliwiającą rozszerzenia, które mogą być dynamicznie załadowane przy pomocy klasy QDeclarativeEngine.</translation>
@@ -13756,22 +13812,18 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać scieżki i
<source>Qt Creator plugin</source>
<translation>Wtyczka Qt Creatora</translation>
</message>
<message>
<source>URL:</source>
<translation>URL:</translation>
</message>
<message>
<source>Other Project</source>
<translation>Inny projekt</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, nie używający biblioteki Qt.</translation>
</message>
<message>
<source>Plain C Project</source>
<translation>Zwykły projekt C</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, nie używający biblioteki Qt.</translation>
</message>
<message>
<source>Plain C++ Project</source>
<translation>Zwykły projekt C++</translation>
@@ -13800,10 +13852,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać scieżki i
<source>Description:</source>
<translation>Opis:</translation>
</message>
<message>
<source>Url:</source>
<translation>Url:</translation>
</message>
<message>
<source>Qt Creator sources:</source>
<translation>Źródła Qt Creatora:</translation>
@@ -13983,6 +14031,26 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać scieżki i
<source>No target defined.</source>
<translation>Brak zdefiniowanych produktów docelowych.</translation>
</message>
<message>
<source>Cancel Build &amp;&amp; Remove Target</source>
<translation>Przerwij budowanie i usuń produkt docelowy</translation>
</message>
<message>
<source>Do Not Remove</source>
<translation>Nie usuwaj</translation>
</message>
<message>
<source>Remove Target %1?</source>
<translation>Usunąć produkt docelowy %1?</translation>
</message>
<message>
<source>The target &lt;b&gt;%1&lt;/b&gt; is currently being built.</source>
<translation>Trwa budowanie produktu docelowego &lt;b&gt;%1&lt;/b&gt;.</translation>
</message>
<message>
<source>Do you want to cancel the build process and remove the Target anyway?</source>
<translation>Czy przerwać budowanie i usunąć produkt docelowy?</translation>
</message>
<message>
<source>Qt Creator</source>
<translation>Qt Creator</translation>
@@ -14286,45 +14354,6 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać scieżki i
<translation>Zamknij inne</translation>
</message>
</context>
<context>
<name>QmlJSEditor::Internal::QmlJSEditorFactory</name>
<message>
<source>Do you want to enable the experimental Qt Quick Designer?</source>
<translation>Czy chcesz włączyć eksperymentalnego Qt Quick Designera?</translation>
</message>
<message>
<source>Enable Qt Quick Designer</source>
<translation>Włącz Qt Quick Designera</translation>
</message>
<message>
<source>Qt Creator -&gt; About Plugins...</source>
<translation>Qt Creator -&gt; Informacje o wtyczkach...</translation>
</message>
<message>
<source>Help -&gt; About Plugins...</source>
<translation>Pomoc -&gt; Informacje o wtyczkach...</translation>
</message>
<message>
<source>Enable experimental Qt Quick Designer?</source>
<translation>Włączyć Qt Quick Designera?</translation>
</message>
<message>
<source>Do you want to enable the experimental Qt Quick Designer? After enabling it, you can access the visual design capabilities by switching to Design Mode. This can affect the overall stability of Qt Creator. To disable Qt Quick Designer again, visit the menu &apos;%1&apos; and disable &apos;QmlDesigner&apos;.</source>
<translation>Czy chcesz włączyć eksperymentalny Qt Quick Designer? Po włączeniu możliwy jest dostęp do edytora graficznego przechodząc w tryb Design. Może to mieć wpływ na ogólną stabilność Qt Creatora. W menu &quot;%1&quot; można ponownie wyłączyć Qt Quick Designer naciskając &quot;QmlDesigner&quot;.</translation>
</message>
<message>
<source>Cancel</source>
<translation>Anuluj</translation>
</message>
<message>
<source>Please restart Qt Creator</source>
<translation>Uruchom ponownie Qt Creatora</translation>
</message>
<message>
<source>Please restart Qt Creator to make the change effective.</source>
<translation>Uruchom ponownie Qt Creatora aby zmiana mogła zostać zastosowana.</translation>
</message>
</context>
<context>
<name>QmlJSEditor::Internal::QmlJSEditorPlugin</name>
<message>
@@ -14413,7 +14442,7 @@ Użyj właściwości importPaths dla projektów qmlproject aby dodać scieżki i
<translation>Qt Quick UI</translation>
</message>
<message>
<source>Creates a Qt Quick UI project with a single QML file that contains the main view.
<source>Creates a Qt Quick UI project with a single QML file that contains the main view.
You can review Qt Quick 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 projects.</source>
<translation>Tworzy projekt Qt Quick z pojedynczym plikiem QML zawierającym główny widok.
@@ -14853,7 +14882,7 @@ Możesz przeglądać projekty przy pomocy QML Viewera bez ich uprzedniego budowa
</message>
<message>
<source>&amp;Display:</source>
<translation>&amp;Wyświetl:</translation>
<translation>&amp;Wyświetlaj:</translation>
</message>
<message>
<source>entries</source>
@@ -15398,8 +15427,8 @@ Sprawdź dokumentację SSH zmienną środowiskową SSH_ASKPASS.</translation>
<translation>WidokSieci</translation>
</message>
<message>
<source>Url</source>
<translation>Url</translation>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<source>Pref Width</source>
@@ -15689,6 +15718,14 @@ które można ustawić poniżej.</translation>
<source>Only select items with content (S)</source>
<translation>Wybierz tylko elementy z zawartością (S)</translation>
</message>
<message>
<source>width</source>
<translation>szerokość</translation>
</message>
<message>
<source>height</source>
<translation>wysokość</translation>
</message>
<message>
<source>Reset view (R)</source>
<translation>Zresetuj widok (R)</translation>
@@ -17488,7 +17525,7 @@ zamiast w jego katalogu instalacyjnym.</translation>
<message>
<source>Deploy</source>
<extracomment>Display name of the deploy build step list. Used as part of the labels in the project window.</extracomment>
<translation>Zainstaluj</translation>
<translation>instalacji</translation>
</message>
<message>
<source>No deployment</source>
@@ -18207,10 +18244,10 @@ Wstępnie wybiera wersję Qt dla Symulatora i aplikacji mobilnych (jeśli jest d
<message>
<source>Creates a Qt Quick application project that can contain both QML and C++ code and includes a QDeclarativeView.
You can build the application and deploy it on desktop and mobile target platforms. For example, you can create signed Symbian Installation System (SIS) packages for this type of projects. Moreover, you can select to use a set of premade UI components in your Qt Quick application. To utilize the components, Qt 4.7.3 or newer is required.</source>
<translation>Tworzy projekt aplikacji Qt Quick, który może zawierać kod QML i C++ i dołącza QDeclarativeView
You can build the application and deploy it on desktop and mobile target platforms. For example, you can create signed Symbian Installation System (SIS) packages for this type of projects. Moreover, you can select to use a set of premade UI components in your Qt Quick application. To utilize the components, Qt 4.7.4 or newer is required.</source>
<translation>Tworzy projekt aplikacji Qt Quick, który może zawierać kod QML i C++, oraz dołącza QDeclarativeView.
Aplikację można zbudować i zainstalować na desktopie i urządzeniach mobilnych. Dla tego typu projektów można na przykład utworzyć podpisane pakiety Symbian Installation System (SIS). Ponadto, można użyć zestawu wbudowanych komponentów UI w aplikacji Qt Quick. Aby skorzystać z komponentów wymagana jest wersja Qt 4.7.3 albo nowsza.</translation>
Aplikację można zbudować i zainstalować na desktopie i urządzeniach mobilnych. Dla tego typu projektów można na przykład utworzyć podpisane pakiety Symbian Installation System (SIS). Ponadto, można użyć zestawu wbudowanych komponentów UI w aplikacji Qt Quick. Aby skorzystać z komponentów, wymagana jest wersja Qt 4.7.4 albo nowsza.</translation>
</message>
</context>
<context>
@@ -19623,7 +19660,7 @@ Poprzednie wersje mają ograniczenia w budowaniu odpowiednich plików SIS.</tran
</message>
<message>
<source>&amp;Clean whitespace</source>
<translation>Wy&amp;czyść białe znaki</translation>
<translation>&amp;Czyść białe znaki</translation>
</message>
<message>
<source>Clean whitespace in entire document instead of only for changed parts.</source>
@@ -19639,7 +19676,7 @@ Poprzednie wersje mają ograniczenia w budowaniu odpowiednich plików SIS.</tran
</message>
<message>
<source>Clean indentation</source>
<translation>Wyczyść wcięcia</translation>
<translation>Czyść wcięcia</translation>
</message>
<message>
<source>&amp;Ensure newline at end of file</source>
@@ -19671,7 +19708,7 @@ Poprzednie wersje mają ograniczenia w budowaniu odpowiednich plików SIS.</tran
&lt;li&gt;&lt;i&gt;Zachowuj, jeśli już istnieje: &lt;/i&gt;&lt;/li&gt;zachowuje plik z BOM jeśli go posiadał podczas ładowania&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Zawsze usuwaj:&lt;/i&gt; nigdy nie zapisuje UTF-8 BOM kasując poprzednie wystąpienia.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Uwaga: UTF-8 BOMy występują rzadko i niektóre edytory traktują je za błędne, więc zwykle nie ma sensu ich dodawać.&lt;/p&gt;
&lt;p&gt;To ustawienie &lt;b&gt;nie&lt;/b&gt; nie wpływa na używanie BOMów UTF-16 i UTF-32.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
&lt;p&gt;To ustawienie &lt;b&gt;nie&lt;/b&gt; wpływa na używanie BOMów UTF-16 i UTF-32.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<source>Add If Encoding Is UTF-8</source>
@@ -19773,6 +19810,10 @@ Ustala, jak klawisz &quot;Backspace&quot; reaguje na wcięcia.
<translation>Pokazuj &amp;podpowiedzi
tylko z przyciśniętym klawiszem &quot;Shift&quot;</translation>
</message>
<message>
<source>Always write a newline character at the end of the file.</source>
<translation>Zawsze wstawiaj znak nowej linii na końcu pliku.</translation>
</message>
</context>
<context>
<name>SnippetsSettingsPage</name>
@@ -19909,7 +19950,7 @@ tylko z przyciśniętym klawiszem &quot;Shift&quot;</translation>
<name>Utils::EnvironmentModel</name>
<message>
<source>&lt;UNSET&gt;</source>
<translation>&lt;SKASUJ&gt;</translation>
<translation>&lt;USUNIĘTO&gt;</translation>
</message>
<message>
<source>Variable</source>
@@ -20889,8 +20930,8 @@ Uwaga: może to spowodować usunięcie lokalnego pliku.</translation>
<translation>Komendy użytkownika nie akceptowalne w bieżącym stanie.</translation>
</message>
<message>
<source>Open Qt4 Options</source>
<translation>Otwórz ustawienia Qt4</translation>
<source>Open Qt Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Turn off Helper Usage</source>
@@ -21812,13 +21853,13 @@ komponentów QML.</translation>
</message>
<message>
<source>Color selection for %1</source>
<translation>Selekcja kolorów dla %1</translation>
<translation>Wybór koloru dla %1</translation>
</message>
</context>
<context>
<name>QmlJSTools::Internal::FunctionFilter</name>
<message>
<source>Methods and functions</source>
<source>Methods and Functions</source>
<translation>Metody i funkcje</translation>
</message>
</context>
@@ -22894,7 +22935,7 @@ wyliczeniowych</translation>
</message>
<message>
<source>Align</source>
<translation>Wyrównuj</translation>
<translation>Wyrównanie przeniesionych linii</translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
@@ -22912,7 +22953,7 @@ a = a +
&lt;/pre&gt;
&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
Włącza wyrównywanie do znaków po =, += itd. Kiedy ta opcja jest wyłączona użyte zostanie zwykłe wyrównanie przeniesionych linii.&lt;br&gt;
Włącza wyrównywanie do znaków po =, +=, itd. Kiedy ta opcja jest wyłączona, użyte zostanie zwykłe wyrównanie przeniesionych linii.&lt;br&gt;
&lt;br&gt;
Z wyrównaniem:
&lt;pre&gt;
@@ -22928,7 +22969,8 @@ a = a +
</message>
<message>
<source>Align after assignments</source>
<translation>Wyrównuj do znaków przypisania</translation>
<translation>Wyrównuj przeniesione linie
do znaków przypisania</translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
@@ -22946,7 +22988,14 @@ if (a &amp;&amp;
&lt;/pre&gt;
&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
Dodatkowe wcięcie wpływa zwykle tylko na warunki instrukcji &quot;if&quot;. Bez dodatkowego wcięcia:
Dodatkowe wcięcie wpływa zwykle tylko na warunki instrukcji &quot;if&quot;, choć zależnie od
wielkości wcięć, może wpływać również na instrukcje &quot;foreach&quot;, &quot;switch&quot; i &quot;while&quot;.
Dodaktowe wcięcie dodawane jest w przypadku, gdy wyrównanie przeniesionej linii
byłoby mniejsze lub równe pojedynczemu wcięciu.&lt;br&gt;
&lt;br&gt;
Dla wcięć o rozmiarze 4 mamy:&lt;br&gt;
&lt;br&gt;
Bez dodatkowego wcięcia:
&lt;pre&gt;
if (a &amp;&amp;
b)
@@ -22963,8 +23012,9 @@ if (a &amp;&amp;
<message>
<source>Add extra padding to conditions
if they would align to the next line</source>
<translation>Dodatkowe wcięcia
w instrukcjach warunkowych</translation>
<translation>Dodatkowe wcięcia przeniesionych
linii w instrukcjach &quot;if&quot;, &quot;foreach&quot;,
&quot;switch&quot; i &quot;while&quot;, jeśli wymagane</translation>
</message>
</context>
<context>
@@ -23085,10 +23135,6 @@ w instrukcjach warunkowych</translation>
<source>Show Log</source>
<translation>Pokaż log</translation>
</message>
<message>
<source>Compile debugging helpers that are checked.</source>
<translation>Kompiluje zaznaczonych asystentów debugowania.</translation>
</message>
<message>
<source>Build All</source>
<translation>Zbuduj wszystko</translation>
@@ -25457,14 +25503,6 @@ Requires Qt 4.7.1 or newer.</source>
<translation>Wbudowane elementy w przestrzeni nazw QtQuick umożliwiają pisanie przenośnych aplikacji z przystosowalnym wyglądem.
Wymaga Qt 4.7.1 lub nowszego.</translation>
</message>
<message>
<source>The Qt Quick Components for Symbian are a set of ready-made components that are designed with specific native appearance for the Symbian platform.
Requires Qt 4.7.3 or newer, and the component set installed for your Qt version.</source>
<translation>Komponenty Qt Quick dla Symbiana to zestaw gotowych komponentów o natywnym wyglądzie, zaprojektowanych specjalnie dla Symbiana.
Wymaga Qt 4.7.3 lub nowszego oraz zainstalowanego zestawu komponentów dla tej wersji.</translation>
</message>
<message>
<source>All files and directories that reside in the same directory as the main QML file are deployed. You can modify the contents of the directory any time before deploying.</source>
@@ -25480,6 +25518,14 @@ Wymaga Qt 4.7.3 lub nowszego oraz zainstalowanego zestawu komponentów dla tej w
Requires Qt 4.7.4 or newer, and the component set installed for your Qt version.</source>
<translation>Komponenty Qt Quick dla MeeGo/Harmattan to zestaw gotowych komponentów o natywnym wyglądzie, zaprojektowanych specjalnie dla Meego/Harmattan.
Wymaga Qt 4.7.4 lub nowszego oraz zainstalowanego zestawu komponentów dla tej wersji.</translation>
</message>
<message>
<source>The Qt Quick Components for Symbian are a set of ready-made components that are designed with specific native appearance for the Symbian platform.
Requires Qt 4.7.4 or newer, and the component set installed for your Qt version.</source>
<translation>Komponenty Qt Quick dla Symbiana to zestaw gotowych komponentów o natywnym wyglądzie, zaprojektowanych specjalnie dla Symbiana.
Wymaga Qt 4.7.4 lub nowszego oraz zainstalowanego zestawu komponentów dla tej wersji.</translation>
</message>
</context>
@@ -25611,13 +25657,6 @@ Wymaga Qt 4.7.4 lub nowszego oraz zainstalowanego zestawu komponentów dla tej w
<translation>%1 (bieżąca sesja)</translation>
</message>
</context>
<context>
<name>TagBrowser</name>
<message>
<source>Please choose a tag to filter for:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>GenericProjectManager::Internal::FilesSelectionWizardPage</name>
<message>
@@ -26164,22 +26203,6 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation>
<source>Analyzer Toolbar</source>
<translation>Pasek narzędzi analizatora</translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;center&gt;&lt;i&gt;%1&lt;/i&gt; is still running. You have to quit the Analyzer before being able to run another instance.&lt;center/&gt;&lt;center&gt;Force it to quit?&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;center&gt;&lt;i&gt;%1&lt;/i&gt; jest wciąż uruchomiony. Należy zakończyć pracę analizatora przed uruchomieniem kolejnej instancji.&lt;center/&gt;&lt;center&gt;Wymusić zakończenie?&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<source>Analyzer Still Running</source>
<translation>Analizator wciąż uruchomiony</translation>
</message>
<message>
<source>Stop Active Run</source>
<translation>Zatrzymaj</translation>
</message>
<message>
<source>Keep Running</source>
<translation>Pozostaw uruchomionym</translation>
</message>
<message>
<source>Debug</source>
<translation>Debug</translation>
@@ -26533,10 +26556,6 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation>
<source>Set as Default</source>
<translation>Ustaw jako domyślny</translation>
</message>
<message>
<source>&amp;Add</source>
<translation>&amp;Dodaj</translation>
</message>
<message>
<source>&amp;Remove</source>
<translation>&amp;Usuń</translation>
@@ -26553,6 +26572,10 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation>
<source>&amp;Generate SSH Key...</source>
<translation>&amp;Generuj klucz SSH...</translation>
</message>
<message>
<source>&amp;Add...</source>
<translation>&amp;Dodaj...</translation>
</message>
</context>
<context>
<name>LinuxDeviceTestDialog</name>
@@ -26696,25 +26719,6 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation>
<translation>&amp;Uaktualnij listę</translation>
</message>
</context>
<context>
<name>ExampleLineEdit</name>
<message>
<source>Show Examples and Demos</source>
<translation>Pokaż przykłady i dema</translation>
</message>
<message>
<source>Search in Tutorials</source>
<translation>Wyszukaj w samouczkach</translation>
</message>
<message>
<source>Search in Tutorials, Examples and Demos</source>
<translation>Wyszukaj w samouczkach, przykładach i demach</translation>
</message>
<message>
<source>Tag List</source>
<translation>Lista tagów</translation>
</message>
</context>
<context>
<name>LinksBar</name>
<message>
@@ -27044,12 +27048,12 @@ Dodatkowo, przetestowane zostanie połączenie z urządzeniem.</translation>
<translation>Test</translation>
</message>
<message>
<source>Remote Processes</source>
<translation>Zdalne procesy</translation>
<source>Remote Processes...</source>
<translation>Zdalne procesy...</translation>
</message>
<message>
<source>Deploy Public Key</source>
<translation>Zainstaluj klucz publiczny</translation>
<source>Deploy Public Key...</source>
<translation>Zainstaluj klucz publiczny...</translation>
</message>
</context>
<context>
@@ -28194,7 +28198,9 @@ Jeśli zdecydujesz, żeby nie kontynuować, Qt Creator nie załaduje pliku .shar
<source>The module URI cannot be determined by static analysis. The type will be available
globally in the QML editor. You can add a &quot;// @uri My.Module.Uri&quot; annotation to let
Qt Creator know about a likely URI.</source>
<translation type="unfinished"></translation>
<translation>Nie można określić URI modułu po zastosowaniu analizy statycznej. Typ będzie dostępny
globalnie w edytorze QML. Dodanie adnotacji &quot;// @uri Uri.Mojego.Modułu&quot;
poinstruuje Qt Creatora o URI.</translation>
</message>
<message>
<source>must be a string literal to be available in the QML editor</source>
@@ -28412,12 +28418,12 @@ Czy urządzenie jest podłączone i czy zostało skonfigurowane połączenie sie
<translation>Test</translation>
</message>
<message>
<source>Remote Processes</source>
<translation>Zdalne procesy</translation>
<source>Remote Processes...</source>
<translation>Zdalne procesy...</translation>
</message>
<message>
<source>Deploy Public Key</source>
<translation>Instaluj klucz publiczny</translation>
<source>Deploy Public Key...</source>
<translation>Zainstaluj klucz publiczny...</translation>
</message>
</context>
<context>
@@ -28880,6 +28886,18 @@ Zawartość zdalnego wyjścia z błędami: %1</translation>
<source>Code style name:</source>
<translation>Nazwa stylu kodu:</translation>
</message>
<message>
<source>You cannot save changes to a built-in code style. Copy it first to create your own version.</source>
<translation>Nie można zachować zmian we wbudowanym stylu kodu. W celu utworzenia własnej wersji skopiuj go najpierw.</translation>
</message>
<message>
<source>Copy Built-in Code Style</source>
<translation>Skopiuj wbudowany styl kodu</translation>
</message>
<message>
<source>%1 (Copy)</source>
<translation>%1 (Kopia)</translation>
</message>
</context>
<context>
<name>TextEditor::CodeStyleSelectorWidget</name>
@@ -28955,6 +28973,10 @@ Zawartość zdalnego wyjścia z błędami: %1</translation>
<source>%1 [built-in]</source>
<translation>%1 [wbudowane]</translation>
</message>
<message>
<source>Form</source>
<translation>Formularz</translation>
</message>
</context>
<context>
<name>TextEditor::FindInFiles</name>
@@ -28979,8 +29001,8 @@ Filtr: %2
<translation>&amp;Katalog:</translation>
</message>
<message>
<source>&amp;Browse</source>
<translation>&amp;Przeglądaj</translation>
<source>&amp;Browse...</source>
<translation>&amp;Przeglądaj...</translation>
</message>
<message>
<source>Fi&amp;le pattern:</source>
@@ -28993,6 +29015,14 @@ Filtr: %2
</context>
<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 type="unfinished"></translation>
</message>
<message>
<source>Could not find maintenance tool at &apos;%1&apos;. Check your installation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Start Updater</source>
<translation>Uruchom uaktualniacza</translation>

View File

@@ -45,22 +45,6 @@
<source>Analyzer Toolbar</source>
<translation>Панель анализатора</translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;center&gt;&lt;i&gt;%1&lt;/i&gt; is still running. You have to quit the Analyzer before being able to run another instance.&lt;center/&gt;&lt;center&gt;Force it to quit?&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;center&gt;&lt;i&gt;%1&lt;/i&gt; ещё выполняется. Необходимо завершить анализатор для запуска другого экземпляра.&lt;/center&gt;&lt;center&gt;Желаете завершить?&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<source>Analyzer Still Running</source>
<translation>Анализатор ещё работает</translation>
</message>
<message>
<source>Stop Active Run</source>
<translation>Остановить текущую работу</translation>
</message>
<message>
<source>Keep Running</source>
<translation>Продолжить выполнение</translation>
</message>
<message>
<source>Debug</source>
<translation>Отладка</translation>
@@ -9184,6 +9168,10 @@ Reason: %3</source>
</context>
<context>
<name>FakeVim::Internal::FakeVimPluginPrivate</name>
<message>
<source>Execute User Action #%1</source>
<translation>Выполнить особое действие %1</translation>
</message>
<message>
<source>File not saved</source>
<translation>Файл не сохранён</translation>
@@ -18210,6 +18198,14 @@ If you choose not to continue Qt Creator will not try to load the .shared file.<
<source>Only select items with content (S)</source>
<translation>Выделять только элементы с содержимым (S)</translation>
</message>
<message>
<source>width</source>
<translation>ширина</translation>
</message>
<message>
<source>height</source>
<translation>высота</translation>
</message>
<message>
<source>Reset view (R)</source>
<translation>Сбросить вид (R)</translation>
@@ -22232,10 +22228,6 @@ NetworkControl, MultimediaDD, CommDD, DiskAdmin, AllFiles, DRM and TCB.
<source>Enable QML debugging:</source>
<translation>Включить отладку QML:</translation>
</message>
<message>
<source>Link QML debugging library:</source>
<translation>Подключить библиотеку отладки QML:</translation>
</message>
<message>
<source>Might make your application vulnerable. Only use in a safe environment.</source>
<translation>Может сделать приложение уязвимым. Используйте только в безопасном окружении.</translation>

View File

@@ -1,8 +1,6 @@
TEMPLATE = lib
TARGET = Botan
CONFIG += dll
PRECOMPILED_HEADER = ../../precompiled_headers/botan_pch.h
include(../../../../qtcreatorlibrary.pri)

View File

@@ -1,5 +1,4 @@
TEMPLATE = lib
CONFIG+=dll
TARGET = CPlusPlus
DEFINES += NDEBUG

View File

@@ -1,5 +1,4 @@
TEMPLATE = lib
CONFIG += dll
TARGET = GLSL
DEFINES += GLSL_BUILD_LIB QT_CREATOR

View File

@@ -1,5 +1,4 @@
TEMPLATE = lib
CONFIG += dll
TARGET = LanguageUtils
DEFINES += QT_CREATOR

View File

@@ -1,5 +1,4 @@
TEMPLATE = lib
CONFIG+=dll
TARGET = QmlEditorWidgets
DEFINES += QWEAKPOINTER_ENABLE_ARROW

View File

@@ -1,5 +1,4 @@
TEMPLATE = lib
CONFIG += dll
TARGET = QmlJS
DEFINES += QMLJS_BUILD_DIR QT_CREATOR

View File

@@ -149,7 +149,11 @@ void TypeDescriptionReader::readModule(UiObjectDefinition *ast)
for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) {
UiObjectMember *member = it->member;
UiObjectDefinition *component = dynamic_cast<UiObjectDefinition *>(member);
const QString typeName = toString(component->qualifiedTypeNameId);
QString typeName;
if (component)
typeName = toString(component->qualifiedTypeNameId);
if (!component || (typeName != "Component" && typeName != "ModuleApi")) {
addWarning(member->firstSourceLocation(), "Expected only 'Component' and 'ModuleApi' object definitions");
continue;

View File

@@ -1,5 +1,4 @@
TEMPLATE = lib
CONFIG += dll
TARGET = QmlJSDebugClient
QT += network
DEFINES += QMLJSDEBUGCLIENT_LIBRARY

View File

@@ -1,5 +1,4 @@
TEMPLATE = lib
CONFIG+=dll
TARGET = symbianutils
DEFINES += SYMBIANUTILS_BUILD_LIB JSON_BUILD_LIB
include(../../qtcreatorlibrary.pri)

View File

@@ -3,7 +3,6 @@ TARGET = Utils
QT += gui \
network
CONFIG += dll
include(../../qtcreatorlibrary.pri)
include(utils_dependencies.pri)

View File

@@ -143,7 +143,6 @@ void CMakeOpenProjectWizard::init()
{
setOption(QWizard::NoBackButtonOnStartPage);
setWindowTitle(tr("CMake Wizard"));
setMinimumSize(800, 600);
}
CMakeManager *CMakeOpenProjectWizard::cmakeManager() const
@@ -354,6 +353,7 @@ void CMakeRunPage::initWidgets()
fl->addRow(m_exitCodeLabel);
setTitle(tr("Run CMake"));
setMinimumSize(600, 400);
}
void CMakeRunPage::initializePage()

View File

@@ -78,15 +78,16 @@ public:
virtual void goToPrev() = 0;
public slots:
void popup() { popup(true); }
void popup(bool withFocus) { emit showPage(withFocus); }
void popup() { popup(true, false); }
void popup(bool withFocus) { popup(withFocus, false); }
void popup(bool withFocus, bool ensureSizeHint) { emit showPage(withFocus, ensureSizeHint); }
void hide() { emit hidePage(); }
void toggle() { toggle(true); }
void toggle(bool withFocusIfShown) { emit togglePage(withFocusIfShown); }
void navigateStateChanged() { emit navigateStateUpdate(); }
signals:
void showPage(bool withFocus);
void showPage(bool withFocus, bool ensureSizeHint);
void hidePage();
void togglePage(bool withFocusIfShown);
void navigateStateUpdate();

View File

@@ -143,6 +143,28 @@ bool OutputPanePlaceHolder::isMaximized() const
return Internal::OutputPaneManager::instance()->isMaximized();
}
void OutputPanePlaceHolder::ensureSizeHintAsMinimum()
{
if (!d->m_splitter)
return;
int idx = d->m_splitter->indexOf(this);
if (idx < 0)
return;
QList<int> sizes = d->m_splitter->sizes();
Internal::OutputPaneManager *om = Internal::OutputPaneManager::instance();
int minimum = (d->m_splitter->orientation() == Qt::Vertical
? om->sizeHint().height() : om->sizeHint().width());
int difference = minimum - sizes.at(idx);
if (difference <= 0) // is already larger
return;
for (int i = 0; i < sizes.count(); ++i) {
sizes[i] += difference / (sizes.count()-1);
}
sizes[idx] = minimum;
d->m_splitter->setSizes(sizes);
}
void OutputPanePlaceHolder::unmaximize()
{
if (Internal::OutputPaneManager::instance()->isMaximized())

View File

@@ -64,6 +64,7 @@ public:
void unmaximize();
bool isMaximized() const;
void ensureSizeHintAsMinimum();
private slots:
void currentModeChanged(Core::IMode *);

View File

@@ -254,7 +254,7 @@ void OutputPaneManager::init()
const int idx = m_outputWidgetPane->addWidget(outPane->outputWidget(this));
m_pageMap.insert(idx, outPane);
connect(outPane, SIGNAL(showPage(bool)), this, SLOT(showPage(bool)));
connect(outPane, SIGNAL(showPage(bool,bool)), this, SLOT(showPage(bool,bool)));
connect(outPane, SIGNAL(hidePage()), this, SLOT(slotHide()));
connect(outPane, SIGNAL(togglePage(bool)), this, SLOT(togglePage(bool)));
connect(outPane, SIGNAL(navigateStateUpdate()), this, SLOT(updateNavigateState()));
@@ -431,10 +431,12 @@ void OutputPaneManager::updateNavigateState()
}
// Slot connected to showPage signal of each page
void OutputPaneManager::showPage(bool focus)
void OutputPaneManager::showPage(bool focus, bool ensureSizeHint)
{
int idx = findIndexForPage(qobject_cast<IOutputPane*>(sender()));
showPage(idx, focus);
if (ensureSizeHint && OutputPanePlaceHolder::getCurrent())
OutputPanePlaceHolder::getCurrent()->ensureSizeHintAsMinimum();
}
void OutputPaneManager::showPage(int idx, bool focus)

View File

@@ -78,7 +78,7 @@ protected:
private slots:
void changePage();
void showPage(bool focus);
void showPage(bool focus, bool ensureSizeHint);
void togglePage(bool focus);
void clearPage();
void buttonTriggered();

View File

@@ -4,7 +4,6 @@ include(../../qtcreatorlibrary.pri)
TEMPLATE = lib
TARGET = DebuggingHelper
CONFIG += shared
DESTDIR = $$IDE_LIBRARY_PATH # /tmp would be better in some respect ...
linux-* {

View File

@@ -3,7 +3,6 @@ include(../../qtcreatorlibrary.pri)
TEMPLATE = lib
TARGET = ptracepreload
CONFIG += shared
CONFIG -= qt
DESTDIR = $$IDE_LIBRARY_PATH

View File

@@ -457,16 +457,16 @@ QString WatchModel::formattedValue(const WatchData &data) const
QString result = value;
if (result.startsWith(QLatin1Char('<'))) {
if (result == QLatin1String("<Edit>"))
result = WatchHandler::tr("<Edit>");
else if (result == QLatin1String("<empty>"))
result = WatchHandler::tr("<empty>");
else if (result == QLatin1String("<uninitialized>"))
result = WatchHandler::tr("<uninitialized>");
else if (result == QLatin1String("<invalid>"))
result = WatchHandler::tr("<invalid>");
else if (result == QLatin1String("<not accessible>"))
result = WatchHandler::tr("<not accessible>");
else if (result.endsWith(" items>")) {
return WatchHandler::tr("<Edit>");
if (result == QLatin1String("<empty>"))
return WatchHandler::tr("<empty>");
if (result == QLatin1String("<uninitialized>"))
return WatchHandler::tr("<uninitialized>");
if (result == QLatin1String("<invalid>"))
return WatchHandler::tr("<invalid>");
if (result == QLatin1String("<not accessible>"))
return WatchHandler::tr("<not accessible>");
if (result.endsWith(" items>")) {
// '<10 items>' or '<>10 items>' (more than)
bool ok;
const bool moreThan = result.at(1) == QLatin1Char('>');
@@ -475,7 +475,7 @@ QString WatchModel::formattedValue(const WatchData &data) const
const int size = result.mid(numberPos, len).toInt(&ok);
QTC_ASSERT(ok, qWarning("WatchHandler: Invalid item count '%s'",
qPrintable(result)))
result = moreThan ?
return moreThan ?
WatchHandler::tr("<more than %n items>", 0, size) :
WatchHandler::tr("<%n items>", 0, size);
}

View File

@@ -991,7 +991,7 @@ bool FakeVimPluginPrivate::initialize()
for (int i = 1; i < 10; ++i) {
QAction *act = new QAction(this);
act->setText(QString("Execute User Action #%1").arg(i));
act->setText(tr("Execute User Action #%1").arg(i));
act->setData(i);
QString id = QString("FakeVim.UserAction%1").arg(i);
QString keys = QString("Alt+V,%1").arg(i);

View File

@@ -48,6 +48,7 @@
#include <QtGui/QFont>
#include <QtGui/QAction>
#include <QtGui/QComboBox>
#include <QtGui/QScrollArea>
#include <QtGui/QStackedWidget>
static const char SETTINGSKEYSECTIONNAME[] = "SearchResults";
@@ -209,7 +210,10 @@ SearchResultWindow::SearchResultWindow(QWidget *newSearchPanel)
d->m_widget = new QStackedWidget;
d->m_widget->setWindowTitle(displayName());
d->m_widget->addWidget(newSearchPanel);
QScrollArea *newSearchArea = new QScrollArea(d->m_widget);
newSearchArea->setFrameStyle(QFrame::NoFrame);
newSearchArea->setWidget(newSearchPanel);
d->m_widget->addWidget(newSearchArea);
d->m_currentIndex = 0;
d->m_expandCollapseButton = new QToolButton(d->m_widget);
@@ -400,7 +404,7 @@ void SearchResultWindow::setTextEditorFont(const QFont &font)
void SearchResultWindow::openNewSearchPanel()
{
d->setCurrentIndex(0);
popup();
popup(true/*focus*/, true/*sizeHint*/);
}
/*!

View File

@@ -427,7 +427,7 @@ bool AppOutputPane::closeTab(int index)
bool AppOutputPane::closeTab(int tabIndex, CloseTabMode closeTabMode)
{
const int index = indexOf(m_tabWidget->widget(tabIndex));
int index = indexOf(m_tabWidget->widget(tabIndex));
QTC_ASSERT(index != -1, return true;)
RunControlTab &tab = m_runControlTabs[index];
@@ -441,13 +441,29 @@ bool AppOutputPane::closeTab(int tabIndex, CloseTabMode closeTabMode)
case CloseTabNoPrompt:
break;
case CloseTabWithPrompt:
QWidget *tabWidget = m_tabWidget->widget(tabIndex);
if (!tab.runControl->promptToStop())
return false;
// The event loop has run, thus the ordering might have changed, a tab might
// have been closed, so do some strange things...
tabIndex = m_tabWidget->indexOf(tabWidget);
index = indexOf(tabWidget);
if (tabIndex == -1 || index == -1)
return false;
tab = m_runControlTabs[index];
break;
}
if (tab.runControl->stop() == RunControl::AsynchronousStop) {
tab.asyncClosing = true;
return false;
if (tab.runControl->isRunning()) { // yes it might have stopped already, then just close
QWidget *tabWidget = m_tabWidget->widget(tabIndex);
if (tab.runControl->stop() == RunControl::AsynchronousStop) {
tab.asyncClosing = true;
return false;
}
tabIndex = m_tabWidget->indexOf(tabWidget);
index = indexOf(tabWidget);
if (tabIndex == -1 || index == -1)
return false;
tab = m_runControlTabs[index];
}
}

View File

@@ -187,6 +187,10 @@ bool BuildConfiguration::fromMap(const QVariantMap &map)
delete list;
return false;
}
if (list->id() == QLatin1String(Constants::BUILDSTEPS_BUILD))
list->setDefaultDisplayName(tr("Build"));
else if (list->id() == QLatin1String(Constants::BUILDSTEPS_CLEAN))
list->setDefaultDisplayName(tr("Clean"));
m_stepLists.append(list);
}

View File

@@ -382,7 +382,6 @@ void GccToolChain::addToEnvironment(Utils::Environment &env) const
{
if (!m_compilerPath.isEmpty())
env.prependOrSetPath(QFileInfo(m_compilerPath).absolutePath());
env.set(QLatin1String("LANG"), QLatin1String("C"));
}
void GccToolChain::setDebuggerCommand(const QString &d)

View File

@@ -1178,7 +1178,7 @@ void ProjectExplorerPlugin::showSessionManager()
} else {
d->m_session->save();
}
SessionDialog sessionDialog(d->m_session);
SessionDialog sessionDialog(d->m_session, Core::ICore::instance()->mainWindow());
sessionDialog.setAutoLoadSession(d->m_projectExplorerSettings.autorestoreLastSession);
sessionDialog.exec();
d->m_projectExplorerSettings.autorestoreLastSession = sessionDialog.autoLoadSession();

View File

@@ -145,8 +145,8 @@ bool SessionNameInputDialog::isSwitchToRequested() const
}
SessionDialog::SessionDialog(SessionManager *sessionManager)
: m_sessionManager(sessionManager)
SessionDialog::SessionDialog(SessionManager *sessionManager, QWidget *parent)
: QDialog(parent), m_sessionManager(sessionManager)
{
m_ui.setupUi(this);

View File

@@ -48,7 +48,7 @@ class SessionDialog : public QDialog
{
Q_OBJECT
public:
SessionDialog(SessionManager *sessionManager);
SessionDialog(SessionManager *sessionManager, QWidget *parent = 0);
void setAutoLoadSession(bool);
bool autoLoadSession() const;

View File

@@ -132,12 +132,12 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
addAction(m_selectOnlyContentItemsAction.data());
upperActions.append(m_selectOnlyContentItemsAction.data());
m_rootWidthAction = new LineEditAction("width", this);
m_rootWidthAction = new LineEditAction(tr("width"), this);
connect(m_rootWidthAction.data(), SIGNAL(textChanged(QString)), this, SLOT(changeRootItemWidth(QString)));
addAction(m_rootWidthAction.data());
upperActions.append(m_rootWidthAction.data());
m_rootHeightAction = new LineEditAction("height", this);
m_rootHeightAction = new LineEditAction(tr("height"), this);
connect(m_rootHeightAction.data(), SIGNAL(textChanged(QString)), this, SLOT(changeRootItemHeight(QString)));
addAction(m_rootHeightAction.data());
upperActions.append(m_rootHeightAction.data());

View File

@@ -187,8 +187,8 @@ public:
bool renameId(const QString& oldId, const QString& newId);
const QmlJS::ScopeChain &scopeChain() const;
const QmlJS::Document *document() const;
const QmlJS::ScopeChain *scopeChain() const;
QString convertTypeToImportAlias(const QString &type) const;

View File

@@ -490,8 +490,8 @@ const QmlJS::ObjectValue *NodeMetaInfoPrivate::getObjectValue() const
QmlJS::ContextPtr NodeMetaInfoPrivate::context() const
{
if (m_model && m_model->rewriterView()) {
return m_model->rewriterView()->scopeChain().context();
if (m_model && m_model->rewriterView() && m_model->rewriterView()->scopeChain()) {
return m_model->rewriterView()->scopeChain()->context();
}
return QmlJS::ContextPtr(0);
}

View File

@@ -624,7 +624,7 @@ bool RewriterView::renameId(const QString& oldId, const QString& newId)
return false;
}
const QmlJS::ScopeChain &RewriterView::scopeChain() const
const QmlJS::ScopeChain *RewriterView::scopeChain() const
{
return textToModelMerger()->scopeChain();
}

View File

@@ -68,8 +68,8 @@ public:
RewriterView *view() const
{ return m_rewriterView; }
const QmlJS::ScopeChain &scopeChain() const
{ return *m_scopeChain; }
const QmlJS::ScopeChain *scopeChain() const
{ return m_scopeChain.data(); }
const QmlJS::Document *document() const
{ return m_document.data(); }

View File

@@ -354,8 +354,9 @@ void ModelManager::updateProjectInfo(const ProjectInfo &pinfo)
}
updateSourceFiles(newFiles, false);
// dump builtin types if the shipped definitions are probably outdated
if (QtSupport::QtVersionNumber(pinfo.qtVersionString) > QtSupport::QtVersionNumber(4, 7, 3))
// dump builtin types if the shipped definitions are probably outdated and the
// Qt version ships qmlplugindump
if (QtSupport::QtVersionNumber(pinfo.qtVersionString) >= QtSupport::QtVersionNumber(4, 8, 0))
m_pluginDumper->loadBuiltinTypes(pinfo);
emit projectInfoUpdated(pinfo);

View File

@@ -190,6 +190,9 @@ bool MakeStep::init()
}
Utils::Environment env = bc->environment();
// Force output to english for the parsers. Do this here and not in the toolchain's
// addToEnvironment() to not screw up the users run environment.
env.set(QLatin1String("LC_ALL"), QLatin1String("C"));
// -w option enables "Enter"/"Leaving directory" messages, which we need for detecting the
// absolute file path
// FIXME doing this without the user having a way to override this is rather bad
@@ -361,6 +364,9 @@ void MakeStepConfigWidget::updateDetails()
}
Utils::Environment env = bc->environment();
// Force output to english for the parsers. Do this here and not in the toolchain's
// addToEnvironment() to not screw up the users run environment.
env.set(QLatin1String("LC_ALL"), QLatin1String("C"));
// -w option enables "Enter"/"Leaving directory" messages, which we need for detecting the
// absolute file path
// FIXME doing this without the user having a way to override this is rather bad

View File

@@ -165,7 +165,7 @@ enum { debug = 0 };
using namespace Qt4ProjectManager;
using namespace Qt4ProjectManager::Internal;
Qt4PriFile::Qt4PriFile(Qt4PriFileNode *qt4PriFile)
Qt4PriFile::Qt4PriFile(Qt4ProjectManager::Qt4PriFileNode *qt4PriFile)
: IFile(qt4PriFile), m_priFile(qt4PriFile)
{
@@ -243,6 +243,8 @@ bool Qt4PriFile::reload(QString *errorString, ReloadFlag flag, ChangeType type)
Implements abstract ProjectNode class
*/
namespace Qt4ProjectManager {
Qt4PriFileNode::Qt4PriFileNode(Qt4Project *project, Qt4ProFileNode* qt4ProFileNode, const QString &filePath)
: ProjectNode(filePath),
m_project(project),
@@ -266,7 +268,6 @@ void Qt4PriFileNode::scheduleUpdate()
m_qt4ProFileNode->scheduleUpdate();
}
namespace Qt4ProjectManager {
namespace Internal {
struct InternalNode
{
@@ -375,7 +376,7 @@ struct InternalNode
}
// Makes the projectNode's subtree below the given folder match this internal node's subtree
void updateSubFolders(Qt4PriFileNode *projectNode, ProjectExplorer::FolderNode *folder)
void updateSubFolders(Qt4ProjectManager::Qt4PriFileNode *projectNode, ProjectExplorer::FolderNode *folder)
{
updateFiles(projectNode, folder, type);
@@ -440,7 +441,7 @@ struct InternalNode
}
// Makes the folder's files match this internal node's file list
void updateFiles(Qt4PriFileNode *projectNode, FolderNode *folder, FileType type)
void updateFiles(Qt4ProjectManager::Qt4PriFileNode *projectNode, FolderNode *folder, FileType type)
{
QList<FileNode*> existingFileNodes;
foreach (FileNode *fileNode, folder->fileNodes()) {
@@ -485,7 +486,6 @@ struct InternalNode
}
};
}
}
QStringList Qt4PriFileNode::baseVPaths(QtSupport::ProFileReader *reader, const QString &projectDir)
{
@@ -1291,6 +1291,8 @@ QSet<Utils::FileName> Qt4PriFileNode::filterFilesRecursiveEnumerata(ProjectExplo
return result;
}
} // namespace Qt4ProjectManager
static Qt4ProjectType proFileTemplateTypeToProjectType(ProFileEvaluator::TemplateType type)
{
switch (type) {

View File

@@ -118,8 +118,8 @@ class CentralizedFolderWatcher : public QObject
public:
CentralizedFolderWatcher(QObject *parent);
~CentralizedFolderWatcher();
void watchFolders(const QList<QString> &folders, Qt4PriFileNode *node);
void unwatchFolders(const QList<QString> &folders, Qt4PriFileNode *node);
void watchFolders(const QList<QString> &folders, Qt4ProjectManager::Qt4PriFileNode *node);
void unwatchFolders(const QList<QString> &folders, Qt4ProjectManager::Qt4PriFileNode *node);
private slots:
void folderChanged(const QString &folder);
@@ -129,7 +129,7 @@ private slots:
private:
QSet<QString> recursiveDirs(const QString &folder);
QFileSystemWatcher m_watcher;
QMultiMap<QString, Qt4PriFileNode *> m_map;
QMultiMap<QString, Qt4ProjectManager::Qt4PriFileNode *> m_map;
QSet<QString> m_recursiveWatchedFolders;
QTimer m_compressTimer;
@@ -1198,7 +1198,7 @@ QSet<QString> CentralizedFolderWatcher::recursiveDirs(const QString &folder)
return result;
}
void CentralizedFolderWatcher::watchFolders(const QList<QString> &folders, Qt4PriFileNode *node)
void CentralizedFolderWatcher::watchFolders(const QList<QString> &folders, Qt4ProjectManager::Qt4PriFileNode *node)
{
if (debugCFW)
qDebug()<<"CFW::watchFolders()"<<folders<<"for node"<<node->path();
@@ -1222,7 +1222,7 @@ void CentralizedFolderWatcher::watchFolders(const QList<QString> &folders, Qt4Pr
}
}
void CentralizedFolderWatcher::unwatchFolders(const QList<QString> &folders, Qt4PriFileNode *node)
void CentralizedFolderWatcher::unwatchFolders(const QList<QString> &folders, Qt4ProjectManager::Qt4PriFileNode *node)
{
if (debugCFW)
qDebug()<<"CFW::unwatchFolders()"<<folders<<"for node"<<node->path();
@@ -1246,7 +1246,7 @@ void CentralizedFolderWatcher::unwatchFolders(const QList<QString> &folders, Qt4
// So the rwf is a subdirectory of a folder we aren't watching
// but maybe someone else wants us to watch
bool needToWatch = false;
QMultiMap<QString, Qt4PriFileNode *>::const_iterator it, end;
QMultiMap<QString, Qt4ProjectManager::Qt4PriFileNode *>::const_iterator it, end;
end = m_map.constEnd();
for (it = m_map.constEnd(); it != end; ++it) {
if (rwf.startsWith(it.key())) {
@@ -1293,8 +1293,8 @@ void CentralizedFolderWatcher::delayedFolderChanged(const QString &folder)
while (true) {
if (!dir.endsWith('/'))
dir.append('/');
QList<Qt4PriFileNode *> nodes = m_map.values(dir);
foreach (Qt4PriFileNode *node, nodes) {
QList<Qt4ProjectManager::Qt4PriFileNode *> nodes = m_map.values(dir);
foreach (Qt4ProjectManager::Qt4PriFileNode *node, nodes) {
node->folderChanged(folder);
}

View File

@@ -746,6 +746,10 @@ QtVersionManager::MakefileCompatible QtVersionManager::makefileIsFor(const QStri
if (proFile.isEmpty())
return CouldNotParse;
// The Makefile.Debug / Makefile.Release lack a # Command: line
if (findQMakeLine(makefile, QLatin1String("# Command:")).trimmed().isEmpty())
return CouldNotParse;
QString line = findQMakeLine(makefile, QLatin1String("# Project:")).trimmed();
if (line.isEmpty())
return CouldNotParse;

View File

@@ -13,6 +13,8 @@ include(rpath.pri)
TARGET = $$qtLibraryName($$TARGET)
CONFIG += shared dll
contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
!macx {

View File

@@ -417,6 +417,7 @@ void QrcEditor::onAddFiles()
: m_treeview->model()->parent(current).row();
int const cursorFileArrayIndex = currentIsPrefixNode ? 0 : current.row();
QStringList fileNames = m_treeview->fileNamesToAdd();
fileNames = m_treeview->existingFilesSubtracted(prefixArrayIndex, fileNames);
resolveLocationIssues(fileNames);
if (fileNames.isEmpty())
return;

View File

@@ -793,36 +793,45 @@ QModelIndex ResourceModel::addFiles(const QModelIndex &model_idx, const QStringL
return index(lastFileArrayIndex, 0, prefixModelIndex);
}
QStringList ResourceModel::existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const
{
const QModelIndex prefixModelIdx = index(prefixIndex, 0, QModelIndex());
QStringList uniqueList;
if (prefixModelIdx.isValid()) {
foreach (const QString &file, fileNames) {
if (!m_resource_file.contains(prefixIndex, file) && !uniqueList.contains(file))
uniqueList.append(file);
}
}
return uniqueList;
}
void ResourceModel::addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile,
int &firstFile, int &lastFile)
{
Q_UNUSED(cursorFile)
const QModelIndex prefix_model_idx = index(prefixIndex, 0, QModelIndex());
const QStringList &file_list = fileNames;
firstFile = -1;
lastFile = -1;
if (!prefix_model_idx.isValid()) {
return;
}
const int prefix_idx = prefixIndex;
QStringList unique_list;
foreach (const QString &file, file_list) {
if (!m_resource_file.contains(prefix_idx, file) && !unique_list.contains(file))
unique_list.append(file);
}
QStringList unique_list = existingFilesSubtracted(prefixIndex, fileNames);
if (unique_list.isEmpty()) {
return;
}
const int cnt = m_resource_file.fileCount(prefix_idx);
const int cnt = m_resource_file.fileCount(prefixIndex);
beginInsertRows(prefix_model_idx, cnt, cnt + unique_list.count() - 1); // ### FIXME
foreach (const QString &file, unique_list)
m_resource_file.addFile(prefix_idx, file);
m_resource_file.addFile(prefixIndex, file);
const QFileInfo fi(file_list.last());
const QFileInfo fi(unique_list.last());
m_lastResourceDir = fi.absolutePath();
endInsertRows();

View File

@@ -216,6 +216,7 @@ public:
virtual QModelIndex addNewPrefix();
virtual QModelIndex addFiles(const QModelIndex &idx, const QStringList &file_list);
QStringList existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const;
void addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile);
void insertPrefix(int prefixIndex, const QString &prefix, const QString &lang);
void insertFile(int prefixIndex, int fileIndex, const QString &fileName, const QString &alias);

View File

@@ -305,6 +305,11 @@ EntryBackup * ResourceView::removeEntry(const QModelIndex &index)
return m_qrcModel->removeEntry(index);
}
QStringList ResourceView::existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const
{
return m_qrcModel->existingFilesSubtracted(prefixIndex, fileNames);
}
void ResourceView::addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile,
int &firstFile, int &lastFile)
{

View File

@@ -117,6 +117,7 @@ public:
void findSamePlacePostDeletionModelIndex(int &row, QModelIndex &parent) const;
EntryBackup *removeEntry(const QModelIndex &index);
QStringList existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const;
void addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile,
int &firstFile, int &lastFile);
void removeFiles(int prefixIndex, int firstFileIndex, int lastFileIndex);

View File

@@ -100,6 +100,7 @@ private Q_SLOTS:
void multilineTernaryInProperty();
void bug1();
void multilineString();
void bug1();
};
enum { DontCheck = -2, DontIndent = -1 };
@@ -1331,6 +1332,20 @@ void tst_QMLCodeFormatter::multilineString()
checkIndent(data);
}
void tst_QMLCodeFormatter::bug1()
{
QList<Line> data;
data << Line("Item {")
<< Line(" x: {")
<< Line(" if (a==a) {}")
<< Line(" else (b==b) {}")
<< Line(" foo()")
<< Line(" }")
<< Line("}")
;
checkIndent(data);
}
QTEST_APPLESS_MAIN(tst_QMLCodeFormatter)
#include "tst_qmlcodeformatter.moc"

89
tests/system/README Normal file
View File

@@ -0,0 +1,89 @@
Preface
-------
The usage of the hook-into subprocess has following prerequisites:
Either:
* have no firewall at all enabled (sure that's a bad idea)
Or:
* have the Windows Firewall enabled (no other firewalls are handled by the scripts)
* run the Squish tests with administrator privileges
* additionally the UAC should be disabled, too
Otherwise you'll have some trouble with popping up dialogs from the firewall.
If you're using a different firewall - try to figure out and add a rule for this.
Using the internal test data fallback
-------------------------------------
* inside the shared_data folder a "standard" mapping file is located (qt_squish_mapping.tsv)
* this file defines currently some Squish versions that are available for usage
* all of the Squish versions mentioned in there should exist inside QTSDK/src/creator-test-data (see the file for naming the Squish versions) - of course this depends on the OS you're testing on
Attention! This file will be updated with more columns (and rows) for making it possible to also test Debug builds or 64bit builds. So, even the path entries currently listed could change when this feature is implemented.
Using QT_SQUISH_MAPFILE variable
--------------------------------
* create a simple text file (UTF-8 encoded) that follows this scheme:
QtVersion mkspec Path
* QtVersion: only major and minor number will be used (e.g. 4.7, 4.8, 5.0)
* mkspec: a string holding the mkspec as it appears inside QTSDK/mkspec (or inside Qt Creator)
* Path: the path to the Squish directory that can be used with this combination of QtVersion and mkspec
* between QtVersion and mkspec as well as between mkspec and Path use whitespaces only
* lines STARTING with # within the first column will be ignored
* path can contain spaces as well as ~ (for the home directory)
* you can put any entry of a line into quotes (no matter whether single or double quotes)
* a line holding a mapping MUST start with a QtVersion entry in the first column
Example 1: (using single space, no quoting)
#qtversion mkspec path
4.7<SP>win32-g++<SP>C:\Tools\Squish_MinGW
4.7<SP>win32-msvc2008<SP>C:\Tools\Squish_MSVC9
4.7<SP>win32-msvc2010<SP>C:\Tools\Squish_MSVC10
4.8<SP>win32-g++<SP>C:\Tools\Squish_MinGW
4.8<SP>win32-msvc2008<SP>C:\Tools\Squish_MSVC9
4.8<SP>win32-msvc2010<SP>C:\Tools\Squish_MSVC10
Example 2: (using mixed whitespaces, some quoting)
#qtversion<TAB>mkspec<TAB><TAB><SP>path
"4.7"<SP><TAB>win32-g++<TAB><TAB>'C:\Tools\Squish_MinGW'
'4.7'<SP><TAB>'win32-msvc2008'<TAB>"C:\Tools\Squish_MSVC9"
4.7<SP><SP><TAB>win32-msvc2010<TAB>C:\Tools\Squish_MSVC10
"4.8"<SP><TAB>"win32-g++"<SP><SP><TAB>"C:\Tools\Squish_MinGW"
'4.8'<SP><TAB>win32-msvc2008<SP><TAB>'C:\Tools\Squish_MSVC9'
'4.8'<SP><TAB>win32-msvc2010<SP><TAB>C:\Tools\Squish_MSVC10
Explanation: <SP> = space, <TAB> = tabulator
* after creating this file put it somewhere and define environment variable QT_SQUISH_MAPFILE to point directly to the file
* definition of this variable should be done BEFORE the test is started and can be done in various ways:
* declare this variable as a system environment variable (how to do this depends on the OS you're using) [recommended way]
* add this variable to the envvar file inside the directory holding the Squish test suites [please don't do this when pushing envvar back to git]
* you can also modify the os.environ dict inside the test script(s) but this has to be done, before the test tries to read the variable [best place would be right before/after the call to startApplication()]
Hint: You can also use the provided tsv file as a template. Simply remove lines you're not needing and adjust the path entries to point to the correct paths on your system and you should be fine.
Attention! The format of the file might slightly change as soon also Debug builds will be easily testable (and maybe again for 64bit builds)
Preparation of the SQUISH directories
-------------------------------------
To make the hook-into sub-process really work you have to provide a modified Squish.
Steps to set up the Squish directories on Windows:
* get the Squish version you need from froglogic.com
* extract the archive to place of your choice
* go to the bin directory of Squish and remove the following dll's:
* Qt3Support.dll
* QtCore4.dll
* QtGui4.dll
* QtNetwork4.dll
* QtSql4.dll
* QtXml4.dll
You can additionally remove the complete ide folder as well as squishclassicide.exe and squishide.exe (to safe disk space).

View File

@@ -22,6 +22,7 @@
:Qt Creator.QtCreator.MenuBar_QMenuBar {name='QtCreator.MenuBar' type='QMenuBar' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator.ReRun_QToolButton {toolTip='Re-run this run-configuration' type='QToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator.Stop_QToolButton {text='Stop' type='QToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator.scrollArea_QScrollArea {name='scrollArea' type='QScrollArea' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator_Core::Internal::MainWindow {type='Core::Internal::MainWindow' visible='1' windowTitle?='*Qt Creator'}
:Qt Creator_Core::Internal::OutputPaneToggleButton {occurrence='3' type='Core::Internal::OutputPaneToggleButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator_CppEditor::Internal::CPPEditorWidget {type='CppEditor::Internal::CPPEditorWidget' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
@@ -51,4 +52,6 @@
:scrollArea.Qt Version:_QComboBox {aboveWidget=':scrollArea.Use Shadow Building_QCheckBox' container=':Qt Gui Application.scrollArea_QScrollArea' leftWidget=':scrollArea.Qt Version:_QLabel' type='QComboBox' unnamed='1' visible='1'}
:scrollArea.Qt Version:_QLabel {container=':Qt Gui Application.scrollArea_QScrollArea' text='Qt Version:' type='QLabel' unnamed='1' visible='1'}
:scrollArea.Use Shadow Building_QCheckBox {container=':Qt Gui Application.scrollArea_QScrollArea' text='Use Shadow Building' type='QCheckBox' unnamed='1' visible='1'}
:scrollArea.qtVersionComboBox_QComboBox {container=':Qt Creator.scrollArea_QScrollArea' name='qtVersionComboBox' type='QComboBox' visible='1'}
:scrollArea_QTableView {container=':Qt Creator.scrollArea_QScrollArea' type='QTableView' unnamed='1' visible='1'}
:sourceFileLineEdit_Utils::FileNameValidatingLineEdit {buddy=':Qt Gui Application.Source file:_QLabel' name='sourceFileLineEdit' type='Utils::FileNameValidatingLineEdit' visible='1'}

View File

@@ -0,0 +1,273 @@
import re
# flag that caches the information whether Windows firewall is running or not
fireWallState = None
# this function modifies all necessary run settings to make it possible to hook into
# the application compiled by Creator
def modifyRunSettingsForHookInto(projectName, port):
prepareBuildSettings(1, 0)
# this uses the defaultQtVersion currently
switchViewTo(ViewConstants.PROJECTS)
switchToBuildOrRunSettingsFor(1, 0, ProjectSettings.BUILD)
qtVersionTT = str(waitForObject("{type='QComboBox' name='qtVersionComboBox' visible='1'}").toolTip)
mkspec = __getMkspec__(qtVersionTT)
qmakeVersion = __getQMakeVersion__(qtVersionTT)
qmakeLibPath = __getQMakeLibPath__(qtVersionTT)
qmakeBinPath = __getQMakeBinPath__(qtVersionTT)
switchToBuildOrRunSettingsFor(1, 0, ProjectSettings.RUN)
result = __configureCustomExecutable__(projectName, port, mkspec, qmakeVersion)
if result:
clickButton(waitForObject("{container=':Qt Creator.scrollArea_QScrollArea' text='Details' "
"type='Utils::DetailsButton' unnamed='1' visible='1' "
"leftWidget={type='QLabel' text='Using <b>Build Environment</b>' unnamed='1' visible='1'}}"))
envVarsTableView = waitForObject("{type='QTableView' visible='1' unnamed='1'}")
model = envVarsTableView.model()
for row in range(model.rowCount()):
# get var name
index = model.index(row, 0)
envVarsTableView.scrollTo(index)
varName = str(model.data(index).toString())
# if its a special SQUISH var simply unset it
if varName == "PATH":
currentItem = __doubleClickQTableView__(row, 1)
test.log("replacing PATH with '%s'" % qmakeBinPath)
replaceEditorContent(currentItem, qmakeBinPath)
elif varName.find("SQUISH") == 0:
if varName == "SQUISH_LIBQTDIR":
currentItem = __doubleClickQTableView__(row, 1)
if platform.system() in ('Microsoft', 'Windows'):
replacement = qmakeBinPath
else:
replacement = qmakeLibPath
test.log("Changing SQUISH_LIBQTDIR",
"Replacing '%s' with '%s'" % (currentItem.text, replacement))
replaceEditorContent(currentItem, replacement)
else:
mouseClick(waitForObject("{container=':scrollArea_QTableView' "
"type='QModelIndex' row='%d' column='1'}" % row), 5, 5, 0, Qt.LeftButton)
clickButton(waitForObject("{type='QPushButton' text='Unset' unnamed='1' visible='1'}"))
#test.log("Unsetting %s for run" % varName)
switchViewTo(ViewConstants.EDIT)
return result
# helper that double clicks the table view at specified row and column
# returns the QExpandingLineEdit (the editable table cell)
def __doubleClickQTableView__(row, column):
doubleClick(waitForObject("{container=':scrollArea_QTableView' "
"type='QModelIndex' row='%d' column='%d'}" % (row, column)), 5, 5, 0, Qt.LeftButton)
return waitForObject("{type='QExpandingLineEdit' visible='1' unnamed='1'}")
# this function configures the custom executable onto the run settings page (using startaut from Squish)
def __configureCustomExecutable__(projectName, port, mkspec, qmakeVersion):
startAUT = getSquishPath(mkspec, qmakeVersion)
if startAUT == None:
test.warning("Something went wrong determining the right Squish for %s / %s combination - "
"using fallback without hooking into subprocess." % (qmakeVersion, mkspec))
return False
else:
startAUT = os.path.abspath(startAUT + "/bin/startaut")
if platform.system() in ('Microsoft', 'Windows'):
startAUT += ".exe"
if not os.path.exists(startAUT):
test.warning("Configured Squish directory seems to be missing - using fallback without hooking into subprocess.",
"Failed to find '%s'" % startAUT)
return False
clickButton("{container=':Qt Creator.scrollArea_QScrollArea' occurrence='2' text='Add' type='QPushButton' unnamed='1' visible='1'}")
activateItem(waitForObject("{type='QMenu' visible='1' unnamed='1'}"), "Custom Executable")
exePathChooser = waitForObject("{buddy={container=':Qt Creator.scrollArea_QScrollArea' text='Executable:' type='QLabel'} "
"type='Utils::PathChooser' unnamed='1' visible='1'}")
exeLineEd = getChildByClass(exePathChooser, "Utils::BaseValidatingLineEdit")
argLineEd = waitForObject("{buddy={container={type='QScrollArea' name='scrollArea'} "
"type='QLabel' text='Arguments:' visible='1'} type='QLineEdit' "
"unnamed='1' visible='1'}")
wdPathChooser = waitForObject("{buddy={container=':Qt Creator.scrollArea_QScrollArea' text='Working directory:' type='QLabel'} "
"type='Utils::PathChooser' unnamed='1' visible='1'}")
replaceEditorContent(exeLineEd, startAUT)
# the following is currently only configured for release builds (will be enhanced later)
if platform.system() in ('Microsoft', 'Windows'):
debOrRel = "release" + os.sep
else:
debOrRel = ""
replaceEditorContent(argLineEd, "--verbose --port=%d %s%s" % (port, debOrRel, projectName))
return True
# function that retrieves a specific child object by its class
# this is sometimes the best way to avoid using waitForObject() on objects that
# occur more than once - but could easily be found by using a compound object
# (e.g. search for Utils::PathChooser instead of Utils::BaseValidatingLineEdit and get the child)
def getChildByClass(parent, classToSearchFor, occurence=1):
counter = 0
for child in object.children(parent):
if className(child) == classToSearchFor:
counter = counter + 1
if counter == occurence:
return child
return None
# helper that tries to get the mkspec entry of the QtVersion ToolTip
def __getMkspec__(qtToolTip):
return ___searchInsideQtVersionToolTip___(qtToolTip, "mkspec:")
# helper that tries to get the qmake version entry of the QtVersion ToolTip
def __getQMakeVersion__(qtToolTip):
return ___searchInsideQtVersionToolTip___(qtToolTip, "Version:")
# helper that tries to get the path of the qmake libraries of the QtVersion ToolTip
def __getQMakeLibPath__(qtToolTip):
qmake = ___searchInsideQtVersionToolTip___(qtToolTip, "qmake:")
result = getOutputFromCmdline("%s -v" % qmake)
for line in result.splitlines():
if "Using Qt version" in line:
return line.rsplit(" ", 1)[1]
# helper that tries to get the path of qmake of the QtVersion ToolTip
def __getQMakeBinPath__(qtToolTip):
qmake = ___searchInsideQtVersionToolTip___(qtToolTip, "qmake:")
endIndex = qmake.find("/qmake")
return qmake[:endIndex]
# helper that does the work for __getMkspec__() and __getQMakeVersion__()
def ___searchInsideQtVersionToolTip___(qtToolTip, what):
result = None
tmp = qtToolTip.split("<td>")
for i in range(len(tmp)):
if i % 2 == 0:
continue
if what in tmp[i]:
result = tmp[i + 1].split("</td>", 1)[0]
break
return result
# get the Squish path that is needed to successfully hook into the compiled app
def getSquishPath(mkspec, qmakev):
qmakev = ".".join(qmakev.split(".")[0:2])
path = None
mapfile = os.environ.get("QT_SQUISH_MAPFILE")
if mapfile and os.path.isfile(mapfile):
file = codecs.open(mapfile, "r", "utf-8")
pattern = re.compile("\s+")
for line in file:
if line[0] == "#":
continue
tmp = pattern.split(line, 2)
if tmp[0].strip("'\"") == qmakev and tmp[1].strip("'\"") == mkspec:
path = os.path.expanduser(tmp[2].strip().strip("'\""))
break
file.close()
else:
if not mapfile:
test.warning("Environment variable QT_SQUISH_MAPFILE isn't set. Using fallback test data.",
"See the README file how to use it.")
else:
test.warning("Environment variable QT_SQUISH_MAPFILE isn't set correctly or map file does not exist. Using fallback test data.",
"See the README file how to use it.")
# try the test data fallback
mapData = testData.dataset(os.getcwd() + "/../../shared_data/qt_squish_mapping.tsv")
for row, record in enumerate(mapData):
if testData.field(record, "qtversion") == qmakev and testData.field(record, "mkspec") == mkspec:
path = os.path.expanduser(testData.field(record, "path"))
break
return path
# function to add a program to allow communication through the win firewall
# param workingDir this directory is the parent of the project folder
# param projectName this is the name of the project (the folder inside workingDir as well as the name for the executable)
# param isReleaseBuild should currently always be set to True (will later add debug build testing)
def allowAppThroughWinFW(workingDir, projectName, isReleaseBuild=True):
if not __isWinFirewallRunning__():
return
# WinFirewall seems to run - hopefully no other
result = __configureFW__(projectName, isReleaseBuild)
if result == 0:
test.log("Added %s to firewall" % projectName)
else:
test.fatal("Could not add %s as allowed program to win firewall" % projectName)
# function to delete a (former added) program from the win firewall
# param workingDir this directory is the parent of the project folder
# param projectName this is the name of the project (the folder inside workingDir as well as the name for the executable)
# param isReleaseBuild should currently always be set to True (will later add debug build testing)
def deleteAppFromWinFW(workingDir, projectName, isReleaseBuild=True):
if not __isWinFirewallRunning__():
return
# WinFirewall seems to run - hopefully no other
result = __configureFW__(projectName, isReleaseBuild, False)
if result == 0:
test.log("Deleted %s from firewall" % projectName)
else:
test.fatal("Could not delete %s as allowed program from win firewall" % (mode, projectName))
# helper that can modify the win firewall to allow a program to communicate through it or delete it
# param addToFW defines whether to add (True) or delete (False) this programm to/from the firewall
def __configureFW__(projectName, isReleaseBuild, addToFW=True):
if isReleaseBuild:
path = "%s%s%s%srelease%s%s" % (workingDir, os.sep, projectName, os.sep, os.sep, projectName)
else:
path = "%s%s%s%sdebug%s%s" % (workingDir, os.sep, projectName, os.sep, os.sep, projectName)
if addToFW:
mode = "add"
enable = "ENABLE"
else:
mode = "delete"
enable = ""
return subprocess.call('netsh firewall %s allowedprogram "%s.exe" %s %s' % (mode, path, projectName, enable))
# helper to check whether win firewall is running or not
# this doesn't check for other firewalls!
def __isWinFirewallRunning__():
global fireWallState
if fireWallState != None:
return fireWallState
if not platform.system() in ('Microsoft' 'Windows'):
fireWallState = False
return False
result = getOutputFromCmdline("netsh firewall show state")
for line in result.splitlines():
if "Operational mode" in line:
fireWallState = not "Disable" in line
return fireWallState
return None
# this function adds the given executable as an attachable AUT
# Bad: executable/port could be empty strings - you should be aware of this
def addExecutableAsAttachableAUT(executable, port, host=None):
if not __checkParamsForAttachableAUT__(executable, port):
return False
if host == None:
host = "localhost"
squishSrv = __getSquishServer__()
if (squishSrv == None):
return False
result = subprocess.call('%s --config addAttachableAUT "%s" %s:%s' % (squishSrv, executable, host, port), shell=True)
if result == 0:
test.passes("Added %s as attachable AUT" % executable)
else:
test.fail("Failed to add %s as attachable AUT" % executable)
return result == 0
# this function removes the given executable as an attachable AUT
# Bad: executable/port could be empty strings - you should be aware of this
def removeExecutableAsAttachableAUT(executable, port, host=None):
if not __checkParamsForAttachableAUT__(executable, port):
return False
if host == None:
host = "localhost"
squishSrv = __getSquishServer__()
if (squishSrv == None):
return False
result = subprocess.call('%s --config removeAttachableAUT "%s" %s:%s' % (squishSrv, executable, host, port), shell=True)
if result == 0:
test.passes("Removed %s as attachable AUT" % executable)
else:
test.fail("Failed to remove %s as attachable AUT" % executable)
return result == 0
def __checkParamsForAttachableAUT__(executable, port):
return port != None and executable != None
def __getSquishServer__():
squishSrv = currentApplicationContext().environmentVariable("SQUISH_PREFIX")
if (squishSrv == ""):
test.fatal("SQUISH_PREFIX isn't set - leaving test")
return None
return os.path.abspath(squishSrv + "/bin/squishserver")

View File

@@ -77,7 +77,7 @@ def __createProjectSetNameAndPath__(path, projectName = None, checks = True):
# make sure this is not set as default location
ensureChecked("{type='QCheckBox' name='projectsDirectoryCheckBox' visible='1'}", False)
clickButton(waitForObject(":Next_QPushButton"))
return projectName
return str(projectName)
def __createProjectHandleLastPage__(expectedFiles = None):
if expectedFiles != None:
@@ -156,6 +156,7 @@ def createNewQtQuickApplication(workingDir, projectName = None, templateFile = N
snooze(1)
clickButton(nextButton)
__createProjectHandleLastPage__()
return projectName
def createNewQtQuickUI(workingDir):
__createProjectSelectType__("Qt Quick Project", "Qt Quick UI")

View File

@@ -0,0 +1,128 @@
import re;
# this class holds some constants for easier usage inside the Projects view
class ProjectSettings:
BUILD = 1
RUN = 2
# this class defines some constants for the views of the creator's MainWindow
class ViewConstants:
WELCOME = 0
EDIT = 1
DESIGN = 2
DEBUG = 3
PROJECTS = 4
ANALYZE = 5
HELP = 6
# always adjust the following to the highest value of the available ViewConstants when adding new
LAST_AVAILABLE = HELP
# this function returns a regex of the tooltip of the FancyTabBar elements
# this is needed because the keyboard shortcut is OS specific
# if the provided argument does not match any of the ViewConstants it returns None
@staticmethod
def getToolTipForViewTab(viewTab):
if viewTab == ViewConstants.WELCOME:
return ur'Switch to <b>Welcome</b> mode <span style="color: gray; font-size: small">(Ctrl\+|\u2303)1</span>'
elif viewTab == ViewConstants.EDIT:
return ur'Switch to <b>Edit</b> mode <span style="color: gray; font-size: small">(Ctrl\+|\u2303)2</span>'
elif viewTab == ViewConstants.DESIGN:
return ur'Switch to <b>Design</b> mode <span style="color: gray; font-size: small">(Ctrl\+|\u2303)3</span>'
elif viewTab == ViewConstants.DEBUG:
return ur'Switch to <b>Debug</b> mode <span style="color: gray; font-size: small">(Ctrl\+|\u2303)4</span>'
elif viewTab == ViewConstants.PROJECTS:
return ur'Switch to <b>Projects</b> mode <span style="color: gray; font-size: small">(Ctrl\+|\u2303)5</span>'
elif viewTab == ViewConstants.ANALYZE:
return ur'Switch to <b>Analyze</b> mode <span style="color: gray; font-size: small">(Ctrl\+|\u2303)6</span>'
elif viewTab == ViewConstants.HELP:
return ur'Switch to <b>Help</b> mode <span style="color: gray; font-size: small">(Ctrl\+|\u2303)7</span>'
else:
return None
# this function switches the MainWindow of creator to the specified view
def switchViewTo(view):
if view < ViewConstants.WELCOME or view > ViewConstants.LAST_AVAILABLE:
return
tabBar = waitForObject("{type='Core::Internal::FancyTabBar' unnamed='1' visible='1' "
"window=':Qt Creator_Core::Internal::MainWindow'}")
mouseMove(tabBar, 10, 10 + 52 * view)
snooze(2)
text = str(QToolTip.text())
pattern = ViewConstants.getToolTipForViewTab(view)
if re.match(pattern, unicode(text), re.UNICODE):
test.passes("ToolTip verified")
else:
test.warning("ToolTip does not match", "Expected pattern: %s\nGot: %s" % (pattern, text))
mouseClick(waitForObject("{type='Core::Internal::FancyTabBar' unnamed='1' visible='1' "
"window=':Qt Creator_Core::Internal::MainWindow'}"), 5, 5 + 52 * view, 0, Qt.LeftButton)
# this function is used to make sure that simple building prerequisites are met
# param targetCount specifies how many build targets had been selected (it's important that this one is correct)
# param currentTarget specifies which target should be selected for the next build (zero based index)
# param setReleaseBuild defines whether the current target(s) will be set to a Release or a Debug build
# param disableShadowBuild defines whether to disable shadow build or leave it unchanged (no matter what is defined)
# param setForAll defines whether to set Release or Debug and ShadowBuild option for all targets or only for the currentTarget
def prepareBuildSettings(targetCount, currentTarget, setReleaseBuild=True, disableShadowBuild=True, setForAll=True):
switchViewTo(ViewConstants.PROJECTS)
success = True
for current in range(targetCount):
if setForAll or current == currentTarget:
switchToBuildOrRunSettingsFor(targetCount, current, ProjectSettings.BUILD)
qtCombo = waitForObject(":scrollArea.qtVersionComboBox_QComboBox")
chooseThis = None
wait = False
try:
if qtCombo.currentText != defaultQtVersion:
selectFromCombo(qtCombo, defaultQtVersion.replace(".", "\\."))
if setReleaseBuild:
chooseThis = "%s Release" % defaultQtVersion
else:
chooseThis = "%s Debug" % defaultQtVersion
editBuildCfg = waitForObject("{container={type='QScrollArea' name='scrollArea'} "
"leftWidget={container={type='QScrollArea' name='scrollArea'} "
"text='Edit build configuration:' type='QLabel'}"
"unnamed='1' type='QComboBox' visible='1'}", 20000)
if editBuildCfg.currentText != chooseThis:
wait = True
clickItem(editBuildCfg, chooseThis.replace(".", "\\."), 5, 5, 0, Qt.LeftButton)
else:
wait = False
except:
if current == currentTarget:
success = False
if wait and chooseThis != None:
waitFor("editBuildCfg.currentText==chooseThis")
ensureChecked("{name='shadowBuildCheckBox' type='QCheckBox' visible='1'}", not disableShadowBuild)
# get back to the current target
if currentTarget < 0 or currentTarget >= targetCount:
test.warning("Parameter currentTarget is out of range - will be ignored this time!")
else:
switchToBuildOrRunSettingsFor(targetCount, currentTarget, ProjectSettings.BUILD)
switchViewTo(ViewConstants.EDIT)
return success
# this function switches to the build or the run settings (inside the Projects view)
# if you haven't already switched to the Projects view this will fail and return False
# param currentTarget specifies the target for which to switch into the specified settings (zero based index)
# param targetCount specifies the number of targets currently defined (must be correct!)
# param projectSettings specifies where to switch to (must be one of ProjectSettings.BUILD or ProjectSettings.RUN)
def switchToBuildOrRunSettingsFor(targetCount, currentTarget, projectSettings):
try:
targetSel = waitForObject("{type='ProjectExplorer::Internal::TargetSelector' unnamed='1' "
"visible='1' window=':Qt Creator_Core::Internal::MainWindow'}")
except LookupError:
test.fatal("Wrong (time of) call - must be already at Projects view")
return False
ADD_BUTTON_WIDTH = 27 # bad... (taken from source)
selectorWidth = (targetSel.width - 3 - 2 * (ADD_BUTTON_WIDTH + 1)) / targetCount - 1
yToClick = targetSel.height * 3 / 5 + 5
if projectSettings == ProjectSettings.RUN:
xToClick = ADD_BUTTON_WIDTH + (selectorWidth + 1) * currentTarget - 2 + selectorWidth / 2 + 5
elif projectSettings == ProjectSettings.BUILD:
xToClick = ADD_BUTTON_WIDTH + (selectorWidth + 1) * currentTarget - 2 + selectorWidth / 2 - 5
else:
test.fatal("Don't know what you're trying to switch to")
return False
mouseClick(targetSel, xToClick, yToClick, 0, Qt.LeftButton)
return True

View File

@@ -18,6 +18,8 @@ source("../../shared/build_utils.py")
source("../../shared/qtquick.py")
source("../../shared/project.py")
source("../../shared/editor_utils.py")
source("../../shared/project_explorer.py")
source("../../shared/hook_utils.py")
def waitForCleanShutdown(timeOut=10):
appCtxt = currentApplicationContext()

View File

@@ -83,7 +83,7 @@ def __chooseTargets__(targets=QtQuickConstants.Targets.DESKTOP):
if mustCheck:
test.fail("Failed to check target '%s'" % QtQuickConstants.getStringForTarget(current))
def runAndCloseApp():
def runAndCloseApp(withHookInto=False, executable=None, port=None):
global processStarted, processExited
processStarted = processExited = False
installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processStarted()", "__handleProcessStarted__")
@@ -101,13 +101,32 @@ def runAndCloseApp():
test.fatal("Couldn't start application - leaving test")
invokeMenuItem("File", "Exit")
return False
# the following is currently a work-around for not using hooking into subprocesses
if withHookInto and not executable in ("", None):
__closeSubprocessByHookingIntoQmlApplicationViewer__(executable, port)
else:
__closeSubprocessByPushingStop__()
return True
def __closeSubprocessByPushingStop__():
ensureChecked(":Qt Creator_Core::Internal::OutputPaneToggleButton")
playButton = verifyEnabled(":Qt Creator.ReRun_QToolButton", False)
stopButton = verifyEnabled(":Qt Creator.Stop_QToolButton")
clickButton(stopButton)
test.verify(playButton.enabled)
test.compare(stopButton.enabled, False)
def __closeSubprocessByHookingIntoQmlApplicationViewer__(executable, port):
global processExited
ensureChecked(":Qt Creator_Core::Internal::OutputPaneToggleButton")
output = waitForObject("{type='Core::OutputWindow' visible='1' windowTitle='Application Output Window'}", 20000)
if port == None:
test.warning("I need a port number or attaching might fail.")
else:
waitFor("'Listening on port %d for incoming connectionsdone' in str(output.plainText)" % port, 5000)
attachToApplication(executable)
sendEvent("QCloseEvent", "{type='QmlApplicationViewer' unnamed='1' visible='1'}")
waitFor("processExited==True", 10000)
setApplicationContext(applicationContext("qtcreator"))
return True
def runAndCloseQtQuickUI():

View File

@@ -24,16 +24,36 @@ def ensureChecked(objectName, shouldBeChecked = True):
object = waitForObject(objectName, 20000)
if object.checked ^ shouldBeChecked:
clickButton(object)
if shouldBeChecked:
state = "checked"
else:
state = "unchecked"
test.log("New state for QCheckBox: %s" % state)
test.verify(object.checked == shouldBeChecked)
return object
def verifyEnabled(objectName, expectedState = True):
waitFor("object.exists('" + objectName + "')", 20000)
object = findObject(objectName)
test.compare(object.enabled, expectedState)
return object
# verify that an object is in an expected enable state. Returns the object.
# param objectSpec specifies the object to check. It can either be a string determining an object
# or the object itself. If it is an object, it must exist already.
# param expectedState is the expected enable state of the object
def verifyEnabled(objectSpec, expectedState = True):
if isinstance(objectSpec, (str, unicode)):
waitFor("object.exists('" + objectSpec + "')", 20000)
foundObject = findObject(objectSpec)
else:
foundObject = objectSpec
if objectSpec == None:
test.warning("No valid object in function verifyEnabled.")
else:
test.compare(foundObject.enabled, expectedState)
return foundObject
def selectFromCombo(objectName, itemName):
object = verifyEnabled(objectName)
# select an item from a combo box
# param objectSpec specifies the combo box. It can either be a string determining an object
# or the object itself. If it is an object, it must exist already.
# param itemName is the item to be selected in the combo box
def selectFromCombo(objectSpec, itemName):
object = verifyEnabled(objectSpec)
mouseClick(object, 5, 5, 0, Qt.LeftButton)
mouseClick(waitForObjectItem(object, itemName), 5, 5, 0, Qt.LeftButton)
@@ -151,3 +171,10 @@ def logApplicationOutput():
"window=':Qt Creator_Core::Internal::MainWindow' occurrence='3'}")
output = waitForObject("{type='Core::OutputWindow' visible='1' windowTitle='Application Output Window'}", 20000)
test.log("Application Output:\n%s" % output.plainText)
# get the output from a given cmdline call
def getOutputFromCmdline(cmdline):
versCall = subprocess.Popen(cmdline, stdout=subprocess.PIPE, shell=True)
result = versCall.communicate()[0]
versCall.stdout.close()
return result

View File

@@ -0,0 +1,13 @@
"qtversion" "mkspec" "path"
"4.7" "win32-g++" "C:\QtSDK\src\creator-test-data\Squish_MinGW"
"4.7" "win32-msvc2008" "C:\QtSDK\src\creator-test-data\Squish_MSVC9"
"4.7" "win32-msvc-2010" "C:\QtSDK\src\creator-test-data\Squish_MSVC10"
"4.7" "linux-g++" "~/QtSDK/src/creator-test-data/Squish_32"
"4.7" "linux-g++-64" "~/QtSDK/src/creator-test-data/Squish_64"
"4.7" "macx-g++" "~/QtSDK/src/creator-test-data/Squish_47x"
"4.8" "win32-g++" "C:\QtSDK\src\creator-test-data\Squish_MinGW"
"4.8" "win32-msvc2008" "C:\QtSDK\src\creator-test-data\Squish_MSVC9"
"4.8" "win32-msvc-2010" "C:\QtSDK\src\creator-test-data\Squish_MSVC10"
"4.8" "linux-g++" "~/QtSDK/src/creator-test-data/Squish_32"
"4.8" "linux-g++-64" "~/QtSDK/src/creator-test-data/Squish_64"
"4.8" "macx-g++" "~/QtSDK/src/creator-test-data/Squish_47x"
1 qtversion mkspec path
2 4.7 win32-g++ C:\QtSDK\src\creator-test-data\Squish_MinGW
3 4.7 win32-msvc2008 C:\QtSDK\src\creator-test-data\Squish_MSVC9
4 4.7 win32-msvc-2010 C:\QtSDK\src\creator-test-data\Squish_MSVC10
5 4.7 linux-g++ ~/QtSDK/src/creator-test-data/Squish_32
6 4.7 linux-g++-64 ~/QtSDK/src/creator-test-data/Squish_64
7 4.7 macx-g++ ~/QtSDK/src/creator-test-data/Squish_47x
8 4.8 win32-g++ C:\QtSDK\src\creator-test-data\Squish_MinGW
9 4.8 win32-msvc2008 C:\QtSDK\src\creator-test-data\Squish_MSVC9
10 4.8 win32-msvc-2010 C:\QtSDK\src\creator-test-data\Squish_MSVC10
11 4.8 linux-g++ ~/QtSDK/src/creator-test-data/Squish_32
12 4.8 linux-g++-64 ~/QtSDK/src/creator-test-data/Squish_64
13 4.8 macx-g++ ~/QtSDK/src/creator-test-data/Squish_47x

View File

@@ -7,25 +7,38 @@ def main():
startApplication("qtcreator" + SettingsPath)
# using a temporary directory won't mess up an eventually exisiting
workingDir = tempDir()
createNewQtQuickApplication(workingDir)
projectName = createNewQtQuickApplication(workingDir, targets = QtQuickConstants.Targets.DESKTOP)
# wait for parsing to complete
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)", 30000)
test.log("Building project")
invokeMenuItem("Build","Build All")
result = modifyRunSettingsForHookInto(projectName, 11223)
invokeMenuItem("Build", "Build All")
waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)", 300000)
if not checkCompile():
test.fatal("Compile failed")
else:
checkLastBuild()
test.log("Running project (includes build)")
if runAndCloseApp():
if result:
result = addExecutableAsAttachableAUT(projectName, 11223)
allowAppThroughWinFW(workingDir, projectName)
if result:
result = runAndCloseApp(True, projectName, 11223)
else:
result = runAndCloseApp()
removeExecutableAsAttachableAUT(projectName, 11223)
deleteAppFromWinFW(workingDir, projectName)
else:
result = runAndCloseApp()
if result:
logApplicationOutput()
invokeMenuItem("File", "Exit")
def cleanup():
global workingDir
# waiting for a clean exit - for a full-remove of the temp directory
waitForCleanShutdown()
if workingDir!=None:
if workingDir != None:
deleteDirIfExists(workingDir)