From 506ef4d21f6376265d74f3e77136b38daebf8e22 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 15 Oct 2024 14:16:26 +0200 Subject: [PATCH] Utils: Add MarkdownBrowser to Layouting And bind it to Lua. Change-Id: I9841a2f7ee5dd5b89f8c19231f9e116b71ae355d Reviewed-by: Artur Twardy Reviewed-by: hjk --- src/libs/utils/layoutbuilder.cpp | 19 +++++++++++++++++++ src/libs/utils/layoutbuilder.h | 26 +++++++++++++++++++------- src/plugins/lua/bindings/gui.cpp | 9 +++++++++ 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index 8c5523e0660..b02e2263fff 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -6,6 +6,7 @@ #include "fancylineedit.h" #include "filepath.h" #include "icon.h" +#include "markdownbrowser.h" #include "qtcassert.h" #include "spinner/spinner.h" @@ -1048,6 +1049,24 @@ void addToTabWidget(TabWidget *tabWidget, const Tab &tab) access(tabWidget)->addTab(tab.inner.emerge(), tab.tabName); } +// MarkdownBrowser + +MarkdownBrowser::MarkdownBrowser(std::initializer_list ps) +{ + ptr = new Implementation; + apply(this, ps); +} + +void MarkdownBrowser::setMarkdown(const QString &markdown) +{ + access(this)->setMarkdown(markdown); +} + +void MarkdownBrowser::setBasePath(const Utils::FilePath &path) +{ + access(this)->setBasePath(path); +} + // Special If If::If( diff --git a/src/libs/utils/layoutbuilder.h b/src/libs/utils/layoutbuilder.h index db17cddac6c..1a170a8964a 100644 --- a/src/libs/utils/layoutbuilder.h +++ b/src/libs/utils/layoutbuilder.h @@ -41,17 +41,16 @@ class QVBoxLayout; class QWidget; QT_END_NAMESPACE -namespace SpinnerSolution -{ +namespace SpinnerSolution { class SpinnerWidget; enum class SpinnerState; -} +} // namespace SpinnerSolution -namespace Utils -{ +namespace Utils { class FancyLineEdit; class FilePath; -} // Utils +class MarkdownBrowser; +} // namespace Utils namespace Layouting { @@ -425,6 +424,18 @@ public: void setDecorated(bool on); }; +class QTCREATOR_UTILS_EXPORT MarkdownBrowser : public Widget +{ +public: + using Implementation = Utils::MarkdownBrowser; + using I = Building::BuilderItem; + + MarkdownBrowser(std::initializer_list items); + + void setMarkdown(const QString &); + void setBasePath(const Utils::FilePath &); +}; + // Special class QTCREATOR_UTILS_EXPORT If @@ -509,7 +520,8 @@ QTC_DEFINE_BUILDER_SETTER(windowFlags, setWindowFlags); QTC_DEFINE_BUILDER_SETTER(widgetAttribute, setWidgetAttribute); QTC_DEFINE_BUILDER_SETTER(autoFillBackground, setAutoFillBackground); QTC_DEFINE_BUILDER_SETTER(readOnly, setReadOnly); -QTC_DEFINE_BUILDER_SETTER(markdown, setMarkdown) +QTC_DEFINE_BUILDER_SETTER(markdown, setMarkdown); +QTC_DEFINE_BUILDER_SETTER(basePath, setBasePath); // Nesting dispatchers diff --git a/src/plugins/lua/bindings/gui.cpp b/src/plugins/lua/bindings/gui.cpp index 5afe290ec64..d8e39207923 100644 --- a/src/plugins/lua/bindings/gui.cpp +++ b/src/plugins/lua/bindings/gui.cpp @@ -478,6 +478,15 @@ void setupGuiModule() sol::base_classes, sol::bases()); + gui.new_usertype( + "MarkdownBrowser", + sol::call_constructor, + sol::factories([guard](const sol::table &children) { + return constructWidgetType(children, guard); + }), + sol::base_classes, + sol::bases()); + gui.new_usertype( "Widget", sol::call_constructor,