forked from qt-creator/qt-creator
QDoc: Fix QDoc warnings
This patch fixes ~1100 warnings from qdoc Change-Id: Ia9555db675acbf8083b2f87d9855a62a3a34ccb9 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
This commit is contained in:
@@ -35,10 +35,10 @@
|
||||
Qt, such as:
|
||||
|
||||
\list
|
||||
\o Widgets and layout managers
|
||||
\o Container classes
|
||||
\o Signals and slots
|
||||
\o Input and output devices
|
||||
\li Widgets and layout managers
|
||||
\li Container classes
|
||||
\li Signals and slots
|
||||
\li Input and output devices
|
||||
\endlist
|
||||
|
||||
All these technologies will be introduced via the Qt Creator Integrated
|
||||
@@ -53,13 +53,13 @@
|
||||
Tutorial chapters:
|
||||
|
||||
\list 1
|
||||
\o \l{examples/addressbook-sdk/part1}{Designing the User Interface}
|
||||
\o \l{examples/addressbook-sdk/part2}{Adding Addresses}
|
||||
\o \l{examples/addressbook-sdk/part3}{Navigating between Entries}
|
||||
\o \l{examples/addressbook-sdk/part4}{Editing and Removing Addresses}
|
||||
\o \l{examples/addressbook-sdk/part5}{Adding a Find Function}
|
||||
\o \l{examples/addressbook-sdk/part6}{Loading and Saving}
|
||||
\o \l{examples/addressbook-sdk/part7}{Additional Features}
|
||||
\li \l{examples/addressbook-sdk/part1}{Designing the User Interface}
|
||||
\li \l{examples/addressbook-sdk/part2}{Adding Addresses}
|
||||
\li \l{examples/addressbook-sdk/part3}{Navigating between Entries}
|
||||
\li \l{examples/addressbook-sdk/part4}{Editing and Removing Addresses}
|
||||
\li \l{examples/addressbook-sdk/part5}{Adding a Find Function}
|
||||
\li \l{examples/addressbook-sdk/part6}{Loading and Saving}
|
||||
\li \l{examples/addressbook-sdk/part7}{Additional Features}
|
||||
\endlist
|
||||
|
||||
Although this little application does not look much like a fully-fledged
|
||||
@@ -93,7 +93,7 @@
|
||||
Begin by launching Qt Creator and use it to generate a new project. To
|
||||
do this, select \gui{File} > \gui{New File or Project...} >
|
||||
\gui{Qt Application Project} > \gui{Qt Gui Application} and
|
||||
click \gui OK. Set your project name to \bold part1 with the QtCore and
|
||||
click \gui OK. Set your project name to \b part1 with the QtCore and
|
||||
QtGui modules checked. Ensure that you select QWidget as your base class
|
||||
and name it \c AddressBook.
|
||||
|
||||
@@ -101,15 +101,15 @@
|
||||
\gui{Project}:
|
||||
|
||||
\list
|
||||
\o \c{main.cpp} - the file containing a \c main() function, with an
|
||||
\li \c{main.cpp} - the file containing a \c main() function, with an
|
||||
instance of \c AddressBook,
|
||||
\o \c{addressbook.cpp} - the implementation file for the
|
||||
\li \c{addressbook.cpp} - the implementation file for the
|
||||
\c AddressBook class,
|
||||
\o \c{addressbook.h} - the definition file for the \c AddressBook
|
||||
\li \c{addressbook.h} - the definition file for the \c AddressBook
|
||||
class,
|
||||
\o \c{addressbook.ui} - the user interface file created with \QD,
|
||||
\li \c{addressbook.ui} - the user interface file created with \QD,
|
||||
and
|
||||
\o \c{part1.pro} - the project file.
|
||||
\li \c{part1.pro} - the project file.
|
||||
\endlist
|
||||
|
||||
Now that you have all the files you need, click \gui Finish so you can
|
||||
@@ -132,16 +132,16 @@
|
||||
QLineEdit and a QTextEdit for the input fields. To create this follow the
|
||||
steps mentioned below:
|
||||
\list
|
||||
\o Drag those widgets from the \gui{Widget Box} to your form.
|
||||
\o In the \gui{Property Editor}, set their \gui{objectName} property to
|
||||
\li Drag those widgets from the \gui{Widget Box} to your form.
|
||||
\li In the \gui{Property Editor}, set their \gui{objectName} property to
|
||||
\c nameLabel and \c addressLabel for the \l{QLabel}s, \c nameLine
|
||||
for the QLineEdit and finally, \c addressText for the QTextEdit.
|
||||
\o Position the widgets properly, according to the screenshot above.
|
||||
\o Use a QGridLayout to position our labels and input fields in a
|
||||
\li Position the widgets properly, according to the screenshot above.
|
||||
\li Use a QGridLayout to position our labels and input fields in a
|
||||
structured manner. QGridLayout divides the available space into
|
||||
a grid and places widgets in the cells you specify with row and
|
||||
column numbers.
|
||||
\o Place the caption of the \c addressLabel on the top, change the
|
||||
\li Place the caption of the \c addressLabel on the top, change the
|
||||
vertical alignment property to \c AlignTop.
|
||||
\endlist
|
||||
|
||||
@@ -227,13 +227,13 @@
|
||||
the behavior of a widget has the following advantages:
|
||||
|
||||
\list
|
||||
\o You can write implementations of virtual or pure virtual functions
|
||||
\li You can write implementations of virtual or pure virtual functions
|
||||
to obtain exactly what you need, falling back on the base class's
|
||||
implementation when necessary.
|
||||
\o It allows you to encapsulate parts of the user interface within a
|
||||
\li It allows you to encapsulate parts of the user interface within a
|
||||
class, so that the other parts of the application do not need to
|
||||
know about the individual widgets in the user interface.
|
||||
\o The subclass can be used to create multiple custom widgets in the
|
||||
\li The subclass can be used to create multiple custom widgets in the
|
||||
same application or library, and the code for the subclass can be
|
||||
reused in other projects.
|
||||
\endlist
|
||||
@@ -272,27 +272,27 @@
|
||||
complete the process of adding a contact. Break the existing layouts by
|
||||
following the steps below:
|
||||
\list
|
||||
\o Select, \gui{Break Layout} from the context menu. You might have to
|
||||
\li Select, \gui{Break Layout} from the context menu. You might have to
|
||||
do a \gui{Select All} with \key{Ctrl+A} first..
|
||||
\o Add three push buttons and double-click on each of them to set
|
||||
\li Add three push buttons and double-click on each of them to set
|
||||
their text to "Add", "Submit", and "Cancel".
|
||||
\o Set the \c objectName of the buttons to \c addButton,
|
||||
\li Set the \c objectName of the buttons to \c addButton,
|
||||
\c submitButton and \c cancelButton respectively.
|
||||
\o A \gui{Vertical Spacer} is required to ensure that the push buttons
|
||||
\li A \gui{Vertical Spacer} is required to ensure that the push buttons
|
||||
will be laid out neatly; drag one from the \gui{Widget Box}.
|
||||
\o Lay out these three push buttons and the spacer vertically, by
|
||||
\li Lay out these three push buttons and the spacer vertically, by
|
||||
selecting all three of them using \key{Ctrl + click} and selecting
|
||||
\gui{Lay out Vertically} from the context menu. Alternatively you
|
||||
can use the \key{Ctrl+L} shortcut key.
|
||||
|
||||
\note Use the spacer as you do not want the buttons to be evenly
|
||||
spaced, but arranged closer to the top of the widget.
|
||||
\o The figure below shows the difference between using the spacer and
|
||||
\li The figure below shows the difference between using the spacer and
|
||||
not using it.
|
||||
\image addressbook-tutorial-part2-stretch-effects.png
|
||||
\o Select all the objects on the form using, \key{Ctrl+A} and lay them
|
||||
\li Select all the objects on the form using, \key{Ctrl+A} and lay them
|
||||
out in a grid.
|
||||
\o Lastly, set the top level widget's layout by right-clicking anywhere
|
||||
\li Lastly, set the top level widget's layout by right-clicking anywhere
|
||||
on the widget and selecting \gui{Lay out Horizontally} or
|
||||
\gui{Lay out Vertically}.
|
||||
\endlist
|
||||
@@ -376,7 +376,7 @@
|
||||
This function can be divided into three parts:
|
||||
|
||||
\list 1
|
||||
\o Extract the contact's detail from \c nameLine and \c addressText
|
||||
\li Extract the contact's detail from \c nameLine and \c addressText
|
||||
and store them in QString objects. Also validate to ensure that
|
||||
you did not click \gui Submit with empty input fields;
|
||||
otherwise, a QMessageBox is displayed to remind you for a name
|
||||
@@ -384,7 +384,7 @@
|
||||
|
||||
\snippet examples/addressbook-sdk/part2/addressbook.cpp submitContact part1
|
||||
|
||||
\o Then proceed to check if the contact already exists. If it does
|
||||
\li Then proceed to check if the contact already exists. If it does
|
||||
not exist, add the contact to \c contacts and display a
|
||||
QMessageBox to inform you about this, preventing you from
|
||||
adding duplicate contacts. Our \c contacts object is based on
|
||||
@@ -393,7 +393,7 @@
|
||||
|
||||
\snippet examples/addressbook-sdk/part2/addressbook.cpp submitContact part2
|
||||
|
||||
\o Once you have handled both cases mentioned above, restore the
|
||||
\li Once you have handled both cases mentioned above, restore the
|
||||
push buttons to their normal state with the following code:
|
||||
|
||||
\snippet examples/addressbook-sdk/part2/addressbook.cpp submitContact part3
|
||||
@@ -457,17 +457,17 @@
|
||||
need to traverse the existing contacts. To do so follow the steps
|
||||
mentioned below:
|
||||
\list
|
||||
\o Add two push buttons at the bottom of your application and name
|
||||
\li Add two push buttons at the bottom of your application and name
|
||||
them: \gui Next and \gui Previous.
|
||||
\o The buttons' \c objectName should be \c nextButton and
|
||||
\li The buttons' \c objectName should be \c nextButton and
|
||||
\c previousButton, respectively.
|
||||
\o Break your top level layout by right-clicking on \c AddressBook in
|
||||
\li Break your top level layout by right-clicking on \c AddressBook in
|
||||
the \gui{Object Inspector} and then select \gui{Lay out|Break Layout}.
|
||||
\o Place the \gui Next and \gui Previous buttons in a horizontal
|
||||
\li Place the \gui Next and \gui Previous buttons in a horizontal
|
||||
layout.
|
||||
\o Drag and drop the buttons together with their layout into the
|
||||
\li Drag and drop the buttons together with their layout into the
|
||||
existing grid layout.
|
||||
\o Set a top level layout for the widget again.
|
||||
\li Set a top level layout for the widget again.
|
||||
\endlist
|
||||
|
||||
The screenshot below illustrates what you will see as the button layout
|
||||
@@ -523,9 +523,9 @@
|
||||
for \c contacts and then:
|
||||
|
||||
\list
|
||||
\o If the iterator is not at the end of \c contacts, increment it by
|
||||
\li If the iterator is not at the end of \c contacts, increment it by
|
||||
one.
|
||||
\o If the iterator is at the end of \c contacts, move it to the
|
||||
\li If the iterator is at the end of \c contacts, move it to the
|
||||
beginning of \c contacts. This gives an illusion that our QMap
|
||||
is working like a circularly-linked list.
|
||||
\endlist
|
||||
@@ -539,11 +539,11 @@
|
||||
\c contacts and then:
|
||||
|
||||
\list
|
||||
\o If the iterator is at the end of \c contacts, clear the display
|
||||
\li If the iterator is at the end of \c contacts, clear the display
|
||||
and return.
|
||||
\o If the iterator is at the beginning of \c contacts, move it to
|
||||
\li If the iterator is at the beginning of \c contacts, move it to
|
||||
the end.
|
||||
\o Then decrement the iterator by one.
|
||||
\li Then decrement the iterator by one.
|
||||
\endlist
|
||||
|
||||
\snippet examples/addressbook-sdk/part3/addressbook.cpp previous
|
||||
@@ -578,9 +578,9 @@
|
||||
|
||||
In this chapter, define the \c Mode enum with three different values:
|
||||
\list
|
||||
\o \c{NavigationMode}
|
||||
\o \c{AddingMode}
|
||||
\o \c{EditingMode}
|
||||
\li \c{NavigationMode}
|
||||
\li \c{AddingMode}
|
||||
\li \c{EditingMode}
|
||||
\endlist
|
||||
|
||||
\section1 Placing Widgets on The Form
|
||||
|
||||
@@ -35,20 +35,20 @@
|
||||
following rules:
|
||||
|
||||
\list
|
||||
\o The most important rule is: KISS (keep it short and simple). Always
|
||||
\li The most important rule is: KISS (keep it short and simple). Always
|
||||
choose the simpler implementation option over the more complicated one.
|
||||
This makes maintenance a lot easier.
|
||||
\o Write good C++ code. That is, readable, well commented when necessary,
|
||||
\li Write good C++ code. That is, readable, well commented when necessary,
|
||||
and object-oriented.
|
||||
\o Take advantage of Qt. Do not re-invent the wheel. Think about which parts
|
||||
\li Take advantage of Qt. Do not re-invent the wheel. Think about which parts
|
||||
of your code are generic enough that they might be incorporated into
|
||||
Qt instead of Qt Creator.
|
||||
\o Adapt the code to the existing structures in Qt Creator.
|
||||
\li Adapt the code to the existing structures in Qt Creator.
|
||||
If you have improvement ideas, discuss them with other developers
|
||||
before writing the code.
|
||||
\o Follow the guidelines in \l{Code Constructs}, \l{Formatting}, and
|
||||
\li Follow the guidelines in \l{Code Constructs}, \l{Formatting}, and
|
||||
\l{Patterns and Practices}.
|
||||
\o Document interfaces. Right now we use qdoc, but changing to doxygen
|
||||
\li Document interfaces. Right now we use qdoc, but changing to doxygen
|
||||
is being considered.
|
||||
\endlist
|
||||
|
||||
@@ -68,13 +68,13 @@
|
||||
releases:
|
||||
|
||||
\list
|
||||
\o Qt Creator 2.0.0 is a \e {major release}, Qt Creator 2.1.0 is a \e {minor
|
||||
\li Qt Creator 2.0.0 is a \e {major release}, Qt Creator 2.1.0 is a \e {minor
|
||||
release}, and Qt Creator 2.1.3 is a \e {patch release}.
|
||||
\o \e {Backward binary compatibility} means that code linked to an
|
||||
\li \e {Backward binary compatibility} means that code linked to an
|
||||
earlier version of the library still works.
|
||||
\o \e {Forward binary compatibility} means that code linked to a
|
||||
\li \e {Forward binary compatibility} means that code linked to a
|
||||
newer version of the library works with an older library.
|
||||
\o \e {Source code compatibility} means that code compiles without
|
||||
\li \e {Source code compatibility} means that code compiles without
|
||||
modification.
|
||||
\endlist
|
||||
|
||||
@@ -86,11 +86,11 @@
|
||||
backward source code compatibility in patch releases, so:
|
||||
|
||||
\list
|
||||
\o Do not add or remove any public API (e.g. global functions,x
|
||||
\li Do not add or remove any public API (e.g. global functions,x
|
||||
public/protected/private methods).
|
||||
\o Do not reimplement methods (not even inlines,
|
||||
\li Do not reimplement methods (not even inlines,
|
||||
nor protected or private methods).
|
||||
\o Check
|
||||
\li Check
|
||||
\l {http://wiki.qt-project.org/index.php/Binary_Compatibility_Workarounds}{Binary Compatibility Workarounds}
|
||||
for ways to preserve binary compatibility.
|
||||
\endlist
|
||||
@@ -107,7 +107,7 @@
|
||||
type checking in C++.
|
||||
|
||||
\list
|
||||
\o Prefer preincrement to postincrement whenever possible.
|
||||
\li Prefer preincrement to postincrement whenever possible.
|
||||
Preincrement is potentially faster than postincrement. Just
|
||||
think about the obvious implementations of pre/post-increment. This
|
||||
rule applies to decrement too:
|
||||
@@ -122,7 +122,7 @@
|
||||
U--;
|
||||
\endcode
|
||||
|
||||
\o Try to minimize evaluation of the same code over and over. This is
|
||||
\li Try to minimize evaluation of the same code over and over. This is
|
||||
aimed especially at loops:
|
||||
|
||||
\code
|
||||
@@ -141,7 +141,7 @@
|
||||
\endcode
|
||||
|
||||
|
||||
\o You can use the Qt \c foreach loop in non-time-critical code with a Qt
|
||||
\li You can use the Qt \c foreach loop in non-time-critical code with a Qt
|
||||
container. It is a nice way to keep line noise down and to give the
|
||||
loop variable a proper name:
|
||||
|
||||
@@ -180,19 +180,19 @@
|
||||
Capitalize the first word in an identifier as follows:
|
||||
|
||||
\list
|
||||
\o Class names begin with a capital letter.
|
||||
\o Function names begin with a lower case letter.
|
||||
\o Variable names begin with a lower case letter.
|
||||
\o Enum names and values begin with a capital letter. Enum values
|
||||
\li Class names begin with a capital letter.
|
||||
\li Function names begin with a lower case letter.
|
||||
\li Variable names begin with a lower case letter.
|
||||
\li Enum names and values begin with a capital letter. Enum values
|
||||
contain some part of the name of the enum type.
|
||||
\endlist
|
||||
|
||||
\section2 Whitespace
|
||||
|
||||
\list
|
||||
\o Use four spaces for indentation, no tabs.
|
||||
\o Use blank lines to group statements together where suited.
|
||||
\o Always use only one blank line.
|
||||
\li Use four spaces for indentation, no tabs.
|
||||
\li Use blank lines to group statements together where suited.
|
||||
\li Always use only one blank line.
|
||||
\endlist
|
||||
|
||||
\section3 Pointers and References
|
||||
@@ -405,10 +405,10 @@
|
||||
\section2 Line Breaks
|
||||
|
||||
\list
|
||||
\o Keep lines shorter than 100 characters.
|
||||
\o Insert line breaks if necessary.
|
||||
\o Commas go at the end of a broken line.
|
||||
\o Operators start at the beginning of the new line.
|
||||
\li Keep lines shorter than 100 characters.
|
||||
\li Insert line breaks if necessary.
|
||||
\li Commas go at the end of a broken line.
|
||||
\li Operators start at the beginning of the new line.
|
||||
\code
|
||||
if (longExpression
|
||||
|| otherLongExpression
|
||||
@@ -427,15 +427,15 @@
|
||||
\section2 Declarations
|
||||
|
||||
\list
|
||||
\o Use this order for the access sections of your class: public,
|
||||
\li Use this order for the access sections of your class: public,
|
||||
protected, private. The public section is interesting for every
|
||||
user of the class. The private section is only of interest for the
|
||||
implementors of the class (you).
|
||||
|
||||
\o Avoid declaring global objects in the declaration file of the class.
|
||||
\li Avoid declaring global objects in the declaration file of the class.
|
||||
If the same variable is used for all objects, use a static member.
|
||||
|
||||
\o Use \c{class} instead of \c{struct}. Some compilers mangle that
|
||||
\li Use \c{class} instead of \c{struct}. Some compilers mangle that
|
||||
difference into the symbol names and spit out warnings if a struct
|
||||
declaration is followed by a class definition. To avoid ongoing
|
||||
changes from one to the other we declare \c{class} the preferred way.
|
||||
@@ -445,16 +445,16 @@
|
||||
\section3 Declaring Variables
|
||||
|
||||
\list
|
||||
\o Avoid global variables of class type to rule out initialization order problems.
|
||||
\li Avoid global variables of class type to rule out initialization order problems.
|
||||
Consider using \c Q_GLOBAL_STATIC if they cannot be avoided.
|
||||
\o Declare global string literals as
|
||||
\li Declare global string literals as
|
||||
\code
|
||||
const char aString[] = "Hello";
|
||||
\endcode
|
||||
\o Avoid short names (such as, a, rbarr, nughdeget) whenever possible.
|
||||
\li Avoid short names (such as, a, rbarr, nughdeget) whenever possible.
|
||||
Use single-character variable names only for counters and
|
||||
temporaries, where the purpose of the variable is obvious.
|
||||
\o Declare each variable on a separate line:
|
||||
\li Declare each variable on a separate line:
|
||||
\code
|
||||
QString a = "Joe";
|
||||
QString b = "Foo";
|
||||
@@ -475,7 +475,7 @@
|
||||
mistaken as function declaration, and it reduces the level of nested
|
||||
parantheses in more initializations.
|
||||
|
||||
\o Avoid abbreviations:
|
||||
\li Avoid abbreviations:
|
||||
|
||||
\code
|
||||
int height;
|
||||
@@ -489,16 +489,16 @@
|
||||
char *c, *d;
|
||||
\endcode
|
||||
|
||||
\o Wait with declaring a variable until it is needed. This is especially
|
||||
\li Wait with declaring a variable until it is needed. This is especially
|
||||
important when initialization is done at the same time.
|
||||
\endlist
|
||||
|
||||
\section2 Namespaces
|
||||
|
||||
\list
|
||||
\o Put the left curly brace on the same line as the \namespace keyword.
|
||||
\o Do not indent declarations or definitions inside.
|
||||
\o Optional, but recommended if the namespaces spans more than a few lines:
|
||||
\li Put the left curly brace on the same line as the \namespace keyword.
|
||||
\li Do not indent declarations or definitions inside.
|
||||
\li Optional, but recommended if the namespaces spans more than a few lines:
|
||||
Add a comment after the right curly brace repeating the namespace.
|
||||
|
||||
\code
|
||||
@@ -509,7 +509,7 @@
|
||||
} // namespace MyPlugin
|
||||
\endcode
|
||||
|
||||
\o As an exception, if there is only a single class declaration inside
|
||||
\li As an exception, if there is only a single class declaration inside
|
||||
the namespace, all can go on a single line:
|
||||
\code
|
||||
namespace MyPlugin { class MyClass; }
|
||||
@@ -526,10 +526,10 @@
|
||||
|
||||
The namespacing policy within Qt Creator is as follows:
|
||||
\list
|
||||
\o Classes/Symbols of a library or plugin that are exported for use of
|
||||
\li Classes/Symbols of a library or plugin that are exported for use of
|
||||
other libraries or plugins are in a namespace specific to that
|
||||
library/plugin, e.g. \c{MyPlugin}.
|
||||
\o Classes/Symbols of a library or plugin that are not exported are in
|
||||
\li Classes/Symbols of a library or plugin that are not exported are in
|
||||
an additional \c{Internal} namespace, e.g. \c{MyPlugin::Internal}.
|
||||
\endlist
|
||||
|
||||
@@ -577,35 +577,35 @@
|
||||
\section2 C++ Features
|
||||
|
||||
\list
|
||||
\o Do not use exceptions, unless you know what you do.
|
||||
\li Do not use exceptions, unless you know what you do.
|
||||
|
||||
\o Do not use RTTI (Run-Time Type Information; that is, the typeinfo
|
||||
\li Do not use RTTI (Run-Time Type Information; that is, the typeinfo
|
||||
struct, the dynamic_cast or the typeid operators, including throwing
|
||||
exceptions), unless you know what you do.
|
||||
|
||||
\o Do not use virtual inheritance, unless you know what you do.
|
||||
\li Do not use virtual inheritance, unless you know what you do.
|
||||
|
||||
\o Use templates wisely, not just because you can.
|
||||
\li Use templates wisely, not just because you can.
|
||||
|
||||
Hint: Use the compile autotest to see whether a C++ feature is supported
|
||||
by all compilers in the test farm.
|
||||
|
||||
\o All code is ASCII only (7-bit characters only, run \c {man ascii} if unsure)
|
||||
\li All code is ASCII only (7-bit characters only, run \c {man ascii} if unsure)
|
||||
\list
|
||||
\o Rationale: We have too many locales inhouse and an unhealthy
|
||||
\li Rationale: We have too many locales inhouse and an unhealthy
|
||||
mix of UTF-8 and Latin1 systems. Usually, characters > 127 can
|
||||
be broken without you even knowing by clicking Save in your
|
||||
favourite editor.
|
||||
\o For strings: Use \\nnn (where nnn is the octal representation
|
||||
of whatever locale you want your string in) or \xnn (where nn
|
||||
\li For strings: Use \\nnn (where nnn is the octal representation
|
||||
of whatever locale you want your string in) or \\xnn (where nn
|
||||
is hexadecimal).
|
||||
For example: QString s = QString::fromUtf8("\\213\\005");
|
||||
\o For umlauts in documentation, or other non-ASCII characters,
|
||||
\li For umlauts in documentation, or other non-ASCII characters,
|
||||
either use the qdoc \c {\unicode} command or use the relevant macro.
|
||||
For example: \c{\uuml} for \uuml.
|
||||
\endlist
|
||||
|
||||
\o Use static keywords instead of anonymous namespaces whenever possible.
|
||||
\li Use static keywords instead of anonymous namespaces whenever possible.
|
||||
A name localized to the compilation unit with static is
|
||||
guaranteed to have internal linkage. For names declared in anonymous
|
||||
namespaces, the C++ standard unfortunately mandates external linkage
|
||||
@@ -640,10 +640,10 @@
|
||||
\section2 Using QObject
|
||||
|
||||
\list
|
||||
\o Every QObject subclass must have a Q_OBJECT macro, even if it
|
||||
\li Every QObject subclass must have a Q_OBJECT macro, even if it
|
||||
does not have signals or slots, if it is intended to be used
|
||||
with qobject_cast<>. See also \l{Casting}.
|
||||
\o Normalize the arguments for signals and slots
|
||||
\li Normalize the arguments for signals and slots
|
||||
(see \l{http://qt-project.org/doc/qt-4.8/qmetaobject.html#normalizedSignature}{QMetaObject::normalizedSignature}
|
||||
inside connect statements
|
||||
to safely make signal and slot lookup a few cycles faster.
|
||||
@@ -658,34 +658,34 @@
|
||||
\section2 Including Headers
|
||||
|
||||
\list
|
||||
\o Use the following format to include Qt headers:
|
||||
\li Use the following format to include Qt headers:
|
||||
\c{#include <QWhatEver>}. Do not include the module as it might have changed between
|
||||
Qt4 and Qt5.
|
||||
\o Arrange includes in an order that goes from specific to generic to
|
||||
\li Arrange includes in an order that goes from specific to generic to
|
||||
ensure that the headers are self-contained. For example:
|
||||
\list
|
||||
\o \c{#include "myclass.h"}
|
||||
\o \c{#include "otherclassinplugin.h"}
|
||||
\o \c{#include <otherplugin/someclass.h>}
|
||||
\o \c{#include <QtClass>}
|
||||
\o \c{#include <stdthing>}
|
||||
\o \c{#include <system.h>}
|
||||
\li \c{#include "myclass.h"}
|
||||
\li \c{#include "otherclassinplugin.h"}
|
||||
\li \c{#include <otherplugin/someclass.h>}
|
||||
\li \c{#include <QtClass>}
|
||||
\li \c{#include <stdthing>}
|
||||
\li \c{#include <system.h>}
|
||||
\endlist
|
||||
\o Enclose headers from other plugins in square brackets (<>) rather than
|
||||
\li Enclose headers from other plugins in square brackets (<>) rather than
|
||||
quotation marks ("") to make it easier to spot external dependencies in
|
||||
the sources.
|
||||
\o Add empty lines between long blocks of \e peer headers and try to
|
||||
\li Add empty lines between long blocks of \e peer headers and try to
|
||||
arrange the headers in alphabetic order within a block.
|
||||
\endlist
|
||||
|
||||
\section2 Casting
|
||||
|
||||
\list
|
||||
\o Avoid C casts, prefer C++ casts (\c static_cast, \c const_cast,
|
||||
\li Avoid C casts, prefer C++ casts (\c static_cast, \c const_cast,
|
||||
\c reinterpret_cast) Both \c reinterpret_cast and
|
||||
C-style casts are dangerous, but at least \c reinterpret_cast
|
||||
will not remove the const modifier.
|
||||
\o Do not use \c dynamic_cast, use \c {qobject_cast} for QObjects, or
|
||||
\li Do not use \c dynamic_cast, use \c {qobject_cast} for QObjects, or
|
||||
refactor your design, for example by introducing a \c {type()}
|
||||
method (see QListWidgetItem), unless you know what you do.
|
||||
\endlist
|
||||
@@ -693,7 +693,7 @@
|
||||
\section2 Compiler and Platform-specific Issues
|
||||
|
||||
\list
|
||||
\o Be extremely careful when using the question mark operator.
|
||||
\li Be extremely careful when using the question mark operator.
|
||||
If the returned types are not identical, some compilers generate
|
||||
code that crashes at runtime (you will not even get a compiler warning):
|
||||
\code
|
||||
@@ -702,7 +702,7 @@
|
||||
return condition ? s : "nothing";
|
||||
\endcode
|
||||
|
||||
\o Be extremely careful about alignment.
|
||||
\li Be extremely careful about alignment.
|
||||
|
||||
Whenever a pointer is cast such that the required alignment of
|
||||
the target is increased, the resulting code might crash at runtime
|
||||
@@ -721,7 +721,7 @@
|
||||
};
|
||||
\endcode
|
||||
|
||||
\o Anything that has a constructor or needs to run code to be
|
||||
\li Anything that has a constructor or needs to run code to be
|
||||
initialized cannot be used as global object in library code,
|
||||
since it is undefined when that constructor or code will be run
|
||||
(on first usage, on library load, before \c {main()} or not at all).
|
||||
@@ -784,7 +784,7 @@
|
||||
will be run the first time the function is entered. The code is not
|
||||
reentrant, though.
|
||||
|
||||
\o A \c char is signed or unsigned dependent on the architecture. Use signed
|
||||
\li A \c char is signed or unsigned dependent on the architecture. Use signed
|
||||
\c char or \c uchar if you explicitly want a signed or unsigned char.
|
||||
The following code will break on PowerPC, for example:
|
||||
|
||||
@@ -796,11 +796,11 @@
|
||||
}
|
||||
\endcode
|
||||
|
||||
\o Avoid 64-bit enum values. The AAPCS (Procedure Call Standard
|
||||
\li Avoid 64-bit enum values. The AAPCS (Procedure Call Standard
|
||||
for the ARM Architecture) embedded ABI hard codes
|
||||
all enum values to a 32-bit integer.
|
||||
|
||||
\o Do not mix const and non-const iterators. This will silently crash
|
||||
\li Do not mix const and non-const iterators. This will silently crash
|
||||
on broken compilers.
|
||||
\code
|
||||
for (Container::const_iterator it = c.constBegin(); it != c.constEnd(); ++it)
|
||||
@@ -814,10 +814,10 @@
|
||||
\section2 Esthetics
|
||||
|
||||
\list
|
||||
\o Prefer enums to define const over static const int or defines.
|
||||
\li Prefer enums to define const over static const int or defines.
|
||||
Enumeration values will be replaced by the compiler at compile time,
|
||||
resulting in faster code. Defines are not namespace safe.
|
||||
\o Prefer verbose argument names in headers.
|
||||
\li Prefer verbose argument names in headers.
|
||||
Qt Creator will show the argument names in their completion box.
|
||||
It will look better in the documentation.
|
||||
\endlist
|
||||
@@ -828,8 +828,8 @@
|
||||
pitfalls:
|
||||
|
||||
\list
|
||||
\o The destructors are not virtual, which can lead to memory leaks.
|
||||
\o The symbols are not exported (and mostly inline), which can lead to
|
||||
\li The destructors are not virtual, which can lead to memory leaks.
|
||||
\li The symbols are not exported (and mostly inline), which can lead to
|
||||
symbol clashes.
|
||||
\endlist
|
||||
|
||||
@@ -845,16 +845,16 @@
|
||||
|
||||
\list
|
||||
|
||||
\o No C style casts (\c{-Wold-style-cast}). Use \c static_cast, \c const_cast
|
||||
\li No C style casts (\c{-Wold-style-cast}). Use \c static_cast, \c const_cast
|
||||
or \c reinterpret_cast, for basic types, use the constructor form:
|
||||
\c {int(a)} instead of \c {(int)a}. For more information, see \l{Casting}.
|
||||
|
||||
\o No float comparisons (\c{-Wfloat-equal}). Use \c qFuzzyCompare to compare
|
||||
\li No float comparisons (\c{-Wfloat-equal}). Use \c qFuzzyCompare to compare
|
||||
values with a delta. Use \c qIsNull to check whether a float is
|
||||
binary 0, instead of comparing it to 0.0, or, preferred, move
|
||||
such code into an implementation file.
|
||||
|
||||
\o Do not hide virtual methods in subclasses (\{-Woverloaded-virtual}).
|
||||
\li Do not hide virtual methods in subclasses (\{-Woverloaded-virtual}).
|
||||
If the baseclass A has a virtual \c {int val()} and subclass B an
|
||||
overload with the same name, \c {int val(int x)}, the A \c val function
|
||||
is hidden. Use the \c using keyword to make it visible again, and
|
||||
@@ -870,14 +870,14 @@
|
||||
};
|
||||
\endcode
|
||||
|
||||
\o Do not shadow variables (\c{-Wshadow}).
|
||||
\li Do not shadow variables (\c{-Wshadow}).
|
||||
|
||||
\o Avoid things like \c {this->x = x;} if possible.
|
||||
\li Avoid things like \c {this->x = x;} if possible.
|
||||
|
||||
\o Do not give variables the same name as functions declared in
|
||||
\li Do not give variables the same name as functions declared in
|
||||
your class.
|
||||
|
||||
\o To improve code readability, always check whether a preprocessor
|
||||
\li To improve code readability, always check whether a preprocessor
|
||||
variable is defined before probing its value (\c{-Wundef}).
|
||||
|
||||
\code
|
||||
@@ -892,7 +892,7 @@
|
||||
#if Foo - 0 == 0
|
||||
\endcode
|
||||
|
||||
\o When checking for a preprocessor define using the \c{defined}
|
||||
\li When checking for a preprocessor define using the \c{defined}
|
||||
operator, always include the variable name in parentheses.
|
||||
|
||||
\code
|
||||
|
||||
@@ -44,22 +44,22 @@
|
||||
|
||||
\section1 Basics
|
||||
\list
|
||||
\o \l{Getting and Building Qt Creator}
|
||||
\o \l{Creating Your First Plugin}
|
||||
\o \l{Plugin Specifications}
|
||||
\o \l{Plugin Life Cycle}
|
||||
\li \l{Getting and Building Qt Creator}
|
||||
\li \l{Creating Your First Plugin}
|
||||
\li \l{Plugin Specifications}
|
||||
\li \l{Plugin Life Cycle}
|
||||
\endlist
|
||||
|
||||
\section1 Design Principles
|
||||
\list
|
||||
\o \l{The Plugin Manager, the Object Pool, and Registered Objects}
|
||||
\o \l{Aggregations}
|
||||
\o \l{Extending and Providing Interfaces}
|
||||
\li \l{The Plugin Manager, the Object Pool, and Registered Objects}
|
||||
\li \l{Aggregations}
|
||||
\li \l{Extending and Providing Interfaces}
|
||||
\endlist
|
||||
|
||||
\section1 Creating 3rd-Party Plugins
|
||||
\list
|
||||
\o \l{A Note on Binary Compatibility}
|
||||
\o \l{Creating User-Installable Plugins}
|
||||
\li \l{A Note on Binary Compatibility}
|
||||
\li \l{Creating User-Installable Plugins}
|
||||
\endlist
|
||||
*/
|
||||
|
||||
@@ -49,19 +49,19 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Tag
|
||||
\o Meaning
|
||||
\li Tag
|
||||
\li Meaning
|
||||
\row
|
||||
\o externaltool
|
||||
\o Root element in the XML file that specifies an external tool.
|
||||
\li externaltool
|
||||
\li Root element in the XML file that specifies an external tool.
|
||||
\endtable
|
||||
\table
|
||||
\header
|
||||
\o Attribute
|
||||
\o Meaning
|
||||
\li Attribute
|
||||
\li Meaning
|
||||
\row
|
||||
\o id
|
||||
\o A string that identifies the external tool.
|
||||
\li id
|
||||
\li A string that identifies the external tool.
|
||||
Two tools cannot have the same id. Required.
|
||||
\endtable
|
||||
|
||||
@@ -74,17 +74,17 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Tag
|
||||
\o Meaning
|
||||
\li Tag
|
||||
\li Meaning
|
||||
\row
|
||||
\o description
|
||||
\o Short, one-line description of what the tool is for. Required.
|
||||
\li description
|
||||
\li Short, one-line description of what the tool is for. Required.
|
||||
\row
|
||||
\o displayname
|
||||
\o Name to show in the menu item for the tool. Required.
|
||||
\li displayname
|
||||
\li Name to show in the menu item for the tool. Required.
|
||||
\row
|
||||
\o category
|
||||
\o Name of the category to show the tool in.
|
||||
\li category
|
||||
\li Name of the category to show the tool in.
|
||||
This is the name of the sub menu of the \c { Tools > External }
|
||||
menu where the tool is placed. For example, specify the value
|
||||
\c "Text" to display the tool in the \c { Tools > External > Text }
|
||||
@@ -92,11 +92,11 @@
|
||||
\endtable
|
||||
\table
|
||||
\header
|
||||
\o Attribute
|
||||
\o Meaning
|
||||
\li Attribute
|
||||
\li Meaning
|
||||
\row
|
||||
\o xml:lang
|
||||
\o Language code (such as, \c "en" or \c "de") of the language that is used for
|
||||
\li xml:lang
|
||||
\li Language code (such as, \c "en" or \c "de") of the language that is used for
|
||||
the description, display name, or category. Optional.
|
||||
\endtable
|
||||
|
||||
@@ -107,27 +107,27 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Tag
|
||||
\o Meaning
|
||||
\li Tag
|
||||
\li Meaning
|
||||
\row
|
||||
\o executable
|
||||
\o Encloses subtags that specify what to run and which parameters to use. Required.
|
||||
\li executable
|
||||
\li Encloses subtags that specify what to run and which parameters to use. Required.
|
||||
\endtable
|
||||
\table
|
||||
\header
|
||||
\o Attribute
|
||||
\o Meaning
|
||||
\li Attribute
|
||||
\li Meaning
|
||||
\row
|
||||
\o output
|
||||
\o Specifies how to handle the tool's standard output stream.
|
||||
\li output
|
||||
\li Specifies how to handle the tool's standard output stream.
|
||||
Defaults to \c ShowInPane. Optional.
|
||||
\row
|
||||
\o error
|
||||
\o Specifies how to handle the tool's standard error stream.
|
||||
\li error
|
||||
\li Specifies how to handle the tool's standard error stream.
|
||||
Defaults to \c ShowInPane. Optional.
|
||||
\row
|
||||
\o modifiesdocument
|
||||
\o Specifies whether Qt Creator should expect changes to the current
|
||||
\li modifiesdocument
|
||||
\li Specifies whether Qt Creator should expect changes to the current
|
||||
document. If this flag is set, Qt Creator prompts users to save
|
||||
changes to the current document before running the tool,
|
||||
and silently reloads the current document after the tool has finished.
|
||||
@@ -140,28 +140,28 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Subtag
|
||||
\o Meaning
|
||||
\li Subtag
|
||||
\li Meaning
|
||||
\row
|
||||
\o path
|
||||
\o File path to the executable to run, including filename. If you
|
||||
\li path
|
||||
\li File path to the executable to run, including filename. If you
|
||||
specify the executable name without a path, Qt creator checks the
|
||||
system PATH environment variable for a path to the executable. You
|
||||
can specify the path multiple times. Qt Creator tries to resolve the
|
||||
references in the given order and runs the first executable that it
|
||||
finds. Required.
|
||||
\row
|
||||
\o arguments
|
||||
\o Command line arguments for the executable. Specify the string in the
|
||||
\li arguments
|
||||
\li Command line arguments for the executable. Specify the string in the
|
||||
same format (with respect to quoting and argument splitting, for
|
||||
example) as you would specify it on the command line of the platform
|
||||
the tool runs on. Optional.
|
||||
\row
|
||||
\o workingdirectory
|
||||
\o The working directory for the executable. Optional.
|
||||
\li workingdirectory
|
||||
\li The working directory for the executable. Optional.
|
||||
\row
|
||||
\o input
|
||||
\o A potentially multiline string that is passed to the tool via standard input stream.
|
||||
\li input
|
||||
\li A potentially multiline string that is passed to the tool via standard input stream.
|
||||
\endtable
|
||||
|
||||
\section1 Example
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
your plugin with.
|
||||
|
||||
\list 1
|
||||
\o Select \gui{File > New File or Project > Libraries > Qt Creator Plugin > Choose}.
|
||||
\li Select \gui{File > New File or Project > Libraries > Qt Creator Plugin > Choose}.
|
||||
|
||||
\image firstplugin-wizard.png "Choose the \QC Plugin Wizard"
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
\image firstplugin-nameandpath.png "Choose Name and Place of the Project"
|
||||
|
||||
\o Give your project a name and specify in which path
|
||||
\li Give your project a name and specify in which path
|
||||
this project will be created. The actual plugin's name can be different
|
||||
from the project name. You will choose that name later in the wizard.
|
||||
Continue to the next page.
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
\image firstplugin-kitselection.png "Choose the kit to build and run your project with"
|
||||
|
||||
\o Select the \l{glossary-buildandrun-kit}{kit} to build and run your project with.
|
||||
\li Select the \l{glossary-buildandrun-kit}{kit} to build and run your project with.
|
||||
For a \QC plugin this needs to be a kit with \gui{Desktop} device type,
|
||||
and a Qt version that is compatible with the Qt version that your
|
||||
\QC was built with (in the best case the exact same build).
|
||||
@@ -65,35 +65,35 @@
|
||||
|
||||
\image firstplugin-pluginsetup.png "Specify Your Plugin Details"
|
||||
|
||||
\o In the \gui{Plugin name} field, type \gui{Example}. The name of the plugin
|
||||
\li In the \gui{Plugin name} field, type \gui{Example}. The name of the plugin
|
||||
is used as its identifier, and also is the base for the file names and
|
||||
classes in the code.
|
||||
|
||||
\o The values of the following fields are mainly informational, and
|
||||
\li The values of the following fields are mainly informational, and
|
||||
are shown in the detailed view in \QC's plugin overview
|
||||
(\gui{Help > About Plugins}, or \gui{Qt Creator > About Plugins}
|
||||
on Mac).
|
||||
|
||||
\list
|
||||
\o \gui{Vendor name} is a short one-word name of the company
|
||||
\li \gui{Vendor name} is a short one-word name of the company
|
||||
or organization that created the plugin. This is also used for
|
||||
the path name where the plugin will be deployed to.
|
||||
\o \gui{Copyright} is a one-line, short copyright string.
|
||||
\o \gui{License} is a multi-line license text (but shouldn't be pages over pages long,
|
||||
\li \gui{Copyright} is a one-line, short copyright string.
|
||||
\li \gui{License} is a multi-line license text (but shouldn't be pages over pages long,
|
||||
since the interface doesn't allow nice reading of long texts).
|
||||
\o \gui{Description} is a relatively short, but
|
||||
\li \gui{Description} is a relatively short, but
|
||||
possibly multi-line description of what the plugin does.
|
||||
\o \gui{URL} is a website where the user can find more
|
||||
\li \gui{URL} is a website where the user can find more
|
||||
information about the plugin and/or organization providing it.
|
||||
\endlist
|
||||
|
||||
\o Set the \gui{Qt Creator sources} and \gui{Qt Creator build} fields to
|
||||
\li Set the \gui{Qt Creator sources} and \gui{Qt Creator build} fields to
|
||||
the source and build directory of the \QC
|
||||
instance you want to use to test your plugin with, respectively.
|
||||
If you don't do that correctly you will get compile errors for your
|
||||
plugin, and your plugin might not show up in \QC at all.
|
||||
|
||||
\o In the \gui{Deploy into} list, select \gui{Qt Creator build}. This sets
|
||||
\li In the \gui{Deploy into} list, select \gui{Qt Creator build}. This sets
|
||||
your .pro file up to deploy your plugin directly into your \QC build's
|
||||
plugin directory (requires you to have write permissions there).
|
||||
The other option, \gui{Local user settings}, sets your .pro file up to
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
\image firstplugin-summary.png "Summary of Created Files"
|
||||
|
||||
\o Review the files that will be created, choose a version control
|
||||
\li Review the files that will be created, choose a version control
|
||||
system that \QC should use for your project (always a good idea!),
|
||||
and finish the wizard.
|
||||
\endlist
|
||||
@@ -138,26 +138,26 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o File
|
||||
\o Role
|
||||
\li File
|
||||
\li Role
|
||||
\row
|
||||
\o \c{Example.pluginspec.in}
|
||||
\o Template plugin specification. QMake creates a \c{Example.pluginspec}
|
||||
\li \c{Example.pluginspec.in}
|
||||
\li Template plugin specification. QMake creates a \c{Example.pluginspec}
|
||||
from this file, which is read by \QC to find out about the plugin.
|
||||
\row
|
||||
\o \c{example.pro}
|
||||
\o Project file, used by QMake to generate a Makefile that then is used to
|
||||
\li \c{example.pro}
|
||||
\li Project file, used by QMake to generate a Makefile that then is used to
|
||||
build the plugin.
|
||||
\row
|
||||
\o \c{example_global.h}
|
||||
\o Contains macro definitions that are useful when this plugin should export
|
||||
\li \c{example_global.h}
|
||||
\li Contains macro definitions that are useful when this plugin should export
|
||||
symbols to other plugins.
|
||||
\row
|
||||
\o \c{exampleconstants.h}
|
||||
\o Header defining constants used by the plugin code.
|
||||
\li \c{exampleconstants.h}
|
||||
\li Header defining constants used by the plugin code.
|
||||
\row
|
||||
\o \c{exampleplugin.h/.cpp}
|
||||
\o C++ header and source files that define the plugin class that will be
|
||||
\li \c{exampleplugin.h/.cpp}
|
||||
\li C++ header and source files that define the plugin class that will be
|
||||
instanciated and run by \QC's plugin manager.
|
||||
\endtable
|
||||
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
When you start \QC, the plugin manager does the following:
|
||||
|
||||
\list 1
|
||||
\o Looks in its search paths for
|
||||
\li Looks in its search paths for
|
||||
all .pluginspec files, and reads them. This is the first point where
|
||||
loading a plugin can fail in the worst case of a malformed plugin spec.
|
||||
|
||||
\o Creates an instance of the \l{ExtensionSystem::PluginSpec} class for
|
||||
\li Creates an instance of the \l{ExtensionSystem::PluginSpec} class for
|
||||
each plugin. This class is a container for
|
||||
all the information from the plugin specification, and additionally
|
||||
tracks the state of the plugin.
|
||||
@@ -40,28 +40,28 @@
|
||||
method, or, after a plugin is loaded, through the plugin's
|
||||
\l{ExtensionSystem::IPlugin::pluginSpec()}{pluginSpec()} method.
|
||||
|
||||
\o Sets the plugins to \c Read state.
|
||||
\li Sets the plugins to \c Read state.
|
||||
|
||||
\o Verifies that the dependencies of each plugin
|
||||
\li Verifies that the dependencies of each plugin
|
||||
exist and are compatible. For more information about plugin dependencies,
|
||||
see \l{Plugin Specifications}.
|
||||
|
||||
\o Sets the plugins to \c Resolved state.
|
||||
\li Sets the plugins to \c Resolved state.
|
||||
|
||||
\o Sorts all plugins into a list that we call the \e{load queue}, where the
|
||||
\li Sorts all plugins into a list that we call the \e{load queue}, where the
|
||||
dependencies of a plugin are positioned after the plugin
|
||||
(but not necessarily \e directly after the plugin).
|
||||
It will make sure that we load
|
||||
and initialize the plugins in proper order.
|
||||
|
||||
\o Loads the plugins' libraries, and creates their IPlugin instances
|
||||
\li Loads the plugins' libraries, and creates their IPlugin instances
|
||||
in the order of the load queue. At this point the
|
||||
plugin constructors are called. Plugins that other plugins depend on
|
||||
are created first.
|
||||
|
||||
\o Sets the plugins to \c Loaded state.
|
||||
\li Sets the plugins to \c Loaded state.
|
||||
|
||||
\o Calls the \l{ExtensionSystem::IPlugin::initialize()}{initialize()} methods of
|
||||
\li Calls the \l{ExtensionSystem::IPlugin::initialize()}{initialize()} methods of
|
||||
all plugins in the order of the load queue. In the \c initialize method,
|
||||
a plugin should make sure that all exported interfaces are set up and available
|
||||
to other plugins. A plugin can assume that plugins they depend on have set up
|
||||
@@ -72,16 +72,16 @@
|
||||
The \l{ExtensionSystem::IPlugin::initialize()}{initialize()} method of a plugin
|
||||
is a good place for
|
||||
\list
|
||||
\o registering objects in the plugin manager's object pool
|
||||
\li registering objects in the plugin manager's object pool
|
||||
(see \l{The Plugin Manager, the Object Pool, and Registered Objects})
|
||||
\o loading settings
|
||||
\o adding new menus, and new actions to menus
|
||||
\o connecting to other plugin's signals.
|
||||
\li loading settings
|
||||
\li adding new menus, and new actions to menus
|
||||
\li connecting to other plugin's signals.
|
||||
\endlist
|
||||
|
||||
\o Sets the plugins to \c Initialized state.
|
||||
\li Sets the plugins to \c Initialized state.
|
||||
|
||||
\o Calls the \l{ExtensionSystem::IPlugin::extensionsInitialized()}{extensionsInitialized()}
|
||||
\li Calls the \l{ExtensionSystem::IPlugin::extensionsInitialized()}{extensionsInitialized()}
|
||||
methods of all plugins in \e reverse order of the load queue. After
|
||||
the \c extensionsInitialized method, a plugin should be fully initialized, set up
|
||||
and running. A plugin can assume that plugins that depend on it are fully set up,
|
||||
@@ -89,7 +89,7 @@
|
||||
For example, the \c Core plugin assumes that all plugins have registered
|
||||
their actions, and finishes initialization of the action manager.
|
||||
|
||||
\o Sets the plugins to \c Running state.
|
||||
\li Sets the plugins to \c Running state.
|
||||
\endlist
|
||||
|
||||
At the end of startup, the \c Core plugin's \l{Core::ICore} sends two signals.
|
||||
@@ -111,7 +111,7 @@
|
||||
plugin manager starts its shutdown sequence:
|
||||
|
||||
\list 1
|
||||
\o Calls the \l{ExtensionSystem::IPlugin::aboutToShutdown()}{aboutToShutdown()} methods of
|
||||
\li Calls the \l{ExtensionSystem::IPlugin::aboutToShutdown()}{aboutToShutdown()} methods of
|
||||
all plugins in the order of the load queue. Plugins should perform measures
|
||||
for speeding up the actual shutdown here, like disconnecting signals that
|
||||
would otherwise needlessly be called.
|
||||
@@ -122,7 +122,7 @@
|
||||
event loop running, until all plugins requesting AsynchronousShutdown have sent
|
||||
the asynchronousShutdownFinished() signal.
|
||||
|
||||
\o Destroys all plugins by deleting their \l{ExtensionSystem::IPlugin}
|
||||
\li Destroys all plugins by deleting their \l{ExtensionSystem::IPlugin}
|
||||
instances in \e reverse order of the load queue. At this point the plugin destructors
|
||||
are called. Plugins should clean up after themselves by freeing memory and other resources.
|
||||
\endlist
|
||||
|
||||
@@ -35,31 +35,31 @@
|
||||
and \c disabledByDefault.
|
||||
\table
|
||||
\header
|
||||
\o Tag
|
||||
\o Meaning
|
||||
\li Tag
|
||||
\li Meaning
|
||||
\row
|
||||
\o plugin
|
||||
\o Root element in a plugin's XML file.
|
||||
\li plugin
|
||||
\li Root element in a plugin's XML file.
|
||||
\endtable
|
||||
\table
|
||||
\header
|
||||
\o Attribute
|
||||
\o Meaning
|
||||
\li Attribute
|
||||
\li Meaning
|
||||
\row
|
||||
\o name
|
||||
\o This is used as an identifier for the plugin and can e.g.
|
||||
\li name
|
||||
\li This is used as an identifier for the plugin and can e.g.
|
||||
be referenced in other plugin's dependencies. It is
|
||||
also used to construct the name of the plugin library
|
||||
as \c{lib[name].[dll|.so|.dylib]}. (Depending on platform.
|
||||
If you use the same string as the \c TARGET in your plugin's
|
||||
.pro-file, you are fine.)
|
||||
\row
|
||||
\o version
|
||||
\o Version string in the form \c{x.y.z_n}, used for identifying
|
||||
\li version
|
||||
\li Version string in the form \c{x.y.z_n}, used for identifying
|
||||
the plugin. Also see \l{A Note on Plugin Versions}.
|
||||
\row
|
||||
\o compatVersion
|
||||
\o Optional. If not given, it is implicitly
|
||||
\li compatVersion
|
||||
\li Optional. If not given, it is implicitly
|
||||
set to the same value as \c version. The compatibility version
|
||||
states which version of this plugin the current version is
|
||||
binary backward compatible with and is used to resolve dependencies
|
||||
@@ -68,14 +68,14 @@
|
||||
is binary backward compatible with all versions of the plugin down to \c{2.0.0}
|
||||
(inclusive).
|
||||
\row
|
||||
\o experimental
|
||||
\o Optional. Can be \c true or \c false, defaults to \c false.
|
||||
\li experimental
|
||||
\li Optional. Can be \c true or \c false, defaults to \c false.
|
||||
Experimental plugins are not loaded by default but must be explicitly
|
||||
enabled by the user. This attribute should be enabled for new plugins which have the
|
||||
potential to negatively affect the user experience.
|
||||
\row
|
||||
\o disabledByDefault
|
||||
\o Optional. Can be \c true or \c false, defaults to \c false.
|
||||
\li disabledByDefault
|
||||
\li Optional. Can be \c true or \c false, defaults to \c false.
|
||||
If set, the respective plugin is not loaded by default but must be explicitly
|
||||
enabled by the user. This should be done for plugins which are not expected
|
||||
to be used by so many people as to justify the additional resource consumption.
|
||||
@@ -88,37 +88,37 @@
|
||||
are optional.
|
||||
\table
|
||||
\header
|
||||
\o Tag
|
||||
\o Meaning
|
||||
\li Tag
|
||||
\li Meaning
|
||||
\row
|
||||
\o category
|
||||
\o Defaults to \c Utilities. Is used to put related plugins
|
||||
\li category
|
||||
\li Defaults to \c Utilities. Is used to put related plugins
|
||||
under the same tree node in the plugin overview \gui{About Plugins...}.
|
||||
\row
|
||||
\o vendor
|
||||
\o String that describes the plugin creator/vendor,
|
||||
\li vendor
|
||||
\li String that describes the plugin creator/vendor,
|
||||
like \c{MyCompany}.
|
||||
\row
|
||||
\o copyright
|
||||
\o A short copyright notice, like \c{(C) 2007-2008 MyCompany}.
|
||||
\li copyright
|
||||
\li A short copyright notice, like \c{(C) 2007-2008 MyCompany}.
|
||||
\row
|
||||
\o platform
|
||||
\o A regular expression that matches the names of the platforms the plugin works on.
|
||||
\li platform
|
||||
\li A regular expression that matches the names of the platforms the plugin works on.
|
||||
Omitting the tag implies that the plugin is loaded on all platforms.
|
||||
\row
|
||||
\o license
|
||||
\o Possibly multi-line license information about the plugin.
|
||||
\li license
|
||||
\li Possibly multi-line license information about the plugin.
|
||||
Should still be kept relatively short, since the UI is not
|
||||
designed for long texts.
|
||||
\row
|
||||
\o description
|
||||
\o Possibly multi-line description of what the plugin is supposed
|
||||
\li description
|
||||
\li Possibly multi-line description of what the plugin is supposed
|
||||
to provide.
|
||||
Should still be kept relatively short, since the UI is not
|
||||
designed for long texts.
|
||||
\row
|
||||
\o url
|
||||
\o Link to further information about the plugin, like
|
||||
\li url
|
||||
\li Link to further information about the plugin, like
|
||||
\c{http://www.mycompany-online.com/products/greatplugin}.
|
||||
\endtable
|
||||
|
||||
@@ -141,8 +141,8 @@
|
||||
(as defined in the attributes of the plugin's \c plugin tag) matches
|
||||
the dependency if
|
||||
\list
|
||||
\o its \c name matches \c dependencyName, and
|
||||
\o \c {compatVersion <= dependencyVersion <= version}.
|
||||
\li its \c name matches \c dependencyName, and
|
||||
\li \c {compatVersion <= dependencyVersion <= version}.
|
||||
\endlist
|
||||
For example a dependency
|
||||
\code
|
||||
@@ -157,27 +157,27 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Tag
|
||||
\o Meaning
|
||||
\li Tag
|
||||
\li Meaning
|
||||
\row
|
||||
\o dependency
|
||||
\o Describes a dependency on another plugin.
|
||||
\li dependency
|
||||
\li Describes a dependency on another plugin.
|
||||
\endtable
|
||||
\table
|
||||
\header
|
||||
\o Attribute
|
||||
\o Meaning
|
||||
\li Attribute
|
||||
\li Meaning
|
||||
\row
|
||||
\o name
|
||||
\o The name of the plugin, on which this plugin relies.
|
||||
\li name
|
||||
\li The name of the plugin, on which this plugin relies.
|
||||
\row
|
||||
\o version
|
||||
\o The version to which the plugin must be compatible to
|
||||
\li version
|
||||
\li The version to which the plugin must be compatible to
|
||||
fill the dependency, in the form \c{x.y.z_n}.
|
||||
Can be empty if the version does not matter.
|
||||
\row
|
||||
\o type
|
||||
\o Optional. Value \c required or \c optional. Defines if the dependency is
|
||||
\li type
|
||||
\li Optional. Value \c required or \c optional. Defines if the dependency is
|
||||
a hard requirement or optional. Defaults to \c{required}.
|
||||
\endtable
|
||||
|
||||
@@ -187,9 +187,9 @@
|
||||
\c {type="optional"} attribute to the \c dependency tag:
|
||||
|
||||
\list
|
||||
\o If the dependency can be resolved, the plugin and
|
||||
\li If the dependency can be resolved, the plugin and
|
||||
its dependency are loaded and initialized as for \c required dependencies.
|
||||
\o If the dependency cannot be resolved, the plugin is loaded and initialized
|
||||
\li If the dependency cannot be resolved, the plugin is loaded and initialized
|
||||
as if the dependency was not declared at all.
|
||||
\endlist
|
||||
|
||||
@@ -221,23 +221,23 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Tag
|
||||
\o Meaning
|
||||
\li Tag
|
||||
\li Meaning
|
||||
\row
|
||||
\o argument
|
||||
\o Describes a command line argument that the plugin wants to handle.
|
||||
\li argument
|
||||
\li Describes a command line argument that the plugin wants to handle.
|
||||
\endtable
|
||||
\table
|
||||
\header
|
||||
\o Attribute
|
||||
\o Meaning
|
||||
\li Attribute
|
||||
\li Meaning
|
||||
\row
|
||||
\o name
|
||||
\o The command line argument itself, including the \c - prefix, e.g.
|
||||
\li name
|
||||
\li The command line argument itself, including the \c - prefix, e.g.
|
||||
\c{-my-parameter}.
|
||||
\row
|
||||
\o parameter
|
||||
\o Optional. If this is given, the command line argument expects an
|
||||
\li parameter
|
||||
\li Optional. If this is given, the command line argument expects an
|
||||
additional parameter, e.g. \c{-my-parameter somevalue}. The
|
||||
value of this attribute is used as a very short description of the
|
||||
parameter for the user.
|
||||
|
||||
@@ -44,48 +44,48 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Method
|
||||
\o Description
|
||||
\li Method
|
||||
\li Description
|
||||
\row
|
||||
\o instance()
|
||||
\o Returns the singleton plugin manager instance, for example for connecting to signals.
|
||||
\li instance()
|
||||
\li Returns the singleton plugin manager instance, for example for connecting to signals.
|
||||
\row
|
||||
\o addObject()
|
||||
\o Registers an object in the object pool.
|
||||
\li addObject()
|
||||
\li Registers an object in the object pool.
|
||||
Also available through ExtensionSystem::IPlugin::addObject().
|
||||
\row
|
||||
\o removeObject()
|
||||
\o Unregisters an object from the object pool.
|
||||
\li removeObject()
|
||||
\li Unregisters an object from the object pool.
|
||||
Also available through ExtensionSystem::IPlugin::removeObject().
|
||||
\row
|
||||
\o getObjects<T>()
|
||||
\o Returns all objects of type T that are registered in the object pool.
|
||||
\li getObjects<T>()
|
||||
\li Returns all objects of type T that are registered in the object pool.
|
||||
This respects \l{Aggregations}.
|
||||
\row
|
||||
\o getObject<T>()
|
||||
\o Returns one object of type T that is registered in the object pool.
|
||||
\li getObject<T>()
|
||||
\li Returns one object of type T that is registered in the object pool.
|
||||
This respects \l{Aggregations}.
|
||||
\row
|
||||
\o getObjectByName(const QString &name)
|
||||
\o Returns one object with the given object name that is registered in the object pool.
|
||||
\li getObjectByName(const QString &name)
|
||||
\li Returns one object with the given object name that is registered in the object pool.
|
||||
\row
|
||||
\o getObjectByClassName(const QString &className)
|
||||
\o Returns one object with the given class name that is registered in the object pool.
|
||||
\li getObjectByClassName(const QString &className)
|
||||
\li Returns one object with the given class name that is registered in the object pool.
|
||||
\endtable
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Signal
|
||||
\o Description
|
||||
\li Signal
|
||||
\li Description
|
||||
\row
|
||||
\o objectAdded(QObject *object)
|
||||
\o Sent after an object is registered in the object pool.
|
||||
\li objectAdded(QObject *object)
|
||||
\li Sent after an object is registered in the object pool.
|
||||
\row
|
||||
\o aboutToRemoveObject(QObject *object)
|
||||
\o Sent just before an object is unregistered from the object pool.
|
||||
\li aboutToRemoveObject(QObject *object)
|
||||
\li Sent just before an object is unregistered from the object pool.
|
||||
\row
|
||||
\o initializationDone()
|
||||
\o Sent when plugins are running and all delayed initialization is done.
|
||||
\li initializationDone()
|
||||
\li Sent when plugins are running and all delayed initialization is done.
|
||||
\endtable
|
||||
|
||||
\target object pool
|
||||
|
||||
@@ -36,26 +36,26 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Library Name
|
||||
\o Description
|
||||
\li Library Name
|
||||
\li Description
|
||||
|
||||
\row
|
||||
\o \l{Aggregation}
|
||||
\o Adds functionality for "glueing" QObjects of different
|
||||
\li \l{Aggregation}
|
||||
\li Adds functionality for "glueing" QObjects of different
|
||||
types together, so you can "cast" between them.
|
||||
|
||||
\row
|
||||
\o \l{ExtensionSystem}
|
||||
\o Implements the plugin loader framework. Provides a base class for plugins and
|
||||
\li \l{ExtensionSystem}
|
||||
\li Implements the plugin loader framework. Provides a base class for plugins and
|
||||
basic mechanisms for plugin interaction like an object pool.
|
||||
|
||||
\row
|
||||
\o \l{Utils}
|
||||
\o General utility library.
|
||||
\li \l{Utils}
|
||||
\li General utility library.
|
||||
|
||||
\row
|
||||
\o \l{QmlJS}
|
||||
\o QML and JavaScript language support library.
|
||||
\li \l{QmlJS}
|
||||
\li QML and JavaScript language support library.
|
||||
|
||||
\endtable
|
||||
|
||||
@@ -63,12 +63,12 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Library Name
|
||||
\o Description
|
||||
\li Library Name
|
||||
\li Description
|
||||
|
||||
\row
|
||||
\o \l{qtcreatorcdbext}
|
||||
\o Windows CDB debugger extension
|
||||
\li \l{qtcreatorcdbext}
|
||||
\li Windows CDB debugger extension
|
||||
|
||||
|
||||
\endtable
|
||||
@@ -82,38 +82,37 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Plugin Name
|
||||
\o Description
|
||||
\li Plugin Name
|
||||
\li Description
|
||||
|
||||
\row
|
||||
\o \l{Core}
|
||||
\o The core plugin. Provides the main window and managers for editors,
|
||||
\li \l{Core}
|
||||
\li The core plugin. Provides the main window and managers for editors,
|
||||
actions, mode windows and files, just to mention the most important ones.
|
||||
|
||||
\row
|
||||
\o \l{ProjectExplorer}
|
||||
\o The project explorer plugin. Provides base classes for
|
||||
project handling.
|
||||
\li \l{ProjectExplorer}
|
||||
\li The project explorer plugin. Provides base classes for project handling.
|
||||
|
||||
\row
|
||||
\o \l{Find}
|
||||
\o Support for searching text in arbitrary widgets, and arbitrary other things.
|
||||
\li \l{Find}
|
||||
\li Support for searching text in arbitrary widgets, and arbitrary other things.
|
||||
|
||||
\row
|
||||
\o \l{Locator}
|
||||
\o Hooks for providing content for Locator.
|
||||
\li \l{Locator}
|
||||
\li Hooks for providing content for Locator.
|
||||
|
||||
\row
|
||||
\o \l{Debugger}
|
||||
\o Debugging functionality.
|
||||
\li \l{Debugger}
|
||||
\li Debugging functionality.
|
||||
|
||||
\row
|
||||
\o \l{VcsBase}
|
||||
\o Base classes for version control support.
|
||||
\li \l{VcsBase}
|
||||
\li Base classes for version control support.
|
||||
|
||||
\row
|
||||
\o \l{TextEditor}
|
||||
\o This is where everything starts if you want to create a text editor. Besides
|
||||
\li \l{TextEditor}
|
||||
\li This is where everything starts if you want to create a text editor. Besides
|
||||
the base editor itself, this plugin contains APIs for supporting functionality
|
||||
like \l{Snippets}{snippets}, highlighting, \l{CodeAssist}{code assist}, indentation
|
||||
and style, and others.
|
||||
@@ -159,90 +158,91 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Task
|
||||
\o Details
|
||||
\o API
|
||||
\li Task
|
||||
\li Details
|
||||
\li API
|
||||
|
||||
\row
|
||||
\o Add a menu or menu item.
|
||||
\o You can extend existing menus or create new ones.
|
||||
\o \l{Core::ActionManager}, \l{Core::Command}
|
||||
\li Add a menu or menu item.
|
||||
\li You can extend existing menus or create new ones.
|
||||
\li \l{Core::ActionManager}, \l{Core::Command}
|
||||
|
||||
\row
|
||||
\o Add a configurable keyboard shortcut.
|
||||
\o Registering shortcuts makes it possible for users to configure them in
|
||||
\li Add a configurable keyboard shortcut.
|
||||
\li Registering shortcuts makes it possible for users to configure them in
|
||||
the common shortcut settings dialog.
|
||||
\o \l{Core::ActionManager}, \l{Core::Command}
|
||||
\li \l{Core::ActionManager}, \l{Core::Command}
|
||||
|
||||
\row
|
||||
\o Add a mode.
|
||||
\o Modes correspond to complete screens of controls, specialized for a task.
|
||||
\o \l{Core::IMode}
|
||||
\li Add a mode.
|
||||
\li Modes correspond to complete screens of controls, specialized for a task.
|
||||
\li \l{Core::IMode}
|
||||
|
||||
\row
|
||||
\o Add a new editor type.
|
||||
\o Such as an editor for XML files.
|
||||
\o \l{Core::IEditorFactory}, \l{Core::IEditor}, \l{Core::IDocument}
|
||||
\li Add a new editor type.
|
||||
\li Such as an editor for XML files.
|
||||
\li \l{Core::IEditorFactory}, \l{Core::IEditor}, \l{Core::IDocument}
|
||||
|
||||
\row
|
||||
\o Add a new wizard.
|
||||
\o You can extend the wizards in File > New File or Project with your own
|
||||
\li Add a new wizard.
|
||||
\li You can extend the wizards in File > New File or Project with your own
|
||||
file and project templates.
|
||||
\o \l{Core::IWizard}, \l{Core::StandardFileWizard},
|
||||
\li \l{Core::IWizard}, \l{Core::StandardFileWizard},
|
||||
\l{Core::BaseFileWizard}, \l{Core::BaseFileWizardParameters}
|
||||
|
||||
\row
|
||||
\o Add support for a new version control system.
|
||||
\o Version control systems integrated in QtCreator are Bazaar, CVS, Git,
|
||||
\li Add support for a new version control system.
|
||||
\li Version control systems integrated in QtCreator are Bazaar, CVS, Git,
|
||||
Mecurial, Perforce, and Subversion.
|
||||
\o \l{Core::IVersionControl}
|
||||
\li \l{Core::IVersionControl}
|
||||
|
||||
\row
|
||||
\o Add a view to the navigation sidebar.
|
||||
\o The one which shows the project tree, filesystem, open documents or bookmarks.
|
||||
\o \l{Core::INavigationWidgetFactory}
|
||||
\li Add a view to the navigation sidebar.
|
||||
\li The one which shows the project tree, filesystem, open documents or bookmarks.
|
||||
\li \l{Core::INavigationWidgetFactory}
|
||||
|
||||
\row
|
||||
\o Add an options page to the \gui Options dialog.
|
||||
\o Add a new page to existing or new category in Tools > Options.
|
||||
\o \l{Core::IOptionsPage}
|
||||
\li Add an options page to the \gui Options dialog.
|
||||
\li Add a new page to existing or new category in Tools > Options.
|
||||
\li \l{Core::IOptionsPage}
|
||||
|
||||
\row
|
||||
\o Add a find filter to the \gui Find dialog.
|
||||
\o Implement any kind of search term based search.
|
||||
\o \l{Find::IFindFilter}, \l{Find::SearchResultWindow}
|
||||
\li Add a find filter to the \gui Find dialog.
|
||||
\li Implement any kind of search term based search.
|
||||
\li \l{Find::IFindFilter}, \l{Find::SearchResultWindow}
|
||||
|
||||
\row
|
||||
\o Add support for the find tool bar to a widget.
|
||||
\o The widget that has focus is asked whether it supports text search. You can
|
||||
\li Add support for the find tool bar to a widget.
|
||||
\li The widget that has focus is asked whether it supports text search. You can
|
||||
add support for widgets under your control.
|
||||
\o \l{Find::IFindSupport}, \l{Find::BaseTextFind}
|
||||
\li \l{Find::IFindSupport}, \l{Find::BaseTextFind}
|
||||
|
||||
\row
|
||||
\o Add a completely new project type.
|
||||
\o
|
||||
\o
|
||||
\li Add a completely new project type.
|
||||
\li
|
||||
\li
|
||||
|
||||
\row
|
||||
\o Add a new type of build step.
|
||||
\o
|
||||
\o
|
||||
\li Add a new type of build step.
|
||||
\li
|
||||
\li
|
||||
|
||||
\row
|
||||
\o Add a new filter to the locator.
|
||||
\o For a text typed in by the user you provide a list of things to show in the popup. When the user selects an entry you are requested to do whatever you want.
|
||||
\o \l{Locator::ILocatorFilter}, \l{Locator::FilterEntry}, \l{Locator::BaseFileFilter}
|
||||
\li Add a new filter to the locator.
|
||||
\li For a text typed in by the user you provide a list of things to show in the popup.
|
||||
When the user selects an entry you are requested to do whatever you want.
|
||||
\li \l{Locator::ILocatorFilter}, \l{Locator::FilterEntry}, \l{Locator::BaseFileFilter}
|
||||
|
||||
\row
|
||||
\o Show a progress indicator for a concurrently running task.
|
||||
\o You can show a progress indicator for your tasks in the left hand tool bar,
|
||||
\li Show a progress indicator for a concurrently running task.
|
||||
\li You can show a progress indicator for your tasks in the left hand tool bar,
|
||||
and also in the application icon (on platforms that support it).
|
||||
\o \l{Core::ProgressManager}, \l{Core::FutureProgress}
|
||||
\li \l{Core::ProgressManager}, \l{Core::FutureProgress}
|
||||
|
||||
\row
|
||||
\o
|
||||
\o
|
||||
\o
|
||||
\li
|
||||
\li
|
||||
\li
|
||||
|
||||
\endtable
|
||||
*/
|
||||
|
||||
@@ -31,17 +31,17 @@
|
||||
|
||||
Implementing wizards requires:
|
||||
\list
|
||||
\o Deciding on a base class:
|
||||
\li Deciding on a base class:
|
||||
\list
|
||||
\o Core::IWizard is a very generic interface that does
|
||||
\li Core::IWizard is a very generic interface that does
|
||||
not make any assumption about what the wizard does and
|
||||
what its UI looks like.
|
||||
|
||||
\o Core::BaseFileWizard should be used for wizards that
|
||||
\li Core::BaseFileWizard should be used for wizards that
|
||||
generate files using a UI based on Utils::Wizard.
|
||||
\endlist
|
||||
|
||||
\o Providing a set of parameters that determine how the wizard shows up
|
||||
\li Providing a set of parameters that determine how the wizard shows up
|
||||
in the list of wizards in the \gui{New File or Project} dialog.
|
||||
|
||||
When deriving from Core::IWizard, virtual functions returning the
|
||||
@@ -52,13 +52,13 @@
|
||||
on which the parameters can be set. This allows for easy creation
|
||||
of several wizard instances with slightly different parameters.
|
||||
|
||||
\o Implementing the wizard UI
|
||||
\li Implementing the wizard UI
|
||||
|
||||
Typically, this will be a class derived from Utils::Wizard.
|
||||
Utils::Wizard extends QWizard with the functionality to show a progress
|
||||
bar on the left.
|
||||
|
||||
\o Implementing the wizard functionality
|
||||
\li Implementing the wizard functionality
|
||||
|
||||
When deriving from Core::BaseFileWizard, a list of Core::GeneratedFile
|
||||
needs to be populated with the files and their contents.
|
||||
@@ -72,44 +72,44 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Class
|
||||
\o Description
|
||||
\li Class
|
||||
\li Description
|
||||
|
||||
\row
|
||||
\o Core::IWizard
|
||||
\o Qt Creator wizard interface, implementations of which are registered with
|
||||
\li Core::IWizard
|
||||
\li Qt Creator wizard interface, implementations of which are registered with
|
||||
ExtensionSystem::PluginManager.
|
||||
|
||||
\row
|
||||
\o Core::BaseFileWizard
|
||||
\o Inherits Core::IWizard and provides a base class for generating files with a UI
|
||||
\li Core::BaseFileWizard
|
||||
\li Inherits Core::IWizard and provides a base class for generating files with a UI
|
||||
based on QWizard.
|
||||
|
||||
\row
|
||||
\o Core::BaseFileWizardParameters
|
||||
\o Contains parameters for Core::BaseFileWizard.
|
||||
\li Core::BaseFileWizardParameters
|
||||
\li Contains parameters for Core::BaseFileWizard.
|
||||
|
||||
\row
|
||||
\o Core::GeneratedFile
|
||||
\o A file as produced by Core::BaseFileWizard, containing name, contents and some
|
||||
\li Core::GeneratedFile
|
||||
\li A file as produced by Core::BaseFileWizard, containing name, contents and some
|
||||
attributes.
|
||||
|
||||
\row
|
||||
\o Utils::FileWizardPage
|
||||
\o Introductory wizard page asking for file name and path.
|
||||
\li Utils::FileWizardPage
|
||||
\li Introductory wizard page asking for file name and path.
|
||||
|
||||
\row
|
||||
\o Utils::FileWizardDialog
|
||||
\o A wizard dialog presenting a Utils::FileWizardPage, which can be extended
|
||||
\li Utils::FileWizardDialog
|
||||
\li A wizard dialog presenting a Utils::FileWizardPage, which can be extended
|
||||
by custom pages.
|
||||
|
||||
\row
|
||||
\o Utils::ProjectIntroPage
|
||||
\o Introductory wizard page asking for project name and path.
|
||||
\li Utils::ProjectIntroPage
|
||||
\li Introductory wizard page asking for project name and path.
|
||||
|
||||
\row
|
||||
\o ProjectExplorer::BaseProjectWizardDialog
|
||||
\o Base class for project wizard dialogs, presenting
|
||||
\li ProjectExplorer::BaseProjectWizardDialog
|
||||
\li Base class for project wizard dialogs, presenting
|
||||
a Utils::ProjectIntroPage.
|
||||
|
||||
\endtable
|
||||
@@ -123,45 +123,45 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Type
|
||||
\o Parameter Name
|
||||
\o Description
|
||||
\li Type
|
||||
\li Parameter Name
|
||||
\li Description
|
||||
|
||||
\row
|
||||
\o Core::IWizard::WizardKind
|
||||
\o kind
|
||||
\o Enumeration value that indicates the type of the wizard (project, class, file).
|
||||
\li Core::IWizard::WizardKind
|
||||
\li kind
|
||||
\li Enumeration value that indicates the type of the wizard (project, class, file).
|
||||
|
||||
\row
|
||||
\o QIcon
|
||||
\o icon
|
||||
\o Icon to show.
|
||||
\li QIcon
|
||||
\li icon
|
||||
\li Icon to show.
|
||||
|
||||
\row
|
||||
\o QString
|
||||
\o description
|
||||
\o Descriptive text.
|
||||
\li QString
|
||||
\li description
|
||||
\li Descriptive text.
|
||||
|
||||
\row
|
||||
\o QString
|
||||
\o displayName
|
||||
\o Name to be shown in the list.
|
||||
\li QString
|
||||
\li displayName
|
||||
\li Name to be shown in the list.
|
||||
|
||||
\row
|
||||
\o QString
|
||||
\o id
|
||||
\o Unique identifier for the wizard. It also determines the order within a category.
|
||||
\li QString
|
||||
\li id
|
||||
\li Unique identifier for the wizard. It also determines the order within a category.
|
||||
|
||||
\row
|
||||
\o QString
|
||||
\o category
|
||||
\o Identifier of the category under which the wizard is to be listed. It also
|
||||
\li QString
|
||||
\li category
|
||||
\li Identifier of the category under which the wizard is to be listed. It also
|
||||
determines the order of the categories.
|
||||
\
|
||||
\row
|
||||
\o QString
|
||||
\o displayCategory
|
||||
\o Description of the category.
|
||||
\li QString
|
||||
\li displayCategory
|
||||
\li Description of the category.
|
||||
\endtable
|
||||
|
||||
\section1 Example
|
||||
|
||||
@@ -53,9 +53,9 @@
|
||||
to which you can add your own snippets.
|
||||
|
||||
\list
|
||||
\o \l{http://doc.qt.digia.com/qtcreator/creator-completing-code.html#editing-code-snippets}
|
||||
\li \l{http://doc.qt.digia.com/qtcreator/creator-completing-code.html#editing-code-snippets}
|
||||
{Snippets User Interface}
|
||||
\o \l{Snippets} {Adding Snippets Groups}
|
||||
\li \l{Snippets} {Adding Snippets Groups}
|
||||
\endlist
|
||||
|
||||
\section2 File, Class and Project Templates
|
||||
@@ -64,9 +64,9 @@
|
||||
own
|
||||
file and project templates by writing XML definition files for them.
|
||||
\list
|
||||
\o \l{http://doc.qt.digia.com/qtcreator/creator-project-wizards.html}
|
||||
\li \l{http://doc.qt.digia.com/qtcreator/creator-project-wizards.html}
|
||||
{Adding New Custom Wizards}
|
||||
\o \l{User Interface Text Guidelines}
|
||||
\li \l{User Interface Text Guidelines}
|
||||
\endlist
|
||||
|
||||
\section2 Custom Wizards
|
||||
@@ -76,10 +76,10 @@
|
||||
While this gives you complete control over the wizard, it
|
||||
also requires you to write most of the UI and the logic yourself.
|
||||
\list
|
||||
\o \l{Creating Plugins}
|
||||
\o \l{Qt Creator Coding Rules}
|
||||
\o \l{Creating Wizards in Code}
|
||||
\o \l{User Interface Text Guidelines}
|
||||
\li \l{Creating Plugins}
|
||||
\li \l{Qt Creator Coding Rules}
|
||||
\li \l{Creating Wizards in Code}
|
||||
\li \l{User Interface Text Guidelines}
|
||||
\endlist
|
||||
|
||||
\section1 Supporting Additional File Types
|
||||
@@ -96,9 +96,9 @@
|
||||
the MIME type definitions in Qt Creator to your specific setup,
|
||||
by adding or removing file extensions and specifying magic headers.
|
||||
\list
|
||||
\o \l{http://doc.qt.digia.com/qtcreator/creator-mime-types.html}
|
||||
\li \l{http://doc.qt.digia.com/qtcreator/creator-mime-types.html}
|
||||
{Editing MIME Types}
|
||||
\o \l{http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html}
|
||||
\li \l{http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html}
|
||||
{MIME Type Specification Files}
|
||||
\endlist
|
||||
|
||||
@@ -110,9 +110,9 @@
|
||||
provided by the Kate Editor. You can download highlight definition files
|
||||
for use with Qt Creator and create your own definition files.
|
||||
\list
|
||||
\o \l{http://doc.qt.digia.com/qtcreator/creator-editor-options.html#generic-highlighting}
|
||||
\li \l{http://doc.qt.digia.com/qtcreator/creator-editor-options.html#generic-highlighting}
|
||||
{Generic Highlighting}
|
||||
\o \l{http://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/}
|
||||
\li \l{http://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/}
|
||||
{Writing a Syntax Highlighting File}
|
||||
\endlist
|
||||
|
||||
@@ -125,10 +125,10 @@
|
||||
a basis to build on, taking away some of the pain of implementing
|
||||
a text editor from the ground up.
|
||||
\list
|
||||
\o \l{Creating Plugins}
|
||||
\o \l{Qt Creator Coding Rules}
|
||||
\o \l{Text Editors}
|
||||
\o \l{CodeAssist} {Providing Code Assist}
|
||||
\li \l{Creating Plugins}
|
||||
\li \l{Qt Creator Coding Rules}
|
||||
\li \l{Text Editors}
|
||||
\li \l{CodeAssist} {Providing Code Assist}
|
||||
\endlist
|
||||
|
||||
\section2 Other Custom Editors
|
||||
@@ -136,9 +136,9 @@
|
||||
You can also add a completely custom editor to gain complete
|
||||
control over its appearance and behavior.
|
||||
\list
|
||||
\o \l{Creating Plugins}
|
||||
\o \l{Qt Creator Coding Rules}
|
||||
\o \l{Editors}
|
||||
\li \l{Creating Plugins}
|
||||
\li \l{Qt Creator Coding Rules}
|
||||
\li \l{Editors}
|
||||
\endlist
|
||||
|
||||
\section1 Running External Tools
|
||||
@@ -162,9 +162,9 @@
|
||||
to fill a feature suggestion.
|
||||
The tool descriptions are saved as XML files that you can share.
|
||||
\list
|
||||
\o \l{http://doc.qt.digia.com/qtcreator/creator-editor-external.html}
|
||||
\li \l{http://doc.qt.digia.com/qtcreator/creator-editor-external.html}
|
||||
{Using External Tools}
|
||||
\o \l{External Tool Specification Files}
|
||||
\li \l{External Tool Specification Files}
|
||||
\endlist
|
||||
|
||||
\section2 Complex External Tools
|
||||
@@ -189,13 +189,13 @@
|
||||
If you need a way to configure the tool in Qt Creator, you can add an
|
||||
\gui Options page for it.
|
||||
\list
|
||||
\o \l{http://doc.qt.digia.com/qtcreator/creator-editor-external.html}
|
||||
\li \l{http://doc.qt.digia.com/qtcreator/creator-editor-external.html}
|
||||
{Using External Tools}
|
||||
\o \l{External Tool Specification Files}
|
||||
\o \l{Creating Plugins}
|
||||
\o \l{Qt Creator Coding Rules}
|
||||
\o \l{Menus and Menu Items}
|
||||
\o \l{Options Pages}
|
||||
\li \l{External Tool Specification Files}
|
||||
\li \l{Creating Plugins}
|
||||
\li \l{Qt Creator Coding Rules}
|
||||
\li \l{Menus and Menu Items}
|
||||
\li \l{Options Pages}
|
||||
\endlist
|
||||
|
||||
\section3 Interacting with Tool Output
|
||||
@@ -214,39 +214,39 @@
|
||||
the \gui {Issues} output
|
||||
pane.
|
||||
\list
|
||||
\o \l{http://doc.qt.digia.com/qtcreator/creator-task-lists.html}
|
||||
\li \l{http://doc.qt.digia.com/qtcreator/creator-task-lists.html}
|
||||
{Showing Task List Files in the Issues Pane}
|
||||
\o \l{Creating Plugins}
|
||||
\o \l{Qt Creator Coding Rules}
|
||||
\o \l{Menus and Menu Items}
|
||||
\o \l{Options Pages}
|
||||
\o \l{Editors}
|
||||
\li \l{Creating Plugins}
|
||||
\li \l{Qt Creator Coding Rules}
|
||||
\li \l{Menus and Menu Items}
|
||||
\li \l{Options Pages}
|
||||
\li \l{Editors}
|
||||
\endlist
|
||||
|
||||
\section1 All Topics
|
||||
|
||||
\list
|
||||
\o \l{Developing Qt Creator Plugins}
|
||||
\li \l{Developing Qt Creator Plugins}
|
||||
\list
|
||||
\o \l{Creating Plugins}
|
||||
\o \l{Menus and Menu Items}
|
||||
\o \l{Creating Wizards in Code}
|
||||
\o \l{Editors}
|
||||
\o \l{Text Editors}
|
||||
\o \l{Options Pages}
|
||||
\li \l{Creating Plugins}
|
||||
\li \l{Menus and Menu Items}
|
||||
\li \l{Creating Wizards in Code}
|
||||
\li \l{Editors}
|
||||
\li \l{Text Editors}
|
||||
\li \l{Options Pages}
|
||||
\endlist
|
||||
\o Reference
|
||||
\li Reference
|
||||
\list
|
||||
\o \l{http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html}
|
||||
\li \l{http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html}
|
||||
{MIME Type Specification Files}
|
||||
\o \l{External Tool Specification Files}
|
||||
\o \l{http://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/}
|
||||
\li \l{External Tool Specification Files}
|
||||
\li \l{http://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/}
|
||||
{Highlight Definition Files}
|
||||
\o \l{Qt Creator Variables}
|
||||
\o \l{User Interface Text Guidelines}
|
||||
\o \l{Writing Documentation}
|
||||
\o \l{Qt Creator Coding Rules}
|
||||
\o \l{Qt Creator API Reference}
|
||||
\li \l{Qt Creator Variables}
|
||||
\li \l{User Interface Text Guidelines}
|
||||
\li \l{Writing Documentation}
|
||||
\li \l{Qt Creator Coding Rules}
|
||||
\li \l{Qt Creator API Reference}
|
||||
\endlist
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -36,13 +36,12 @@
|
||||
|
||||
\list
|
||||
|
||||
\o Overview topic, which describes the purpose of your plugin from the
|
||||
\li Overview topic, which describes the purpose of your plugin from the
|
||||
viewpoint of \QC users
|
||||
|
||||
\o Procedure topics, which describe how to use your plugin as part of
|
||||
\QC
|
||||
\li Procedure topics, which describe how to use your plugin as part of \QC
|
||||
|
||||
\o Reference topics, which contain information that developers
|
||||
\li Reference topics, which contain information that developers
|
||||
occasionally need to look up (optional)
|
||||
|
||||
\endlist
|
||||
@@ -52,10 +51,10 @@
|
||||
|
||||
\list
|
||||
|
||||
\o Overview topic, which describes the architecture and use cases for
|
||||
\li Overview topic, which describes the architecture and use cases for
|
||||
your plugin from the viewpoint of \QC developers
|
||||
|
||||
\o API documentation, which is generated from code comments
|
||||
\li API documentation, which is generated from code comments
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -123,9 +122,9 @@
|
||||
|
||||
\list
|
||||
|
||||
\o nmake fixnavi (on Windows)
|
||||
\li nmake fixnavi (on Windows)
|
||||
|
||||
\o make fixnavi (on Linux)
|
||||
\li make fixnavi (on Linux)
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -229,15 +228,15 @@
|
||||
|
||||
\list
|
||||
|
||||
\o Color reduction: Optimal 256 colors palette
|
||||
\li Color reduction: Optimal 256 colors palette
|
||||
|
||||
\o Reduce colors to: 256
|
||||
\li Reduce colors to: 256
|
||||
|
||||
\o Best compression (slow)
|
||||
\li Best compression (slow)
|
||||
|
||||
\o Color quantization algorithm: NeuQuant neural-net (slow)
|
||||
\li Color quantization algorithm: NeuQuant neural-net (slow)
|
||||
|
||||
\o External optimizers: OptiPNG o3
|
||||
\li External optimizers: OptiPNG o3
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -276,8 +275,8 @@
|
||||
|
||||
\list
|
||||
|
||||
\o nmake docs (on Windows)
|
||||
\o make docs (on Linux and Mac OS)
|
||||
\li nmake docs (on Windows)
|
||||
\li make docs (on Linux and Mac OS)
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -296,24 +295,24 @@
|
||||
|
||||
\list
|
||||
|
||||
\o html_docs - build \QC Manual in help format, but do not generate a
|
||||
\li html_docs - build \QC Manual in help format, but do not generate a
|
||||
help file
|
||||
|
||||
\o dev_html_docs - build Extending \QC Manual in help format, but do
|
||||
\li dev_html_docs - build Extending \QC Manual in help format, but do
|
||||
not generate a help file
|
||||
|
||||
\o qch_docs - build \QC Manual in help format and generate a help file
|
||||
\li qch_docs - build \QC Manual in help format and generate a help file
|
||||
(.qch)
|
||||
|
||||
\o dev_qch_docs - build Extending \QC Manual in help format and
|
||||
\li dev_qch_docs - build Extending \QC Manual in help format and
|
||||
generate a help file (.qch)
|
||||
|
||||
\o docs_online - build \QC Manual and Extending \QC Manual in online
|
||||
\li docs_online - build \QC Manual and Extending \QC Manual in online
|
||||
format
|
||||
|
||||
\o html_docs_online - build \QC Manual in online format
|
||||
\li html_docs_online - build \QC Manual in online format
|
||||
|
||||
\o dev_html_docs_online - build Extending \QC Manual in online format
|
||||
\li dev_html_docs_online - build Extending \QC Manual in online format
|
||||
|
||||
\endlist
|
||||
|
||||
|
||||
@@ -31,15 +31,15 @@
|
||||
|
||||
\list
|
||||
|
||||
\o Consistent with existing Qt Creator UI terms
|
||||
\li Consistent with existing Qt Creator UI terms
|
||||
|
||||
\o Short and concise
|
||||
\li Short and concise
|
||||
|
||||
\o Neutral, descriptive, and factually correct
|
||||
\li Neutral, descriptive, and factually correct
|
||||
|
||||
\o Unambigious
|
||||
\li Unambigious
|
||||
|
||||
\o Translatable into different languages
|
||||
\li Translatable into different languages
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -75,20 +75,20 @@
|
||||
|
||||
\list
|
||||
|
||||
\o Use full stops in messages.
|
||||
\li Use full stops in messages.
|
||||
|
||||
\o Never user full stops (.) at the end of menu item names.
|
||||
\li Never user full stops (.) at the end of menu item names.
|
||||
|
||||
\o Place three full stops (...) at the end of menu item names that
|
||||
\li Place three full stops (...) at the end of menu item names that
|
||||
open a dialog requiring user action.
|
||||
|
||||
\o Use exclamation marks (!) only in text that demands extra attention
|
||||
\li Use exclamation marks (!) only in text that demands extra attention
|
||||
from the user or carries special weight.
|
||||
|
||||
\o Use quotation marks ("") around variable values. For example,
|
||||
\li Use quotation marks ("") around variable values. For example,
|
||||
\gui {Close Project "qtcreator"}.
|
||||
|
||||
\o Do not use leading, trailing, or multiple spaces to align text in
|
||||
\li Do not use leading, trailing, or multiple spaces to align text in
|
||||
messages, as translation tools might not handle them correctly.
|
||||
|
||||
\endlist
|
||||
@@ -139,15 +139,15 @@
|
||||
|
||||
\list
|
||||
|
||||
\o Cannot send log as selected message type. Text is too long.
|
||||
\li Cannot send log as selected message type. Text is too long.
|
||||
|
||||
\o Cannot receive image.
|
||||
\li Cannot receive image.
|
||||
|
||||
\o Cannot insert picture. Maximum text length is 120 characters.
|
||||
\li Cannot insert picture. Maximum text length is 120 characters.
|
||||
|
||||
\o Image name already in use.
|
||||
\li Image name already in use.
|
||||
|
||||
\o Folder name already in use.
|
||||
\li Folder name already in use.
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -157,9 +157,9 @@
|
||||
|
||||
\list
|
||||
|
||||
\o Example of Book Title Capitalization
|
||||
\li Example of Book Title Capitalization
|
||||
|
||||
\o Example of sentence style capitalization
|
||||
\li Example of sentence style capitalization
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -175,13 +175,11 @@
|
||||
|
||||
\list
|
||||
|
||||
\o Titles (window, dialog, group box, tab, list view columns, and so
|
||||
on)
|
||||
\li Titles (window, dialog, group box, tab, list view columns, and so on)
|
||||
|
||||
\o Functions (menu items, buttons)
|
||||
\li Functions (menu items, buttons)
|
||||
|
||||
\o Selectable items (combobox items, listbox items, tree list items,
|
||||
and so on)
|
||||
\li Selectable items (combobox items, listbox items, tree list items, and so on)
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -193,11 +191,11 @@
|
||||
|
||||
\list 1
|
||||
|
||||
\o Open to-title-case.html in a browser.
|
||||
\li Open to-title-case.html in a browser.
|
||||
|
||||
\o Enter the UI text in the field.
|
||||
\li Enter the UI text in the field.
|
||||
|
||||
\o Click \gui Convert.
|
||||
\li Click \gui Convert.
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -219,13 +217,13 @@
|
||||
|
||||
\list
|
||||
|
||||
\o Labels
|
||||
\li Labels
|
||||
|
||||
\o Tool tips
|
||||
\li Tool tips
|
||||
|
||||
\o Descriptive text
|
||||
\li Descriptive text
|
||||
|
||||
\o Other non-heading or title text
|
||||
\li Other non-heading or title text
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -262,11 +260,11 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o Features of Languages or Writing Systems
|
||||
\o Impact on Implementation
|
||||
\li Features of Languages or Writing Systems
|
||||
\li Impact on Implementation
|
||||
\row
|
||||
\o Word order
|
||||
\o Different languages have different word order rules.
|
||||
\li Word order
|
||||
\li Different languages have different word order rules.
|
||||
|
||||
Do not use run-time concatenation. Use complete phrases
|
||||
and "%1" formatting instead. For example, use:
|
||||
@@ -277,8 +275,8 @@
|
||||
|
||||
\c {tr("Foo failed: ") + message}
|
||||
\row
|
||||
\o Singular vs. plural vs. dual forms
|
||||
\o Some languages do not have plural form (for example, Chinese
|
||||
\li Singular vs. plural vs. dual forms
|
||||
\li Some languages do not have plural form (for example, Chinese
|
||||
and Japanese), whereas some have a different form for dual.
|
||||
|
||||
Allow room for text expansion in the layout design. Some
|
||||
@@ -293,8 +291,8 @@
|
||||
|
||||
\c {tr("%1 files found").arg(number)}
|
||||
\row
|
||||
\o Gender
|
||||
\o Some languages have gender (feminine, masculine, neutral),
|
||||
\li Gender
|
||||
\li Some languages have gender (feminine, masculine, neutral),
|
||||
whereas some do not (for example, Finnish) or do not use it
|
||||
extensively (for example, English).
|
||||
|
||||
@@ -323,88 +321,87 @@
|
||||
|
||||
\table
|
||||
\header
|
||||
\o UI Text
|
||||
\o Usage
|
||||
\o Conventions
|
||||
\li UI Text
|
||||
\li Usage
|
||||
\li Conventions
|
||||
\row
|
||||
\o Context menu
|
||||
\o Opens when users right-click on the screen. Contents depend on
|
||||
\li Context menu
|
||||
\li Opens when users right-click on the screen. Contents depend on
|
||||
the context.
|
||||
\image qtcreator-context-menu.png "Context menu"
|
||||
\o You can add menu items that are relevant in a particular
|
||||
\li You can add menu items that are relevant in a particular
|
||||
context. Follow the conventions for naming menu items.
|
||||
\row
|
||||
\o Dialog
|
||||
\o User interface element that usually contains a number of
|
||||
\li Dialog
|
||||
\li User interface element that usually contains a number of
|
||||
choices or allows the user to give input to the application.
|
||||
Opens when users select a menu item or button.
|
||||
\image qtcreator-dialog.png "Dialog"
|
||||
\o Use the menu item or button name as the dialog name. You can
|
||||
\li Use the menu item or button name as the dialog name. You can
|
||||
also combine the menu item or button name and the name of the
|
||||
object that is managed in the dialog. For example, the \gui Add
|
||||
button in the \gui Documentation options opens the
|
||||
\gui {Add Documentation} dialog.
|
||||
\row
|
||||
\o Locator
|
||||
\o Allows you to browse not only files, but any items defined by
|
||||
\li Locator
|
||||
\li Allows you to browse not only files, but any items defined by
|
||||
locator filters.
|
||||
\image qtcreator-locator.png "Locator"
|
||||
\o You can add locator filters. Check that the filter is not
|
||||
\li You can add locator filters. Check that the filter is not
|
||||
already in use and give the filter a descriptive name.
|
||||
\row
|
||||
\o Menu
|
||||
\o Contains menu items that represent commands or options and that
|
||||
\li Menu
|
||||
\li Contains menu items that represent commands or options and that
|
||||
are logically grouped and displayed. A menu can also contain
|
||||
submenus.
|
||||
\image qtcreator-menu.png "Menu"
|
||||
\o You can create new menus. Use short, but descriptive names that
|
||||
\li You can create new menus. Use short, but descriptive names that
|
||||
are consistent with existing menu names. Use unambigious names.
|
||||
\row
|
||||
\o Menu item
|
||||
\o Represents a command or an option for users to choose.
|
||||
\li Menu item
|
||||
\li Represents a command or an option for users to choose.
|
||||
\image qtcreator-menu-item.png "Menu item"
|
||||
\o You can add new items to menus. Use short, but descriptive
|
||||
\li You can add new items to menus. Use short, but descriptive
|
||||
names that are consistent with existing menu names. Use
|
||||
unambigious names.
|
||||
\row
|
||||
\o Message box
|
||||
\o Dialog that provides feedback to users, in the form of status
|
||||
\li Message box
|
||||
\li Dialog that provides feedback to users, in the form of status
|
||||
information, a warning, or an error message.
|
||||
\image qtcreator-error-message.png "Message box"
|
||||
Output from Qt Creator should be displayed in output panes,
|
||||
instead.
|
||||
\o Use the event as the title and provide a solution in the
|
||||
\li Use the event as the title and provide a solution in the
|
||||
message box.
|
||||
\row
|
||||
\o Mode
|
||||
\o Modes correspond to complete screens of controls, specialized
|
||||
\li Mode
|
||||
\li Modes correspond to complete screens of controls, specialized
|
||||
for a task.
|
||||
\image qtcreator-mode-selector.png "Mode selector"
|
||||
\o You can add a mode for a new type of editor, for example.
|
||||
\li You can add a mode for a new type of editor, for example.
|
||||
Use descriptive, but short mode names. They have to fit in the
|
||||
\gui {Mode selector}.
|
||||
\row
|
||||
\o Output pane
|
||||
\o A pane displayed in the task pane that displays output from Qt
|
||||
Creator.
|
||||
\li Output pane
|
||||
\li A pane displayed in the task pane that displays output from Qt Creator.
|
||||
\image qtcreator-output-pane.png "Output pane"
|
||||
\o Use descriptive names for output panes.
|
||||
\li Use descriptive names for output panes.
|
||||
\row
|
||||
\o Sidebar
|
||||
\o A view available in the \gui Edit and \gui Debug modes that
|
||||
\li Sidebar
|
||||
\li A view available in the \gui Edit and \gui Debug modes that
|
||||
you can use to browse projects, files, and bookmarks, and to
|
||||
view the class hierarchy.
|
||||
\image qtcreator-sidebar-menu.png "Sidebar"
|
||||
\o You can add views to the sidebar menu. Use descriptive names
|
||||
\li You can add views to the sidebar menu. Use descriptive names
|
||||
for them.
|
||||
\row
|
||||
\o View
|
||||
\o An area of the screen that displays information for users and
|
||||
\li View
|
||||
\li An area of the screen that displays information for users and
|
||||
provides them with functions for managing the information.
|
||||
Available in \gui Debug mode, for interaction with the program
|
||||
that is running under the control of the debugger.
|
||||
\image qtcreator-debugger-views.png "Views"
|
||||
\o Use descriptive names for views.
|
||||
\li Use descriptive names for views.
|
||||
\endtable
|
||||
|
||||
*/
|
||||
|
||||
@@ -160,7 +160,7 @@ bool FileUtils::copyRecursively(const FileName &srcFilePath, const FileName &tgt
|
||||
/*!
|
||||
If \a filePath is a directory, the function will recursively check all files and return
|
||||
true if one of them is newer than \a timeStamp. If \a filePath is a single file, true will
|
||||
be returned if the file is newer than \timeStamp.
|
||||
be returned if the file is newer than \a timeStamp.
|
||||
|
||||
\return Whether at least one file in \a filePath has a newer date than \a timeStamp.
|
||||
*/
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
writes them.
|
||||
|
||||
The stdOutBuffered(), stdErrBuffered() signals are emitted with complete
|
||||
lines based on the '\n' marker if they are enabled using
|
||||
lines based on the '\\n' marker if they are enabled using
|
||||
stdOutBufferedSignalsEnabled()/setStdErrBufferedSignalsEnabled().
|
||||
They would typically be used for log windows.
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ public:
|
||||
the variable its value when requested. A typical setup is to
|
||||
|
||||
\list 1
|
||||
\o Register the variables in ExtensionSystem::IPlugin::initialize():
|
||||
\li Register the variables in ExtensionSystem::IPlugin::initialize():
|
||||
\code
|
||||
static const char kMyVariable[] = "MyVariable";
|
||||
|
||||
@@ -105,7 +105,7 @@ public:
|
||||
}
|
||||
\endcode
|
||||
|
||||
\o Set the variable value when requested:
|
||||
\li Set the variable value when requested:
|
||||
\code
|
||||
void MyPlugin::updateVariable(const QByteArray &variable)
|
||||
{
|
||||
@@ -159,18 +159,18 @@ public:
|
||||
There are several different ways to expand a string, covering the different use cases,
|
||||
listed here sorted by relevance:
|
||||
\list
|
||||
\o Using VariableManager::expandedString(). This is the most comfortable way to get a string
|
||||
\li Using VariableManager::expandedString(). This is the most comfortable way to get a string
|
||||
with variable values expanded, but also the least flexible one. If this is sufficient for
|
||||
you, use it.
|
||||
\o Using the Utils::expandMacros() methods. These take a string and a macro expander (for which
|
||||
\li Using the Utils::expandMacros() methods. These take a string and a macro expander (for which
|
||||
you would use the one provided by the variable manager). Mostly the same as
|
||||
VariableManager::expandedString(), but also has a variant that does the replacement inline
|
||||
instead of returning a new string.
|
||||
\o Using Utils::QtcProcess::expandMacros(). This expands the string while conforming to the
|
||||
\li Using Utils::QtcProcess::expandMacros(). This expands the string while conforming to the
|
||||
quoting rules of the platform it is run on. Use this method with the variable manager's
|
||||
macro expander if your string will be passed as a command line parameter string to an
|
||||
external command.
|
||||
\o Writing your own macro expander that nests the variable manager's macro expander. And then
|
||||
\li Writing your own macro expander that nests the variable manager's macro expander. And then
|
||||
doing one of the above. This allows you to expand additional "local" variables/macros,
|
||||
that do not come from the variable manager.
|
||||
\endlist
|
||||
|
||||
@@ -35,7 +35,7 @@ using namespace ProjectExplorer;
|
||||
/*!
|
||||
\class NodesVisitor
|
||||
|
||||
\short Base class for visitors that can be used to traverse a node hierarchy.
|
||||
\brief Base class for visitors that can be used to traverse a node hierarchy.
|
||||
|
||||
The class follows the visitor pattern as described in Gamma et al. Pass
|
||||
an instance of NodesVisitor to FolderNode::accept(): The visit methods
|
||||
@@ -45,7 +45,7 @@ using namespace ProjectExplorer;
|
||||
*/
|
||||
|
||||
/*!
|
||||
\method NodesVisitor::visitSessionNode(SessionNode *)
|
||||
\fn NodesVisitor::visitSessionNode(SessionNode *)
|
||||
|
||||
Called for the root session node.
|
||||
|
||||
@@ -53,7 +53,7 @@ using namespace ProjectExplorer;
|
||||
*/
|
||||
|
||||
/*!
|
||||
\method NodesVisitor::visitProjectNode(SessionNode *)
|
||||
\fn NodesVisitor::visitProjectNode(SessionNode *)
|
||||
|
||||
Called for a project node.
|
||||
|
||||
@@ -61,7 +61,7 @@ using namespace ProjectExplorer;
|
||||
*/
|
||||
|
||||
/*!
|
||||
\method NodesVisitor::visitFolderNode(SessionNode *)
|
||||
\fn NodesVisitor::visitFolderNode(SessionNode *)
|
||||
|
||||
Called for a folder node that is _not_ a SessionNode or a ProjectNode.
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ class AbstractTextCursorHandler : public QObject
|
||||
public:
|
||||
AbstractTextCursorHandler(VcsBaseEditorWidget *editorWidget = 0);
|
||||
|
||||
/*! \brief Try to find some matching contents under \p cursor
|
||||
/*! \brief Try to find some matching contents under \a cursor
|
||||
*
|
||||
* It's the first function to be called because it changes the internal state of the handler.
|
||||
* Other functions (highlightCurrentContents(), handleCurrentContents(), ...) use the result
|
||||
@@ -199,7 +199,7 @@ public:
|
||||
//! Contents matched with the last call to findContentsUnderCursor()
|
||||
virtual QString currentContents() const = 0;
|
||||
|
||||
/*! \brief Fill \p menu with contextual actions applying to the contents matched
|
||||
/*! \brief Fill \a menu with contextual actions applying to the contents matched
|
||||
* with findContentsUnderCursor()
|
||||
*/
|
||||
virtual void fillContextMenu(QMenu *menu, EditorContentType type) const = 0;
|
||||
|
||||
Reference in New Issue
Block a user