Delete fonts preferences.

It was merged into Appearance.
This commit is contained in:
Adrien Destugues 2017-05-16 19:09:53 +02:00
parent 55f5f25940
commit 2a70d7d0e1
12 changed files with 0 additions and 1189 deletions

View File

@ -6,7 +6,6 @@ SubInclude HAIKU_TOP src preferences bluetooth ;
SubInclude HAIKU_TOP src preferences datatranslations ; SubInclude HAIKU_TOP src preferences datatranslations ;
SubInclude HAIKU_TOP src preferences deskbar ; SubInclude HAIKU_TOP src preferences deskbar ;
SubInclude HAIKU_TOP src preferences filetypes ; SubInclude HAIKU_TOP src preferences filetypes ;
SubInclude HAIKU_TOP src preferences fonts ;
SubInclude HAIKU_TOP src preferences joysticks ; SubInclude HAIKU_TOP src preferences joysticks ;
SubInclude HAIKU_TOP src preferences keyboard ; SubInclude HAIKU_TOP src preferences keyboard ;
SubInclude HAIKU_TOP src preferences keymap ; SubInclude HAIKU_TOP src preferences keymap ;

View File

@ -1,480 +0,0 @@
/*
* Copyright 2001-2011, 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>
*/
#include "FontSelectionView.h"
#include "MainWindow.h"
#include <Box.h>
#include <Catalog.h>
#include <Locale.h>
#include <MenuField.h>
#include <MenuItem.h>
#include <PopUpMenu.h>
#include <String.h>
#include <StringView.h>
#include <LayoutItem.h>
#include <GroupLayoutBuilder.h>
#include <stdio.h>
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "Font Selection view"
#define INSTANT_UPDATE
// if defined, the system font will be updated immediately, and not
// only on exit
static const float kMinSize = 8.0;
static const float kMaxSize = 18.0;
// private font API
extern void _set_system_font_(const char *which, font_family family,
font_style style, float size);
extern status_t _get_system_default_font_(const char* which,
font_family family, font_style style, float* _size);
#ifdef B_BEOS_VERSION_DANO
// this call only exists under R5
void
_set_system_font_(const char *which, font_family family,
font_style style, float size)
{
puts("you don't have _set_system_font_()");
}
#endif
#if !defined(HAIKU_TARGET_PLATFORM_HAIKU) && !defined(HAIKU_TARGET_PLATFORM_LIBBE_TEST)
// this call only exists under Haiku (and the test environment)
status_t
_get_system_default_font_(const char* which, font_family family,
font_style style, float* _size)
{
puts("you don't have _get_system_default_font_()");
return B_ERROR;
}
#endif
// #pragma mark -
FontSelectionView::FontSelectionView(const char* name,
const char* label, const BFont* currentFont)
: BView(name, B_WILL_DRAW)
{
if (currentFont == NULL) {
if (!strcmp(Name(), "plain"))
fCurrentFont = *be_plain_font;
else if (!strcmp(Name(), "bold"))
fCurrentFont = *be_bold_font;
else if (!strcmp(Name(), "fixed"))
fCurrentFont = *be_fixed_font;
else if (!strcmp(Name(), "menu")) {
menu_info info;
get_menu_info(&info);
fCurrentFont.SetFamilyAndStyle(info.f_family, info.f_style);
fCurrentFont.SetSize(info.font_size);
}
} else
fCurrentFont = *currentFont;
fSavedFont = fCurrentFont;
fSizesMenu = new BPopUpMenu("size menu");
_BuildSizesMenu();
fFontsMenu = new BPopUpMenu("font menu");
// font menu
fFontsMenuField = new BMenuField("fonts", label, fFontsMenu);
fFontsMenuField->SetAlignment(B_ALIGN_RIGHT);
// size menu
fSizesMenuField = new BMenuField("size", B_TRANSLATE("Size:"), fSizesMenu);
fSizesMenuField->SetAlignment(B_ALIGN_RIGHT);
// preview
fPreviewText = new BStringView("preview text",
B_TRANSLATE_COMMENT("The quick brown fox jumps over the lazy dog.",
"Don't translate this literally ! Use a phrase showing all chars "
"from A to Z."));
fPreviewText->SetFont(&fCurrentFont);
fPreviewText->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET));
// box around preview
fPreviewBox = new BBox("preview box", B_WILL_DRAW | B_FRAME_EVENTS);
fPreviewBox->AddChild(BGroupLayoutBuilder(B_HORIZONTAL)
.Add(fPreviewText)
.SetInsets(5, 5, 5, 5)
.TopView()
);
}
FontSelectionView::~FontSelectionView()
{
#ifndef INSTANT_UPDATE
_UpdateSystemFont();
#endif
}
BView*
FontSelectionView::GetPreviewBox()
{
return fPreviewBox;
}
void
FontSelectionView::MessageReceived(BMessage *msg)
{
switch (msg->what) {
case kMsgSetSize:
{
int32 size;
if (msg->FindInt32("size", &size) != B_OK
|| size == fCurrentFont.Size())
break;
fCurrentFont.SetSize(size);
_UpdateFontPreview();
break;
}
case kMsgSetFamily:
{
const char* family;
if (msg->FindString("family", &family) != B_OK)
break;
font_style style;
fCurrentFont.GetFamilyAndStyle(NULL, &style);
BMenuItem *familyItem = fFontsMenu->FindItem(family);
if (familyItem != NULL) {
_SelectCurrentFont(false);
BMenuItem *item = familyItem->Submenu()->FindItem(style);
if (item == NULL)
item = familyItem->Submenu()->ItemAt(0);
if (item != NULL) {
item->SetMarked(true);
fCurrentFont.SetFamilyAndStyle(family, item->Label());
_UpdateFontPreview();
}
}
break;
}
case kMsgSetStyle:
{
const char* family;
const char* style;
if (msg->FindString("family", &family) != B_OK
|| msg->FindString("style", &style) != B_OK)
break;
BMenuItem *familyItem = fFontsMenu->FindItem(family);
if (!familyItem)
break;
_SelectCurrentFont(false);
familyItem->SetMarked(true);
fCurrentFont.SetFamilyAndStyle(family, style);
_UpdateFontPreview();
break;
}
default:
BView::MessageReceived(msg);
}
}
BLayoutItem*
FontSelectionView::CreateSizesLabelLayoutItem()
{
return fSizesMenuField->CreateLabelLayoutItem();
}
BLayoutItem*
FontSelectionView::CreateSizesMenuBarLayoutItem()
{
return fSizesMenuField->CreateMenuBarLayoutItem();
}
BLayoutItem*
FontSelectionView::CreateFontsLabelLayoutItem()
{
return fFontsMenuField->CreateLabelLayoutItem();
}
BLayoutItem*
FontSelectionView::CreateFontsMenuBarLayoutItem()
{
return fFontsMenuField->CreateMenuBarLayoutItem();
}
void
FontSelectionView::_BuildSizesMenu()
{
const int32 sizes[] = {7, 8, 9, 10, 11, 12, 13, 14, 18, 21, 24, 0};
// build size menu
for (int32 i = 0; sizes[i]; i++) {
int32 size = sizes[i];
if (size < kMinSize || size > kMaxSize)
continue;
char label[32];
snprintf(label, sizeof(label), "%ld", size);
BMessage* message = new BMessage(kMsgSetSize);
message->AddInt32("size", size);
message->AddString("name", Name());
BMenuItem* item = new BMenuItem(label, message);
if (size == fCurrentFont.Size())
item->SetMarked(true);
fSizesMenu->AddItem(item);
}
}
void
FontSelectionView::_SelectCurrentFont(bool select)
{
font_family family;
font_style style;
fCurrentFont.GetFamilyAndStyle(&family, &style);
BMenuItem *item = fFontsMenu->FindItem(family);
if (item != NULL) {
item->SetMarked(select);
if (item->Submenu() != NULL) {
item = item->Submenu()->FindItem(style);
if (item != NULL)
item->SetMarked(select);
}
}
}
void
FontSelectionView::_SelectCurrentSize(bool select)
{
char label[16];
snprintf(label, sizeof(label), "%ld", (int32)fCurrentFont.Size());
BMenuItem* item = fSizesMenu->FindItem(label);
if (item != NULL)
item->SetMarked(select);
}
void
FontSelectionView::_UpdateFontPreview()
{
fPreviewText->SetFont(&fCurrentFont);
#ifdef INSTANT_UPDATE
_UpdateSystemFont();
#endif
}
void
FontSelectionView::_UpdateSystemFont()
{
font_family family;
font_style style;
fCurrentFont.GetFamilyAndStyle(&family, &style);
if (strcmp(Name(), "menu") == 0) {
// The menu font is not handled as a system font
menu_info info;
get_menu_info(&info);
strlcpy(info.f_family, (const char*)family, B_FONT_FAMILY_LENGTH);
strlcpy(info.f_style, (const char*)style, B_FONT_STYLE_LENGTH);
info.font_size = fCurrentFont.Size();
set_menu_info(&info);
} else
_set_system_font_(Name(), family, style, fCurrentFont.Size());
}
void
FontSelectionView::SetDefaults()
{
font_family family;
font_style style;
float size;
const char* fontName;
if (strcmp(Name(), "menu") == 0)
fontName = "plain";
else
fontName = Name();
if (_get_system_default_font_(fontName, family, style, &size) != B_OK) {
Revert();
return;
}
BFont defaultFont;
defaultFont.SetFamilyAndStyle(family, style);
defaultFont.SetSize(size);
if (defaultFont == fCurrentFont)
return;
_SelectCurrentFont(false);
fCurrentFont = defaultFont;
_UpdateFontPreview();
_SelectCurrentFont(true);
_SelectCurrentSize(true);
}
void
FontSelectionView::Revert()
{
if (!IsRevertable())
return;
_SelectCurrentFont(false);
fCurrentFont = fSavedFont;
_UpdateFontPreview();
_SelectCurrentFont(true);
_SelectCurrentSize(true);
}
bool
FontSelectionView::IsDefaultable()
{
font_family defaultFamily;
font_style defaultStyle;
float defaultSize;
const char* fontName;
if (strcmp(Name(), "menu") == 0)
fontName = "plain";
else
fontName = Name();
if (_get_system_default_font_(fontName, defaultFamily, defaultStyle,
&defaultSize) != B_OK) {
return false;
}
font_family currentFamily;
font_style currentStyle;
float currentSize;
fCurrentFont.GetFamilyAndStyle(&currentFamily, &currentStyle);
currentSize = fCurrentFont.Size();
return strcmp(currentFamily, defaultFamily) != 0
|| strcmp(currentStyle, defaultStyle) != 0
|| currentSize != defaultSize;
}
bool
FontSelectionView::IsRevertable()
{
return fCurrentFont != fSavedFont;
}
void
FontSelectionView::UpdateFontsMenu()
{
int32 numFamilies = count_font_families();
fFontsMenu->RemoveItems(0, fFontsMenu->CountItems(), true);
BFont font;
fFontsMenu->GetFont(&font);
font_family currentFamily;
font_style currentStyle;
fCurrentFont.GetFamilyAndStyle(&currentFamily, &currentStyle);
for (int32 i = 0; i < numFamilies; i++) {
font_family family;
uint32 flags;
if (get_font_family(i, &family, &flags) != B_OK)
continue;
// if we're setting the fixed font, we only want to show fixed fonts
if (!strcmp(Name(), "fixed") && (flags & B_IS_FIXED) == 0)
continue;
float width = font.StringWidth(family);
if (width > fMaxFontNameWidth)
fMaxFontNameWidth = width;
BMenu* stylesMenu = new BMenu(family);
stylesMenu->SetRadioMode(true);
stylesMenu->SetFont(&font);
BMessage* message = new BMessage(kMsgSetFamily);
message->AddString("family", family);
message->AddString("name", Name());
BMenuItem* familyItem = new BMenuItem(stylesMenu, message);
fFontsMenu->AddItem(familyItem);
int32 numStyles = count_font_styles(family);
for (int32 j = 0; j < numStyles; j++) {
font_style style;
if (get_font_style(family, j, &style, &flags) != B_OK)
continue;
message = new BMessage(kMsgSetStyle);
message->AddString("family", (char*)family);
message->AddString("style", (char*)style);
message->AddString("name", Name());
BMenuItem *item = new BMenuItem(style, message);
if (!strcmp(style, currentStyle)
&& !strcmp(family, currentFamily)) {
item->SetMarked(true);
familyItem->SetMarked(true);
}
stylesMenu->AddItem(item);
}
}
}

