diff --git a/share/qtcreator/templates/wizards/qml-runtime/wizard.xml b/share/qtcreator/templates/wizards/qml-runtime/wizard.xml index de785e26f61..4f7576f445f 100644 --- a/share/qtcreator/templates/wizards/qml-runtime/wizard.xml +++ b/share/qtcreator/templates/wizards/qml-runtime/wizard.xml @@ -37,7 +37,7 @@ leave room for the Qt 4 target page. - Creates a plug-in for the QML runtime. + Creates a C++ plugin to extend the funtionality of the QML runtime. QML Runtime Plug-in QML Runtime Plug-in diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 737a823d378..10e85dfe246 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -2102,7 +2102,12 @@ Sollen sie überschrieben werden? Neu - + + Open Project + Projekt öffnen + + + Settings... Einstellungen... @@ -2236,7 +2241,7 @@ Sollen sie überschrieben werden? Core::Internal::OutputPaneManager - + Output Ausgaben @@ -2256,7 +2261,7 @@ Sollen sie überschrieben werden? Vorangehender Eintrag - + Maximize Output Pane Ausgabepanel maximiert darstellen @@ -2429,9 +2434,13 @@ Sollen sie überschrieben werden? Core::ModeManager - Switch to %1 mode - Gehe zu Mode '%1' + Gehe zu Mode '%1' + + + + Switch to <b>%1</b> mode + Gehe zu Mode <b>'%1'</b> @@ -7620,7 +7629,7 @@ on slow machines. In this case, the value should be increased. Git::Internal::LocalBranchModel - + <New branch> <Neuer Branch> @@ -9447,7 +9456,7 @@ on slow machines. In this case, the value should be increased. Umgebungsvariablen - + Perforce Perforce @@ -9596,7 +9605,7 @@ on slow machines. In this case, the value should be increased. - + Failed Plugins Nicht geladene Plugins (Fehlschlag beim Ladevorgang) @@ -9972,7 +9981,7 @@ Fehler: %2 ProjectExplorer::Internal::AllProjectsFind - + All Projects Alle Projekte @@ -10033,7 +10042,22 @@ Fehler: %2 ProjectExplorer::Internal::BuildStepsPage - + + Move Up + Nach oben + + + + Move Down + Nach unten + + + + Remove Item + Element löschen + + + Removing Step failed Das Entfernen des Build-Schritts schlug fehl @@ -10058,7 +10082,7 @@ Fehler: %2 Schritt zur Bereinigung hinzufügen - + Build Steps Erstellungsschritte @@ -10116,7 +10140,7 @@ Fehler: %2 ProjectExplorer::Internal::CurrentProjectFind - + Current Project Aktuelles Projekt @@ -10490,7 +10514,7 @@ No project selected Sitzungen... - + %1 (last session) %1 (zuletzt benutzt) @@ -10500,12 +10524,11 @@ No project selected %1 (aktuelle Sitzung) - Open Project - Projekt öffnen + Projekt öffnen - + New Project Neues Projekt @@ -11646,7 +11669,7 @@ unter Versionsverwaltung (%2) gestellt werden? Schon gewusst? - + The Qt Creator User Interface Die Benutzeroberfläche von Qt Creator @@ -11661,13 +11684,13 @@ unter Versionsverwaltung (%2) gestellt werden? Erstellen einer Qt-Quick-Anwendung - - + + Choose an example... Beispiel wählen... - + Copy Project to writable Location? Soll das Projekt in ein schreibbares Verzeichnis kopiert werden? @@ -11820,6 +11843,11 @@ unter Versionsverwaltung (%2) gestellt werden? Explore Qt Quick Examples Qt Quick-Beispiele öffnen + + + Open Project... + Projekt öffnen... + Qt4ProjectManager::Internal::GuiAppWizard @@ -11948,7 +11976,7 @@ unter Versionsverwaltung (%2) gestellt werden? Qt4ProjectManager::Internal::QMakeStepFactory - + qmake qmake @@ -12301,6 +12329,12 @@ unter Versionsverwaltung (%2) gestellt werden? Qt Version is meant for Maemo Maemo + + + Qt Simulator + Qt Version is meant for Qt Simulator + Qt Simulator + unkown @@ -12769,13 +12803,13 @@ Installiere Anwendung auf '%2'... Qt4ProjectManager::QMakeStep - + qmake QMakeStep display name. - + <font color="#0000ff">Configuration is faulty, please check the Build Issues view for details.</font> <font color="#0000ff">Die Konfiguration ist fehlerhaft. Details befinden sich in der Ansicht "Build-Probleme".</font> @@ -12814,7 +12848,7 @@ Installiere Anwendung auf '%2'... Qt4ProjectManager::QtVersionManager - + <not found> <nicht gefunden> @@ -14034,7 +14068,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich TextEditor::BaseTextEditorEditable - + Line: %1, Col: %2 Zeile: %1, Spalte: %2 @@ -14584,12 +14618,12 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Go to Block Start With Selection - Zum Blockanfang mit Auswahl gehen + Bis Blockanfang markieren Go to Block End With Selection - Zum Blockende mit Auswahl gehen + Bis Blockende markieren @@ -14747,7 +14781,87 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Ctrl+J - + + Goto Line Start + Zeilenanfang + + + + Goto Line End + Zeilenende + + + + Goto Next Line + Nächste Zeile + + + + Goto Previous Line + Vorangehende Zeile + + + + Goto Previous Character + Vorangehendes Zeichen + + + + Goto Next Character + Nächstes Zeichen + + + + Goto Previous Word + Vorangehendes Wort + + + + Goto Next Word + Nächstes Wort + + + + Goto Line Start With Selection + Bis Zeilenanfang markieren + + + + Goto Line End With Selection + Bis Zeilenende markieren + + + + Goto Next Line With Selection + Bis zur nächsten Zeile markieren + + + + Goto Previous Line With Selection + Bis zur vorangehenden Zeile markieren + + + + Goto Previous Character With Selection + Vorangehendes Zeichen markieren + + + + Goto Next Character With Selection + Nächstes Zeichen markieren + + + + Goto Previous Word With Selection + Vorangehendes Wort markieren + + + + Goto Next Word With Selection + Nächstes Wort markieren + + + <line number> <Zeilennummer> @@ -15108,7 +15222,7 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Utils::DetailsButton - + Details Details @@ -15809,9 +15923,8 @@ p, li { white-space: pre-wrap; } <b>Qt Apps</b><br /><font color='gray'>Finden Sie freie, Qt-basierte Applikationen</font> - + http://labs.trolltech.com/blogs/feed - Add localized feed here only if one exists @@ -17390,7 +17503,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen. CMakeProjectManager::Internal::CMakeTarget - + Desktop CMake Default target display name @@ -18382,7 +18495,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Es ist kein Ziel festgelegt. - + Qt Creator Qt Creator @@ -18473,7 +18586,13 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Maemo - + + Qt Simulator + Qt4 Simulator target display name + Qt Simulator + + + <b>Device:</b> Not connected <b>Gerät:</b> Nicht angeschlossen @@ -18505,7 +18624,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.-Neues Formular- - + Cannot save to file "%1": permission denied. Die Datei "%1" konnte wegen nicht ausreichender Zugriffsrechte nicht geschrieben werden. @@ -18550,7 +18669,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Kein QmlDesigner-Plugin. - + Failed to create instance of file '%1': %2 Es konnte keine Instanz der Datei '%1' erzeugt werden: %2 @@ -18712,7 +18831,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen. QmlDesigner::RewriterView - + Error parsing Fehler beim Parsen @@ -19200,7 +19319,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen. QtVersion - + No qmake path set Es ist keine qmake-Pfad gesetzt @@ -19220,7 +19339,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Der Pfad zu den ausführbaren Dateien der Qt-Installation konnte nicht bestimmt werden, möglicherweise ist der Pfad zu qmake falsch? - + The Qt Version has no toolchain. Dieser Qt-Version ist keine Toolchain zugeordnet. @@ -19262,7 +19381,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen. TextEditor - + Text Editor Text Editor @@ -19318,7 +19437,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen. trk::Launcher - + Cannot open remote file '%1': %2 Die Datei '%1' auf dem Gerät konnte nicht geöffnet werden: %2 @@ -19892,7 +20011,7 @@ Please check your project settings. Qt4ProjectManager::Internal::Qt4TargetFactory - + Debug Debug @@ -20313,7 +20432,7 @@ Please check your project settings. Core::CommandMappings - + Command Kommando @@ -20434,7 +20553,7 @@ Please check your project settings. QmlDesigner::Internal::SubComponentManagerPrivate - + QML Components QML-Komponenten @@ -20735,7 +20854,7 @@ Haben Sie Qemu gestartet? Qt4ProjectManager::Internal::S60CreatePackageStepConfigWidget - + self-signed Selbstsigniert @@ -21319,14 +21438,22 @@ Haben Sie Qemu gestartet? Designer::Internal::FormEditorFactory - This file can only be edited in Design Mode. - Datei kann nur im Entwurfsmodus bearbeitet werden. + Datei kann nur im Entwurfsmodus bearbeitet werden. + + + Open Designer + Designer öffnen + + + + This file can only be edited in <b>Design</b> mode. + Datei kann nur im <b>Entwurfsmodus</b> bearbeitet werden. - Open Designer - Designer öffnen + Switch mode + Modus umschalten @@ -21410,7 +21537,7 @@ Haben Sie Qemu gestartet? Status - + Qt Creator can set up the following targets for project <b>%1</b>: %1: Project name Qt Creator kann für das Projekt <b>%1</b> die folgenden Ziele anlegen: @@ -21444,7 +21571,7 @@ Haben Sie Qemu gestartet? <b>Warnung:</b> - + Import Is this an import of an existing build or a new one? Import @@ -21943,7 +22070,7 @@ Namen <E-Mail> Alias <E-Mail? QmlDesigner::Internal::ModelPrivate - + invalid type ungültiger Typ @@ -22428,7 +22555,7 @@ Namen <E-Mail> Alias <E-Mail? Qt4ProjectManager::QtVersion - + The Qt version is invalid: %1 %1: Reason for being invalid Ungültige Qt-Version: %1 @@ -22558,7 +22685,7 @@ Namen <E-Mail> Alias <E-Mail? InvalidIdException - + Ids have to be unique: Ids müssen eindeutig sein: @@ -22579,7 +22706,7 @@ Ids müssen mit einem Kleinbuchstaben beginnen und dürfen nur alphanumerische Z QmlDesigner::InvalidArgumentException - + Failed to create item of type %1 Es konnte kein Element des Typs %1 erzeugt werden diff --git a/share/qtcreator/translations/qtcreator_pl.ts b/share/qtcreator/translations/qtcreator_pl.ts index b6126535e28..3b9405ef944 100644 --- a/share/qtcreator/translations/qtcreator_pl.ts +++ b/share/qtcreator/translations/qtcreator_pl.ts @@ -128,7 +128,7 @@ Load - + Załadowana @@ -911,7 +911,7 @@ p, li { white-space: pre-wrap; } Timeout: - + Czas oczekiwania: @@ -1262,17 +1262,20 @@ p, li { white-space: pre-wrap; } to extract full path information for all source files from gdb. This is a slow process but enables setting breakpoints in files with the same file name in different directories. - + Kiedy ta opcja jest zaznaczona, debugger próbuje uzyskać informacje od gdb +o pełnych ścieżkach dla wszystkich plików źródłowych. Jest to wolny proces +ale umożliwia ustawianie pułapek w plikach o tych samych nazwach +leżących w różnych katalogach. Use full path information to set breakpoints - + Używaj informacji o pełnych ścieżkach do ustawiania pułapek Gdb timeout: - + Czas oczekiwania: @@ -1281,7 +1284,11 @@ it terminates non-responsive gdb process. The default value of 20 seconds should be sufficient for most applications, but there are situations when loading big libraries or listing source files takes much longer than that on slow machines. In this case, the value should be increased. - + Jest to czas wyrażony w sekundach przez który Qt Creator będzie oczekiwał na odpowiedź +od procesu gdb zanim go zakończy. Domyślna wartość 20 sekund powinna być +wystarczająca dla większości aplikacji, lecz mogą zdarzyć się sytuacje że ładowanie +bibliotek o dużych rozmiarach lub wyświetlanie plików źródłowych zajmie dużo więcej +czasu na powolnych maszynach. W takich przypadkach wartość ta powinna zostać zwiększona. @@ -1297,7 +1304,7 @@ on slow machines. In this case, the value should be increased. When this option is checked, 'Step Into' compresses several steps into one in certain situations, leading to 'less noisy' debugging. So will, e.g., the atomic reference counting code be skipped, and a single 'Step Into' for a signal emission will end up directly in the slot connected to it. - Kiedy ta opcja jest zaznaczona "Wskocz do wnętrza" kompresuje w pewnych sytuacjach kilka kroków w jeden, co prowadzi do przejrzystszego debugowania. I tak np. kod atomowego licznika referencji będzie pominięty, a pojedyńcze "Wskocz do wnętrza" dla emisji sygnału wskoczy bezpośrednio do podłączonego slotu. + Kiedy ta opcja jest zaznaczona "Wskocz do wnętrza" kompresuje w pewnych sytuacjach kilka kroków w jeden, co prowadzi do przejrzystszego debugowania. I tak np. kod atomowego licznika referencji będzie pominięty, a pojedyncze "Wskocz do wnętrza" dla emisji sygnału wskoczy bezpośrednio do podłączonego slotu. @@ -1507,7 +1514,7 @@ on slow machines. In this case, the value should be increased. Shift width: - + Szerokość przesunięcia: Smart tabulators: @@ -1530,7 +1537,7 @@ on slow machines. In this case, the value should be increased. Backspace: - + Cofnięcie: VIM's "autoindent" option @@ -2049,7 +2056,7 @@ on slow machines. In this case, the value should be increased. Timeout: - + Czas oczekiwania: @@ -2351,7 +2358,7 @@ Add, modify, and remove document filters, which determine the documentation set Timeout: - + Czas oczekiwania: @@ -2366,7 +2373,7 @@ Add, modify, and remove document filters, which determine the documentation set Log count: - + Licznik dziennika: @@ -3103,7 +3110,7 @@ Jednocześnie samoczynnie ustawia odpowiednią wersję Qt. You can switch between Qt Creator's modes using <tt>Ctrl+number</tt>:<ul><li>1 - Welcome</li><li>2 - Edit</li><li>3 - Debug</li><li>4 - Projects</li><li>5 - Help</li></ul> - Możesz przełączać tryby Qt Creator'a używając <tt>Ctrl+liczba</tt>:<ul><li>1 - Powitanie</li><li>2 - Edycja</li><li>3 - Debug</li><li>4 - Projekty</li><li>5 - Pomoc</li></ul> + Możesz przełączać tryby Qt Creator'a używając <tt>Ctrl+liczba</tt>:<ul><li>1 - Powitanie</li><li>2 - Edycja</li><li>3 - Debugowanie</li><li>4 - Projekty</li><li>5 - Pomoc</li></ul> @@ -3590,7 +3597,7 @@ p, li { white-space: pre-wrap; } Timeout: - + Czas oczekiwania: @@ -3833,7 +3840,7 @@ p, li { white-space: pre-wrap; } &Visualize whitespace - &Pokazuj białe znaki + Pokazuj &białe znaki Animate matching parentheses @@ -3875,12 +3882,12 @@ p, li { white-space: pre-wrap; } Auto-fold first &comment - + Zwijaj automatycznie początkowy &komentarz Center &cursor on scroll - + Wyśrodkowuj przy &przewijaniu @@ -3991,32 +3998,32 @@ p, li { white-space: pre-wrap; } <b>Forum Nokia</b><br /><font color='gray'>Mobile Application Support</font> - + <b>Forum Nokii</b><br /><font color='gray'>Wsparcie techniczne dla mobilnych aplikacji</font> <b>Qt LGPL Support</b><br /><font color='gray'>Buy professional Qt support</font> - + <b>Wsparcie techniczne Qt LGPL</b><br /><font color='gray'>Kup profesjonalne wsparcie techniczne Qt</font> <b>Qt Centre</b><br /><font color='gray'>Community based Qt support</font> - + <b>Qt Centre</b><br /><font color='gray'>Społeczne wsparcie techniczne Qt</font> <b>Qt Home</b><br /><font color='gray'>Qt by Nokia on the web</font> - + <b>Strona domowa Qt</b><br /><font color='gray'>Strona domowa Qt / Nokia</font> <b>Qt Git Hosting</b><br /><font color='gray'>Participate in Qt development</font> - + <b>Składnica Git dla Qt</b><br /><font color='gray'>Weź udział w rozwoju Qt</font> <b>Qt Apps</b><br /><font color='gray'>Find free Qt-based apps</font> - + <b>Aplikacje Qt</b><br /><font color='gray'>Znajdź darmowe aplikacje bazujące na Qt</font> @@ -4594,7 +4601,7 @@ Przyczyna: %3 Resolving dependencies failed because state != Read - Rozwiązanie zależności nie udało się, bo stan wtyczki jest inny niż "wczytana" + Nie udało się rozwiązać zależności ponieważ stan wtyczki jest inny niż "wczytana" @@ -4604,7 +4611,7 @@ Przyczyna: %3 Loading the library failed because state != Resolved - Ładowanie biblioteki nie powiodło się, bo stan wtyczki jest inny niż "rozwiązana" + Błąd ładowania biblioteki, stan wtyczki jest inny niż "rozwiązana" @@ -4614,7 +4621,7 @@ Przyczyna: %3 Initializing the plugin failed because state != Loaded - Zainicjowanie wtyczki nie powiodło się, bo jej stan jest inny niż "załadowana" + Błąd inicjalizacji wtyczki, jej stan jest inny niż "załadowana" @@ -4624,7 +4631,7 @@ Przyczyna: %3 Plugin initialization failed: %1 - Nie można zainicjalizować wtyczki: %1 + Błąd inicjalizacji wtyczki: %1 @@ -7556,7 +7563,7 @@ Zwróć uwagę że spowoduje to usunięcie lokalnego pliku. <html>The installed version of the <i>Debugging Tools for Windows</i> (%1) is rather old. Upgrading to version %2 is recommended for the proper display of Qt's data types.</html> - + <html>Zainstalowana wersja <i>narzędzi debugowych dla Windows</i> (%1) jest przestarzała. Zalecane jest uaktualnienie do wersji %2 w celu poprawnego wyświetlania typów danych Qt.</html> @@ -7622,7 +7629,7 @@ Zwróć uwagę że spowoduje to usunięcie lokalnego pliku. Stepping %1 - + Kroczenie %1 Running to 0x%1... @@ -7763,7 +7770,7 @@ Zwróć uwagę że spowoduje to usunięcie lokalnego pliku. The debuggee does not appear to be Qt application. - + Debugowany proces nie wygląda na aplikację Qt. @@ -7841,12 +7848,12 @@ Zwróć uwagę że spowoduje to usunięcie lokalnego pliku. Symbol Server... - + Serwer z symbolami... Adds the Microsoft symbol server providing symbols for operating system libraries.Requires specifying a local cache directory. - + Dodaje serwer z symbolami Microsoft dostarczający symboli dla bibliotek systemu operacyjnego. Wymaga podania katalogu dla lokalnego cache. @@ -8539,7 +8546,7 @@ Zwróć uwagę że spowoduje to usunięcie lokalnego pliku. Debug - Debug + Debugowanie @@ -8629,12 +8636,12 @@ Czy chcesz ją zakończyć? Detach Debugger - Odłącz debugger + Odłącz debuggera Stop Debugger/Interrupt Debugger - Zatrzymaj debugger / przerwij debugger + Zatrzymaj debuggera / przerwij debuggera @@ -8825,7 +8832,7 @@ Czy chcesz ją zakończyć? The Gdb process failed to start. Either the invoked program '%1' is missing, or you may have insufficient permissions to invoke the program. - + Nie można rozpocząć procesu Gdb. Brak programu "%1" albo brak wymaganych uprawnień aby go uruchomić. @@ -9022,12 +9029,12 @@ Zaleca się użycie gdb wersji 6.7 lub późniejszej. Run to line %1 requested... - + Zażądano wykonania do osiągnięcia linii %1... Run to function %1 requested... - + Zażądano wykonania do osiągnięcia funkcji %1... @@ -9161,7 +9168,8 @@ Zaleca się użycie gdb wersji 6.7 lub późniejszej. In order to load snapshots the debugged process needs to be stopped. Continuation will not be possible afterwards. Do you want to stop the debugged process and load the selected snapshot? - + W celu załadowania zrzutów należy zakończyć debugowany proces. Kontynuacja debugowania nie będzie wtedy możliwa. +Czy chcesz zakończyć debugowany proces i załadować wybrany zrzut? @@ -9171,7 +9179,7 @@ Do you want to stop the debugged process and load the selected snapshot? crashed - + zakończył pracę błędem @@ -9181,12 +9189,12 @@ Do you want to stop the debugged process and load the selected snapshot? Adapter start failed - + Nie można uruchomić adaptera Cannot find debugger initialization script - + Nie można odnaleźć skryptu inicjalizującego dla debuggera @@ -9314,7 +9322,7 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. There is no gdb binary available for '%1' - + Brak dostępnego pliku binarnego gdb dla "%1" @@ -9324,12 +9332,12 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. Immediate return from function requested... - + Zażądano natychmiastowego powrotu z funkcji... ATTEMPT BREAKPOINT SYNC - + PRÓBA SYNCHRONIZACJI PUŁAPEK @@ -9356,12 +9364,12 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. The debugging helper library was not found at %1. - + Nie odnaleziono biblioteki asystenta debuggera w %1. The debugger settings point to a script file at '%1' which is not accessible. If a script file is not needed, consider clearing that entry to avoid this warning. - + Ustawienia debuggera pokazują na skrypt w "%1" króry nie jest dostępny. Jeśli plik ze skryptem nie jest potrzebny rozważ usunięcie go z ustawień w celu uniknięcia tego ostrzeżenia. @@ -9385,7 +9393,7 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. Adapter crashed - + Adapter zakończył pracę błędem @@ -9425,7 +9433,7 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. The upload process failed to start. Shell missing? - + Nie można rozpocząć procesu upload. Brak powłoki? @@ -9473,7 +9481,7 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. Port specification missing. - + Nie podano portu. @@ -9483,7 +9491,7 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. Process started, PID: 0x%1, thread id: 0x%2, code segment: 0x%3, data segment: 0x%4. - + Proces uruchomiony, PID: 0x%1, identyfikator wątku: 0x%2, segment kodu: 0x%3, segment danych: 0x%4. @@ -9715,7 +9723,7 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. Invalid non-negative number - + Niepoprawna liczba naturalna @@ -9786,29 +9794,29 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. Invalid pointer-to-member-type - + Niepoprawny wskaźnik do typu składnika Invalid substitution - + Niepoprawne zastąpienie Invalid substitution: element %1 was requested, but there are only %2 - + Niepoprawne zastąpienie: zażądano elementu %1 podczas gdy wszystkich elementów jest %2 Invalid substitution: There are no elements - + Niepoprawne zastąpienie: brak elementów Invalid special-name - + Niepoprawna nazwa specjalna @@ -10372,22 +10380,22 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. Latin1 string - + Ciąg Latin1 UTF8 string - + Ciąg UTF8 UTF16 string - + Ciąg UTF16 UCS4 string - + Ciąg UCS4 @@ -10410,7 +10418,7 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. Found an outdated version of the debugging helper library (%1); version %2 is required. - + Znaleziono nieaktualną wersję biblioteki asystenta debuggera (%1); wymagana wersja: %2. @@ -10596,13 +10604,15 @@ Zaleca się użycie gdb wersji 7.1 lub późniejszej. The generated header of the form '%1' could be found. Rebuilding the project might help. - + Nie można odnaleźć wygenerowanego pliku nagłówkowego dla formularza "%1". +Spróbuj ponownie przebudować projekt. The generated header '%1' could not be found in the code model. Rebuilding the project might help. - + Nie można odnaleźć wygenerowanego pliku nagłówkowego "%1" w modelu kodu. +Spróbuj ponownie przebudować projekt. @@ -10867,7 +10877,7 @@ Rebuilding the project might help. No documents matching '%1' could be found. Rebuilding the project might help. Brak dokumentów załączających "%1". -Przebudowanie projektu może pomóc w odnalezieniu ich. +Przebudowanie projektu może pomóc w ich odnalezieniu. @@ -11545,7 +11555,7 @@ Przebudowanie projektu może pomóc w odnalezieniu ich. Unable apply patch %1 to %2: %3 - + Nie można zastosować łaty %1 do %2: %3 @@ -11654,7 +11664,7 @@ Przebudowanie projektu może pomóc w odnalezieniu ich. Git SVN Log - + Dziennik git SVN @@ -11670,7 +11680,7 @@ Przebudowanie projektu może pomóc w odnalezieniu ich. '%1' failed (exit code %2). -'%1' zakończone niepowodzeniem (kod wyjściowy %2). +'%1' zakończone błędem (kod wyjściowy %2). @@ -11693,7 +11703,7 @@ Przebudowanie projektu może pomóc w odnalezieniu ich. Request failed for '%1': %2 - Żądanie zostało niepomyślnie zakończone dla "%1": %2 + Żądanie zostało błędnie zakończone dla "%1": %2 @@ -11894,12 +11904,12 @@ Przebudowanie projektu może pomóc w odnalezieniu ich. Clean Project... - + Wyczyść projekt... Clean Project "%1"... - + Wyczyść projekt "%1"... @@ -11959,7 +11969,7 @@ Przebudowanie projektu może pomóc w odnalezieniu ich. Pull - + Pociągnij @@ -11984,7 +11994,7 @@ Przebudowanie projektu może pomóc w odnalezieniu ich. Push - + Popchnij @@ -14032,12 +14042,12 @@ Powód: %2 Cannot run without a project. - + Nie można uruchamiać bez wybranego projektu. Cannot debug without a project. - + Nie można debugować bez wybranego projektu. @@ -16947,7 +16957,7 @@ Następujące kodowania będą najprawdopodobniej pasowały: &Rewrap Paragraph - + Zawiń &ponownie paragraf @@ -16957,7 +16967,7 @@ Następujące kodowania będą najprawdopodobniej pasowały: &Visualize Whitespace - &Pokazuj białe znaki + Pokazuj &białe znaki @@ -17967,7 +17977,7 @@ Następujące kodowania będą najprawdopodobniej pasowały: Copying failed - Kopiowanie zakończone niepowodzeniem + Błąd kopiowania @@ -18842,7 +18852,7 @@ aktywny tylko po wpisaniu przedrostka %1: Process %2 crashed. - + %1: Proces %2 zakończył pracę błędem. @@ -19298,7 +19308,7 @@ Możesz odłożyć zmiany lub je porzucić. Log count: - + Licznik dziennika: @@ -19308,7 +19318,7 @@ Możesz odłożyć zmiany lub je porzucić. Timeout: - + Czas oczekiwania: @@ -20249,7 +20259,7 @@ Możesz odłożyć zmiany lub je porzucić. Connection Timeout: - + Czas oczekiwania na połączenie: @@ -20528,12 +20538,12 @@ Możesz odłożyć zmiany lub je porzucić. easing-curve name is not a string - + nazwa łagodnej krzywej nie jest ciągiem unknown easing-curve name - + nieznana nazwa łagodnej krzywej @@ -20553,7 +20563,7 @@ Możesz odłożyć zmiany lub je porzucić. string value expected - + Oczekiwano wartości typu ciąg @@ -20563,7 +20573,7 @@ Możesz odłożyć zmiany lub je porzucić. expected anchor line - + oczekiwano linii kotwicznej @@ -20691,7 +20701,7 @@ Możesz odłożyć zmiany lub je porzucić. <table border=1 cellspacing=0 cellpadding=3><tr><th>Variable</th><th>Expands to</th></tr><tr><td>%d</td><td>directory of current file</td></tr><tr><td>%f</td><td>file name (with full path)</td></tr><tr><td>%n</td><td>file name (without path)</td></tr><tr><td>%%</td><td>%</td></tr></table> - + <table border=1 cellspacing=0 cellpadding=3><tr><th>Zmienna</th><th>Rozwinięcie</th></tr><tr><td>%d</td><td>katalog bieżącego pliku</td></tr><tr><td>%f</td><td>nazwa pliku (z pełną ścieżką)</td></tr><tr><td>%n</td><td>nazwa pliku (bez ścieżki)</td></tr><tr><td>%%</td><td>%</td></tr></table> @@ -20717,12 +20727,12 @@ Możesz odłożyć zmiany lub je porzucić. Copy Selection as ASCII Characters - + Skopiuj jako znaki ASCII Copy Selection as Hex Values - + Skopiuj jako wartości szesnastkowe @@ -21596,12 +21606,12 @@ Możesz odłożyć zmiany lub je porzucić. Pull... - + Pociągnij... Push... - + Popchnij... @@ -21656,7 +21666,7 @@ Możesz odłożyć zmiany lub je porzucić. Incoming Source - + Nadchodzące źródło @@ -21747,7 +21757,7 @@ Możesz odłożyć zmiany lub je porzucić. "%1" crashed. - Wystąpił błąd w "%1" - proces zakończony. + "%1" zakończył pracę błędem. @@ -21862,7 +21872,7 @@ Możesz odłożyć zmiany lub je porzucić. Example Object Class-name: - + Przykładowa nazwa klasy obiektu: @@ -21976,7 +21986,7 @@ Możesz odłożyć zmiany lub je porzucić. Open Terminal here... - + Otwórz tutaj terminal... @@ -22891,7 +22901,7 @@ Możesz odłożyć zmiany lub je porzucić. Show uninspectable items - Pokazuj elementy + @@ -22975,7 +22985,9 @@ Możesz odłożyć zmiany lub je porzucić. [Inspector] disconnected. - + [Inspektor] rozłączony. + + @@ -23002,7 +23014,8 @@ Możesz odłożyć zmiany lub je porzucić. [Inspector] error: (%1) %2 %1=error code, %2=error message - + [Inspektor] błąd: (%1) %2 + @@ -23012,13 +23025,13 @@ Możesz odłożyć zmiany lub je porzucić. No project was found. - + Nie znaleziono żadnego projektu. No run configurations were found for the project '%1'. - + Nie znaleziono żadnych konfiguracji uruchamiania dla projektu "%1". @@ -23034,7 +23047,7 @@ Please check your project settings. Debugging failed: could not start C++ debugger. - + Błąd debugowania: nie można uruchomić debuggera C++. @@ -23095,28 +23108,28 @@ Please check your project settings. Do you want to enable the experimental Qt Quick Designer? - + Czy chcesz włączyć eksperymentalnego Qt Quick Designera? Enable Qt Quick Designer - + Włącz Qt Quick Designera Qt Creator -> About Plugins... - + Qt Creator -> Informacje o wtyczkach... Help -> About Plugins... - + Pomoc -> Informacje o wtyczkach... Enable experimental Qt Quick Designer? - + Włączyć Qt Quick Designera? @@ -23131,12 +23144,12 @@ Please check your project settings. Please restart Qt Creator - + Uruchom ponownie Qt Creatora Please restart Qt Creator to make the change effective. - + Uruchom ponownie Qt Creatora aby zmiana mogła zostać zastosowana. @@ -23188,7 +23201,7 @@ Please check your project settings. Error while loading project file! - + Błąd podczas ładowania pliku z projektem! @@ -23228,7 +23241,7 @@ Please check your project settings. Include .qml, .js, and image files from current directory and subdirectories qmlproject Template Comment added to generated .qmlproject file - + Włącz .qml, .js i pliki graficzne z bieżącego katalogu i jego podkatalogów @@ -23302,7 +23315,7 @@ Please check your project settings. Include .qml, .js, and image files from current directory and subdirectories qmlproject Template Comment added to generated .qmlproject file - + Włącz .qml, .js i pliki graficzne z bieżącego katalogu i jego podkatalogów @@ -23494,12 +23507,12 @@ Czy uruchomiłeś Qemu? '%1' does not contain a valid Maemo simulator image. - + "%1" nie zawiera prawidłowego obrazu symulatora Maemo. Simulator could not be found. Please check the Qt Version you are using and that a simulator image is already installed. - + Nie można odnaleźć symulatora. Sprawdź którą wersję Qt używasz i upewnij się że obraz symulatora jest już zainstalowany. @@ -23615,7 +23628,7 @@ Czy uruchomiłeś Qemu? Deployment failed: %1 - Instalacja zakończona niepowodzeniem: %1 + Błąd instalacji: %1 @@ -23649,7 +23662,7 @@ Czy uruchomiłeś Qemu? Deployment Failed - Instalacja zakończona niepowodzeniem + Błąd instalacji @@ -23670,7 +23683,7 @@ Czy uruchomiłeś Qemu? Key deployment failed: %1 - Instalacja klucza zakończona niepowodzeniem: %1 + Błąd instalacji klucza: %1 @@ -24131,17 +24144,17 @@ Czy uruchomiłeś Qemu? Viewer path: - + Ścieżka przeglądarki: Viewer arguments: - + Argumenty przeglądarki: To switch languages while debugging, go to Debug->Language menu. - + Aby zmienić język podczas debugowania przejdź do menu: Debugowanie->Język. @@ -24259,7 +24272,7 @@ name <email> alias <email> Image - + Obrazek @@ -24274,22 +24287,22 @@ name <email> alias <email> Left - + Lewy Right - + Prawy Top - + Górny Bottom - + Dolny @@ -24394,7 +24407,7 @@ name <email> alias <email> Image - + Obrazek @@ -24414,7 +24427,7 @@ name <email> alias <email> Smooth - + Gładki @@ -24563,12 +24576,12 @@ name <email> alias <email> Wrap Mode - + Tryb zawijania Alignment - + Wyrównanie @@ -24578,7 +24591,7 @@ name <email> alias <email> Smooth - + Gładki @@ -24619,7 +24632,7 @@ name <email> alias <email> Text Edit - + Edytor tekstu @@ -24672,12 +24685,12 @@ name <email> alias <email> Focus On Press - + Fokus po naciśnięciu Auto Scroll - + Automatyczne przewijanie @@ -24695,47 +24708,47 @@ name <email> alias <email> Top Left - + Górny lewy Top - + Górny Top Right - + Górny prawy Left - + Lewy Center - + Centralny Right - + Prawy Bottom Left - + Dolny lewy Bottom - + Dolny Bottom Right - + Dolny prawy @@ -24930,7 +24943,7 @@ name <email> alias <email> Please configure a path. - + Skonfiguruj ścieżkę. @@ -24940,7 +24953,7 @@ name <email> alias <email> Pasted: %1 - + Wklejono: %1 @@ -25031,7 +25044,7 @@ name <email> alias <email> Gdb binary - + Plik binarny Gdb @@ -25049,12 +25062,12 @@ name <email> alias <email> Unable to start pdb '%1': %2 - + Nie można rozpocząć pdb "%1": %2 Adapter start failed - + Nie można uruchomić adaptera @@ -25079,7 +25092,7 @@ name <email> alias <email> The Pdb process failed to start. Either the invoked program '%1' is missing, or you may have insufficient permissions to invoke the program. - + Nie można rozpocząć procesu Pdb. Brak programu "%1" albo brak wymaganych uprawnień aby go uruchomić. @@ -25104,7 +25117,7 @@ name <email> alias <email> An unknown error in the Pdb process occurred. - + Wystąpił nieznany błąd w procesie Pdb. @@ -25228,22 +25241,22 @@ name <email> alias <email> Packaging Error: Cannot open file '%1'. - + Błąd pakowania: Nie można otworzyć pliku "%1". Packaging Error: Cannot write file '%1'. - + Błąd pakowania: Nie można zapisać pliku "%1". Packaging Error: Could not replace file '%1'. - + Błąd pakowania: Nie można zastąpić pliku "%1". Packaging Error: Could not copy '%1' to '%2'. - + Błąd pakowania: Nie można skopiować pliku "%1" do "%2". @@ -25258,7 +25271,7 @@ name <email> alias <email> Packaging failed. - + Błąd pakowania. @@ -25268,7 +25281,7 @@ name <email> alias <email> Packaging Error: Command '%1' failed. - + Błąd pakowania: Komenda "%1" zakończona błędem. @@ -25330,7 +25343,7 @@ name <email> alias <email> Default - + Domyślne @@ -25430,7 +25443,7 @@ name <email> alias <email> none or multiple items selected - + nie zaznaczono lub zaznaczono wiele elementów @@ -25448,7 +25461,7 @@ name <email> alias <email> Only select items with content (S) - + Wybierz tylko elementy z zawartością (S) diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index 0d169297498..ddc77365e5b 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -574,6 +574,17 @@ QString PluginManager::testDataDirectory() const return s; } +/*! + \fn void PluginManager::profilingReport(const char *what, const PluginSpec *spec = 0) + + Create a profiling entry showing the elapsed time if profiling is activated. +*/ + +void PluginManager::profilingReport(const char *what, const PluginSpec *spec) +{ + d->profilingReport(what, spec); +} + //============PluginManagerPrivate=========== /*! @@ -601,6 +612,7 @@ PluginSpecPrivate *PluginManagerPrivate::privateSpec(PluginSpec *spec) PluginManagerPrivate::PluginManagerPrivate(PluginManager *pluginManager) : extension(QLatin1String("xml")), m_profileElapsedMS(0), + m_profilingVerbosity(0), q(pluginManager) { } @@ -679,6 +691,13 @@ void PluginManagerPrivate::addObject(QObject *obj) if (debugLeaks) qDebug() << "PluginManagerPrivate::addObject" << obj << obj->objectName(); + if (m_profilingVerbosity && !m_profileTimer.isNull()) { + // Report a timestamp when adding an object. Useful for profiling + // its initialization time. + const int absoluteElapsedMS = m_profileTimer->elapsed(); + qDebug(" %-43s %8dms", obj->metaObject()->className(), absoluteElapsedMS); + } + allObjects.append(obj); } emit q->objectAdded(obj); @@ -954,6 +973,8 @@ void PluginManagerPrivate::initProfiling() m_profileTimer->start(); m_profileElapsedMS = 0; qDebug("Profiling started"); + } else { + m_profilingVerbosity++; } } @@ -966,7 +987,7 @@ void PluginManagerPrivate::profilingReport(const char *what, const PluginSpec *s if (spec) { qDebug("%-22s %-22s %8dms (%8dms)", what, qPrintable(spec->name()), absoluteElapsedMS, elapsedMS); } else { - qDebug("%-22s %8dms (%8dms)", what, absoluteElapsedMS, elapsedMS); + qDebug("%-45s %8dms (%8dms)", what, absoluteElapsedMS, elapsedMS); } } } diff --git a/src/libs/extensionsystem/pluginmanager.h b/src/libs/extensionsystem/pluginmanager.h index 23d011f07f8..037308945e5 100644 --- a/src/libs/extensionsystem/pluginmanager.h +++ b/src/libs/extensionsystem/pluginmanager.h @@ -118,6 +118,8 @@ public: bool runningTests() const; QString testDataDirectory() const; + void profilingReport(const char *what, const PluginSpec *spec = 0); + signals: void objectAdded(QObject *obj); void aboutToRemoveObject(QObject *obj); diff --git a/src/libs/extensionsystem/pluginmanager_p.h b/src/libs/extensionsystem/pluginmanager_p.h index a29ac6b5efa..fe7ed3da44c 100644 --- a/src/libs/extensionsystem/pluginmanager_p.h +++ b/src/libs/extensionsystem/pluginmanager_p.h @@ -85,6 +85,7 @@ public: QStringList arguments; QScopedPointer m_profileTimer; int m_profileElapsedMS; + unsigned m_profilingVerbosity; // Look in argument descriptions of the specs for the option. PluginSpec *pluginForOption(const QString &option, bool *requiresArgument) const; diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp index 00d90139bc0..b9dabcb3e85 100644 --- a/src/libs/qmljs/qmljsbind.cpp +++ b/src/libs/qmljs/qmljsbind.cpp @@ -106,6 +106,11 @@ Interpreter::ObjectValue *Bind::findFunctionScope(AST::FunctionDeclaration *node return _functionScopes.value(node); } +bool Bind::isGroupedPropertyBinding(AST::Node *node) const +{ + return _groupedPropertyBindings.contains(node); +} + ObjectValue *Bind::switchObjectValue(ObjectValue *newObjectValue) { ObjectValue *oldObjectValue = _currentObjectValue; @@ -139,7 +144,6 @@ ExpressionNode *Bind::expression(UiScriptBinding *ast) const ObjectValue *Bind::bindObject(UiQualifiedId *qualifiedTypeNameId, UiObjectInitializer *initializer) { ObjectValue *parentObjectValue = 0; - const QString typeName = toString(qualifiedTypeNameId); // normal component instance ASTObjectValue *objectValue = new ASTObjectValue(qualifiedTypeNameId, initializer, _doc, &_engine); @@ -204,8 +208,20 @@ bool Bind::visit(UiPublicMember *) bool Bind::visit(UiObjectDefinition *ast) { - ObjectValue *value = bindObject(ast->qualifiedTypeNameId, ast->initializer); - _qmlObjects.insert(ast, value); + // an UiObjectDefinition may be used to group property bindings + // think anchors { ... } + bool isGroupedBinding = false; + for (UiQualifiedId *it = ast->qualifiedTypeNameId; it; it = it->next) { + if (!it->next) + isGroupedBinding = it->name->asString().at(0).isLower(); + } + + if (!isGroupedBinding) { + ObjectValue *value = bindObject(ast->qualifiedTypeNameId, ast->initializer); + _qmlObjects.insert(ast, value); + } else { + _groupedPropertyBindings.insert(ast); + } return false; } diff --git a/src/libs/qmljs/qmljsbind.h b/src/libs/qmljs/qmljsbind.h index 9de6f2709cc..ed9264e2429 100644 --- a/src/libs/qmljs/qmljsbind.h +++ b/src/libs/qmljs/qmljsbind.h @@ -63,6 +63,7 @@ public: Interpreter::Context *context) const; Interpreter::ObjectValue *findFunctionScope(AST::FunctionDeclaration *node) const; + bool isGroupedPropertyBinding(AST::Node *node) const; static QString toString(AST::UiQualifiedId *qualifiedId, QChar delimiter = QChar('.')); @@ -100,6 +101,7 @@ private: Interpreter::ObjectValue *_rootObjectValue; QHash _qmlObjects; + QSet _groupedPropertyBindings; QHash _functionScopes; QStringList _includedScripts; diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 564482d0a92..ec4a1d981ac 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -1472,6 +1472,8 @@ const Value *Context::lookup(const QString &name) const ObjectValue *Context::lookupType(const QmlJS::Document *doc, UiQualifiedId *qmlTypeName) { const ObjectValue *objectValue = typeEnvironment(doc); + if (!objectValue) + return 0; for (UiQualifiedId *iter = qmlTypeName; objectValue && iter; iter = iter->next) { if (! iter->name) @@ -1490,6 +1492,8 @@ const ObjectValue *Context::lookupType(const QmlJS::Document *doc, UiQualifiedId const ObjectValue *Context::lookupType(const QmlJS::Document *doc, const QStringList &qmlTypeName) { const ObjectValue *objectValue = typeEnvironment(doc); + if (!objectValue) + return 0; foreach (const QString &name, qmlTypeName) { const Value *value = objectValue->property(name, this); diff --git a/src/libs/qmljs/qmljsscopebuilder.cpp b/src/libs/qmljs/qmljsscopebuilder.cpp index a90b0b9efce..7a3bcfd86a5 100644 --- a/src/libs/qmljs/qmljsscopebuilder.cpp +++ b/src/libs/qmljs/qmljsscopebuilder.cpp @@ -66,10 +66,24 @@ void ScopeBuilder::setQmlScopeObject(Node *node) { ScopeChain &scopeChain = _context->scopeChain(); - scopeChain.qmlScopeObjects.clear(); + if (_doc->bind()->isGroupedPropertyBinding(node)) { + UiObjectDefinition *definition = cast(node); + if (!definition) + return; + const Value *v = scopeObjectLookup(definition->qualifiedTypeNameId); + if (!v) + return; + const ObjectValue *object = v->asObjectValue(); + if (!object) + return; + + scopeChain.qmlScopeObjects.clear(); + scopeChain.qmlScopeObjects += object; + } const ObjectValue *scopeObject = _doc->bind()->findQmlObject(node); if (scopeObject) { + scopeChain.qmlScopeObjects.clear(); scopeChain.qmlScopeObjects += scopeObject; } else { return; // Probably syntax errors, where we're working with a "recovered" AST. @@ -130,3 +144,28 @@ void ScopeBuilder::setQmlScopeObject(Node *node) } } } + +const Value *ScopeBuilder::scopeObjectLookup(AST::UiQualifiedId *id) +{ + // do a name lookup on the scope objects + const Value *result = 0; + foreach (const ObjectValue *scopeObject, _context->scopeChain().qmlScopeObjects) { + const ObjectValue *object = scopeObject; + for (UiQualifiedId *it = id; it; it = it->next) { + result = object->property(it->name->asString(), _context); + if (!result) + break; + if (it->next) { + object = result->asObjectValue(); + if (!object) { + result = 0; + break; + } + } + } + if (result) + break; + } + + return result; +} diff --git a/src/libs/qmljs/qmljsscopebuilder.h b/src/libs/qmljs/qmljsscopebuilder.h index 6b433c749ff..34485039bf2 100644 --- a/src/libs/qmljs/qmljsscopebuilder.h +++ b/src/libs/qmljs/qmljsscopebuilder.h @@ -13,6 +13,7 @@ namespace AST { namespace Interpreter { class Context; + class Value; } class QMLJS_EXPORT ScopeBuilder @@ -27,6 +28,7 @@ public: private: void setQmlScopeObject(AST::Node *node); + const Interpreter::Value *scopeObjectLookup(AST::UiQualifiedId *id); Document::Ptr _doc; Interpreter::Context *_context; diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index e3f82883a85..c976cbef925 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -50,6 +50,12 @@ const char * const IDE_VERSION_LONG = IDE_VERSION; const char * const IDE_AUTHOR = "Nokia Corporation"; const char * const IDE_YEAR = "2010"; +#ifdef IDE_VERSION_DESCRIPTION +const char * const IDE_VERSION_DESCRIPTION_STR = STRINGIFY(IDE_VERSION_DESCRIPTION); +#else +const char * const IDE_VERSION_DESCRIPTION_STR = ""; +#endif + #ifdef IDE_REVISION const char * const IDE_REVISION_STR = STRINGIFY(IDE_REVISION); #else diff --git a/src/plugins/coreplugin/versiondialog.cpp b/src/plugins/coreplugin/versiondialog.cpp index c735e532bec..e92b8162729 100644 --- a/src/plugins/coreplugin/versiondialog.cpp +++ b/src/plugins/coreplugin/versiondialog.cpp @@ -61,7 +61,11 @@ VersionDialog::VersionDialog(QWidget *parent) layout->setSizeConstraint(QLayout::SetFixedSize); QString version = QLatin1String(IDE_VERSION_LONG); - version += QDate(2007, 25, 10).toString(Qt::SystemLocaleDate); + + QString ideVersionDescription; +#ifdef IDE_VERSION_DESCRIPTION + ideVersionDescription = tr("(%1)").arg(QLatin1String(IDE_VERSION_DESCRIPTION_STR)); +#endif QString ideRev; #ifdef IDE_REVISION @@ -70,21 +74,23 @@ VersionDialog::VersionDialog(QWidget *parent) #endif const QString description = tr( - "

