* Now makes sure the boxes/window is large enough for the BColorControl.

* The left and right box should now always look aligned horizontally
  (at least under Haiku).
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15748 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2005-12-30 18:26:11 +00:00
parent f17cfabc82
commit c77be36230
+74 -61
View File
@@ -4,6 +4,7 @@
*
* Authors:
* Jerome Duval ([email protected])
* Axel Dörfler, [email protected]
*/
@@ -88,67 +89,17 @@ const uint8 kHandCursorData[68] = {
};
BackgroundsView::BackgroundsView(BRect frame, const char *name, int32 resize, int32 flags)
BackgroundsView::BackgroundsView(BRect frame, const char *name, int32 resize,
int32 flags)
: BBox(frame, name, resize,
flags | B_WILL_DRAW | B_FRAME_EVENTS, B_PLAIN_BORDER),
flags | B_WILL_DRAW | B_FRAME_EVENTS, B_NO_BORDER),
fCurrent(NULL),
fCurrentInfo(NULL),
fLastImageIndex(-1),
fPathList(1, true),
fImageList(1, true)
{
// SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
/* the preview box */
BFont font(be_plain_font);
fPreview = new PreviewBox(BRect(10, 16, 160, 180), "preview");
fPreview->SetFont(&font);
fPreview->SetLabel("Preview");
AddChild(fPreview);
BRect xyrect(15, 135, 70, 155);
fXPlacementText = new BTextControl(xyrect, "xPlacementText", "X:", NULL,
new BMessage(XY_PLACEMENT));
fXPlacementText->SetDivider(12.0);
fXPlacementText->TextView()->SetMaxBytes(4);
fPreview->AddChild(fXPlacementText);
xyrect.OffsetBy(65, 0);
fYPlacementText = new BTextControl(xyrect, "yPlacementText", "Y:", NULL,
new BMessage(XY_PLACEMENT));
fYPlacementText->SetDivider(12.0);
fYPlacementText->TextView()->SetMaxBytes(4);
fPreview->AddChild(fYPlacementText);
for (int i = 0; i < 256; i++) {
if (i < '0' || i > '9') {
fXPlacementText->TextView()->DisallowChar(i);
fYPlacementText->TextView()->DisallowChar(i);
}
}
fPreView = new PreView(BRect(15,25,135,115), "preView",
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_SUBPIXEL_PRECISE);
fPreview->AddChild(fPreView);
/* the right box */
BBox *rightbox = new BBox(BRect(fPreview->Frame().right + 10,
fPreview->Frame().top - 6, Frame().right - 10, fPreview->Frame().bottom),
"rightbox");
AddChild(rightbox);
fPicker = new BColorControl(BPoint(10, 110), B_CELLS_32x8, 5.0, "Picker",
new BMessage(UPDATE_COLOR));
rightbox->AddChild(fPicker);
BRect cvrect(80, 76, 280, 96);
fIconLabelBackground = new BCheckBox(cvrect, "iconLabelBackground",
"Icon label background", new BMessage(ICONLABEL_CHECKBOX));
fIconLabelBackground->SetValue(B_CONTROL_ON);
rightbox->AddChild(fIconLabelBackground);
// we need the "Current Workspace" first to get its height
BMenuItem *menuItem;
fWorkspaceMenu = new BPopUpMenu("pick one");
@@ -164,6 +115,70 @@ BackgroundsView::BackgroundsView(BRect frame, const char *name, int32 resize, in
fWorkspaceMenu->AddItem(menuItem = new BMenuItem("Other folder" B_UTF8_ELLIPSIS,
new BMessage(OTHER_FOLDER)));
BMenuField *workspaceMenuField = new BMenuField(BRect(0, 0, 130, 18),
"workspaceMenuField", NULL, fWorkspaceMenu, true);
workspaceMenuField->ResizeToPreferred();
/* the preview box */
BFont font(be_plain_font);
font_height fontHeight;
font.GetHeight(&fontHeight);
fPreview = new PreviewBox(BRect(10, 8.0 + workspaceMenuField->Bounds().Height() / 2.0f
- ceilf(fontHeight.ascent + fontHeight.descent) / 2.0f, 160, 180), "preview");
fPreview->SetFont(&font);
fPreview->SetLabel("Preview");
AddChild(fPreview);
BRect xyrect(15, 135, 70, 155);
fXPlacementText = new BTextControl(xyrect, "xPlacementText", "X:", NULL,
new BMessage(XY_PLACEMENT));
fXPlacementText->SetDivider(fXPlacementText->StringWidth(fXPlacementText->Label()) + 4.0f);
fXPlacementText->TextView()->SetMaxBytes(4);
fPreview->AddChild(fXPlacementText);
xyrect.OffsetBy(65, 0);
fYPlacementText = new BTextControl(xyrect, "yPlacementText", "Y:", NULL,
new BMessage(XY_PLACEMENT));
fYPlacementText->SetDivider(fYPlacementText->StringWidth(fYPlacementText->Label()) + 4.0f);
fYPlacementText->TextView()->SetMaxBytes(4);
fPreview->AddChild(fYPlacementText);
for (int32 i = 0; i < 256; i++) {
if ((i < '0' || i > '9') && i != '-') {
fXPlacementText->TextView()->DisallowChar(i);
fYPlacementText->TextView()->DisallowChar(i);
}
}
fPreView = new PreView(BRect(15, 25, 135, 115), "preView",
B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_SUBPIXEL_PRECISE);
fPreview->AddChild(fPreView);
/* the right box */
BBox *rightbox = new BBox(BRect(fPreview->Frame().right + 10,
7, Frame().right - 10, fPreview->Frame().bottom),
"rightbox");
rightbox->SetLabel(workspaceMenuField);
AddChild(rightbox);
fPicker = new BColorControl(BPoint(10, 110), B_CELLS_32x8, 5.0, "Picker",
new BMessage(UPDATE_COLOR));
rightbox->AddChild(fPicker);
float delta = fPicker->Frame().bottom + 10.0f - rightbox->Bounds().Height();
rightbox->ResizeBy(0, delta);
fPreview->ResizeBy(0, delta);
BRect cvrect(80, 76, 280, 96);
fIconLabelBackground = new BCheckBox(cvrect, "iconLabelBackground",
"Icon label background", new BMessage(ICONLABEL_CHECKBOX));
fIconLabelBackground->SetValue(B_CONTROL_ON);
rightbox->AddChild(fIconLabelBackground);
fImageMenu = new BPopUpMenu("pick one");
fImageMenu->AddItem(new BGImageMenuItem("None", -1, new BMessage(NONE_IMAGE)));
fImageMenu->AddSeparatorItem();
@@ -195,12 +210,6 @@ BackgroundsView::BackgroundsView(BRect frame, const char *name, int32 resize, in
imageMenuField->SetAlignment(B_ALIGN_RIGHT);
rightbox->AddChild(imageMenuField);
cvrect.right -= 70;
cvrect.bottom -= 2;
BMenuField *workspaceMenuField = new BMenuField(cvrect, "workspaceMenuField",
NULL, fWorkspaceMenu, true);
rightbox->SetLabel(workspaceMenuField);
fRevert = new BButton(BRect(fPreview->Frame().left, fPreview->Frame().bottom + 10,
fPreview->Frame().left + 80, Frame().bottom - 10), "RevertButton",
"Revert", new BMessage(REVERT_SETTINGS), B_FOLLOW_LEFT | B_FOLLOW_TOP,
@@ -212,6 +221,8 @@ BackgroundsView::BackgroundsView(BRect frame, const char *name, int32 resize, in
new BMessage(APPLY_SETTINGS), B_FOLLOW_LEFT | B_FOLLOW_TOP,
B_WILL_DRAW | B_NAVIGABLE);
AddChild(fApply);
ResizeBy(0, delta);
}
@@ -243,6 +254,8 @@ BackgroundsView::AllAttached()
B_DIRECTORY_NODE, false, NULL, new CustomRefFilter(false));
fFolderPanel->SetButtonLabel(B_DEFAULT_BUTTON, "Select");
Window()->ResizeTo(Frame().Width(), Frame().Height());
LoadSettings();
LoadDesktopFolder();
}
@@ -1163,7 +1176,7 @@ PreView::MouseMoved(BPoint point, uint32 transit, const BMessage *message)
PreviewBox::PreviewBox(BRect frame, const char *name)
: BBox(frame,name)
: BBox(frame, name)
{
fIsDesktop = true;
}