summaryrefslogtreecommitdiffstats
path: root/include/vcl/button.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'include/vcl/button.hxx')
-rw-r--r--include/vcl/button.hxx574
1 files changed, 574 insertions, 0 deletions
diff --git a/include/vcl/button.hxx b/include/vcl/button.hxx
new file mode 100644
index 000000000000..8c116b0644dd
--- /dev/null
+++ b/include/vcl/button.hxx
@@ -0,0 +1,574 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef _SV_BUTTON_HXX
+#define _SV_BUTTON_HXX
+
+#include <tools/solar.h>
+#include <vcl/dllapi.h>
+#include <vcl/image.hxx>
+#include <vcl/ctrl.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/salnativewidgets.hxx>
+#include <rsc/rsc-vcl-shared-types.hxx>
+
+#include <vector>
+
+class UserDrawEvent;
+class ImplCommonButtonData;
+
+// ----------
+// - Button -
+// ----------
+
+class VCL_DLLPUBLIC Button : public Control
+{
+private:
+ ImplCommonButtonData *mpButtonData;
+ Link maClickHdl;
+
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE Button (const Button &);
+ SAL_DLLPRIVATE Button & operator= (const Button &);
+public:
+ SAL_DLLPRIVATE sal_uInt16 ImplGetButtonState() const;
+ SAL_DLLPRIVATE sal_uInt16& ImplGetButtonState();
+ SAL_DLLPRIVATE sal_uInt16 ImplGetTextStyle( OUString& rText, WinBits nWinStyle, sal_uLong nDrawFlags );
+ SAL_DLLPRIVATE void ImplDrawAlignedImage( OutputDevice* pDev, Point& rPos, Size& rSize,
+ sal_Bool bLayout, sal_uLong nImageSep, sal_uLong nDrawFlags,
+ sal_uInt16 nTextStyle, Rectangle *pSymbolRect=NULL, bool bAddImageSep = false );
+ SAL_DLLPRIVATE void ImplSetFocusRect( const Rectangle &rFocusRect );
+ SAL_DLLPRIVATE const Rectangle& ImplGetFocusRect() const;
+ SAL_DLLPRIVATE void ImplSetSymbolAlign( SymbolAlign eAlign );
+ /// The x-coordinate of the vertical separator line, use in MenuButton subclass only.
+ SAL_DLLPRIVATE long ImplGetSeparatorX() const;
+ SAL_DLLPRIVATE void ImplSetSeparatorX( long nX );
+
+protected:
+ Button( WindowType nType );
+
+public:
+ ~Button();
+
+ virtual void Click();
+
+ void SetClickHdl( const Link& rLink ) { maClickHdl = rLink; }
+ const Link& GetClickHdl() const { return maClickHdl; }
+
+ static OUString GetStandardText( StandardButtonType eButton );
+ static XubString GetStandardHelpText( StandardButtonType eButton );
+
+ sal_Bool SetModeImage( const Image& rImage );
+ const Image GetModeImage( ) const;
+ sal_Bool HasImage() const;
+ void SetImageAlign( ImageAlign eAlign );
+ ImageAlign GetImageAlign() const;
+
+ void EnableImageDisplay( sal_Bool bEnable );
+ void EnableTextDisplay( sal_Bool bEnable );
+
+ void SetFocusRect( const Rectangle& rFocusRect );
+ bool IsSmallSymbol() const;
+ void SetSmallSymbol(bool bSmall = true);
+};
+
+// --------------------
+// - PushButton-Types -
+// --------------------
+
+#define PUSHBUTTON_DROPDOWN_TOOLBOX ((sal_uInt16)0x0001)
+#define PUSHBUTTON_DROPDOWN_MENUBUTTON ((sal_uInt16)0x0002)
+
+// --------------
+// - PushButton -
+// --------------
+
+class VCL_DLLPUBLIC PushButton : public Button
+{
+protected:
+ SymbolType meSymbol;
+ TriState meState;
+ TriState meSaveValue;
+ sal_uInt16 mnDDStyle;
+ sal_Bool mbPressed;
+ sal_Bool mbInUserDraw;
+ Link maToggleHdl;
+
+ SAL_DLLPRIVATE void ImplInitPushButtonData();
+ SAL_DLLPRIVATE WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
+ SAL_DLLPRIVATE void ImplInitSettings( sal_Bool bFont, sal_Bool bForeground, sal_Bool bBackground );
+ SAL_DLLPRIVATE void ImplDrawPushButtonContent( OutputDevice* pDev, sal_uLong nDrawFlags,
+ const Rectangle& rRect, bool bLayout, bool bMenuBtnSep );
+ SAL_DLLPRIVATE void ImplDrawPushButton( bool bLayout = false );
+ using Button::ImplGetTextStyle;
+ SAL_DLLPRIVATE sal_uInt16 ImplGetTextStyle( sal_uLong nDrawFlags ) const;
+ SAL_DLLPRIVATE sal_Bool IsSymbol() const { return ( (meSymbol != SYMBOL_NOSYMBOL) && (meSymbol != SYMBOL_IMAGE) ); }
+ SAL_DLLPRIVATE sal_Bool IsImage() const { return Button::HasImage(); }
+
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE PushButton( const PushButton & );
+ SAL_DLLPRIVATE PushButton& operator=( const PushButton & );
+
+ SAL_DLLPRIVATE void ImplInit( Window* pParent, WinBits nStyle );
+
+ using Control::ImplInitSettings;
+ using Window::ImplInit;
+public:
+ SAL_DLLPRIVATE void ImplSetDefButton( sal_Bool bSet );
+ SAL_DLLPRIVATE static void ImplDrawPushButtonFrame( Window* pDev, Rectangle& rRect, sal_uInt16 nStyle );
+ SAL_DLLPRIVATE static sal_Bool ImplHitTestPushButton( Window* pDev, const Point& rPos );
+ SAL_DLLPRIVATE sal_Bool ImplIsDefButton() const;
+
+protected:
+ PushButton( WindowType nType );
+
+ virtual void FillLayoutData() const;
+ virtual const Font&
+ GetCanonicalFont( const StyleSettings& _rStyle ) const;
+ virtual const Color&
+ GetCanonicalTextColor( const StyleSettings& _rStyle ) const;
+public:
+ PushButton( Window* pParent, WinBits nStyle = 0 );
+ PushButton( Window* pParent, const ResId& rResId );
+ ~PushButton();
+
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void Tracking( const TrackingEvent& rTEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void KeyUp( const KeyEvent& rKEvt );
+ virtual void Paint( const Rectangle& rRect );
+ virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
+ virtual void Resize();
+ virtual void GetFocus();
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ virtual void Toggle();
+
+ void SetSymbol( SymbolType eSymbol );
+ SymbolType GetSymbol() const { return meSymbol; }
+ void SetSymbolAlign( SymbolAlign eAlign );
+
+ void SetDropDown( sal_uInt16 nStyle );
+ sal_uInt16 GetDropDown() const { return mnDDStyle; }
+
+ void SetState( TriState eState );
+ TriState GetState() const { return meState; }
+
+ void Check( sal_Bool bCheck = sal_True );
+ sal_Bool IsChecked() const;
+
+ void SetPressed( sal_Bool bPressed );
+ sal_Bool IsPressed() const { return mbPressed; }
+
+ void EndSelection();
+
+ void SaveValue() { meSaveValue = GetState(); }
+ TriState GetSavedValue() const { return meSaveValue; }
+
+ Size CalcMinimumSize( long nMaxWidth = 0 ) const;
+ virtual Size GetOptimalSize() const;
+
+ void SetToggleHdl( const Link& rLink ) { maToggleHdl = rLink; }
+ const Link& GetToggleHdl() const { return maToggleHdl; }
+ virtual bool set_property(const OString &rKey, const OString &rValue);
+};
+
+inline void PushButton::Check( sal_Bool bCheck )
+{
+ SetState( (bCheck) ? STATE_CHECK : STATE_NOCHECK );
+}
+
+inline sal_Bool PushButton::IsChecked() const
+{
+ return (GetState() == STATE_CHECK);
+}
+
+// ------------
+// - OKButton -
+// ------------
+
+class VCL_DLLPUBLIC OKButton : public PushButton
+{
+protected:
+ using PushButton::ImplInit;
+private:
+ SAL_DLLPRIVATE void ImplInit( Window* pParent, WinBits nStyle );
+
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE OKButton (const OKButton &);
+ SAL_DLLPRIVATE OKButton & operator= (const OKButton &);
+
+public:
+ OKButton( Window* pParent, WinBits nStyle = WB_DEFBUTTON );
+ OKButton( Window* pParent, const ResId& rResId );
+
+ virtual void Click();
+};
+
+// ----------------
+// - CancelButton -
+// ----------------
+
+class VCL_DLLPUBLIC CancelButton : public PushButton
+{
+protected:
+ using PushButton::ImplInit;
+private:
+ SAL_DLLPRIVATE void ImplInit( Window* pParent, WinBits nStyle );
+
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE CancelButton (const CancelButton &);
+ SAL_DLLPRIVATE CancelButton & operator= (const CancelButton &);
+
+public:
+ CancelButton( Window* pParent, WinBits nStyle = 0 );
+ CancelButton( Window* pParent, const ResId& rResId );
+
+ virtual void Click();
+};
+
+class VCL_DLLPUBLIC CloseButton : public CancelButton
+{
+public:
+ CloseButton(Window* pParent, WinBits nStyle = 0);
+};
+
+
+// --------------
+// - HelpButton -
+// --------------
+
+class VCL_DLLPUBLIC HelpButton : public PushButton
+{
+protected:
+ using PushButton::ImplInit;
+private:
+ SAL_DLLPRIVATE void ImplInit( Window* pParent, WinBits nStyle );
+
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE HelpButton( const HelpButton & );
+ SAL_DLLPRIVATE HelpButton & operator= ( const HelpButton & );
+
+public:
+ HelpButton( Window* pParent, WinBits nStyle = 0 );
+ HelpButton( Window* pParent, const ResId& rResId );
+
+ virtual void Click();
+};
+
+// ---------------
+// - RadioButton -
+// ---------------
+
+class VCL_DLLPUBLIC RadioButton : public Button
+{
+private:
+ boost::shared_ptr< std::vector<RadioButton*> > m_xGroup;
+ Rectangle maStateRect;
+ Rectangle maMouseRect;
+ Image maImage;
+ sal_Bool mbChecked;
+ sal_Bool mbSaveValue;
+ sal_Bool mbRadioCheck;
+ sal_Bool mbStateChanged;
+ Link maToggleHdl;
+ // when mbLegacyNoTextAlign is set then the old behaviour where
+ // the WB_LEFT, WB_RIGHT & WB_CENTER affect the image placement
+ // occurs, otherwise the image ( radiobutton circle ) is placed
+ // to the left or right ( depending on RTL or LTR settings )
+ bool mbLegacyNoTextAlign;
+ SAL_DLLPRIVATE void ImplInitRadioButtonData();
+ SAL_DLLPRIVATE WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
+ SAL_DLLPRIVATE void ImplInitSettings( sal_Bool bFont, sal_Bool bForeground, sal_Bool bBackground );
+ SAL_DLLPRIVATE void ImplDrawRadioButtonState();
+ SAL_DLLPRIVATE void ImplDraw( OutputDevice* pDev, sal_uLong nDrawFlags,
+ const Point& rPos, const Size& rSize,
+ const Size& rImageSize, Rectangle& rStateRect,
+ Rectangle& rMouseRect, bool bLayout = false );
+ SAL_DLLPRIVATE void ImplDrawRadioButton( bool bLayout = false );
+ SAL_DLLPRIVATE void ImplInvalidateOrDrawRadioButtonState();
+ SAL_DLLPRIVATE void ImplUncheckAllOther();
+ SAL_DLLPRIVATE Size ImplGetRadioImageSize() const;
+ SAL_DLLPRIVATE long ImplGetImageToTextDistance() const;
+
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE RadioButton(const RadioButton &);
+ SAL_DLLPRIVATE RadioButton& operator= (const RadioButton &);
+
+protected:
+ using Control::ImplInitSettings;
+ using Window::ImplInit;
+ SAL_DLLPRIVATE void ImplInit( Window* pParent, WinBits nStyle );
+ SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
+
+public:
+ SAL_DLLPRIVATE void ImplCallClick( sal_Bool bGrabFocus = sal_False, sal_uInt16 nFocusFlags = 0 );
+ SAL_DLLPRIVATE void ImplSetMinimumNWFSize();
+
+protected:
+ virtual void FillLayoutData() const;
+ virtual const Font&
+ GetCanonicalFont( const StyleSettings& _rStyle ) const;
+ virtual const Color&
+ GetCanonicalTextColor( const StyleSettings& _rStyle ) const;
+
+ inline void SetMouseRect( const Rectangle& _rMouseRect ) { maMouseRect = _rMouseRect; }
+ inline const Rectangle& GetMouseRect( ) const { return maMouseRect; }
+ inline void SetStateRect( const Rectangle& _rStateRect ) { maStateRect = _rStateRect; }
+ inline const Rectangle& GetStateRect( ) const { return maStateRect; }
+
+ // draws the radio button (the knob image), in it's current state (pressed/checked)
+ // at the usual location, which can be overridden with SetStateRect
+ void DrawRadioButtonState( );
+
+public:
+ RadioButton( Window* pParent, WinBits nWinStyle = 0 );
+ RadioButton( Window* pParent, const ResId& rResId );
+ ~RadioButton();
+
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void Tracking( const TrackingEvent& rTEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void KeyUp( const KeyEvent& rKEvt );
+ virtual void Paint( const Rectangle& rRect );
+ virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
+ virtual void Resize();
+ virtual void GetFocus();
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ virtual void Toggle();
+
+ sal_Bool IsStateChanged() const { return mbStateChanged; }
+
+ void EnableRadioCheck( sal_Bool bRadioCheck = sal_True ) { mbRadioCheck = bRadioCheck; }
+ sal_Bool IsRadioCheckEnabled() const { return mbRadioCheck; }
+
+ sal_Bool SetModeRadioImage( const Image& rImage );
+ const Image& GetModeRadioImage( ) const;
+
+ void SetState( sal_Bool bCheck );
+ void Check( sal_Bool bCheck = sal_True );
+ sal_Bool IsChecked() const { return mbChecked; }
+
+ void SaveValue() { mbSaveValue = IsChecked(); }
+ sal_Bool GetSavedValue() const { return mbSaveValue; }
+
+ static Image GetRadioImage( const AllSettings& rSettings, sal_uInt16 nFlags );
+
+ Size CalcMinimumSize( long nMaxWidth = 0 ) const;
+ virtual Size GetOptimalSize() const;
+
+ void SetToggleHdl( const Link& rLink ) { maToggleHdl = rLink; }
+ const Link& GetToggleHdl() const { return maToggleHdl; }
+
+ /** GetRadioButtonGroup returns a list of pointers to <code>RadioButton</code>s in the same group.
+
+ The pointers in the returned list are valid at the time call returns. However rescheduling
+ or giving up the SolarMutex may mean events get executed that lead to the pointers getting
+ invalid.
+
+ @param bIncludeThis
+ defines whether <code>this</code> is contained in the returned list
+
+ @return
+ on return contains the <code>RadioButton</code>s
+ in the same group as this <code>RadioButton</code>.
+ */
+ std::vector<RadioButton*> GetRadioButtonGroup(bool bIncludeThis = true) const;
+
+ virtual bool set_property(const OString &rKey, const OString &rValue);
+
+ /*
+ * Group this RadioButton with another
+ */
+ void group(RadioButton &rOther);
+};
+
+// ------------
+// - CheckBox -
+// ------------
+
+class VCL_DLLPUBLIC CheckBox : public Button
+{
+private:
+ Rectangle maStateRect;
+ Rectangle maMouseRect;
+ TriState meState;
+ TriState meSaveValue;
+ sal_Bool mbTriState;
+ Link maToggleHdl;
+ // when mbLegacyNoTextAlign is set then the old behaviour where
+ // the WB_LEFT, WB_RIGHT & WB_CENTER affect the image placement
+ // occurs, otherwise the image ( checkbox box ) is placed
+ // to the left or right ( depending on RTL or LTR settings )
+ bool mbLegacyNoTextAlign;
+ SAL_DLLPRIVATE void ImplInitCheckBoxData();
+ SAL_DLLPRIVATE WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
+ SAL_DLLPRIVATE void ImplInitSettings( sal_Bool bFont, sal_Bool bForeground, sal_Bool bBackground );
+ SAL_DLLPRIVATE void ImplInvalidateOrDrawCheckBoxState();
+ SAL_DLLPRIVATE void ImplDraw( OutputDevice* pDev, sal_uLong nDrawFlags,
+ const Point& rPos, const Size& rSize,
+ const Size& rImageSize, Rectangle& rStateRect,
+ Rectangle& rMouseRect, bool bLayout );
+ SAL_DLLPRIVATE void ImplDrawCheckBox( bool bLayout = false );
+ SAL_DLLPRIVATE long ImplGetImageToTextDistance() const;
+ SAL_DLLPRIVATE Size ImplGetCheckImageSize() const;
+
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE CheckBox(const CheckBox &);
+ SAL_DLLPRIVATE CheckBox& operator= (const CheckBox &);
+
+protected:
+ using Control::ImplInitSettings;
+ using Window::ImplInit;
+ SAL_DLLPRIVATE void ImplInit( Window* pParent, WinBits nStyle );
+ SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
+ SAL_DLLPRIVATE virtual void FillLayoutData() const;
+ SAL_DLLPRIVATE virtual const Font&
+ GetCanonicalFont( const StyleSettings& _rStyle ) const;
+ SAL_DLLPRIVATE virtual const Color&
+ GetCanonicalTextColor( const StyleSettings& _rStyle ) const;
+
+ SAL_DLLPRIVATE virtual void ImplDrawCheckBoxState();
+ SAL_DLLPRIVATE const Rectangle& GetStateRect() const { return maStateRect; }
+ SAL_DLLPRIVATE const Rectangle& GetMouseRect() const { return maMouseRect; }
+
+public:
+ SAL_DLLPRIVATE void ImplCheck();
+ SAL_DLLPRIVATE void ImplSetMinimumNWFSize();
+public:
+ CheckBox( Window* pParent, WinBits nStyle = 0 );
+ CheckBox( Window* pParent, const ResId& rResId );
+
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void Tracking( const TrackingEvent& rTEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void KeyUp( const KeyEvent& rKEvt );
+ virtual void Paint( const Rectangle& rRect );
+ virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
+ virtual void Resize();
+ virtual void GetFocus();
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ virtual void Toggle();
+
+ void SetState( TriState eState );
+ TriState GetState() const { return meState; }
+
+ void Check( sal_Bool bCheck = sal_True );
+ sal_Bool IsChecked() const;
+
+ void EnableTriState( sal_Bool bTriState = sal_True );
+ sal_Bool IsTriStateEnabled() const { return mbTriState; }
+
+ void SaveValue() { meSaveValue = GetState(); }
+ TriState GetSavedValue() const { return meSaveValue; }
+
+ static Image GetCheckImage( const AllSettings& rSettings, sal_uInt16 nFlags );
+
+ Size CalcMinimumSize( long nMaxWidth = 0 ) const;
+ virtual Size GetOptimalSize() const;
+
+ void SetToggleHdl( const Link& rLink ) { maToggleHdl = rLink; }
+ const Link& GetToggleHdl() const { return maToggleHdl; }
+ bool IsLegacyNoTextAlign() { return mbLegacyNoTextAlign; }
+ void SetLegacyNoTextAlign( bool bVal ) { mbLegacyNoTextAlign = bVal; }
+
+ virtual bool set_property(const OString &rKey, const OString &rValue);
+};
+
+inline void CheckBox::Check( sal_Bool bCheck )
+{
+ SetState( (bCheck) ? STATE_CHECK : STATE_NOCHECK );
+}
+
+inline sal_Bool CheckBox::IsChecked() const
+{
+ return (GetState() == STATE_CHECK);
+}
+
+// ---------------------------------
+// - Control-Layer fuer alten Code -
+// ---------------------------------
+
+class VCL_DLLPUBLIC ImageButton : public PushButton
+{
+protected:
+ using PushButton::ImplInitStyle;
+private:
+ SAL_DLLPRIVATE void ImplInitStyle();
+
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE ImageButton( const ImageButton & );
+ SAL_DLLPRIVATE ImageButton & operator= ( const ImageButton & );
+
+public:
+ ImageButton( Window* pParent, WinBits nStyle = 0 );
+ ImageButton( Window* pParent, const ResId& rResId );
+ ~ImageButton();
+};
+
+class VCL_DLLPUBLIC ImageRadioButton : public RadioButton
+{
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE ImageRadioButton( const ImageRadioButton & );
+ SAL_DLLPRIVATE ImageRadioButton & operator= ( const ImageRadioButton & );
+
+public:
+ ImageRadioButton( Window* pParent, WinBits nStyle = 0 );
+ ImageRadioButton( Window* pParent, const ResId& rResId );
+ ~ImageRadioButton();
+};
+
+class VCL_DLLPUBLIC TriStateBox : public CheckBox
+{
+ // Copy assignment is forbidden and not implemented.
+ SAL_DLLPRIVATE TriStateBox( const TriStateBox & );
+ SAL_DLLPRIVATE TriStateBox & operator= ( const TriStateBox & );
+
+public:
+ TriStateBox( Window* pParent, WinBits nStyle = 0 );
+ TriStateBox( Window* pParent, const ResId& rResId );
+ ~TriStateBox();
+};
+
+class VCL_DLLPUBLIC DisclosureButton : public CheckBox
+{
+protected:
+ SAL_DLLPRIVATE virtual void ImplDrawCheckBoxState();
+public:
+ DisclosureButton( Window* pParent, WinBits nStyle = 0 );
+ DisclosureButton( Window* pParent, const ResId& rResId );
+
+ virtual void KeyInput( const KeyEvent& rKEvt );
+};
+
+#endif // _SV_BUTTON_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */