diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-08 19:18:50 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-08 19:18:50 +0200 |
| commit | 51f46dce66ac660507dc7abad5506650bc863d7f (patch) | |
| tree | 7f97264f0a9315b357b9c338519146b572b80a96 /src | |
| parent | 7caffad75f0e7f7f1b1ce4d9523a67680e9b39a2 (diff) | |
| download | kristall-51f46dce66ac660507dc7abad5506650bc863d7f.tar.gz | |
Adds two new options for text display: gophermap rendering with text or icons, all text documents as text/plain, prepares option for text highlighting.
Diffstat (limited to 'src')
| -rw-r--r-- | src/browsertab.cpp | 11 | ||||
| -rw-r--r-- | src/geminirenderer.cpp | 10 | ||||
| -rw-r--r-- | src/gophermaprenderer.cpp | 52 | ||||
| -rw-r--r-- | src/icons.qrc | 1 | ||||
| -rw-r--r-- | src/icons/info.svg | 1 | ||||
| -rw-r--r-- | src/kristall.hpp | 8 | ||||
| -rw-r--r-- | src/kristall.pro | 1 | ||||
| -rw-r--r-- | src/main.cpp | 6 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 53 | ||||
| -rw-r--r-- | src/mainwindow.hpp | 1 | ||||
| -rw-r--r-- | src/mainwindow.ui | 16 | ||||
| -rw-r--r-- | src/settingsdialog.cpp | 28 | ||||
| -rw-r--r-- | src/settingsdialog.hpp | 2 | ||||
| -rw-r--r-- | src/settingsdialog.ui | 122 |
14 files changed, 238 insertions, 74 deletions
diff --git a/src/browsertab.cpp b/src/browsertab.cpp index 412c652..4bbfa20 100644 --- a/src/browsertab.cpp +++ b/src/browsertab.cpp @@ -5,6 +5,7 @@ #include "settingsdialog.hpp" #include "gophermaprenderer.hpp" #include "ioutil.hpp" +#include "kristall.hpp" #include <cassert> #include <QTabWidget> @@ -260,20 +261,22 @@ void BrowserTab::on_requestComplete(const QByteArray &data, const QString &mime) this->ui->text_browser->setStyleSheet(QString("QTextBrowser { background-color: %1; }").arg(doc_style.background_color.name())); - if(mime.startsWith("text/gemini")) { + bool plaintext_only = (global_settings.value("text_display").toString() == "plain"); + + if(not plaintext_only and mime.startsWith("text/gemini")) { document = GeminiRenderer::render( data, this->current_location, doc_style, this->outline); } - else if(mime.startsWith("text/gophermap")) { + else if(not plaintext_only and mime.startsWith("text/gophermap")) { document = GophermapRenderer::render( data, this->current_location, doc_style); } - else if(mime.startsWith("text/html")) { + else if(not plaintext_only and mime.startsWith("text/html")) { document = std::make_unique<QTextDocument>(); document->setDefaultFont(doc_style.standard_font); @@ -281,7 +284,7 @@ void BrowserTab::on_requestComplete(const QByteArray &data, const QString &mime) document->setHtml(QString::fromUtf8(data)); } #if defined(QT_FEATURE_textmarkdownreader) - else if(mime.startsWith("text/markdown")) { + else if(not plaintext_only and mime.startsWith("text/markdown")) { document = std::make_unique<QTextDocument>(); document->setDefaultFont(doc_style.standard_font); document->setDefaultStyleSheet(doc_style.toStyleSheet()); diff --git a/src/geminirenderer.cpp b/src/geminirenderer.cpp index da2f9e5..a178b65 100644 --- a/src/geminirenderer.cpp +++ b/src/geminirenderer.cpp @@ -4,6 +4,9 @@ #include <QTextBlock> #include <QList> #include <QStringList> +#include <QDebug> + +#include "kristall.hpp" static QByteArray trim_whitespace(QByteArray items) { @@ -64,9 +67,10 @@ std::unique_ptr<GeminiDocument> GeminiRenderer::render( std::unique_ptr<GeminiDocument> result = std::make_unique<GeminiDocument>(); result->setDocumentMargin(themed_style.margin); result->background_color = themed_style.background_color; + result->setDefaultTextOption(no_wrap); - result->setDefaultTextOption(no_wrap); + bool emit_fancy_text = global_settings.value("text_decoration").toBool(); QTextCursor cursor{result.get()}; @@ -228,6 +232,10 @@ std::unique_ptr<GeminiDocument> GeminiRenderer::render( } else { + if(emit_fancy_text) + { + qDebug() << "implement fancy text emission!"; + } cursor.insertText(line + "\n", standard); } } diff --git a/src/gophermaprenderer.cpp b/src/gophermaprenderer.cpp index 52f4442..d1e3bf6 100644 --- a/src/gophermaprenderer.cpp +++ b/src/gophermaprenderer.cpp @@ -9,6 +9,8 @@ #include <QDebug> #include <QImage> +#include "kristall.hpp" + //Canonical Types //0 Text File //1 Gopher submenu or link to another gopher server @@ -43,21 +45,26 @@ std::unique_ptr<QTextDocument> GophermapRenderer::render(const QByteArray &input external_link.setFont(themed_style.standard_font); external_link.setForeground(QBrush(themed_style.external_link_color)); + bool emit_text_only = (global_settings.value("gophermap_display").toString() == "text"); + std::unique_ptr<QTextDocument> result = std::make_unique<QTextDocument>(); result->setDocumentMargin(themed_style.margin); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/binary"), QVariant::fromValue(QImage(":/icons/gopher/binary.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/directory"), QVariant::fromValue(QImage(":/icons/gopher/directory.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/dns"), QVariant::fromValue(QImage(":/icons/gopher/dns.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/error"), QVariant::fromValue(QImage(":/icons/gopher/error.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/gif"), QVariant::fromValue(QImage(":/icons/gopher/gif.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/html"), QVariant::fromValue(QImage(":/icons/gopher/html.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/image"), QVariant::fromValue(QImage(":/icons/gopher/image.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/mirror"), QVariant::fromValue(QImage(":/icons/gopher/mirror.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/search"), QVariant::fromValue(QImage(":/icons/gopher/search.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/sound"), QVariant::fromValue(QImage(":/icons/gopher/sound.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/telnet"), QVariant::fromValue(QImage(":/icons/gopher/telnet.svg"))); - result->addResource(QTextDocument::ImageResource, QUrl("gopher/text"), QVariant::fromValue(QImage(":/icons/gopher/text.svg"))); + if(not emit_text_only) + { + result->addResource(QTextDocument::ImageResource, QUrl("gopher/binary"), QVariant::fromValue(QImage(":/icons/gopher/binary.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/directory"), QVariant::fromValue(QImage(":/icons/gopher/directory.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/dns"), QVariant::fromValue(QImage(":/icons/gopher/dns.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/error"), QVariant::fromValue(QImage(":/icons/gopher/error.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/gif"), QVariant::fromValue(QImage(":/icons/gopher/gif.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/html"), QVariant::fromValue(QImage(":/icons/gopher/html.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/image"), QVariant::fromValue(QImage(":/icons/gopher/image.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/mirror"), QVariant::fromValue(QImage(":/icons/gopher/mirror.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/search"), QVariant::fromValue(QImage(":/icons/gopher/search.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/sound"), QVariant::fromValue(QImage(":/icons/gopher/sound.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/telnet"), QVariant::fromValue(QImage(":/icons/gopher/telnet.svg"))); + result->addResource(QTextDocument::ImageResource, QUrl("gopher/text"), QVariant::fromValue(QImage(":/icons/gopher/text.svg"))); + } QTextCursor cursor{result.get()}; @@ -169,16 +176,19 @@ std::unique_ptr<QTextDocument> GophermapRenderer::render(const QByteArray &input qDebug() << line << dst_url; } - QTextImageFormat icon_fmt; - icon_fmt.setName(QString("gopher/%1").arg(icon)); - icon_fmt.setVerticalAlignment(QTextImageFormat::AlignTop); - - cursor.insertImage(icon_fmt); - - // cursor.insertImage(QImage(QString(":/icons/gopher/%1.svg").arg(icon))); + if(emit_text_only) + { + cursor.insertText("[" + icon + "] ", standard); + } + else + { + QTextImageFormat icon_fmt; + icon_fmt.setName(QString("gopher/%1").arg(icon)); + icon_fmt.setVerticalAlignment(QTextImageFormat::AlignTop); - cursor.insertText(" "); - // cursor.insertText("[" + icon + "] ", standard); + cursor.insertImage(icon_fmt); + cursor.insertText(" "); + } QTextCharFormat fmt = standard_link; fmt.setAnchor(true); diff --git a/src/icons.qrc b/src/icons.qrc index 028e0db..a96f1f8 100644 --- a/src/icons.qrc +++ b/src/icons.qrc @@ -33,5 +33,6 @@ <file>icons/gopher/sound.svg</file> <file>icons/gopher/telnet.svg</file> <file>icons/gopher/text.svg</file> + <file>icons/info.svg</file> </qresource> </RCC> diff --git a/src/icons/info.svg b/src/icons/info.svg new file mode 100644 index 0000000..06d7d6b --- /dev/null +++ b/src/icons/info.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z" /></svg>
\ No newline at end of file diff --git a/src/kristall.hpp b/src/kristall.hpp new file mode 100644 index 0000000..5fbca63 --- /dev/null +++ b/src/kristall.hpp @@ -0,0 +1,8 @@ +#ifndef KRISTALL_HPP +#define KRISTALL_HPP + +#include <QSettings> + +extern QSettings global_settings; + +#endif // KRISTALL_HPP diff --git a/src/kristall.pro b/src/kristall.pro index d0bf2c4..52afd74 100644 --- a/src/kristall.pro +++ b/src/kristall.pro @@ -46,6 +46,7 @@ HEADERS += \ gopherclient.hpp \ gophermaprenderer.hpp \ ioutil.hpp \ + kristall.hpp \ mainwindow.hpp \ mediaplayer.hpp \ protocolsetup.hpp \ diff --git a/src/main.cpp b/src/main.cpp index 2f49049..180a49b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,6 +6,8 @@ #include <QCommandLineParser> #include <QDebug> +QSettings global_settings { "xqTechnologies", "Kristall" }; + int main(int argc, char *argv[]) { QApplication app(argc, argv); @@ -13,6 +15,10 @@ int main(int argc, char *argv[]) QCommandLineParser cli_parser; cli_parser.parse(app.arguments()); + if(not global_settings.contains("start_page")) { + global_settings.setValue("start_page", "about:favourites"); + } + MainWindow w(&app); auto urls = cli_parser.positionalArguments(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 96ae1da..5bf6211 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -11,20 +11,17 @@ #include <QTextStream> #include <QFileDialog> #include "ioutil.hpp" +#include "kristall.hpp" MainWindow::MainWindow(QApplication * app, QWidget *parent) : QMainWindow(parent), application(app), - settings("xqTechnologies", "Kristall"), ui(new Ui::MainWindow), url_status(new QLabel(this)), file_size(new QLabel(this)), file_mime(new QLabel(this)), load_time(new QLabel(this)) { - if(not this->settings.contains("start_page")) { - this->settings.setValue("start_page", "about:favourites"); - } ui->setupUi(this); @@ -33,9 +30,9 @@ MainWindow::MainWindow(QApplication * app, QWidget *parent) : this->statusBar()->addPermanentWidget(this->file_size); this->statusBar()->addPermanentWidget(this->load_time); - this->favourites.load(settings); - this->current_style.load(settings); - this->protocols.load(settings); + this->favourites.load(global_settings); + this->current_style.load(global_settings); + this->protocols.load(global_settings); ui->favourites_view->setModel(&favourites); @@ -69,14 +66,14 @@ MainWindow::MainWindow(QApplication * app, QWidget *parent) : }); { - settings.beginGroup("Window State"); - if(settings.contains("geometry")) { - restoreGeometry(settings.value("geometry").toByteArray()); + global_settings.beginGroup("Window State"); + if(global_settings.contains("geometry")) { + restoreGeometry(global_settings.value("geometry").toByteArray()); } - if(settings.contains("state")) { - restoreState(settings.value("state").toByteArray()); + if(global_settings.contains("state")) { + restoreState(global_settings.value("state").toByteArray()); } - settings.endGroup(); + global_settings.endGroup(); } reloadTheme(); @@ -103,7 +100,7 @@ BrowserTab * MainWindow::addEmptyTab(bool focus_new, bool load_default) } if(load_default) { - tab->navigateTo(QUrl(this->settings.value("start_page").toString()), BrowserTab::DontPush); + tab->navigateTo(QUrl(global_settings.value("start_page").toString()), BrowserTab::DontPush); } return tab; @@ -132,20 +129,20 @@ void MainWindow::setUrlPreview(const QUrl &url) void MainWindow::saveSettings() { - this->favourites.save(settings); - this->current_style.save(settings); - this->protocols.save(settings); + this->favourites.save(global_settings); + this->current_style.save(global_settings); + this->protocols.save(global_settings); { - settings.beginGroup("Window State"); + global_settings.beginGroup("Window State"); - settings.setValue("geometry", saveGeometry()); - settings.setValue("state", saveState()); + global_settings.setValue("geometry", saveGeometry()); + global_settings.setValue("state", saveState()); - settings.endGroup(); + global_settings.endGroup(); } - settings.sync(); + global_settings.sync(); } void MainWindow::on_browser_tabs_currentChanged(int index) @@ -225,18 +222,18 @@ void MainWindow::on_actionSettings_triggered() SettingsDialog dialog; dialog.setGeminiStyle(this->current_style); - dialog.setStartPage(this->settings.value("start_page").toString()); + dialog.setStartPage(global_settings.value("start_page").toString()); dialog.setProtocols(this->protocols); - dialog.setUiTheme(this->settings.value("theme").toString()); + dialog.setUiTheme(global_settings.value("theme").toString()); if(dialog.exec() != QDialog::Accepted) return; if(auto url = dialog.startPage(); url.isValid()) { - this->settings.setValue("start_page", url.toString()); + global_settings.setValue("start_page", url.toString()); } - this->settings.setValue("theme", dialog.uiTheme()); + global_settings.setValue("theme", dialog.uiTheme()); this->protocols = dialog.protocols(); this->current_style = dialog.geminiStyle(); @@ -306,7 +303,7 @@ void MainWindow::on_actionAbout_Qt_triggered() void MainWindow::reloadTheme() { - QString theme = settings.value("theme").toString(); + QString theme = global_settings.value("theme").toString(); if(theme.isEmpty()) theme = "light"; @@ -356,7 +353,7 @@ void MainWindow::on_actionGo_to_home_triggered() { BrowserTab * tab = qobject_cast<BrowserTab*>(this->ui->browser_tabs->currentWidget()); if(tab != nullptr) { - tab->navigateTo(QUrl(this->settings.value("start_page").toString()), BrowserTab::PushAfterSuccess); + tab->navigateTo(QUrl(global_settings.value("start_page").toString()), BrowserTab::PushAfterSuccess); } } diff --git a/src/mainwindow.hpp b/src/mainwindow.hpp index 557744d..f619056 100644 --- a/src/mainwindow.hpp +++ b/src/mainwindow.hpp @@ -80,7 +80,6 @@ private: public: QApplication * application; - QSettings settings; DocumentStyle current_style; ProtocolSetup protocols; diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 83c8d52..62c05e5 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -231,6 +231,10 @@ <addaction name="menuHelp"/> </widget> <action name="actionAbout"> + <property name="icon"> + <iconset resource="icons.qrc"> + <normaloff>:/icons/info.svg</normaloff>:/icons/info.svg</iconset> + </property> <property name="text"> <string>About...</string> </property> @@ -249,6 +253,10 @@ </property> </action> <action name="actionClose_Tab"> + <property name="icon"> + <iconset resource="icons.qrc"> + <normaloff>:/icons/close.svg</normaloff>:/icons/close.svg</iconset> + </property> <property name="text"> <string>Close Tab</string> </property> @@ -308,8 +316,8 @@ </action> <action name="actionSave_as"> <property name="icon"> - <iconset> - <normaloff>icons/content-save.svg</normaloff>icons/content-save.svg</iconset> + <iconset resource="icons.qrc"> + <normaloff>:/icons/content-save.svg</normaloff>:/icons/content-save.svg</iconset> </property> <property name="text"> <string>Save as...</string> @@ -335,8 +343,8 @@ </action> <action name="actionGo_to_home"> <property name="icon"> - <iconset> - <normaloff>icons/home.svg</normaloff>icons/home.svg</iconset> + <iconset resource="icons.qrc"> + <normaloff>:/icons/home.svg</normaloff>:/icons/home.svg</iconset> </property> <property name="text"> <string>Go to home</string> diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index df14fd5..d6b84cf 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -6,6 +6,8 @@ #include <QSettings> #include <QInputDialog> +#include "kristall.hpp" + SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::SettingsDialog), @@ -28,7 +30,24 @@ SettingsDialog::SettingsDialog(QWidget *parent) : setGeminiStyle(DocumentStyle { }); -// QSettings settings; + if(global_settings.value("gophermap_display").toString() == "text") { + this->ui->gophermap_text->setChecked(true); + } else { + this->ui->gophermap_icon->setChecked(true); + } + + if(global_settings.value("text_display").toString() == "plain") { + this->ui->fancypants_off->setChecked(true); + } else { + this->ui->fancypants_on->setChecked(true); + } + + if(global_settings.value("text_decoration").toBool()) { + this->ui->texthl_on->setChecked(true); + } else { + this->ui->texthl_off->setChecked(true); + } + // settings.beginGroup("Themes"); // int items = settings.beginReadArray("Themes"); @@ -346,3 +365,10 @@ void SettingsDialog::on_preset_new_clicked() } + +void SettingsDialog::on_SettingsDialog_accepted() +{ + global_settings.setValue("gophermap_display", this->ui->gophermap_text->isChecked() ? "text" : "rendered"); + global_settings.setValue("text_display", this->ui->fancypants_off->isChecked() ? "plain" : "fancy"); + global_settings.setValue("text_decoration", this->ui->texthl_on->isChecked()); +} diff --git a/src/settingsdialog.hpp b/src/settingsdialog.hpp index 26c0c89..5aa2c77 100644 --- a/src/settingsdialog.hpp +++ b/src/settingsdialog.hpp @@ -77,6 +77,8 @@ private slots: void on_preset_new_clicked(); + void on_SettingsDialog_accepted(); + private: void reloadStylePreview(); diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index 16d6cef..23bebf7 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -24,6 +24,16 @@ <string>Generic</string> </attribute> <layout class="QFormLayout" name="formLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label_15"> + <property name="text"> + <string>UI Theme</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QComboBox" name="ui_theme"/> + </item> <item row="1" column="0"> <widget class="QLabel" name="label_14"> <property name="text"> @@ -88,30 +98,109 @@ </property> </widget> </item> + </layout> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_19"> + <property name="text"> + <string>Text Rendering</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_5"> <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> + <widget class="QRadioButton" name="fancypants_on"> + <property name="text"> + <string>Fancy</string> </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> + <property name="checked"> + <bool>true</bool> </property> - </spacer> + <attribute name="buttonGroup"> + <string notr="true">textRenderingBtnGroup</string> + </attribute> + </widget> + </item> + <item> + <widget class="QRadioButton" name="fancypants_off"> + <property name="text"> + <string>Always plain text</string> + </property> + <attribute name="buttonGroup"> + <string notr="true">textRenderingBtnGroup</string> + </attribute> + </widget> </item> </layout> </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_15"> + <item row="4" column="0"> + <widget class="QLabel" name="label_18"> <property name="text"> - <string>UI Theme</string> + <string>Enable text highlights</string> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QComboBox" name="ui_theme"/> + <item row="4" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QRadioButton" name="texthl_on"> + <property name="text"> + <string>On</string> + </property> + <attribute name="buttonGroup"> + <string notr="true">textHighlightsBtnGroup</string> + </attribute> + </widget> + </item> + <item> + <widget class="QRadioButton" name="texthl_off"> + <property name="text"> + <string>Off</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <attribute name="buttonGroup"> + <string notr="true">textHighlightsBtnGroup</string> + </attribute> + </widget> + </item> + </layout> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="label_20"> + <property name="text"> + <string>Gopher Map</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QRadioButton" name="gophermap_icon"> + <property name="text"> + <string>Use icons</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <attribute name="buttonGroup"> + <string notr="true">gophermapBtnGroup</string> + </attribute> + </widget> + </item> + <item> + <widget class="QRadioButton" name="gophermap_text"> + <property name="text"> + <string>Use text only</string> + </property> + <attribute name="buttonGroup"> + <string notr="true">gophermapBtnGroup</string> + </attribute> + </widget> + </item> + </layout> </item> </layout> </widget> @@ -692,4 +781,9 @@ </hints> </connection> </connections> + <buttongroups> + <buttongroup name="textRenderingBtnGroup"/> + <buttongroup name="textHighlightsBtnGroup"/> + <buttongroup name="gophermapBtnGroup"/> + </buttongroups> </ui> |
