- Reimplemented the about dialog

- Added licenses for external libraries
- Translators and license text now live in separate resource files


FossilOrigin-Name: 8b95a9008769c1082936f3083d65428c262385db
This commit is contained in:
Kostas 2015-08-13 11:16:53 +00:00
parent 5ac1b77727
commit 65dd35a592
10 changed files with 435 additions and 179 deletions

291
fuel.pro
View File

@ -1,144 +1,147 @@
#-------------------------------------------------
# Fuel
#-------------------------------------------------
QT = core gui webkit
contains(QT_VERSION, ^5\\..*) {
QT += widgets webkitwidgets
QT -= quick multimediawidgets opengl printsupport qml multimedia positioning sensors
}
TARGET = Fuel
TEMPLATE = app
win32 {
RC_FILE = rsrc/fuel.rc
LIBS += -luser32 -lshell32 -luuid
}
macx {
ICON = rsrc/icons/fuel.icns
}
# FreeBSD needs explicit paths to Qt install
unix:freebsd {
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib
}
unix:!macx {
TARGET = fuel
ICON = rsrc/icons/fuel.png
PREFIX = /usr
BINDIR = $$PREFIX/bin
DATADIR = $$PREFIX/share
target.path = $$BINDIR
desktop.path = $$DATADIR/applications
desktop.files += rsrc/fuel.desktop
icon.path = $$DATADIR/icons/hicolor/256x256/apps
icon.files += rsrc/icons/fuel.png
INSTALLS += target desktop icon
system(intl/convert.sh)
}
INCLUDEPATH += src
SOURCES += src/main.cpp\
src/MainWindow.cpp \
src/CommitDialog.cpp \
src/FileActionDialog.cpp \
src/SettingsDialog.cpp \
src/FslSettingsDialog.cpp \
src/CloneDialog.cpp \
src/RevisionDialog.cpp \
src/Utils.cpp \
src/FileTableView.cpp \
src/LoggedProcess.cpp \
src/BrowserWidget.cpp \
src/CustomWebView.cpp \
src/Fossil.cpp \
src/Workspace.cpp \
src/SearchBox.cpp \
src/Settings.cpp \
src/RemoteDialog.cpp
HEADERS += src/MainWindow.h \
src/CommitDialog.h \
src/FileActionDialog.h \
src/SettingsDialog.h \
src/FslSettingsDialog.h \
src/CloneDialog.h \
src/RevisionDialog.h \
src/Utils.h \
src/FileTableView.h \
src/LoggedProcess.h \
src/BrowserWidget.h \
src/CustomWebView.h \
src/Fossil.h \
src/Workspace.h \
src/SearchBox.h \
src/Settings.h \
src/RemoteDialog.h
FORMS += ui/MainWindow.ui \
ui/CommitDialog.ui \
ui/FileActionDialog.ui \
ui/SettingsDialog.ui \
ui/FslSettingsDialog.ui \
ui/CloneDialog.ui \
ui/BrowserWidget.ui \
ui/RevisionDialog.ui \
ui/RemoteDialog.ui
RESOURCES += \
rsrc/resources.qrc
# QtKeychain
SOURCES += ext/qtkeychain/keychain.cpp
HEADERS += ext/qtkeychain/keychain.h \
ext/qtkeychain/keychain_p.h \
ext/qtkeychain/qkeychain_export.h
DEFINES += QKEYCHAIN_STATICLIB
unix:!macx {
QT += dbus
SOURCES += ext/qtkeychain/keychain_unix.cpp \
ext/qtkeychain/gnomekeyring.cpp
HEADERS += ext/qtkeychain/gnomekeyring_p.h
DBUS_INTERFACES += ext/qtkeychain/org.kde.KWallet.xml
}
macx {
SOURCES += ext/qtkeychain/keychain_mac.cpp
}
win32 {
SOURCES += ext/qtkeychain/keychain_win.cpp
LIBS += -lCrypt32
}
CODECFORTR = UTF-8
TRANSLATIONS += \
intl/en_US.ts \
intl/el_GR.ts \
intl/de_DE.ts \
intl/es_ES.ts \
intl/fr_FR.ts \
intl/ru_RU.ts \
intl/pt_PT.ts \
intl/it_IT.ts \
intl/nl_NL.ts \
intl/ko_KO.ts \
#-------------------------------------------------
# Fuel
#-------------------------------------------------
QT = core gui webkit
contains(QT_VERSION, ^5\\..*) {
QT += widgets webkitwidgets
QT -= quick multimediawidgets opengl printsupport qml multimedia positioning sensors
}
TARGET = Fuel
TEMPLATE = app
win32 {
RC_FILE = rsrc/fuel.rc
LIBS += -luser32 -lshell32 -luuid
}
macx {
ICON = rsrc/icons/fuel.icns
}
# FreeBSD needs explicit paths to Qt install
unix:freebsd {
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib
}
unix:!macx {
TARGET = fuel
ICON = rsrc/icons/fuel.png
PREFIX = /usr
BINDIR = $$PREFIX/bin
DATADIR = $$PREFIX/share
target.path = $$BINDIR
desktop.path = $$DATADIR/applications
desktop.files += rsrc/fuel.desktop
icon.path = $$DATADIR/icons/hicolor/256x256/apps
icon.files += rsrc/icons/fuel.png
INSTALLS += target desktop icon
system(intl/convert.sh)
}
INCLUDEPATH += src
SOURCES += src/main.cpp\
src/MainWindow.cpp \
src/CommitDialog.cpp \
src/FileActionDialog.cpp \
src/SettingsDialog.cpp \
src/FslSettingsDialog.cpp \
src/CloneDialog.cpp \
src/RevisionDialog.cpp \
src/Utils.cpp \
src/FileTableView.cpp \
src/LoggedProcess.cpp \
src/BrowserWidget.cpp \
src/CustomWebView.cpp \
src/Fossil.cpp \
src/Workspace.cpp \
src/SearchBox.cpp \
src/Settings.cpp \
src/RemoteDialog.cpp \
src/AboutDialog.cpp
HEADERS += src/MainWindow.h \
src/CommitDialog.h \
src/FileActionDialog.h \
src/SettingsDialog.h \
src/FslSettingsDialog.h \
src/CloneDialog.h \
src/RevisionDialog.h \
src/Utils.h \
src/FileTableView.h \
src/LoggedProcess.h \
src/BrowserWidget.h \
src/CustomWebView.h \
src/Fossil.h \
src/Workspace.h \
src/SearchBox.h \
src/Settings.h \
src/RemoteDialog.h \
src/AboutDialog.h
FORMS += ui/MainWindow.ui \
ui/CommitDialog.ui \
ui/FileActionDialog.ui \
ui/SettingsDialog.ui \
ui/FslSettingsDialog.ui \
ui/CloneDialog.ui \
ui/BrowserWidget.ui \
ui/RevisionDialog.ui \
ui/RemoteDialog.ui \
ui/AboutDialog.ui
RESOURCES += \
rsrc/resources.qrc
# QtKeychain
SOURCES += ext/qtkeychain/keychain.cpp
HEADERS += ext/qtkeychain/keychain.h \
ext/qtkeychain/keychain_p.h \
ext/qtkeychain/qkeychain_export.h
DEFINES += QKEYCHAIN_STATICLIB
unix:!macx {
QT += dbus
SOURCES += ext/qtkeychain/keychain_unix.cpp \
ext/qtkeychain/gnomekeyring.cpp
HEADERS += ext/qtkeychain/gnomekeyring_p.h
DBUS_INTERFACES += ext/qtkeychain/org.kde.KWallet.xml
}
macx {
SOURCES += ext/qtkeychain/keychain_mac.cpp
}
win32 {
SOURCES += ext/qtkeychain/keychain_win.cpp
LIBS += -lCrypt32
}
CODECFORTR = UTF-8
TRANSLATIONS += \
intl/en_US.ts \
intl/el_GR.ts \
intl/de_DE.ts \
intl/es_ES.ts \
intl/fr_FR.ts \
intl/ru_RU.ts \
intl/pt_PT.ts \
intl/it_IT.ts \
intl/nl_NL.ts \
intl/ko_KO.ts \