View File

@ -1,74 +0,0 @@
/*
* Copyright 2001-2009, 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
*/
#ifndef FONT_SELECTION_VIEW_H
#define FONT_SELECTION_VIEW_H
#include <View.h>
class BLayoutItem;
class BBox;
class BMenuField;
class BPopUpMenu;
class BStringView;
static const int32 kMsgSetFamily = 'fmly';
static const int32 kMsgSetStyle = 'styl';
static const int32 kMsgSetSize = 'size';
class FontSelectionView : public BView {
public:
FontSelectionView(const char* name,
const char* label,
const BFont* font = NULL);
virtual ~FontSelectionView();
virtual void MessageReceived(BMessage* message);
void SetDefaults();
void Revert();
bool IsDefaultable();
bool IsRevertable();
void UpdateFontsMenu();
BLayoutItem* CreateSizesLabelLayoutItem();
BLayoutItem* CreateSizesMenuBarLayoutItem();
BLayoutItem* CreateFontsLabelLayoutItem();
BLayoutItem* CreateFontsMenuBarLayoutItem();
BView* GetPreviewBox();
private:
void _SelectCurrentFont(bool select);
void _SelectCurrentSize(bool select);
void _UpdateFontPreview();
void _UpdateSystemFont();
void _BuildSizesMenu();
protected:
BMenuField* fFontsMenuField;
BMenuField* fSizesMenuField;
BPopUpMenu* fFontsMenu;
BPopUpMenu* fSizesMenu;
BBox* fPreviewBox;
BStringView* fPreviewText;
BFont fSavedFont;
BFont fCurrentFont;
float fMaxFontNameWidth;
};
#endif // FONT_SELECTION_VIEW_H

