diff --git a/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_database_display_widget.cpp b/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_database_display_widget.cpp
index 0374503bc..528a97107 100644
--- a/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_database_display_widget.cpp
+++ b/cockatrice/src/client/ui/widgets/deck_editor/deck_editor_database_display_widget.cpp
@@ -235,6 +235,42 @@ void DeckEditorDatabaseDisplayWidget::saveDbHeaderState()
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), "
\\2
")
+ .replace(QRegularExpression("^(##)(.*)", opts), "\\2
")
+ .replace(QRegularExpression("^(#)(.*)", opts), "\\2
")
+ .replace(QRegularExpression("^------*", opts), "
")
+ .replace(QRegularExpression(R"(\[([^[]+)\]\(([^\)]+)\))", opts), R"(\1)");
+
+ 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)
{
databaseDisplayModel->setFilterTree(filterTree);