summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDavid Boddie <dboddie@trolltech.com>2010-06-21 15:49:11 +0200
committerDavid Boddie <dboddie@trolltech.com>2010-06-21 15:49:11 +0200
commit3fb36b36de90068db241cc21184a8ac3b899ad2d (patch)
tree22490e313f1415681ddfb35f1b0ea0dca8f94ac6 /tools
parentd11e3d6e327677e828918de3173732116976fbe4 (diff)
parentf34f4ea2d35b92631e98a772e02a1b77ce26681e (diff)
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7
Diffstat (limited to 'tools')
-rw-r--r--tools/designer/src/lib/uilib/abstractformbuilder.cpp17
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp120
-rw-r--r--tools/qdoc3/ditaxmlgenerator.h1
-rw-r--r--tools/qdoc3/htmlgenerator.cpp14
-rw-r--r--tools/qdoc3/node.cpp33
-rw-r--r--tools/qdoc3/node.h3
-rw-r--r--tools/qdoc3/test/qt-build-docs.qdocconf10
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf12
8 files changed, 168 insertions, 42 deletions
diff --git a/tools/designer/src/lib/uilib/abstractformbuilder.cpp b/tools/designer/src/lib/uilib/abstractformbuilder.cpp
index a0c9e83c26..6f009e349f 100644
--- a/tools/designer/src/lib/uilib/abstractformbuilder.cpp
+++ b/tools/designer/src/lib/uilib/abstractformbuilder.cpp
@@ -2125,6 +2125,21 @@ void QAbstractFormBuilder::saveComboBoxExtraInfo(QComboBox *comboBox, DomWidget
ui_widget->setElementItem(ui_items);
}
+// Return the buttongroups assigned to a button except the internal one
+// (with empty object name) used by Q3ButtonGroup.
+static inline const QButtonGroup *formButtonGroup(const QAbstractButton *widget)
+{
+ const QButtonGroup *buttonGroup = widget->group();
+ if (!buttonGroup)
+ return 0;
+ if (buttonGroup->objectName().isEmpty()) {
+ if (const QWidget *parent = widget->parentWidget())
+ if (!qstrcmp(parent->metaObject()->className(), "Q3ButtonGroup"))
+ return 0;
+ }
+ return buttonGroup;
+}
+
/*!
\internal
\since 4.5
@@ -2133,7 +2148,7 @@ void QAbstractFormBuilder::saveComboBoxExtraInfo(QComboBox *comboBox, DomWidget
void QAbstractFormBuilder::saveButtonExtraInfo(const QAbstractButton *widget, DomWidget *ui_widget, DomWidget *)
{
typedef QList<DomProperty*> DomPropertyList;
- if (const QButtonGroup *buttonGroup = widget->group()) {
+ if (const QButtonGroup *buttonGroup = formButtonGroup(widget)) {
DomPropertyList attributes = ui_widget->elementAttribute();
DomString *domString = new DomString();
domString->setText(buttonGroup->objectName());
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index e80f94820c..e5481a03d5 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -1402,20 +1402,20 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark
QList<Section> sections;
QList<Section>::ConstIterator s;
- const ClassNode* cn = 0;
- const NamespaceNode *namespasse = 0;
+ ClassNode* cn = 0;
+ NamespaceNode* namespasse = 0;
QString title;
QString rawTitle;
QString fullTitle;
if (inner->type() == Node::Namespace) {
- namespasse = static_cast<const NamespaceNode *>(inner);
+ namespasse = static_cast<const NamespaceNode*>(inner);
rawTitle = marker->plainName(inner);
fullTitle = marker->plainFullName(inner);
title = rawTitle + " Namespace";
}
else if (inner->type() == Node::Class) {
- cn = static_cast<const ClassNode *>(inner);
+ cn = static_cast<const ClassNode*>(inner);
rawTitle = marker->plainName(inner);
fullTitle = marker->plainFullName(inner);
title = rawTitle + " Class Reference";
@@ -4563,6 +4563,11 @@ void DitaXmlGenerator::writeLocation(const Node* n, CodeMarker* marker)
s2 = CXXFUNCTIONDECLARATIONFILE;
s3 = CXXFUNCTIONDECLARATIONFILELINE;
}
+ else if (n->type() == Node::Enum) {
+ s1 = CXXENUMERATIONAPIITEMLOCATION;
+ s2 = CXXENUMERATIONDECLARATIONFILE;
+ s3 = CXXENUMERATIONDECLARATIONFILELINE;
+ }
writer.writeStartElement(s1);
writer.writeStartElement(s2);
writer.writeAttribute("name","filePath");
@@ -4583,12 +4588,11 @@ void DitaXmlGenerator::writeFunctions(const Section& s,
NodeList::ConstIterator m = s.members.begin();
while (m != s.members.end()) {
if ((*m)->type() == Node::Function) {
- const FunctionNode* fn = reinterpret_cast<const FunctionNode*>(*m);
- QString name = fn->name();
+ FunctionNode* fn = static_cast<const FunctionNode*>(*m);
writer.writeStartElement(CXXFUNCTION);
- writeGuidAttribute(name);
+ writer.writeAttribute("id",fn->guid());
writer.writeStartElement(APINAME);
- writer.writeCharacters(name);
+ writer.writeCharacters(fn->name());
writer.writeEndElement(); // </apiName>
generateBrief(fn,marker);
writer.writeStartElement(CXXFUNCTIONDETAIL);
@@ -4662,11 +4666,14 @@ void DitaXmlGenerator::writeFunctions(const Section& s,
writer.writeCharacters(fnl);
writer.writeEndElement(); // <cxxFunctionNameLookup>
- //writer.writeStartElement(CXXFUNCTIONREIMPLEMENTED);
- //writer.writeAttribute("href", zzz);
- //writer.writeCharacters();
- //writer.writeEndElement(); // </cxxFunctionReimplemented>
-
+ if (fn->isReimp() && fn->reimplementedFrom() != 0) {
+ FunctionNode* rfn = (FunctionNode*)fn->reimplementedFrom();
+ writer.writeStartElement(CXXFUNCTIONREIMPLEMENTED);
+ writer.writeAttribute("href",rfn->ditaXmlHref());
+ writer.writeCharacters(marker->plainFullName(rfn));
+ writer.writeEndElement(); // </cxxFunctionReimplemented>
+ }
+ writeParameters(fn,marker);
writeLocation(fn, marker);
writer.writeEndElement(); // <cxxFunctionDefinition>
writer.writeStartElement(APIDESC);
@@ -4689,6 +4696,32 @@ void DitaXmlGenerator::writeFunctions(const Section& s,
}
}
+void DitaXmlGenerator::writeParameters(FunctionNode* fn, CodeMarker* marker)
+{
+ const QList<Parameter>& parameters = fn->parameters();
+ if (!parameters.isEmpty()) {
+ writer.writeStartElement(CXXFUNCTIONPARAMETERS);
+ QList<Parameter>::ConstIterator p = parameters.begin();
+ while (p != parameters.end()) {
+ writer.writeStartElement(CXXFUNCTIONPARAMETER);
+ writer.writeStartElement(CXXFUNCTIONPARAMETERDECLAREDTYPE);
+ writer.writeCharacters((*p).leftType());
+ writer.writeEndElement(); // <cxxFunctionParameterDeclaredType>
+ writer.writeStartElement(CXXFUNCTIONPARAMETERDECLARATIONNAME);
+ writer.writeCharacters((*p).name());
+ writer.writeEndElement(); // <cxxFunctionParameterDeclarationName>
+ if (!(*p).defaultValue().isEmpty()) {
+ writer.writeStartElement(CXXFUNCTIONPARAMETERDEFAULTVALUE);
+ writer.writeCharacters((*p).defaultValue());
+ writer.writeEndElement(); // <cxxFunctionParameterDefaultValue>
+ }
+ writer.writeEndElement(); // <cxxFunctionParameter>
+ ++p;
+ }
+ writer.writeEndElement(); // <cxxFunctionParameters>
+ }
+}
+
void DitaXmlGenerator::writeNestedClasses(const Section& s,
const ClassNode* cn,
CodeMarker* marker)
@@ -4699,6 +4732,67 @@ void DitaXmlGenerator::writeEnumerations(const Section& s,
const ClassNode* cn,
CodeMarker* marker)
{
+ NodeList::ConstIterator m = s.members.begin();
+ while (m != s.members.end()) {
+ if ((*m)->type() == Node::Enum) {
+ EnumNode* en = static_cast<const EnumNode*>(*m);
+ writer.writeStartElement(CXXENUMERATION);
+ writer.writeAttribute("id",en->guid());
+ writer.writeStartElement(APINAME);
+ writer.writeCharacters(en->name());
+ writer.writeEndElement(); // </apiName>
+ generateBrief(en,marker);
+ writer.writeStartElement(CXXENUMERATIONDETAIL);
+ writer.writeStartElement(CXXENUMERATIONDEFINITION);
+ writer.writeStartElement(CXXENUMERATIONACCESSSPECIFIER);
+ writer.writeAttribute("value",en->accessString());
+ writer.writeEndElement(); // <cxxEnumerationAccessSpecifier>
+
+ QString fq = fullQualification(en);
+ if (!fq.isEmpty()) {
+ writer.writeStartElement(CXXENUMERATIONSCOPEDNAME);
+ writer.writeCharacters(fq);
+ writer.writeEndElement(); // <cxxEnumerationScopedName>
+ }
+ const QList<EnumItem>& items = en->items();
+ if (!items.isEmpty()) {
+ writer.writeStartElement(CXXENUMERATIONPROTOTYPE);
+ writer.writeCharacters(en->name());
+ writer.writeCharacters(" = { ");
+ QList<EnumItem>::ConstIterator i = items.begin();
+ while (i != items.end()) {
+ writer.writeCharacters((*i).name());
+ if (!(*i).value().isEmpty()) {
+ writer.writeCharacters(" = ");
+ writer.writeCharacters((*i).value());
+ }
+ ++i;
+ if (i != items.end())
+ writer.writeCharacters(", ");
+ }
+ writer.writeCharacters(" }");
+ writer.writeEndElement(); // <cxxEnumerationPrototype>
+ }
+
+ writer.writeStartElement(CXXENUMERATIONNAMELOOKUP);
+ writer.writeCharacters(en->parent()->name() + "::" + en->name());
+ writer.writeEndElement(); // <cxxEnumerationNameLookup>
+
+ writeLocation(en, marker);
+ writer.writeEndElement(); // <cxxEnumerationDefinition>
+ writer.writeStartElement(APIDESC);
+
+ if (!en->doc().isEmpty()) {
+ generateBody(en, marker);
+ // generateAlsoList(inner, marker);
+ }
+
+ writer.writeEndElement(); // </apiDesc>
+ writer.writeEndElement(); // </cxxEnumerationDetail>
+ writer.writeEndElement(); // </cxxEnumeration>
+ }
+ ++m;
+ }
}
void DitaXmlGenerator::writeTypedefs(const Section& s,
diff --git a/tools/qdoc3/ditaxmlgenerator.h b/tools/qdoc3/ditaxmlgenerator.h
index 71304b396d..e8ad8bafa5 100644
--- a/tools/qdoc3/ditaxmlgenerator.h
+++ b/tools/qdoc3/ditaxmlgenerator.h
@@ -117,6 +117,7 @@ class DitaXmlGenerator : public PageGenerator
void writeFunctions(const Section& s,
const ClassNode* cn,
CodeMarker* marker);
+ void writeParameters(FunctionNode* fn, CodeMarker* marker);
void writeNestedClasses(const Section& s,
const ClassNode* cn,
CodeMarker* marker);
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index f6b8c061ee..339c3903cb 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -1831,13 +1831,13 @@ void HtmlGenerator::generateHeader(const QString& title,
out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/narrow.css\" />";
// syntax highlighter js and css
- // out() << " <link type=\"text/css\" rel=\"stylesheet\" href=\"style/shCore.css\"/>\n";
- // out() << " <link type=\"text/css\" rel=\"stylesheet\" href=\"style/shThemeDefault.css\"/>\n";
- // out() << " <script type=\"text/javascript\" src=\"scripts/shCore.js\"></script>\n";
- // out() << " <script type=\"text/javascript\" src=\"scripts/shBrushCpp.js\"></script>\n";
- // out() << " <script type=\"text/javascript\">\n";
- // out() << " SyntaxHighlighter.all();\n";
- // out() << " </script>\n";
+ // out() << " <link type=\"text/css\" rel=\"stylesheet\" href=\"style/shCore.css\"/>\n";
+ // out() << " <link type=\"text/css\" rel=\"stylesheet\" href=\"style/shThemeDefault.css\"/>\n";
+ // out() << " <script type=\"text/javascript\" src=\"scripts/shCore.js\"></script>\n";
+ // out() << " <script type=\"text/javascript\" src=\"scripts/shBrushCpp.js\"></script>\n";
+ // out() << " <script type=\"text/javascript\">\n";
+ // out() << " SyntaxHighlighter.all();\n";
+ // out() << " </script>\n";
out() << "</head>\n";
out() << "<body class=\"\" onload=\"CheckEmptyAndLoadList();\">\n";
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index 2a03fd257c..12dee87347 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -101,7 +101,7 @@ Node::Node(Type type, InnerNode *parent, const QString& name)
{
if (par)
par->addChild(this);
- uuid = QUuid::createUuid();
+ //uuid = QUuid::createUuid();
}
/*!
@@ -241,20 +241,32 @@ QString Node::fileBase() const
return base.toLower();
}
-/*! \fnQUuid Node::guid() const
+/*!
Returns this node's Universally Unique IDentifier.
If its UUID has not yet been created, it is created
first.
*/
+QUuid Node::guid()
+{
+ if (uuid.isNull())
+ uuid = QUuid::createUuid();
+ return uuid;
+}
/*!
Composes a string to be used as an href attribute in DITA
XML. It is composed of the file name and the UUID separated
- by a '#'
+ by a '#'. If this node is a class node, the file name is
+ taken from this node; if this node is a function node, the
+ file name is taken from the parent node of this node.
*/
QString Node::ditaXmlHref()
{
- QString href = fileBase();
+ QString href;
+ if (type() == Function)
+ href = parent()->fileBase();
+ else
+ href = fileBase();
if (!href.endsWith(".xml"))
href += ".xml";
return href + "#" + guid();
@@ -956,6 +968,8 @@ QString FakeNode::subTitle() const
*/
/*!
+ The constructor for the node representing an enum type
+ has a \a parent class and an enum type \a name.
*/
EnumNode::EnumNode(InnerNode *parent, const QString& name)
: LeafNode(Enum, parent, name), ft(0)
@@ -963,6 +977,7 @@ EnumNode::EnumNode(InnerNode *parent, const QString& name)
}
/*!
+ Add \a item to the enum type's item list.
*/
void EnumNode::addItem(const EnumItem& item)
{
@@ -971,15 +986,15 @@ void EnumNode::addItem(const EnumItem& item)
}
/*!
+ Returns the access level of the enumeration item named \a name.
+ Apparently it is private if it has been omitted by qdoc's
+ omitvalue command. Otherwise it is public.
*/
Node::Access EnumNode::itemAccess(const QString &name) const
{
- if (doc().omitEnumItemNames().contains(name)) {
+ if (doc().omitEnumItemNames().contains(name))
return Private;
- }
- else {
- return Public;
- }
+ return Public;
}
/*!
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index 44cdac2e45..4d1e7577d1 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -191,7 +191,8 @@ class Node
void clearRelated() { rel = 0; }
virtual QString fileBase() const;
- QUuid guid() const { return uuid; }
+ //QUuid guid() const { return uuid; }
+ QUuid guid();
QString ditaXmlHref();
protected:
diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf
index 216ac6ae3e..09cbc45590 100644
--- a/tools/qdoc3/test/qt-build-docs.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs.qdocconf
@@ -44,6 +44,16 @@ qhp.Qt.extraFiles = index.html \
images/dynamiclayouts-example.png \
scripts/functions.js \
scripts/jquery.js \
+ scripts/shBrushCpp.js \
+ scripts/shCore.js \
+ scripts/shLegacy.js \
+ scripts/narrow.js \
+ scripts/superfish.js \
+ style/shCore.css \
+ style/shThemeDefault.css \
+ style/narrow.css \
+ style/superfish.css \
+ style/superfish_skin.css \
style/OfflineStyle.css \
style/style_ie6.css \
style/style_ie7.css \
diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf
index 60f5fb1324..1fb000b45a 100644
--- a/tools/qdoc3/test/qt-html-templates.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates.qdocconf
@@ -165,14 +165,4 @@ HTML.footer = " <!-- /div -->\n" \
" </form>\n" \
" </div>\n" \
" <div id=\"blurpage\">\n" \
- " </div>\n" \
- "<script type=\"text/javascript\">\n" \
- " var _gaq = _gaq || [];\n" \
- " _gaq.push([\'_setAccount\', \'UA-4457116-5\']);\n" \
- " _gaq.push([\'_trackPageview\']);\n" \
- " (function() {\n" \
- " var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;\n" \
- " ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';\n" \
- " var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);\n" \
- " })();\n" \
- "</script>\n"
+ " </div>\n"