View File

@ -1,154 +0,0 @@
/*
* Copyright 2001-2009, 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 St-Pierre, stpere@gmail.com
* Stephan Aßmus <superstippi@gmx.de>
*/
#include "FontView.h"
#include <string.h>
#include <Catalog.h>
#include <GridLayoutBuilder.h>
#include <GroupLayoutBuilder.h>
#include <Locale.h>
#include <SpaceLayoutItem.h>
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "Font view"
static void
add_font_selection_view(BGridLayout* layout, FontSelectionView* view,
int32& row, bool withExtraSpace)
{
layout->AddItem(view->CreateFontsLabelLayoutItem(), 0, row);
layout->AddItem(view->CreateFontsMenuBarLayoutItem(), 1, row);
layout->AddItem(BSpaceLayoutItem::CreateGlue(), 2, row);
layout->AddItem(view->CreateSizesLabelLayoutItem(), 3, row);
layout->AddItem(view->CreateSizesMenuBarLayoutItem(), 4, row);
row++;
layout->AddItem(BSpaceLayoutItem::CreateGlue(), 0, row);
layout->AddView(view->GetPreviewBox(), 1, row, 4);
row++;
if (withExtraSpace) {
layout->AddItem(BSpaceLayoutItem::CreateVerticalStrut(5), 0, row, 5);
row++;
}
}
FontView::FontView()
: BView("Fonts", B_WILL_DRAW )
{
SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
fPlainView = new FontSelectionView("plain", B_TRANSLATE("Plain font:"));
fBoldView = new FontSelectionView("bold", B_TRANSLATE("Bold font:"));
fFixedView = new FontSelectionView("fixed", B_TRANSLATE("Fixed font:"));
fMenuView = new FontSelectionView("menu", B_TRANSLATE("Menu font:"));
BGridLayout* layout = new BGridLayout(5, 5);
layout->SetInsets(10, 10, 10, 10);
SetLayout(layout);
int32 row = 0;
add_font_selection_view(layout, fPlainView, row, true);
add_font_selection_view(layout, fBoldView, row, true);
add_font_selection_view(layout, fFixedView, row, true);
add_font_selection_view(layout, fMenuView, row, false);
}
void
FontView::SetDefaults()
{
fPlainView->SetDefaults();
fBoldView->SetDefaults();
fFixedView->SetDefaults();
fMenuView->SetDefaults();
}
void
FontView::MessageReceived(BMessage* message)
{
switch (message->what) {
case kMsgSetSize:
case kMsgSetFamily:
case kMsgSetStyle:
{
const char* name;
if (message->FindString("name", &name) != B_OK)
break;
if (!strcmp(name, "plain"))
fPlainView->MessageReceived(message);
else if (!strcmp(name, "bold"))
fBoldView->MessageReceived(message);
else if (!strcmp(name, "fixed"))
fFixedView->MessageReceived(message);
else if (!strcmp(name, "menu"))
fMenuView->MessageReceived(message);
else
break;
Window()->PostMessage(kMsgUpdate);
break;
}
default:
BView::MessageReceived(message);
}
}
void
FontView::Revert()
{
fPlainView->Revert();
fBoldView->Revert();
fFixedView->Revert();
fMenuView->Revert();
}
void
FontView::UpdateFonts()
{
fPlainView->UpdateFontsMenu();
fBoldView->UpdateFontsMenu();
fFixedView->UpdateFontsMenu();
fMenuView->UpdateFontsMenu();
}
bool
FontView::IsDefaultable()
{
return fPlainView->IsDefaultable()
|| fBoldView->IsDefaultable()
|| fFixedView->IsDefaultable()
|| fMenuView->IsDefaultable();
}
bool
FontView::IsRevertable()
{
return fPlainView->IsRevertable()
|| fBoldView->IsRevertable()
|| fFixedView->IsRevertable()
|| fMenuView->IsRevertable();
}

