Serious cleanup:

Most files updated to style guidelines
	Panel now updates cache size
temporarily disabled revert code while cleaning up the code
settings file is now a flattened BMessage for the app_server's sake
Unhacking some of the code


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13020 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
DarkWyrm
2005-06-08 22:35:44 +00:00
parent 1c12a6a33f
commit 36f5422d14
14 changed files with 772 additions and 1163 deletions
+36 -51
View File
@@ -1,47 +1,36 @@
/*! \file ButtonView.cpp
* \brief Code for the ButtonView.
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#ifndef BUTTON_VIEW_H
#include "ButtonView.h"
#include "ButtonView.h"
#endif
/**
* Constructor
* @param rect The size of the view.
*/
ButtonView::ButtonView(BRect rect)
:BView(rect, "ButtonView", B_FOLLOW_ALL, B_WILL_DRAW)
: BView(rect, "ButtonView", B_FOLLOW_ALL, B_WILL_DRAW)
{
SetViewColor(216,216,216,0);
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
BRect btnRect(0, 0, 75, 25);
btnRect.OffsetBy(10, 8);
BButton *rescanButton = new BButton(btnRect,
"rescanButton", "Rescan",
new BMessage(RESCAN_FONTS_MSG),
B_FOLLOW_LEFT, B_WILL_DRAW);
BButton *rescanButton = new BButton(btnRect, "rescanButton", "Rescan",
new BMessage(RESCAN_FONTS_MSG),
B_FOLLOW_LEFT, B_WILL_DRAW);
AddChild(rescanButton);
btnRect.OffsetBy(96, 0);
BButton *defaultsButton = new BButton(btnRect,
"defaultsButton", "Defaults",
new BMessage(RESET_FONTS_MSG),
B_FOLLOW_LEFT, B_WILL_DRAW);
BButton *defaultsButton = new BButton(btnRect, "defaultsButton",
"Defaults",
new BMessage(RESET_FONTS_MSG),
B_FOLLOW_LEFT, B_WILL_DRAW);
AddChild(defaultsButton);
btnRect.OffsetBy(85, 0);
revertButton = new BButton(btnRect,
"revertButton", "Revert",
new BMessage(REVERT_MSG),
B_FOLLOW_LEFT, B_WILL_DRAW);
revertButton->SetEnabled(false);
AddChild(rescanButton);
AddChild(defaultsButton);
revertButton = new BButton(btnRect, "revertButton", "Revert",
new BMessage(REVERT_MSG),
B_FOLLOW_LEFT, B_WILL_DRAW);
AddChild(revertButton);
revertButton->SetEnabled(false);
}
@@ -51,31 +40,27 @@ ButtonView::Draw(BRect update)
rgb_color dark = {100, 100, 100, 255};
rgb_color light = {255, 255, 255, 255};
BRect bounds(Bounds());
BeginLineArray(6);
AddLine(bounds.LeftTop(), bounds.RightTop(), light);
AddLine(bounds.LeftTop(), bounds.LeftBottom(), light);
AddLine(bounds.RightTop(), bounds.RightBottom(), dark);
AddLine(bounds.RightBottom(), bounds.LeftBottom(), dark);
AddLine(BPoint(95, 9), BPoint(95, 34), dark);
AddLine(BPoint(96, 9), BPoint(96, 34), light);
AddLine(bounds.LeftTop(), bounds.RightTop(), light);
AddLine(bounds.LeftTop(), bounds.LeftBottom(), light);
AddLine(bounds.RightTop(), bounds.RightBottom(), dark);
AddLine(bounds.RightBottom(), bounds.LeftBottom(), dark);
AddLine(BPoint(95, 9), BPoint(95, 34), dark);
AddLine(BPoint(96, 9), BPoint(96, 34), light);
EndLineArray();
}
/**
* Returns the state of the revert button.
*/
bool ButtonView::RevertState(){
bool
ButtonView::RevertState()
{
return revertButton->IsEnabled();
}//RevertState
/**
* Sets the state of the revert button.
*/
void ButtonView::SetRevertState(bool b){
}
void ButtonView::SetRevertState(bool b)
{
revertButton->SetEnabled(b);
}//SetRevertState
}
+27 -42
View File
@@ -1,49 +1,34 @@
/*! \file ButtonView.h
* \brief Header file for the ButtonView class.
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#ifndef BUTTON_VIEW_H
#define BUTTON_VIEW_H
#include <View.h>
#include <Button.h>
#define BUTTON_VIEW_H
// Message sent when the rescan button is sent.
#define RESCAN_FONTS_MSG 'rscn'
// Message sent when the reset button is sent.
#define RESET_FONTS_MSG 'rset'
// Message sent when the revert button is sent.
#define REVERT_MSG 'rvrt'
/*!
* Message sent when the rescan button is sent.
*/
#define RESCAN_FONTS_MSG 'rscn'
/*!
* Message sent when the reset button is sent.
*/
#define RESET_FONTS_MSG 'rset'
/*!
* Message sent when the revert button is sent.
*/
#define REVERT_MSG 'rvrt'
#include <View.h>
#ifndef _BUTTON_H
#include <Button.h>
#endif
class ButtonView : public BView {
public:
class ButtonView : public BView
{
public:
ButtonView(BRect frame);
bool RevertState();
void SetRevertState(bool b);
void Draw(BRect);
private:
/**
* The revert button.
*/
BButton *revertButton;
};
bool RevertState();
void SetRevertState(bool b);
void Draw(BRect);
private:
BButton *revertButton;
};
#endif
+120 -102
View File
@@ -1,130 +1,147 @@
/*! \file CacheView.cpp
* \brief The file that contains code for the CacheView.
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#ifndef CACHE_VIEW_H
#include "CacheView.h"
#include "CacheView.h"
#endif
#include <String.h>
#include <stdio.h>
#include "Pref_Utils.h"
const char *kLabel = "font cache size: ";
#define PRINT_FCS_UPDATE_MSG 'pfum'
#define SCREEN_FCS_UPDATE_MSG 'sfum'
#define PRINT_FCS_MODIFICATION_MSG 'pfmm'
#define SCREEN_FCS_MODIFICATION_MSG 'sfmm'
/**
* Constructor
* @param rect The size of the view.
* @param minVal The minimum value of the cache sliders.
* @param maxVal The maximum value of the cache sliders.
* @param printCurrVal The starting value of the print slider.
* @param screenCurrVal The starting value of the screen slider.
*/
CacheView::CacheView(BRect rect, int minVal, int maxVal, int32 printCurrVal, int32 screenCurrVal)
:BView(rect, "CacheView", B_FOLLOW_ALL, B_WILL_DRAW)
CacheView::CacheView(const BRect &frame, const int32 &sliderMin,
const int32 &sliderMax, const int32 &printVal,
const int32 &screenVal)
: BView(frame, "Cache", B_FOLLOW_ALL, B_WILL_DRAW),
fSavedPrintValue(printVal),
fSavedScreenValue(screenVal)
{
SetViewColor(216, 216, 216, 0);
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
origPrintVal = printCurrVal;
origScreenVal = screenCurrVal;
rgb_color fillColor = { 102, 152, 203, 255 };
rgb_color fillColor;
fillColor.red = 102;
fillColor.blue = 203;
fillColor.green = 152;
float fontheight = FontHeight(true);
BRect rect(Bounds());
rect.InsetBy(5.0, 3.0);
rect.top += fontheight;
rect.bottom = rect.top +(fontheight *2.0);
BString labels(B_EMPTY_STRING);
labels << "Screen" << kLabel << screenCurrVal << " kB";
screenFCS = new BSlider(rect,
"screenFontCache", labels.String(),
new BMessage(SCREEN_FCS_UPDATE_MSG),
minVal, maxVal, B_TRIANGLE_THUMB);
screenFCS->SetModificationMessage(new BMessage(SCREEN_FCS_MODIFICATION_MSG));
BString minLabel(B_EMPTY_STRING);
BString maxLabel(B_EMPTY_STRING);
minLabel << minVal << " kB";
maxLabel << maxVal << " kB";
screenFCS->SetLimitLabels(minLabel.String(), maxLabel.String());
screenFCS->UseFillColor(TRUE, &fillColor);
screenFCS->SetValue(screenCurrVal);
float fontheight = FontHeight(true);
BRect rect( Bounds().InsetByCopy(5.0,3.0) );
rect.top += fontheight;
rect.bottom = rect.top +(fontheight *2.0);
BString labels(B_EMPTY_STRING);
labels << "Screen font cache size: " << screenVal << " kB";
fScreenSlider = new BSlider(rect, "screenslider", labels.String(),
new BMessage(SCREEN_FCS_UPDATE_MSG),
sliderMin, sliderMax, B_TRIANGLE_THUMB);
fScreenSlider->SetModificationMessage(new BMessage(SCREEN_FCS_MODIFICATION_MSG));
AddChild(fScreenSlider);
minLabel << sliderMin << " kB";
maxLabel << sliderMax << " kB";
fScreenSlider->SetLimitLabels(minLabel.String(), maxLabel.String());
fScreenSlider->UseFillColor(TRUE, &fillColor);
fScreenSlider->SetValue(screenVal);
rect.OffsetTo(rect.left, rect.bottom +(fontheight *2.5));
labels = "";
labels << "Printing " << kLabel << printCurrVal << " kB";
labels = "";
labels << "Printing font cache size: " << printVal << " kB";
printFCS = new BSlider(rect, "printFontCache", labels.String(),
new BMessage(PRINT_FCS_UPDATE_MSG),
minVal, maxVal, B_TRIANGLE_THUMB);
fPrintSlider = new BSlider(rect, "printFontCache", labels.String(),
new BMessage(PRINT_FCS_UPDATE_MSG),
sliderMin, sliderMax, B_TRIANGLE_THUMB);
AddChild(fPrintSlider);
printFCS->SetModificationMessage(new BMessage(PRINT_FCS_MODIFICATION_MSG));
fPrintSlider->SetModificationMessage(new BMessage(PRINT_FCS_MODIFICATION_MSG));
printFCS->SetLimitLabels(minLabel.String(), maxLabel.String());
printFCS->UseFillColor(TRUE, &fillColor);
printFCS->SetValue(printCurrVal);
fPrintSlider->SetLimitLabels(minLabel.String(), maxLabel.String());
fPrintSlider->UseFillColor(TRUE, &fillColor);
fPrintSlider->SetValue(printVal);
rect.OffsetTo(rect.left -1.0, rect.bottom +(fontheight *2.0));
rect.right = rect.left +86.0;
rect.bottom = rect.top +24.0;
BButton *saveCache = new BButton(rect,
"saveCache", "Save Cache",
NULL, B_FOLLOW_LEFT, B_WILL_DRAW);
AddChild(screenFCS);
AddChild(printFCS);
AddChild(saveCache);
// TODO: find out what 'Save Cache' does and implement
fSaveCache = new BButton(rect, "saveCache", "Save Cache",
NULL, B_FOLLOW_LEFT, B_WILL_DRAW);
AddChild(fSaveCache);
}
/**
* Updates the label on the print slider.
* @param txt The text to update the slider to.
*/
void CacheView::updatePrintFCS(const char* txt){
void
CacheView::AttachedToWindow(void)
{
fScreenSlider->SetTarget(this);
fPrintSlider->SetTarget(this);
fSaveCache->SetTarget(this);
}
printFCS->SetLabel(txt);
}//updatePrintFCS
/**
* Updates the label on the screen slider.
* @param txt The text to update the slider to.
*/
void CacheView::updateScreenFCS(const char* txt){
screenFCS->SetLabel(txt);
}//updatePrintFCS
/**
* Gets the current value of the print slider.
*/
int CacheView::getPrintFCSValue(){
return int(printFCS->Value());
}//getPrintValue
/**
* Gets the current value of the screen slider.
*/
int CacheView::getScreenFCSValue(){
return int(screenFCS->Value());
}//getPrintValue
void
CacheView::MessageReceived(BMessage *msg)
{
switch(msg->what)
{
case PRINT_FCS_MODIFICATION_MSG:
{
struct font_cache_info fontCacheInfo;
get_font_cache_info(B_PRINTING_FONT_CACHE|B_DEFAULT_CACHE_SETTING,
&fontCacheInfo);
fontCacheInfo.cache_size = fPrintSlider->Value() << 10;
set_font_cache_info(B_PRINTING_FONT_CACHE|B_DEFAULT_CACHE_SETTING,
&fontCacheInfo);
BString str("Printing font cache size : ");
str << fPrintSlider->Value() << " kB";
fPrintSlider->SetLabel(str.String());
// TODO: set revert state
// buttonView->SetRevertState(true);
break;
}
case SCREEN_FCS_MODIFICATION_MSG:
{
struct font_cache_info fontCacheInfo;
get_font_cache_info(B_SCREEN_FONT_CACHE|B_DEFAULT_CACHE_SETTING,
&fontCacheInfo);
fontCacheInfo.cache_size = fScreenSlider->Value() << 10;
set_font_cache_info(B_SCREEN_FONT_CACHE|B_DEFAULT_CACHE_SETTING,
&fontCacheInfo);
BString str("Screen font cache size : ");
str << fScreenSlider->Value() << " kB";
fScreenSlider->SetLabel(str.String());
// TODO: set revert state
// buttonView->SetRevertState(true);
break;
}
default:
{
BView::MessageReceived(msg);
break;
}
}
}
/**
* Sets the sliders to their original values.
*/
void CacheView::revertToOriginal(){
// TODO: fix
/*
BString label;
label << "Screen " << kLabel << getScreenFCSValue();
updateScreenFCS(label.String());
@@ -132,20 +149,21 @@ void CacheView::revertToOriginal(){
label = "Printing ";
label << kLabel << getPrintFCSValue();
updatePrintFCS(label.String());
}//revertToOriginal
*/
}
/**
* Sets the sliders to their default values.
*/
void CacheView::resetToDefaults(){
BString label;
// TODO: fix
/* BString label;
label << "Screen " << kLabel << getScreenFCSValue() << " kB";
updateScreenFCS(label.String());
label = "Printing ";
label << kLabel << getPrintFCSValue() << " kB";
updatePrintFCS(label.String());
}//revertToOriginal
*/
}
+29 -78
View File
@@ -1,86 +1,37 @@
/*! \file CacheView.h
* \brief Header file for the CacheView class.
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#ifndef CACHE_VIEW_H
#define CACHE_VIEW_H
#include <View.h>
#include <Box.h>
#include <Slider.h>
#include <Button.h>
#define CACHE_VIEW_H
class CacheView : public BView
{
public:
CacheView(const BRect &frame, const int32 &sliderMin,
const int32 &sliderMax, const int32 &printVal,
const int32 &screenVal);
void AttachedToWindow(void);
void MessageReceived(BMessage *msg);
/*!
* Message sent when the print slider is updated.
*/
#define PRINT_FCS_UPDATE_MSG 'pfum'
/*!
* Message sent when the screen slider is updated.
*/
#define SCREEN_FCS_UPDATE_MSG 'sfum'
/*!
* Message sent when the print slider is modified.
*/
#define PRINT_FCS_MODIFICATION_MSG 'pfmm'
/*!
* Message sent when the screen slider is modified.
*/
#define SCREEN_FCS_MODIFICATION_MSG 'sfmm'
#ifndef _VIEW_H
void revertToOriginal();
void resetToDefaults();
private:
#include <View.h>
#endif
#ifndef _BOX_H
#include <Box.h>
#endif
#ifndef _SLIDER_H
#include <Slider.h>
#endif
#ifndef _BUTTON_H
#include <Button.h>
#endif
class CacheView : public BView{
public:
BSlider *fScreenSlider;
BSlider *fPrintSlider;
BButton *fSaveCache;
CacheView(BRect frame, int minVal, int maxVal, int32 printCurrVal, int32 screenCurrVal);
void updatePrintFCS(const char* txt);
void updateScreenFCS(const char* txt);
int getPrintFCSValue();
int getScreenFCSValue();
void revertToOriginal();
void resetToDefaults();
private:
/**
* The screen cache slider.
*/
BSlider *screenFCS;
/**
* The print cache slider.
*/
BSlider *printFCS;
/**
* The original print slider value.
*/
int32 origPrintVal;
/**
* The original screen slider value.
*/
int32 origScreenVal;
};
// The original slider values
int32 fSavedPrintValue;
int32 fSavedScreenValue;
};
#endif
+219 -254
View File
@@ -1,84 +1,67 @@
/*! \file FontSelectionView.cpp
\brief Header for the FontSelectionView class.
*/
#ifndef FONT_SELECTION_VIEW_H
#include "FontSelectionView.h"
#endif
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#include "FontSelectionView.h"
#include "Pref_Utils.h"
#define SIZE_CHANGED_MSG 'plsz'
#define FONT_CHANGED_MSG 'plfn'
#define STYLE_CHANGED_MSG 'plst'
// should be changed to allow larger and smaller
#define minSizeIndex 7
#define maxSizeIndex 12
#define minSizeIndex 9
#define maxSizeIndex 14
// constants for labels
const char *kPlainFont = "Plain font:";
const char *kBoldFont = "Bold font:";
const char *kBoldFont = "Bold font:";
const char *kFixedFont = "Fixed font:";
const char *kSize = "Size: ";
/**
* Constructor
* @param rect The size of the view.
* @param name The name of the view.
* @param type The type of the view: plain, italic, etc.
*/
FontSelectionView::FontSelectionView(BRect rect, const char *name, int type)
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW)
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW)
{
switch(type){
case PLAIN_FONT_SELECTION_VIEW:
sprintf(typeLabel, kPlainFont);
origFont = be_plain_font;
workingFont = be_plain_font;
setSizeChangedMessage = PLAIN_SIZE_CHANGED_MSG;
setFontChangedMessage = PLAIN_FONT_CHANGED_MSG;
setStyleChangedMessage = PLAIN_STYLE_CHANGED_MSG;
defaultFont = new BFont();
defaultFont->SetFamilyAndStyle("Swis721 BT", "Roman");
defaultFont->SetSize(10.0);
break;
switch(type)
{
case BOLD_FONT_SELECTION_VIEW:
{
sprintf(typeLabel, kBoldFont);
origFont = be_bold_font;
workingFont = be_bold_font;
setSizeChangedMessage = BOLD_SIZE_CHANGED_MSG;
setFontChangedMessage = BOLD_FONT_CHANGED_MSG;
setStyleChangedMessage = BOLD_STYLE_CHANGED_MSG;
defaultFont = new BFont();
defaultFont->SetFamilyAndStyle("Swis721 BT", "Bold");
defaultFont->SetSize(12.0);
break;
}
case FIXED_FONT_SELECTION_VIEW:
{
sprintf(typeLabel, kFixedFont);
origFont = be_fixed_font;
workingFont = be_fixed_font;
setSizeChangedMessage = FIXED_SIZE_CHANGED_MSG;
setFontChangedMessage = FIXED_FONT_CHANGED_MSG;
setStyleChangedMessage = FIXED_STYLE_CHANGED_MSG;
defaultFont = new BFont();
defaultFont->SetFamilyAndStyle("Courier10 BT", "Roman");
defaultFont->SetSize(12.0);
break;
}
default:
{
sprintf(typeLabel, kPlainFont);
origFont = be_plain_font;
workingFont = be_plain_font;
}//switch
defaultFont = new BFont();
defaultFont->SetFamilyAndStyle("Swis721 BT", "Roman");
defaultFont->SetSize(10.0);
break;
}
}
float fontheight = FontHeight(false);
float divider = StringWidth(kFixedFont);
@@ -87,7 +70,8 @@ FontSelectionView::FontSelectionView(BRect rect, const char *name, int type)
fontList = new BPopUpMenu("fontList", true, true, B_ITEMS_IN_COLUMN);
// create menus
// size box
// size box
rect = Bounds();
float x = StringWidth("999") +16;
rect.left = rect.right -(x +StringWidth(kSize)+8.0);
@@ -95,7 +79,8 @@ FontSelectionView::FontSelectionView(BRect rect, const char *name, int type)
BMenuField *sizeListField = new BMenuField(rect, "fontField", kSize, sizeList, true);
sizeListField->SetDivider(StringWidth(kSize)+5.0);
sizeListField->SetAlignment(B_ALIGN_RIGHT);
// font menu
// font menu
rect.right = rect.left;
rect.left = 1;
rect.bottom = fontheight *1.5;
@@ -130,152 +115,170 @@ FontSelectionView::FontSelectionView(BRect rect, const char *name, int type)
}
/**
* Emptys the menu so it can be rebuilt.
* @param m The menu to empty.
*/
void FontSelectionView::emptyMenu(BPopUpMenu *m){
FontSelectionView::~FontSelectionView(void)
{
delete defaultFont;
}
int32 cnt;
int32 numItemsInMenu = m->CountItems();
for(cnt = 0;cnt < numItemsInMenu;cnt++){
BMenu *tmp;
BMenuItem *tmpI;
int32 cnt2;
int32 numItemsInSubmenu;
void
FontSelectionView::AttachedToWindow(void)
{
}
void
FontSelectionView::MessageReceived(BMessage *msg)
{
switch(msg->what)
{
/* case SIZE_CHANGED_MSG: {
tmpI = m->RemoveItem((int32) 0);
tmp = tmpI->Submenu();
updateSize(fSelectorView->plainSelectionView);
fButtonView->SetRevertState(true);
break;
}
case FONT_CHANGED_MSG: {
if(tmp != NULL){
updateFont(fSelectorView->plainSelectionView);
fButtonView->SetRevertState(true);
break;
}
case STYLE_CHANGED_MSG: {
numItemsInSubmenu = tmp->CountItems();
for(cnt2 = 0;cnt2 < numItemsInSubmenu;cnt2++){
BMenuItem *tmpItem;
tmpItem = tmp->RemoveItem((int32) 0);
delete tmpItem;
}//for
updateStyle(fSelectorView->plainSelectionView);
fButtonView->SetRevertState(true);
break;
}
case RESCAN_FONTS_MSG: {
}//if
update_font_families(false);
fSelectorView->emptyMenus();
fSelectorView->buildMenus();
updateFont(fSelectorView->plainSelectionView);
updateFont(fSelectorView->boldSelectionView);
updateFont(fSelectorView->fixedSelectionView);
break;
}
case RESET_FONTS_MSG: {
delete tmpI;
fSelectorView->resetToDefaults();
fCacheView->resetToDefaults();
fButtonView->SetRevertState(true);
break;
}
*/ default:
BView::MessageReceived(msg);
}
}
void FontSelectionView::emptyMenus(void)
{
// Empty the font list
for(int32 i = 0; i < fontList->CountItems(); i++)
{
BMenu *menu = fontList->SubmenuAt(0L);
// We should never have a regular menu item in the font list
if(!menu)
continue;
for(int32 j=0; j < menu->CountItems(); j++)
{
BMenuItem *item = menu->RemoveItem(0L);
delete item;
}
fontList->RemoveItem(menu);
delete menu;
}
}//for
}//emptyMenu
/**
* Emptys both the font and the size menus.
*/
void FontSelectionView::emptyMenus(){
//empty font menu
emptyMenu(fontList);
//empty size menu
emptyMenu(sizeList);
}//emptyMenus
/**
* Builds the font and size menus.
*/
void FontSelectionView::buildMenus(){
// empty the size list
for(int32 i = 0; i < sizeList->CountItems(); i++)
{
BMenuItem *item = sizeList->RemoveItem(0L);
delete item;
}
}
void FontSelectionView::buildMenus(void)
{
int32 numFamilies;
int counter;
numFamilies = count_font_families();
for ( int32 i = 0; i < numFamilies; i++ ) {
for ( int32 i = 0; i < numFamilies; i++ )
{
font_family family;
uint32 flags;
if ( get_font_family(i, &family, &flags) == B_OK ) {
uint32 flags;
int32 numStyles;
BMenu *tmpStyleMenu;
bool markFamily;
if ( get_font_family(i, &family, &flags) != B_OK )
continue;
markFamily = false;
tmpStyleMenu = new BMenu(family);
tmpStyleMenu->SetRadioMode(true);
numStyles = count_font_styles(family);
for ( int32 j = 0; j < numStyles; j++ )
{
font_style style;
BMenuItem *tmpItem;
BMenu *tmpStyleMenu;
int32 numStyles;
bool markFamily;
char workingStyle[64];
char workingFamily[64];
markFamily = false;
if (get_font_style(family, j, &style, &flags) != B_OK)
continue;
tmpStyleMenu = new BMenu(family);
tmpStyleMenu->SetRadioMode(true);
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 ) {
BMenuItem *tmpItem;
char workingStyle[64];
char workingFamily[64];
workingFont.GetFamilyAndStyle(&workingFamily, &workingStyle);
tmpItem = new BMenuItem(style, new BMessage(setStyleChangedMessage));
if((strcmp(style, workingStyle) == 0) && (strcmp(family, workingFamily) == 0)){
markFamily = true;
tmpItem->SetMarked(true);
}//if
tmpStyleMenu->AddItem(tmpItem);
}//if
}//for
workingFont.GetFamilyAndStyle(&workingFamily, &workingStyle);
tmpItem = new BMenuItem(style, new BMessage(STYLE_CHANGED_MSG));
fontList->AddItem(new BMenuItem((tmpStyleMenu), new BMessage(setFontChangedMessage)));
if(markFamily){
tmpStyleMenu->Superitem()->SetMarked(true);
}//if
}//if
}//for
//build size menu
for(counter = minSizeIndex;counter < (maxSizeIndex + 1);counter++){
if((strcmp(style, workingStyle) == 0) && (strcmp(family, workingFamily) == 0))
{
markFamily = true;
tmpItem->SetMarked(true);
}
tmpStyleMenu->AddItem(tmpItem);
}
fontList->AddItem(new BMenuItem((tmpStyleMenu), new BMessage(FONT_CHANGED_MSG)));
if(markFamily)
tmpStyleMenu->Superitem()->SetMarked(true);
}
// build size menu
for(counter = minSizeIndex; counter < (maxSizeIndex + 1); counter++)
{
char buf[1];
BMenuItem *tmp;
sprintf(buf, "%d", counter);
sizeList->AddItem(tmp = new BMenuItem(buf, new BMessage(setSizeChangedMessage)));
if(counter == (int) workingFont.Size()){
sizeList->AddItem(tmp = new BMenuItem(buf, new BMessage(SIZE_CHANGED_MSG)));
if(counter == (int) workingFont.Size())
tmp->SetMarked(true);
}//if
}//for
}//buildMenus
}
}
/**
* Writes the test text in the given font.
* @param fnt The font to write the test text in.
*/
void FontSelectionView::SetTestTextFont(BFont *fnt){
void FontSelectionView::SetTestTextFont(BFont *fnt)
{
testText->SetFont(fnt, B_FONT_ALL);
testText->Invalidate();
}//SetTextTextFont
}
/**
* Gets the current font.
*/
BFont FontSelectionView::GetTestTextFont(){
BFont FontSelectionView::GetTestTextFont()
{
BFont rtrnFont;
@@ -283,94 +286,66 @@ BFont FontSelectionView::GetTestTextFont(){
return rtrnFont;
}//SetTextTextFont
/**
* Gets the selected size.
*/
float FontSelectionView::GetSelectedSize(){
}
float
FontSelectionView::GetSelectedSize()
{
return minSizeIndex + sizeList->IndexOf(sizeList->FindMarked());
}//GetSelectedSize
/**
* Gets the selected font_family.
* @param family The selected font_family.
*/
void FontSelectionView::GetSelectedFont(font_family *family){
}
void FontSelectionView::GetSelectedFont(font_family *family)
{
int numFamilies = count_font_families();
for ( int32 i = 0; i < numFamilies; i++ ) {
for ( int32 i = 0; i < numFamilies; i++ )
{
font_family fam;
uint32 flags;
if ( get_font_family(i, &fam, &flags) == B_OK ) {
if(strcmp(fam, fontList->FindMarked()->Label()) == 0){
if ( get_font_family(i, &fam, &flags) == B_OK )
{
if(strcmp(fam, fontList->FindMarked()->Label()) == 0)
get_font_family(i, family, &flags);
}//if
}//if
}//for
}//GetSelectedFont
/**
* Gets the selected style.
* @param style The selected style.
*/
void FontSelectionView::GetSelectedStyle(font_style *style){
}
}
}
void FontSelectionView::GetSelectedStyle(font_style *style)
{
int numFamilies = count_font_families();
font_family curr;
GetSelectedFont(&curr);
for ( int32 i = 0; i < numFamilies; i++ ) {
for ( int32 i = 0; i < numFamilies; i++ )
{
font_family fam;
uint32 flags;
if ( get_font_family(i, &fam, &flags) == B_OK ) {
if(strcmp(fam, curr) == 0){
int32 numStyles = count_font_styles(fam);
for ( int32 j = 0; j < numStyles; j++ ) {
font_style sty;
if ( get_font_style(fam, j, &sty, &flags) == B_OK ) {
if(strcmp(sty, fontList->FindMarked()->Submenu()->FindMarked()->Label()) == 0){
get_font_style(fam, j, style, &flags);
}//if
}//if
}//for
}//if
}//if
}//for
}//GetSelectedStyle
if (get_font_family(i, &fam, &flags) == B_OK && strcmp(fam, curr) == 0 )
{
int32 numStyles = count_font_styles(fam);
for ( int32 j = 0; j < numStyles; j++ )
{
font_style sty;
if ( get_font_style(fam, j, &sty, &flags) == B_OK )
{
if(strcmp(sty, fontList->FindMarked()->Submenu()->FindMarked()->Label()) == 0)
get_font_style(fam, j, style, &flags);
}
}
}
}
}
/**
* If a style is selected, this function is called to update the font menu,
* in case the selected style is from a non selected font. It also marks the
* selected style, and unmarks all other styles.
*/
void FontSelectionView::UpdateFontSelectionFromStyle(){
void FontSelectionView::UpdateFontSelectionFromStyle()
{
int i = 0;
for(i = 0;i < fontList->CountItems();i++){
@@ -393,38 +368,28 @@ void FontSelectionView::UpdateFontSelectionFromStyle(){
}//for
}//for
}//UpdateFontSelection
}
/**
* Updates the font menu based on the user selection.
*/
void FontSelectionView::UpdateFontSelection(){
int i = 0;
for(i = 0;i < fontList->CountItems();i++){
int j = 0;
for(j = 0;j < fontList->ItemAt(i)->Submenu()->CountItems();j++){
if(fontList->ItemAt(i)->Submenu()->ItemAt(j)->IsMarked()){
if(strcmp(fontList->ItemAt(i)->Label(), fontList->FindMarked()->Label()) > 0){
void FontSelectionView::UpdateFontSelection()
{
for(int32 i = 0; i < fontList->CountItems();i++)
{
for(int32 j = 0;j < fontList->ItemAt(i)->Submenu()->CountItems();j++)
{
if(fontList->ItemAt(i)->Submenu()->ItemAt(j)->IsMarked())
{
if(strcmp(fontList->ItemAt(i)->Label(), fontList->FindMarked()->Label()) > 0)
{
fontList->ItemAt(i)->Submenu()->FindMarked()->SetMarked(false);
fontList->FindMarked()->Submenu()->ItemAt(0)->SetMarked(true);
}//if
}//if
}//for
}//for
}//UpdateFontSelection
}
}
}
}
}
/**
* Updates the font and size menus based on the given font.
+57 -180
View File
@@ -1,187 +1,64 @@
/*! \file FontSelectionView.h
\brief Header for the FontSelectionView class.
*/
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#ifndef FONT_SELECTION_VIEW_H
#define FONT_SELECTION_VIEW_H
#include <View.h>
#include <Box.h>
#include <StringView.h>
#include <PopUpMenu.h>
#include <MenuField.h>
#include <MenuItem.h>
#include <stdio.h>
#define FONT_SELECTION_VIEW_H
enum
{
PLAIN_FONT_SELECTION_VIEW=1,
BOLD_FONT_SELECTION_VIEW,
FIXED_FONT_SELECTION_VIEW
};
/*!
* Constant to define that the view is a plain view.
*/
#define PLAIN_FONT_SELECTION_VIEW 1
/*!
* Constant to define that the view is a bold view.
*/
#define BOLD_FONT_SELECTION_VIEW 2
/*!
* Constant to define that the view is a fixed view.
*/
#define FIXED_FONT_SELECTION_VIEW 3
/*!
* The plain size menu was changed.
*/
#define PLAIN_SIZE_CHANGED_MSG 'plsz'
/*!
* The bold size menu was changed.
*/
#define BOLD_SIZE_CHANGED_MSG 'blsz'
/*!
* The fixed size menu was changed.
*/
#define FIXED_SIZE_CHANGED_MSG 'fxsz'
/*!
* The plain font menu was changed.
*/
#define PLAIN_FONT_CHANGED_MSG 'plfn'
/*!
* The bold font menu was changed.
*/
#define BOLD_FONT_CHANGED_MSG 'blfn'
/*!
* The fixed font menu was changed.
*/
#define FIXED_FONT_CHANGED_MSG 'fxfn'
/*!
* The plain style menu was changed.
*/
#define PLAIN_STYLE_CHANGED_MSG 'plst'
/*!
* The bold style menu was changed.
*/
#define BOLD_STYLE_CHANGED_MSG 'blst'
/*!
* The fixed style menu was changed.
*/
#define FIXED_STYLE_CHANGED_MSG 'fxst'
#ifndef _VIEW_H
#include <View.h>
#endif
#ifndef _BOX_H
#include <Box.h>
#endif
#ifndef _STRING_VIEW_H
#include <StringView.h>
#endif
#ifndef _POP_UP_MENU_H
#include <PopUpMenu.h>
#endif
#ifndef _MENU_FIELD_H
#include <MenuField.h>
#endif
#ifndef _MENU_ITEM_H
#include <MenuItem.h>
#endif
#ifndef _STDIO_H
#include <stdio.h>
#endif
class FontSelectionView : public BView{
public:
class FontSelectionView : public BView
{
public:
FontSelectionView(BRect rect, const char *name, int type);
void SetTestTextFont(BFont *fnt);
BFont GetTestTextFont();
float GetSelectedSize();
void GetSelectedFont(font_family *family);
void GetSelectedStyle(font_style *style);
void UpdateFontSelectionFromStyle();
void UpdateFontSelection();
void buildMenus();
void emptyMenus();
void resetToDefaults();
void revertToOriginal();
private:
/**
* The test text display view.
*/
BStringView *testText;
/**
* The font menu.
*/
BPopUpMenu *fontList;
/**
* The size menu.
*/
BPopUpMenu *sizeList;
/**
* The minimum font size allowed.
*/
int minSizeIndex;
/**
* The maximum font size allowed.
*/
int maxSizeIndex;
/**
* The message sent when the size menu is changed.
*/
uint32 setSizeChangedMessage;
/**
* The message sent when the font menu is changed.
*/
uint32 setFontChangedMessage;
/**
* The message sent when the style menu is changed.
*/
uint32 setStyleChangedMessage;
/**
* The label that shows what type the view is.
*/
char typeLabel[30];
/**
* The original font, set when the view is instantiated.
*/
BFont origFont;
/**
* The current font.
*/
BFont workingFont;
/**
* The default font.
*/
BFont *defaultFont;
void emptyMenu(BPopUpMenu *m);
void UpdateFontSelection(BFont *fnt);
~FontSelectionView(void);
void AttachedToWindow(void);
void MessageReceived(BMessage *msg);
};
void SetTestTextFont(BFont *fnt);
BFont GetTestTextFont();
float GetSelectedSize();
void GetSelectedFont(font_family *family);
void GetSelectedStyle(font_style *style);
void UpdateFontSelectionFromStyle();
void UpdateFontSelection();
void resetToDefaults();
void revertToOriginal();
private:
void buildMenus(void);
void emptyMenus(void);
void EmptyMenu(BPopUpMenu *m);
void UpdateFontSelection(BFont *fnt);
BStringView *testText;
BPopUpMenu *fontList;
BPopUpMenu *sizeList;
int minSizeIndex;
int maxSizeIndex;
char typeLabel[30];
BFont origFont;
BFont workingFont;
BFont *defaultFont;
};
#endif
+33 -66
View File
@@ -1,95 +1,62 @@
/*! \file FontView.cpp
\brief Header for the FontView class.
*/
#ifndef FONT_VIEW_H
#include "FontView.h"
#endif
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#include "FontView.h"
#include "Pref_Utils.h"
/**
* Constructor.
* @param rect The size of the view.
*/
FontView::FontView(BRect rect)
:BView(rect, "FontView", B_FOLLOW_ALL, B_WILL_DRAW)
: BView(rect, "Fonts", B_FOLLOW_ALL, B_WILL_DRAW)
{
BRect bounds(Bounds().InsetByCopy(5, 5));
BRect rect(bounds);
rect.bottom = rect.top +FontHeight(true) *3.5;
plainSelectionView = new FontSelectionView(rect, "Plain", PLAIN_FONT_SELECTION_VIEW);
rect.OffsetBy(0, rect.Height()+4);
boldSelectionView = new FontSelectionView(rect, "Bold", BOLD_FONT_SELECTION_VIEW);
rect.OffsetBy(0, rect.Height()+4);
fixedSelectionView = new FontSelectionView(rect, "Fixed", FIXED_FONT_SELECTION_VIEW);
AddChild(plainSelectionView);
AddChild(boldSelectionView);
AddChild(fixedSelectionView);
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
BRect bounds( Bounds().InsetByCopy(5, 5) );
BRect rect(bounds);
rect.bottom = rect.top + FontHeight(true) *3.5;
plainSelectionView = new FontSelectionView(rect, "Plain",
PLAIN_FONT_SELECTION_VIEW);
AddChild(plainSelectionView);
rect.OffsetBy(0, rect.Height() + 4);
boldSelectionView = new FontSelectionView(rect, "Bold",
BOLD_FONT_SELECTION_VIEW);
AddChild(boldSelectionView);
rect.OffsetBy(0, rect.Height() + 4);
fixedSelectionView = new FontSelectionView(rect, "Fixed",
FIXED_FONT_SELECTION_VIEW);
AddChild(fixedSelectionView);
}
void
FontView::AttachedToWindow(void)
{
if (Parent() != NULL)
SetViewColor(Parent()->ViewColor());
else
SetViewColor(219, 219, 219, 255);
}
/**
* Calls each FontSelectionView's buildMenus() function to build the
* font and size menus.
*/
void FontView::buildMenus(){
plainSelectionView->buildMenus();
boldSelectionView->buildMenus();
fixedSelectionView->buildMenus();
}//buildMenus
/**
* Calls each FontSelectionView's emptyMenus() function to clear the
* font and size menus.
*/
void FontView::emptyMenus(){
plainSelectionView->emptyMenus();
boldSelectionView->emptyMenus();
fixedSelectionView->emptyMenus();
}//buildMenus
/**
* Calls each FontSelectionView's resetToDefaults() function to reset
* the font and size menus to the default font.
*/
void FontView::resetToDefaults(){
void
FontView::resetToDefaults()
{
plainSelectionView->resetToDefaults();
boldSelectionView->resetToDefaults();
fixedSelectionView->resetToDefaults();
}//resetToDefaults
}
/**
* Calls each FontSelectionView's revertToOriginal() function to reset
* the font and size menus to the original font.
*/
void FontView::revertToOriginal(){
void
FontView::revertToOriginal()
{
plainSelectionView->revertToOriginal();
boldSelectionView->revertToOriginal();
fixedSelectionView->revertToOriginal();
}//resetToDefaults
}
+22 -37
View File
@@ -1,42 +1,27 @@
/*! \file FontView.h
\brief Header for the FontView class.
*/
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#ifndef FONT_VIEW_H
#define FONT_VIEW_H
#define FONT_VIEW_H
#ifndef _VIEW_H
#include <View.h>
#endif
#ifndef FONT_SELECTION_VIEW_H
#include "FontSelectionView.h"
#endif
#ifndef _BOX_H
#include <Box.h>
#endif
class FontView : public BView{
public:
#include <Box.h>
#include <View.h>
#include "FontSelectionView.h"
class FontView : public BView
{
public:
FontView(BRect frame);
void AttachedToWindow(void);
FontSelectionView *plainSelectionView;
FontSelectionView *boldSelectionView;
FontSelectionView *fixedSelectionView;
void buildMenus();
void emptyMenus();
void resetToDefaults();
void revertToOriginal();
};
void AttachedToWindow(void);
void resetToDefaults();
void revertToOriginal();
FontSelectionView *plainSelectionView;
FontSelectionView *boldSelectionView;
FontSelectionView *fixedSelectionView;
};
#endif
+47 -21
View File
@@ -1,36 +1,38 @@
/*
FontsSettings.cpp
*/
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#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"
const char FontsSettings::kSettingsFile[] = "Font_Settings";
const BPoint kDEFAULT = BPoint(100, 100);
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) {
float x, y;
if (file.Read(&x, sizeof(float)) != sizeof(float)) {
x = kDEFAULT.x;
}
if (file.Read(&y, sizeof(float)) != sizeof(float)) {
y = kDEFAULT.y;
}
f_corner = BPoint(x, y);
} else {
f_corner = kDEFAULT;
if (file.InitCheck() != B_OK)
SetDefaults();
else
if (msg.Unflatten(&file) != B_OK)
SetDefaults();
else
{
msg.FindPoint("windowlocation",&fCorner);
}
}
}
@@ -38,15 +40,32 @@ FontsSettings::FontsSettings()
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) {
float x = f_corner.x;
float y = f_corner.y;
file.Write(&x, sizeof(float));
file.Write(&y, sizeof(float));
msg.AddPoint("windowlocation",fCorner);
// We need to add this to the settings file so that the app_server
// can get the font cache info on startup. This is the only
// place in the Fonts app that we actually need to do this because
// any other changes made are made through the API
struct font_cache_info cacheInfo;
get_font_cache_info(B_SCREEN_FONT_CACHE|B_DEFAULT_CACHE_SETTING,
&cacheInfo);
msg.AddInt32("screencachesize",cacheInfo.cache_size);
get_font_cache_info(B_PRINTING_FONT_CACHE|B_DEFAULT_CACHE_SETTING,
&cacheInfo);
msg.AddInt32("printcachesize",cacheInfo.cache_size);
msg.Flatten(&file);
}
}
@@ -54,5 +73,12 @@ FontsSettings::~FontsSettings()
void
FontsSettings::SetWindowCorner(BPoint where)
{
f_corner = where;
fCorner = where;
}
void
FontsSettings::SetDefaults(void)
{
fCorner.Set(100,100);
}
+17 -9
View File
@@ -1,16 +1,24 @@
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#ifndef FONTS_SETTINGS_H
#define FONTS_SETTINGS_H
class FontsSettings {
public:
FontsSettings(void);
~FontsSettings(void);
class FontsSettings
{
public:
FontsSettings(void);
~FontsSettings(void);
BPoint WindowCorner(void) const { return f_corner; }
void SetWindowCorner(BPoint);
private:
static const char kSettingsFile[];
BPoint f_corner;
BPoint WindowCorner(void) const { return fCorner; }
void SetWindowCorner(BPoint);
void SetDefaults(void);
private:
BPoint fCorner;
};
#endif //FONTS_SETTINGS_H
+110 -152
View File
@@ -1,214 +1,175 @@
/*! \file MainWindow.cpp
* \brief Code for the main window.
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
* Displays the main window.
*
*/
#ifndef MAIN_WINDOW_H
#include "MainWindow.h"
#endif
/**
* Constructor.
* @param frame The size to make the window.
*/
MainWindow::MainWindow(BRect frame)
:BWindow(frame, "Fonts", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE ){
#include "MainWindow.h"
MainWindow::MainWindow(void)
: BWindow( BRect(100,80,445,343) , "Fonts", B_TITLED_WINDOW, B_NOT_RESIZABLE |
B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE )
{
BRect r;
BTabView *tabView;
BTab *tab;
BBox *topLevelView;
double buttonViewHeight = 43.0;
struct font_cache_info cacheInfo;
int32 screenCacheSize, printCacheSize;
get_font_cache_info(B_SCREEN_FONT_CACHE|B_DEFAULT_CACHE_SETTING, &cacheInfo);
screenCacheSize = cacheInfo.cache_size >> 10;
get_font_cache_info(B_PRINTING_FONT_CACHE|B_DEFAULT_CACHE_SETTING, &cacheInfo);
printCacheSize = cacheInfo.cache_size >> 10;
r = Bounds();
r.top += 10;
r.bottom -= buttonViewHeight+1;
tabView = new BTabView(r, "tab_view", B_WIDTH_FROM_LABEL);
tabView->SetViewColor(216,216,216,0);
tabView = new BTabView(r, "tabview", B_WIDTH_FROM_LABEL);
tabView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
r = tabView->Bounds();
r.InsetBy(5, 5);
r.bottom -= tabView->TabHeight();
r.right -=2;
tab = new BTab();
tabView->AddTab(fontPanel = new FontView(r), tab);
tab->SetLabel(" Fonts ");
tab = new BTab();
tabView->AddTab(cachePanel = new CacheView(r, 64, 4096, (int32) 256, (int32) 256), tab);
tab->SetLabel("Cache");
fSelectorView = new FontView(r);
tabView->AddTab(fSelectorView);
fCacheView = new CacheView(r, 64, 4096, printCacheSize, screenCacheSize);
tabView->AddTab(fCacheView);
r = Bounds();
r.top = r.bottom - buttonViewHeight;
buttonView = new ButtonView(r);
fButtonView = new ButtonView(r);
topLevelView = new BBox(Bounds(), "TopLevelView", B_FOLLOW_ALL, B_WILL_DRAW, B_NO_BORDER);
AddChild(topLevelView);
topLevelView->AddChild(buttonView);
topLevelView->AddChild(fButtonView);
topLevelView->AddChild(tabView);
MoveTo(fSettings.WindowCorner());
}
/**
* Runs when the user quits the application.
*/
bool MainWindow::QuitRequested()
bool
MainWindow::QuitRequested(void)
{
BMessage *message = new BMessage(B_QUIT_REQUESTED);
message->AddPoint("corner", Frame().LeftTop());
be_app->PostMessage(message);
fSettings.SetWindowCorner(Frame().LeftTop());
be_app->PostMessage(B_QUIT_REQUESTED);
return true;
}
/**
* Handles messages sent to the class.
* @param message The message to be handled.
*/
void MainWindow::MessageReceived(BMessage *message){
char msg[100];
void
MainWindow::MessageReceived(BMessage *message)
{
switch(message->what) {
switch(message->what){
case PLAIN_SIZE_CHANGED_MSG:
/* case PLAIN_SIZE_CHANGED_MSG: {
updateSize(fontPanel->plainSelectionView);
buttonView->SetRevertState(true);
updateSize(fSelectorView->plainSelectionView);
fButtonView->SetRevertState(true);
break;
}
case BOLD_SIZE_CHANGED_MSG: {
case BOLD_SIZE_CHANGED_MSG:
updateSize(fontPanel->boldSelectionView);
buttonView->SetRevertState(true);
updateSize(fSelectorView->boldSelectionView);
fButtonView->SetRevertState(true);
break;
}
case FIXED_SIZE_CHANGED_MSG: {
case FIXED_SIZE_CHANGED_MSG:
updateSize(fontPanel->fixedSelectionView);
buttonView->SetRevertState(true);
updateSize(fSelectorView->fixedSelectionView);
fButtonView->SetRevertState(true);
break;
}
case PLAIN_FONT_CHANGED_MSG: {
case PLAIN_FONT_CHANGED_MSG:
updateFont(fontPanel->plainSelectionView);
buttonView->SetRevertState(true);
updateFont(fSelectorView->plainSelectionView);
fButtonView->SetRevertState(true);
break;
}
case BOLD_FONT_CHANGED_MSG: {
case BOLD_FONT_CHANGED_MSG:
updateFont(fontPanel->boldSelectionView);
buttonView->SetRevertState(true);
updateFont(fSelectorView->boldSelectionView);
fButtonView->SetRevertState(true);
break;
}
case FIXED_FONT_CHANGED_MSG: {
case FIXED_FONT_CHANGED_MSG:
updateFont(fontPanel->fixedSelectionView);
buttonView->SetRevertState(true);
updateFont(fSelectorView->fixedSelectionView);
fButtonView->SetRevertState(true);
break;
case PLAIN_STYLE_CHANGED_MSG:
}
case PLAIN_STYLE_CHANGED_MSG: {
updateStyle(fontPanel->plainSelectionView);
buttonView->SetRevertState(true);
updateStyle(fSelectorView->plainSelectionView);
fButtonView->SetRevertState(true);
break;
}
case BOLD_STYLE_CHANGED_MSG: {
case BOLD_STYLE_CHANGED_MSG:
updateStyle(fontPanel->boldSelectionView);
buttonView->SetRevertState(true);
updateStyle(fSelectorView->boldSelectionView);
fButtonView->SetRevertState(true);
break;
}
case FIXED_STYLE_CHANGED_MSG: {
case FIXED_STYLE_CHANGED_MSG:
updateStyle(fontPanel->fixedSelectionView);
buttonView->SetRevertState(true);
updateStyle(fSelectorView->fixedSelectionView);
fButtonView->SetRevertState(true);
break;
case RESCAN_FONTS_MSG:
}
case RESCAN_FONTS_MSG: {
update_font_families(false);
fontPanel->emptyMenus();
fontPanel->buildMenus();
updateFont(fontPanel->plainSelectionView);
updateFont(fontPanel->boldSelectionView);
updateFont(fontPanel->fixedSelectionView);
fSelectorView->emptyMenus();
fSelectorView->buildMenus();
updateFont(fSelectorView->plainSelectionView);
updateFont(fSelectorView->boldSelectionView);
updateFont(fSelectorView->fixedSelectionView);
break;
case RESET_FONTS_MSG:
}
case RESET_FONTS_MSG: {
fontPanel->resetToDefaults();
cachePanel->resetToDefaults();
buttonView->SetRevertState(true);
fSelectorView->resetToDefaults();
fCacheView->resetToDefaults();
fButtonView->SetRevertState(true);
break;
case REVERT_MSG:
}
*/ case REVERT_MSG: {
fontPanel->revertToOriginal();
cachePanel->revertToOriginal();
buttonView->SetRevertState(false);
fSelectorView->revertToOriginal();
fCacheView->revertToOriginal();
fButtonView->SetRevertState(false);
break;
case PRINT_FCS_UPDATE_MSG:
printf("print update message\n");
//buttonView->SetRevertState(true);
break;
case PRINT_FCS_MODIFICATION_MSG:
sprintf(msg, "Printing font cache size : %d kB", cachePanel->getPrintFCSValue());
cachePanel->updatePrintFCS(msg);
buttonView->SetRevertState(true);
break;
case SCREEN_FCS_UPDATE_MSG:
printf("screen update message\n");
//buttonView->SetRevertState(true);
buttonView->SetRevertState(true);
break;
case SCREEN_FCS_MODIFICATION_MSG:
sprintf(msg, "Screen font cache size : %d kB", cachePanel->getScreenFCSValue());
cachePanel->updateScreenFCS(msg);
buttonView->SetRevertState(true);
break;
default:
}
default: {
BWindow::MessageReceived(message);
break;
}
}
}
/**
* Sets the size of the test text when a new size is picked.
* @param theView The FontSelectionView that is affected.
*/
void MainWindow::updateSize(FontSelectionView *theView){
// Sets the size of the test text when a new size is picked.
void
MainWindow::updateSize(FontSelectionView *theView)
{
BFont workingFont;
workingFont = theView->GetTestTextFont();
workingFont.SetSize(theView->GetSelectedSize());
theView->SetTestTextFont(&workingFont);
}//updateSize
/**
* Updates the test text to the selected font.
* @param theView The FontSelectionView that is affected.
*/
void MainWindow::updateFont(FontSelectionView *theView){
}
// Updates the test text to the selected font.
void
MainWindow::updateFont(FontSelectionView *theView)
{
BFont workingFont;
font_family updateTo;
@@ -217,15 +178,12 @@ void MainWindow::updateFont(FontSelectionView *theView){
theView->GetSelectedFont(&updateTo);
workingFont.SetFamilyAndStyle(updateTo, NULL);
theView->SetTestTextFont(&workingFont);
}//updateFont
/**
* Updates the test text to the selected style.
* @param theView The FontSelectionView that is affected.
*/
void MainWindow::updateStyle(FontSelectionView *theView){
}
// Updates the test text to the selected style.
void
MainWindow::updateStyle(FontSelectionView *theView)
{
BFont workingFont;
font_style updateTo;
font_family update;
@@ -236,5 +194,5 @@ void MainWindow::updateStyle(FontSelectionView *theView){
theView->GetSelectedFont(&update);
workingFont.SetFamilyAndStyle(update, updateTo);
theView->SetTestTextFont(&workingFont);
}
}//updateStyle
+29 -71
View File
@@ -1,82 +1,40 @@
/*! \file MainWindow.h
\brief Header for the MainWindow class.
*/
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#ifndef MAIN_WINDOW_H
#define MAIN_WINDOW_H
#define MAIN_WINDOW_H
#include <Application.h>
#include <Window.h>
#include <TabView.h>
#include <Box.h>
#ifndef _APPLICATION_H
#include "FontView.h"
#include "CacheView.h"
#include "ButtonView.h"
#include "FontsSettings.h"
#include <Application.h>
#endif
#ifndef _WINDOW_H
class MainWindow : public BWindow
{
public:
MainWindow(void);
virtual bool QuitRequested(void);
virtual void MessageReceived(BMessage *message);
#include <Window.h>
#endif
#ifndef _TAB_VIEW_H
private:
#include <TabView.h>
#endif
#ifndef FONT_VIEW_H
void updateSize(FontSelectionView *theView);
void updateFont(FontSelectionView *theView);
void updateStyle(FontSelectionView *theView);
#include "FontView.h"
#endif
FontView *fSelectorView;
ButtonView *fButtonView;
CacheView *fCacheView;
#ifndef CACHE_VIEW_H
#include "CacheView.h"
#endif
#ifndef BUTTON_VIEW_H
#include "ButtonView.h"
#endif
#ifndef _BOX_H
#include <Box.h>
#endif
class MainWindow : public BWindow{
public:
MainWindow(BRect frame);
virtual bool QuitRequested();
virtual void MessageReceived(BMessage *message);
private:
/**
* The panel that shows the font selection views.
*/
FontView *fontPanel;
/**
* The panel that holds the default, revert and rescan buttons.
*/
ButtonView *buttonView;
/**
* The panel that holds the sliders for adjusting the cache sizes.
*/
CacheView *cachePanel;
void updateSize(FontSelectionView *theView);
void updateFont(FontSelectionView *theView);
void updateStyle(FontSelectionView *theView);
};
FontsSettings fSettings;
};
#endif
+13 -65
View File
@@ -1,75 +1,23 @@
/*! \file main.cpp
\brief Code for the main class.
*/
#ifndef MAIN_WINDOW_H
#include "MainWindow.h"
#endif
#ifndef MAIN_H
#include "main.h"
#endif
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#include "MainWindow.h"
#include "main.h"
#include "FontsSettings.h"
/**
* Main method.
*
* Starts the whole thing.
*/
int main(int, char**){
/**
* An instance of the application.
*/
Font_pref fontApp;
int main(int, char**)
{
FontApp fontApp;
fontApp.Run();
return(0);
}
/*
* Constructor.
*
* Provides a contstructor for the application.
*/
Font_pref::Font_pref()
:BApplication("application/x-vnd.Haiku-FNPL") {
f_settings = new FontsSettings();
BRect MainWindowRect;
MainWindowRect.Set(100, 80, 445, 343);
window = new MainWindow(MainWindowRect);
window->MoveTo(f_settings->WindowCorner());
}
Font_pref::~Font_pref()
{
delete f_settings;
}
bool
Font_pref::QuitRequested()
{
BMessage *message = CurrentMessage();
BPoint point;
if (message->FindPoint("corner", &point) == B_OK) {
f_settings->SetWindowCorner(point);
}
return BApplication::QuitRequested();
}
void
Font_pref::ReadyToRun()
FontApp::FontApp()
: BApplication("application/x-vnd.Haiku-FNPL")
{
MainWindow *window = new MainWindow();
window->Show();
}
+13 -35
View File
@@ -1,39 +1,17 @@
/*! \file main.h
\brief Header file for the main class.
*/
/*
* Copyright 2001-2005, Haiku.
* Distributed under the terms of the MIT License.
*
*/
#ifndef MAIN_H
#define MAIN_H
#define MAIN_H
#ifndef _APPLICATION_H
#include <Application.h>
#endif
class FontsSettings;
class MainWindow;
/**
* Main class.
*
* Gets everything going.
*/
class Font_pref : public BApplication{
public:
/**
* Constructor.
*/
Font_pref();
~Font_pref();
void ReadyToRun();
bool QuitRequested();
private:
FontsSettings *f_settings;
MainWindow *window;
};
#include <Application.h>
class FontApp : public BApplication
{
public:
FontApp(void);
};
#endif