LoginLink(wxWindow* parent, wxString text, uint32 style) : StripMenuButton(parent, text) { wxColor linkColor = (wxColour)GetThemeManager().getColor("formlogin", "link-fg"); wxColor hoverColor = (wxColour)GetThemeManager().getColor("formlogin", "link-hov-fg"); Managers::LoadTheme(this, "formlogin"); SetWindowStyle(style); setColors(linkColor, hoverColor); showFocusBox(hoverColor); init(nullptr); Bind(wxEVT_CHAR, &LoginLink::onChar, this); }
status_t ThemeInterfaceView::DeleteSelected() { status_t err; ThemeManager* tman = GetThemeManager(); int32 id; ThemeItem *item; BMessage theme; // find selected theme id = fThemeList->CurrentSelection(0); if (id < 0) return B_OK; item = dynamic_cast<ThemeItem *>(fThemeList->ItemAt(id)); if (!item) return AError(__FUNCTION__, ENOENT); if (item->IsReadOnly()) return AError(__FUNCTION__, B_READ_ONLY_DEVICE); id = item->ThemeId(); if (id < 0) return AError(__FUNCTION__, ENOENT); // then apply err = tman->DeleteTheme(id); if (err) return AError(__FUNCTION__, err); fThemeList->RemoveItem(item); delete item; //err = tman->ApplyTheme(theme); return err; }
status_t ThemeInterfaceView::AddScreenshot() { status_t err; ThemeManager* tman = GetThemeManager(); int32 id; ThemeItem *item; BMessage theme; // find selected theme id = fThemeList->CurrentSelection(0); if (id < 0) return B_OK; item = dynamic_cast<ThemeItem *>(fThemeList->ItemAt(id)); if (!item) return AError(__FUNCTION__, ENOENT); id = item->ThemeId(); if (id < 0) return AError(__FUNCTION__, ENOENT); // then apply err = tman->MakeThemeScreenShot(id); if (err) return AError(__FUNCTION__, err); err = tman->SaveTheme(id); if (err) return AError(__FUNCTION__, err); ThemeSelected(); // force reload of description for selected theme. return err; }
status_t ThemeInterfaceView::CreateNew(const char *name) { status_t err; ThemeManager* tman = GetThemeManager(); int32 id; ThemeItem *ti; BString n(name); id = tman->MakeTheme(); if (id < 0) return B_ERROR; err = tman->SetThemeName(id, name); if (err) return err; err = tman->ThemeName(id, n); if (err) return err; err = tman->SaveTheme(id, true); if (err) return err; ti = new ThemeItem(id, n.String(), false); fThemeList->AddItem(ti); fThemeList->DeselectAll(); fThemeList->Select(fThemeList->CountItems() - 1); fThemeList->ScrollToSelection(); return B_OK; }
status_t ThemeInterfaceView::ApplyDefaults() { status_t err = B_OK; ThemeManager* tman = GetThemeManager(); SetIsRevertable(); err = tman->ApplyDefaultTheme(); return err; }
SearchControl::SearchControl(wxWindow* parent) : gcPanel(parent) { m_szDefaultText = Managers::GetString(L"#SB_DEFAULT"); m_butFullSearch = new gcImageButton(parent, wxID_ANY, wxDefaultPosition, wxSize( 19,19 ), 0 ); m_butFullSearch->setDefaultImage(("#search_button")); m_butFullSearch->setHoverImage(("#search_button_hover")); m_butFullSearch->SetToolTip(Managers::GetString(L"#SB_FULL_SEARCH")); m_butFullSearch->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &SearchControl::onButtonClick, this); wxPanel* bg = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 17)); bg->SetBackgroundColour(wxColor(GetGCThemeManager()->getColor("searchBox", "sb-bg"))); m_tbSearchBox = new wxTextCtrl( bg, wxID_ANY, m_szDefaultText, wxDefaultPosition, wxSize(150, 15), 0|wxBORDER_NONE|wxWANTS_CHARS|wxTE_PROCESS_ENTER ); m_tbSearchBox->SetForegroundColour(wxColor(GetGCThemeManager()->getColor("searchBox", "sb-fg"))); m_tbSearchBox->SetBackgroundColour(wxColor(GetGCThemeManager()->getColor("searchBox", "sb-bg"))); m_tbSearchBox->Bind(wxEVT_KILL_FOCUS, &SearchControl::onBlur, this); m_tbSearchBox->Bind(wxEVT_SET_FOCUS, &SearchControl::onFocus, this); m_tbSearchBox->Bind(wxEVT_COMMAND_TEXT_UPDATED, &SearchControl::onSearchChanged, this); m_tbSearchBox->Bind(wxEVT_COMMAND_TEXT_ENTER, &SearchControl::onDoSearch, this); m_tbSearchBox->Bind(wxEVT_KEY_DOWN, &SearchControl::onKeyDown, this); wxFlexGridSizer* fgSizer2; fgSizer2 = new wxFlexGridSizer( 2, 1, 0, 0 ); fgSizer2->SetFlexibleDirection( wxBOTH ); fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); fgSizer2->Add( 0, 2 ); fgSizer2->Add( m_tbSearchBox, 0, wxLEFT|wxRIGHT, 2 ); bg->SetSizer( fgSizer2 ); bg->Layout(); wxFlexGridSizer* fgSizer1; fgSizer1 = new wxFlexGridSizer( 2, 2, 0, 0 ); fgSizer1->SetFlexibleDirection( wxBOTH ); fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); fgSizer1->Add(bg, 0, wxALL, 1); this->SetSizer( fgSizer1 ); this->Layout(); Managers::LoadTheme(this, "searchBox"); m_DefaultCol = wxColor(GetThemeManager()->getColor("formlogin", "tb-default-fg")); m_NormalCol = m_tbSearchBox->GetForegroundColour(); m_tbSearchBox->SetForegroundColour(m_DefaultCol); }
status_t ThemeInterfaceView::ThemeSelected() { status_t err; ThemeManager* tman = GetThemeManager(); int32 id; ThemeItem *item; BString desc; BBitmap *sshot = NULL; // find selected theme id = fThemeList->CurrentSelection(0); if (id < 0) { fScreenshotPane->ClearViewBitmap(); fScreenshotPane->Invalidate(fScreenshotPane->Bounds()); while(true == fScreenshotText->IsHidden()) fScreenshotText->Show(); fScreenshotText->SetText(B_TRANSLATE("No theme selected")); return ENOENT; } item = dynamic_cast<ThemeItem *>(fThemeList->ItemAt(id)); if (!item) return ENOENT; id = item->ThemeId(); if (id < 0) return ENOENT; // then apply err = tman->ThemeScreenShot(id, &sshot); if (err) sshot = NULL; if (sshot == NULL) { SetScreenshot(NULL); fprintf(stderr, "ThemeManager: no screenshot; error 0x%08lx\n", err); while(true == fScreenshotText->IsHidden()) fScreenshotText->Show(); fScreenshotText->SetText(B_TRANSLATE("No screenshot")); return err; } SetScreenshot(sshot); while(false == fScreenshotText->IsHidden()) fScreenshotText->Hide(); //err = tman->ApplyTheme(theme); return err; }
status_t ThemeInterfaceView::Revert() { status_t err = B_OK; ThemeManager* tman = GetThemeManager(); if (tman->CanRevert()) err = tman->RestoreCurrent(); if (err) return err; return B_OK; }
void LoginForm::onTextChange(wxCommandEvent& event) { gcWString defaultText; gcTextCtrl* textCtrl; if (event.GetId() == m_tbUsername->GetId()) { textCtrl = m_tbUsername; defaultText = Managers::GetString(L"#LF_USER"); if (gc_saveusername.getBool()) { const char* str = gc_lastusername.getString(); const char* avatar = gc_lastavatar.getString(); if (gcString(str) != gcString(m_tbUsername->GetValue().c_str().AsWChar())) { m_imgAvatar->setImage("#login_default_avatar"); } else { if (avatar && UTIL::FS::isValidFile(UTIL::FS::PathWithFile(avatar))) m_imgAvatar->setImage(avatar); } } } else if (event.GetId() == m_tbPasswordDisp->GetId()) { textCtrl = m_tbPasswordDisp; defaultText = Managers::GetString(L"#LF_PASS"); } else { return; } const char* colorName = "tb-fg"; if (textCtrl->GetValue() == defaultText) colorName = "tb-default-fg"; wxColor color = wxColor(GetThemeManager().getColor("formlogin", colorName)); textCtrl->SetForegroundColour(color); textCtrl->Refresh(); }
void ThemeInterfaceView::PopulateAddonList() { int32 i, count; ViewItem *vi; ThemeManager* tman = GetThemeManager(); fAddonList->MakeEmpty(); // global item vi = new ThemeAddonItem(BRect(0,0,200,52), this, -1); fAddonList->AddItem(vi); count = tman->CountAddons(); for (i = 0; i < count; i++) { vi = new ThemeAddonItem(BRect(0,0,200,52), this, i); fAddonList->AddItem(vi); } }
status_t ThemeInterfaceView::ApplySelected() { status_t err; ThemeManager* tman = GetThemeManager(); int32 id; ThemeItem *item; // find selected theme id = fThemeList->CurrentSelection(0); if (id < 0) return ENOENT; item = dynamic_cast<ThemeItem *>(fThemeList->ItemAt(id)); if (!item) return ENOENT; id = item->ThemeId(); if (id < 0) return ENOENT; SetIsRevertable(); err = tman->ApplyTheme(id); return err; }
void gcThemeManager::loadTheme(const char* name) { GetThemeManager().loadTheme(name); }
void gcThemeManager::loadFromFolder(const char* folder) { GetThemeManager().loadFromFolder(folder); }
SpriteRectI* gcThemeManager::getSpriteRect(const char* id, const char* rectId) { return GetThemeManager().getSpriteRect(id, rectId); }
Color gcThemeManager::getColor(const char* name, const char* id) { return GetThemeManager().getColor(name, id); }
const char* gcThemeManager::getImage(const char* id) { return GetThemeManager().getImage(id); }
void ThemeInterfaceView::_ThemeListPopulator() { status_t err; int32 i, count; int32 importer; BString name; ThemeItem *ti; bool isro; BStringItem *si; LockLooper(); fThemeList->MakeEmpty(); UnlockLooper(); ThemeManager* tman = GetThemeManager(); tman->LoadThemes(); count = tman->CountThemes(); LockLooper(); si = new BStringItem("(System themes)"); si->SetEnabled(false); fThemeList->AddItem(si); si = NULL; // first non-readonly item will set it again // native themes for (i = 0; i < count; i++) { err = tman->ThemeName(i, name); isro = tman->ThemeIsReadOnly(i); if (err) continue; if (!isro && si == NULL) { si = new BStringItem("(User themes)"); si->SetEnabled(false); fThemeList->AddItem(si); } ti = new ThemeItem(i, name.String(), isro); fThemeList->AddItem(ti); } UnlockLooper(); // for each importer for (importer = 0; importer < tman->CountThemeImporters(); importer++) { err = tman->ImportThemesFor(importer); if (err < 0) continue; PRINT(("Imports for %s: %d\n", tman->ThemeImporterAt(importer), (tman->CountThemes() - count))); if (tman->CountThemes() == count) continue; // nothing found // separator item name = "Imported ("; name << tman->ThemeImporterAt(importer) << ")"; si = new BStringItem(name.String()); si->SetEnabled(false); LockLooper(); fThemeList->AddItem(si); UnlockLooper(); // add new themes count = tman->CountThemes(); // we reuse i from where it was left for (; i < count; i++) { err = tman->ThemeName(i, name); isro = true;// importers can't save themes back if (err) continue; ti = new ThemeItem(i, name.String(), isro); LockLooper(); fThemeList->AddItem(ti); UnlockLooper(); // rest a bit snooze(1000); } } // enable controls again BControl *c; LockLooper(); for (i = 0; ChildAt(i); i++) { c = dynamic_cast<BControl *>(ChildAt(i)); if (c) c->SetEnabled(true); } UnlockLooper(); }
void gcThemeManager::getThemeStubList(std::vector<ThemeStubI*> &vList) { GetThemeManager().getThemeStubList(vList); }
const char* gcThemeManager::getThemeFolder() { return GetThemeManager().getThemeFolder(); }
void ThemeInterfaceView::MessageReceived(BMessage *_msg) { ThemeManager *tman; int32 value; int32 id; _msg->PrintToStream(); switch(_msg->what) { case B_REFS_RECEIVED: _msg->PrintToStream(); break; case kMakeScreenshot: AddScreenshot(); break; case kThemeSelected: ThemeSelected(); break; case kApplyThemeBtn: ApplySelected(); break; case kCreateThemeBtn: if (fNameText->IsHidden()) { float w = fNameText->Bounds().Width() + 10.0; fNameText->Show(); fNameText->MakeFocus(); fNewBtn->MoveBy(w, 0); fSaveBtn->MoveBy(w, 0); fDeleteBtn->MoveBy(w, 0); break; } else { float w = fNameText->Bounds().Width() + 10.0; fNameText->Hide(); fNameText->MakeFocus(false); fNewBtn->MoveBy(-w, 0); fSaveBtn->MoveBy(-w, 0); fDeleteBtn->MoveBy(-w, 0); } /* FALLTHROUGH */ case kReallyCreateTheme: CreateNew(fNameText->Text()); break; case kSaveThemeBtn: SaveSelected(); break; case kDeleteThemeBtn: DeleteSelected(); break; #if 0 case kColorsChanged: case kGeneralChanged: case kFontsChanged: { BMessenger msgr (Parent()); msgr.SendMessage(B_PREF_APP_ENABLE_REVERT); BMessage changes; if (_msg->FindMessage("changes", &changes) == B_OK) { update_ui_settings(changes); } break; } #endif case B_PREF_APP_SET_DEFAULTS: { ApplyDefaults(); break; } case B_PREF_APP_REVERT: { Revert(); break; } case B_PREF_APP_ADDON_REF: { break; } case kThemeChanged: { /* BMessage data; BMessage names; get_ui_settings(&data, &names); fColorSelector->Update(data); fFontSelector->Refresh(); fGeneralSelector->Refresh(data); */ break; } case CB_APPLY: tman = GetThemeManager(); _msg->PrintToStream(); if (_msg->FindInt32("be:value", &value) < B_OK) value = false; if (_msg->FindInt32("addon", &id) < B_OK) break; if (id > -1) { tman->SetAddonFlags(id, (tman->AddonFlags(id) & ~Z_THEME_ADDON_DO_SET_ALL) | (value?Z_THEME_ADDON_DO_SET_ALL:0)); } else { // apply globally int32 i; for (i = fAddonList->CountItems() - 1; i > 0; i--) { ThemeAddonItem *item = static_cast<ThemeAddonItem *>(fAddonList->ItemAt(i)); item->ApplyBox()->SetValue(value); tman->SetAddonFlags(item->AddonId(), (tman->AddonFlags(item->AddonId()) & ~Z_THEME_ADDON_DO_SET_ALL) | (value?Z_THEME_ADDON_DO_SET_ALL:0)); } } break; case CB_SAVE: tman = GetThemeManager(); _msg->PrintToStream(); if (_msg->FindInt32("be:value", &value) < B_OK) value = false; if (_msg->FindInt32("addon", &id) < B_OK) break; if (id > -1) { tman->SetAddonFlags(id, (tman->AddonFlags(id) & ~Z_THEME_ADDON_DO_RETRIEVE) | (value?Z_THEME_ADDON_DO_RETRIEVE:0)); } else { // apply globally int32 i; for (i = fAddonList->CountItems() - 1; i > 0; i--) { ThemeAddonItem *item = static_cast<ThemeAddonItem *>(fAddonList->ItemAt(i)); item->SaveBox()->SetValue(value); tman->SetAddonFlags(item->AddonId(), (tman->AddonFlags(item->AddonId()) & ~Z_THEME_ADDON_DO_RETRIEVE) | (value?Z_THEME_ADDON_DO_RETRIEVE:0)); } } break; case BTN_PREFS: tman = GetThemeManager(); if (_msg->FindInt32("addon", &id) < B_OK) break; tman->RunPreferencesPanel(id); break; case kHideSSPulse: break; case kShowSSPulse: break; case skOnlineThemes: { /* ZETA code: be_roster->Launch( "application/x-vnd.Mozilla-Firefox", 1, (char **)&skThemeURL); */ if (!be_roster->IsRunning(kHaikuDepotSig)) { be_roster->Launch(kHaikuDepotSig); snooze(1000000); } BMessenger msgr(kHaikuDepotSig); BMessage message(B_SET_PROPERTY); message.AddString("data", "_theme"); message.AddSpecifier("Value"); message.AddSpecifier("View", "search terms"); message.AddSpecifier("Window", (int32)0); msgr.SendMessage(&message); break; } default: { BView::MessageReceived(_msg); break; } } }