View File

@ -1,41 +0,0 @@
/*
* Copyright 2001-2009, 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
*/
#ifndef FONT_VIEW_H
#define FONT_VIEW_H
#include "FontSelectionView.h"
#include "MainWindow.h"
#include <Message.h>
class FontView : public BView {
public:
FontView();
virtual void MessageReceived(BMessage* message);
void SetDefaults();
void Revert();
void UpdateFonts();
bool IsDefaultable();
bool IsRevertable();
private:
FontSelectionView* fPlainView;
FontSelectionView* fBoldView;
FontSelectionView* fFixedView;
FontSelectionView* fMenuView;
};
#endif /* FONT_VIEW_H */

View File

@ -1,38 +0,0 @@
resource app_signature "application/x-vnd.Haiku-Fonts";
resource app_name_catalog_entry "x-vnd.Haiku-Fonts:System name:Fonts";
resource app_version {
major = 1,
middle = 0,
minor = 0,
/* 0 = development 1 = alpha 2 = beta
3 = gamma 4 = golden master 5 = final */
variety = 2,
internal = 0,
short_info = "Fonts",
long_info = "Fonts ©2002-2009 Haiku"
};
resource app_flags B_SINGLE_LAUNCH;
resource vector_icon {
$"6E63696608050004005F020006023D5F39368F62B905F93FFB6B4ACB36BEDE32"
$"00032288FF1944E7020006023AAFCC3BFAA8BF50A93E3D044B460F48AEEC0002"
$"0258FF1919E7020006023BA7EB3CD6E4BF5D013E2A4C4B0DDA478DDF0097C3FF"
$"FF376AFF02000602380D3A384399BEF6CA3EAF9C4B2833C6F2DC00E3ECFFFFAC"
$"C7FF02000602371F7FB98A813FA8F13D3A58C4B8AC48909300CEDEFFFF3778FF"
$"02000602371F7FB98A813FA8F13D3A58C60C5648909300BADAFFFF032E850B0A"
$"0432482C503E543C4B0A0550485452485E565A60500A0A47273D24322A244A2C"
$"4E34C2B0BE5BC408BFBFC94F485C52520A0447273C2D485C52520A08BE5AC40E"
$"4058485CBE3D2D322A244A2C4EB935C20F0A03BC12BB843BC1D3B9EBC0700A03"
$"BC12BB84BCC2BE1AB9EBC0700A03BD75C0B13BC1D3B9EBC0700A03BCC2BE1ABD"
$"75C0B1B9EBC0700A032C4E34C2B0B939C20A0A043D24322A3C2D4727090A0102"
$"0001000A0001021001178400040A020103000A030109000A030106000A060107"
$"000A070108000A04020405000A05010A00"
};

