[Libreoffice-commits] core.git: 2 commits - include/vcl vcl/inc vcl/jsdialog vcl/source
Szymon KÅos (via logerrit)
logerrit at kemper.freedesktop.org
Thu Jul 16 11:25:34 UTC 2020
include/vcl/jsdialog/executor.hxx | 2
include/vcl/weld.hxx | 2
vcl/inc/jsdialog/jsdialogbuilder.hxx | 12 +
vcl/inc/salvtables.hxx | 57 +++++++
vcl/jsdialog/executor.cxx | 11 +
vcl/jsdialog/jsdialogbuilder.cxx | 29 ++++
vcl/source/app/salvtables.cxx | 252 ++++++++++++++++-------------------
7 files changed, 231 insertions(+), 134 deletions(-)
New commits:
commit 10775fb4006dcdf3ce5b01179b4d9a6f009d8592
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Thu Jul 2 14:44:24 2020 +0200
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Thu Jul 16 13:24:59 2020 +0200
jsdialog: weld text view
Change-Id: Ia3bae7a8b812e791fc6a8888e63adca17b8910d4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98883
Tested-by: Jenkins
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/include/vcl/jsdialog/executor.hxx b/include/vcl/jsdialog/executor.hxx
index d988f5460a08..1cfa24c28a8a 100644
--- a/include/vcl/jsdialog/executor.hxx
+++ b/include/vcl/jsdialog/executor.hxx
@@ -16,6 +16,8 @@
class LOKTrigger
{
public:
+ static void trigger_changed(weld::TextView& rView) { rView.signal_changed(); }
+
static void trigger_changed(weld::Entry& rEdit) { rEdit.signal_changed(); }
static void trigger_changed(weld::ComboBox& rComboBox) { rComboBox.signal_changed(); }
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 7bd54920a0bc..7d29e1c7f605 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -1937,6 +1937,8 @@ public:
class VCL_DLLPUBLIC TextView : virtual public Container
{
+ friend class ::LOKTrigger;
+
private:
OUString m_sSavedValue;
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index 1622cc0f6ade..c9673e778c16 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -21,6 +21,8 @@
class ToolBox;
class ComboBox;
+class VclMultiLineEdit;
+
typedef std::map<OString, weld::Widget*> WidgetMap;
class JSDialogNotifyIdle : public Idle
@@ -92,6 +94,8 @@ public:
bool bTakeOwnership = false) override;
std::unique_ptr<weld::Toolbar> weld_toolbar(const OString& id,
bool bTakeOwnership = false) override;
+ std::unique_ptr<weld::TextView> weld_text_view(const OString& id,
+ bool bTakeOwnership = false) override;
static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent,
VclMessageType eMessageType,
@@ -249,4 +253,12 @@ public:
virtual void signal_clicked(const OString& rIdent) override;
};
+class JSTextView : public JSWidget<SalInstanceTextView, ::VclMultiLineEdit>
+{
+public:
+ JSTextView(VclPtr<vcl::Window> aOwnedToplevel, ::VclMultiLineEdit* pTextView,
+ SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+ virtual void set_text(const OUString& rText) override;
+};
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx
index 1df6af10c9c6..53fded14e1c1 100644
--- a/vcl/jsdialog/executor.cxx
+++ b/vcl/jsdialog/executor.cxx
@@ -131,6 +131,17 @@ bool ExecuteAction(sal_uInt64 nWindowId, const OString& rWidget, StringMap& rDat
return true;
}
}
+
+ auto pTextView = dynamic_cast<weld::TextView*>(pWidget);
+ if (pTextView)
+ {
+ if (sAction == "change")
+ {
+ pTextView->set_text(rData["data"]);
+ LOKTrigger::trigger_changed(*pTextView);
+ return true;
+ }
+ }
}
}
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index e3245a40a73b..33a7b8c3c992 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -20,6 +20,7 @@
#include <o3tl/deleter.hxx>
#include <memory>
#include <vcl/toolbox.hxx>
+#include <vcl/vclmedit.hxx>
JSDialogNotifyIdle::JSDialogNotifyIdle(VclPtr<vcl::Window> aWindow)
: Idle("JSDialog notify")
@@ -331,6 +332,21 @@ std::unique_ptr<weld::Toolbar> JSInstanceBuilder::weld_toolbar(const OString& id
return pWeldWidget;
}
+std::unique_ptr<weld::TextView> JSInstanceBuilder::weld_text_view(const OString& id,
+ bool bTakeOwnership)
+{
+ VclMultiLineEdit* pTextView = m_xBuilder->get<VclMultiLineEdit>(id);
+ auto pWeldWidget = pTextView ? std::make_unique<JSTextView>(
+ m_bHasTopLevelDialog ? m_aOwnedToplevel : m_aParentDialog,
+ pTextView, this, bTakeOwnership)
+ : nullptr;
+
+ if (pWeldWidget)
+ RememberWidget(id, pWeldWidget.get());
+
+ return pWeldWidget;
+}
+
weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent,
VclMessageType eMessageType,
VclButtonsType eButtonType,
@@ -570,4 +586,17 @@ void JSToolbar::signal_clicked(const OString& rIdent)
notifyDialogState();
}
+JSTextView::JSTextView(VclPtr<vcl::Window> aOwnedToplevel, ::VclMultiLineEdit* pTextView,
+ SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : JSWidget<SalInstanceTextView, ::VclMultiLineEdit>(aOwnedToplevel, pTextView, pBuilder,
+ bTakeOwnership)
+{
+}
+
+void JSTextView::set_text(const OUString& rText)
+{
+ SalInstanceTextView::set_text(rText);
+ notifyDialogState();
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
commit b1b95b80b54819ced62443d3c87ec6ced27f81a9
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Thu Jul 16 11:06:49 2020 +0200
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Thu Jul 16 13:24:53 2020 +0200
Move SalInstanceTextView dect to header file
Change-Id: I779f860fec5203db3493663ff61d7b06167ff685
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98882
Tested-by: Jenkins
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index d5061b3e066c..cd82c840694f 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1243,4 +1243,61 @@ public:
virtual ~SalInstanceToolbar() override;
};
+class SalInstanceTextView : public SalInstanceContainer, public virtual weld::TextView
+{
+private:
+ VclPtr<VclMultiLineEdit> m_xTextView;
+ Link<ScrollBar*, void> m_aOrigVScrollHdl;
+
+ DECL_LINK(ChangeHdl, Edit&, void);
+ DECL_LINK(VscrollHdl, ScrollBar*, void);
+ DECL_LINK(CursorListener, VclWindowEvent&, void);
+
+public:
+ SalInstanceTextView(VclMultiLineEdit* pTextView, SalInstanceBuilder* pBuilder,
+ bool bTakeOwnership);
+
+ virtual void set_text(const OUString& rText) override;
+
+ virtual void replace_selection(const OUString& rText) override;
+
+ virtual OUString get_text() const override;
+
+ bool get_selection_bounds(int& rStartPos, int& rEndPos) override;
+
+ virtual void select_region(int nStartPos, int nEndPos) override;
+
+ virtual void set_editable(bool bEditable) override;
+ virtual bool get_editable() const override;
+ virtual void set_max_length(int nChars) override;
+
+ virtual void set_monospace(bool bMonospace) override;
+
+ virtual void connect_cursor_position(const Link<TextView&, void>& rLink) override;
+
+ virtual bool can_move_cursor_with_up() const override;
+
+ virtual bool can_move_cursor_with_down() const override;
+
+ virtual void cut_clipboard() override;
+
+ virtual void copy_clipboard() override;
+
+ virtual void paste_clipboard() override;
+
+ virtual void set_alignment(TxtAlign eXAlign) override;
+
+ virtual int vadjustment_get_value() const override;
+
+ virtual void vadjustment_set_value(int value) override;
+
+ virtual int vadjustment_get_upper() const override;
+
+ virtual int vadjustment_get_lower() const override;
+
+ virtual int vadjustment_get_page_size() const override;
+
+ virtual ~SalInstanceTextView() override;
+};
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 74436a1644e9..3581b14a8afb 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -5448,164 +5448,148 @@ std::unique_ptr<weld::Label> SalInstanceFrame::weld_label_widget() const
return std::make_unique<SalInstanceLabel>(pLabel, m_pBuilder, false);
}
-namespace
-{
-class SalInstanceTextView : public SalInstanceContainer, public virtual weld::TextView
+SalInstanceTextView::SalInstanceTextView(VclMultiLineEdit* pTextView, SalInstanceBuilder* pBuilder,
+ bool bTakeOwnership)
+ : SalInstanceContainer(pTextView, pBuilder, bTakeOwnership)
+ , m_xTextView(pTextView)
{
-private:
- VclPtr<VclMultiLineEdit> m_xTextView;
- Link<ScrollBar*, void> m_aOrigVScrollHdl;
-
- DECL_LINK(ChangeHdl, Edit&, void);
- DECL_LINK(VscrollHdl, ScrollBar*, void);
- DECL_LINK(CursorListener, VclWindowEvent&, void);
+ m_xTextView->SetModifyHdl(LINK(this, SalInstanceTextView, ChangeHdl));
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ m_aOrigVScrollHdl = rVertScrollBar.GetScrollHdl();
+ rVertScrollBar.SetScrollHdl(LINK(this, SalInstanceTextView, VscrollHdl));
+}
-public:
- SalInstanceTextView(VclMultiLineEdit* pTextView, SalInstanceBuilder* pBuilder,
- bool bTakeOwnership)
- : SalInstanceContainer(pTextView, pBuilder, bTakeOwnership)
- , m_xTextView(pTextView)
- {
- m_xTextView->SetModifyHdl(LINK(this, SalInstanceTextView, ChangeHdl));
- ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
- m_aOrigVScrollHdl = rVertScrollBar.GetScrollHdl();
- rVertScrollBar.SetScrollHdl(LINK(this, SalInstanceTextView, VscrollHdl));
- }
+void SalInstanceTextView::set_text(const OUString& rText)
+{
+ disable_notify_events();
+ m_xTextView->SetText(rText);
+ enable_notify_events();
+}
- virtual void set_text(const OUString& rText) override
- {
- disable_notify_events();
- m_xTextView->SetText(rText);
- enable_notify_events();
- }
+void SalInstanceTextView::replace_selection(const OUString& rText)
+{
+ disable_notify_events();
+ m_xTextView->ReplaceSelected(rText);
+ enable_notify_events();
+}
- virtual void replace_selection(const OUString& rText) override
- {
- disable_notify_events();
- m_xTextView->ReplaceSelected(rText);
- enable_notify_events();
- }
+OUString SalInstanceTextView::get_text() const { return m_xTextView->GetText(); }
- virtual OUString get_text() const override { return m_xTextView->GetText(); }
+bool SalInstanceTextView::get_selection_bounds(int& rStartPos, int& rEndPos)
+{
+ const Selection& rSelection = m_xTextView->GetSelection();
+ rStartPos = rSelection.Min();
+ rEndPos = rSelection.Max();
+ return rSelection.Len();
+}
- bool get_selection_bounds(int& rStartPos, int& rEndPos) override
- {
- const Selection& rSelection = m_xTextView->GetSelection();
- rStartPos = rSelection.Min();
- rEndPos = rSelection.Max();
- return rSelection.Len();
- }
+void SalInstanceTextView::select_region(int nStartPos, int nEndPos)
+{
+ disable_notify_events();
+ long nStart = nStartPos < 0 ? SELECTION_MAX : nStartPos;
+ long nEnd = nEndPos < 0 ? SELECTION_MAX : nEndPos;
+ m_xTextView->SetSelection(Selection(nStart, nEnd));
+ enable_notify_events();
+}
- virtual void select_region(int nStartPos, int nEndPos) override
- {
- disable_notify_events();
- long nStart = nStartPos < 0 ? SELECTION_MAX : nStartPos;
- long nEnd = nEndPos < 0 ? SELECTION_MAX : nEndPos;
- m_xTextView->SetSelection(Selection(nStart, nEnd));
- enable_notify_events();
- }
+void SalInstanceTextView::set_editable(bool bEditable) { m_xTextView->SetReadOnly(!bEditable); }
+bool SalInstanceTextView::get_editable() const { return !m_xTextView->IsReadOnly(); }
+void SalInstanceTextView::set_max_length(int nChars) { m_xTextView->SetMaxTextLen(nChars); }
- virtual void set_editable(bool bEditable) override { m_xTextView->SetReadOnly(!bEditable); }
- virtual bool get_editable() const override { return !m_xTextView->IsReadOnly(); }
- virtual void set_max_length(int nChars) override { m_xTextView->SetMaxTextLen(nChars); }
+void SalInstanceTextView::set_monospace(bool bMonospace)
+{
+ vcl::Font aOrigFont = m_xTextView->GetControlFont();
+ vcl::Font aFont;
+ if (bMonospace)
+ aFont = OutputDevice::GetDefaultFont(DefaultFontType::UI_FIXED, LANGUAGE_DONTKNOW,
+ GetDefaultFontFlags::OnlyOne, m_xTextView);
+ else
+ aFont = Application::GetSettings().GetStyleSettings().GetFieldFont();
+ aFont.SetFontHeight(aOrigFont.GetFontHeight());
+ m_xTextView->SetFont(aFont);
+ m_xTextView->SetControlFont(aFont);
+}
- virtual void set_monospace(bool bMonospace) override
- {
- vcl::Font aOrigFont = m_xTextView->GetControlFont();
- vcl::Font aFont;
- if (bMonospace)
- aFont = OutputDevice::GetDefaultFont(DefaultFontType::UI_FIXED, LANGUAGE_DONTKNOW,
- GetDefaultFontFlags::OnlyOne, m_xTextView);
- else
- aFont = Application::GetSettings().GetStyleSettings().GetFieldFont();
- aFont.SetFontHeight(aOrigFont.GetFontHeight());
- m_xTextView->SetFont(aFont);
- m_xTextView->SetControlFont(aFont);
- }
+void SalInstanceTextView::connect_cursor_position(const Link<TextView&, void>& rLink)
+{
+ assert(!m_aCursorPositionHdl.IsSet());
+ m_xTextView->AddEventListener(LINK(this, SalInstanceTextView, CursorListener));
+ weld::TextView::connect_cursor_position(rLink);
+}
- virtual void connect_cursor_position(const Link<TextView&, void>& rLink) override
- {
- assert(!m_aCursorPositionHdl.IsSet());
- m_xTextView->AddEventListener(LINK(this, SalInstanceTextView, CursorListener));
- weld::TextView::connect_cursor_position(rLink);
- }
+bool SalInstanceTextView::can_move_cursor_with_up() const
+{
+ bool bNoSelection = !m_xTextView->GetSelection();
+ return !bNoSelection || m_xTextView->CanUp();
+}
- virtual bool can_move_cursor_with_up() const override
- {
- bool bNoSelection = !m_xTextView->GetSelection();
- return !bNoSelection || m_xTextView->CanUp();
- }
+bool SalInstanceTextView::can_move_cursor_with_down() const
+{
+ bool bNoSelection = !m_xTextView->GetSelection();
+ return !bNoSelection || m_xTextView->CanDown();
+}
- virtual bool can_move_cursor_with_down() const override
- {
- bool bNoSelection = !m_xTextView->GetSelection();
- return !bNoSelection || m_xTextView->CanDown();
- }
+void SalInstanceTextView::cut_clipboard()
+{
+ m_xTextView->Cut();
+}
- virtual void cut_clipboard() override
- {
- m_xTextView->Cut();
- }
+void SalInstanceTextView::copy_clipboard()
+{
+ m_xTextView->Copy();
+}
- virtual void copy_clipboard() override
- {
- m_xTextView->Copy();
- }
+void SalInstanceTextView::paste_clipboard()
+{
+ m_xTextView->Paste();
+}
- virtual void paste_clipboard() override
- {
- m_xTextView->Paste();
- }
+void SalInstanceTextView::set_alignment(TxtAlign eXAlign)
+{
+ ::set_alignment(*m_xTextView, eXAlign);
+}
- virtual void set_alignment(TxtAlign eXAlign) override
- {
- ::set_alignment(*m_xTextView, eXAlign);
- }
+int SalInstanceTextView::vadjustment_get_value() const
+{
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ return rVertScrollBar.GetThumbPos();
+}
- virtual int vadjustment_get_value() const override
- {
- ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
- return rVertScrollBar.GetThumbPos();
- }
+void SalInstanceTextView::vadjustment_set_value(int value)
+{
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ rVertScrollBar.SetThumbPos(value);
+ m_aOrigVScrollHdl.Call(&rVertScrollBar);
+}
- virtual void vadjustment_set_value(int value) override
- {
- ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
- rVertScrollBar.SetThumbPos(value);
- m_aOrigVScrollHdl.Call(&rVertScrollBar);
- }
+int SalInstanceTextView::vadjustment_get_upper() const
+{
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ return rVertScrollBar.GetRangeMax();
+}
- virtual int vadjustment_get_upper() const override
- {
- ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
- return rVertScrollBar.GetRangeMax();
- }
+int SalInstanceTextView::vadjustment_get_lower() const
+{
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ return rVertScrollBar.GetRangeMin();
+}
- virtual int vadjustment_get_lower() const override
- {
- ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
- return rVertScrollBar.GetRangeMin();
- }
+int SalInstanceTextView::vadjustment_get_page_size() const
+{
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ return rVertScrollBar.GetVisibleSize();
+}
- virtual int vadjustment_get_page_size() const override
+SalInstanceTextView::~SalInstanceTextView()
+{
+ if (!m_xTextView->IsDisposed())
{
+ if (m_aCursorPositionHdl.IsSet())
+ m_xTextView->RemoveEventListener(LINK(this, SalInstanceTextView, CursorListener));
+ m_xTextView->SetModifyHdl(Link<Edit&, void>());
ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
- return rVertScrollBar.GetVisibleSize();
- }
-
- virtual ~SalInstanceTextView() override
- {
- if (!m_xTextView->IsDisposed())
- {
- if (m_aCursorPositionHdl.IsSet())
- m_xTextView->RemoveEventListener(LINK(this, SalInstanceTextView, CursorListener));
- m_xTextView->SetModifyHdl(Link<Edit&, void>());
- ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
- rVertScrollBar.SetScrollHdl(m_aOrigVScrollHdl);
- }
+ rVertScrollBar.SetScrollHdl(m_aOrigVScrollHdl);
}
-};
-
}
IMPL_LINK(SalInstanceTextView, VscrollHdl, ScrollBar*, pScrollBar, void)
More information about the Libreoffice-commits
mailing list