1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2019 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the tools applications of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU 19 ** General Public License version 3 as published by the Free Software 20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 21 ** included in the packaging of this file. Please review the following 22 ** information to ensure the GNU General Public License requirements will 23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 24 ** 25 ** $QT_END_LICENSE$ 26 ** 27 ****************************************************************************/ 28 29 #include "pythonwritedeclaration.h" 30 #include <cppwriteinitialization.h> 31 #include <language.h> 32 #include <driver.h> 33 #include <ui4.h> 34 #include <uic.h> 35 36 #include <QtCore/qtextstream.h> 37 #include <QtCore/qdebug.h> 38 39 QT_BEGIN_NAMESPACE 40 41 namespace Python { 42 WriteDeclaration(Uic * uic)43WriteDeclaration::WriteDeclaration(Uic *uic) : 44 m_uic(uic), 45 m_driver(uic->driver()), 46 m_output(uic->output()), 47 m_option(uic->option()) 48 { 49 } 50 acceptUI(DomUI * node)51void WriteDeclaration::acceptUI(DomUI *node) 52 { 53 // remove any left-over C++ namespaces 54 const QString qualifiedClassName = QLatin1String("Ui_") + node->elementClass() 55 + m_option.postfix; 56 m_output << "class " << language::fixClassName(qualifiedClassName) << "(object):\n"; 57 58 TreeWalker::acceptWidget(node->elementWidget()); 59 if (const DomButtonGroups *domButtonGroups = node->elementButtonGroups()) 60 acceptButtonGroups(domButtonGroups); 61 CPP::WriteInitialization(m_uic).acceptUI(node); 62 } 63 64 // Register button groups to prevent the on-the-fly creation legacy 65 // feature from triggering acceptButtonGroup(const DomButtonGroup * buttonGroup)66void WriteDeclaration::acceptButtonGroup(const DomButtonGroup *buttonGroup) 67 { 68 m_driver->findOrInsertButtonGroup(buttonGroup); 69 } 70 71 } // namespace Python 72 73 QT_END_NAMESPACE 74