View File

@ -1,75 +0,0 @@
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Mark Hogben
* DarkWyrm <bpmagic@columbus.rr.com>
* Axel Dörfler, axeld@pinc-software.de
*/
#include <Application.h>
#include <FindDirectory.h>
#include <File.h>
#include <Path.h>
#include <Font.h>
#include <String.h>
#include <stdio.h>
#include <Message.h>
#include "FontsSettings.h"
static const char kSettingsFile[] = "Font_Settings";
FontsSettings::FontsSettings()
{
BPath path;
BMessage msg;
if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK) {
path.Append(kSettingsFile);
BFile file(path.Path(), B_READ_ONLY);
if (file.InitCheck() != B_OK)
SetDefaults();
else if (msg.Unflatten(&file) != B_OK)
SetDefaults();
else
msg.FindPoint("windowlocation", &fCorner);
}
}
FontsSettings::~FontsSettings()
{
BPath path;
BMessage msg;
if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) < B_OK)
return;
path.Append(kSettingsFile);
BFile file(path.Path(), B_WRITE_ONLY|B_CREATE_FILE);
if (file.InitCheck() == B_OK) {
msg.AddPoint("windowlocation", fCorner);
msg.Flatten(&file);
}
}
void
FontsSettings::SetWindowCorner(BPoint where)
{
fCorner = where;
}
void
FontsSettings::SetDefaults()
{
fCorner.Set(-1, -1);
}

