本文整理汇总了C++中BTextView::SetMaxBytes方法的典型用法代码示例。如果您正苦于以下问题:C++ BTextView::SetMaxBytes方法的具体用法?C++ BTextView::SetMaxBytes怎么用?C++ BTextView::SetMaxBytes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BTextView
的用法示例。
在下文中一共展示了BTextView::SetMaxBytes方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BView
AskName::AskName():
BWindow(BRect(100, 100, 500, 200), "Enter your name",
B_TITLED_WINDOW,
B_NOT_RESIZABLE | B_NOT_CLOSABLE | B_NOT_ZOOMABLE
| B_NOT_MINIMIZABLE),
Text(NULL),
text(NULL)
{
BView *back;
BButton * Accept;
BTextView *TV;
BStringView *str;
const char *names[] =
{
"BeOS forever!",
"BShisen Rules!",
"Thanks Sheppy",
"Say NO to drugs!",
"Say NO to piracy!",
"Say YES to BeOS!",
"Just say \"BShisen\"",
"Say YES to BShisen!",
};
back = new BView(Bounds(), NULL, B_FOLLOW_ALL, B_WILL_DRAW);
back->SetViewColor(216, 216, 216);
AddChild(back);
str = new BStringView(BRect(10, 10, 390, 25), "",
"Congratulations! Enter your name for posterity.");
str->SetFont(be_bold_font);
back->AddChild(str);
Accept = new BButton( BRect(10, 60+5, 90, 75+5), "Accept",
"Accept", new BMessage(ACCEPT_BUTTON));
Accept->MakeDefault(true);
back->AddChild(Accept);
Text = new BTextControl(BRect(10, 35, 390, 50), "",
"Your Name", "", NULL);
Text->SetDivider(Text->StringWidth("Your Name "));
TV = Text->TextView();
TV->SetMaxBytes(31);
Text->SetText(REGISTERED ? names[rand() % 8] : "I Want To Register!");
back->AddChild(Text);
Text->MakeFocus(true);
}
示例2:
void
ApplicationTypeWindow::_MakeNumberTextControl(BTextControl* control)
{
// filter out invalid characters that can't be part of a MIME type name
BTextView* textView = control->TextView();
textView->SetMaxBytes(10);
for (int32 i = 0; i < 256; i++) {
if (!isdigit(i))
textView->DisallowChar(i);
}
}
示例3:
/**
* AllowOnlyNumbers()
*
* @param BTextControl, the control we want to only allow numbers
* @param maxNum, the maximun number of characters allowed
* @return void
*/
void
MarginView::_AllowOnlyNumbers(BTextControl *textControl, int32 maxNum)
{
BTextView *tv = textControl->TextView();
for (int32 i = 0; i < 256; i++)
tv->DisallowChar(i);
for (int32 i = '0'; i <= '9'; i++)
tv->AllowChar(i);
tv->AllowChar(B_BACKSPACE);
tv->AllowChar('.');
tv->SetMaxBytes(maxNum);
}
示例4: BMessage
ApplicationTypeWindow::ApplicationTypeWindow(BPoint position,
const BEntry& entry)
:
BWindow(BRect(0.0f, 0.0f, 250.0f, 340.0f).OffsetBySelf(position),
B_TRANSLATE("Application type"), B_TITLED_WINDOW,
B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS |
B_FRAME_EVENTS | B_AUTO_UPDATE_SIZE_LIMITS),
fChangedProperties(0)
{
float padding = be_control_look->DefaultItemSpacing();
BAlignment labelAlignment = be_control_look->DefaultLabelAlignment();
BMenuBar* menuBar = new BMenuBar((char*)NULL);
menuBar->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_TOP));
BMenu* menu = new BMenu(B_TRANSLATE("File"));
fSaveMenuItem = new BMenuItem(B_TRANSLATE("Save"),
new BMessage(kMsgSave), 'S');
fSaveMenuItem->SetEnabled(false);
menu->AddItem(fSaveMenuItem);
BMenuItem* item;
menu->AddItem(item = new BMenuItem(
B_TRANSLATE("Save into resource file" B_UTF8_ELLIPSIS), NULL));
item->SetEnabled(false);
menu->AddSeparatorItem();
menu->AddItem(new BMenuItem(B_TRANSLATE("Close"),
new BMessage(B_QUIT_REQUESTED), 'W', B_COMMAND_KEY));
menuBar->AddItem(menu);
// Signature
fSignatureControl = new BTextControl(B_TRANSLATE("Signature:"), NULL,
new BMessage(kMsgSignatureChanged));
fSignatureControl->SetModificationMessage(
new BMessage(kMsgSignatureChanged));
// filter out invalid characters that can't be part of a MIME type name
BTextView* textView = fSignatureControl->TextView();
textView->SetMaxBytes(B_MIME_TYPE_LENGTH);
const char* disallowedCharacters = "<>@,;:\"()[]?=";
for (int32 i = 0; disallowedCharacters[i]; i++) {
textView->DisallowChar(disallowedCharacters[i]);
}
// "Application Flags" group
BBox* flagsBox = new BBox("flagsBox");
fFlagsCheckBox = new BCheckBox("flags", B_TRANSLATE("Application flags"),
new BMessage(kMsgToggleAppFlags));
fFlagsCheckBox->SetValue(B_CONTROL_ON);
fSingleLaunchButton = new BRadioButton("single",
B_TRANSLATE("Single launch"), new BMessage(kMsgAppFlagsChanged));
fMultipleLaunchButton = new BRadioButton("multiple",
B_TRANSLATE("Multiple launch"), new BMessage(kMsgAppFlagsChanged));
fExclusiveLaunchButton = new BRadioButton("exclusive",
B_TRANSLATE("Exclusive launch"), new BMessage(kMsgAppFlagsChanged));
fArgsOnlyCheckBox = new BCheckBox("args only", B_TRANSLATE("Args only"),
new BMessage(kMsgAppFlagsChanged));
fBackgroundAppCheckBox = new BCheckBox("background",
B_TRANSLATE("Background app"), new BMessage(kMsgAppFlagsChanged));
flagsBox->AddChild(BGridLayoutBuilder()
.Add(fSingleLaunchButton, 0, 0).Add(fArgsOnlyCheckBox, 1, 0)
.Add(fMultipleLaunchButton, 0, 1).Add(fBackgroundAppCheckBox, 1, 1)
.Add(fExclusiveLaunchButton, 0, 2)
.SetInsets(padding, padding, padding, padding));
flagsBox->SetLabel(fFlagsCheckBox);
// "Icon" group
BBox* iconBox = new BBox("IconBox");
iconBox->SetLabel(B_TRANSLATE("Icon"));
fIconView = new IconView("icon");
fIconView->SetModificationMessage(new BMessage(kMsgIconChanged));
iconBox->AddChild(BGroupLayoutBuilder(B_HORIZONTAL)
.Add(fIconView)
.SetInsets(padding, padding, padding, padding));
// "Supported Types" group
BBox* typeBox = new BBox("typesBox");
typeBox->SetLabel(B_TRANSLATE("Supported types"));
fTypeListView = new SupportedTypeListView("Suppported Types",
B_SINGLE_SELECTION_LIST);
fTypeListView->SetSelectionMessage(new BMessage(kMsgTypeSelected));
BScrollView* scrollView = new BScrollView("type scrollview", fTypeListView,
B_FRAME_EVENTS | B_WILL_DRAW, false, true);
fAddTypeButton = new BButton("add type",
B_TRANSLATE("Add" B_UTF8_ELLIPSIS), new BMessage(kMsgAddType));
//.........这里部分代码省略.........
示例5: BMessage
ApplicationTypeWindow::ApplicationTypeWindow(BPoint position, const BEntry& entry)
: BWindow(BRect(0.0f, 0.0f, 250.0f, 340.0f).OffsetBySelf(position),
"Application Type", B_TITLED_WINDOW,
B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS),
fChangedProperties(0)
{
// add the menu
BMenuBar* menuBar = new BMenuBar(BRect(0, 0, 0, 0), NULL);
AddChild(menuBar);
BMenu* menu = new BMenu("File");
fSaveMenuItem = new BMenuItem("Save", new BMessage(kMsgSave), 'S');
fSaveMenuItem->SetEnabled(false);
menu->AddItem(fSaveMenuItem);
BMenuItem* item;
menu->AddItem(item = new BMenuItem("Save into resource file" B_UTF8_ELLIPSIS,
NULL));
item->SetEnabled(false);
menu->AddSeparatorItem();
menu->AddItem(new BMenuItem("Close", new BMessage(B_QUIT_REQUESTED),
'W', B_COMMAND_KEY));
menuBar->AddItem(menu);
// Top view and signature
BRect rect = Bounds();
rect.top = menuBar->Bounds().Height() + 1.0f;
BView* topView = new BView(rect, NULL, B_FOLLOW_ALL, B_WILL_DRAW);
topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
AddChild(topView);
rect = topView->Bounds().InsetByCopy(8.0f, 8.0f);
fSignatureControl = new BTextControl(rect, "signature", "Signature:", NULL,
new BMessage(kMsgSignatureChanged), B_FOLLOW_LEFT_RIGHT);
fSignatureControl->SetModificationMessage(
new BMessage(kMsgSignatureChanged));
fSignatureControl->SetDivider(fSignatureControl->StringWidth(
fSignatureControl->Label()) + 4.0f);
float width, height;
fSignatureControl->GetPreferredSize(&width, &height);
fSignatureControl->ResizeTo(rect.Width(), height);
topView->AddChild(fSignatureControl);
// filter out invalid characters that can't be part of a MIME type name
BTextView* textView = fSignatureControl->TextView();
textView->SetMaxBytes(B_MIME_TYPE_LENGTH);
const char* disallowedCharacters = "<>@,;:\"()[]?=";
for (int32 i = 0; disallowedCharacters[i]; i++) {
textView->DisallowChar(disallowedCharacters[i]);
}
// "Application Flags" group
BFont font(be_bold_font);
font_height fontHeight;
font.GetHeight(&fontHeight);
width = font.StringWidth("Icon") + 16.0f;
if (width < B_LARGE_ICON + 16.0f)
width = B_LARGE_ICON + 16.0f;
rect.top = fSignatureControl->Frame().bottom + 4.0f;
rect.bottom = rect.top + 100.0f;
rect.right -= width + 8.0f;
BBox* box = new BBox(rect, NULL, B_FOLLOW_LEFT_RIGHT);
topView->AddChild(box);
fFlagsCheckBox = new BCheckBox(rect, "flags", "Application flags",
new BMessage(kMsgToggleAppFlags));
fFlagsCheckBox->SetValue(B_CONTROL_ON);
fFlagsCheckBox->ResizeToPreferred();
box->SetLabel(fFlagsCheckBox);
rect.top = fFlagsCheckBox->Bounds().Height() + 4.0f;
fSingleLaunchButton = new BRadioButton(rect, "single", "Single launch",
new BMessage(kMsgAppFlagsChanged));
fSingleLaunchButton->ResizeToPreferred();
box->AddChild(fSingleLaunchButton);
rect.OffsetBy(0.0f, fSingleLaunchButton->Bounds().Height() + 0.0f);
fMultipleLaunchButton = new BRadioButton(rect, "multiple",
"Multiple launch", new BMessage(kMsgAppFlagsChanged));
fMultipleLaunchButton->ResizeToPreferred();
box->AddChild(fMultipleLaunchButton);
rect.OffsetBy(0.0f, fSingleLaunchButton->Bounds().Height() + 0.0f);
fExclusiveLaunchButton = new BRadioButton(rect, "exclusive",
"Exclusive launch", new BMessage(kMsgAppFlagsChanged));
fExclusiveLaunchButton->ResizeToPreferred();
box->AddChild(fExclusiveLaunchButton);
rect.top = fSingleLaunchButton->Frame().top;
rect.left = fExclusiveLaunchButton->Frame().right + 4.0f;
fArgsOnlyCheckBox = new BCheckBox(rect, "args only", "Args only",
new BMessage(kMsgAppFlagsChanged));
fArgsOnlyCheckBox->ResizeToPreferred();
box->AddChild(fArgsOnlyCheckBox);
//.........这里部分代码省略.........
示例6: BMessage
//.........这里部分代码省略.........
box->AddChild(fDisplayAsMenuField);
fEditableCheckBox = new BCheckBox(rect, "editable", "Editable",
new BMessage(kMsgAttributeUpdated), B_FOLLOW_RIGHT);
fEditableCheckBox->SetValue(fAttribute.Editable());
fEditableCheckBox->ResizeToPreferred();
fEditableCheckBox->MoveTo(rect.right - fEditableCheckBox->Bounds().Width(),
rect.top + (fDisplayAsMenuField->Bounds().Height()
- fEditableCheckBox->Bounds().Height()) / 2.0f);
box->AddChild(fEditableCheckBox);
rect.OffsetBy(0.0f, menuField->Bounds().Height() + 4.0f);
rect.bottom = rect.top + fPublicNameControl->Bounds().Height();
fSpecialControl = new BTextControl(rect, "special", "Special:",
display_as_parameter(fAttribute.DisplayAs()), NULL,
B_FOLLOW_LEFT_RIGHT);
fSpecialControl->SetModificationMessage(new BMessage(kMsgAttributeUpdated));
fSpecialControl->SetDivider(labelWidth);
fSpecialControl->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
fSpecialControl->SetEnabled(false);
box->AddChild(fSpecialControl);
char text[64];
snprintf(text, sizeof(text), "%ld", fAttribute.Width());
rect.OffsetBy(0.0f, fSpecialControl->Bounds().Height() + 4.0f);
fWidthControl = new BTextControl(rect, "width", "Width:",
text, NULL, B_FOLLOW_LEFT_RIGHT);
fWidthControl->SetModificationMessage(new BMessage(kMsgAttributeUpdated));
fWidthControl->SetDivider(labelWidth);
fWidthControl->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
// filter out invalid characters that can't be part of a width
textView = fWidthControl->TextView();
for (int32 i = 0; i < 256; i++) {
if (!isdigit(i))
textView->DisallowChar(i);
}
textView->SetMaxBytes(4);
box->AddChild(fWidthControl);
const struct alignment_map {
int32 alignment;
const char* name;
} kAlignmentMap[] = {
{B_ALIGN_LEFT, "Left"},
{B_ALIGN_RIGHT, "Right"},
{B_ALIGN_CENTER, "Center"},
{0, NULL}
};
menu = new BPopUpMenu("alignment");
for (int32 i = 0; kAlignmentMap[i].name != NULL; i++) {
BMessage* message = new BMessage(kMsgAlignmentChosen);
message->AddInt32("alignment", kAlignmentMap[i].alignment);
item = new BMenuItem(kAlignmentMap[i].name, message);
menu->AddItem(item);
if (kAlignmentMap[i].alignment == fAttribute.Alignment())
item->SetMarked(true);
}
rect.OffsetBy(0.0f, menuField->Bounds().Height() + 1.0f);
fAlignmentMenuField = new BMenuField(rect, "alignment",
"Alignment:", menu);
fAlignmentMenuField->SetDivider(labelWidth);
fAlignmentMenuField->SetAlignment(B_ALIGN_RIGHT);
fAlignmentMenuField->ResizeTo(rect.Width(), height);
box->AddChild(fAlignmentMenuField);
box->ResizeBy(0.0f, fAlignmentMenuField->Bounds().Height() * 2.0f
+ fVisibleCheckBox->Bounds().Height());
fAcceptButton = new BButton(rect, "add", item ? "Done" : "Add",
new BMessage(kMsgAccept), B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
fAcceptButton->ResizeToPreferred();
fAcceptButton->MoveTo(Bounds().Width() - 8.0f - fAcceptButton->Bounds().Width(),
Bounds().Height() - 8.0f - fAcceptButton->Bounds().Height());
fAcceptButton->SetEnabled(false);
topView->AddChild(fAcceptButton);
BButton* button = new BButton(rect, "cancel", "Cancel",
new BMessage(B_QUIT_REQUESTED), B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
button->ResizeToPreferred();
button->MoveTo(fAcceptButton->Frame().left - 10.0f - button->Bounds().Width(),
fAcceptButton->Frame().top);
topView->AddChild(button);
ResizeTo(labelWidth * 4.0f + 24.0f, box->Frame().bottom
+ button->Bounds().Height() + 20.0f);
SetSizeLimits(fEditableCheckBox->Bounds().Width() + button->Bounds().Width()
+ fAcceptButton->Bounds().Width() + labelWidth + 24.0f,
32767.0f, Frame().Height(), Frame().Height());
fAcceptButton->MakeDefault(true);
fPublicNameControl->MakeFocus(true);
target->PlaceSubWindow(this);
AddToSubset(target);
}
示例7: str
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);
//.........这里部分代码省略.........
示例8: BMessage
PreferencesWindow::PreferencesWindow(BRect frame)
:
BWindow(frame, B_TRANSLATE("Deskbar preferences"), B_TITLED_WINDOW,
B_NOT_RESIZABLE | B_AUTO_UPDATE_SIZE_LIMITS | B_NOT_ZOOMABLE)
{
// Menu controls
fMenuRecentDocuments = new BCheckBox(B_TRANSLATE("Recent documents:"),
new BMessage(kUpdateRecentCounts));
fMenuRecentApplications = new BCheckBox(B_TRANSLATE("Recent applications:"),
new BMessage(kUpdateRecentCounts));
fMenuRecentFolders = new BCheckBox(B_TRANSLATE("Recent folders:"),
new BMessage(kUpdateRecentCounts));
fMenuRecentDocumentCount = new BTextControl(NULL, NULL,
new BMessage(kUpdateRecentCounts));
fMenuRecentApplicationCount = new BTextControl(NULL, NULL,
new BMessage(kUpdateRecentCounts));
fMenuRecentFolderCount = new BTextControl(NULL, NULL,
new BMessage(kUpdateRecentCounts));
// Applications controls
fAppsSort = new BCheckBox(B_TRANSLATE("Sort running applications"),
new BMessage(kSortRunningApps));
fAppsSortTrackerFirst = new BCheckBox(B_TRANSLATE("Tracker always first"),
new BMessage(kTrackerFirst));
fAppsShowExpanders = new BCheckBox(B_TRANSLATE("Show application expander"),
new BMessage(kSuperExpando));
fAppsExpandNew = new BCheckBox(B_TRANSLATE("Expand new applications"),
new BMessage(kExpandNewTeams));
fAppsHideLabels = new BCheckBox(B_TRANSLATE("Hide application names"),
new BMessage(kHideLabels));
fAppsIconSizeSlider = new BSlider("icon_size", B_TRANSLATE("Icon size"),
NULL, kMinimumIconSize / kIconSizeInterval,
kMaximumIconSize / kIconSizeInterval, B_HORIZONTAL);
fAppsIconSizeSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
fAppsIconSizeSlider->SetHashMarkCount((kMaximumIconSize - kMinimumIconSize)
/ kIconSizeInterval + 1);
fAppsIconSizeSlider->SetLimitLabels(B_TRANSLATE("Small"),
B_TRANSLATE("Large"));
fAppsIconSizeSlider->SetModificationMessage(new BMessage(kResizeTeamIcons));
// Window controls
fWindowAlwaysOnTop = new BCheckBox(B_TRANSLATE("Always on top"),
new BMessage(kAlwaysTop));
fWindowAutoRaise = new BCheckBox(B_TRANSLATE("Auto-raise"),
new BMessage(kAutoRaise));
fWindowAutoHide = new BCheckBox(B_TRANSLATE("Auto-hide"),
new BMessage(kAutoHide));
// Clock controls
fShowSeconds = new BCheckBox(B_TRANSLATE("Show seconds"),
new BMessage(kShowSeconds));
fShowDayOfWeek = new BCheckBox(B_TRANSLATE("Show day of week"),
new BMessage(kShowDayOfWeek));
// Get settings from BarApp
TBarApp* barApp = static_cast<TBarApp*>(be_app);
desk_settings* settings = barApp->Settings();
// Menu settings
BTextView* docTextView = fMenuRecentDocumentCount->TextView();
BTextView* appTextView = fMenuRecentApplicationCount->TextView();
BTextView* folderTextView = fMenuRecentFolderCount->TextView();
for (int32 i = 0; i < 256; i++) {
if (!isdigit(i)) {
docTextView->DisallowChar(i);
appTextView->DisallowChar(i);
folderTextView->DisallowChar(i);
}
}
docTextView->SetMaxBytes(4);
appTextView->SetMaxBytes(4);
folderTextView->SetMaxBytes(4);
int32 docCount = settings->recentDocsCount;
int32 appCount = settings->recentAppsCount;
int32 folderCount = settings->recentFoldersCount;
fMenuRecentDocuments->SetValue(settings->recentDocsEnabled);
fMenuRecentDocumentCount->SetEnabled(settings->recentDocsEnabled);
fMenuRecentApplications->SetValue(settings->recentAppsEnabled);
fMenuRecentApplicationCount->SetEnabled(settings->recentAppsEnabled);
fMenuRecentFolders->SetValue(settings->recentFoldersEnabled);
fMenuRecentFolderCount->SetEnabled(settings->recentFoldersEnabled);
BString docString;
BString appString;
BString folderString;
docString << docCount;
appString << appCount;
folderString << folderCount;
fMenuRecentDocumentCount->SetText(docString.String());
fMenuRecentApplicationCount->SetText(appString.String());
fMenuRecentFolderCount->SetText(folderString.String());
//.........这里部分代码省略.........
示例9: BMessage
//.........这里部分代码省略.........
fDisplayAsMenuField = new BMenuField("display as",
B_TRANSLATE_COMMENT("Display as:",
"Tracker offers different display modes for attributes."), menu);
fDisplayAsMenuField->SetAlignment(B_ALIGN_RIGHT);
fEditableCheckBox = new BCheckBox("editable",
B_TRANSLATE_COMMENT("Editable",
"If Tracker allows to edit this attribute."),
new BMessage(kMsgAttributeUpdated));
fEditableCheckBox->SetValue(fAttribute.Editable());
fSpecialControl = new BTextControl(B_TRANSLATE("Special:"),
display_as_parameter(fAttribute.DisplayAs()), NULL);
fSpecialControl->SetModificationMessage(
new BMessage(kMsgAttributeUpdated));
fSpecialControl->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
fSpecialControl->SetEnabled(false);
char text[64];
snprintf(text, sizeof(text), "%ld", fAttribute.Width());
fWidthControl = new BTextControl(B_TRANSLATE_COMMENT("Width:",
"Default column width in Tracker for this attribute."),
text, NULL);
fWidthControl->SetModificationMessage(
new BMessage(kMsgAttributeUpdated));
fWidthControl->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
// filter out invalid characters that can't be part of a width
textView = fWidthControl->TextView();
for (int32 i = 0; i < 256; i++) {
if (!isdigit(i))
textView->DisallowChar(i);
}
textView->SetMaxBytes(4);
const struct alignment_map {
int32 alignment;
const char* name;
} kAlignmentMap[] = {
{B_ALIGN_LEFT, B_TRANSLATE_COMMENT("Left",
"Attribute column alignment in Tracker")},
{B_ALIGN_RIGHT, B_TRANSLATE_COMMENT("Right",
"Attribute column alignment in Tracker")},
{B_ALIGN_CENTER, B_TRANSLATE_COMMENT("Center",
"Attribute column alignment in Tracker")},
{0, NULL}
};
menu = new BPopUpMenu("alignment");
for (int32 i = 0; kAlignmentMap[i].name != NULL; i++) {
BMessage* message = new BMessage(kMsgAlignmentChosen);
message->AddInt32("alignment", kAlignmentMap[i].alignment);
item = new BMenuItem(kAlignmentMap[i].name, message);
menu->AddItem(item);
if (kAlignmentMap[i].alignment == fAttribute.Alignment())
item->SetMarked(true);
}
fAlignmentMenuField = new BMenuField("alignment",
B_TRANSLATE("Alignment:"), menu);
fAlignmentMenuField->SetAlignment(B_ALIGN_RIGHT);
fAcceptButton = new BButton("add",
item ? B_TRANSLATE("Done") : B_TRANSLATE("Add"),
示例10: CreateField
void HDialog::CreateField(int kind, BPositionIO& data, BView*& inside)
{
dRect r;
char name[256];
char label[256];
uint32 cmd;
BView *v;
switch (kind)
{
case 'btn ':
data >> r >> name >> label >> cmd;
inside->AddChild(v = new BButton(r.ToBe(), name, label, new BMessage(cmd)));
if (cmd == msg_OK || strcmp(name, "ok") == 0)
SetDefaultButton(static_cast<BButton*>(v));
break;
case 'radb':
data >> r >> name >> label;
inside->AddChild(new BRadioButton(r.ToBe(), name, label, new BMessage(msg_FieldChanged)));
break;
case 'chkb':
data >> r >> name >> label;
inside->AddChild(new BCheckBox(r.ToBe(), name, label, new BMessage(msg_FieldChanged)));
break;
case 'edit':
{
char val[256], allowed[256];
short max, divider;
data >> r >> name >> label >> val >> allowed >> max >> divider;
BRect b = r.ToBe();
inside->AddChild(v = new BTextControl(b, name, *label ? label : NULL,
val, new BMessage(msg_FieldChanged), B_FOLLOW_NONE));
BTextView *tv = static_cast<BTextControl*>(v)->TextView();
if (*allowed)
{
for (int i = 0; i < 256; i++)
if (isprint(i))
{
if (strchr(allowed, i)) tv->AllowChar(i);
else tv->DisallowChar(i);
}
}
if (max) tv->SetMaxBytes(max);
if (divider) static_cast<BTextControl*>(v)->SetDivider(divider * gFactor);
if (v->Bounds().Height() < b.Height())
{
float d = v->Bounds().Height() - tv->Bounds().Height();
v->ResizeTo(b.Width(), b.Height());
tv->ResizeTo(tv->Bounds().Width(), b.Height() - d);
}
break;
}
case 'capt':
data >> r >> name >> label;
inside->AddChild(v = new BStringView(r.ToBe(), name, label));
v->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
break;
case 'popu':
{
short id, div;
data >> r >> name >> label >> id >> div;
inside->AddChild(v = new BMenuField(r.ToBe(), name, *label ? label : NULL,
HResources::GetMenu(id, true)));
if (div) static_cast<BMenuField*>(v)->SetDivider(div * gFactor);
break;
}
case 'tabb':
data >> r >> name;
inside->AddChild(v = new HTabSheet(r.ToBe(), name));
inside = v;
break;
case 'tabe':
inside = inside->Parent();
break;
case 'shet':
data >> name >> label;
inside = dynamic_cast<HTabSheet*>(inside)->AddSheet(name, label);
break;
case 'shte':
inside = inside->Parent();
break;
case 'box ':
data >> r >> name;
inside->AddChild(v = new BBox(r.ToBe(), name));
if (*name) dynamic_cast<BBox*>(v)->SetLabel(name);
v->SetFont(be_plain_font);
inside = v;
break;
case 'boxe':
inside = inside->Parent();
break;
case 'list':
case 'olst':
{
data >> r >> name;
//.........这里部分代码省略.........