Milán Major

netscape-revival

1 branch
Code

lib/mac/VText/Core/User_Interface/WTextMenuAttachments.h

//	===========================================================================
//	WTextMenuAttachments
//
//	Copyright 1996 ViviStar Consulting.
//	===========================================================================

#pragma once

#include	<LAttachment.h>
#include	<VText_ClassIDs.h>
#include	<VText_Resources.h>

class	LTextView;
class	LAEAction;
class	LAEStream;
class	LMenu;

//	===========================================================================

class	VTextMenuAttachment
			:	public	LAttachment
{
public:
						VTextMenuAttachment(LStream *inStream);
						VTextMenuAttachment(
							LTextView		*inTextView,
							Int16			inMenuID);

protected:

	virtual	void		CheckMenu(void);
	virtual	void		EnableEveryItem(Boolean inEnable) const;
	virtual	void		CheckEveryItem(Boolean inApplyCheck) const;

	virtual void		ExecuteSelf(
							MessageT		inMessage,
							void			*ioParam);


	virtual Boolean		ObeyCommand(
							CommandT		inCommand,
							void			*ioParam = nil) = 0;
	virtual Boolean		FindCommandStatus(
							CommandT		inCommand,
							Boolean			&outEnabled,
							Boolean			&outUsesMark,
							Char16			&outMark,
							Str255			outName) = 0;
	virtual	LAEAction *	MakeModifyAction(Int32 inForValue);
	virtual	void		WriteModifyParameters(
							LAEStream		&inStream,
							Int32			inForValue) const = 0;

	LTextView			*mTextView;
	Int16				mMenuID;

	MenuHandle			mMenuH;
	LMenu				*mMenu;
};

//	===========================================================================

class	VFontMenuAttachment
			:	public	VTextMenuAttachment
{
public:
	enum { class_ID = kVTCID_VFontMenuAttachment };

						VFontMenuAttachment(LStream *inStream);
						VFontMenuAttachment(
							LTextView		*inTextView,
							Int16			inMenuID = kVText_MENU_ID_Font);

protected:
	virtual	void		CheckMenu(void);
	virtual	Int32		FontNumberToItem(Int16 inFontNumber) const;

	virtual Boolean		ObeyCommand(
							CommandT		inCommand,
							void			*ioParam = nil);
	virtual Boolean		FindCommandStatus(
							CommandT		inCommand,
							Boolean			&outEnabled,
							Boolean			&outUsesMark,
							Char16			&outMark,
							Str255			outName);
	virtual	void		WriteModifyParameters(
							LAEStream		&inStream,
							Int32			inForValue) const;
};

//	===========================================================================

class VSizeMenuAttachment
			:	public	VTextMenuAttachment
{
public:
	enum { class_ID = kVTCID_VSizeMenuAttachment };

						VSizeMenuAttachment(LStream *inStream);
						VSizeMenuAttachment(
							LTextView		*inTextView,
							Int16			inMenuID = kVText_MENU_ID_Size);

protected:
	virtual Boolean		ObeyCommand(
							CommandT		inCommand,
							void			*ioParam = nil);
	virtual Boolean		FindCommandStatus(
							CommandT		inCommand,
							Boolean			&outEnabled,
							Boolean			&outUsesMark,
							Char16			&outMark,
							Str255			outName);
	virtual	void		WriteModifyParameters(
							LAEStream		&inStream,
							Int32			inForValue) const;
};

//	===========================================================================

class VStyleMenuAttachment
			:	public	VTextMenuAttachment
{
public:
	enum { class_ID = kVTCID_VStyleMenuAttachment };

						VStyleMenuAttachment(LStream *inStream);
						VStyleMenuAttachment(
							LTextView		*inTextView,
							Int16			inMenuID = kVText_MENU_ID_Style);

protected:
	virtual Boolean		ObeyCommand(
							CommandT		inCommand,
							void			*ioParam = nil);
	virtual Boolean		FindCommandStatus(
							CommandT		inCommand,
							Boolean			&outEnabled,
							Boolean			&outUsesMark,
							Char16			&outMark,
							Str255			outName);
	virtual	void		WriteModifyParameters(
							LAEStream		&inStream,
							Int32			inForValue) const;
};