void AppearancePrefView::_SetCurrentColorSchema(BMenuField* field) { PrefHandler* pref = PrefHandler::Default(); gCustomSchema.text_fore_color = pref->getRGB(PREF_TEXT_FORE_COLOR); gCustomSchema.text_back_color = pref->getRGB(PREF_TEXT_BACK_COLOR); gCustomSchema.select_fore_color = pref->getRGB(PREF_SELECT_FORE_COLOR); gCustomSchema.select_back_color = pref->getRGB(PREF_SELECT_BACK_COLOR); const char* currentSchemaName = NULL; color_schema** schemas = const_cast<color_schema**>(gPredefinedSchemas); while (*schemas) { if (gCustomSchema == **schemas) { currentSchemaName = (*schemas)->name; break; } schemas++; } for (int32 i = 0; i < fColorSchemaField->Menu()->CountItems(); i++) { BMenuItem* item = fColorSchemaField->Menu()->ItemAt(i); if (!strcmp(item->Label(), currentSchemaName)) { item->SetMarked(true); break; } } }
void AppearancePrefView::_SetCurrentColorScheme() { PrefHandler* pref = PrefHandler::Default(); gCustomColorScheme.text_fore_color = pref->getRGB(PREF_TEXT_FORE_COLOR); gCustomColorScheme.text_back_color = pref->getRGB(PREF_TEXT_BACK_COLOR); gCustomColorScheme.select_fore_color = pref->getRGB(PREF_SELECT_FORE_COLOR); gCustomColorScheme.select_back_color = pref->getRGB(PREF_SELECT_BACK_COLOR); gCustomColorScheme.cursor_fore_color = pref->getRGB(PREF_CURSOR_FORE_COLOR); gCustomColorScheme.cursor_back_color = pref->getRGB(PREF_CURSOR_BACK_COLOR); const char* currentSchemeName = NULL; for (const color_scheme** schemes = gPredefinedColorSchemes; *schemes != NULL; schemes++) { if (gCustomColorScheme == **schemes) { currentSchemeName = (*schemes)->name; break; } } for (int32 i = 0; i < fColorSchemeField->Menu()->CountItems(); i++) { BMenuItem* item = fColorSchemeField->Menu()->ItemAt(i); if (strcmp(item->Label(), currentSchemeName) == 0) { item->SetMarked(true); break; } } }
void AppearancePrefView::_ChangeColorSchema(color_schema* schema) { PrefHandler* pref = PrefHandler::Default(); pref->setRGB(PREF_TEXT_FORE_COLOR, schema->text_fore_color); pref->setRGB(PREF_TEXT_BACK_COLOR, schema->text_back_color); pref->setRGB(PREF_SELECT_FORE_COLOR, schema->select_fore_color); pref->setRGB(PREF_SELECT_BACK_COLOR, schema->select_back_color); }
void TermApp::_InitDefaultPalette() { // 0 - 15 are system ANSI colors const char * keys[kANSIColorCount] = { PREF_ANSI_BLACK_COLOR, PREF_ANSI_RED_COLOR, PREF_ANSI_GREEN_COLOR, PREF_ANSI_YELLOW_COLOR, PREF_ANSI_BLUE_COLOR, PREF_ANSI_MAGENTA_COLOR, PREF_ANSI_CYAN_COLOR, PREF_ANSI_WHITE_COLOR, PREF_ANSI_BLACK_HCOLOR, PREF_ANSI_RED_HCOLOR, PREF_ANSI_GREEN_HCOLOR, PREF_ANSI_YELLOW_HCOLOR, PREF_ANSI_BLUE_HCOLOR, PREF_ANSI_MAGENTA_HCOLOR, PREF_ANSI_CYAN_HCOLOR, PREF_ANSI_WHITE_HCOLOR }; rgb_color* color = fDefaultPalette; PrefHandler* handler = PrefHandler::Default(); for (uint i = 0; i < kANSIColorCount; i++) *color++ = handler->getRGB(keys[i]); // 16 - 231 are 6x6x6 color "cubes" in xterm color model for (uint red = 0; red < 256; red += (red == 0) ? 95 : 40) for (uint green = 0; green < 256; green += (green == 0) ? 95 : 40) for (uint blue = 0; blue < 256; blue += (blue == 0) ? 95 : 40) (*color++).set_to(red, green, blue); // 232 - 255 are grayscale ramp in xterm color model for (uint gray = 8; gray < 240; gray += 10) (*color++).set_to(gray, gray, gray); }
void TermWindow::_SetTermColors(TermViewContainerView* containerView) { PrefHandler* handler = PrefHandler::Default(); rgb_color background = handler->getRGB(PREF_TEXT_BACK_COLOR); containerView->SetViewColor(background); TermView *termView = containerView->GetTermView(); termView->SetTextColor(handler->getRGB(PREF_TEXT_FORE_COLOR), background); termView->SetCursorColor(handler->getRGB(PREF_CURSOR_FORE_COLOR), handler->getRGB(PREF_CURSOR_BACK_COLOR)); termView->SetSelectColor(handler->getRGB(PREF_SELECT_FORE_COLOR), handler->getRGB(PREF_SELECT_BACK_COLOR)); }
void AppearancePrefView::Revert() { PrefHandler* pref = PrefHandler::Default(); fTabTitle->SetText(pref->getString(PREF_TAB_TITLE)); fWindowTitle->SetText(pref->getString(PREF_WINDOW_TITLE)); fWarnOnExit->SetValue(pref->getBool( PREF_WARN_ON_EXIT)); fColorSchemeField->Menu()->ItemAt(0)->SetMarked(true); fColorControl->SetValue(pref-> getRGB(PREF_TEXT_FORE_COLOR)); const char* family = pref->getString(PREF_HALF_FONT_FAMILY); const char* style = pref->getString(PREF_HALF_FONT_STYLE); const char* size = pref->getString(PREF_HALF_FONT_SIZE); _MarkSelectedFont(family, style, size); }
void AppearancePrefView::MessageReceived(BMessage* msg) { bool modified = false; switch (msg->what) { case MSG_HALF_FONT_CHANGED: { const char* family = NULL; const char* style = NULL; msg->FindString("font_family", &family); msg->FindString("font_style", &style); PrefHandler* pref = PrefHandler::Default(); const char* currentFamily = pref->getString(PREF_HALF_FONT_FAMILY); const char* currentStyle = pref->getString(PREF_HALF_FONT_STYLE); if (currentFamily == NULL || strcmp(currentFamily, family) || currentStyle == NULL || strcmp(currentStyle, style)) { pref->setString(PREF_HALF_FONT_FAMILY, family); pref->setString(PREF_HALF_FONT_STYLE, style); modified = true; } break; } case MSG_HALF_SIZE_CHANGED: if (strcmp(PrefHandler::Default()->getString(PREF_HALF_FONT_SIZE), fFontSize->Menu()->FindMarked()->Label())) { PrefHandler::Default()->setString(PREF_HALF_FONT_SIZE, fFontSize->Menu()->FindMarked()->Label()); modified = true; } break; case MSG_COLOR_CHANGED: { rgb_color oldColor = PrefHandler::Default()->getRGB( fColorField->Menu()->FindMarked()->Label()); if (oldColor != fColorControl->ValueAsColor()) { PrefHandler::Default()->setRGB( fColorField->Menu()->FindMarked()->Label(), fColorControl->ValueAsColor()); modified = true; } } break; case MSG_COLOR_SCHEMA_CHANGED: { color_schema* newSchema = NULL; if (msg->FindPointer("color_schema", (void**)&newSchema) == B_OK) { if (newSchema == &gCustomSchema) _EnableCustomColors(true); else _EnableCustomColors(false); _ChangeColorSchema(newSchema); modified = true; } break; } case MSG_COLOR_FIELD_CHANGED: fColorControl->SetValue(PrefHandler::Default()->getRGB( fColorField->Menu()->FindMarked()->Label())); break; case MSG_WARN_ON_EXIT_CHANGED: if (PrefHandler::Default()->getBool(PREF_WARN_ON_EXIT) != fWarnOnExit->Value()) { PrefHandler::Default()->setBool(PREF_WARN_ON_EXIT, fWarnOnExit->Value()); modified = true; } break; case MSG_TAB_TITLE_SETTING_CHANGED: { BString oldValue(PrefHandler::Default()->getString(PREF_TAB_TITLE)); if (oldValue != fTabTitle->Text()) { PrefHandler::Default()->setString(PREF_TAB_TITLE, fTabTitle->Text()); modified = true; } break; } case MSG_WINDOW_TITLE_SETTING_CHANGED: { BString oldValue(PrefHandler::Default()->getString( PREF_WINDOW_TITLE)); if (oldValue != fWindowTitle->Text()) { PrefHandler::Default()->setString(PREF_WINDOW_TITLE, fWindowTitle->Text()); modified = true; } break; } default: BView::MessageReceived(msg); return; } if (modified) { fTerminalMessenger.SendMessage(msg); BMessenger messenger(this); messenger.SendMessage(MSG_PREF_MODIFIED); } }
void AppearancePrefView::MessageReceived(BMessage* msg) { bool modified = false; switch (msg->what) { case MSG_HALF_FONT_CHANGED: { const char* family = NULL; const char* style = NULL; const char* size = NULL; if (msg->FindString("font_family", &family) != B_OK || msg->FindString("font_style", &style) != B_OK || msg->FindString("font_size", &size) != B_OK) { break; } PrefHandler* pref = PrefHandler::Default(); const char* currentFamily = pref->getString(PREF_HALF_FONT_FAMILY); const char* currentStyle = pref->getString(PREF_HALF_FONT_STYLE); const char* currentSize = pref->getString(PREF_HALF_FONT_SIZE); if (currentFamily == NULL || strcmp(currentFamily, family) != 0 || currentStyle == NULL || strcmp(currentStyle, style) != 0 || currentSize == NULL || strcmp(currentSize, size) != 0) { pref->setString(PREF_HALF_FONT_FAMILY, family); pref->setString(PREF_HALF_FONT_STYLE, style); pref->setString(PREF_HALF_FONT_SIZE, size); _MarkSelectedFont(family, style, size); modified = true; } break; } case MSG_COLOR_CHANGED: { const BMessage* itemMessage = fColorField->Menu()->FindMarked()->Message(); const char* label = NULL; if (itemMessage->FindString("label", &label) != B_OK) break; rgb_color oldColor = PrefHandler::Default()->getRGB(label); if (oldColor != fColorControl->ValueAsColor()) { BMenuItem* item = fColorSchemeField->Menu()->FindMarked(); if (strcmp(item->Label(), gCustomColorScheme.name) != 0) { item->SetMarked(false); item = fColorSchemeField->Menu()->FindItem( gCustomColorScheme.name); if (item) item->SetMarked(true); } PrefHandler::Default()->setRGB(label, fColorControl->ValueAsColor()); modified = true; } break; } case MSG_COLOR_SCHEME_CHANGED: { color_scheme* newScheme = NULL; if (msg->FindPointer("color_scheme", (void**)&newScheme) == B_OK) { _ChangeColorScheme(newScheme); modified = true; } break; } case MSG_COLOR_FIELD_CHANGED: { const char* label = NULL; if (msg->FindString("label", &label) == B_OK) fColorControl->SetValue(PrefHandler::Default()->getRGB(label)); break; } case MSG_BLINK_CURSOR_CHANGED: if (PrefHandler::Default()->getBool(PREF_BLINK_CURSOR) != fBlinkCursor->Value()) { PrefHandler::Default()->setBool(PREF_BLINK_CURSOR, fBlinkCursor->Value()); modified = true; } break; case MSG_WARN_ON_EXIT_CHANGED: if (PrefHandler::Default()->getBool(PREF_WARN_ON_EXIT) != fWarnOnExit->Value()) { PrefHandler::Default()->setBool(PREF_WARN_ON_EXIT, fWarnOnExit->Value()); modified = true; } break; case MSG_TAB_TITLE_SETTING_CHANGED: { BString oldValue(PrefHandler::Default()->getString(PREF_TAB_TITLE)); if (oldValue != fTabTitle->Text()) { PrefHandler::Default()->setString(PREF_TAB_TITLE, fTabTitle->Text()); modified = true; } break; } case MSG_WINDOW_TITLE_SETTING_CHANGED: { BString oldValue(PrefHandler::Default()->getString( PREF_WINDOW_TITLE)); if (oldValue != fWindowTitle->Text()) { PrefHandler::Default()->setString(PREF_WINDOW_TITLE, fWindowTitle->Text()); modified = true; } break; } default: BView::MessageReceived(msg); return; } if (modified) { fTerminalMessenger.SendMessage(msg); BMessenger messenger(this); messenger.SendMessage(MSG_PREF_MODIFIED); } }
void AppearancePrefView::Revert() { PrefHandler* pref = PrefHandler::Default(); fTabTitle->SetText(pref->getString(PREF_TAB_TITLE)); fWindowTitle->SetText(pref->getString(PREF_WINDOW_TITLE)); fBlinkCursor->SetValue(pref->getBool(PREF_BLINK_CURSOR)); fBrightInsteadOfBold->SetValue(pref->getBool(PREF_BRIGHT_INSTEAD_OF_BOLD)); fWarnOnExit->SetValue(pref->getBool(PREF_WARN_ON_EXIT)); _SetCurrentColorScheme(); _SetEncoding(pref->getString(PREF_TEXT_ENCODING)); _SetWindowSize(pref->getInt32(PREF_ROWS), pref->getInt32(PREF_COLS)); fColorControl->SetValue(pref->getRGB(PREF_TEXT_FORE_COLOR)); const char* family = pref->getString(PREF_HALF_FONT_FAMILY); const char* style = pref->getString(PREF_HALF_FONT_STYLE); const char* size = pref->getString(PREF_HALF_FONT_SIZE); _MarkSelectedFont(family, style, size); }