TPrefsWindow::TPrefsWindow(BRect rect, BFont *font, int32 *level, bool *wrap, char **sig) :BWindow(rect, "BeMail Preferences", B_TITLED_WINDOW, B_NOT_CLOSABLE | B_NOT_RESIZABLE | B_NOT_ZOOMABLE) { BBox *box; BFont menu_font; BMenuField *menu; BRect r; fNewFont = font; fFont = *fNewFont; fNewLevel = level; fLevel = *fNewLevel; fNewWrap = wrap; fWrap = *fNewWrap; fNewSignature = sig; fSignature = (char *)malloc(strlen(*fNewSignature) + 1); strcpy(fSignature, *fNewSignature); r = Bounds(); r.InsetBy(-1, -1); box = new BBox(r); AddChild(box); r.Set(OK_BUTTON_X1, OK_BUTTON_Y1, OK_BUTTON_X2, OK_BUTTON_Y2); fOK = new BButton(r, "ok", OK_BUTTON_TEXT, new BMessage(P_OK)); fOK->MakeDefault(true); fOK->SetEnabled(false); box->AddChild(fOK); r.Set(CANCEL_BUTTON_X1, CANCEL_BUTTON_Y1, CANCEL_BUTTON_X2, CANCEL_BUTTON_Y2); fCancel = new BButton(r, "cancel", CANCEL_BUTTON_TEXT, new BMessage(P_CANCEL)); box->AddChild(fCancel); r.Set(REVERT_BUTTON_X1, REVERT_BUTTON_Y1, REVERT_BUTTON_X2, REVERT_BUTTON_Y2); fRevert = new BButton(r, "revert", REVERT_BUTTON_TEXT, new BMessage(P_REVERT)); fRevert->SetEnabled(false); box->AddChild(fRevert); r.Set(FONT_X1, FONT_Y1, FONT_X2, FONT_Y2); fFontMenu = BuildFontMenu(font); menu = new BMenuField(r, "font", FONT_TEXT, fFontMenu, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP); menu->GetFont(&menu_font); menu->SetDivider(menu_font.StringWidth(WRAP_TEXT) + 7); menu->SetAlignment(B_ALIGN_RIGHT); box->AddChild(menu); r.Set(SIZE_X1, SIZE_Y1, SIZE_X2, SIZE_Y2); fSizeMenu = BuildSizeMenu(font); menu = new BMenuField(r, "size", SIZE_TEXT, fSizeMenu, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP); menu->SetDivider(menu_font.StringWidth(WRAP_TEXT) + 7); menu->SetAlignment(B_ALIGN_RIGHT); box->AddChild(menu); r.Set(LEVEL_X1, LEVEL_Y1, LEVEL_X2, LEVEL_Y2); fLevelMenu = BuildLevelMenu(*level); menu = new BMenuField(r, "level", LEVEL_TEXT, fLevelMenu, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP); menu->SetDivider(menu_font.StringWidth(WRAP_TEXT) + 7); menu->SetAlignment(B_ALIGN_RIGHT); box->AddChild(menu); r.Set(WRAP_X1, WRAP_Y1, WRAP_X2, WRAP_Y2); fWrapMenu = BuildWrapMenu(*wrap); menu = new BMenuField(r, "wrap", WRAP_TEXT, fWrapMenu, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP); menu->SetDivider(menu_font.StringWidth(WRAP_TEXT) + 7); menu->SetAlignment(B_ALIGN_RIGHT); box->AddChild(menu); r.Set(SIG_X1, SIG_Y1, SIG_X2, SIG_Y2); fSignatureMenu = BuildSignatureMenu(*sig); menu = new BMenuField(r, "sig", SIGNATURE_TEXT, fSignatureMenu, B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE | B_NAVIGABLE_JUMP); menu->SetDivider(menu_font.StringWidth(WRAP_TEXT) + 7); menu->SetAlignment(B_ALIGN_RIGHT); box->AddChild(menu); Show(); }