20#ifndef INCLUDED_VCL_MENU_HXX
21#define INCLUDED_VCL_MENU_HXX
33#include <com/sun/star/uno/Reference.hxx>
160 SAL_DLLPRIVATE
Menu* ImplGetStartMenu();
161 SAL_DLLPRIVATE
Menu* ImplFindSelectMenu();
162 SAL_DLLPRIVATE
Menu* ImplFindMenu( sal_uInt16 nId );
164 SAL_DLLPRIVATE
bool ImplIsVisible( sal_uInt16 nPos )
const;
165 SAL_DLLPRIVATE
bool ImplCurrentlyHiddenOnGUI(sal_uInt16 nPos)
const;
166 SAL_DLLPRIVATE
bool ImplIsSelectable( sal_uInt16 nPos )
const;
167 SAL_DLLPRIVATE sal_uInt16 ImplGetVisibleItemCount()
const;
168 SAL_DLLPRIVATE sal_uInt16 ImplGetFirstVisible()
const;
169 SAL_DLLPRIVATE sal_uInt16 ImplGetPrevVisible( sal_uInt16 nPos )
const;
170 SAL_DLLPRIVATE sal_uInt16 ImplGetNextVisible( sal_uInt16 nPos )
const;
173 bool bHighlighted =
false,
bool bLayout =
false,
bool bRollover =
false )
const;
175 SAL_DLLPRIVATE
void ImplSelect();
176 SAL_DLLPRIVATE
void ImplCallHighlight( sal_uInt16 nHighlightItem );
177 SAL_DLLPRIVATE
void ImplCallEventListeners(
VclEventId nEvent, sal_uInt16 nPos );
180 SAL_DLLPRIVATE
void ImplFillLayoutData()
const;
183 SAL_DLLPRIVATE
SalMenu* GetNativeMenuBar();
184 SAL_DLLPRIVATE OUString ImplGetHelpText( sal_uInt16 nItemId )
const;
198 const OUString& rStr,
Menu* pMenu,
199 size_t nPos,
const OString &rIdent);
205 virtual void MenuBarKeyInput(
const KeyEvent& rEvent);
208 SAL_DLLPRIVATE
void ImplKillLayoutData()
const;
212 void ImplSelectWithStart(
Menu* pStartMenu =
nullptr );
225 virtual ~Menu()
override;
226 virtual void dispose()
override;
232 void InsertItem(sal_uInt16 nItemId,
const OUString& rStr,
234 const OString &rIdent = OString(),
236 void InsertItem(sal_uInt16 nItemId,
const Image& rImage,
238 const OString &rIdent = OString(),
240 void InsertItem(sal_uInt16 nItemId,
241 const OUString& rString,
const Image& rImage,
243 const OString &rIdent = OString(),
245 void InsertSeparator(
const OString &rIdent = OString(), sal_uInt16 nPos =
MENU_APPEND);
246 void RemoveItem( sal_uInt16 nPos );
249 void CreateAutoMnemonics();
254 sal_uInt16 GetItemCount()
const;
255 sal_uInt16 GetItemId(sal_uInt16 nPos)
const;
256 sal_uInt16 GetItemId(std::string_view rIdent)
const;
257 sal_uInt16 GetItemPos( sal_uInt16 nItemId )
const;
258 OString GetItemIdent(sal_uInt16 nItemId)
const;
262 void SetItemBits( sal_uInt16 nItemId,
MenuItemBits nBits );
266 void* GetUserValue(sal_uInt16 nItemId)
const;
268 void SetPopupMenu( sal_uInt16 nItemId,
PopupMenu* pMenu );
269 PopupMenu* GetPopupMenu( sal_uInt16 nItemId )
const;
271 void SetAccelKey( sal_uInt16 nItemId,
const vcl::KeyCode& rKeyCode );
274 void CheckItem( sal_uInt16 nItemId,
bool bCheck =
true );
275 void CheckItem( std::string_view rIdent,
bool bCheck =
true );
276 bool IsItemChecked( sal_uInt16 nItemId )
const;
280 void EnableItem( sal_uInt16 nItemId,
bool bEnable =
true );
281 void EnableItem(std::string_view rIdent,
bool bEnable =
true)
283 EnableItem(GetItemId(rIdent), bEnable);
285 bool IsItemEnabled( sal_uInt16 nItemId )
const;
287 void ShowItem( sal_uInt16 nItemId,
bool bVisible =
true );
288 void HideItem( sal_uInt16 nItemId ) { ShowItem( nItemId,
false ); }
290 bool IsItemPosVisible( sal_uInt16 nItemPos )
const;
291 bool IsMenuVisible()
const;
294 void RemoveDisabledEntries(
bool bRemoveEmptyPopups =
false );
296 void UpdateNativeMenu();
298 void SetItemText( sal_uInt16 nItemId,
const OUString& rStr );
299 OUString GetItemText( sal_uInt16 nItemId )
const;
301 void SetItemImage( sal_uInt16 nItemId,
const Image& rImage );
302 Image GetItemImage( sal_uInt16 nItemId )
const;
304 void SetItemCommand( sal_uInt16 nItemId,
const OUString& rCommand );
305 OUString GetItemCommand( sal_uInt16 nItemId )
const;
307 void SetHelpText( sal_uInt16 nItemId,
const OUString& rString );
308 OUString GetHelpText( sal_uInt16 nItemId )
const;
310 void SetTipHelpText( sal_uInt16 nItemId,
const OUString& rString );
311 OUString GetTipHelpText( sal_uInt16 nItemId )
const;
313 void SetHelpCommand( sal_uInt16 nItemId,
const OUString& rString );
314 OUString GetHelpCommand( sal_uInt16 nItemId )
const;
316 void SetHelpId( sal_uInt16 nItemId,
const OString& rHelpId );
317 OString GetHelpId( sal_uInt16 nItemId )
const;
321 aActivateHdl = rLink;
326 aDeactivateHdl = rLink;
347 return pItemList.get();
362 tools::Long GetIndexForPoint(
const Point& rPoint, sal_uInt16& rItemID )
const;
366 css::uno::Reference<css::accessibility::XAccessible> GetAccessible();
367 void SetAccessible(
const css::uno::Reference<css::accessibility::XAccessible >& rxAccessible);
370 KeyEvent GetActivationKey( sal_uInt16 nItemId )
const;
374 void SetAccessibleName( sal_uInt16 nItemId,
const OUString& rStr );
375 OUString GetAccessibleName( sal_uInt16 nItemId )
const;
377 void SetAccessibleDescription( sal_uInt16 nItemId,
const OUString& rStr );
378 OUString GetAccessibleDescription( sal_uInt16 nItemId )
const;
381 bool IsHighlighted( sal_uInt16 nItemPos )
const;
383 void HighlightItem( sal_uInt16 nItemPos );
386 bool HandleMenuCommandEvent(
Menu *pMenu, sal_uInt16 nEventId)
const;
387 bool HandleMenuActivateEvent(
Menu *pMenu)
const;
388 bool HandleMenuDeActivateEvent(
Menu *pMenu)
const;
393 void set_id(
const OUString& rID) { maID = rID; }
398 const OUString&
get_id()
const {
return maID; }
422 SAL_DLLPRIVATE
static void ImplDestroy(
MenuBar* pMenu,
bool bDelete);
423 SAL_DLLPRIVATE
bool ImplHandleKeyEvent(
const KeyEvent& rKEvent);
432 virtual void dispose()
override;
436 virtual bool IsMenuBar()
const override {
return true; }
439 virtual void ClosePopup(
Menu* pMenu)
override;
442 virtual void MenuBarKeyInput(
const KeyEvent& rEvent)
override;
444 void ShowCloseButton(
bool bShow );
448 void ShowButtons(
bool bClose,
bool bFloat,
bool bHide );
450 virtual void SelectItem(sal_uInt16 nId)
override;
451 bool HandleMenuHighlightEvent(
Menu *pMenu, sal_uInt16 nEventId)
const;
452 bool HandleMenuButtonEvent(sal_uInt16 nEventId);
461 void SetDisplayable(
bool bDisplayable );
476 void RemoveMenuBarButton( sal_uInt16 nId );
477 void LayoutChanged();
502 SAL_DLLPRIVATE
void ImplFlushPendingSelect();
503 SAL_DLLPRIVATE
tools::Long ImplCalcHeight( sal_uInt16 nEntries )
const;
504 SAL_DLLPRIVATE sal_uInt16 ImplCalcVisEntries(
tools::Long nMaxHeight, sal_uInt16 nStartEntry, sal_uInt16* pLastVisible =
nullptr )
const;
511 virtual bool IsMenuBar()
const override {
return false; }
514 virtual void ClosePopup(
Menu* pMenu)
override;
526 virtual void SelectItem(sal_uInt16
nId)
override;
527 void SetSelectedEntry( sal_uInt16
nId );
529 css::uno::Reference<css::awt::XPopupMenu> CreateMenuInterface();
Base class used mainly for the LibreOffice Desktop class.
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
int GetMenuBarHeight() const
VclReferenceBase & operator=(const VclReferenceBase &)=delete
virtual void SetHelpId(const OString &) override
void Clear(EHistoryType eHistory)
OutputDevice RenderContext