View File

@ -1,31 +0,0 @@
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Mark Hogben
* DarkWyrm <bpmagic@columbus.rr.com>
* Axel Dörfler, axeld@pinc-software.de
*/
#ifndef FONTS_SETTINGS_H
#define FONTS_SETTINGS_H
#include <Point.h>
class FontsSettings {
public:
FontsSettings();
~FontsSettings();
BPoint WindowCorner() const { return fCorner; }
void SetWindowCorner(BPoint);
void SetDefaults();
private:
BPoint fCorner;
};
#endif /* FONTS_SETTINGS_H */

View File

@ -1,21 +0,0 @@
SubDir HAIKU_TOP src preferences fonts ;
Preference Fonts :
FontSelectionView.cpp
FontsSettings.cpp
FontView.cpp
main.cpp
MainWindow.cpp
: be [ TargetLibsupc++ ] localestub
: Fonts.rdef
;
DoCatalogs Fonts :
x-vnd.Haiku-Fonts
:
FontSelectionView.cpp
FontView.cpp
main.cpp
MainWindow.cpp
;

View File

@ -1,159 +0,0 @@
/*
* Copyright 2001-2009, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Mark Hogben
* DarkWyrm <bpmagic@columbus.rr.com>
* Axel Dörfler, axeld@pinc-software.de
* Andrej Spielmann, <andrej.spielmann@seh.ox.ac.uk>
* Philippe Saint-Pierre, stpere@gmail.com
*/
#include "MainWindow.h"
#include <stdio.h>
#include <Alert.h>
#include <Application.h>
#include <Button.h>
#include <Box.h>
#include <Catalog.h>
#include <ControlLook.h>
#include <LayoutBuilder.h>
#include <Locale.h>
#include <MessageRunner.h>
#include <Screen.h>
#include <TabView.h>
#include <TextView.h>
#include "FontView.h"
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "Main window"
static const uint32 kMsgSetDefaults = 'dflt';
static const uint32 kMsgRevert = 'rvrt';
static const uint32 kMsgCheckFonts = 'chkf';
MainWindow::MainWindow()
: BWindow(BRect(0, 0, 1, 1), B_TRANSLATE_SYSTEM_NAME("Fonts"), B_TITLED_WINDOW,
B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS)
{
fDefaultsButton = new BButton("defaults", B_TRANSLATE("Defaults"),
new BMessage(kMsgSetDefaults), B_WILL_DRAW);
fDefaultsButton->SetEnabled(false);
fRevertButton = new BButton("revert", B_TRANSLATE("Revert"),
new BMessage(kMsgRevert), B_WILL_DRAW);
fRevertButton->SetEnabled(false);
// BTabView* tabView = new BTabView("tabview", B_WIDTH_FROM_LABEL);
BBox* box = new BBox(B_FANCY_BORDER, NULL);
fFontsView = new FontView();
// tabView->AddTab(fFontsView);
box->AddChild(fFontsView);
fFontsView->UpdateFonts();
const float kInset = be_control_look->DefaultItemSpacing();
BLayoutBuilder::Group<>(this, B_VERTICAL)
.SetInsets(kInset, kInset, kInset, kInset)
.Add(box)
// .Add(tabView)
.AddStrut(kInset)
.AddGroup(B_HORIZONTAL)
.Add(fDefaultsButton)
.AddStrut(kInset)
.Add(fRevertButton)
.AddGlue();
if (fSettings.WindowCorner() == BPoint(-1, -1)) {
// center window on screen
CenterOnScreen();
} else {
MoveTo(fSettings.WindowCorner());
// make sure window is on screen
BScreen screen(this);
if (!screen.Frame().InsetByCopy(10, 10).Intersects(Frame()))
CenterOnScreen();
}
fRunner = new BMessageRunner(this, new BMessage(kMsgCheckFonts), 3000000);
// every 3 seconds
fDefaultsButton->SetEnabled(fFontsView->IsDefaultable());
}
MainWindow::~MainWindow()
{
delete fRunner;
}
bool
MainWindow::QuitRequested()
{
fSettings.SetWindowCorner(Frame().LeftTop());
be_app->PostMessage(B_QUIT_REQUESTED);
return true;
}
void
MainWindow::MessageReceived(BMessage *message)
{
switch (message->what) {
case kMsgSetSize:
case kMsgSetFamily:
case kMsgSetStyle:
fFontsView->MessageReceived(message);
break;
case kMsgUpdate:
fDefaultsButton->SetEnabled(fFontsView->IsDefaultable());
fRevertButton->SetEnabled(fFontsView->IsRevertable());
break;
case kMsgSetDefaults:
fFontsView->SetDefaults();
fDefaultsButton->SetEnabled(false);
fRevertButton->SetEnabled(fFontsView->IsRevertable());
break;
case kMsgRevert:
fFontsView->Revert();
fDefaultsButton->SetEnabled(fFontsView->IsDefaultable());
fRevertButton->SetEnabled(false);
break;
case kMsgCheckFonts:
if (update_font_families(true))
fFontsView->UpdateFonts();
break;
default:
BWindow::MessageReceived(message);
break;
}
}
void
MainWindow::_Center()
{
BRect screenFrame = BScreen(this).Frame();
BRect windowRect = Frame();
MoveTo(
(screenFrame.Width() - windowRect.Width()) / 2,
(screenFrame.Height() - windowRect.Height()) / 2);
}

