* Copyright 2001-2010, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Mark Hogben
* DarkWyrm <bpmagic@columbus.rr.com>
* Axel DΓΆrfler, axeld@pinc-software.de
* Philippe Saint-Pierre, stpere@gmail.com
* Stephan AΓmus <superstippi@gmx.de>
*/
#ifndef FONT_SELECTION_VIEW_H
#define FONT_SELECTION_VIEW_H
#include <Font.h>
#include <Handler.h>
class BLayoutItem;
class BBox;
class BMenu;
class BMenuField;
class BPopUpMenu;
class BTextView;
class BView;
class FontSelectionView : public BHandler {
public:
FontSelectionView(const char* name,
const char* label, bool separateStyles,
const BFont* font = NULL);
virtual ~FontSelectionView();
void AttachedToLooper();
virtual void MessageReceived(BMessage* message);
void SetMessage(BMessage* message);
void SetTarget(BHandler* target);
void SetFont(const BFont& font, float size);
void SetFont(const BFont& font);
void SetSize(float size);
const BFont& Font() const;
void SetDefaults();
void Revert();
bool IsDefaultable();
bool IsRevertable();
void UpdateFontsMenu();
BLayoutItem* CreateSizesLabelLayoutItem();
BLayoutItem* CreateSizesMenuBarLayoutItem();
BLayoutItem* CreateFontsLabelLayoutItem();
BLayoutItem* CreateFontsMenuBarLayoutItem();
BLayoutItem* CreateStylesLabelLayoutItem();
BLayoutItem* CreateStylesMenuBarLayoutItem();
BView* PreviewBox() const;
private:
void _Invoke();
BFont _DefaultFont() const;
void _SelectCurrentFont(bool select);
void _SelectCurrentSize(bool select);
void _UpdateFontPreview();
void _BuildSizesMenu();
void _AddStylesToMenu(const BFont& font,
BMenu* menu) const;
protected:
BMenuField* fFontsMenuField;
BMenuField* fStylesMenuField;
BMenuField* fSizesMenuField;
BPopUpMenu* fFontsMenu;
BPopUpMenu* fStylesMenu;
BPopUpMenu* fSizesMenu;
BTextView* fPreviewTextView;
float fPreviewTextWidth;
BBox* fPreviewBox;
BFont fSavedFont;
BFont fCurrentFont;
BMessage* fMessage;
BHandler* fTarget;
};
#endif