[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