Qt Creator %1

" + "

Qt Creator %1 %8

" "Based on Qt %2 (%3 bit)
" "
" "Built on %4 at %5
" "
" - "%8" + "%9" "
" "Copyright 2008-%6 %7. All rights reserved.
" "
" "The program is provided AS IS with NO WARRANTY OF ANY KIND, " "INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A " "PARTICULAR PURPOSE.
") - .arg(version, QLatin1String(QT_VERSION_STR), QString::number(QSysInfo::WordSize), + .arg(version, + QLatin1String(QT_VERSION_STR), QString::number(QSysInfo::WordSize), QLatin1String(__DATE__), QLatin1String(__TIME__), QLatin1String(IDE_YEAR), - (QLatin1String(IDE_AUTHOR)), ideRev); + (QLatin1String(IDE_AUTHOR)), ideVersionDescription, + ideRev); QLabel *copyRightLabel = new QLabel(description); copyRightLabel->setWordWrap(true); diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp index da9c11ed30e..57528bf6f71 100644 --- a/src/plugins/cppeditor/cppplugin.cpp +++ b/src/plugins/cppeditor/cppplugin.cpp @@ -215,16 +215,16 @@ bool CppPlugin::initialize(const QStringList & /*arguments*/, QString *errorMess wizardParameters.setDisplayName(tr("C++ Class")); wizardParameters.setId(QLatin1String("A.Class")); wizardParameters.setKind(Core::IWizard::ClassWizard); - wizardParameters.setDescription(tr("Creates a header and a source file for a new class.")); + wizardParameters.setDescription(tr("Creates a C++ header and a source file for a new class that you can add to a C++ project.")); addAutoReleasedObject(new CppClassWizard(wizardParameters, core)); wizardParameters.setKind(Core::IWizard::FileWizard); - wizardParameters.setDescription(tr("Creates a C++ source file.")); + wizardParameters.setDescription(tr("Creates a C++ source file that you can add to a C++ project.")); wizardParameters.setDisplayName(tr("C++ Source File")); wizardParameters.setId(QLatin1String("B.Source")); addAutoReleasedObject(new CppFileWizard(wizardParameters, Source, core)); - wizardParameters.setDescription(tr("Creates a C++ header file.")); + wizardParameters.setDescription(tr("Creates a C++ header file that you can add to a C++ project.")); wizardParameters.setDisplayName(tr("C++ Header File")); wizardParameters.setId(QLatin1String("C.Header")); addAutoReleasedObject(new CppFileWizard(wizardParameters, Header, core)); diff --git a/src/plugins/cpptools/completionsettingspage.cpp b/src/plugins/cpptools/completionsettingspage.cpp index e001313e10a..ae1882b0093 100644 --- a/src/plugins/cpptools/completionsettingspage.cpp +++ b/src/plugins/cpptools/completionsettingspage.cpp @@ -32,15 +32,15 @@ #include #include +#include #include #include using namespace CppTools::Internal; -CompletionSettingsPage::CompletionSettingsPage(CppCodeCompletion *completion) - : m_completion(completion) - , m_page(new Ui_CompletionSettingsPage) +CompletionSettingsPage::CompletionSettingsPage() + : m_page(new Ui_CompletionSettingsPage) { } @@ -64,23 +64,27 @@ QWidget *CompletionSettingsPage::createPage(QWidget *parent) QWidget *w = new QWidget(parent); m_page->setupUi(w); + const TextEditor::CompletionSettings &settings = + TextEditor::TextEditorSettings::instance()->completionSettings(); + int caseSensitivityIndex = 0; - switch (m_completion->caseSensitivity()) { - case CppCodeCompletion::CaseSensitive: + switch (settings.m_caseSensitivity) { + case TextEditor::CaseSensitive: caseSensitivityIndex = 0; break; - case CppCodeCompletion::CaseInsensitive: + case TextEditor::CaseInsensitive: caseSensitivityIndex = 1; break; - case CppCodeCompletion::FirstLetterCaseSensitive: + case TextEditor::FirstLetterCaseSensitive: caseSensitivityIndex = 2; break; } m_page->caseSensitivity->setCurrentIndex(caseSensitivityIndex); - m_page->autoInsertBrackets->setChecked(m_completion->autoInsertBrackets()); - m_page->partiallyComplete->setChecked(m_completion->isPartialCompletionEnabled()); - m_page->spaceAfterFunctionName->setChecked(m_completion->isSpaceAfterFunctionName()); + m_page->autoInsertBrackets->setChecked(settings.m_autoInsertBrackets); + m_page->partiallyComplete->setChecked(settings.m_partiallyComplete); + m_page->spaceAfterFunctionName->setChecked(settings.m_spaceAfterFunctionName); + if (m_searchKeywords.isEmpty()) { QTextStream(&m_searchKeywords) << m_page->caseSensitivityLabel->text() << ' ' << m_page->autoInsertBrackets->text() @@ -88,15 +92,19 @@ QWidget *CompletionSettingsPage::createPage(QWidget *parent) << ' ' << m_page->spaceAfterFunctionName->text(); m_searchKeywords.remove(QLatin1Char('&')); } + return w; } void CompletionSettingsPage::apply() { - m_completion->setCaseSensitivity(caseSensitivity()); - m_completion->setAutoInsertBrackets(m_page->autoInsertBrackets->isChecked()); - m_completion->setPartialCompletionEnabled(m_page->partiallyComplete->isChecked()); - m_completion->setSpaceAfterFunctionName(m_page->spaceAfterFunctionName->isChecked()); + TextEditor::CompletionSettings settings; + settings.m_caseSensitivity = caseSensitivity(); + settings.m_autoInsertBrackets = m_page->autoInsertBrackets->isChecked(); + settings.m_partiallyComplete = m_page->partiallyComplete->isChecked(); + settings.m_spaceAfterFunctionName = m_page->spaceAfterFunctionName->isChecked(); + + TextEditor::TextEditorSettings::instance()->setCompletionSettings(settings); } bool CompletionSettingsPage::matches(const QString &s) const @@ -104,14 +112,14 @@ bool CompletionSettingsPage::matches(const QString &s) const return m_searchKeywords.contains(s, Qt::CaseInsensitive); } -CppCodeCompletion::CaseSensitivity CompletionSettingsPage::caseSensitivity() const +TextEditor::CaseSensitivity CompletionSettingsPage::caseSensitivity() const { switch (m_page->caseSensitivity->currentIndex()) { case 0: // Full - return CppCodeCompletion::CaseSensitive; + return TextEditor::CaseSensitive; case 1: // None - return CppCodeCompletion::CaseInsensitive; + return TextEditor::CaseInsensitive; default: // First letter - return CppCodeCompletion::FirstLetterCaseSensitive; + return TextEditor::FirstLetterCaseSensitive; } } diff --git a/src/plugins/cpptools/completionsettingspage.h b/src/plugins/cpptools/completionsettingspage.h index fe9b8477c39..4221811ad63 100644 --- a/src/plugins/cpptools/completionsettingspage.h +++ b/src/plugins/cpptools/completionsettingspage.h @@ -30,10 +30,9 @@ #ifndef COMPLETIONSETTINGSPAGE_H #define COMPLETIONSETTINGSPAGE_H +#include #include -#include "cppcodecompletion.h" - QT_BEGIN_NAMESPACE class Ui_CompletionSettingsPage; QT_END_NAMESPACE @@ -41,12 +40,14 @@ QT_END_NAMESPACE namespace CppTools { namespace Internal { +// TODO: Move this class to the text editor plugin + class CompletionSettingsPage : public TextEditor::TextEditorOptionsPage { Q_OBJECT public: - CompletionSettingsPage(CppCodeCompletion *completion); + CompletionSettingsPage(); ~CompletionSettingsPage(); QString id() const; @@ -58,9 +59,8 @@ public: virtual bool matches(const QString &) const; private: - CppCodeCompletion::CaseSensitivity caseSensitivity() const; + TextEditor::CaseSensitivity caseSensitivity() const; - CppCodeCompletion *m_completion; Ui_CompletionSettingsPage *m_page; QString m_searchKeywords; }; diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index 4edf1096246..977fb4001a3 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -57,6 +57,7 @@ #include #include #include +#include #include #include #include @@ -436,10 +437,6 @@ CppCodeCompletion::CppCodeCompletion(CppModelManager *manager) m_manager(manager), m_editor(0), m_startPosition(-1), - m_caseSensitivity(FirstLetterCaseSensitive), - m_autoInsertBrackets(true), - m_partialCompletionEnabled(true), - m_spaceAfterFunctionName(false), m_forcedCompletion(false), m_completionOperator(T_EOF_SYMBOL), m_objcEnabled(true) @@ -451,46 +448,6 @@ QIcon CppCodeCompletion::iconForSymbol(Symbol *symbol) const return m_icons.iconForSymbol(symbol); } -CppCodeCompletion::CaseSensitivity CppCodeCompletion::caseSensitivity() const -{ - return m_caseSensitivity; -} - -void CppCodeCompletion::setCaseSensitivity(CaseSensitivity caseSensitivity) -{ - m_caseSensitivity = caseSensitivity; -} - -bool CppCodeCompletion::autoInsertBrackets() const -{ - return m_autoInsertBrackets; -} - -void CppCodeCompletion::setAutoInsertBrackets(bool autoInsertBrackets) -{ - m_autoInsertBrackets = autoInsertBrackets; -} - -bool CppCodeCompletion::isPartialCompletionEnabled() const -{ - return m_partialCompletionEnabled; -} - -void CppCodeCompletion::setPartialCompletionEnabled(bool partialCompletionEnabled) -{ - m_partialCompletionEnabled = partialCompletionEnabled; -} - -bool CppCodeCompletion::isSpaceAfterFunctionName() const -{ - return m_spaceAfterFunctionName; -} - -void CppCodeCompletion::setSpaceAfterFunctionName(bool spaceAfterFunctionName) -{ - m_spaceAfterFunctionName = spaceAfterFunctionName; -} - /* Searches backwards for an access operator. */ @@ -1512,7 +1469,7 @@ void CppCodeCompletion::completions(QList *completio return; if (m_completionOperator != T_LPAREN) { - filter(m_completions, completions, key, m_caseSensitivity); + filter(m_completions, completions, key); } else if (m_completionOperator == T_LPAREN || m_completionOperator == T_SIGNAL || @@ -1590,7 +1547,9 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item) //qDebug() << "current symbol:" << overview.prettyName(symbol->name()) //<< overview.prettyType(symbol->type()); - if (m_autoInsertBrackets && symbol && symbol->type()) { + const bool autoInsertBrackets = completionSettings().m_autoInsertBrackets; + + if (autoInsertBrackets && symbol && symbol->type()) { if (Function *function = symbol->type()->asFunctionType()) { // If the member is a function, automatically place the opening parenthesis, // except when it might take template parameters. @@ -1603,8 +1562,8 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item) extraChars += QLatin1Char('<'); } } else if (! function->isAmbiguous()) { - if (m_spaceAfterFunctionName) - extraChars += QLatin1Char(' '); + if (completionSettings().m_spaceAfterFunctionName) + extraChars += QLatin1Char(' '); extraChars += QLatin1Char('('); // If the function doesn't return anything, automatically place the semicolon, @@ -1631,7 +1590,7 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item) } } - if (m_autoInsertBrackets && item.data.canConvert()) { + if (autoInsertBrackets && item.data.canConvert()) { // everything from the closing parenthesis on are extra chars, to // make sure an auto-inserted ")" gets replaced by ") const" if necessary int closingParen = toInsert.lastIndexOf(QLatin1Char(')')); @@ -1667,7 +1626,7 @@ bool CppCodeCompletion::partiallyComplete(const QList #include #include +#include #include #include @@ -109,8 +110,8 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) m_modelManager, SLOT(updateSourceFiles(QStringList))); addAutoReleasedObject(m_modelManager); - m_completion = new CppCodeCompletion(m_modelManager); - addAutoReleasedObject(m_completion); + CppCodeCompletion *completion = new CppCodeCompletion(m_modelManager); + addAutoReleasedObject(completion); CppLocatorFilter *locatorFilter = new CppLocatorFilter(m_modelManager, core->editorManager()); @@ -118,7 +119,7 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) addAutoReleasedObject(new CppClassesFilter(m_modelManager, core->editorManager())); addAutoReleasedObject(new CppFunctionsFilter(m_modelManager, core->editorManager())); addAutoReleasedObject(new CppCurrentDocumentFilter(m_modelManager, core->editorManager())); - addAutoReleasedObject(new CompletionSettingsPage(m_completion)); + addAutoReleasedObject(new CompletionSettingsPage); addAutoReleasedObject(new CppFileSettingsPage(m_fileSettings)); // Menus @@ -139,17 +140,11 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) mcpptools->addAction(command); connect(switchAction, SIGNAL(triggered()), this, SLOT(switchHeaderSource())); - // Restore settings - QSettings *settings = Core::ICore::instance()->settings(); - settings->beginGroup(QLatin1String("CppTools")); - settings->beginGroup(QLatin1String("Completion")); - const int caseSensitivity = settings->value(QLatin1String("CaseSensitivity"), m_completion->caseSensitivity()).toInt(); - m_completion->setCaseSensitivity((CppCodeCompletion::CaseSensitivity) caseSensitivity); - m_completion->setAutoInsertBrackets(settings->value(QLatin1String("AutoInsertBraces"), true).toBool()); - m_completion->setPartialCompletionEnabled(settings->value(QLatin1String("PartiallyComplete"), true).toBool()); - m_completion->setSpaceAfterFunctionName(settings->value(QLatin1String("SpaceAfterFunctionName"), false).toBool()); - settings->endGroup(); - settings->endGroup(); + // Set completion settings and keep them up to date + TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance(); + completion->setCompletionSettings(textEditorSettings->completionSettings()); + connect(textEditorSettings, SIGNAL(completionSettingsChanged(TextEditor::CompletionSettings)), + completion, SLOT(setCompletionSettings(TextEditor::CompletionSettings))); return true; } @@ -170,16 +165,6 @@ void CppToolsPlugin::extensionsInitialized() void CppToolsPlugin::aboutToShutdown() { - // Save settings - QSettings *settings = Core::ICore::instance()->settings(); - settings->beginGroup(QLatin1String("CppTools")); - settings->beginGroup(QLatin1String("Completion")); - settings->setValue(QLatin1String("CaseSensitivity"), (int) m_completion->caseSensitivity()); - settings->setValue(QLatin1String("AutoInsertBraces"), m_completion->autoInsertBrackets()); - settings->setValue(QLatin1String("PartiallyComplete"), m_completion->isPartialCompletionEnabled()); - settings->setValue(QLatin1String("SpaceAfterFunctionName"), m_completion->isSpaceAfterFunctionName()); - settings->endGroup(); - settings->endGroup(); } void CppToolsPlugin::switchHeaderSource() diff --git a/src/plugins/cpptools/cpptoolsplugin.h b/src/plugins/cpptools/cpptoolsplugin.h index c5b82982ca3..ff4aa9ce81f 100644 --- a/src/plugins/cpptools/cpptoolsplugin.h +++ b/src/plugins/cpptools/cpptoolsplugin.h @@ -50,7 +50,6 @@ QT_END_NAMESPACE namespace CppTools { namespace Internal { -class CppCodeCompletion; class CppModelManager; struct CppFileSettings; @@ -79,7 +78,6 @@ private: int m_context; CppModelManager *m_modelManager; - CppCodeCompletion *m_completion; QSharedPointer m_fileSettings; static CppToolsPlugin *m_instance; diff --git a/src/plugins/cvs/checkoutwizard.cpp b/src/plugins/cvs/checkoutwizard.cpp index c999d314085..ed70c63c668 100644 --- a/src/plugins/cvs/checkoutwizard.cpp +++ b/src/plugins/cvs/checkoutwizard.cpp @@ -53,7 +53,7 @@ QIcon CheckoutWizard::icon() const QString CheckoutWizard::description() const { - return tr("Checks out a project from a CVS repository."); + return tr("Checks out a project from a CVS repository and tries to load the contained project."); } QString CheckoutWizard::displayName() const diff --git a/src/plugins/debugger/cdb/cdbdebugengine.cpp b/src/plugins/debugger/cdb/cdbdebugengine.cpp index a77383e17d1..16548f9146e 100644 --- a/src/plugins/debugger/cdb/cdbdebugengine.cpp +++ b/src/plugins/debugger/cdb/cdbdebugengine.cpp @@ -1584,11 +1584,12 @@ IDebuggerEngine *createCdbEngine(DebuggerManager *parent, // Create engine QString errorMessage; IDebuggerEngine *engine = CdbDebugEngine::create(parent, options, &errorMessage); - if (!engine) { + if (engine) { + QObject::connect(optionsPage, SIGNAL(debuggerPathsChanged()), engine, SLOT(syncDebuggerPaths())); + } else { optionsPage->setFailureMessage(errorMessage); qWarning("%s\n" ,qPrintable(errorMessage)); } - QObject::connect(optionsPage, SIGNAL(debuggerPathsChanged()), engine, SLOT(syncDebuggerPaths())); return engine; } diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp index b02f0aca740..6eb8bd8d47f 100644 --- a/src/plugins/designer/formeditorplugin.cpp +++ b/src/plugins/designer/formeditorplugin.cpp @@ -129,14 +129,16 @@ void FormEditorPlugin::initializeTemplates() const QString formFileType = QLatin1String(Constants::FORM_FILE_TYPE); wizardParameters.setDisplayName(tr("Qt Designer Form")); wizardParameters.setId(QLatin1String("D.Form")); - wizardParameters.setDescription(tr("Creates a Qt Designer form file (.ui).")); + wizardParameters.setDescription(tr("Creates a Qt Designer form along with a matching class (C++ header and source file) " + "for implementation purposes. You can add the form and class to an existing Qt C++ Project.")); addAutoReleasedObject(new FormWizard(wizardParameters, this)); #ifdef CPP_ENABLED wizardParameters.setKind(Core::IWizard::ClassWizard); wizardParameters.setDisplayName(tr("Qt Designer Form Class")); wizardParameters.setId(QLatin1String("C.FormClass")); - wizardParameters.setDescription(tr("Creates a Qt Designer form file (.ui) with a matching class.")); + wizardParameters.setDescription(tr("Creates a Qt Designer form that you can add to a Qt C++ project. " + "This is useful if you already have an existing class for the UI business logic.")); addAutoReleasedObject(new FormClassWizard(wizardParameters, this)); addAutoReleasedObject(new CppSettingsPage); #endif diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.cpp b/src/plugins/genericprojectmanager/genericprojectwizard.cpp index 4d6b33655fe..25eea3fb5a7 100644 --- a/src/plugins/genericprojectmanager/genericprojectwizard.cpp +++ b/src/plugins/genericprojectmanager/genericprojectwizard.cpp @@ -96,7 +96,8 @@ Core::BaseFileWizardParameters GenericProjectWizard::parameters() parameters.setIcon(QIcon(QLatin1String(":/wizards/images/console.png"))); parameters.setDisplayName(tr("Import Existing Project")); parameters.setId(QLatin1String("Z.Makefile")); - parameters.setDescription(tr("Creates a generic project, supporting any build system.")); + parameters.setDescription(tr("Imports existing projects that do not use qmake or CMake. " + "This allows you to use Qt Creator as a code editor.")); parameters.setCategory(QLatin1String(ProjectExplorer::Constants::PROJECT_WIZARD_CATEGORY)); parameters.setDisplayCategory(QCoreApplication::translate("ProjectExplorer", ProjectExplorer::Constants::PROJECT_WIZARD_TR_CATEGORY)); return parameters; diff --git a/src/plugins/git/clonewizard.cpp b/src/plugins/git/clonewizard.cpp index 63d7c6c578c..60c9c13289b 100644 --- a/src/plugins/git/clonewizard.cpp +++ b/src/plugins/git/clonewizard.cpp @@ -52,7 +52,7 @@ QIcon CloneWizard::icon() const QString CloneWizard::description() const { - return tr("Clones a project from a git repository."); + return tr("Clones a project from a Git repository and tries to load the contained project."); } QString CloneWizard::displayName() const diff --git a/src/plugins/git/gitorious/gitoriousclonewizard.cpp b/src/plugins/git/gitorious/gitoriousclonewizard.cpp index de0eaec39c5..46a7efab9b8 100644 --- a/src/plugins/git/gitorious/gitoriousclonewizard.cpp +++ b/src/plugins/git/gitorious/gitoriousclonewizard.cpp @@ -80,7 +80,7 @@ QIcon GitoriousCloneWizard::icon() const QString GitoriousCloneWizard::description() const { - return tr("Clones a project from a Gitorious repository."); + return tr("Clones a project from a Gitorious repository and tries to load the contained project."); } QString GitoriousCloneWizard::displayName() const diff --git a/src/plugins/mercurial/clonewizard.cpp b/src/plugins/mercurial/clonewizard.cpp index 1753af17fd3..2013d72d34a 100644 --- a/src/plugins/mercurial/clonewizard.cpp +++ b/src/plugins/mercurial/clonewizard.cpp @@ -53,7 +53,7 @@ QIcon CloneWizard::icon() const QString CloneWizard::description() const { - return tr("Clone a Mercurial repository"); + return tr("Clones a Mercurial repository and tries to load the contained project."); } QString CloneWizard::displayName() const diff --git a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp index a32ea9b7190..58f0b89ace6 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp @@ -389,7 +389,7 @@ void ColorBox::mouseMoveEvent(QMouseEvent *e) void GradientLine::setItemNode(const QVariant &itemNode) { - if (!itemNode.value().isValid() || !QmlItemNode(itemNode.value()).hasNodeParent()) + if (!itemNode.value().isValid()) return; m_itemNode = itemNode.value(); setup(); @@ -442,6 +442,8 @@ void GradientLine::setActiveColor(const QColor &newColor) void GradientLine::setupGradient() { ModelNode modelNode = m_itemNode.modelNode(); + if (!modelNode.isValid()) + return; m_colorList.clear(); m_stops.clear(); diff --git a/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.cpp b/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.cpp index d087c727bc4..b5a5450bf37 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/qmlanchorbindingproxy.cpp @@ -74,7 +74,7 @@ void QmlAnchorBindingProxy::setup(const QmlItemNode &fxItemNode) if (horizontalCentered()) m_horizontalTarget = m_fxItemNode.anchors().instanceAnchor(AnchorLine::HorizontalCenter).qmlItemNode(); - + emit itemNodeChanged(); emit parentChanged(); emit topAnchorChanged(); emit bottomAnchorChanged(); diff --git a/src/plugins/qmljseditor/qmljscodecompletion.cpp b/src/plugins/qmljseditor/qmljscodecompletion.cpp index aae8b16863b..b9e7bbbfdc0 100644 --- a/src/plugins/qmljseditor/qmljscodecompletion.cpp +++ b/src/plugins/qmljseditor/qmljscodecompletion.cpp @@ -477,8 +477,7 @@ CodeCompletion::CodeCompletion(ModelManagerInterface *modelManager, QObject *par : TextEditor::ICompletionCollector(parent), m_modelManager(modelManager), m_editor(0), - m_startPosition(0), - m_caseSensitivity(Qt::CaseSensitive) + m_startPosition(0) { Q_ASSERT(modelManager); } @@ -486,12 +485,6 @@ CodeCompletion::CodeCompletion(ModelManagerInterface *modelManager, QObject *par CodeCompletion::~CodeCompletion() { } -Qt::CaseSensitivity CodeCompletion::caseSensitivity() const -{ return m_caseSensitivity; } - -void CodeCompletion::setCaseSensitivity(Qt::CaseSensitivity caseSensitivity) -{ m_caseSensitivity = caseSensitivity; } - TextEditor::ITextEditable *CodeCompletion::editor() const { return m_editor; } @@ -637,7 +630,7 @@ int CodeCompletion::startCompletion(TextEditor::ITextEditable *editor) // Set up the current scope chain. QList astPath = semanticInfo.astPath(editor->position()); - context.build(astPath , document, snapshot, m_modelManager->importPaths()); + context.build(astPath, document, snapshot, m_modelManager->importPaths()); // Search for the operator that triggered the completion. QChar completionOperator; @@ -854,7 +847,7 @@ void CodeCompletion::completions(QList *completions) else if (length > 0) { const QString key = m_editor->textAt(m_startPosition, length); - filter(m_completions, completions, key, FirstLetterCaseSensitive); + filter(m_completions, completions, key); if (completions->size() == 1) { if (key == completions->first().text) diff --git a/src/plugins/qmljseditor/qmljscodecompletion.h b/src/plugins/qmljseditor/qmljscodecompletion.h index aa5b19044ca..7129bce9007 100644 --- a/src/plugins/qmljseditor/qmljscodecompletion.h +++ b/src/plugins/qmljseditor/qmljscodecompletion.h @@ -55,9 +55,6 @@ public: CodeCompletion(ModelManagerInterface *modelManager, QObject *parent = 0); virtual ~CodeCompletion(); - Qt::CaseSensitivity caseSensitivity() const; - void setCaseSensitivity(Qt::CaseSensitivity caseSensitivity); - virtual TextEditor::ITextEditable *editor() const; virtual int startPosition() const; virtual bool shouldRestartCompletion(); @@ -81,7 +78,6 @@ private: TextEditor::ITextEditable *m_editor; int m_startPosition; QList m_completions; - Qt::CaseSensitivity m_caseSensitivity; QList m_snippets; QDateTime m_snippetFileLastModified; diff --git a/src/plugins/qmljseditor/qmljseditorplugin.cpp b/src/plugins/qmljseditor/qmljseditorplugin.cpp index a2b005f416e..f998309ac17 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.cpp +++ b/src/plugins/qmljseditor/qmljseditorplugin.cpp @@ -77,8 +77,7 @@ QmlJSEditorPlugin::QmlJSEditorPlugin() : m_modelManager(0), m_wizard(0), m_editor(0), - m_actionHandler(0), - m_completion(0) + m_actionHandler(0) { m_instance = this; } @@ -148,19 +147,16 @@ bool QmlJSEditorPlugin::initialize(const QStringList & /*arguments*/, QString *e cmd = am->command(TextEditor::Constants::UN_COMMENT_SELECTION); contextMenu->addAction(cmd); - m_completion = new CodeCompletion(m_modelManager); - addAutoReleasedObject(m_completion); + CodeCompletion *completion = new CodeCompletion(m_modelManager); + addAutoReleasedObject(completion); - addAutoReleasedObject(new HoverHandler()); + addAutoReleasedObject(new HoverHandler); - // Restore settings - QSettings *settings = Core::ICore::instance()->settings(); - settings->beginGroup(QLatin1String("CppTools")); // ### FIXME: - settings->beginGroup(QLatin1String("Completion")); - const bool caseSensitive = settings->value(QLatin1String("CaseSensitive"), true).toBool(); - m_completion->setCaseSensitivity(caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive); - settings->endGroup(); - settings->endGroup(); + // Set completion settings and keep them up to date + TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance(); + completion->setCompletionSettings(textEditorSettings->completionSettings()); + connect(textEditorSettings, SIGNAL(completionSettingsChanged(TextEditor::CompletionSettings)), + completion, SLOT(setCompletionSettings(TextEditor::CompletionSettings))); error_message->clear(); diff --git a/src/plugins/qmljseditor/qmljseditorplugin.h b/src/plugins/qmljseditor/qmljseditorplugin.h index b119e554d0a..db534f0f290 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.h +++ b/src/plugins/qmljseditor/qmljseditorplugin.h @@ -52,7 +52,6 @@ class QmlFileWizard; namespace Internal { class QmlJSEditorFactory; -class CodeCompletion; class QmlJSTextEditor; class QmlJSPreviewRunner; @@ -92,7 +91,6 @@ private: QmlFileWizard *m_wizard; QmlJSEditorFactory *m_editor; TextEditor::TextEditorActionHandler *m_actionHandler; - CodeCompletion *m_completion; }; } // namespace Internal diff --git a/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp b/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp index d52bec61b3a..30215eb12d0 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp @@ -61,7 +61,8 @@ Core::BaseFileWizardParameters QmlProjectApplicationWizard::parameters() parameters.setIcon(QIcon(QLatin1String(":/wizards/images/console.png"))); parameters.setDisplayName(tr("Qt QML Application")); parameters.setId(QLatin1String("QA.QML Application")); - parameters.setDescription(tr("Creates a Qt QML application.")); + parameters.setDescription(tr("Creates a Qt QML application project with a single QML file containing the main view.\n\n" + "QML application projects are executed through the QML runtime and do not need to be built.")); parameters.setCategory(QLatin1String(Constants::QML_WIZARD_CATEGORY)); parameters.setDisplayCategory(QCoreApplication::translate(Constants::QML_WIZARD_TR_SCOPE, Constants::QML_WIZARD_TR_CATEGORY)); diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index b658c96b793..4bb885f5802 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -627,16 +627,6 @@ bool QtVersion::supportsShadowBuilds() const // We can not support shadow building with the ABLD system return false; } - if (targets.contains(Constants::MAEMO_DEVICE_TARGET_ID)) { -#if defined(Q_OS_WIN) - // qmake -unix fails with shadow building on windows - return false; -#else - // ... but works fine anywhere else - return true; -#endif - } - return true; } diff --git a/src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp b/src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp index 11f313b8292..d12e3f0e0b9 100644 --- a/src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/consoleappwizard.cpp @@ -57,7 +57,8 @@ ConsoleAppWizard::ConsoleAppWizard() QLatin1String(Constants::QT_APP_WIZARD_TR_SCOPE), QLatin1String(Constants::QT_APP_WIZARD_TR_CATEGORY), tr("Qt Console Application"), - tr("Creates a Qt console application."), + tr("Creates a project containing a single main.cpp file with a stub implementation.\n\n" + "Preselects a desktop Qt for building the application if available."), QIcon(QLatin1String(":/wizards/images/console.png"))) { } diff --git a/src/plugins/qt4projectmanager/wizards/emptyprojectwizard.cpp b/src/plugins/qt4projectmanager/wizards/emptyprojectwizard.cpp index a8c9c5c5332..63cbf6fe07d 100644 --- a/src/plugins/qt4projectmanager/wizards/emptyprojectwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/emptyprojectwizard.cpp @@ -44,7 +44,8 @@ EmptyProjectWizard::EmptyProjectWizard() QLatin1String(ProjectExplorer::Constants::PROJECT_WIZARD_TR_SCOPE), QLatin1String(ProjectExplorer::Constants::PROJECT_WIZARD_TR_CATEGORY), tr("Empty Qt Project"), - tr("Creates an empty Qt project."), + tr("Creates a qmake-based project without any files. This allows you to create " + "an application without any default classes."), QIcon(QLatin1String(":/wizards/images/gui.png"))) { } diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp b/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp index 92bbb1a3383..a112fb13ae5 100644 --- a/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp @@ -81,7 +81,9 @@ GuiAppWizard::GuiAppWizard() QLatin1String(Constants::QT_APP_WIZARD_TR_SCOPE), QLatin1String(Constants::QT_APP_WIZARD_TR_CATEGORY), tr("Qt Gui Application"), - tr("Creates a Qt Gui Application with one form."), + tr("Creates a Qt application for the desktop. " + "Includes a Qt Designer-based main window.\n\n" + "Preselects a desktop Qt for building the application if available."), QIcon(QLatin1String(":/wizards/images/gui.png"))), m_createMobileProject(false) { diff --git a/src/plugins/qt4projectmanager/wizards/librarywizard.cpp b/src/plugins/qt4projectmanager/wizards/librarywizard.cpp index 65e115c1e1f..39eede1791c 100644 --- a/src/plugins/qt4projectmanager/wizards/librarywizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/librarywizard.cpp @@ -53,7 +53,9 @@ LibraryWizard::LibraryWizard() QLatin1String(ProjectExplorer::Constants::PROJECT_WIZARD_TR_SCOPE), QLatin1String(ProjectExplorer::Constants::PROJECT_WIZARD_TR_CATEGORY), tr("C++ Library"), - tr("Creates a Qt based C++ Library."), + tr("Creates a C++ library based on qmake. This can be used to create:
    " + "
  • a shared C++ library for use with QPluginLoader and runtime (Plugins)
  • " + "
  • a shared or static C++ library for use with another project at linktime
