1/* 2 * Copyright 2001-2010, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Mark Hogben 7 * DarkWyrm <bpmagic@columbus.rr.com> 8 * Axel D��rfler, axeld@pinc-software.de 9 * Philippe Saint-Pierre, stpere@gmail.com 10 * Stephan A��mus <superstippi@gmx.de> 11 */ 12#ifndef FONT_SELECTION_VIEW_H 13#define FONT_SELECTION_VIEW_H 14 15 16#include <Font.h> 17#include <Handler.h> 18 19class BLayoutItem; 20class BBox; 21class BMenu; 22class BMenuField; 23class BPopUpMenu; 24class BStringView; 25class BView; 26 27 28class FontSelectionView : public BHandler { 29public: 30 FontSelectionView(const char* name, 31 const char* label, bool separateStyles, 32 const BFont* font = NULL); 33 virtual ~FontSelectionView(); 34 35 void AttachedToLooper(); 36 virtual void MessageReceived(BMessage* message); 37 38 void SetMessage(BMessage* message); 39 void SetTarget(BHandler* target); 40 41 void SetFont(const BFont& font, float size); 42 void SetFont(const BFont& font); 43 void SetSize(float size); 44 const BFont& Font() const; 45 46 void SetDefaults(); 47 void Revert(); 48 bool IsDefaultable(); 49 bool IsRevertable(); 50 51 void UpdateFontsMenu(); 52 53 BLayoutItem* CreateSizesLabelLayoutItem(); 54 BLayoutItem* CreateSizesMenuBarLayoutItem(); 55 56 BLayoutItem* CreateFontsLabelLayoutItem(); 57 BLayoutItem* CreateFontsMenuBarLayoutItem(); 58 59 BLayoutItem* CreateStylesLabelLayoutItem(); 60 BLayoutItem* CreateStylesMenuBarLayoutItem(); 61 62 BView* PreviewBox() const; 63 64private: 65 void _Invoke(); 66 67 BFont _DefaultFont() const; 68 void _SelectCurrentFont(bool select); 69 void _SelectCurrentSize(bool select); 70 void _UpdateFontPreview(); 71 void _BuildSizesMenu(); 72 void _AddStylesToMenu(const BFont& font, 73 BMenu* menu) const; 74 75protected: 76 BMenuField* fFontsMenuField; 77 BMenuField* fStylesMenuField; 78 BMenuField* fSizesMenuField; 79 BPopUpMenu* fFontsMenu; 80 BPopUpMenu* fStylesMenu; 81 BPopUpMenu* fSizesMenu; 82 BStringView* fPreviewText; 83 BBox* fPreviewBox; 84 85 BFont fSavedFont; 86 BFont fCurrentFont; 87 88 BMessage* fMessage; 89 BHandler* fTarget; 90}; 91 92#endif // FONT_SELECTION_VIEW_H 93