2 * Copyright 2001-2012, Haiku.
3 * Distributed under the terms of the MIT License.
7 * DarkWyrm <bpmagic@columbus.rr.com>
8 * Axel Dörfler, axeld@pinc-software.de
9 * Philippe St-Pierre, stpere@gmail.com
10 * Stephan Aßmus <superstippi@gmx.de>
19 #include <ControlLook.h>
20 #include <GridLayoutBuilder.h>
21 #include <GroupLayoutBuilder.h>
23 #include <MessageRunner.h>
24 #include <SpaceLayoutItem.h>
26 #include "APRWindow.h"
27 #include "FontSelectionView.h"
30 #undef B_TRANSLATION_CONTEXT
31 #define B_TRANSLATION_CONTEXT "Font view"
34 static const uint32 kMsgCheckFonts
= 'chkf';
38 add_font_selection_view(BGridLayout
* layout
, FontSelectionView
* view
,
39 int32
& row
, bool withExtraSpace
)
41 layout
->AddItem(view
->CreateFontsLabelLayoutItem(), 0, row
);
42 layout
->AddItem(view
->CreateFontsMenuBarLayoutItem(), 1, row
);
44 layout
->AddItem(BSpaceLayoutItem::CreateGlue(), 2, row
);
46 layout
->AddItem(view
->CreateSizesLabelLayoutItem(), 3, row
);
47 layout
->AddItem(view
->CreateSizesMenuBarLayoutItem(), 4, row
);
51 layout
->AddItem(BSpaceLayoutItem::CreateGlue(), 0, row
);
52 layout
->AddView(view
->GetPreviewBox(), 1, row
, 4);
57 layout
->AddItem(BSpaceLayoutItem::CreateVerticalStrut(5), 0, row
, 5);
63 FontView::FontView(const char* name
)
65 BView(name
, B_WILL_DRAW
)
67 SetViewUIColor(B_PANEL_BACKGROUND_COLOR
);
69 fPlainView
= new FontSelectionView("plain", B_TRANSLATE("Plain font:"));
70 fBoldView
= new FontSelectionView("bold", B_TRANSLATE("Bold font:"));
71 fFixedView
= new FontSelectionView("fixed", B_TRANSLATE("Fixed font:"));
72 fMenuView
= new FontSelectionView("menu", B_TRANSLATE("Menu font:"));
74 BGridLayout
* layout
= new BGridLayout(5, 5);
75 layout
->SetInsets(B_USE_WINDOW_SPACING
);
79 add_font_selection_view(layout
, fPlainView
, row
, true);
80 add_font_selection_view(layout
, fBoldView
, row
, true);
81 add_font_selection_view(layout
, fFixedView
, row
, true);
82 add_font_selection_view(layout
, fMenuView
, row
, false);
87 FontView::AttachedToWindow()
89 fPlainView
->SetTarget(this);
90 fBoldView
->SetTarget(this);
91 fFixedView
->SetTarget(this);
92 fMenuView
->SetTarget(this);
95 fRunner
= new BMessageRunner(this, new BMessage(kMsgCheckFonts
), 3000000);
101 FontView::DetachedFromWindow()
109 FontView::SetDefaults()
111 fPlainView
->SetDefaults();
112 fBoldView
->SetDefaults();
113 fFixedView
->SetDefaults();
114 fMenuView
->SetDefaults();
119 FontView::MessageReceived(BMessage
* message
)
121 switch (message
->what
) {
127 if (message
->FindString("name", &name
) != B_OK
)
130 if (!strcmp(name
, "plain"))
131 fPlainView
->MessageReceived(message
);
132 else if (!strcmp(name
, "bold"))
133 fBoldView
->MessageReceived(message
);
134 else if (!strcmp(name
, "fixed"))
135 fFixedView
->MessageReceived(message
);
136 else if (!strcmp(name
, "menu"))
137 fMenuView
->MessageReceived(message
);
141 Window()->PostMessage(kMsgUpdate
);
146 if (update_font_families(true))
151 BView::MessageReceived(message
);
159 fPlainView
->Revert();
161 fFixedView
->Revert();
167 FontView::UpdateFonts()
169 fPlainView
->UpdateFontsMenu();
170 fBoldView
->UpdateFontsMenu();
171 fFixedView
->UpdateFontsMenu();
172 fMenuView
->UpdateFontsMenu();
177 FontView::IsDefaultable()
179 return fPlainView
->IsDefaultable()
180 || fBoldView
->IsDefaultable()
181 || fFixedView
->IsDefaultable()
182 || fMenuView
->IsDefaultable();
187 FontView::IsRevertable()
189 return fPlainView
->IsRevertable()
190 || fBoldView
->IsRevertable()
191 || fFixedView
->IsRevertable()
192 || fMenuView
->IsRevertable();