."), QIcon(QLatin1String(":/wizards/images/lib.png"))) { } diff --git a/src/plugins/qt4projectmanager/wizards/mobileguiappwizard.cpp b/src/plugins/qt4projectmanager/wizards/mobileguiappwizard.cpp index e5815ec1395..0d5d1bcc6a9 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileguiappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/mobileguiappwizard.cpp @@ -42,7 +42,9 @@ MobileGuiAppWizard::MobileGuiAppWizard() : QLatin1String(Constants::QT_APP_WIZARD_TR_SCOPE), QLatin1String(Constants::QT_APP_WIZARD_TR_CATEGORY), tr("Mobile Qt Application"), - tr("Creates a mobile Qt Gui Application with one form."), + tr("Creates a Qt application optimized for mobile devices " + "with a Qt Designer-based main window.\n\n" + "Preselects Qt for Simulator and mobile targets if available"), QIcon(QLatin1String(":/projectexplorer/images/SymbianDevice.png")), true) { diff --git a/src/plugins/qt4projectmanager/wizards/testwizard.cpp b/src/plugins/qt4projectmanager/wizards/testwizard.cpp index 33223db97b7..55b3e21ae84 100644 --- a/src/plugins/qt4projectmanager/wizards/testwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/testwizard.cpp @@ -49,7 +49,9 @@ TestWizard::TestWizard() : QLatin1String(ProjectExplorer::Constants::PROJECT_WIZARD_TR_SCOPE), QLatin1String(ProjectExplorer::Constants::PROJECT_WIZARD_TR_CATEGORY), tr("Qt Unit Test"), - tr("Creates a Qt Unit Test."), + tr("Creates a QTestLib-based unit test for a feature or a class. " + "Unit tests allow you to verify that the code is fit for use " + "and that there are no regressions."), QIcon(QLatin1String(":/wizards/images/console.png"))) { } diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index e9c67cf254d..2638df860b8 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -75,7 +75,7 @@ bool ResourceEditorPlugin::initialize(const QStringList &arguments, QString *err addObject(m_editor); Core::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); - wizardParameters.setDescription(tr("Creates a Qt Resource file (.qrc).")); + wizardParameters.setDescription(tr("Creates a Qt Resource file (.qrc) that you can add to a Qt C++ project.")); wizardParameters.setDisplayName(tr("Qt Resource file")); wizardParameters.setId(QLatin1String("F.Resource")); wizardParameters.setCategory(QLatin1String(Core::Constants::WIZARD_CATEGORY_QT)); diff --git a/src/plugins/subversion/checkoutwizard.cpp b/src/plugins/subversion/checkoutwizard.cpp index 5c3392e3691..dbe355b813b 100644 --- a/src/plugins/subversion/checkoutwizard.cpp +++ b/src/plugins/subversion/checkoutwizard.cpp @@ -53,7 +53,7 @@ QIcon CheckoutWizard::icon() const QString CheckoutWizard::description() const { - return tr("Checks out a project from a Subversion repository."); + return tr("Checks out a project from a Subversion repository and tries to load the contained project."); } QString CheckoutWizard::displayName() const diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 4964ec634b4..413011f9c34 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -34,6 +34,7 @@ #include "basetexteditor_p.h" #include "behaviorsettings.h" #include "codecselector.h" +#include "completionsettings.h" #include "completionsupport.h" #include "tabsettings.h" #include "texteditorconstants.h" @@ -179,7 +180,7 @@ static void convertToPlainText(QString &txt) BaseTextEditor::BaseTextEditor(QWidget *parent) : QPlainTextEdit(parent) { - d = new BaseTextEditorPrivate(); + d = new BaseTextEditorPrivate; d->q = this; d->m_extraArea = new TextEditExtraArea(this); d->m_extraArea->setMouseTracking(true); @@ -195,8 +196,6 @@ BaseTextEditor::BaseTextEditor(QWidget *parent) d->m_lastScrollPos = -1; setCursorWidth(2); - d->m_allowSkippingOfBlockEnd = false; - // from RESEARCH setLayoutDirection(Qt::LeftToRight); @@ -221,7 +220,6 @@ BaseTextEditor::BaseTextEditor(QWidget *parent) // parentheses matcher - d->m_parenthesesMatchingEnabled = false; d->m_formatRange = true; d->m_matchFormat.setForeground(Qt::red); d->m_rangeFormat.setBackground(QColor(0xb4, 0xee, 0xb4)); @@ -1709,6 +1707,16 @@ bool BaseTextEditor::isParenthesesMatchingEnabled() const return d->m_parenthesesMatchingEnabled; } +void BaseTextEditor::setAutoParenthesesEnabled(bool b) +{ + d->m_autoParenthesesEnabled = b; +} + +bool BaseTextEditor::isAutoParenthesesEnabled() const +{ + return d->m_autoParenthesesEnabled; +} + void BaseTextEditor::setHighlightCurrentLine(bool b) { d->m_highlightCurrentLine = b; @@ -1837,8 +1845,10 @@ BaseTextEditorPrivate::BaseTextEditorPrivate() : m_contentsChanged(false), m_lastCursorChangeWasInteresting(false), - m_document(new BaseTextDocument()), + m_allowSkippingOfBlockEnd(false), + m_document(new BaseTextDocument), m_parenthesesMatchingEnabled(false), + m_autoParenthesesEnabled(true), m_extraArea(0), m_mouseOnCollapsedMarker(false), m_marksVisible(false), @@ -3889,13 +3899,16 @@ QString BaseTextEditor::autoComplete(QTextCursor &cursor, const QString &textToI const bool checkBlockEnd = d->m_allowSkippingOfBlockEnd; d->m_allowSkippingOfBlockEnd = false; // consume blockEnd. + if (!d->m_autoParenthesesEnabled) + return QString(); + if (!contextAllowsAutoParentheses(cursor, textToInsert)) return QString(); const QString text = textToInsert; const QChar lookAhead = characterAt(cursor.selectionEnd()); - QChar character = textToInsert.at(0); + const QChar character = textToInsert.at(0); const QString parentheses = QLatin1String("()"); const QString brackets = QLatin1String("[]"); if (parentheses.contains(character) || brackets.contains(character)) { @@ -3950,17 +3963,20 @@ bool BaseTextEditor::autoBackspace(QTextCursor &cursor) { d->m_allowSkippingOfBlockEnd = false; + if (!d->m_autoParenthesesEnabled) + return false; + int pos = cursor.position(); if (pos == 0) return false; QTextCursor c = cursor; c.setPosition(pos - 1); - QChar lookAhead = characterAt(pos); - QChar lookBehind = characterAt(pos-1); - QChar lookFurtherBehind = characterAt(pos-2); + const QChar lookAhead = characterAt(pos); + const QChar lookBehind = characterAt(pos - 1); + const QChar lookFurtherBehind = characterAt(pos - 2); - QChar character = lookBehind; + const QChar character = lookBehind; if (character == QLatin1Char('(') || character == QLatin1Char('[')) { QTextCursor tmp = cursor; TextEditor::TextBlockUserData::findPreviousBlockOpenParenthesis(&tmp); @@ -4005,7 +4021,10 @@ bool BaseTextEditor::autoBackspace(QTextCursor &cursor) int BaseTextEditor::paragraphSeparatorAboutToBeInserted(QTextCursor &cursor) { - if (characterAt(cursor.position()-1) != QLatin1Char('{')) + if (!d->m_autoParenthesesEnabled) + return 0; + + if (characterAt(cursor.position() - 1) != QLatin1Char('{')) return 0; if (!contextAllowsAutoParentheses(cursor)) @@ -4908,6 +4927,11 @@ void BaseTextEditor::setStorageSettings(const StorageSettings &storageSettings) d->m_document->setStorageSettings(storageSettings); } +void BaseTextEditor::setCompletionSettings(const TextEditor::CompletionSettings &completionSettings) +{ + setAutoParenthesesEnabled(completionSettings.m_autoInsertBrackets); +} + void BaseTextEditor::collapse() { QTextDocument *doc = document(); diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index fed0d251d59..967543a6194 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -59,6 +59,7 @@ class BaseTextDocument; class BaseTextEditorEditable; class FontSettings; struct BehaviorSettings; +struct CompletionSettings; struct DisplaySettings; struct StorageSettings; struct TabSettings; @@ -160,13 +161,15 @@ public: void setParenthesesMatchingEnabled(bool b); bool isParenthesesMatchingEnabled() const; + void setAutoParenthesesEnabled(bool b); + bool isAutoParenthesesEnabled() const; + void setHighlightCurrentLine(bool b); bool highlightCurrentLine() const; void setLineNumbersVisible(bool b); bool lineNumbersVisible() const; - void setMarksVisible(bool b); bool marksVisible() const; @@ -366,6 +369,7 @@ public slots: virtual void setDisplaySettings(const TextEditor::DisplaySettings &); virtual void setBehaviorSettings(const TextEditor::BehaviorSettings &); virtual void setStorageSettings(const TextEditor::StorageSettings &); + virtual void setCompletionSettings(const TextEditor::CompletionSettings &); protected: bool viewportEvent(QEvent *event); diff --git a/src/plugins/texteditor/basetexteditor_p.h b/src/plugins/texteditor/basetexteditor_p.h index cd8eb7c3d1e..784d95fd9e1 100644 --- a/src/plugins/texteditor/basetexteditor_p.h +++ b/src/plugins/texteditor/basetexteditor_p.h @@ -265,7 +265,6 @@ public: int m_cursorBlockNumber; bool m_inKeyPressEvent; - }; } // namespace Internal diff --git a/src/plugins/texteditor/completionsettings.cpp b/src/plugins/texteditor/completionsettings.cpp new file mode 100644 index 00000000000..0d800da3b32 --- /dev/null +++ b/src/plugins/texteditor/completionsettings.cpp @@ -0,0 +1,86 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "completionsettings.h" + +#include + +static const char * const groupPostfix = "Completion"; +static const char * const caseSensitivityKey = "CaseSensitivity"; +static const char * const autoInsertBracesKey = "AutoInsertBraces"; +static const char * const partiallyCompleteKey = "PartiallyComplete"; +static const char * const spaceAfterFunctionNameKey = "SpaceAfterFunctionName"; + +using namespace TextEditor; + +CompletionSettings::CompletionSettings() + : m_caseSensitivity(FirstLetterCaseSensitive) + , m_autoInsertBrackets(true) + , m_partiallyComplete(true) + , m_spaceAfterFunctionName(false) +{ +} + +void CompletionSettings::toSettings(const QString &category, QSettings *s) const +{ + QString group = QLatin1String(groupPostfix); + if (!category.isEmpty()) + group.insert(0, category); + + s->beginGroup(group); + s->setValue(QLatin1String(caseSensitivityKey), (int) m_caseSensitivity); + s->setValue(QLatin1String(autoInsertBracesKey), m_autoInsertBrackets); + s->setValue(QLatin1String(partiallyCompleteKey), m_partiallyComplete); + s->setValue(QLatin1String(spaceAfterFunctionNameKey), m_spaceAfterFunctionName); + s->endGroup(); +} + +void CompletionSettings::fromSettings(const QString &category, const QSettings *s) +{ + QString group = QLatin1String(groupPostfix); + if (!category.isEmpty()) + group.insert(0, category); + group += QLatin1Char('/'); + + *this = CompletionSettings(); // Assign defaults + + m_caseSensitivity = (CaseSensitivity) s->value(group + QLatin1String(caseSensitivityKey), m_caseSensitivity).toInt(); + m_autoInsertBrackets = s->value(group + QLatin1String(autoInsertBracesKey), m_autoInsertBrackets).toBool(); + m_partiallyComplete = s->value(group + QLatin1String(partiallyCompleteKey), m_partiallyComplete).toBool(); + m_spaceAfterFunctionName = s->value(group + QLatin1String(spaceAfterFunctionNameKey), m_spaceAfterFunctionName).toBool(); +} + +bool CompletionSettings::equals(const CompletionSettings &cs) const +{ + return m_caseSensitivity == cs.m_caseSensitivity + && m_autoInsertBrackets == cs.m_autoInsertBrackets + && m_partiallyComplete == cs.m_partiallyComplete + && m_spaceAfterFunctionName == cs.m_spaceAfterFunctionName + ; +} diff --git a/src/plugins/texteditor/completionsettings.h b/src/plugins/texteditor/completionsettings.h new file mode 100644 index 00000000000..0d35abf9bb3 --- /dev/null +++ b/src/plugins/texteditor/completionsettings.h @@ -0,0 +1,70 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef COMPLETIONSETTINGS_H +#define COMPLETIONSETTINGS_H + +#include "texteditor_global.h" + +QT_BEGIN_NAMESPACE +class QSettings; +QT_END_NAMESPACE + +namespace TextEditor { + +enum CaseSensitivity { + CaseInsensitive, + CaseSensitive, + FirstLetterCaseSensitive +}; + +/** + * Settings that describe how the code completion behaves. + */ +struct TEXTEDITOR_EXPORT CompletionSettings +{ + CompletionSettings(); + + void toSettings(const QString &category, QSettings *s) const; + void fromSettings(const QString &category, const QSettings *s); + + bool equals(const CompletionSettings &bs) const; + + CaseSensitivity m_caseSensitivity; + bool m_autoInsertBrackets; + bool m_partiallyComplete; + bool m_spaceAfterFunctionName; +}; + +inline bool operator==(const CompletionSettings &t1, const CompletionSettings &t2) { return t1.equals(t2); } +inline bool operator!=(const CompletionSettings &t1, const CompletionSettings &t2) { return !t1.equals(t2); } + +} // namespace TextEditor + +#endif // COMPLETIONSETTINGS_H diff --git a/src/plugins/texteditor/icompletioncollector.cpp b/src/plugins/texteditor/icompletioncollector.cpp index 9bf453e1b5a..0d4dd129667 100644 --- a/src/plugins/texteditor/icompletioncollector.cpp +++ b/src/plugins/texteditor/icompletioncollector.cpp @@ -28,11 +28,27 @@ **************************************************************************/ #include "icompletioncollector.h" + +#include "completionsettings.h" #include "itexteditable.h" + #include #include using namespace TextEditor; +using namespace TextEditor::Internal; + +namespace TextEditor { +namespace Internal { + +struct ICompletionCollectorPrivate +{ +public: + CompletionSettings m_completionSettings; +}; + +} // namespace Internal +} // namespace TextEditor bool ICompletionCollector::compareChar(const QChar &l, const QChar &r) { @@ -62,6 +78,27 @@ bool ICompletionCollector::completionItemLessThan(const CompletionItem &i1, cons return lessThan(lower1, lower2); } +ICompletionCollector::ICompletionCollector(QObject *parent) + : QObject(parent) + , m_d(new Internal::ICompletionCollectorPrivate) +{ +} + +ICompletionCollector::~ICompletionCollector() +{ + delete m_d; +} + +void ICompletionCollector::setCompletionSettings(const CompletionSettings &settings) +{ + m_d->m_completionSettings = settings; +} + +const CompletionSettings &ICompletionCollector::completionSettings() const +{ + return m_d->m_completionSettings; +} + QList ICompletionCollector::getCompletions() { QList completionItems; @@ -88,6 +125,9 @@ QList ICompletionCollector::getCompletions() bool ICompletionCollector::partiallyComplete(const QList &completionItems) { + if (! m_d->m_completionSettings.m_partiallyComplete) + return false; + // Compute common prefix QString firstKey = completionItems.first().text; QString lastKey = completionItems.last().text; @@ -113,9 +153,10 @@ bool ICompletionCollector::partiallyComplete(const QList &items, QList *filteredItems, - const QString &key, - ICompletionCollector::CaseSensitivity caseSensitivity) + const QString &key) { + const TextEditor::CaseSensitivity caseSensitivity = m_d->m_completionSettings.m_caseSensitivity; + /* * This code builds a regular expression in order to more intelligently match * camel-case style. This means upper-case characters will be rewritten as follows: @@ -132,8 +173,8 @@ void ICompletionCollector::filter(const QList &items bool first = true; const QLatin1String wordContinuation("[a-z0-9_]*"); foreach (const QChar &c, key) { - if (caseSensitivity == CaseInsensitive || - (caseSensitivity == FirstLetterCaseSensitive && !first)) { + if (caseSensitivity == TextEditor::CaseInsensitive || + (caseSensitivity == TextEditor::FirstLetterCaseSensitive && !first)) { keyRegExp += QLatin1String("(?:"); if (c.isUpper() && !first) @@ -158,7 +199,7 @@ void ICompletionCollector::filter(const QList &items if (hasKey) { if (item.text.startsWith(key, Qt::CaseSensitive)) { item.relevance = 2; - } else if (caseSensitivity != CaseSensitive + } else if (caseSensitivity != TextEditor::CaseSensitive && item.text.startsWith(key, Qt::CaseInsensitive)) { item.relevance = 1; } diff --git a/src/plugins/texteditor/icompletioncollector.h b/src/plugins/texteditor/icompletioncollector.h index e2cfdfacd81..e78ad83b829 100644 --- a/src/plugins/texteditor/icompletioncollector.h +++ b/src/plugins/texteditor/icompletioncollector.h @@ -38,8 +38,13 @@ namespace TextEditor { +namespace Internal { +class ICompletionCollectorPrivate; +} + class ICompletionCollector; class ITextEditable; +struct CompletionSettings; struct CompletionItem { @@ -73,8 +78,10 @@ class TEXTEDITOR_EXPORT ICompletionCollector : public QObject { Q_OBJECT public: - ICompletionCollector(QObject *parent = 0) : QObject(parent) {} - virtual ~ICompletionCollector() {} + ICompletionCollector(QObject *parent = 0); + virtual ~ICompletionCollector(); + + const CompletionSettings &completionSettings() const; virtual QList getCompletions(); virtual bool shouldRestartCompletion(); @@ -120,21 +127,20 @@ public: // helpers - enum CaseSensitivity { - CaseInsensitive, - CaseSensitive, - FirstLetterCaseSensitive - }; - void filter(const QList &items, QList *filteredItems, - const QString &key, - CaseSensitivity caseSensitivity); + const QString &key); + +public slots: + void setCompletionSettings(const TextEditor::CompletionSettings &); protected: static bool compareChar(const QChar &item, const QChar &other); static bool lessThan(const QString &item, const QString &other); static bool completionItemLessThan(const CompletionItem &item, const CompletionItem &other); + +private: + Internal::ICompletionCollectorPrivate *m_d; }; class TEXTEDITOR_EXPORT IQuickFixCollector : public ICompletionCollector diff --git a/src/plugins/texteditor/texteditor.pro b/src/plugins/texteditor/texteditor.pro index 26429c08586..a27f857809a 100644 --- a/src/plugins/texteditor/texteditor.pro +++ b/src/plugins/texteditor/texteditor.pro @@ -34,7 +34,8 @@ SOURCES += texteditorplugin.cpp \ itexteditor.cpp \ texteditoroverlay.cpp \ texteditoroptionspage.cpp \ - basetextdocumentlayout.cpp + basetextdocumentlayout.cpp \ + completionsettings.cpp HEADERS += texteditorplugin.h \ textfilewizard.h \ @@ -71,7 +72,8 @@ HEADERS += texteditorplugin.h \ colorschemeedit.h \ texteditoroverlay.h \ texteditoroptionspage.h \ - basetextdocumentlayout.h + basetextdocumentlayout.h \ + completionsettings.h FORMS += behaviorsettingspage.ui \ diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index 410325dbab9..dca81bed5a8 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -91,7 +91,8 @@ bool TextEditorPlugin::initialize(const QStringList &arguments, QString *errorMe return false; Core::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); - wizardParameters.setDescription(tr("Creates a text file (.txt).")); + wizardParameters.setDescription(tr("Creates a text file. The default file extension is .txt. " + "You can specify a different extension as part of the filename.")); wizardParameters.setDisplayName(tr("Text File")); wizardParameters.setCategory(QLatin1String("U.General")); wizardParameters.setDisplayCategory(tr("General")); diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp index de018d407fe..26a829eba80 100644 --- a/src/plugins/texteditor/texteditorsettings.cpp +++ b/src/plugins/texteditor/texteditorsettings.cpp @@ -33,6 +33,7 @@ #include "basetexteditor.h" #include "behaviorsettings.h" #include "behaviorsettingspage.h" +#include "completionsettings.h" #include "displaysettings.h" #include "displaysettingspage.h" #include "fontsettingspage.h" @@ -41,17 +42,54 @@ #include "texteditorplugin.h" #include +#include #include #include using namespace TextEditor; using namespace TextEditor::Constants; +using namespace TextEditor::Internal; + +namespace TextEditor { +namespace Internal { + +class TextEditorSettingsPrivate +{ +public: + FontSettingsPage *m_fontSettingsPage; + BehaviorSettingsPage *m_behaviorSettingsPage; + DisplaySettingsPage *m_displaySettingsPage; + + CompletionSettings m_completionSettings; + + void fontZoomRequested(int pointSize); + void zoomResetRequested(); +}; + +void TextEditorSettingsPrivate::fontZoomRequested(int zoom) +{ + FontSettings &fs = const_cast(m_fontSettingsPage->fontSettings()); + fs.setFontZoom(qMax(10, fs.fontZoom() + zoom)); + m_fontSettingsPage->saveSettings(); +} + +void TextEditorSettingsPrivate::zoomResetRequested() +{ + FontSettings &fs = const_cast(m_fontSettingsPage->fontSettings()); + fs.setFontZoom(100); + m_fontSettingsPage->saveSettings(); +} + +} // namespace Internal +} // namespace TextEditor + TextEditorSettings *TextEditorSettings::m_instance = 0; TextEditorSettings::TextEditorSettings(QObject *parent) : QObject(parent) + , m_d(new Internal::TextEditorSettingsPrivate) { QTC_ASSERT(!m_instance, return); m_instance = this; @@ -102,44 +140,50 @@ TextEditorSettings::TextEditorSettings(QObject *parent) formatDescriptions.append(FormatDescription(QLatin1String(C_DIFF_FILE), tr("Diff File"), Qt::darkBlue)); formatDescriptions.append(FormatDescription(QLatin1String(C_DIFF_LOCATION), tr("Diff Location"), Qt::blue)); - m_fontSettingsPage = new FontSettingsPage(formatDescriptions, - QLatin1String("A.FontSettings"), - this); - pm->addObject(m_fontSettingsPage); + m_d->m_fontSettingsPage = new FontSettingsPage(formatDescriptions, + QLatin1String("A.FontSettings"), + this); + pm->addObject(m_d->m_fontSettingsPage); // Add the GUI used to configure the tab, storage and interaction settings TextEditor::BehaviorSettingsPageParameters behaviorSettingsPageParameters; behaviorSettingsPageParameters.id = QLatin1String("B.BehaviourSettings"); behaviorSettingsPageParameters.displayName = tr("Behavior"); behaviorSettingsPageParameters.settingsPrefix = QLatin1String("text"); - m_behaviorSettingsPage = new BehaviorSettingsPage(behaviorSettingsPageParameters, this); - pm->addObject(m_behaviorSettingsPage); + m_d->m_behaviorSettingsPage = new BehaviorSettingsPage(behaviorSettingsPageParameters, this); + pm->addObject(m_d->m_behaviorSettingsPage); TextEditor::DisplaySettingsPageParameters displaySettingsPageParameters; displaySettingsPageParameters.id = QLatin1String("D.DisplaySettings"), displaySettingsPageParameters.displayName = tr("Display"); displaySettingsPageParameters.settingsPrefix = QLatin1String("text"); - m_displaySettingsPage = new DisplaySettingsPage(displaySettingsPageParameters, this); - pm->addObject(m_displaySettingsPage); + m_d->m_displaySettingsPage = new DisplaySettingsPage(displaySettingsPageParameters, this); + pm->addObject(m_d->m_displaySettingsPage); - connect(m_fontSettingsPage, SIGNAL(changed(TextEditor::FontSettings)), + connect(m_d->m_fontSettingsPage, SIGNAL(changed(TextEditor::FontSettings)), this, SIGNAL(fontSettingsChanged(TextEditor::FontSettings))); - connect(m_behaviorSettingsPage, SIGNAL(tabSettingsChanged(TextEditor::TabSettings)), + connect(m_d->m_behaviorSettingsPage, SIGNAL(tabSettingsChanged(TextEditor::TabSettings)), this, SIGNAL(tabSettingsChanged(TextEditor::TabSettings))); - connect(m_behaviorSettingsPage, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)), + connect(m_d->m_behaviorSettingsPage, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)), this, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings))); - connect(m_behaviorSettingsPage, SIGNAL(behaviorSettingsChanged(TextEditor::BehaviorSettings)), + connect(m_d->m_behaviorSettingsPage, SIGNAL(behaviorSettingsChanged(TextEditor::BehaviorSettings)), this, SIGNAL(behaviorSettingsChanged(TextEditor::BehaviorSettings))); - connect(m_displaySettingsPage, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)), + connect(m_d->m_displaySettingsPage, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)), this, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings))); + + // TODO: Move these settings to TextEditor category + if (QSettings *s = Core::ICore::instance()->settings()) + m_d->m_completionSettings.fromSettings(QLatin1String("CppTools/"), s); } TextEditorSettings::~TextEditorSettings() { ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); - pm->removeObject(m_fontSettingsPage); - pm->removeObject(m_behaviorSettingsPage); - pm->removeObject(m_displaySettingsPage); + pm->removeObject(m_d->m_fontSettingsPage); + pm->removeObject(m_d->m_behaviorSettingsPage); + pm->removeObject(m_d->m_displaySettingsPage); + + delete m_d; m_instance = 0; } @@ -166,6 +210,8 @@ void TextEditorSettings::initializeEditor(BaseTextEditor *editor) editor, SLOT(setBehaviorSettings(TextEditor::BehaviorSettings))); connect(this, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)), editor, SLOT(setDisplaySettings(TextEditor::DisplaySettings))); + connect(this, SIGNAL(completionSettingsChanged(TextEditor::CompletionSettings)), + editor, SLOT(setCompletionSettings(TextEditor::CompletionSettings))); connect(editor, SIGNAL(requestFontZoom(int)), this, SLOT(fontZoomRequested(int))); @@ -178,44 +224,50 @@ void TextEditorSettings::initializeEditor(BaseTextEditor *editor) editor->setStorageSettings(storageSettings()); editor->setBehaviorSettings(behaviorSettings()); editor->setDisplaySettings(displaySettings()); + editor->setCompletionSettings(completionSettings()); } -void TextEditorSettings::fontZoomRequested(int zoom) -{ - FontSettings &fs = const_cast(fontSettings()); - fs.setFontZoom(qMax(10, fs.fontZoom() + zoom)); - m_fontSettingsPage->saveSettings(); -} - -void TextEditorSettings::zoomResetRequested() -{ - FontSettings &fs = const_cast(fontSettings()); - fs.setFontZoom(100); - m_fontSettingsPage->saveSettings(); -} - const FontSettings &TextEditorSettings::fontSettings() const { - return m_fontSettingsPage->fontSettings(); + return m_d->m_fontSettingsPage->fontSettings(); } const TabSettings &TextEditorSettings::tabSettings() const { - return m_behaviorSettingsPage->tabSettings(); + return m_d->m_behaviorSettingsPage->tabSettings(); } const StorageSettings &TextEditorSettings::storageSettings() const { - return m_behaviorSettingsPage->storageSettings(); + return m_d->m_behaviorSettingsPage->storageSettings(); } const BehaviorSettings &TextEditorSettings::behaviorSettings() const { - return m_behaviorSettingsPage->behaviorSettings(); + return m_d->m_behaviorSettingsPage->behaviorSettings(); } const DisplaySettings &TextEditorSettings::displaySettings() const { - return m_displaySettingsPage->displaySettings(); + return m_d->m_displaySettingsPage->displaySettings(); } + +const CompletionSettings &TextEditorSettings::completionSettings() const +{ + return m_d->m_completionSettings; +} + +void TextEditorSettings::setCompletionSettings(const TextEditor::CompletionSettings &settings) +{ + if (m_d->m_completionSettings == settings) + return; + + m_d->m_completionSettings = settings; + if (QSettings *s = Core::ICore::instance()->settings()) + m_d->m_completionSettings.toSettings(QLatin1String("CppTools/"), s); + + emit completionSettingsChanged(m_d->m_completionSettings); +} + +#include "moc_texteditorsettings.cpp" diff --git a/src/plugins/texteditor/texteditorsettings.h b/src/plugins/texteditor/texteditorsettings.h index a5836304bee..ff6c9b95862 100644 --- a/src/plugins/texteditor/texteditorsettings.h +++ b/src/plugins/texteditor/texteditorsettings.h @@ -45,11 +45,16 @@ struct TabSettings; struct StorageSettings; struct BehaviorSettings; struct DisplaySettings; +struct CompletionSettings; + +namespace Internal { +class TextEditorSettingsPrivate; +} /** * This class provides a central place for basic text editor settings. These * settings include font settings, tab settings, storage settings, behavior - * settings and display settings. + * settings, display settings and completion settings. */ class TEXTEDITOR_EXPORT TextEditorSettings : public QObject { @@ -68,6 +73,9 @@ public: const StorageSettings &storageSettings() const; const BehaviorSettings &behaviorSettings() const; const DisplaySettings &displaySettings() const; + const CompletionSettings &completionSettings() const; + + void setCompletionSettings(const TextEditor::CompletionSettings &); signals: void fontSettingsChanged(const TextEditor::FontSettings &); @@ -75,15 +83,12 @@ signals: void storageSettingsChanged(const TextEditor::StorageSettings &); void behaviorSettingsChanged(const TextEditor::BehaviorSettings &); void displaySettingsChanged(const TextEditor::DisplaySettings &); - -private slots: - void fontZoomRequested(int pointSize); - void zoomResetRequested(); + void completionSettingsChanged(const TextEditor::CompletionSettings &); private: - FontSettingsPage *m_fontSettingsPage; - BehaviorSettingsPage *m_behaviorSettingsPage; - DisplaySettingsPage *m_displaySettingsPage; + Internal::TextEditorSettingsPrivate *m_d; + Q_PRIVATE_SLOT(m_d, void fontZoomRequested(int pointSize)); + Q_PRIVATE_SLOT(m_d, void zoomResetRequested()); static TextEditorSettings *m_instance; }; diff --git a/src/plugins/welcome/images/welcomebg.png b/src/plugins/welcome/images/welcomebg.png index 43e26923f67..a82abe93f77 100644 Binary files a/src/plugins/welcome/images/welcomebg.png and b/src/plugins/welcome/images/welcomebg.png differ diff --git a/src/plugins/welcome/welcomemode.ui b/src/plugins/welcome/welcomemode.ui index f00d137f2ac..e60f8143ad2 100644 --- a/src/plugins/welcome/welcomemode.ui +++ b/src/plugins/welcome/welcomemode.ui @@ -76,12 +76,7 @@ QToolButton:pressed, QPushButton:pressed{ - /* -#gradientWidget { - background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:1.0, y2:1, stop:0 rgba(240, 240, 240, 255), stop:1 rgba(200, 200, 200, 255)); -} -*/ -#gradientWidget { + #gradientWidget { border-image: url(:/welcome/images/welcomebg.png) 0; } diff --git a/src/shared/help/bookmarkmanager.cpp b/src/shared/help/bookmarkmanager.cpp index b3ad3dd204a..e8619922e00 100644 --- a/src/shared/help/bookmarkmanager.cpp +++ b/src/shared/help/bookmarkmanager.cpp @@ -33,6 +33,9 @@ #include "helpmanager.h" #include "openpagesmanager.h" +#include +#include + #include #include #include @@ -423,19 +426,27 @@ void BookmarkWidget::setup(bool showButtons) regExp.setCaseSensitivity(Qt::CaseInsensitive); QLayout *vlayout = new QVBoxLayout(this); - vlayout->setMargin(4); + vlayout->setMargin(0); + vlayout->setSpacing(0); - QLabel *label = new QLabel(tr("Filter:"), this); - vlayout->addWidget(label); - - searchField = new QLineEdit(this); + searchField = new Utils::FilterLineEdit(this); setFocusProxy(searchField); + + Utils::StyledBar *toolbar = new Utils::StyledBar(this); + toolbar->setSingleRow(false); + QLayout *tbLayout = new QHBoxLayout(); + tbLayout->setMargin(4); + tbLayout->addWidget(searchField); + toolbar->setLayout(tbLayout); + + vlayout->addWidget(toolbar); + searchField->installEventFilter(this); - vlayout->addWidget(searchField); connect(searchField, SIGNAL(textChanged(const QString &)), this, SLOT(filterChanged())); treeView = new TreeView(this); + treeView->setFrameStyle(QFrame::NoFrame); vlayout->addWidget(treeView); #ifdef Q_OS_MAC diff --git a/src/shared/help/contentwindow.cpp b/src/shared/help/contentwindow.cpp index e728a9a7478..a8ed1f1613a 100644 --- a/src/shared/help/contentwindow.cpp +++ b/src/shared/help/contentwindow.cpp @@ -52,7 +52,7 @@ ContentWindow::ContentWindow() setFocusProxy(m_contentWidget); QVBoxLayout *layout = new QVBoxLayout(this); - layout->setMargin(4); + layout->setMargin(0); layout->addWidget(m_contentWidget); connect(m_contentWidget, SIGNAL(customContextMenuRequested(QPoint)), this, @@ -63,6 +63,8 @@ ContentWindow::ContentWindow() QHelpContentModel *contentModel = qobject_cast(m_contentWidget->model()); connect(contentModel, SIGNAL(contentsCreated()), this, SLOT(expandTOC())); + + m_contentWidget->setFrameStyle(QFrame::NoFrame); } ContentWindow::~ContentWindow() diff --git a/src/shared/help/indexwindow.cpp b/src/shared/help/indexwindow.cpp index 0b9bf0935f0..1bc86d60ecf 100644 --- a/src/shared/help/indexwindow.cpp +++ b/src/shared/help/indexwindow.cpp @@ -34,6 +34,9 @@ #include "openpagesmanager.h" #include "topicchooser.h" +#include +#include + #include #include #include @@ -41,6 +44,7 @@ #include #include #include +#include #include #include @@ -52,17 +56,29 @@ IndexWindow::IndexWindow() , m_indexWidget(0) { QVBoxLayout *layout = new QVBoxLayout(this); - QLabel *l = new QLabel(tr("&Look for:")); - layout->addWidget(l); - m_searchLineEdit = new QLineEdit(); - l->setBuddy(m_searchLineEdit); + m_searchLineEdit = new Utils::FilterLineEdit(); + m_searchLineEdit->setPlaceholderText(QString()); setFocusProxy(m_searchLineEdit); connect(m_searchLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterIndices(QString))); m_searchLineEdit->installEventFilter(this); - layout->setMargin(4); - layout->addWidget(m_searchLineEdit); + + QLabel *l = new QLabel(tr("&Look for:")); + l->setBuddy(m_searchLineEdit); + layout->addWidget(l); + layout->setMargin(0); + layout->setSpacing(0); + + Utils::StyledBar *toolbar = new Utils::StyledBar(this); + toolbar->setSingleRow(false); + QLayout *tbLayout = new QHBoxLayout(); + tbLayout->setSpacing(6); + tbLayout->setMargin(4); + tbLayout->addWidget(l); + tbLayout->addWidget(m_searchLineEdit); + toolbar->setLayout(tbLayout); + layout->addWidget(toolbar); QHelpEngine *engine = &Help::HelpManager::helpEngine(); m_indexWidget = engine->indexWidget(); @@ -77,6 +93,7 @@ IndexWindow::IndexWindow() this, SIGNAL(linksActivated(QMap, QString))); connect(m_searchLineEdit, SIGNAL(returnPressed()), m_indexWidget, SLOT(activateCurrentItem())); + m_indexWidget->setFrameStyle(QFrame::NoFrame); layout->addWidget(m_indexWidget); m_indexWidget->viewport()->installEventFilter(this); diff --git a/src/shared/qrceditor/qrceditor.cpp b/src/shared/qrceditor/qrceditor.cpp index ecb0efde45b..693faf54c61 100644 --- a/src/shared/qrceditor/qrceditor.cpp +++ b/src/shared/qrceditor/qrceditor.cpp @@ -61,7 +61,8 @@ QrcEditor::QrcEditor(QWidget *parent) connect(m_treeview, SIGNAL(addPrefixTriggered()), this, SLOT(onAddPrefix())); connect(m_treeview, SIGNAL(addFilesTriggered(QString)), this, SLOT(onAddFiles())); connect(m_treeview, SIGNAL(removeItem()), this, SLOT(onRemove())); - connect(m_treeview, SIGNAL(currentIndexChanged()), this, SLOT(updateCurrent())); + connect(m_treeview->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), + this, SLOT(updateCurrent())); connect(m_treeview, SIGNAL(dirtyChanged(bool)), this, SIGNAL(dirtyChanged(bool))); m_treeview->setFocus(); diff --git a/src/shared/qrceditor/resourceview.cpp b/src/shared/qrceditor/resourceview.cpp index d0b077cc92c..814d044c9bc 100644 --- a/src/shared/qrceditor/resourceview.cpp +++ b/src/shared/qrceditor/resourceview.cpp @@ -203,13 +203,6 @@ ResourceView::~ResourceView() { } -void ResourceView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) -{ - Q_UNUSED(current) - Q_UNUSED(previous) - emit currentIndexChanged(); -} - bool ResourceView::isDirty() const { return m_qrcModel->dirty(); diff --git a/src/shared/qrceditor/resourceview.h b/src/shared/qrceditor/resourceview.h index a0da7df5977..2e44da25a7f 100644 --- a/src/shared/qrceditor/resourceview.h +++ b/src/shared/qrceditor/resourceview.h @@ -139,14 +139,10 @@ protected: signals: void removeItem(); void dirtyChanged(bool b); - void currentIndexChanged(); void addFilesTriggered(const QString &prefix); void addPrefixTriggered(); -protected slots: - void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); - private slots: void onEditAlias(); void onEditPrefix(); diff --git a/src/shared/symbianutils/launcher.cpp b/src/shared/symbianutils/launcher.cpp index a597cf6d133..25dc3959350 100644 --- a/src/shared/symbianutils/launcher.cpp +++ b/src/shared/symbianutils/launcher.cpp @@ -353,8 +353,22 @@ void Launcher::handleResult(const TrkResult &result) QByteArray prefix = "READ BUF: "; QByteArray str = result.toString().toUtf8(); if (result.isDebugOutput) { // handle application output - logMessage("APPLICATION OUTPUT: " + result.data); - emit applicationOutputReceived(result.data); + QString msg; + if (result.multiplex == MuxTextTrace) { + if (result.data.length() > 8) { + quint64 timestamp = extractInt64(result.data) & 0x0FFFFFFFFFFFFFFFULL; + quint64 secs = timestamp / 1000000000; + quint64 ns = timestamp % 1000000000; + msg = QString("[%1.%2] %3").arg(secs).arg(ns).arg(QString(result.data.mid(8))); + logMessage("TEXT TRACE: " + msg); + } + } else { + logMessage("APPLICATION OUTPUT: " + result.data); + msg = result.data; + } + msg.replace("\r\n", "\n"); + if(!msg.endsWith('\n')) msg.append('\n'); + emit applicationOutputReceived(msg); return; } switch (result.code) { diff --git a/src/shared/symbianutils/trkutils.cpp b/src/shared/symbianutils/trkutils.cpp index 6c44c9038db..40c448d02f3 100644 --- a/src/shared/symbianutils/trkutils.cpp +++ b/src/shared/symbianutils/trkutils.cpp @@ -264,14 +264,13 @@ QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool s /* returns 0 if array doesn't represent a result, otherwise returns the length of the result data */ -ushort isValidTrkResult(const QByteArray &buffer, bool serialFrame) +ushort isValidTrkResult(const QByteArray &buffer, bool serialFrame, ushort& mux) { if (serialFrame) { // Serial protocol with length info if (buffer.length() < 4) return 0; - if (buffer.at(0) != 0x01 || byte(buffer.at(1)) != 0x90) - return 0; + mux = extractShort(buffer.data()); const ushort len = extractShort(buffer.data() + 2); return (buffer.size() >= len + 4) ? len : ushort(0); } @@ -280,6 +279,7 @@ ushort isValidTrkResult(const QByteArray &buffer, bool serialFrame) const int firstDelimiterPos = buffer.indexOf(delimiter); // Regular message delimited by 0x7e..0x7e if (firstDelimiterPos == 0) { + mux = MuxTrk; const int endPos = buffer.indexOf(delimiter, firstDelimiterPos + 1); return endPos != -1 ? endPos + 1 - firstDelimiterPos : 0; } @@ -292,7 +292,7 @@ bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByt result->clear(); if(rawData) rawData->clear(); - const ushort len = isValidTrkResult(*buffer, serialFrame); + const ushort len = isValidTrkResult(*buffer, serialFrame, result->multiplex); if (!len) return false; // handle receiving application output, which is not a regular command @@ -300,7 +300,6 @@ bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByt if (buffer->at(delimiterPos) != 0x7e) { result->isDebugOutput = true; result->data = buffer->mid(delimiterPos, len); - result->data.replace("\r\n", "\n"); *buffer->remove(0, delimiterPos + len); return true; } @@ -341,6 +340,19 @@ SYMBIANUTILS_EXPORT uint extractInt(const char *data) return res; } +SYMBIANUTILS_EXPORT quint64 extractInt64(const char *data) +{ + quint64 res = byte(data[0]); + res <<= 8; res += byte(data[1]); + res <<= 8; res += byte(data[2]); + res <<= 8; res += byte(data[3]); + res <<= 8; res += byte(data[4]); + res <<= 8; res += byte(data[5]); + res <<= 8; res += byte(data[6]); + res <<= 8; res += byte(data[7]); + return res; +} + SYMBIANUTILS_EXPORT QString quoteUnprintableLatin1(const QByteArray &ba) { QString res; diff --git a/src/shared/symbianutils/trkutils.h b/src/shared/symbianutils/trkutils.h index 248f6fcdd73..e438c1b0cea 100644 --- a/src/shared/symbianutils/trkutils.h +++ b/src/shared/symbianutils/trkutils.h @@ -123,9 +123,16 @@ enum Command { TrkDSPositionFile = 0xd4 }; +enum SerialMultiplexor { + MuxRaw = 0, + MuxTextTrace = 0x0102, + MuxTrk = 0x0190 +}; + inline byte extractByte(const char *data) { return *data; } SYMBIANUTILS_EXPORT ushort extractShort(const char *data); SYMBIANUTILS_EXPORT uint extractInt(const char *data); +SYMBIANUTILS_EXPORT quint64 extractInt64(const char *data); SYMBIANUTILS_EXPORT QString quoteUnprintableLatin1(const QByteArray &ba); @@ -205,6 +212,7 @@ struct SYMBIANUTILS_EXPORT TrkResult int errorCode() const; QString errorString() const; + ushort multiplex; byte code; byte token; QByteArray data;