include/svx/sidebar/AreaPropertyPanelBase.hxx | 2 include/svx/sidebar/AreaTransparencyGradientPopup.hxx | 11 ++-- svx/source/sidebar/area/AreaPropertyPanelBase.cxx | 3 - svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx | 31 ++++++-------- svx/uiconfig/ui/floatingareastyle.ui | 2 vcl/inc/jsdialog/jsdialogbuilder.hxx | 1 vcl/jsdialog/enabled.cxx | 3 - vcl/jsdialog/jsdialogbuilder.cxx | 6 ++ vcl/source/window/toolbox2.cxx | 15 ++++++ 9 files changed, 49 insertions(+), 25 deletions(-)
New commits: commit bf9e72399e65ec6fc2a9149fa2ba884732362bd8 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Tue Jul 6 11:40:07 2021 +0200 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Tue Jul 6 12:24:31 2021 +0200 Convert AreaTransparencyGradientPopup to WeldToolbarPopup Change-Id: I3cbb17de9953281e884f6c1b2984bc4865a56227 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118471 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/svx/sidebar/AreaPropertyPanelBase.hxx b/include/svx/sidebar/AreaPropertyPanelBase.hxx index 434a6397d4e2..aad33abdcc72 100644 --- a/include/svx/sidebar/AreaPropertyPanelBase.hxx +++ b/include/svx/sidebar/AreaPropertyPanelBase.hxx @@ -98,6 +98,8 @@ private: void Initialize(); protected: + const css::uno::Reference<css::frame::XFrame>& mxFrame; + sal_uInt16 meLastXFS; sal_Int32 mnLastPosHatch; diff --git a/include/svx/sidebar/AreaTransparencyGradientPopup.hxx b/include/svx/sidebar/AreaTransparencyGradientPopup.hxx index 2f5dcedec5c6..04b8fa91a8b6 100644 --- a/include/svx/sidebar/AreaTransparencyGradientPopup.hxx +++ b/include/svx/sidebar/AreaTransparencyGradientPopup.hxx @@ -20,6 +20,7 @@ #define INCLUDED_SVX_SOURCE_SIDEBAR_AREA_AREATRANSPARENCYGRADIENTPOPUP_HXX #include <vcl/weld.hxx> +#include <svtools/toolbarmenu.hxx> class XFillFloatTransparenceItem; @@ -28,12 +29,10 @@ namespace svx::sidebar class AreaTransparencyGradientControl; class AreaPropertyPanelBase; -class AreaTransparencyGradientPopup final +class AreaTransparencyGradientPopup final : public WeldToolbarPopup { private: AreaPropertyPanelBase& mrAreaPropertyPanel; - std::unique_ptr<weld::Builder> mxBuilder; - std::unique_ptr<weld::Container> mxTopLevel; std::unique_ptr<weld::Widget> mxCenterGrid; std::unique_ptr<weld::Widget> mxAngleGrid; std::unique_ptr<weld::MetricSpinButton> mxMtrTrgrCenterX; @@ -53,12 +52,12 @@ private: DECL_LINK(FocusHdl, weld::Widget&, void); public: - AreaTransparencyGradientPopup(AreaPropertyPanelBase& rPanel, weld::Widget* pParent); + AreaTransparencyGradientPopup(const css::uno::Reference<css::frame::XFrame>& rFrame, + AreaPropertyPanelBase& rPanel, weld::Widget* pParent); ~AreaTransparencyGradientPopup(); - weld::Container* getTopLevel() const { return mxTopLevel.get(); } - void Rearrange(XFillFloatTransparenceItem const* pItem); + virtual void GrabFocus() override; }; } // end of namespace svx::sidebar diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx index ffcaf142d012..a52dfd10d245 100644 --- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx +++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx @@ -64,6 +64,7 @@ AreaPropertyPanelBase::AreaPropertyPanelBase( weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame) : PanelLayout(pParent, "AreaPropertyPanel", "svx/ui/sidebararea.ui"), + mxFrame(rxFrame), meLastXFS(static_cast<sal_uInt16>(-1)), mnLastPosHatch(0), mnLastPosBitmap(0), @@ -178,7 +179,7 @@ void AreaPropertyPanelBase::Initialize() mxMTRTransparent->connect_value_changed(LINK(this, AreaPropertyPanelBase, ModifyTransparentHdl_Impl)); mxSldTransparent->connect_value_changed(LINK(this, AreaPropertyPanelBase, ModifyTransSliderHdl)); - mxTrGrPopup = std::make_unique<AreaTransparencyGradientPopup>(*this, mxBTNGradient.get()); + mxTrGrPopup = std::make_unique<AreaTransparencyGradientPopup>(mxFrame, *this, mxBTNGradient.get()); mxBTNGradient->set_item_popover(SIDEBARGRADIENT, mxTrGrPopup->getTopLevel()); mxBTNGradient->connect_clicked(LINK(this, AreaPropertyPanelBase, ToolbarHdl_Impl)); diff --git a/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx b/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx index 7c4a8dc59962..581d302a9d7d 100644 --- a/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx +++ b/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx @@ -25,20 +25,20 @@ namespace svx::sidebar { -AreaTransparencyGradientPopup::AreaTransparencyGradientPopup(AreaPropertyPanelBase& rPanel, weld::Widget* pParent) - : mrAreaPropertyPanel(rPanel) - , mxBuilder(Application::CreateBuilder(pParent, "svx/ui/floatingareastyle.ui")) - , mxTopLevel(mxBuilder->weld_container("FloatingAreaStyle")) - , mxCenterGrid(mxBuilder->weld_widget("centergrid")) - , mxAngleGrid(mxBuilder->weld_widget("anglegrid")) - , mxMtrTrgrCenterX(mxBuilder->weld_metric_spin_button("centerx", FieldUnit::PERCENT)) - , mxMtrTrgrCenterY(mxBuilder->weld_metric_spin_button("centery", FieldUnit::PERCENT)) - , mxMtrTrgrAngle(mxBuilder->weld_metric_spin_button("angle", FieldUnit::DEGREE)) - , mxBtnLeft45(mxBuilder->weld_toolbar("lefttoolbox")) - , mxBtnRight45(mxBuilder->weld_toolbar("righttoolbox")) - , mxMtrTrgrStartValue(mxBuilder->weld_metric_spin_button("start", FieldUnit::PERCENT)) - , mxMtrTrgrEndValue(mxBuilder->weld_metric_spin_button("end", FieldUnit::PERCENT)) - , mxMtrTrgrBorder(mxBuilder->weld_metric_spin_button("border", FieldUnit::PERCENT)) +AreaTransparencyGradientPopup::AreaTransparencyGradientPopup(const css::uno::Reference<css::frame::XFrame>& rFrame, + AreaPropertyPanelBase& rPanel, weld::Widget* pParent) + : WeldToolbarPopup(rFrame, pParent, "svx/ui/floatingareastyle.ui", "FloatingAreaStyle") + , mrAreaPropertyPanel(rPanel) + , mxCenterGrid(m_xBuilder->weld_widget("centergrid")) + , mxAngleGrid(m_xBuilder->weld_widget("anglegrid")) + , mxMtrTrgrCenterX(m_xBuilder->weld_metric_spin_button("centerx", FieldUnit::PERCENT)) + , mxMtrTrgrCenterY(m_xBuilder->weld_metric_spin_button("centery", FieldUnit::PERCENT)) + , mxMtrTrgrAngle(m_xBuilder->weld_metric_spin_button("angle", FieldUnit::DEGREE)) + , mxBtnLeft45(m_xBuilder->weld_toolbar("lefttoolbox")) + , mxBtnRight45(m_xBuilder->weld_toolbar("righttoolbox")) + , mxMtrTrgrStartValue(m_xBuilder->weld_metric_spin_button("start", FieldUnit::PERCENT)) + , mxMtrTrgrEndValue(m_xBuilder->weld_metric_spin_button("end", FieldUnit::PERCENT)) + , mxMtrTrgrBorder(m_xBuilder->weld_metric_spin_button("border", FieldUnit::PERCENT)) { Link<weld::MetricSpinButton&,void> aLink = LINK(this, AreaTransparencyGradientPopup, ModifiedTrgrHdl_Impl); mxMtrTrgrCenterX->connect_value_changed(aLink); @@ -49,7 +49,6 @@ AreaTransparencyGradientPopup::AreaTransparencyGradientPopup(AreaPropertyPanelBa mxMtrTrgrEndValue->connect_value_changed(aLink); mxBtnLeft45->connect_clicked(LINK(this, AreaTransparencyGradientPopup, Left_Click45_Impl)); mxBtnRight45->connect_clicked(LINK(this, AreaTransparencyGradientPopup, Right_Click45_Impl)); - mxTopLevel->connect_focus_in(LINK(this, AreaTransparencyGradientPopup, FocusHdl)); } AreaTransparencyGradientPopup::~AreaTransparencyGradientPopup() @@ -171,7 +170,7 @@ IMPL_LINK_NOARG(AreaTransparencyGradientPopup, Right_Click45_Impl, const OString ExecuteValueModify(nStartCol, nEndCol); } -IMPL_LINK_NOARG(AreaTransparencyGradientPopup, FocusHdl, weld::Widget&, void) +void AreaTransparencyGradientPopup::GrabFocus() { mxMtrTrgrCenterX->grab_focus(); } diff --git a/svx/uiconfig/ui/floatingareastyle.ui b/svx/uiconfig/ui/floatingareastyle.ui index dd28a22180e0..3e59313ef137 100644 --- a/svx/uiconfig/ui/floatingareastyle.ui +++ b/svx/uiconfig/ui/floatingareastyle.ui @@ -38,7 +38,7 @@ <property name="border_width">4</property> <child> <!-- n-columns=1 n-rows=1 --> - <object class="GtkGrid"> + <object class="GtkGrid" id="container"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index 38bee8043cd6..0d0e0813c758 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -70,7 +70,8 @@ bool isBuilderEnabledForPopup(const OUString& rUIFile) || rUIFile == "svx/ui/paralinespacingcontrol.ui" || rUIFile == "svx/ui/floatinglineproperty.ui" || rUIFile == "svx/ui/floatinglinestyle.ui" || rUIFile == "svx/ui/floatinglineend.ui" || rUIFile == "svx/ui/fontworkalignmentcontrol.ui" - || rUIFile == "svx/ui/fontworkcharacterspacingcontrol.ui") + || rUIFile == "svx/ui/fontworkcharacterspacingcontrol.ui" + || rUIFile == "svx/ui/floatingareastyle.ui") return true; return false; commit 19fd857529a5be4d983a1dfca63a2f6d5bce592f Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Tue Jul 6 11:50:38 2021 +0200 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Tue Jul 6 12:24:20 2021 +0200 jsdialog: dump image for toolitems Change-Id: If47eb57cc18c6f04e5b2e3a14a6bcea657e03df8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118472 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index f80d8fad9f1a..2bcee8777ea0 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -566,6 +566,7 @@ public: virtual void set_menu_item_active(const OString& rIdent, bool bActive) override; virtual void set_item_sensitive(const OString& rIdent, bool bSensitive) override; + virtual void set_item_icon_name(const OString& rIdent, const OUString& rIconName) override; }; class JSTextView : public JSWidget<SalInstanceTextView, ::VclMultiLineEdit> diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index 023ed09f81f6..4b19764d8031 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -1388,6 +1388,12 @@ void JSToolbar::set_item_sensitive(const OString& rIdent, bool bSensitive) sendUpdate(); } +void JSToolbar::set_item_icon_name(const OString& rIdent, const OUString& rIconName) +{ + SalInstanceToolbar::set_item_icon_name(rIdent, rIconName); + sendUpdate(); +} + JSTextView::JSTextView(JSDialogSender* pSender, ::VclMultiLineEdit* pTextView, SalInstanceBuilder* pBuilder, bool bTakeOwnership) : JSWidget<SalInstanceTextView, ::VclMultiLineEdit>(pSender, pTextView, pBuilder, diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx index cee2d7dfadbf..2781c3897063 100644 --- a/vcl/source/window/toolbox2.cxx +++ b/vcl/source/window/toolbox2.cxx @@ -21,9 +21,11 @@ #include <vcl/uitest/logger.hxx> #include <sal/log.hxx> +#include <comphelper/base64.hxx> #include <comphelper/processfactory.hxx> #include <boost/property_tree/ptree.hpp> +#include <vcl/cvtgrf.hxx> #include <vcl/svapp.hxx> #include <vcl/idle.hxx> #include <vcl/bitmap.hxx> @@ -1756,6 +1758,19 @@ void ToolBox::DumpAsPropertyTree(tools::JsonWriter& rJsonWriter) rJsonWriter.put("dropdown", true); if (!IsItemEnabled(nId)) rJsonWriter.put("enabled", false); + + Image aImage = GetItemImage(nId); + if (!!aImage) + { + SvMemoryStream aOStm(6535, 6535); + if(GraphicConverter::Export(aOStm, aImage.GetBitmapEx(), ConvertDataFormat::PNG) == ERRCODE_NONE) + { + css::uno::Sequence<sal_Int8> aSeq( static_cast<sal_Int8 const *>(aOStm.GetData()), aOStm.Tell()); + OUStringBuffer aBuffer("data:image/png;base64,"); + ::comphelper::Base64::encode(aBuffer, aSeq); + rJsonWriter.put("image", aBuffer.makeStringAndClear()); + } + } } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits