本文整理汇总了C++中BStringView::Frame方法的典型用法代码示例。如果您正苦于以下问题:C++ BStringView::Frame方法的具体用法?C++ BStringView::Frame怎么用?C++ BStringView::Frame使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BStringView
的用法示例。
在下文中一共展示了BStringView::Frame方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: rect
AlertView::AlertView(BRect frame, const char *name)
: BView(frame, name, B_FOLLOW_ALL, B_WILL_DRAW | B_PULSE_NEEDED),
// we will wait 12 seconds until we send a message
fSeconds(12)
{
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
fBitmap = InitIcon();
BRect rect(60, 8, 400, 36);
BStringView *stringView = new BStringView(rect, NULL,
"Do you wish to keep these settings?");
stringView->SetFont(be_bold_font);
stringView->ResizeToPreferred();
AddChild(stringView);
rect = stringView->Frame();
rect.OffsetBy(0, rect.Height());
fCountdownView = new BStringView(rect, "countdown", NULL);
UpdateCountdownView();
fCountdownView->ResizeToPreferred();
AddChild(fCountdownView);
BButton* keepButton = new BButton(rect, "keep", "Keep",
new BMessage(BUTTON_KEEP_MSG), B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
keepButton->ResizeToPreferred();
AddChild(keepButton);
BButton* button = new BButton(rect, "undo", "Undo",
new BMessage(BUTTON_UNDO_MSG), B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
button->ResizeToPreferred();
AddChild(button);
// we're resizing ourselves to the right size
// (but we're not implementing GetPreferredSize(), bad style!)
float width = stringView->Frame().right;
if (fCountdownView->Frame().right > width)
width = fCountdownView->Frame().right;
if (width < Bounds().Width())
width = Bounds().Width();
float height
= fCountdownView->Frame().bottom + 24 + button->Bounds().Height();
ResizeTo(width, height);
keepButton->MoveTo(Bounds().Width() - 8 - keepButton->Bounds().Width(),
Bounds().Height() - 8 - keepButton->Bounds().Height());
button->MoveTo(keepButton->Frame().left - button->Bounds().Width() - 8,
keepButton->Frame().top);
keepButton->MakeDefault(true);
}
示例2: r
RipView::RipView(const BRect &frame, CDAudioDevice *cd)
: BView(frame,"ripview",B_FOLLOW_ALL,B_WILL_DRAW),
fRipThread(-1)
{
abort_thread = create_sem(1,"rip_abort_sem");
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
fStop = new BButton(BRect(0,0,1,1),"stop",_T("Stop"),new BMessage(M_STOP),
B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
fStop->ResizeToPreferred();
fStop->MoveTo(Bounds().right - 5 - fStop->Bounds().Width(),
Bounds().bottom - 5 - fStop->Bounds().Height());
AddChild(fStop);
BRect r(5,5,Bounds().right - 5,30);
fProgressBar = new BStatusBar(r,"progressbar");
fProgressBar->SetResizingMode(B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT);
AddChild(fProgressBar);
r.Set(5,fProgressBar->Frame().bottom+15,Bounds().right - 5, fProgressBar->Frame().bottom+35);
BStringView *listLabel = new BStringView(r,"listlabel",_T("Songs to be Converted:"));
AddChild(listLabel);
r.Set(5,listLabel->Frame().bottom+5,Bounds().right - 5 - B_V_SCROLL_BAR_WIDTH, fStop->Frame().top - 10);
fRipList = new BListView(r,"riplist",B_SINGLE_SELECTION_LIST,B_FOLLOW_ALL);
BScrollView *ripsv = new BScrollView("ripsv",fRipList, B_FOLLOW_ALL,0,false,true);
AddChild(ripsv);
}
示例3: AttachedToWindow
void VisualColorControl::AttachedToWindow()
{
BPoint *points = new BPoint[3];
points[0] = BPoint(0,0);
points[1] = BPoint(-4,-4);
points[2] = BPoint(4,-4);
// calculate the initial ramps
CalcRamps();
// create the arrow-pictures
BeginPicture(new BPicture());
SetHighColor(100,100,255);
FillPolygon(points,3);
SetHighColor(0,0,0);
StrokePolygon(points,3);
down_arrow = EndPicture();
if (Parent() != NULL)
SetViewColor(Parent()->ViewColor());
BStringView *sv = new BStringView(BRect(0,COLOR_HEIGHT/2,1,COLOR_HEIGHT/2),"label view",label1);
AddChild(sv);
float sv_width = sv->StringWidth(label1);
sv_width = max_c(sv_width,sv->StringWidth(label2));
sv_width = max_c(sv_width,sv->StringWidth(label3));
font_height fHeight;
sv->GetFontHeight(&fHeight);
sv->ResizeTo(sv_width,fHeight.ascent+fHeight.descent);
sv->MoveBy(0,-(fHeight.ascent+fHeight.descent)/2.0);
BRect sv_frame = sv->Frame();
sv_frame.OffsetBy(0,COLOR_HEIGHT);
sv->SetAlignment(B_ALIGN_CENTER);
sv = new BStringView(sv_frame,"label view",label2);
AddChild(sv);
sv->SetAlignment(B_ALIGN_CENTER);
sv_frame.OffsetBy(0,COLOR_HEIGHT);
sv = new BStringView(sv_frame,"label view",label3);
AddChild(sv);
sv->SetAlignment(B_ALIGN_CENTER);
sv_frame.OffsetBy(0,COLOR_HEIGHT);
sv = new BStringView(sv_frame,"label view",label4);
AddChild(sv);
sv->SetAlignment(B_ALIGN_CENTER);
ramp_left_edge = sv->Bounds().IntegerWidth()+2;
ResizeBy(ramp_left_edge,0);
delete[] points;
}
示例4: MouseDown
void MonthWindowView::MouseDown(BPoint p)
{
// It's necessary to define whether mouse cursor is on one of dates
BRect r;
int k=cwday1;
float x=w_cell*k+1;
float y=yearStringView->Frame().bottom+h_cell+h_cell;
int qu_days=monthDays[cmonth-1]; // quantity of days in month
if(cmonth==2) if(cyear%4==0) if((cyear%100!=0) || (cyear%400==0)) qu_days=29;
bool flag=false; // whether mouse is pressed just on date
int t=0;
while(t<qu_days)
{
t++;
r.Set(x,y-h_cell+5,x+w_cell-1,y+4);
if(r.Contains(p))
{
flag=true;
dayPressed=t;
cursorPressed.Set(r.left,r.top,r.right,r.bottom);
MousePressed=true;
break; // exit while
}
x+=w_cell;
k++;
if(k==7)
{
k=0;
y+=h_cell;
x=1;
}
}
}
示例5: TypeEditorView
StringEditor::StringEditor(BRect rect, DataEditor& editor)
: TypeEditorView(rect, B_TRANSLATE("String editor"), B_FOLLOW_ALL, 0, editor)
{
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
BStringView *stringView = new BStringView(BRect(5, 5, rect.right, 20),
B_EMPTY_STRING, B_TRANSLATE("Contents:"));
stringView->ResizeToPreferred();
AddChild(stringView);
rect = Bounds();
rect.top = stringView->Frame().bottom + 5;
rect.right -= B_V_SCROLL_BAR_WIDTH;
rect.bottom -= B_H_SCROLL_BAR_HEIGHT;
fTextView = new BTextView(rect, B_EMPTY_STRING,
rect.OffsetToCopy(B_ORIGIN).InsetByCopy(5, 5),
B_FOLLOW_ALL, B_WILL_DRAW);
BScrollView* scrollView = new BScrollView("scroller", fTextView,
B_FOLLOW_ALL, B_WILL_DRAW, true, true);
AddChild(scrollView);
}
示例6: Init
void ChannelOptions::Init(void)
{
BString temp(S_CHANOPTS_TITLE);
temp.Prepend(chan_name);
SetTitle(temp.String());
bgView = new BView(Bounds(), "Background", B_FOLLOW_ALL_SIDES, B_WILL_DRAW);
bgView->AdoptSystemColors();
AddChild(bgView);
BStringView* tempStringView = new BStringView(Bounds(), "temp", "AEIOUglqj", 0, 0);
tempStringView->ResizeToPreferred();
float stringHeight = tempStringView->Frame().bottom;
delete tempStringView;
privilegesView = new BView(BRect(bgView->Frame().left + 2, bgView->Frame().top + 2,
bgView->Frame().right - 2, stringHeight + 2),
"privilege message", 0, B_WILL_DRAW);
privilegesView->SetViewColor(0, 100, 0);
bgView->AddChild(privilegesView);
BString privString; // this will become dynamic based on the current mode
privString += S_CHANOPTS_OPID1;
privString += S_CHANOPTS_OPID2;
BStringView* privMsgView =
new BStringView(BRect(privilegesView->Bounds().left, privilegesView->Bounds().top,
privilegesView->Bounds().right, stringHeight),
"privMsgView", privString.String(), 0, B_WILL_DRAW);
privMsgView->SetHighColor(255, 255, 255);
privMsgView->SetAlignment(B_ALIGN_CENTER);
privilegesView->ResizeToPreferred();
privilegesView->AddChild(privMsgView);
}
示例7: title
LibraryWindow::LibraryWindow(BRect frame, const BMessenger &parent, Project *project)
: DWindow(frame,NULL,B_TITLED_WINDOW,B_ASYNCHRONOUS_CONTROLS |
B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE),
fParent(parent),
fProject(project)
{
if (project)
{
BString title(TR("Libraries: "));
title << project->GetName();
SetTitle(title.String());
}
BView *top = GetBackgroundView();
BRect r(10,10,11,11);
BStringView *label = new BStringView(r,"label",TR("Choose the system libraries "
"for your project."));
label->ResizeToPreferred();
top->AddChild(label);
label->SetText(TR("Scanning libraries…"));
r = Bounds().InsetByCopy(10,10);
r.top = label->Frame().top + 20;
r.right -= B_V_SCROLL_BAR_WIDTH;
fCheckList = new BView(r,"checklist",B_FOLLOW_ALL,B_WILL_DRAW);
BScrollView *scrollView = new BScrollView("scrollView",fCheckList,
B_FOLLOW_ALL, 0,false,true);
top->AddChild(scrollView);
fScanThread = spawn_thread(ScanThread,"libscanthread",B_NORMAL_PRIORITY,this);
resume_thread(fScanThread);
fCheckList->MakeFocus(true);
}
示例8: time
void
DateTimeView::_InitView()
{
font_height fontHeight;
be_plain_font->GetHeight(&fontHeight);
float textHeight = fontHeight.descent + fontHeight.ascent
+ fontHeight.leading + 6.0; // 6px border
// left side
BRect bounds = Bounds();
bounds.InsetBy(10.0, 10.0);
bounds.top += textHeight + 10.0;
fCalendarView = new BCalendarView(bounds, "calendar");
fCalendarView->SetWeekNumberHeaderVisible(false);
fCalendarView->ResizeToPreferred();
fCalendarView->SetSelectionMessage(new BMessage(kDayChanged));
fCalendarView->SetInvocationMessage(new BMessage(kDayChanged));
bounds.top -= textHeight + 10.0;
bounds.bottom = bounds.top + textHeight;
bounds.right = fCalendarView->Frame().right;
fDateEdit = new TDateEdit(bounds, "dateEdit", 3);
AddChild(fDateEdit);
AddChild(fCalendarView);
// right side, 2px extra for separator
bounds.OffsetBy(bounds.Width() + 22.0, 0.0);
fTimeEdit = new TTimeEdit(bounds, "timeEdit", 4);
AddChild(fTimeEdit);
bounds = fCalendarView->Frame();
bounds.OffsetBy(bounds.Width() + 22.0, 0.0);
fClock = new TAnalogClock(bounds, "analogClock");
AddChild(fClock);
BTime time(BTime::CurrentTime(B_LOCAL_TIME));
fClock->SetTime(time.Hour(), time.Minute(), time.Second());
// clock radio buttons
bounds.top = fClock->Frame().bottom + 10.0;
BStringView *text = new BStringView(bounds, "clockSetTo", "Clock set to:");
AddChild(text);
text->ResizeToPreferred();
bounds.left += 10.0f;
bounds.top = text->Frame().bottom;
fLocalTime = new BRadioButton(bounds, "localTime", "Local time",
new BMessage(kRTCUpdate));
AddChild(fLocalTime);
fLocalTime->ResizeToPreferred();
bounds.left = fLocalTime->Frame().right + 10.0;
fGmtTime = new BRadioButton(bounds, "greenwichMeanTime", "GMT",
new BMessage(kRTCUpdate));
AddChild(fGmtTime);
fGmtTime->ResizeToPreferred();
if (fUseGmtTime)
fGmtTime->SetValue(B_CONTROL_ON);
else
fLocalTime->SetValue(B_CONTROL_ON);
fOldUseGmtTime = fUseGmtTime;
ResizeTo(fClock->Frame().right + 10.0, fGmtTime->Frame().bottom + 10.0);
}
示例9: DrawMonth
void MonthWindowView::DrawMonth()
{
Bmp->Lock();
float y=yearStringView->Frame().bottom+h_cell;
float x=0;
if(NewMonth)
{
BmpView->SetHighColor(VIEW_COLOR);
BmpView->FillRect(BRect(0,y+1,
BmpView->Bounds().right,todayStringView->Frame().top-6));
BmpView->SetHighColor(0,0,0,0);
NewMonth=false;
}
int byear=cyear; // base year
if(tyear<byear) byear=tyear;
int day1=0, m=0, k=byear;
while(k<cyear)
{
day1++;
if(k%4==0) // leap year?
if((k%100!=0) || (k%400==0)) day1++; // yes
k++;
}
while(++m<cmonth)
{
day1+=(monthDays[m-1]-28);
if(m==2) if((cyear%4)==0) if((cyear%100!=0) || (cyear%400==0)) day1++;
}
day1++; // day1 is number of 1st day of chosen month in chosen year
day1=day1%7;
int day2=0;
m=0;
k=byear;
while(k<tyear)
{
day2++;
if((k%4)==0) if((k%100!=0) || (k%400==0)) day2++;
k++;
}
while(++m<tmonth)
{
day2+=(monthDays[m-1]-28);
if(m==2) if((tyear%4)==0) if((tyear%100!=0) || (tyear%400==0)) day2++;
}
day2+=tday; // day2 - number of today's day in today's year
day2=day2%7;
k=(twday==0) ? 6 : twday-1;
k=k-day2+day1;
while(k<0) k+=7;
k=k%7;
cwday1=k;
x=w_cell*k+1;
y+=h_cell;
int qu_days=monthDays[cmonth-1]; // quantity of days in month
if(cmonth==2) if(cyear%4==0) if((cyear%100!=0) || (cyear%400==0)) qu_days=29;
BString s;
int t=0;
while(t<qu_days)
{
t++;
s<<t;
if(cyear==tyear) if(cmonth==tmonth) if(t==tday) BmpView->SetHighColor(200,0,0,0);
BmpView->DrawString(s.String(),BPoint(x+(w_cell-StringWidth(s.String()))/2,y));
if(cyear==tyear) if(cmonth==tmonth) if(t==tday) BmpView->SetHighColor(0,0,0,0);
if(t==cday)
{
cwday=k;
if(which_focused==2) BmpView->SetHighColor(ACTIVE_COLOR);
else BmpView->SetHighColor(NOACTIVE_COLOR);
cursor.Set(x,y-h_cell+5,x+w_cell-1,y+4);
BmpView->StrokeRect(cursor);
BmpView->SetHighColor(0,0,0,0);
}
x+=w_cell;
k++;
s.SetTo("");
if(k==7)
{
k=0;
y+=h_cell;
x=1;
//.........这里部分代码省略.........
示例10: AttachedToWindow
//.........这里部分代码省略.........
monthStringView=new BStringView(BRect(10,10,100,100),"monthStringViewAViX",
monthNames[8]);
monthStringView->SetAlignment(B_ALIGN_CENTER);
AddChild(monthStringView);
monthStringView->ResizeToPreferred();
monthStringView->SetText(monthNames[cmonth-1]);
monthStringView->SetViewColor(VIEW_COLOR);
s.SetTo("");
if(cyear<10) s.Append("000");
else if(cyear<100) s.Append("00");
else if(cyear<1000) s.Append("0");
s<<cyear;
yearStringView=new BStringView(BRect(10,10,100,100),"yearStringViewAViX",
"0000");
AddChild(yearStringView);
yearStringView->ResizeToPreferred();
yearStringView->SetText(s.String());
yearStringView->SetViewColor(VIEW_COLOR);
ResizeTo(w_cell*7+1,h_cell*7+3+16+yearStringView->Bounds().bottom+todayStringView->Bounds().bottom);
Window()->ResizeTo(Bounds().right, Bounds().bottom);
yearMStringView[0]=new MouseSenseStringView(new BMessage('YEA0'),msng,
BRect(10,10,100,100),
"yearMStringViewAViX0",
"<<");
AddChild(yearMStringView[0]);
yearMStringView[0]->ResizeToPreferred();
yearMStringView[0]->SetViewColor(VIEW_COLOR);
yearMStringView[1]=new MouseSenseStringView(new BMessage('YEA1'),msng,
BRect(10,10,100,100),
"yearMStringViewAViX1",
">>");
AddChild(yearMStringView[1]);
yearMStringView[1]->ResizeToPreferred();
yearMStringView[1]->SetViewColor(VIEW_COLOR);
monthMStringView[0]=new MouseSenseStringView(new BMessage('MON0'),msng,
BRect(10,10,100,100),
"monthMStringViewAViX0",
"<<");
AddChild(monthMStringView[0]);
monthMStringView[0]->ResizeToPreferred();
monthMStringView[0]->SetViewColor(VIEW_COLOR);
monthMStringView[1]=new MouseSenseStringView(new BMessage('MON1'),msng,
BRect(10,10,100,100),
"monthMStringViewAViX1",
">>");
AddChild(monthMStringView[1]);
monthMStringView[1]->ResizeToPreferred();
monthMStringView[1]->SetViewColor(VIEW_COLOR);
todayStringView->MoveTo((Bounds().right-todayStringView->Bounds().right)/2,
Bounds().bottom-todayStringView->Bounds().bottom-2);
if(tyear<first_year || tyear>last_year) todayStringView->SetHighColor(NOACTIVE_COLOR);
yearMStringView[1]->MoveTo(Bounds().right-yearMStringView[1]->Bounds().right,5);
yearStringView->MoveTo(yearMStringView[1]->Frame().left-yearStringView->Bounds().right,5);
yearMStringView[0]->MoveTo(yearStringView->Frame().left-yearMStringView[0]->Bounds().right,5);
monthStringView->MoveTo((yearMStringView[0]->Frame().left-monthStringView->Bounds().right)/2,5);
monthMStringView[0]->MoveTo(monthStringView->Frame().left-monthMStringView[0]->Bounds().right,5);
monthMStringView[1]->MoveTo(monthStringView->Frame().right,5);
which_focused=2; // days of month
Bmp=new BBitmap(BRect(Frame()),B_RGB32,true);
BmpView=new BView(Bmp->Bounds(),"BV",0,B_WILL_DRAW);
Bmp->AddChild(BmpView);
Bmp->Lock();
BmpView->SetHighColor(VIEW_COLOR);
BmpView->FillRect(BmpView->Frame());
BmpView->SetHighColor(LINE_COLOR);
BmpView->StrokeLine(BPoint(3,todayStringView->Frame().top-5),
BPoint(Bounds().right-3,todayStringView->Frame().top-5));
BmpView->StrokeLine(BPoint(3,yearStringView->Frame().bottom+2),
BPoint(Bounds().right-3,yearStringView->Frame().bottom+2));
BmpView->SetHighColor(0,0,0,0);
float y=yearStringView->Frame().bottom+h_cell;
float x=0;
for(int i=0;i<7;i++)
{
BmpView->DrawString(weekdayNames[i],BPoint(x+(w_cell-StringWidth(weekdayNames[i]))/2,y));
x+=w_cell;
}
BmpView->Sync();
Bmp->Unlock();
DrawMonth();
}
示例11: locker
//.........这里部分代码省略.........
const char *type = B_TRANSLATE("Unknown type");
switch (fEditor.Type()) {
case B_MINI_ICON_TYPE:
case B_LARGE_ICON_TYPE:
#ifdef HAIKU_TARGET_PLATFORM_HAIKU
case B_VECTOR_ICON_TYPE:
#endif
type = B_TRANSLATE("Icon");
break;
case B_PNG_FORMAT:
type = B_TRANSLATE("PNG format");
break;
case B_MESSAGE_TYPE:
type = B_TRANSLATE("Flattened bitmap");
break;
default:
break;
}
const char *colorSpace;
switch (fBitmap->ColorSpace()) {
case B_GRAY1:
case B_GRAY8:
colorSpace = B_TRANSLATE("Grayscale");
break;
case B_CMAP8:
colorSpace = B_TRANSLATE("8 bit palette");
break;
case B_RGB32:
case B_RGBA32:
case B_RGB32_BIG:
case B_RGBA32_BIG:
colorSpace = B_TRANSLATE("32 bit");
break;
case B_RGB15:
case B_RGBA15:
case B_RGB15_BIG:
case B_RGBA15_BIG:
colorSpace = B_TRANSLATE("15 bit");
break;
case B_RGB16:
case B_RGB16_BIG:
colorSpace = B_TRANSLATE("16 bit");
break;
default:
colorSpace = B_TRANSLATE("Unknown format");
break;
}
snprintf(buffer, sizeof(buffer), "%s, %g x %g, %s", type,
fBitmap->Bounds().Width() + 1, fBitmap->Bounds().Height() + 1,
colorSpace);
fDescriptionView->SetText(buffer);
} else
fDescriptionView->SetText(B_TRANSLATE_COMMENT("Could not read image",
"Image means here a picture file, not a disk image."));
// Update the view size to match the image and its description
float width, height;
fDescriptionView->GetPreferredSize(&width, &height);
fDescriptionView->ResizeTo(width, height);
BRect rect = fDescriptionView->Bounds();
if (fBitmap != NULL) {
BRect bounds = fBitmap->Bounds();
rect.bottom += bounds.Height() + 5;
if (fScaleSlider != NULL && rect.Width() < fScaleSlider->Bounds().Width())
rect.right = fScaleSlider->Bounds().right;
if (bounds.Width() > rect.Width())
rect.right = bounds.right;
// center description below the bitmap
fDescriptionView->MoveTo((rect.Width() - fDescriptionView->Bounds().Width()) / 2,
bounds.Height() + 5);
if (fScaleSlider != NULL) {
// center slider below description
rect.bottom += fScaleSlider->Bounds().Height() + 5;
fScaleSlider->MoveTo((rect.Width() - fScaleSlider->Bounds().Width()) / 2,
fDescriptionView->Frame().bottom + 5);
if (fScaleSlider->IsHidden())
fScaleSlider->Show();
}
} else if (fScaleSlider != NULL && !fScaleSlider->IsHidden())
fScaleSlider->Hide();
ResizeTo(rect.Width(), rect.Height());
if (Parent()) {
// center within parent view
BRect parentBounds = Parent()->Bounds();
MoveTo((parentBounds.Width() - rect.Width()) / 2,
(parentBounds.Height() - rect.Height()) / 2);
}
Invalidate();
// restore old view size
fEditor.SetViewSize(viewSize);
}
示例12: cat
RecipeEditor::RecipeEditor(const BRect &frame, const BMessenger &msgr,
const int32 &number, const char *category)
: BWindow(frame,"Add Recipe",B_FLOATING_WINDOW_LOOK, B_MODAL_SUBSET_WINDOW_FEEL,
B_ASYNCHRONOUS_CONTROLS),
fMessenger(msgr),
fNumber(number),
fCategory(category)
{
AddShortcut('W', B_COMMAND_KEY, new BMessage(B_QUIT_REQUESTED));
AddShortcut('Q', B_COMMAND_KEY, new BMessage(M_QUIT_APP));
BView *back = new BView(Bounds(),"back",B_FOLLOW_ALL, B_WILL_DRAW);
back->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
AddChild(back);
fCategories = new BMenu("Categories");
CppSQLite3Query query = DBQuery("select category from categories order by category;",
"RecipeEditor:get categories");
while(!query.eof())
{
BString cat(DeescapeIllegalCharacters(query.getStringField(0)));
BMessage *menumsg = new BMessage(M_CATEGORY_CHANGED);
menumsg->AddString("name",cat);
fCategories->AddItem(new BMenuItem(cat.String(),menumsg));
query.nextRow();
}
fCategories->SetRadioMode(true);
fCategories->SetLabelFromMarked(true);
if(fCategories->CountItems()>0)
fCategories->ItemAt(0)->SetMarked(true);
BRect r(10,10,10 + fCategories->MaxContentWidth(),11);
BMenuField *field = new BMenuField(r,"field","Category",fCategories,
B_FOLLOW_LEFT | B_FOLLOW_TOP,
B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP);
back->AddChild(field);
field->ResizeToPreferred();
r = field->Frame();
if(category)
{
BMenuItem *marked = fCategories->FindItem(category);
if(marked)
marked->SetMarked(true);
}
else
{
BMenuItem *marked = fCategories->ItemAt(0L);
if(marked)
marked->SetMarked(true);
}
r.OffsetBy(0,r.Height() + 10);
fNameBox = new AutoTextControl(r,"namebox","Name: ",NULL,NULL,
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP,
B_WILL_DRAW | B_PULSE_NEEDED | B_NAVIGABLE |
B_NAVIGABLE_JUMP);
fNameBox->SetEscapeCancel(true);
fNameBox->SetDivider(be_plain_font->StringWidth("Name ") + 5);
back->AddChild(fNameBox);
fNameBox->ResizeToPreferred();
r = fNameBox->Frame();
r.right = Bounds().right - 10;
fNameBox->ResizeTo(r.Width(), r.Height());
r.OffsetBy(0,r.Height() + 10);
BStringView *label = new BStringView(r,"inglabel","Ingredients:");
back->AddChild(label);
r.OffsetBy(0,r.Height() + 10);
r.bottom = r.top + 100;
r.right -= B_V_SCROLL_BAR_WIDTH;
BRect textrect = r.OffsetToCopy(0,0);
textrect.InsetBy(10,10);
fIngredientBox = new BTextView(r, "ingredients", textrect, B_FOLLOW_ALL,
B_WILL_DRAW | B_PULSE_NEEDED | B_NAVIGABLE |
B_NAVIGABLE_JUMP);
fIngredientBox->SetDoesUndo(true);
BScrollView *ingredscroll = new BScrollView("ingredients_scroller",fIngredientBox,
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP,0,false, true);
back->AddChild(ingredscroll);
r = ingredscroll->Frame();
label = new BStringView(BRect(10,10,11,11),"dirlabel","Directions:");
label->ResizeToPreferred();
label->MoveTo(10, r.bottom + 10);
back->AddChild(label);
r.OffsetBy(0,r.Height() + 20 + label->Frame().Height());
r.right -= B_V_SCROLL_BAR_WIDTH;
textrect = r.OffsetToCopy(0,0);
textrect.InsetBy(10,10);
fDirectionsBox = new BTextView(r, "directions", textrect, B_FOLLOW_ALL,
B_WILL_DRAW | B_PULSE_NEEDED | B_NAVIGABLE |
B_NAVIGABLE_JUMP);
fDirectionsBox->SetDoesUndo(true);
//.........这里部分代码省略.........
示例13: r
int32
LibraryWindow::ScanThread(void *data)
{
LibraryWindow *win = (LibraryWindow *)data;
float maxwidth;
BRect r(5,5,105,20);
BView *systemheader = win->AddHeader(r.LeftTop(),TR("System Libraries:"));
win->Lock();
r = systemheader->Frame();
win->Unlock();
maxwidth = r.right;
r.OffsetBy(0,r.Height() + 10);
DPath sysPath = GetSystemPath(B_USER_DEVELOP_DIRECTORY);
sysPath << "lib/x86";
BRect out = win->ScanFolder(r.LeftTop(),sysPath.GetFullPath(),&maxwidth);
if (out != BRect(0,0,-1,-1))
{
r = out;
r.OffsetBy(0,10);
}
if (gPlatform == PLATFORM_HAIKU || gPlatform == PLATFORM_HAIKU_GCC4)
{
BView *commonheader = win->AddHeader(r.LeftTop(),TR("Common Libraries:"));
win->Lock();
r = commonheader->Frame();
win->Unlock();
maxwidth = MAX(r.right,maxwidth);
r.OffsetBy(0,r.Height() + 10);
out = win->ScanFolder(r.LeftTop(),GetSystemPath(B_USER_LIB_DIRECTORY).GetFullPath(),
&maxwidth);
if (out != BRect(0,0,-1,-1))
{
r = out;
r.OffsetBy(0,10);
}
}
BView *userheader = win->AddHeader(r.LeftTop(),TR("User Libraries:"));
win->Lock();
r = userheader->Frame();
win->Unlock();
maxwidth = MAX(r.right,maxwidth);
r.OffsetBy(0,r.Height() + 10);
out = win->ScanFolder(r.LeftTop(),GetSystemPath(B_USER_LIB_DIRECTORY).GetFullPath(),
&maxwidth);
if (out.IsValid())
{
r = out;
r.OffsetBy(0,10);
}
win->Lock();
BView *top = win->GetBackgroundView();
BScrollView *scrollView = (BScrollView*)top->FindView("scrollView");
BScrollBar *vbar = scrollView->ScrollBar(B_VERTICAL);
vbar->SetRange(0, r.bottom - scrollView->Bounds().Height());
vbar->SetSteps(r.Height() * 2.0,r.Height() * 8.0);
gSettings.Lock();
BRect savedframe;
if (gSettings.FindRect("libwin_frame",&savedframe) == B_OK)
win->ResizeTo(savedframe.Width(),savedframe.Height());
gSettings.Unlock();
BStringView *label = (BStringView*)top->FindView("label");
label->SetText(TR("Choose the system libraries for your project."));
float minw = label->Frame().right + 10;
win->SetSizeLimits(minw,30000,200,30000);
if (win->Bounds().Width() < minw)
win->ResizeTo(minw,win->Bounds().Height());
win->fScanThread = -1;
win->Unlock();
return 0;
}
示例14: _
// constructor
NavigationInfoPanel::NavigationInfoPanel(BWindow* parent,
const BMessage& message, const BMessenger& target)
: BWindow(BRect(0, 0, 200, 30), "Navigation Info", B_FLOATING_WINDOW_LOOK,
B_FLOATING_SUBSET_WINDOW_FEEL,
B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_NOT_V_RESIZABLE)
, fMessage(message)
, fTarget(target)
{
// create the interface and resize to fit
BRect frame = Bounds();
frame.InsetBy(5, 5);
frame.bottom = frame.top + 15;
// label string view
fLabelView = new BStringView(frame, "label", kLabel,
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);
fLabelView->ResizeToPreferred();
frame = fLabelView->Frame();
// target clip text control
frame.OffsetBy(0, frame.Height() + 5);
fTargetClipTC = new BTextControl(frame, "clip id",
"Target Playlist ID", "", new BMessage(MSG_INVOKE),
B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT);
fTargetClipTC->ResizeToPreferred();
frame = fTargetClipTC->Frame();
// help string view
frame.OffsetBy(0, frame.Height() + 5);
BStringView* helpView = new BStringView(frame, "help",
"Drag and drop a playlist clip here.",
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);
BFont font;
helpView->GetFont(&font);
font.SetFace(B_ITALIC_FACE);
font.SetSize(font.Size() * 0.9);
helpView->SetFont(&font);
helpView->SetAlignment(B_ALIGN_CENTER);
helpView->ResizeToPreferred();
// parent view
frame = fLabelView->Frame() | fTargetClipTC->Frame() | helpView->Frame();
frame.InsetBy(-5, -5);
fInfoView = new InfoView(frame, this);
fInfoView->AddChild(fLabelView);
fInfoView->AddChild(fTargetClipTC);
fInfoView->AddChild(helpView);
// resize to fit and adjust size limits
ResizeTo(fInfoView->Frame().Width(), fInfoView->Frame().Height());
AddChild(fInfoView);
float minWidth, maxWidth, minHeight, maxHeight;
GetSizeLimits(&minWidth, &maxWidth, &minHeight, &maxHeight);
minWidth = Frame().Width();
minHeight = maxHeight = Frame().Height();
SetSizeLimits(minWidth, maxWidth, minHeight, maxHeight);
// modify the high color after the help view is attached to a window
helpView->SetHighColor(tint_color(helpView->LowColor(),
B_DISABLED_LABEL_TINT));
helpView->SetFlags(helpView->Flags() | B_FULL_UPDATE_ON_RESIZE);
// help the buggy BeOS BStringView (when text alignment != left...)
fInfoView->SetEventMask(B_POINTER_EVENTS);
// resize controls to the same (maximum) width
float maxControlWidth = fLabelView->Frame().Width();
maxControlWidth = max_c(maxControlWidth, fTargetClipTC->Frame().Width());
maxControlWidth = max_c(maxControlWidth, helpView->Frame().Width());
fLabelView->ResizeTo(maxControlWidth, fLabelView->Frame().Height());
fTargetClipTC->ResizeTo(maxControlWidth, fTargetClipTC->Frame().Height());
helpView->ResizeTo(maxControlWidth, helpView->Frame().Height());
// center above parent window
BAutolock _(parent);
frame = Frame();
BRect parentFrame = parent->Frame();
MoveTo((parentFrame.left + parentFrame.right - frame.Width()) / 2,
(parentFrame.top + parentFrame.bottom - frame.Height()) / 2);
AddToSubset(parent);
}
示例15: msgr
ProjectSettingsWindow::ProjectSettingsWindow(BRect frame, Project *proj)
: DWindow(frame,TR("Project Settings"),B_TITLED_WINDOW,
B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_NOT_H_RESIZABLE),
fProject(proj),
fDirty(false)
{
if (!fProject)
debugger("Bad project given to Project Settings window");
fRefFilter = new TypedRefFilter(NULL,B_DIRECTORY_NODE);
BMessenger msgr(this);
entry_ref projfolder_ref;
BEntry(fProject->GetPath().GetFolder()).GetRef(&projfolder_ref);
fFilePanel = new BFilePanel(B_OPEN_PANEL,&msgr,&projfolder_ref,B_DIRECTORY_NODE,
true, new BMessage(M_ADD_PATH),fRefFilter);
fAutolock = new BAutolock(fProject);
AddCommonFilter(new EscapeCancelFilter());
BView *top = GetBackgroundView();
BRect r(Bounds());
fTabView = new BTabView(r,"tabview");
top->AddChild(fTabView);
r.InsetBy(5,5);
r.bottom -= fTabView->TabHeight();
BRect bounds = r.OffsetToCopy(0,0);
fGeneralView = new BView(r,TR("General"),B_FOLLOW_ALL,B_WILL_DRAW);
fGeneralView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
fTabView->AddTab(fGeneralView);
r.right -= 10.0;
fTargetText = new AutoTextControl(r,"targetname",TR("Target Name:"),
fProject->GetTargetName(),
new BMessage(M_TARGET_NAME_CHANGED),
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);
fGeneralView->AddChild(fTargetText);
float pwidth, pheight;
fTargetText->GetPreferredSize(&pwidth, &pheight);
fTargetText->ResizeTo(r.Width(),pheight);
r.bottom = r.top + pheight;
fTargetText->SetDivider(fTargetText->StringWidth(TR("Target Name:")) + 5.0);
r = fTargetText->Frame();
r.OffsetBy(0,r.Height() + 10.0);
BMenu *menu = new BMenu(TR("Target Type"));
menu->AddItem(new BMenuItem(TR("Application"),new BMessage(M_SET_TARGET_TYPE)));
menu->AddItem(new BMenuItem(TR("Shared Library"),new BMessage(M_SET_TARGET_TYPE)));
menu->AddItem(new BMenuItem(TR("Static Library"),new BMessage(M_SET_TARGET_TYPE)));
menu->AddItem(new BMenuItem(TR("Device Driver"),new BMessage(M_SET_TARGET_TYPE)));
r.right = (bounds.right - 5.0) / 2.0;
r.bottom = r.top + 25;
fTypeField = new BMenuField(r,"type",TR("Target Type:"),menu);
fGeneralView->AddChild(fTypeField);
fTypeField->SetDivider(fTypeField->StringWidth(TR("Target Type:")) + 5.0);
SetToolTip(fTypeField,TR("The kind of program you want to build"));
menu->SetTargetForItems(this);
menu->SetLabelFromMarked(true);
BMenuItem *item = menu->ItemAt(fProject->TargetType());
if (item)
item->SetMarked(true);
r.OffsetBy(0,r.Height() + 10.0);
BStringView *label = new BStringView(r,"label",TR("Include Paths:"));
label->ResizeToPreferred();
fGeneralView->AddChild(label);
r = label->Frame();
r.OffsetBy(0,r.Height() + 5.0);
// We create a button now so that the list expands to fill the entire window
// while leaving space for the two buttons at the bottom. Note that we do not
// actually add the button to the window until later to preserve proper
// keyboard navigation order
BButton *add = new BButton(BRect(0,0,1,1),"addbutton",TR("Add…"),
new BMessage(M_SHOW_ADD_PATH),
B_FOLLOW_LEFT | B_FOLLOW_BOTTOM);
add->ResizeToPreferred();
add->MoveTo(5,fGeneralView->Bounds().bottom - 10.0 - add->Frame().Height());
r.right = bounds.right - 10.0 - B_V_SCROLL_BAR_WIDTH;
r.bottom = add->Frame().top - 10.0 - B_H_SCROLL_BAR_HEIGHT;
fIncludeList = new IncludeList(r,fProject->GetPath().GetFolder());
BScrollView *scrollView = new BScrollView("scrollview",fIncludeList,
B_FOLLOW_ALL,0, true, true);
scrollView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
fGeneralView->AddChild(scrollView);
//.........这里部分代码省略.........