From 278f01eadd513608e306ea6b85d52fb115a6dedf Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Thu, 23 Jan 2020 15:28:08 +0000 Subject: weld Svx3DWin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I472a4edb5ac7a8039d21128256c204e2969acc6a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87296 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- include/svx/float3d.hxx | 252 +++++++++++++++++++++++++++--------------------- include/svx/strings.hrc | 2 + 2 files changed, 144 insertions(+), 110 deletions(-) (limited to 'include') diff --git a/include/svx/float3d.hxx b/include/svx/float3d.hxx index 2390633c9a18..d899b2d5e4fc 100644 --- a/include/svx/float3d.hxx +++ b/include/svx/float3d.hxx @@ -22,11 +22,8 @@ #include #include -#include -#include #include -#include -#include +#include #include #include @@ -44,10 +41,40 @@ enum class ViewType3D class FmFormModel; class Svx3DCtrlItem; class SvxConvertTo3DItem; -class SvxColorListBox; +class ColorListBox; struct Svx3DWinImpl; +class SVX_DLLPUBLIC LightButton final +{ +public: + explicit LightButton(std::unique_ptr xButton); + + void switchLightOn(bool bOn); + bool isLightOn() const { return m_bLightOn;} + + bool get_active() const { return m_xButton->get_active(); } + void set_active(bool bActive) { m_xButton->set_active(bActive); } + + TriState get_state() const { return m_xButton->get_state(); } + void set_state(TriState eState) { m_xButton->set_state(eState); } + + weld::ToggleButton* get_widget() const { return m_xButton.get(); } + + void connect_clicked(const Link& rLink) + { + m_xButton->connect_clicked(rLink); + } + + bool get_prev_active() const { return m_bButtonPrevActive; } + void set_prev_active(bool bPrevActive) { m_bButtonPrevActive = bPrevActive; } + +private: + std::unique_ptr m_xButton; + bool m_bLightOn; + bool m_bButtonPrevActive; +}; + class SAL_WARN_UNUSED SVX_DLLPUBLIC Svx3DWin final : public SfxDockingWindow { friend class Svx3DChildWindow; @@ -55,112 +82,118 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC Svx3DWin final : public SfxDockingWindow using Window::Update; private: - VclPtr m_pBtnGeo; - VclPtr m_pBtnRepresentation; - VclPtr m_pBtnLight; - VclPtr m_pBtnTexture; - VclPtr m_pBtnMaterial; - VclPtr m_pBtnUpdate; - VclPtr m_pBtnAssign; + std::unique_ptr m_xBtnGeo; + std::unique_ptr m_xBtnRepresentation; + std::unique_ptr m_xBtnLight; + std::unique_ptr m_xBtnTexture; + std::unique_ptr m_xBtnMaterial; + std::unique_ptr m_xBtnUpdate; + std::unique_ptr m_xBtnAssign; // geometry - VclPtr m_pFLGeometrie; - VclPtr m_pFtPercentDiagonal; - VclPtr m_pMtrPercentDiagonal; - VclPtr m_pFtBackscale; - VclPtr m_pMtrBackscale; - VclPtr m_pFtEndAngle; - VclPtr m_pMtrEndAngle; - VclPtr m_pFtDepth; - VclPtr m_pMtrDepth; - - VclPtr m_pFLSegments; - VclPtr m_pNumHorizontal; - VclPtr m_pNumVertical; - - VclPtr m_pFLNormals; - VclPtr m_pBtnNormalsObj; - VclPtr m_pBtnNormalsFlat; - VclPtr m_pBtnNormalsSphere; - VclPtr m_pBtnNormalsInvert; - VclPtr m_pBtnTwoSidedLighting; - VclPtr m_pBtnDoubleSided; + std::unique_ptr m_xFLGeometrie; + std::unique_ptr m_xFtPercentDiagonal; + std::unique_ptr m_xMtrPercentDiagonal; + std::unique_ptr m_xFtBackscale; + std::unique_ptr m_xMtrBackscale; + std::unique_ptr m_xFtEndAngle; + std::unique_ptr m_xMtrEndAngle; + std::unique_ptr m_xFtDepth; + std::unique_ptr m_xMtrDepth; + + std::unique_ptr m_xFLSegments; + std::unique_ptr m_xNumHorizontal; + std::unique_ptr m_xNumVertical; + + std::unique_ptr m_xFLNormals; + std::unique_ptr m_xBtnNormalsObj; + std::unique_ptr m_xBtnNormalsFlat; + std::unique_ptr m_xBtnNormalsSphere; + std::unique_ptr m_xBtnNormalsInvert; + std::unique_ptr m_xBtnTwoSidedLighting; + std::unique_ptr m_xBtnDoubleSided; // presentation - VclPtr m_pFLRepresentation; - VclPtr m_pLbShademode; + std::unique_ptr m_xFLRepresentation; + std::unique_ptr m_xLbShademode; - VclPtr m_pFLShadow; - VclPtr m_pBtnShadow3d; - VclPtr m_pFtSlant; - VclPtr m_pMtrSlant; + std::unique_ptr m_xFLShadow; + std::unique_ptr m_xBtnShadow3d; + std::unique_ptr m_xFtSlant; + std::unique_ptr m_xMtrSlant; - VclPtr m_pFLCamera; - VclPtr m_pMtrDistance; - VclPtr m_pMtrFocalLength; + std::unique_ptr m_xFLCamera; + std::unique_ptr m_xMtrDistance; + std::unique_ptr m_xMtrFocalLength; // lighting - VclPtr m_pFLLight; - VclPtr m_pBtnLight1; - VclPtr m_pBtnLight2; - VclPtr m_pBtnLight3; - VclPtr m_pBtnLight4; - VclPtr m_pBtnLight5; - VclPtr m_pBtnLight6; - VclPtr m_pBtnLight7; - VclPtr m_pBtnLight8; - VclPtr m_pLbLight1; - VclPtr m_pLbLight2; - VclPtr m_pLbLight3; - VclPtr m_pLbLight4; - VclPtr m_pLbLight5; - VclPtr m_pLbLight6; - VclPtr m_pLbLight7; - VclPtr m_pLbLight8; - VclPtr m_pBtnLightColor; - VclPtr m_pLbAmbientlight; // ListBox - VclPtr m_pBtnAmbientColor; // color button + std::unique_ptr m_xFLLight; + std::unique_ptr m_xBtnLight1; + std::unique_ptr m_xBtnLight2; + std::unique_ptr m_xBtnLight3; + std::unique_ptr m_xBtnLight4; + std::unique_ptr m_xBtnLight5; + std::unique_ptr m_xBtnLight6; + std::unique_ptr m_xBtnLight7; + std::unique_ptr m_xBtnLight8; + std::unique_ptr m_xLbLight1; + std::unique_ptr m_xLbLight2; + std::unique_ptr m_xLbLight3; + std::unique_ptr m_xLbLight4; + std::unique_ptr m_xLbLight5; + std::unique_ptr m_xLbLight6; + std::unique_ptr m_xLbLight7; + std::unique_ptr m_xLbLight8; + std::unique_ptr m_xBtnLightColor; + std::unique_ptr m_xLbAmbientlight; // ListBox + std::unique_ptr m_xBtnAmbientColor; // color button // Textures - VclPtr m_pFLTexture; - VclPtr m_pBtnTexLuminance; - VclPtr m_pBtnTexColor; - VclPtr m_pBtnTexReplace; - VclPtr m_pBtnTexModulate; - VclPtr m_pBtnTexBlend; - VclPtr m_pBtnTexObjectX; - VclPtr m_pBtnTexParallelX; - VclPtr m_pBtnTexCircleX; - VclPtr m_pBtnTexObjectY; - VclPtr m_pBtnTexParallelY; - VclPtr m_pBtnTexCircleY; - VclPtr m_pBtnTexFilter; + std::unique_ptr m_xFLTexture; + std::unique_ptr m_xBtnTexLuminance; + std::unique_ptr m_xBtnTexColor; + std::unique_ptr m_xBtnTexReplace; + std::unique_ptr m_xBtnTexModulate; + std::unique_ptr m_xBtnTexBlend; + std::unique_ptr m_xBtnTexObjectX; + std::unique_ptr m_xBtnTexParallelX; + std::unique_ptr m_xBtnTexCircleX; + std::unique_ptr m_xBtnTexObjectY; + std::unique_ptr m_xBtnTexParallelY; + std::unique_ptr m_xBtnTexCircleY; + std::unique_ptr m_xBtnTexFilter; // material // material editor - VclPtr m_pFLMaterial; - VclPtr m_pLbMatFavorites; - VclPtr m_pLbMatColor; - VclPtr m_pBtnMatColor; - VclPtr m_pLbMatEmission; - VclPtr m_pBtnEmissionColor; - - VclPtr m_pFLMatSpecular; - VclPtr m_pLbMatSpecular; - VclPtr m_pBtnSpecularColor; - VclPtr m_pMtrMatSpecularIntensity; - - VclPtr m_pCtlPreview; - VclPtr m_pCtlLightPreview; + std::unique_ptr m_xFLMaterial; + std::unique_ptr m_xLbMatFavorites; + std::unique_ptr m_xLbMatColor; + std::unique_ptr m_xBtnMatColor; + std::unique_ptr m_xLbMatEmission; + std::unique_ptr m_xBtnEmissionColor; + + std::unique_ptr m_xFLMatSpecular; + std::unique_ptr m_xLbMatSpecular; + std::unique_ptr m_xBtnSpecularColor; + std::unique_ptr m_xMtrMatSpecularIntensity; + + std::unique_ptr m_xCtlPreview; + std::unique_ptr m_xCtlPreviewWin; + + std::unique_ptr m_xLightPreviewGrid; + std::unique_ptr m_xHoriScale; + std::unique_ptr m_xVertScale; + std::unique_ptr m_xBtn_Corner; + std::unique_ptr m_xLightPreview; + std::unique_ptr m_xCtlLightPreviewWin; + std::unique_ptr m_xCtlLightPreview; // bottom part - VclPtr m_pBtnConvertTo3D; - VclPtr m_pBtnLatheObject; - VclPtr m_pBtnPerspective; + std::unique_ptr m_xBtnConvertTo3D; + std::unique_ptr m_xBtnLatheObject; + std::unique_ptr m_xBtnPerspective; // the rest ... - Image const aImgLightOn; - Image const aImgLightOff; bool bUpdate; ViewType3D eViewType; @@ -180,27 +213,26 @@ private: // ItemSet used to remember set 2d attributes std::unique_ptr mpRemember2DAttributes; - DECL_LINK( ClickViewTypeHdl, Button*, void ); - DECL_LINK( ClickUpdateHdl, Button*, void ); - DECL_LINK( ClickAssignHdl, Button*, void ); - DECL_LINK( ClickHdl, Button*, void ); - DECL_LINK( ClickColorHdl, Button*, void ); - DECL_LINK( SelectHdl, ListBox&, void ); - DECL_LINK( SelectColorHdl, SvxColorListBox&, void ); - DECL_LINK( ModifyHdl, Edit&, void ); - void ClickLight(PushButton &rBtn); + DECL_LINK( ClickViewTypeHdl, weld::Button&, void ); + DECL_LINK( ClickUpdateHdl, weld::Button&, void ); + DECL_LINK( ClickAssignHdl, weld::Button&, void ); + DECL_LINK( ClickHdl, weld::Button&, void ); + DECL_LINK( ClickColorHdl, weld::Button&, void ); + DECL_LINK( SelectHdl, weld::ComboBox&, void ); + DECL_LINK( SelectColorHdl, ColorListBox&, void ); + DECL_LINK( ModifyMetricHdl, weld::MetricSpinButton&, void ); + DECL_LINK( ModifySpinHdl, weld::SpinButton&, void ); + void ClickLight(const LightButton& rBtn); - DECL_LINK( ChangeSelectionCallbackHdl, SvxLightCtl3D*, void ); + DECL_LINK( ChangeSelectionCallbackHdl, LightCtl3D*, void ); SVX_DLLPRIVATE void Construct(); SVX_DLLPRIVATE void Reset(); - SVX_DLLPRIVATE static void LBSelectColor( SvxColorListBox* pLb, const Color& rColor ); - SVX_DLLPRIVATE sal_uInt16 GetLightSource( const PushButton* pBtn ); - SVX_DLLPRIVATE SvxColorListBox* GetLbByButton( const PushButton* pBtn = nullptr ); - - SVX_DLLPRIVATE bool GetUILightState( const PushButton& rBtn ) const; - SVX_DLLPRIVATE void SetUILightState( PushButton& aBtn, bool bState ); + SVX_DLLPRIVATE static void LBSelectColor( ColorListBox* pLb, const Color& rColor ); + SVX_DLLPRIVATE sal_uInt16 GetLightSource( const LightButton* pBtn ); + SVX_DLLPRIVATE ColorListBox* GetCLbByButton( const LightButton* pBtn = nullptr ); + SVX_DLLPRIVATE LightButton* GetLbByButton( const weld::Button* pBtn ); virtual void Resize() override; diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc index f3594bde95ed..dc7122a40a9a 100644 --- a/include/svx/strings.hrc +++ b/include/svx/strings.hrc @@ -1291,6 +1291,8 @@ #define RID_SVXDLG_BMPMASK_STR_PALETTE NC_("RID_SVXDLG_BMPMASK_STR_PALETTE", "Color Palette") #define RID_SVXDLG_BMPMASK_STR_TITLE NC_("RID_SVXDLG_BMPMASK_STR_TITLE", "Color Replacer") +#define RID_SVXDLG_FLOAT3D_STR_TITLE NC_("RID_SVXDLG_FLOAT3D_STR_TITLE", "3D Effects") + #define RID_SVXSTR_ERR_OLD_PASSWD NC_("RID_SVXSTR_ERR_OLD_PASSWD", "Invalid password") #define RID_SVXSTR_ERR_REPEAT_PASSWD NC_("RID_SVXSTR_ERR_REPEAT_PASSWD", "Passwords do not match") -- cgit