View File

@ -1,5 +1,5 @@
C Merged\sKorean\stranslation
D 2015-08-04T08:33:55.599
C -\sReimplemented\sthe\sabout\sdialog\n-\sAdded\slicenses\sfor\sexternal\slibraries\n-\sTranslators\sand\slicense\stext\snow\slive\sin\sseparate\sresource\sfiles\n
D 2015-08-13T11:16:53.424
F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35
F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b
F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b
@ -37,7 +37,7 @@ F ext/qtkeychain/qkeychain_export.h d756528188ef9bf3c4461ecc80048f06c362b54b
F ext/qtkeychain/testclient.cpp cb1290a9584b627306a7bfdf1c02a8bbae503f5f
F ext/qtkeychain/translations/qtkeychain_de.ts 0a70c8205c066c30ed8172f0670942de1fc5eede
F ext/qtkeychain/translations/qtkeychain_ro.ts f16939382fd1a047b0692426bc82847347f14b32
F fuel.pro 71b0d477c9ce5cf44659d20d2a1d7e43452f78b3
F fuel.pro 7802dc9513da36539818ee1e927ec1e3494ecb54
F intl/convert.bat 357d461ee8c6a7be6d2f60ac77c3232678ffb513 x
F intl/convert.sh ac6edc8d99b575601cf9c6b85b18c9e25875b6e0 x
F intl/de_DE.ts e2faceab920ac60c97bbc6fba038e261d51fc741
@ -51,6 +51,8 @@ F intl/nl_NL.ts ff9b6ae9da5b6ffacc74fc1075a14ad80ebc0429
F intl/pt_PT.ts f93bcc3df5447ab1d85407e1dec4cd68c03d2245
F intl/ru_RU.ts 74189b3ee2b30b0b47b2db5bd7c9935db84947fc
F intl/update.sh 39d4561630ba6681bb27e7beadc225a31469728f x
F rsrc/docs/Licenses.txt 4021c1b126d55c1630ae2b43a8b805f99e39a357
F rsrc/docs/Translators.txt caf04efd7391546adda7da73679156e3ff5d5fcd
F rsrc/fuel.desktop 43145556bc61f5a91b497c38a16aec44af271d29
F rsrc/fuel.rc 8e9ac966f283102c11a77cd7f936cdc09e09bd79
F rsrc/icons/Address\sBook-01.png ef2cec80ea5a559b72e8be4a344a1869fe69cbd8
@ -208,7 +210,9 @@ F rsrc/icons/Zoom-01.png 67ca532922e9166325c5c75fce1ca3fbb0d2b6a6
F rsrc/icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b
F rsrc/icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038
F rsrc/icons/fuel.png 40daf53b7f6bdcdd0d6aa5ef433d078ec5ea4342
F rsrc/resources.qrc cdc1796df4c2a19743d662f0dc9c71f9e799b84a
F rsrc/resources.qrc 21ae6205e27ac989001eb0edc075d7e405b992c8
F src/AboutDialog.cpp b5ba08d7707552356c287f7274f55f89cf32557e
F src/AboutDialog.h 269f3a0589067c08f19b542e4576b0ef58bc6ec5
F src/BrowserWidget.cpp 8b8f545cdff4a4188edc698a1b4777f5df46f056
F src/BrowserWidget.h 764d66aa9a93b890298bd0301097739cb4e16597
F src/CloneDialog.cpp c341622b01d493387d6e4928018b3392d92471e8
@ -227,7 +231,7 @@ F src/FslSettingsDialog.cpp e00907d493fba469e48a008aecda88426350b5ac
F src/FslSettingsDialog.h dfe2a61884a55a74cbb9206b6f6b482b979725e7
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
F src/MainWindow.cpp f61c46fcfc36b003d6ce8036ce4065790670e353
F src/MainWindow.cpp bbf6d5529f520ed80c1cea37f28cd42c52c1e85e
F src/MainWindow.h c4518a0ba8d5ba2a128449bd8a50adff8402049d
F src/RemoteDialog.cpp 8540cc5e2e41c4127ed8a028d84691604fa6ecac
F src/RemoteDialog.h 5e0438c2bd7c79b1bb44bfbd58c2181b544a9e5d
@ -246,6 +250,7 @@ F src/Workspace.h 842c195cf830422f2066c7190156e7c8b82a93a1
F src/main.cpp d8c65ea5e54102e4989fef9fd8cfd4f13ef8a8f0
F tools/git-push.sh 62cc58434cae5b7bcd6bd9d4cce8b08739f31cd7 x
F tools/pack.sh d7f38a498c4e9327fecd6a6e5ac27be270d43008 x
F ui/AboutDialog.ui 96b9105409325ab977d4c6754fb05aef06a5050b
F ui/BrowserWidget.ui 994ad9ea0e9f5815d6b1a27acc2f6f39164c507f
F ui/CloneDialog.ui 4886e7d4f258ea8b852b5eefc860396e35145712
F ui/CommitDialog.ui 1e5dafa742e9ae07ec937bcda8cda3297ddc6199
@ -255,7 +260,7 @@ F ui/MainWindow.ui 10181826a25056ed5aba2b23a7d110159be7c043
F ui/RemoteDialog.ui 95a4750d972ed8c49bb10b95db91ff16cfe2dd0b
F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd
F ui/SettingsDialog.ui 47b9a31e28ad523f14a1c4cd361270b6babbdf7d
P 4cb9b13c6b6c9f3a2fcc62de4737ea61e98ed433 7fa0e987609c9ccb3d1518f21230e26f8a122d5c
R 793761371430ae253617194759b785d5
P 2c93f1713207d90729d6d1f105560bc0a24e365b
R 0665a31eba11e051d35b7b46216dd3d2
U Kostas
Z e1aaaaca6ebaf7d137a7a7a7f78df4e0
Z 88f3e4c9ada968acf4416e29621a6af2

View File

@ -1 +1 @@
2c93f1713207d90729d6d1f105560bc0a24e365b
8b95a9008769c1082936f3083d65428c262385db

28
rsrc/docs/Licenses.txt Normal file
View File

@ -0,0 +1,28 @@
Icon Theme by Deleket - Jojo Mendoza
Available under the CC Attribution Noncommercial No Derivative 3.0 License
---------------------------------------
QtKeychain
https://github.com/frankosterfeld/qtkeychain
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------

10
rsrc/docs/Translators.txt Normal file
View File

@ -0,0 +1,10 @@
stayawake: de_DE
djnavas: es_ES
Fringale: fr_FR
mouse166: ru_RU
emansije: pt_PT
maxxlupi: it_IT
Zangune: it_IT
Fly Man: nl_NL
Rick Van Lieshout: nl_NL
ardiefox: ko_KR

View File

@ -167,4 +167,8 @@
<file>intl/nl_NL.qm</file>
<file>intl/ko_KR.qm</file>
</qresource>
<qresource prefix="/docs">
<file>docs/Translators.txt</file>
<file>docs/Licenses.txt</file>
</qresource>
</RCC>

34
src/AboutDialog.cpp Normal file
View File

@ -0,0 +1,34 @@
#include "AboutDialog.h"
#include "ui_AboutDialog.h"
#include <QFile>
AboutDialog::AboutDialog(QWidget *parent, const QString &fossilVersion) :
QDialog(parent),
ui(new Ui::AboutDialog)
{
ui->setupUi(this);
ui->lblApp->setText(QCoreApplication::applicationName() + " "+ QCoreApplication::applicationVersion());
ui->lblQtVersion->setText(tr("QT version %0").arg(QT_VERSION_STR));
if(!fossilVersion.isEmpty())
ui->lblFossilVersion->setText(tr("Fossil version %0").arg(fossilVersion));
QFile ftrans(":/docs/docs/Translators.txt");
if(ftrans.open(QFile::ReadOnly))
{
ui->txtTranslators->setText(ftrans.readAll());
ftrans.close();
}
QFile flicenses(":/docs/docs/Licenses.txt");
if(flicenses.open(QFile::ReadOnly))
{
ui->txtLicenses->setText(flicenses.readAll());
flicenses.close();
}
}
AboutDialog::~AboutDialog()
{
delete ui;
}

