From 6c1a611ffd684e47ce1e9cdd7a1ae1e5b0069698 Mon Sep 17 00:00:00 2001 From: Mike Skec Date: Sat, 13 Feb 2021 18:57:24 +1100 Subject: add pref for typographer quotes Also includes a fix for single-quotes on words like "'till" --- src/dialogs/settingsdialog.cpp | 16 ++++++++++ src/dialogs/settingsdialog.hpp | 12 ++------ src/dialogs/settingsdialog.ui | 66 ++++++++++++++++++++++++++++++++-------- src/kristall.hpp | 1 + src/main.cpp | 3 ++ src/renderers/geminirenderer.cpp | 11 +++++++ 6 files changed, 87 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/dialogs/settingsdialog.cpp b/src/dialogs/settingsdialog.cpp index d979bbe..16c74aa 100644 --- a/src/dialogs/settingsdialog.cpp +++ b/src/dialogs/settingsdialog.cpp @@ -249,6 +249,12 @@ void SettingsDialog::setOptions(const GenericSettings &options) this->ui->urlbarhl_none->setChecked(true); } + if(this->current_options.fancy_quotes) { + this->ui->fancyquotes_on->setChecked(true); + } else { + this->ui->fancyquotes_off->setChecked(true); + } + this->ui->max_redirects->setValue(this->current_options.max_redirections); this->ui->redirection_mode->setCurrentIndex(0); @@ -716,6 +722,16 @@ void SettingsDialog::on_urlbarhl_none_clicked() this->current_options.fancy_urlbar = false; } +void SettingsDialog::on_fancyquotes_on_clicked() +{ + this->current_options.fancy_quotes = true; +} + +void SettingsDialog::on_fancyquotes_off_clicked() +{ + this->current_options.fancy_quotes = false; +} + void SettingsDialog::on_redirection_mode_currentIndexChanged(int index) { this->current_options.redirection_policy = GenericSettings::RedirectionWarning(this->ui->redirection_mode->itemData(index).toInt()); diff --git a/src/dialogs/settingsdialog.hpp b/src/dialogs/settingsdialog.hpp index 6768ab4..ff558f6 100644 --- a/src/dialogs/settingsdialog.hpp +++ b/src/dialogs/settingsdialog.hpp @@ -112,29 +112,26 @@ private slots: void on_ui_density_currentIndexChanged(int index); void on_fancypants_on_clicked(); - void on_fancypants_off_clicked(); void on_texthl_on_clicked(); - void on_texthl_off_clicked(); void on_gophermap_icon_clicked(); - void on_gophermap_text_clicked(); void on_scheme_os_default_clicked(); - void on_scheme_error_clicked(); void on_show_hidden_files_clicked(); - void on_hide_hidden_files_clicked(); void on_urlbarhl_fancy_clicked(); - void on_urlbarhl_none_clicked(); + void on_fancyquotes_on_clicked(); + void on_fancyquotes_off_clicked(); + void on_redirection_mode_currentIndexChanged(int index); void on_max_redirects_valueChanged(int arg1); @@ -142,13 +139,10 @@ private slots: void on_network_timeout_valueChanged(int arg1); void on_enable_home_btn_clicked(bool arg1); - void on_enable_newtab_btn_clicked(bool arg1); void on_cache_limit_valueChanged(int limit); - void on_cache_threshold_valueChanged(int thres); - void on_cache_life_valueChanged(int life); private: diff --git a/src/dialogs/settingsdialog.ui b/src/dialogs/settingsdialog.ui index b36da92..2193656 100644 --- a/src/dialogs/settingsdialog.ui +++ b/src/dialogs/settingsdialog.ui @@ -314,37 +314,71 @@ + + + Use typographer's quotes + + + Replace single and double quotes with curly typographer quotes. + + + + + + + + + On + + + quotesBtnGroup + + + + + + + Off + + + quotesBtnGroup + + + + + + Max. Number of Redirections - + 5 - + Redirection Handling - + - + Network Timeout - + ms @@ -357,14 +391,14 @@ - + Additional toolbar buttons - + @@ -382,7 +416,7 @@ - + Total cache size limit @@ -392,7 +426,7 @@ - + KiB @@ -406,7 +440,7 @@ - + Cached item size threshold @@ -416,7 +450,7 @@ - + KiB @@ -430,7 +464,7 @@ - + Cached item life @@ -440,7 +474,7 @@ - + minutes @@ -1240,11 +1274,16 @@ hide_hidden_files urlbarhl_fancy urlbarhl_none + fancyquotes_on + fancyquotes_off max_redirects redirection_mode network_timeout enable_home_btn enable_newtab_btn + cache_limit + cache_threshold + cache_life bg_change_color style_preview std_change_font @@ -1322,5 +1361,6 @@ + diff --git a/src/kristall.hpp b/src/kristall.hpp index 67e468c..6dcf3ee 100644 --- a/src/kristall.hpp +++ b/src/kristall.hpp @@ -58,6 +58,7 @@ struct GenericSettings bool use_os_scheme_handler = false; bool show_hidden_files_in_dirs = false; bool fancy_urlbar = true; + bool fancy_quotes = true; // This is set automatically QColor fancy_urlbar_dim_colour; diff --git a/src/main.cpp b/src/main.cpp index a20cba4..05bc5e7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -364,6 +364,8 @@ void GenericSettings::load(QSettings &settings) fancy_urlbar = settings.value("fancy_urlbar", true).toBool(); + fancy_quotes = settings.value("fancy_quotes", true).toBool(); + max_redirections = settings.value("max_redirections", 5).toInt(); redirection_policy = RedirectionWarning(settings.value("redirection_policy ", WarnOnHostChange).toInt()); @@ -399,6 +401,7 @@ void GenericSettings::save(QSettings &settings) const settings.setValue("use_os_scheme_handler", use_os_scheme_handler); settings.setValue("show_hidden_files_in_dirs", show_hidden_files_in_dirs); settings.setValue("fancy_urlbar", fancy_urlbar); + settings.setValue("fancy_quotes", fancy_quotes); settings.setValue("max_redirections", max_redirections); settings.setValue("redirection_policy", int(redirection_policy)); settings.setValue("network_timeout", network_timeout); diff --git a/src/renderers/geminirenderer.cpp b/src/renderers/geminirenderer.cpp index 0b03d85..e030d88 100644 --- a/src/renderers/geminirenderer.cpp +++ b/src/renderers/geminirenderer.cpp @@ -334,6 +334,9 @@ GeminiDocument::~GeminiDocument() */ static QByteArray replace_quotes(QByteArray &line) { + if (!kristall::options.fancy_quotes) + return line; + int last_d = -1, last_s = -1; @@ -370,6 +373,14 @@ static QByteArray replace_quotes(QByteArray &line) continue; } + // For shortenings like 'till + int len = line.length(); + if ((i + 1) < len && line[i + 1] != ' ') + { + line.replace(i, 1, QString("‘").toUtf8()); + continue; + } + last_s = i; } else -- cgit v1.2.3