forked from qt-creator/qt-creator
Merge remote branch 'origin/2.0'
Conflicts: src/plugins/cpptools/cppcodecompletion.cpp
This commit is contained in:
@@ -37,7 +37,7 @@ leave room for the Qt 4 target page.
|
||||
<wizard version="1" kind="project"
|
||||
class="qt4project" firstpage="10"
|
||||
id="QmlRuntimePlugin" category="F.Projects">
|
||||
<description>Creates a plug-in for the QML runtime.</description>
|
||||
<description>Creates a C++ plugin to extend the funtionality of the QML runtime.</description>
|
||||
<displayname>QML Runtime Plug-in</displayname>
|
||||
<displaycategory>QML Runtime Plug-in</displaycategory>
|
||||
<files>
|
||||
|
||||
@@ -2102,7 +2102,12 @@ Sollen sie überschrieben werden?</translation>
|
||||
<translation>Neu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+542"/>
|
||||
<location line="+516"/>
|
||||
<source>Open Project</source>
|
||||
<translation>Projekt öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+38"/>
|
||||
<source>Settings...</source>
|
||||
<translation>Einstellungen...</translation>
|
||||
</message>
|
||||
@@ -2236,7 +2241,7 @@ Sollen sie überschrieben werden?</translation>
|
||||
<context>
|
||||
<name>Core::Internal::OutputPaneManager</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/coreplugin/outputpane.cpp" line="+206"/>
|
||||
<location filename="../../../src/plugins/coreplugin/outputpane.cpp" line="+209"/>
|
||||
<source>Output</source>
|
||||
<translation>Ausgaben</translation>
|
||||
</message>
|
||||
@@ -2256,7 +2261,7 @@ Sollen sie überschrieben werden?</translation>
|
||||
<translation>Vorangehender Eintrag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<location line="+195"/>
|
||||
<source>Maximize Output Pane</source>
|
||||
<translation>Ausgabepanel maximiert darstellen</translation>
|
||||
@@ -2429,9 +2434,13 @@ Sollen sie überschrieben werden?</translation>
|
||||
<context>
|
||||
<name>Core::ModeManager</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/coreplugin/modemanager.cpp" line="+180"/>
|
||||
<source>Switch to %1 mode</source>
|
||||
<translation>Gehe zu Mode '%1'</translation>
|
||||
<translation type="obsolete">Gehe zu Mode '%1'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/coreplugin/modemanager.cpp" line="+180"/>
|
||||
<source>Switch to <b>%1</b> mode</source>
|
||||
<translation>Gehe zu Mode <b>'%1'</b></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -7620,7 +7629,7 @@ on slow machines. In this case, the value should be increased.</source>
|
||||
<context>
|
||||
<name>Git::Internal::LocalBranchModel</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/git/branchmodel.cpp" line="+196"/>
|
||||
<location filename="../../../src/plugins/git/branchmodel.cpp" line="+197"/>
|
||||
<source><New branch></source>
|
||||
<translation><Neuer Branch></translation>
|
||||
</message>
|
||||
@@ -9447,7 +9456,7 @@ on slow machines. In this case, the value should be increased.</source>
|
||||
<translation>Umgebungsvariablen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/perforce/settingspage.cpp" line="+136"/>
|
||||
<location filename="../../../src/plugins/perforce/settingspage.cpp" line="+137"/>
|
||||
<source>Perforce</source>
|
||||
<translation>Perforce</translation>
|
||||
</message>
|
||||
@@ -9596,7 +9605,7 @@ on slow machines. In this case, the value should be increased.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qmldesigner/components/pluginmanager/pluginpath.cpp" line="+181"/>
|
||||
<location filename="../../../src/plugins/qmldesigner/core/pluginmanager/widgetpluginpath.cpp" line="+204"/>
|
||||
<location filename="../../../src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.cpp" line="+204"/>
|
||||
<source>Failed Plugins</source>
|
||||
<translation>Nicht geladene Plugins (Fehlschlag beim Ladevorgang)</translation>
|
||||
</message>
|
||||
@@ -9972,7 +9981,7 @@ Fehler: %2</translation>
|
||||
<context>
|
||||
<name>ProjectExplorer::Internal::AllProjectsFind</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/projectexplorer/allprojectsfind.cpp" line="+64"/>
|
||||
<location filename="../../../src/plugins/projectexplorer/allprojectsfind.cpp" line="+65"/>
|
||||
<source>All Projects</source>
|
||||
<translation>Alle Projekte</translation>
|
||||
</message>
|
||||
@@ -10033,7 +10042,22 @@ Fehler: %2</translation>
|
||||
<context>
|
||||
<name>ProjectExplorer::Internal::BuildStepsPage</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/projectexplorer/buildstepspage.cpp" line="+259"/>
|
||||
<location filename="../../../src/plugins/projectexplorer/buildstepspage.cpp" line="+176"/>
|
||||
<source>Move Up</source>
|
||||
<translation>Nach oben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Move Down</source>
|
||||
<translation>Nach unten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Remove Item</source>
|
||||
<translation>Element löschen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+80"/>
|
||||
<source>Removing Step failed</source>
|
||||
<translation>Das Entfernen des Build-Schritts schlug fehl</translation>
|
||||
</message>
|
||||
@@ -10058,7 +10082,7 @@ Fehler: %2</translation>
|
||||
<translation>Schritt zur Bereinigung hinzufügen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-210"/>
|
||||
<location line="-218"/>
|
||||
<source>Build Steps</source>
|
||||
<translation>Erstellungsschritte</translation>
|
||||
</message>
|
||||
@@ -10116,7 +10140,7 @@ Fehler: %2</translation>
|
||||
<context>
|
||||
<name>ProjectExplorer::Internal::CurrentProjectFind</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/projectexplorer/currentprojectfind.cpp" line="+64"/>
|
||||
<location filename="../../../src/plugins/projectexplorer/currentprojectfind.cpp" line="+65"/>
|
||||
<source>Current Project</source>
|
||||
<translation>Aktuelles Projekt</translation>
|
||||
</message>
|
||||
@@ -10490,7 +10514,7 @@ No project selected</extracomment>
|
||||
<translation>Sitzungen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/projectexplorer/projectwelcomepagewidget.cpp" line="+127"/>
|
||||
<location filename="../../../src/plugins/projectexplorer/projectwelcomepagewidget.cpp" line="+128"/>
|
||||
<source>%1 (last session)</source>
|
||||
<translation>%1 (zuletzt benutzt)</translation>
|
||||
</message>
|
||||
@@ -10500,12 +10524,11 @@ No project selected</extracomment>
|
||||
<translation>%1 (aktuelle Sitzung)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+42"/>
|
||||
<source>Open Project</source>
|
||||
<translation>Projekt öffnen</translation>
|
||||
<translation type="obsolete">Projekt öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+22"/>
|
||||
<location line="+47"/>
|
||||
<source>New Project</source>
|
||||
<translation>Neues Projekt</translation>
|
||||
</message>
|
||||
@@ -11646,7 +11669,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation>
|
||||
<translation>Schon gewusst?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp" line="+71"/>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp" line="+72"/>
|
||||
<source>The Qt Creator User Interface</source>
|
||||
<translation>Die Benutzeroberfläche von Qt Creator</translation>
|
||||
</message>
|
||||
@@ -11661,13 +11684,13 @@ unter Versionsverwaltung (%2) gestellt werden?</translation>
|
||||
<translation>Erstellen einer Qt-Quick-Anwendung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+35"/>
|
||||
<location line="+58"/>
|
||||
<location line="+38"/>
|
||||
<location line="+53"/>
|
||||
<source>Choose an example...</source>
|
||||
<translation>Beispiel wählen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+69"/>
|
||||
<location line="+85"/>
|
||||
<source>Copy Project to writable Location?</source>
|
||||
<translation>Soll das Projekt in ein schreibbares Verzeichnis kopiert werden?</translation>
|
||||
</message>
|
||||
@@ -11820,6 +11843,11 @@ unter Versionsverwaltung (%2) gestellt werden?</translation>
|
||||
<source>Explore Qt Quick Examples</source>
|
||||
<translation>Qt Quick-Beispiele öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Open Project...</source>
|
||||
<translation>Projekt öffnen...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::GuiAppWizard</name>
|
||||
@@ -11948,7 +11976,7 @@ unter Versionsverwaltung (%2) gestellt werden?</translation>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::QMakeStepFactory</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qmakestep.cpp" line="+473"/>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qmakestep.cpp" line="+486"/>
|
||||
<source>qmake</source>
|
||||
<translation>qmake</translation>
|
||||
</message>
|
||||
@@ -12301,6 +12329,12 @@ unter Versionsverwaltung (%2) gestellt werden?</translation>
|
||||
<comment>Qt Version is meant for Maemo</comment>
|
||||
<translation>Maemo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Qt Simulator</source>
|
||||
<comment>Qt Version is meant for Qt Simulator</comment>
|
||||
<translation>Qt Simulator</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>unkown</source>
|
||||
@@ -12769,13 +12803,13 @@ Installiere Anwendung auf '%2'...</translation>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::QMakeStep</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qmakestep.cpp" line="-392"/>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qmakestep.cpp" line="-405"/>
|
||||
<source>qmake</source>
|
||||
<comment>QMakeStep display name.</comment>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+107"/>
|
||||
<location line="+120"/>
|
||||
<source><font color="#0000ff">Configuration is faulty, please check the Build Issues view for details.</font></source>
|
||||
<translation><font color="#0000ff">Die Konfiguration ist fehlerhaft. Details befinden sich in der Ansicht "Build-Probleme".</font></translation>
|
||||
</message>
|
||||
@@ -12814,7 +12848,7 @@ Installiere Anwendung auf '%2'...</translation>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::QtVersionManager</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+387"/>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+388"/>
|
||||
<source><not found></source>
|
||||
<translation><nicht gefunden></translation>
|
||||
</message>
|
||||
@@ -14034,7 +14068,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich
|
||||
<context>
|
||||
<name>TextEditor::BaseTextEditorEditable</name>
|
||||
<message>
|
||||
<location line="+4718"/>
|
||||
<location line="+4802"/>
|
||||
<source>Line: %1, Col: %2</source>
|
||||
<translation>Zeile: %1, Spalte: %2</translation>
|
||||
</message>
|
||||
@@ -14584,12 +14618,12 @@ Die folgenden Encodings scheinen der Datei zu entsprechen:</translation>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Go to Block Start With Selection</source>
|
||||
<translation>Zum Blockanfang mit Auswahl gehen</translation>
|
||||
<translation>Bis Blockanfang markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Go to Block End With Selection</source>
|
||||
<translation>Zum Blockende mit Auswahl gehen</translation>
|
||||
<translation>Bis Blockende markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-61"/>
|
||||
@@ -14747,7 +14781,87 @@ Die folgenden Encodings scheinen der Datei zu entsprechen:</translation>
|
||||
<translation>Ctrl+J</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+94"/>
|
||||
<location line="+5"/>
|
||||
<source>Goto Line Start</source>
|
||||
<translation>Zeilenanfang</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Line End</source>
|
||||
<translation>Zeilenende</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Next Line</source>
|
||||
<translation>Nächste Zeile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Previous Line</source>
|
||||
<translation>Vorangehende Zeile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Previous Character</source>
|
||||
<translation>Vorangehendes Zeichen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Next Character</source>
|
||||
<translation>Nächstes Zeichen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Previous Word</source>
|
||||
<translation>Vorangehendes Wort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Next Word</source>
|
||||
<translation>Nächstes Wort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Goto Line Start With Selection</source>
|
||||
<translation>Bis Zeilenanfang markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Line End With Selection</source>
|
||||
<translation>Bis Zeilenende markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Next Line With Selection</source>
|
||||
<translation>Bis zur nächsten Zeile markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Previous Line With Selection</source>
|
||||
<translation>Bis zur vorangehenden Zeile markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Previous Character With Selection</source>
|
||||
<translation>Vorangehendes Zeichen markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Next Character With Selection</source>
|
||||
<translation>Nächstes Zeichen markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Previous Word With Selection</source>
|
||||
<translation>Vorangehendes Wort markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Goto Next Word With Selection</source>
|
||||
<translation>Nächstes Wort markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+96"/>
|
||||
<source><line number></source>
|
||||
<translation><Zeilennummer></translation>
|
||||
</message>
|
||||
@@ -15108,7 +15222,7 @@ Die folgenden Encodings scheinen der Datei zu entsprechen:</translation>
|
||||
<context>
|
||||
<name>Utils::DetailsButton</name>
|
||||
<message>
|
||||
<location filename="../../../src/libs/utils/detailsbutton.cpp" line="+136"/>
|
||||
<location filename="../../../src/libs/utils/detailsbutton.cpp" line="+68"/>
|
||||
<source>Details</source>
|
||||
<translation>Details</translation>
|
||||
</message>
|
||||
@@ -15809,9 +15923,8 @@ p, li { white-space: pre-wrap; }
|
||||
<translation><b>Qt Apps</b><br /><font color='gray'>Finden Sie freie, Qt-basierte Applikationen</font></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+31"/>
|
||||
<location line="+34"/>
|
||||
<source>http://labs.trolltech.com/blogs/feed</source>
|
||||
<extracomment>Add localized feed here only if one exists</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -17390,7 +17503,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<context>
|
||||
<name>CMakeProjectManager::Internal::CMakeTarget</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/cmakeprojectmanager/cmaketarget.cpp" line="+47"/>
|
||||
<location filename="../../../src/plugins/cmakeprojectmanager/cmaketarget.cpp" line="+49"/>
|
||||
<location filename="../../../src/plugins/projectexplorer/userfileaccessor.cpp" line="+772"/>
|
||||
<source>Desktop</source>
|
||||
<comment>CMake Default target display name</comment>
|
||||
@@ -18382,7 +18495,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<translation>Es ist kein Ziel festgelegt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+103"/>
|
||||
<location line="+102"/>
|
||||
<source>Qt Creator</source>
|
||||
<translation>Qt Creator</translation>
|
||||
</message>
|
||||
@@ -18473,7 +18586,13 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<translation>Maemo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+378"/>
|
||||
<location line="+2"/>
|
||||
<source>Qt Simulator</source>
|
||||
<comment>Qt4 Simulator target display name</comment>
|
||||
<translation>Qt Simulator</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+383"/>
|
||||
<source><b>Device:</b> Not connected</source>
|
||||
<translation><b>Gerät:</b> Nicht angeschlossen</translation>
|
||||
</message>
|
||||
@@ -18505,7 +18624,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<translation>-Neues Formular-</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+179"/>
|
||||
<location line="+182"/>
|
||||
<source>Cannot save to file "%1": permission denied.</source>
|
||||
<translation>Die Datei "%1" konnte wegen nicht ausreichender Zugriffsrechte nicht geschrieben werden.</translation>
|
||||
</message>
|
||||
@@ -18550,7 +18669,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<translation>Kein QmlDesigner-Plugin.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qmldesigner/core/pluginmanager/widgetpluginpath.cpp" line="-133"/>
|
||||
<location filename="../../../src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.cpp" line="-133"/>
|
||||
<source>Failed to create instance of file '%1': %2</source>
|
||||
<translation>Es konnte keine Instanz der Datei '%1' erzeugt werden: %2</translation>
|
||||
</message>
|
||||
@@ -18712,7 +18831,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<context>
|
||||
<name>QmlDesigner::RewriterView</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qmldesigner/core/model/rewriterview.cpp" line="+79"/>
|
||||
<location filename="../../../src/plugins/qmldesigner/designercore/model/rewriterview.cpp" line="+79"/>
|
||||
<source>Error parsing</source>
|
||||
<translation>Fehler beim Parsen</translation>
|
||||
</message>
|
||||
@@ -19200,7 +19319,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<context>
|
||||
<name>QtVersion</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+902"/>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="+928"/>
|
||||
<source>No qmake path set</source>
|
||||
<translation>Es ist keine qmake-Pfad gesetzt</translation>
|
||||
</message>
|
||||
@@ -19220,7 +19339,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<translation>Der Pfad zu den ausführbaren Dateien der Qt-Installation konnte nicht bestimmt werden, möglicherweise ist der Pfad zu qmake falsch?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+122"/>
|
||||
<location line="+128"/>
|
||||
<source>The Qt Version has no toolchain.</source>
|
||||
<translation>Dieser Qt-Version ist keine Toolchain zugeordnet.</translation>
|
||||
</message>
|
||||
@@ -19262,7 +19381,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<context>
|
||||
<name>TextEditor</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/texteditor/texteditorconstants.h" line="+111"/>
|
||||
<location filename="../../../src/plugins/texteditor/texteditorconstants.h" line="+127"/>
|
||||
<source>Text Editor</source>
|
||||
<translation>Text Editor</translation>
|
||||
</message>
|
||||
@@ -19318,7 +19437,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.</translatio
|
||||
<context>
|
||||
<name>trk::Launcher</name>
|
||||
<message>
|
||||
<location filename="../../../src/shared/symbianutils/launcher.cpp" line="+492"/>
|
||||
<location filename="../../../src/shared/symbianutils/launcher.cpp" line="+506"/>
|
||||
<source>Cannot open remote file '%1': %2</source>
|
||||
<translation>Die Datei '%1' auf dem Gerät konnte nicht geöffnet werden: %2</translation>
|
||||
</message>
|
||||
@@ -19892,7 +20011,7 @@ Please check your project settings.</source>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::Qt4TargetFactory</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qt4target.cpp" line="-271"/>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qt4target.cpp" line="-274"/>
|
||||
<source>Debug</source>
|
||||
<translation>Debug</translation>
|
||||
</message>
|
||||
@@ -20313,7 +20432,7 @@ Please check your project settings.</source>
|
||||
<context>
|
||||
<name>Core::CommandMappings</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/coreplugin/actionmanager/commandmappings.cpp" line="+138"/>
|
||||
<location filename="../../../src/plugins/coreplugin/actionmanager/commandmappings.cpp" line="+139"/>
|
||||
<source>Command</source>
|
||||
<translation>Kommando</translation>
|
||||
</message>
|
||||
@@ -20434,7 +20553,7 @@ Please check your project settings.</source>
|
||||
<context>
|
||||
<name>QmlDesigner::Internal::SubComponentManagerPrivate</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qmldesigner/core/metainfo/subcomponentmanager.cpp" line="+307"/>
|
||||
<location filename="../../../src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp" line="+307"/>
|
||||
<source>QML Components</source>
|
||||
<translation>QML-Komponenten</translation>
|
||||
</message>
|
||||
@@ -20735,7 +20854,7 @@ Haben Sie Qemu gestartet?</translation>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::S60CreatePackageStepConfigWidget</name>
|
||||
<message>
|
||||
<location line="+47"/>
|
||||
<location line="+49"/>
|
||||
<source>self-signed</source>
|
||||
<translation>Selbstsigniert</translation>
|
||||
</message>
|
||||
@@ -21319,14 +21438,22 @@ Haben Sie Qemu gestartet?</translation>
|
||||
<context>
|
||||
<name>Designer::Internal::FormEditorFactory</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/designer/formeditorfactory.cpp" line="+93"/>
|
||||
<source>This file can only be edited in Design Mode.</source>
|
||||
<translation>Datei kann nur im Entwurfsmodus bearbeitet werden.</translation>
|
||||
<translation type="obsolete">Datei kann nur im Entwurfsmodus bearbeitet werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open Designer</source>
|
||||
<translation type="obsolete">Designer öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/designer/formeditorfactory.cpp" line="+93"/>
|
||||
<source>This file can only be edited in <b>Design</b> mode.</source>
|
||||
<translation>Datei kann nur im <b>Entwurfsmodus</b> bearbeitet werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Open Designer</source>
|
||||
<translation>Designer öffnen</translation>
|
||||
<source>Switch mode</source>
|
||||
<translation>Modus umschalten</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -21410,7 +21537,7 @@ Haben Sie Qemu gestartet?</translation>
|
||||
<translation>Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp" line="+297"/>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp" line="+300"/>
|
||||
<source>Qt Creator can set up the following targets for project <b>%1</b>:</source>
|
||||
<comment>%1: Project name</comment>
|
||||
<translation>Qt Creator kann für das Projekt <b>%1</b> die folgenden Ziele anlegen:</translation>
|
||||
@@ -21444,7 +21571,7 @@ Haben Sie Qemu gestartet?</translation>
|
||||
<translation><b>Warnung:</b> </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-295"/>
|
||||
<location line="-298"/>
|
||||
<source>Import</source>
|
||||
<comment>Is this an import of an existing build or a new one?</comment>
|
||||
<translation>Import</translation>
|
||||
@@ -21943,7 +22070,7 @@ Namen <E-Mail> Alias <E-Mail?</translation>
|
||||
<context>
|
||||
<name>QmlDesigner::Internal::ModelPrivate</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qmldesigner/core/model/model.cpp" line="+172"/>
|
||||
<location filename="../../../src/plugins/qmldesigner/designercore/model/model.cpp" line="+172"/>
|
||||
<source>invalid type</source>
|
||||
<translation>ungültiger Typ</translation>
|
||||
</message>
|
||||
@@ -22428,7 +22555,7 @@ Namen <E-Mail> Alias <E-Mail?</translation>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::QtVersion</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="-989"/>
|
||||
<location filename="../../../src/plugins/qt4projectmanager/qtversionmanager.cpp" line="-1021"/>
|
||||
<source>The Qt version is invalid: %1</source>
|
||||
<extracomment>%1: Reason for being invalid</extracomment>
|
||||
<translation>Ungültige Qt-Version: %1</translation>
|
||||
@@ -22558,7 +22685,7 @@ Namen <E-Mail> Alias <E-Mail?</translation>
|
||||
<context>
|
||||
<name>InvalidIdException</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qmldesigner/core/exceptions/invalididexception.cpp" line="+59"/>
|
||||
<location filename="../../../src/plugins/qmldesigner/designercore/exceptions/invalididexception.cpp" line="+59"/>
|
||||
<source>Ids have to be unique: </source>
|
||||
<translation>Ids müssen eindeutig sein: </translation>
|
||||
</message>
|
||||
@@ -22579,7 +22706,7 @@ Ids müssen mit einem Kleinbuchstaben beginnen und dürfen nur alphanumerische Z
|
||||
<context>
|
||||
<name>QmlDesigner::InvalidArgumentException</name>
|
||||
<message>
|
||||
<location filename="../../../src/plugins/qmldesigner/core/exceptions/invalidargumentexception.cpp" line="+60"/>
|
||||
<location filename="../../../src/plugins/qmldesigner/designercore/exceptions/invalidargumentexception.cpp" line="+60"/>
|
||||
<source>Failed to create item of type %1</source>
|
||||
<translation>Es konnte kein Element des Typs %1 erzeugt werden</translation>
|
||||
</message>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -85,6 +85,7 @@ public:
|
||||
QStringList arguments;
|
||||
QScopedPointer<QTime> 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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
// 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;
|
||||
}
|
||||
|
||||
@@ -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<AST::Node *, Interpreter::ObjectValue *> _qmlObjects;
|
||||
QSet<AST::Node *> _groupedPropertyBindings;
|
||||
QHash<AST::FunctionDeclaration *, Interpreter::ObjectValue *> _functionScopes;
|
||||
QStringList _includedScripts;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -66,10 +66,24 @@ void ScopeBuilder::setQmlScopeObject(Node *node)
|
||||
{
|
||||
ScopeChain &scopeChain = _context->scopeChain();
|
||||
|
||||
if (_doc->bind()->isGroupedPropertyBinding(node)) {
|
||||
UiObjectDefinition *definition = cast<UiObjectDefinition *>(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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
"<h3>Qt Creator %1</h3>"
|
||||
"<h3>Qt Creator %1 %8</h3>"
|
||||
"Based on Qt %2 (%3 bit)<br/>"
|
||||
"<br/>"
|
||||
"Built on %4 at %5<br />"
|
||||
"<br/>"
|
||||
"%8"
|
||||
"%9"
|
||||
"<br/>"
|
||||
"Copyright 2008-%6 %7. All rights reserved.<br/>"
|
||||
"<br/>"
|
||||
"The program is provided AS IS with NO WARRANTY OF ANY KIND, "
|
||||
"INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A "
|
||||
"PARTICULAR PURPOSE.<br/>")
|
||||
.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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -32,15 +32,15 @@
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
#include <texteditor/texteditorsettings.h>
|
||||
|
||||
#include <QtCore/QTextStream>
|
||||
#include <QtCore/QCoreApplication>
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,10 +30,9 @@
|
||||
#ifndef COMPLETIONSETTINGSPAGE_H
|
||||
#define COMPLETIONSETTINGSPAGE_H
|
||||
|
||||
#include <texteditor/completionsettings.h>
|
||||
#include <texteditor/texteditoroptionspage.h>
|
||||
|
||||
#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;
|
||||
};
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
#include <coreplugin/icore.h>
|
||||
#include <coreplugin/mimedatabase.h>
|
||||
#include <coreplugin/editormanager/editormanager.h>
|
||||
#include <texteditor/completionsettings.h>
|
||||
#include <texteditor/itexteditor.h>
|
||||
#include <texteditor/itexteditable.h>
|
||||
#include <texteditor/basetexteditor.h>
|
||||
@@ -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<TextEditor::CompletionItem> *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,7 +1562,7 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item)
|
||||
extraChars += QLatin1Char('<');
|
||||
}
|
||||
} else if (! function->isAmbiguous()) {
|
||||
if (m_spaceAfterFunctionName)
|
||||
if (completionSettings().m_spaceAfterFunctionName)
|
||||
extraChars += QLatin1Char(' ');
|
||||
extraChars += QLatin1Char('(');
|
||||
|
||||
@@ -1631,7 +1590,7 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item)
|
||||
}
|
||||
}
|
||||
|
||||
if (m_autoInsertBrackets && item.data.canConvert<CompleteFunctionDeclaration>()) {
|
||||
if (autoInsertBrackets && item.data.canConvert<CompleteFunctionDeclaration>()) {
|
||||
// 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<TextEditor::CompletionItem
|
||||
} else if (completionItems.count() == 1) {
|
||||
complete(completionItems.first());
|
||||
return true;
|
||||
} else if (m_partialCompletionEnabled && m_completionOperator != T_LPAREN) {
|
||||
} else if (m_completionOperator != T_LPAREN) {
|
||||
return TextEditor::ICompletionCollector::partiallyComplete(completionItems);
|
||||
}
|
||||
|
||||
|
||||
@@ -86,18 +86,6 @@ public:
|
||||
|
||||
QIcon iconForSymbol(CPlusPlus::Symbol *symbol) const;
|
||||
|
||||
CaseSensitivity caseSensitivity() const;
|
||||
void setCaseSensitivity(CaseSensitivity caseSensitivity);
|
||||
|
||||
bool autoInsertBrackets() const;
|
||||
void setAutoInsertBrackets(bool autoInsertBrackets);
|
||||
|
||||
bool isPartialCompletionEnabled() const;
|
||||
void setPartialCompletionEnabled(bool partialCompletionEnabled);
|
||||
|
||||
bool isSpaceAfterFunctionName() const;
|
||||
void setSpaceAfterFunctionName(bool spaceAfterFunctionName);
|
||||
|
||||
private:
|
||||
void addKeywords();
|
||||
void addMacros(const QString &fileName, const CPlusPlus::Snapshot &snapshot);
|
||||
@@ -159,10 +147,6 @@ private:
|
||||
TextEditor::ITextEditable *m_editor;
|
||||
int m_startPosition; // Position of the cursor from which completion started
|
||||
|
||||
CaseSensitivity m_caseSensitivity;
|
||||
bool m_autoInsertBrackets;
|
||||
bool m_partialCompletionEnabled;
|
||||
bool m_spaceAfterFunctionName;
|
||||
bool m_forcedCompletion;
|
||||
unsigned m_completionOperator;
|
||||
bool m_objcEnabled;
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <coreplugin/progressmanager/progressmanager.h>
|
||||
#include <coreplugin/vcsmanager.h>
|
||||
#include <coreplugin/filemanager.h>
|
||||
#include <texteditor/texteditorsettings.h>
|
||||
#include <cppeditor/cppeditorconstants.h>
|
||||
|
||||
#include <QtCore/QtConcurrentRun>
|
||||
@@ -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()
|
||||
|
||||
@@ -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<CppFileSettings> m_fileSettings;
|
||||
|
||||
static CppToolsPlugin *m_instance;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -389,7 +389,7 @@ void ColorBox::mouseMoveEvent(QMouseEvent *e)
|
||||
void GradientLine::setItemNode(const QVariant &itemNode)
|
||||
{
|
||||
|
||||
if (!itemNode.value<ModelNode>().isValid() || !QmlItemNode(itemNode.value<ModelNode>()).hasNodeParent())
|
||||
if (!itemNode.value<ModelNode>().isValid())
|
||||
return;
|
||||
m_itemNode = itemNode.value<ModelNode>();
|
||||
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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -854,7 +847,7 @@ void CodeCompletion::completions(QList<TextEditor::CompletionItem> *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)
|
||||
|
||||
@@ -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<TextEditor::CompletionItem> m_completions;
|
||||
Qt::CaseSensitivity m_caseSensitivity;
|
||||
|
||||
QList<TextEditor::CompletionItem> m_snippets;
|
||||
QDateTime m_snippetFileLastModified;
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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")))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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")))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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:<ul>"
|
||||
"<li>a shared C++ library for use with <tt>QPluginLoader</tt> and runtime (Plugins)</li>"
|
||||
"<li>a shared or static C++ library for use with another project at linktime</li></ul>."),
|
||||
QIcon(QLatin1String(":/wizards/images/lib.png")))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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")))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,6 +4021,9 @@ bool BaseTextEditor::autoBackspace(QTextCursor &cursor)
|
||||
|
||||
int BaseTextEditor::paragraphSeparatorAboutToBeInserted(QTextCursor &cursor)
|
||||
{
|
||||
if (!d->m_autoParenthesesEnabled)
|
||||
return 0;
|
||||
|
||||
if (characterAt(cursor.position() - 1) != QLatin1Char('{'))
|
||||
return 0;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -265,7 +265,6 @@ public:
|
||||
int m_cursorBlockNumber;
|
||||
|
||||
bool m_inKeyPressEvent;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
86
src/plugins/texteditor/completionsettings.cpp
Normal file
86
src/plugins/texteditor/completionsettings.cpp
Normal file
@@ -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 <QtCore/QSettings>
|
||||
|
||||
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
|
||||
;
|
||||
}
|
||||
70
src/plugins/texteditor/completionsettings.h
Normal file
70
src/plugins/texteditor/completionsettings.h
Normal file
@@ -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
|
||||
@@ -28,11 +28,27 @@
|
||||
**************************************************************************/
|
||||
|
||||
#include "icompletioncollector.h"
|
||||
|
||||
#include "completionsettings.h"
|
||||
#include "itexteditable.h"
|
||||
|
||||
#include <QtCore/QRegExp>
|
||||
#include <algorithm>
|
||||
|
||||
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<CompletionItem> ICompletionCollector::getCompletions()
|
||||
{
|
||||
QList<CompletionItem> completionItems;
|
||||
@@ -88,6 +125,9 @@ QList<CompletionItem> ICompletionCollector::getCompletions()
|
||||
|
||||
bool ICompletionCollector::partiallyComplete(const QList<TextEditor::CompletionItem> &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<TextEditor::CompletionI
|
||||
|
||||
void ICompletionCollector::filter(const QList<TextEditor::CompletionItem> &items,
|
||||
QList<TextEditor::CompletionItem> *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<TextEditor::CompletionItem> &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<TextEditor::CompletionItem> &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;
|
||||
}
|
||||
|
||||
@@ -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<CompletionItem> getCompletions();
|
||||
virtual bool shouldRestartCompletion();
|
||||
@@ -120,21 +127,20 @@ public:
|
||||
|
||||
// helpers
|
||||
|
||||
enum CaseSensitivity {
|
||||
CaseInsensitive,
|
||||
CaseSensitive,
|
||||
FirstLetterCaseSensitive
|
||||
};
|
||||
|
||||
void filter(const QList<TextEditor::CompletionItem> &items,
|
||||
QList<TextEditor::CompletionItem> *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
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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 <tt>.txt</tt>. "
|
||||
"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"));
|
||||
|
||||
@@ -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 <extensionsystem/pluginmanager.h>
|
||||
#include <coreplugin/icore.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <QtGui/QApplication>
|
||||
|
||||
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<FontSettings&>(m_fontSettingsPage->fontSettings());
|
||||
fs.setFontZoom(qMax(10, fs.fontZoom() + zoom));
|
||||
m_fontSettingsPage->saveSettings();
|
||||
}
|
||||
|
||||
void TextEditorSettingsPrivate::zoomResetRequested()
|
||||
{
|
||||
FontSettings &fs = const_cast<FontSettings&>(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,
|
||||
m_d->m_fontSettingsPage = new FontSettingsPage(formatDescriptions,
|
||||
QLatin1String("A.FontSettings"),
|
||||
this);
|
||||
pm->addObject(m_fontSettingsPage);
|
||||
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&>(fontSettings());
|
||||
fs.setFontZoom(qMax(10, fs.fontZoom() + zoom));
|
||||
m_fontSettingsPage->saveSettings();
|
||||
}
|
||||
|
||||
void TextEditorSettings::zoomResetRequested()
|
||||
{
|
||||
FontSettings &fs = const_cast<FontSettings&>(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"
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 21 KiB |
@@ -76,12 +76,7 @@ QToolButton:pressed, QPushButton:pressed{
|
||||
<item>
|
||||
<widget class="QWidget" name="gradientWidget" native="true">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">/*
|
||||
#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 {
|
||||
<string notr="true">#gradientWidget {
|
||||
border-image: url(:/welcome/images/welcomebg.png) 0;
|
||||
}
|
||||
</string>
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
#include "helpmanager.h"
|
||||
#include "openpagesmanager.h"
|
||||
|
||||
#include <utils/filterlineedit.h>
|
||||
#include <utils/styledbar.h>
|
||||
|
||||
#include <QtGui/QMenu>
|
||||
#include <QtGui/QIcon>
|
||||
#include <QtGui/QStyle>
|
||||
@@ -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
|
||||
|
||||
@@ -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<QHelpContentModel*>(m_contentWidget->model());
|
||||
connect(contentModel, SIGNAL(contentsCreated()), this, SLOT(expandTOC()));
|
||||
|
||||
m_contentWidget->setFrameStyle(QFrame::NoFrame);
|
||||
}
|
||||
|
||||
ContentWindow::~ContentWindow()
|
||||
|
||||
@@ -34,6 +34,9 @@
|
||||
#include "openpagesmanager.h"
|
||||
#include "topicchooser.h"
|
||||
|
||||
#include <utils/filterlineedit.h>
|
||||
#include <utils/styledbar.h>
|
||||
|
||||
#include <QtGui/QLayout>
|
||||
#include <QtGui/QLabel>
|
||||
#include <QtGui/QLineEdit>
|
||||
@@ -41,6 +44,7 @@
|
||||
#include <QtGui/QMenu>
|
||||
#include <QtGui/QContextMenuEvent>
|
||||
#include <QtGui/QListWidgetItem>
|
||||
#include <QtGui/QToolBar>
|
||||
|
||||
#include <QtHelp/QHelpEngine>
|
||||
#include <QtHelp/QHelpIndexWidget>
|
||||
@@ -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, QUrl>, QString)));
|
||||
connect(m_searchLineEdit, SIGNAL(returnPressed()), m_indexWidget,
|
||||
SLOT(activateCurrentItem()));
|
||||
m_indexWidget->setFrameStyle(QFrame::NoFrame);
|
||||
layout->addWidget(m_indexWidget);
|
||||
|
||||
m_indexWidget->viewport()->installEventFilter(this);
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
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);
|
||||
emit applicationOutputReceived(result.data);
|
||||
msg = result.data;
|
||||
}
|
||||
msg.replace("\r\n", "\n");
|
||||
if(!msg.endsWith('\n')) msg.append('\n');
|
||||
emit applicationOutputReceived(msg);
|
||||
return;
|
||||
}
|
||||
switch (result.code) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user