20 #ifndef INCLUDED_VCL_TOOLBOX_HXX
21 #define INCLUDED_VCL_TOOLBOX_HXX
84 static constexpr
auto APPEND
85 = std::numeric_limits<ImplToolItems::size_type>::max();
87 static constexpr
auto ITEM_NOTFOUND
88 = std::numeric_limits<ImplToolItems::size_type>::max();
98 std::unique_ptr<ImplToolBoxPrivateData>
mpData;
142 mbChangingHighlight:1,
165 using Window::ImplInit;
167 SAL_DLLPRIVATE
void InvalidateItem(ImplToolItems::size_type nPosition);
168 SAL_DLLPRIVATE
void InvalidateSpin(
bool bInvalidateUpper =
true,
169 bool bInvalidateLower =
true);
170 SAL_DLLPRIVATE
void InvalidateMenuButton();
172 SAL_DLLPRIVATE
void ImplInitToolBoxData();
175 SAL_DLLPRIVATE
void ImplInitSettings(
bool bFont,
bool bForeground,
bool bBackground );
176 SAL_DLLPRIVATE
ImplToolItem* ImplGetItem( sal_uInt16 nId )
const;
177 SAL_DLLPRIVATE
bool ImplCalcItem();
178 SAL_DLLPRIVATE ImplToolItems::size_type ImplCalcBreaks(
tools::Long nWidth,
tools::Long* pMaxLineWidth,
bool bCalcHorz )
const;
179 SAL_DLLPRIVATE
void ImplFormat(
bool bResize =
false );
182 SAL_DLLPRIVATE
void ImplDrawItem(
vcl::RenderContext& rRenderContext, ImplToolItems::size_type nPos, sal_uInt16 nHighlight );
183 using Window::ImplInvalidate;
184 SAL_DLLPRIVATE
void ImplInvalidate(
bool bNewCalc =
false,
bool bFullPaint =
false );
185 SAL_DLLPRIVATE
void ImplUpdateItem( ImplToolItems::size_type nIndex = ITEM_NOTFOUND );
186 SAL_DLLPRIVATE
bool ImplHandleMouseMove(
const MouseEvent& rMEvt,
bool bRepeat =
false );
187 SAL_DLLPRIVATE
bool ImplHandleMouseButtonUp(
const MouseEvent& rMEvt,
bool bCancel =
false );
188 SAL_DLLPRIVATE
void ImplChangeHighlight(
ImplToolItem const * pItem,
bool bNoGrabFocus =
false );
189 SAL_DLLPRIVATE
bool ImplChangeHighlightUpDn(
bool bUp,
bool bNoCycle =
false );
190 SAL_DLLPRIVATE ImplToolItems::size_type ImplGetItemLine(
ImplToolItem const * pCurrentItem );
191 SAL_DLLPRIVATE
ImplToolItem* ImplGetFirstValidItem( ImplToolItems::size_type nLine );
192 SAL_DLLPRIVATE
bool ImplOpenItem(
vcl::KeyCode aKeyCode );
193 SAL_DLLPRIVATE
bool ImplActivateItem(
vcl::KeyCode aKeyCode );
194 SAL_DLLPRIVATE
void ImplShowFocus();
195 SAL_DLLPRIVATE
void ImplHideFocus();
196 SAL_DLLPRIVATE
void ImplUpdateInputEnable();
197 SAL_DLLPRIVATE
void ImplFillLayoutData();
198 SAL_DLLPRIVATE
bool ImplHasClippedItems();
200 SAL_DLLPRIVATE
bool ImplIsFloatingMode()
const;
201 SAL_DLLPRIVATE
bool ImplIsInPopupMode()
const;
202 SAL_DLLPRIVATE
const OUString& ImplGetHelpText( sal_uInt16 nItemId )
const;
203 SAL_DLLPRIVATE
Size ImplGetOptimalFloatingSize();
204 SAL_DLLPRIVATE
bool ImplHasExternalMenubutton();
215 SAL_DLLPRIVATE
void ImplFloatControl(
bool bStart,
FloatingWindow* pWindow );
217 SAL_DLLPRIVATE
int ImplGetDragWidth()
const;
220 SAL_DLLPRIVATE
void ImplUpdateDragArea()
const;
223 SAL_DLLPRIVATE
void ImplCheckUpdate();
231 SAL_DLLPRIVATE
void ImplDrawTransparentBackground(
const vcl::Region &rRegion);
238 SAL_DLLPRIVATE
const ImplToolItem *ImplGetFirstClippedItem()
const;
239 SAL_DLLPRIVATE
Size ImplCalcSize( ImplToolItems::size_type nCalcLines, sal_uInt16 nCalcMode = 0 );
240 SAL_DLLPRIVATE
void ImplCalcFloatSizes();
241 SAL_DLLPRIVATE
Size ImplCalcFloatSize( ImplToolItems::size_type& rLines );
242 SAL_DLLPRIVATE
void ImplCalcMinMaxFloatSize(
Size& rMinSize,
Size& rMaxSize );
243 SAL_DLLPRIVATE
void ImplSetMinMaxFloatSize();
244 SAL_DLLPRIVATE ImplToolItems::size_type ImplCalcLines(
tools::Long nToolSize )
const;
245 SAL_DLLPRIVATE sal_uInt16 ImplTestLineSize(
const Point& rPos )
const;
246 SAL_DLLPRIVATE
void ImplLineSizing(
const Point& rPos,
tools::Rectangle& rRect, sal_uInt16 nLineMode );
248 SAL_DLLPRIVATE
void ImplDrawMenuButton(
vcl::RenderContext& rRenderContext,
bool bHighlight);
249 SAL_DLLPRIVATE
void ImplDrawButton(
vcl::RenderContext& rRenderContext,
const tools::Rectangle &rRect, sal_uInt16 highlight,
bool bChecked,
bool bEnabled,
bool bIsWindow);
250 SAL_DLLPRIVATE ImplToolItems::size_type ImplCountLineBreaks()
const;
262 const css::uno::Reference<css::frame::XFrame> &rFrame = css::uno::Reference<css::frame::XFrame>());
264 virtual void dispose()
override;
266 virtual void Click();
278 virtual void Resize()
override;
298 virtual void InsertItem(
const OUString& rCommand,
299 const css::uno::Reference<css::frame::XFrame>& rFrame,
301 const Size& rRequestedSize,
302 ImplToolItems::size_type nPos = APPEND );
303 void InsertItem( sal_uInt16 nItemId,
const Image& rImage,
305 ImplToolItems::size_type nPos = APPEND );
306 void InsertItem( sal_uInt16 nItemId,
const Image& rImage,
307 const OUString& rText,
309 ImplToolItems::size_type nPos = APPEND );
310 void InsertItem( sal_uInt16 nItemId,
const OUString& rText,
312 ImplToolItems::size_type nPos = APPEND );
313 void InsertWindow( sal_uInt16 nItemId,
vcl::Window* pWindow,
315 ImplToolItems::size_type nPos = APPEND );
317 void InsertSeparator( ImplToolItems::size_type nPos = APPEND, sal_uInt16 nPixSize = 0 );
318 void InsertBreak( ImplToolItems::size_type nPos = APPEND );
319 void RemoveItem( ImplToolItems::size_type nPos );
320 void CopyItem(
const ToolBox& rToolBox, sal_uInt16 nItemId );
331 void SetAlign(
WindowAlign eNewAlign = WindowAlign::Top );
335 void SetLineCount( ImplToolItems::size_type nNewLines );
336 void ShowLine(
bool bNext );
338 ImplToolItems::size_type GetItemCount()
const;
340 ImplToolItems::size_type GetItemPos( sal_uInt16 nItemId )
const;
341 ImplToolItems::size_type GetItemPos(
const Point& rPos )
const;
342 sal_uInt16 GetItemId( ImplToolItems::size_type nPos )
const;
343 sal_uInt16 GetItemId(
const Point& rPos )
const;
345 sal_uInt16 GetItemId(
const OUString& rCommand )
const;
351 Size GetItemContentSize( sal_uInt16 nItemId );
360 void SetItemExpand( sal_uInt16 nItemId,
bool bExpand );
362 void SetItemWindowNonInteractive(sal_uInt16 nItemId,
bool bNonInteractive);
365 void SetItemData( sal_uInt16 nItemId,
void* pNewData );
366 void* GetItemData( sal_uInt16 nItemId )
const;
367 void SetItemImage( sal_uInt16 nItemId,
const Image& rImage );
368 Image GetItemImage( sal_uInt16 nItemId )
const;
369 void SetItemImageAngle( sal_uInt16 nItemId,
Degree10 nAngle10 );
370 void SetItemImageMirrorMode( sal_uInt16 nItemId,
bool bMirror );
371 void SetItemText( sal_uInt16 nItemId,
const OUString& rText );
372 const OUString& GetItemText( sal_uInt16 nItemId )
const;
373 void SetItemWindow( sal_uInt16 nItemId,
vcl::Window* pNewWindow );
374 vcl::Window* GetItemWindow( sal_uInt16 nItemId )
const;
379 void SetItemDown( sal_uInt16 nItemId,
bool bDown );
381 void SetItemState( sal_uInt16 nItemId,
TriState eState );
382 TriState GetItemState( sal_uInt16 nItemId )
const;
384 void CheckItem( sal_uInt16 nItemId,
bool bCheck =
true );
385 bool IsItemChecked( sal_uInt16 nItemId )
const;
387 void EnableItem( sal_uInt16 nItemId,
bool bEnable =
true );
388 bool IsItemEnabled( sal_uInt16 nItemId )
const;
390 void TriggerItem( sal_uInt16 nItemId );
393 void ShowItem(sal_uInt16 nItemId,
bool bVisible =
true);
396 void HideItem(sal_uInt16 nItemId) { ShowItem( nItemId,
false ); }
398 bool IsItemClipped( sal_uInt16 nItemId )
const;
399 bool IsItemVisible( sal_uInt16 nItemId )
const;
400 bool IsItemReallyVisible( sal_uInt16 nItemId )
const;
402 void SetItemCommand( sal_uInt16 nItemId,
const OUString& rCommand );
403 OUString GetItemCommand( sal_uInt16 nItemId )
const;
405 using Window::SetQuickHelpText;
407 using Window::GetQuickHelpText;
410 void SetHelpText( sal_uInt16 nItemId,
const OUString& rText );
411 const OUString&
GetHelpText( sal_uInt16 nItemId )
const;
413 void SetHelpId( sal_uInt16 nItemId,
const OString& rHelpId );
416 Size CalcWindowSizePixel();
418 Size CalcWindowSizePixel( ImplToolItems::size_type nCalcLines );
420 Size CalcWindowSizePixel( ImplToolItems::size_type nCalcLines,
WindowAlign eAlign );
422 Size CalcFloatingWindowSizePixel();
424 Size CalcFloatingWindowSizePixel( ImplToolItems::size_type nCalcLines );
426 Size CalcPopupWindowSizePixel();
429 Size CalcMinimumWindowSizePixel();
431 ImplToolItems::size_type GetFloatingLines()
const;
437 void Lock(
bool bLock );
439 static bool AlwaysLocked();
441 void EnableCustomize(
bool bEnable =
true );
468 bool IsMenuEnabled()
const;
470 void UpdateCustomMenu();
480 bool WillUsePopupMode()
const;
481 void WillUsePopupMode(
bool b);
493 tools::Long GetIndexForPoint(
const Point& rPoint, sal_uInt16& rItemID );
496 Size GetDefaultImageSize()
const;
497 void ChangeHighlight( ImplToolItems::size_type nPos );
501 void statusChanged(
const css::frame::FeatureStateEvent& rEvent);
530 #endif // INCLUDED_VCL_TOOLBOX_HXX
static void ImplCalcBorder(WindowAlign eAlign, tools::Long &rLeft, tools::Long &rTop, tools::Long &rRight, tools::Long &rBottom)
virtual FactoryFunction GetUITestFactory() const
virtual void Tracking(const TrackingEvent &rTEvt) override
virtual void MouseButtonDown(const MouseEvent &rMEvt)
const OUString & GetHelpText() const
const OUString & GetQuickHelpText() const
std::function< std::unique_ptr< UIObject >vcl::Window *)> FactoryFunction
virtual void Deactivate()
void SetHelpId(const OString &)
virtual void MouseButtonUp(const MouseEvent &rMEvt)
void SetQuickHelpText(const OUString &rHelpText)
virtual void DumpAsPropertyTree(tools::JsonWriter &)
Dumps itself and potentially its children to a property tree, to be written easily to JSON...
SAL_DLLPRIVATE void ImplInvalidate(const vcl::Region *rRegion, InvalidateFlags nFlags)
virtual Size GetOptimalSize() const override
virtual void StartDocking()
virtual void queue_resize(StateChangedType eReason=StateChangedType::Layout) override
void SetHelpText(const OUString &rHelpText)
virtual bool Docking(const Point &rPos, tools::Rectangle &rRect)
virtual OUString GetDisplayText() const
virtual void EndDocking(const tools::Rectangle &rRect, bool bFloatMode)
const OString & GetHelpId() const
virtual void dispose() override
This is intended to be used to clear any locally held references to other Window-subclass objects...
virtual void ApplySettings(vcl::RenderContext &rRenderContext)
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
DECL_DLLPRIVATE_LINK(ImplHandleLayoutTimerHdl, Timer *, void)
void SetStyle(WinBits nStyle)
virtual void StateChanged(StateChangedType nType) override
DockingWindow & operator=(const DockingWindow &)=delete
virtual bool EventNotify(NotifyEvent &rNEvt) override
virtual void KeyInput(const KeyEvent &rKEvt)
SAL_DLLPRIVATE void ImplInitSettings()
virtual void doDeferredInit(WinBits nBits)
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect)
virtual void MouseMove(const MouseEvent &rMEvt)
virtual void Command(const CommandEvent &rCEvt)
virtual void DataChanged(const DataChangedEvent &rDCEvt) override
SAL_DLLPRIVATE void ImplInit(vcl::Window *pParent, WinBits nStyle)
virtual void Resizing(Size &rSize)
virtual void RequestHelp(const HelpEvent &rHEvt)
virtual void ToggleFloatingMode()
An idle is a timer to be scheduled immediately.