From 578f3ba69f69fd7f5443133089730b8f75e2dd7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sat, 12 Jan 2008 01:11:45 +0000 Subject: [PATCH] * Linking fixes * Will put Haiku code there... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23430 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- 3rdparty/mmu_man/themes/MakeScreenshot.cpp | 3 + .../mmu_man/themes/ThemeInterfaceView.cpp | 6 +- .../themes/addons/HaikuUISettingsAddon.cpp | 208 ++++++++++++++++++ .../themes/addons/HaikuWindowDecorAddon.cpp | 163 ++++++++++++++ 4 files changed, 379 insertions(+), 1 deletion(-) create mode 100644 3rdparty/mmu_man/themes/addons/HaikuUISettingsAddon.cpp create mode 100644 3rdparty/mmu_man/themes/addons/HaikuWindowDecorAddon.cpp diff --git a/3rdparty/mmu_man/themes/MakeScreenshot.cpp b/3rdparty/mmu_man/themes/MakeScreenshot.cpp index f78478cc3e..b4e59597fb 100644 --- a/3rdparty/mmu_man/themes/MakeScreenshot.cpp +++ b/3rdparty/mmu_man/themes/MakeScreenshot.cpp @@ -39,7 +39,10 @@ status_t MakeScreenshot(BBitmap **here) scaledBmp = new BBitmap(scaledBounds, B_BITMAP_ACCEPTS_VIEWS, B_RGB32/*shot->ColorSpace()*/); err = scaledBmp->InitCheck(); if (!err) { + err = ENOSYS; +#ifdef B_ZETA_VERSION err = ScaleBitmap(*shot, *scaledBmp); +#endif if (err) { // filtered scaling didn't work, do it manually BView *v = new BView(scaledBounds, "scaleview", B_FOLLOW_NONE, 0); diff --git a/3rdparty/mmu_man/themes/ThemeInterfaceView.cpp b/3rdparty/mmu_man/themes/ThemeInterfaceView.cpp index b7703e3436..8b1a601712 100644 --- a/3rdparty/mmu_man/themes/ThemeInterfaceView.cpp +++ b/3rdparty/mmu_man/themes/ThemeInterfaceView.cpp @@ -700,7 +700,11 @@ void ThemeInterfaceView::SetScreenshot(BBitmap *shot) if (shot) { BBitmap scaled(fScreenshotPane->Bounds(), B_RGB32); - if( B_OK == ScaleBitmap(*shot, scaled) ) + status_t err = ENOSYS; +#ifdef B_ZETA_VERSION + err = ScaleBitmap(*shot, scaled); +#endif + if( err == B_OK ) { fScreenshotPane->SetViewBitmap(&scaled); } diff --git a/3rdparty/mmu_man/themes/addons/HaikuUISettingsAddon.cpp b/3rdparty/mmu_man/themes/addons/HaikuUISettingsAddon.cpp new file mode 100644 index 0000000000..b136d31c3b --- /dev/null +++ b/3rdparty/mmu_man/themes/addons/HaikuUISettingsAddon.cpp @@ -0,0 +1,208 @@ +/* + * ui_settings ThemesAddon class + */ + +#include +//#ifdef B_BEOS_VERSION_DANO +#if 0 + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "ThemesAddon.h" +#include "UITheme.h" + +#ifdef SINGLE_BINARY +#define instanciate_themes_addon instanciate_themes_addon_ui_settings +#endif + +//#define A_NAME "UI Settings" +#define A_NAME "System Colors and Fonts" +#define A_MSGNAME Z_THEME_UI_SETTINGS +#define A_DESCRIPTION "System colors, fonts and other goodies" + +class UISettingsThemesAddon : public ThemesAddon { +public: + UISettingsThemesAddon(); + ~UISettingsThemesAddon(); + +const char *Description(); + +status_t RunPreferencesPanel(); + +status_t AddNames(BMessage &names); + +status_t ApplyTheme(BMessage &theme, uint32 flags=0L); +status_t MakeTheme(BMessage &theme, uint32 flags=0L); + +status_t ApplyDefaultTheme(uint32 flags=0L); +}; + +UISettingsThemesAddon::UISettingsThemesAddon() + : ThemesAddon(A_NAME, A_MSGNAME) +{ +} + +UISettingsThemesAddon::~UISettingsThemesAddon() +{ +} + +const char *UISettingsThemesAddon::Description() +{ + return A_DESCRIPTION; +} + +status_t UISettingsThemesAddon::RunPreferencesPanel() +{ + status_t err = B_OK; + entry_ref ref; + BEntry ent; + /* + err = ent.SetTo("/boot/beos/preferences/Colors"); + if (!err) { + err = ent.GetRef(&ref); + if (!err) { + err = be_roster->Launch(&ref); + } + } + */ + if (!err) + return B_OK; + err = ent.SetTo("/system/add-ons/Preferences/Appearance"); + if (!err) { + err = ent.GetRef(&ref); + if (!err) { + err = be_roster->Launch(&ref); + if (err) { + BMessage msg(B_REFS_RECEIVED); + msg.AddRef("refs", &ref); + be_app_messenger.SendMessage(&msg); + } + } + } + return err; +} + +status_t UISettingsThemesAddon::AddNames(BMessage &names) +{ + BMessage uisettings; + BMessage uinames; + status_t err; + const char *str, *value; + type_code code; + int32 i; + + err = get_ui_settings(&uisettings, &uinames); + if (err) + return err; + names.AddString(Z_THEME_UI_SETTINGS, "UI Settings"); + // hack for legacy fonts + names.AddString("be:f:be_plain_font", "System Plain"); + names.AddString("be:f:be_bold_font", "System Bold"); + names.AddString("be:f:be_fixed_font", "System Fixed"); + for (i = 0; uinames.GetInfo(B_STRING_TYPE, i, &str, &code) == B_OK;i++) + if (uinames.FindString(str, &value) == B_OK) + names.AddString(str, value); + return B_OK; +} + +status_t UISettingsThemesAddon::ApplyTheme(BMessage &theme, uint32 flags) +{ + BMessage uisettings; + BFont fnt; + status_t err; + + (void)flags; + err = MyMessage(theme, uisettings); + if (err) + return err; + + // hack for legacy fonts + err = uisettings.FindFlat("be:f:be_plain_font", &fnt); + uisettings.RemoveName("be:f:be_plain_font"); + if (err == B_OK) + BFont::SetStandardFont(B_PLAIN_FONT, &fnt); + + err = uisettings.FindFlat("be:f:be_bold_font", &fnt); + uisettings.RemoveName("be:f:be_bold_font"); + if (err == B_OK) + BFont::SetStandardFont(B_BOLD_FONT, &fnt); + + err = uisettings.FindFlat("be:f:be_fixed_font", &fnt); + uisettings.RemoveName("be:f:be_fixed_font"); + if (err == B_OK) + BFont::SetStandardFont(B_FIXED_FONT, &fnt); + + + update_ui_settings(uisettings); + + + return B_OK; +} + +status_t UISettingsThemesAddon::MakeTheme(BMessage &theme, uint32 flags) +{ + BMessage uisettings; + BMessage names; + BFont fnt; + status_t err; + + (void)flags; + err = MyMessage(theme, uisettings); + if (err) + uisettings.MakeEmpty(); + + err = get_ui_settings(&uisettings, &names); + if (err) + return err; + + // hack for legacy fonts + err = BFont::GetStandardFont(B_PLAIN_FONT, &fnt); + uisettings.AddFlat("be:f:be_plain_font", &fnt); + err = BFont::GetStandardFont(B_BOLD_FONT, &fnt); + uisettings.AddFlat("be:f:be_bold_font", &fnt); + err = BFont::GetStandardFont(B_FIXED_FONT, &fnt); + uisettings.AddFlat("be:f:be_fixed_font", &fnt); + + err = SetMyMessage(theme, uisettings); + return err; +} + +status_t UISettingsThemesAddon::ApplyDefaultTheme(uint32 flags) +{ + BMessage theme; + BMessage uisettings; + BFont fnt; + status_t err; + + err = get_default_settings(&uisettings); + if (err) + return err; + + // hack for legacy fonts + err = BFont::GetStandardFont((font_which)(B_PLAIN_FONT-100), &fnt); + uisettings.AddFlat("be:f:be_plain_font", &fnt); + err = BFont::GetStandardFont((font_which)(B_BOLD_FONT-100), &fnt); + uisettings.AddFlat("be:f:be_bold_font", &fnt); + err = BFont::GetStandardFont((font_which)(B_FIXED_FONT-100), &fnt); + uisettings.AddFlat("be:f:be_fixed_font", &fnt); + + theme.AddMessage(A_MSGNAME, &uisettings); + return ApplyTheme(theme, flags); +} + + +ThemesAddon *instanciate_themes_addon() +{ + return (ThemesAddon *) new UISettingsThemesAddon; +} + +#endif /* B_BEOS_VERSION_DANO */ \ No newline at end of file diff --git a/3rdparty/mmu_man/themes/addons/HaikuWindowDecorAddon.cpp b/3rdparty/mmu_man/themes/addons/HaikuWindowDecorAddon.cpp new file mode 100644 index 0000000000..e8928509c6 --- /dev/null +++ b/3rdparty/mmu_man/themes/addons/HaikuWindowDecorAddon.cpp @@ -0,0 +1,163 @@ +/* + * window_decor ThemesAddon class + */ + +#include +//#ifdef B_BEOS_VERSION_DANO +#if 0 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "ThemesAddon.h" +#include "UITheme.h" + +#ifdef SINGLE_BINARY +#define instanciate_themes_addon instanciate_themes_addon_window_decor +#endif + +#define A_NAME "Window Decor" +#define A_MSGNAME Z_THEME_WINDOW_DECORATIONS +#define A_DESCRIPTION "Window decorations and scrollbars" + +class DecorThemesAddon : public ThemesAddon { +public: + DecorThemesAddon(); + ~DecorThemesAddon(); + +const char *Description(); + +status_t RunPreferencesPanel(); + +status_t AddNames(BMessage &names); + +status_t ApplyTheme(BMessage &theme, uint32 flags=0L); +status_t MakeTheme(BMessage &theme, uint32 flags=0L); + +status_t ApplyDefaultTheme(uint32 flags=0L); +}; + +DecorThemesAddon::DecorThemesAddon() + : ThemesAddon(A_NAME, A_MSGNAME) +{ +} + +DecorThemesAddon::~DecorThemesAddon() +{ +} + +const char *DecorThemesAddon::Description() +{ + return A_DESCRIPTION; +} + +status_t DecorThemesAddon::RunPreferencesPanel() +{ + status_t err; + entry_ref ref; + BEntry ent; + err = ent.SetTo("/system/add-ons/Preferences/Appearance"); + if (!err) { + err = ent.GetRef(&ref); + if (!err) { + err = be_roster->Launch(&ref); + if (err) { + BMessage msg(B_REFS_RECEIVED); + msg.AddRef("refs", &ref); + be_app_messenger.SendMessage(&msg); + } + } + } + return err; +} + +status_t DecorThemesAddon::AddNames(BMessage &names) +{ + names.AddString(Z_THEME_WINDOW_DECORATIONS, "Window decorations and scrollbars"); + names.AddString("window:decor", "Window decor"); + names.AddString("window:decor_globals", "Window decor parameters"); + return B_OK; +} + +status_t DecorThemesAddon::ApplyTheme(BMessage &theme, uint32 flags) +{ + BMessage window_decor; + BMessage globals; + BString decorName; + status_t err; + + (void)flags; + err = MyMessage(theme, window_decor); + if (err) + return err; + +#ifdef B_BEOS_VERSION_DANO + if (window_decor.FindString("window:decor", &decorName) == B_OK) + set_window_decor(decorName.String(), + (window_decor.FindMessage("window:decor_globals", &globals) == B_OK)?&globals:NULL); +#else +extern void __set_window_decor(int32 theme); + int32 decorNr = 0; + if (window_decor.FindInt32("window:R5:decor", &decorNr) == B_OK) + __set_window_decor(decorNr); +#endif + // XXX: add colors à la WindowShade ? + + return B_OK; +} + +status_t DecorThemesAddon::MakeTheme(BMessage &theme, uint32 flags) +{ + BMessage window_decor; + BMessage globals; + BString decorName; + status_t err; + + (void)flags; + err = MyMessage(theme, window_decor); + if (err) + window_decor.MakeEmpty(); + +#ifdef B_BEOS_VERSION_DANO + err = get_window_decor(&decorName, &globals); + if (err == B_OK) { + window_decor.AddString("window:decor", decorName.String()); + window_decor.AddMessage("window:decor_globals", &globals); + } +#else + window_decor.AddInt32("window:R5:decor", 0); +#endif + + err = SetMyMessage(theme, window_decor); + return err; +} + +status_t DecorThemesAddon::ApplyDefaultTheme(uint32 flags) +{ + BMessage theme; + BMessage window_decor; + window_decor.AddString("window:decor", "R5"); + window_decor.AddInt32("window:R5:decor", 0L); + theme.AddMessage(A_MSGNAME, &window_decor); + return ApplyTheme(theme, flags); +} + + +ThemesAddon *instanciate_themes_addon() +{ + return (ThemesAddon *) new DecorThemesAddon; +} + +#endif /* B_BEOS_VERSION_DANO */