status_t PTextView::SetProperty(const char *name, PValue *value, const int32 &index) { if (!name || !value) return B_ERROR; BString str(name); PProperty *prop = FindProperty(name,index); if (!prop) return B_NAME_NOT_FOUND; if (FlagsForProperty(prop) & PROPERTY_READ_ONLY) return B_READ_ONLY; BTextView *backend = (BTextView*)fView; BoolValue boolval; CharValue charval; ColorValue colorval; FloatValue floatval; IntValue intval; PointValue pointval; RectValue rectval; StringValue stringval; status_t status = prop->SetValue(value); if (status != B_OK) return status; if (backend->Window()) backend->Window()->Lock(); else if (str.ICompare("Selectable") == 0) { prop->GetValue(&boolval); backend->MakeSelectable(*boolval.value); } else if (str.ICompare("CurrentLine") == 0) { prop->GetValue(&intval); backend->GoToLine(*intval.value); } else if (str.ICompare("TabWidth") == 0) { prop->GetValue(&floatval); backend->SetTabWidth(*floatval.value); } else if (str.ICompare("TextRect") == 0) { prop->GetValue(&rectval); backend->SetTextRect(*rectval.value); } else if (str.ICompare("MaxBytes") == 0) { prop->GetValue(&intval); backend->SetMaxBytes(*intval.value); } else if (str.ICompare("UseWordWrap") == 0) { prop->GetValue(&boolval); backend->SetWordWrap(*boolval.value); } else if (str.ICompare("HideTyping") == 0) { prop->GetValue(&boolval); backend->HideTyping(*boolval.value); } else if (str.ICompare("Editable") == 0) { prop->GetValue(&boolval); backend->MakeEditable(*boolval.value); } else if (str.ICompare("ColorSpace") == 0) { prop->GetValue(&intval); backend->SetColorSpace((color_space)*intval.value); } else if (str.ICompare("Text") == 0) { prop->GetValue(&stringval); backend->SetText(*stringval.value); } else if (str.ICompare("Resizable") == 0) { prop->GetValue(&boolval); backend->MakeResizable(*boolval.value); } else if (str.ICompare("Alignment") == 0) { prop->GetValue(&intval); backend->SetAlignment((alignment)*intval.value); } else if (str.ICompare("Undoable") == 0) { prop->GetValue(&boolval); backend->SetDoesUndo(*boolval.value); } else if (str.ICompare("AutoIndent") == 0) { prop->GetValue(&boolval); backend->SetAutoindent(*boolval.value); } else if (str.ICompare("Stylable") == 0) { prop->GetValue(&boolval); backend->SetStylable(*boolval.value); } else { if (backend->Window()) backend->Window()->Unlock(); return PView::SetProperty(name, value, index); } if (backend->Window()) backend->Window()->Unlock(); return prop->GetValue(value); }