⛏️ index : haiku.git

//--------------------------------------------------------------------
//	
//	MenuWindow.h
//
//	Written by: Owen Smith
//	
//--------------------------------------------------------------------

/*
	Copyright 1999, Be Incorporated.   All Rights Reserved.
	This file may be used under the terms of the Be Sample Code License.
*/

#ifndef _MenuWindow_h
#define _MenuWindow_h

#include <Message.h>

#include <Window.h>
#include "TestMenuBuilder.h"

class MenuView;
class BButton;
class BListItem;
class BOutlineListView;
class BStringView;
class BTextControl;

//====================================================================
//	CLASS: MenuWindow

class MenuWindow : public BWindow
{
	//----------------------------------------------------------------
	//	Constructors, destructors, operators

public:
					MenuWindow(const char* name);
				
				
	//----------------------------------------------------------------
	//	Virtual member function overrides

public:	
	void			MenusBeginning(void);
	void			MessageReceived(BMessage* message);
	bool			QuitRequested(void);

	
	//----------------------------------------------------------------
	//	Operations

public:
	void			UpdateStatus(const char* str1 = NULL,
						const char* str2 = NULL);
	
	
	//----------------------------------------------------------------
	//	Message handlers

private:
	void			AddMenu(BMessage* message);
	void			DeleteMenu(BMessage* message);
	void			TestMenu(BMessage* message);
	void			UserMenu(BMessage* message);
	void			ToggleUserMenus(BMessage* message);
	void			ToggleTestIcons(BMessage* message);
	
	
	//----------------------------------------------------------------
	//	Implementation member functions
	
private:
	bool			Valid(void) const;
	BMenu*			BuildFileMenu(void) const;
	void			ReplaceTestMenu(BMenuBar* pMenuBar, icon_size size);
	
	//----------------------------------------------------------------
	//	Member variables
	
private:
	BMenuBar* 			m_pFullMenuBar;
	BMenuBar*			m_pHiddenMenuBar;
	bool				m_bUsingFullMenuBar;
	BStringView*		m_pStatusView;
	MenuView*			m_pMenuView;	
	TestMenuBuilder		m_testMenuBuilder;
};

#endif /* _MenuWindow_h */