mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-18 00:12:15 -07:00
refactor out search syntax help window
This commit is contained in:
parent
9b5f5595b0
commit
dd37823a5d
5 changed files with 74 additions and 38 deletions
|
|
@ -157,6 +157,7 @@ set(cockatrice_SOURCES
|
||||||
src/game/filters/filter_string.cpp
|
src/game/filters/filter_string.cpp
|
||||||
src/game/filters/filter_tree.cpp
|
src/game/filters/filter_tree.cpp
|
||||||
src/game/filters/filter_tree_model.cpp
|
src/game/filters/filter_tree_model.cpp
|
||||||
|
src/game/filters/syntax_help.cpp
|
||||||
src/game/game_scene.cpp
|
src/game/game_scene.cpp
|
||||||
src/game/game_selector.cpp
|
src/game/game_selector.cpp
|
||||||
src/game/game_view.cpp
|
src/game/game_view.cpp
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include "deck_editor_database_display_widget.h"
|
#include "deck_editor_database_display_widget.h"
|
||||||
|
|
||||||
#include "../../../../game/cards/card_database_manager.h"
|
#include "../../../../game/cards/card_database_manager.h"
|
||||||
|
#include "../../../../game/filters/syntax_help.h"
|
||||||
#include "../../../../settings/cache_settings.h"
|
#include "../../../../settings/cache_settings.h"
|
||||||
#include "../../../tabs/abstract_tab_deck_editor.h"
|
#include "../../../tabs/abstract_tab_deck_editor.h"
|
||||||
#include "../../../tabs/tab_supervisor.h"
|
#include "../../../tabs/tab_supervisor.h"
|
||||||
|
|
@ -56,7 +57,7 @@ DeckEditorDatabaseDisplayWidget::DeckEditorDatabaseDisplayWidget(AbstractTabDeck
|
||||||
&DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
&DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlEnter, this, &DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
connect(&searchKeySignals, &KeySignals::onCtrlEnter, this, &DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlC, this, &DeckEditorDatabaseDisplayWidget::copyDatabaseCellContents);
|
connect(&searchKeySignals, &KeySignals::onCtrlC, this, &DeckEditorDatabaseDisplayWidget::copyDatabaseCellContents);
|
||||||
connect(help, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::showSearchSyntaxHelp);
|
connect(help, &QAction::triggered, this, [this] { createSearchSyntaxHelpWindow(searchEdit); });
|
||||||
|
|
||||||
databaseModel = new CardDatabaseModel(CardDatabaseManager::getInstance(), true, this);
|
databaseModel = new CardDatabaseModel(CardDatabaseManager::getInstance(), true, this);
|
||||||
databaseModel->setObjectName("databaseModel");
|
databaseModel->setObjectName("databaseModel");
|
||||||
|
|
@ -234,42 +235,6 @@ void DeckEditorDatabaseDisplayWidget::saveDbHeaderState()
|
||||||
SettingsCache::instance().layouts().setDeckEditorDbHeaderState(databaseView->header()->saveState());
|
SettingsCache::instance().layouts().setDeckEditorDbHeaderState(databaseView->header()->saveState());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::showSearchSyntaxHelp()
|
|
||||||
{
|
|
||||||
|
|
||||||
QFile file("theme:help/search.md");
|
|
||||||
|
|
||||||
if (!file.open(QFile::ReadOnly | QFile::Text)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
QTextStream in(&file);
|
|
||||||
QString text = in.readAll();
|
|
||||||
file.close();
|
|
||||||
|
|
||||||
// Poor Markdown Converter
|
|
||||||
auto opts = QRegularExpression::MultilineOption;
|
|
||||||
text = text.replace(QRegularExpression("^(###)(.*)", opts), "<h3>\\2</h3>")
|
|
||||||
.replace(QRegularExpression("^(##)(.*)", opts), "<h2>\\2</h2>")
|
|
||||||
.replace(QRegularExpression("^(#)(.*)", opts), "<h1>\\2</h1>")
|
|
||||||
.replace(QRegularExpression("^------*", opts), "<hr />")
|
|
||||||
.replace(QRegularExpression(R"(\[([^[]+)\]\(([^\)]+)\))", opts), R"(<a href='\2'>\1</a>)");
|
|
||||||
|
|
||||||
auto browser = new QTextBrowser;
|
|
||||||
browser->setParent(this, Qt::Window | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint |
|
|
||||||
Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint);
|
|
||||||
browser->setWindowTitle("Search Help");
|
|
||||||
browser->setReadOnly(true);
|
|
||||||
browser->setMinimumSize({500, 600});
|
|
||||||
|
|
||||||
QString sheet = QString("a { text-decoration: underline; color: rgb(71,158,252) };");
|
|
||||||
browser->document()->setDefaultStyleSheet(sheet);
|
|
||||||
|
|
||||||
browser->setHtml(text);
|
|
||||||
connect(browser, &QTextBrowser::anchorClicked, [this](const QUrl &link) { searchEdit->setText(link.fragment()); });
|
|
||||||
browser->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::setFilterTree(FilterTree *filterTree)
|
void DeckEditorDatabaseDisplayWidget::setFilterTree(FilterTree *filterTree)
|
||||||
{
|
{
|
||||||
databaseDisplayModel->setFilterTree(filterTree);
|
databaseDisplayModel->setFilterTree(filterTree);
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,6 @@ private:
|
||||||
QWidget *centralWidget;
|
QWidget *centralWidget;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void showSearchSyntaxHelp();
|
|
||||||
void retranslateUi();
|
void retranslateUi();
|
||||||
void updateSearch(const QString &search);
|
void updateSearch(const QString &search);
|
||||||
void updateCard(const QModelIndex ¤t, const QModelIndex &);
|
void updateCard(const QModelIndex ¤t, const QModelIndex &);
|
||||||
|
|
|
||||||
62
cockatrice/src/game/filters/syntax_help.cpp
Normal file
62
cockatrice/src/game/filters/syntax_help.cpp
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
#include "syntax_help.h"
|
||||||
|
|
||||||
|
#include <QFile>
|
||||||
|
#include <QRegularExpression>
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the card search syntax help window
|
||||||
|
*
|
||||||
|
* @return the QTextBrowser
|
||||||
|
*/
|
||||||
|
static QTextBrowser *createBrowser()
|
||||||
|
{
|
||||||
|
QFile file("theme:help/search.md");
|
||||||
|
|
||||||
|
if (!file.open(QFile::ReadOnly | QFile::Text)) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTextStream in(&file);
|
||||||
|
QString text = in.readAll();
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
// Poor Markdown Converter
|
||||||
|
auto opts = QRegularExpression::MultilineOption;
|
||||||
|
text = text.replace(QRegularExpression("^(###)(.*)", opts), "<h3>\\2</h3>")
|
||||||
|
.replace(QRegularExpression("^(##)(.*)", opts), "<h2>\\2</h2>")
|
||||||
|
.replace(QRegularExpression("^(#)(.*)", opts), "<h1>\\2</h1>")
|
||||||
|
.replace(QRegularExpression("^------*", opts), "<hr />")
|
||||||
|
.replace(QRegularExpression(R"(\[([^[]+)\]\(([^\)]+)\))", opts), R"(<a href='\2'>\1</a>)");
|
||||||
|
|
||||||
|
auto browser = new QTextBrowser();
|
||||||
|
browser->setParent(nullptr, Qt::Window | Qt::WindowTitleHint | Qt::WindowSystemMenuHint |
|
||||||
|
Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint |
|
||||||
|
Qt::WindowFullscreenButtonHint);
|
||||||
|
browser->setWindowTitle("Search Help");
|
||||||
|
browser->setReadOnly(true);
|
||||||
|
browser->setMinimumSize({500, 600});
|
||||||
|
|
||||||
|
QString sheet = QString("a { text-decoration: underline; color: rgb(71,158,252) };");
|
||||||
|
browser->document()->setDefaultStyleSheet(sheet);
|
||||||
|
browser->setHtml(text);
|
||||||
|
|
||||||
|
browser->show();
|
||||||
|
|
||||||
|
return browser;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the card search syntax help window and connects its anchorClicked signal to the given QLineEdit.
|
||||||
|
* The window will automatically close when the QLineEdit is destroyed.
|
||||||
|
*
|
||||||
|
* @return the QTextBrowser
|
||||||
|
*/
|
||||||
|
QTextBrowser *createSearchSyntaxHelpWindow(QLineEdit *lineEdit)
|
||||||
|
{
|
||||||
|
auto browser = createBrowser();
|
||||||
|
QObject::connect(browser, &QTextBrowser::anchorClicked,
|
||||||
|
[lineEdit](const QUrl &link) { lineEdit->setText(link.fragment()); });
|
||||||
|
QObject::connect(lineEdit, &QObject::destroyed, browser, &QTextBrowser::close);
|
||||||
|
return browser;
|
||||||
|
}
|
||||||
9
cockatrice/src/game/filters/syntax_help.h
Normal file
9
cockatrice/src/game/filters/syntax_help.h
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#ifndef SEARCH_SYNTAX_HELP_H
|
||||||
|
#define SEARCH_SYNTAX_HELP_H
|
||||||
|
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QTextBrowser>
|
||||||
|
|
||||||
|
QTextBrowser *createSearchSyntaxHelpWindow(QLineEdit *lineEdit);
|
||||||
|
|
||||||
|
#endif // SEARCH_SYNTAX_HELP_H
|
||||||
Loading…
Add table
Add a link
Reference in a new issue