View File

@ -1,45 +0,0 @@
/*
* Copyright 2001-2009, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Mark Hogben
* DarkWyrm <bpmagic@columbus.rr.com>
* Axel Dörfler, axeld@pinc-software.de
*/
#ifndef MAIN_WINDOW_H
#define MAIN_WINDOW_H
#include "FontsSettings.h"
#include <Window.h>
class BButton;
class BMessageRunner;
class FontView;
class MainWindow : public BWindow {
public:
MainWindow();
virtual ~MainWindow();
virtual bool QuitRequested();
virtual void MessageReceived(BMessage *message);
private:
void _Center();
BMessageRunner* fRunner;
FontView* fFontsView;
BButton* fDefaultsButton;
BButton* fRevertButton;
FontsSettings fSettings;
};
static const int32 kMsgUpdate = 'updt';
#endif // MAIN_WINDOW_H

View File

@ -1,70 +0,0 @@
/*
* Copyright 2001-2005, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Mark Hogben
* DarkWyrm <bpmagic@columbus.rr.com>
* Axel Dörfler, axeld@pinc-software.de
*/
#include "MainWindow.h"
#include <Alert.h>
#include <Application.h>
#include <Catalog.h>
#include <Locale.h>
#include <TextView.h>
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "main"
class FontsApp : public BApplication {
public:
FontsApp();
virtual void AboutRequested();
};
FontsApp::FontsApp()
: BApplication("application/x-vnd.Haiku-Fonts")
{
MainWindow *window = new MainWindow();
window->Show();
}
void
FontsApp::AboutRequested()
{
BAlert *alert = new BAlert("about", B_TRANSLATE("Fonts\n"
"\tCopyright 2004-2005, Haiku.\n\n"), B_TRANSLATE("OK"));
BTextView *view = alert->TextView();
BFont font;
view->SetStylable(true);
view->GetFont(&font);
font.SetSize(18);
font.SetFace(B_BOLD_FACE);
view->SetFontAndColor(0, 5, &font);
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
alert->Go();
}
// #pragma mark -
int
main(int, char**)
{
FontsApp app;
app.Run();
return 0;
}