22
src/AboutDialog.h Normal file
View File

@ -0,0 +1,22 @@
#ifndef ABOUTDIALOG_H
#define ABOUTDIALOG_H
#include <QDialog>
namespace Ui {
class AboutDialog;
}
class AboutDialog : public QDialog
{
Q_OBJECT
public:
explicit AboutDialog(QWidget *parent, const QString &fossilVersion);
~AboutDialog();
private:
Ui::AboutDialog *ui;
};
#endif // ABOUTDIALOG_H

View File

@ -20,6 +20,7 @@
#include "CloneDialog.h"
#include "RevisionDialog.h"
#include "RemoteDialog.h"
#include "AboutDialog.h"
#include "Utils.h"
#define REVISION_LATEST "Latest revision"
@ -1698,33 +1699,10 @@ void MainWindow::on_actionUndo_triggered()
void MainWindow::on_actionAbout_triggered()
{
QString fossil_ver;
fossil().getFossilVersion(fossil_ver);
if(fossil().getFossilVersion(fossil_ver))
fossil_ver = tr("Fossil version %0").arg(fossil_ver) + "\n";
QString qt_ver = tr("QT version %0").arg(QT_VERSION_STR) + "\n\n";
QMessageBox::about(this, tr("About Fuel..."),
QCoreApplication::applicationName() + " "+ QCoreApplication::applicationVersion() + " " +
tr("a GUI frontend to the Fossil SCM\n"
"by Kostas Karanikolas\n"
"Released under the GNU GPL")+"\n\n" +
fossil_ver +
qt_ver +
tr("Icons by Deleket - Jojo Mendoza\n"
"Available under the CC Attribution Noncommercial No Derivative 3.0 License") + "\n\n" +
tr("Translations with the help of:") + "\n"
"stayawake: de_DE\n"
"djnavas: es_ES\n"
"Fringale: fr_FR\n"
"mouse166: ru_RU\n"
"emansije: pt_PT\n"
"maxxlupi: it_IT\n"
"Zangune: it_IT\n"
"Fly Man: nl_NL\n"
"Rick Van Lieshout: nl_NL\n"
"ardiefox: ko_KR\n"
);
AboutDialog dlg(this, fossil_ver);
dlg.exec();
}
//------------------------------------------------------------------------------

172
ui/AboutDialog.ui Normal file
View File

@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AboutDialog</class>
<widget class="QDialog" name="AboutDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>577</width>
<height>434</height>
</rect>
</property>
<property name="windowTitle">
<string>About Fuel...</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="lblIcon">
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="pixmap">
<pixmap resource="../rsrc/resources.qrc">:/icons/icon-application</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="lblApp">
<property name="text">
<string notr="true">APPNAME VERSION</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>a GUI frontend to the Fossil SCM
by Kostas Karanikolas
Released under the GNU GPL</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QLabel" name="lblFossilVersion">
<property name="text">
<string notr="true">FOSSIL VERSION</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="lblQtVersion">
<property name="text">
<string notr="true">QT VERSION</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_6">
<property name="text">
<string notr="true">Translations with the help of:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QTextEdit" name="txtTranslators">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="label_7">
<property name="text">
<string notr="true">This sofware uses the following open source libraries and assets:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QTextEdit" name="txtLicenses">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="../rsrc/resources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>AboutDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>AboutDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>