DiskProbe: Make FindWindow use BLayoutBuilder
* No other functional change intended. Change-Id: I2f95e66ce79ed0a26bb848973466227e80620171 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7086 Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
committed by
waddlesplash
parent
53e2dc0f85
commit
e39fc9c4bd
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2004-2009, Axel Dörfler, [email protected].
|
* Copyright 2004-2023, Axel Dörfler, [email protected].
|
||||||
* Copyright 2009, Philippe St-Pierre, [email protected]
|
* Copyright 2009, Philippe St-Pierre, [email protected]
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
@@ -11,6 +11,8 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#include <Application.h>
|
#include <Application.h>
|
||||||
#include <Autolock.h>
|
#include <Autolock.h>
|
||||||
#include <AutoLocker.h>
|
#include <AutoLocker.h>
|
||||||
@@ -19,6 +21,7 @@
|
|||||||
#include <Catalog.h>
|
#include <Catalog.h>
|
||||||
#include <CheckBox.h>
|
#include <CheckBox.h>
|
||||||
#include <Clipboard.h>
|
#include <Clipboard.h>
|
||||||
|
#include <LayoutBuilder.h>
|
||||||
#include <Locale.h>
|
#include <Locale.h>
|
||||||
#include <MenuField.h>
|
#include <MenuField.h>
|
||||||
#include <MenuItem.h>
|
#include <MenuItem.h>
|
||||||
@@ -40,8 +43,7 @@ static const uint32 kMsgStartFind = 'SFnd';
|
|||||||
|
|
||||||
class FindTextView : public BTextView {
|
class FindTextView : public BTextView {
|
||||||
public:
|
public:
|
||||||
FindTextView(BRect frame, const char* name,
|
FindTextView(const char* name);
|
||||||
BRect textRect, uint32 resizeMask);
|
|
||||||
|
|
||||||
virtual void MakeFocus(bool state);
|
virtual void MakeFocus(bool state);
|
||||||
virtual void TargetedByScrollView(BScrollView* view);
|
virtual void TargetedByScrollView(BScrollView* view);
|
||||||
@@ -75,9 +77,9 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
FindTextView::FindTextView(BRect frame, const char* name, BRect textRect,
|
FindTextView::FindTextView(const char* name)
|
||||||
uint32 resizeMask)
|
:
|
||||||
: BTextView(frame, name, textRect, resizeMask),
|
BTextView(name),
|
||||||
fScrollView(NULL),
|
fScrollView(NULL),
|
||||||
fMode(kAsciiMode)
|
fMode(kAsciiMode)
|
||||||
{
|
{
|
||||||
@@ -487,20 +489,15 @@ FindTextView::GetData(BMessage& message)
|
|||||||
|
|
||||||
FindWindow::FindWindow(BRect _rect, BMessage& previous, BMessenger& target,
|
FindWindow::FindWindow(BRect _rect, BMessage& previous, BMessenger& target,
|
||||||
const BMessage* settings)
|
const BMessage* settings)
|
||||||
: BWindow(_rect, B_TRANSLATE("Find"), B_TITLED_WINDOW,
|
:
|
||||||
B_ASYNCHRONOUS_CONTROLS | B_CLOSE_ON_ESCAPE),
|
BWindow(_rect, B_TRANSLATE("Find"), B_TITLED_WINDOW,
|
||||||
|
B_ASYNCHRONOUS_CONTROLS | B_CLOSE_ON_ESCAPE | B_AUTO_UPDATE_SIZE_LIMITS),
|
||||||
fTarget(target)
|
fTarget(target)
|
||||||
{
|
{
|
||||||
BView* view = new BView(Bounds(), "main", B_FOLLOW_ALL, 0);
|
|
||||||
view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
|
|
||||||
AddChild(view);
|
|
||||||
|
|
||||||
int8 mode = kAsciiMode;
|
int8 mode = kAsciiMode;
|
||||||
if (previous.FindInt8("find_mode", &mode) != B_OK && settings != NULL)
|
if (previous.FindInt8("find_mode", &mode) != B_OK && settings != NULL)
|
||||||
settings->FindInt8("find_mode", &mode);
|
settings->FindInt8("find_mode", &mode);
|
||||||
|
|
||||||
// add the top widgets
|
|
||||||
|
|
||||||
fMenu = new BPopUpMenu("mode");
|
fMenu = new BPopUpMenu("mode");
|
||||||
BMessage* message;
|
BMessage* message;
|
||||||
BMenuItem* item;
|
BMenuItem* item;
|
||||||
@@ -516,55 +513,44 @@ FindWindow::FindWindow(BRect _rect, BMessage& previous, BMessenger& target,
|
|||||||
if (mode == kHexMode)
|
if (mode == kHexMode)
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
|
|
||||||
BRect rect = Bounds().InsetByCopy(5, 5);
|
BMenuField* menuField = new BMenuField(B_TRANSLATE("Mode:"), fMenu);
|
||||||
BMenuField* menuField = new BMenuField(rect, B_EMPTY_STRING,
|
|
||||||
B_TRANSLATE("Mode:"), fMenu, B_FOLLOW_LEFT | B_FOLLOW_TOP);
|
|
||||||
menuField->SetDivider(menuField->StringWidth(menuField->Label()) + 8);
|
|
||||||
menuField->ResizeToPreferred();
|
|
||||||
view->AddChild(menuField);
|
|
||||||
|
|
||||||
// add the bottom widgets
|
fTextView = new FindTextView(B_EMPTY_STRING);
|
||||||
|
|
||||||
BButton* button = new BButton(rect, B_EMPTY_STRING, B_TRANSLATE("Find"),
|
|
||||||
new BMessage(kMsgStartFind), B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
|
|
||||||
button->MakeDefault(true);
|
|
||||||
button->ResizeToPreferred();
|
|
||||||
button->MoveTo(rect.right - button->Bounds().Width(),
|
|
||||||
rect.bottom - button->Bounds().Height());
|
|
||||||
view->AddChild(button);
|
|
||||||
|
|
||||||
fCaseCheckBox = new BCheckBox(rect, B_EMPTY_STRING, B_TRANSLATE("Case sensitive"),
|
|
||||||
NULL, B_FOLLOW_LEFT | B_FOLLOW_BOTTOM);
|
|
||||||
fCaseCheckBox->ResizeToPreferred();
|
|
||||||
fCaseCheckBox->MoveTo(5, button->Frame().top);
|
|
||||||
bool caseSensitive;
|
|
||||||
if (previous.FindBool("case_sensitive", &caseSensitive) != B_OK) {
|
|
||||||
if (settings == NULL
|
|
||||||
|| settings->FindBool("case_sensitive", &caseSensitive) != B_OK)
|
|
||||||
caseSensitive = true;
|
|
||||||
}
|
|
||||||
fCaseCheckBox->SetValue(caseSensitive);
|
|
||||||
view->AddChild(fCaseCheckBox);
|
|
||||||
|
|
||||||
// and now those inbetween
|
|
||||||
|
|
||||||
rect.top = menuField->Frame().bottom + 5;
|
|
||||||
rect.bottom = fCaseCheckBox->Frame().top - 8;
|
|
||||||
rect.InsetBy(2, 2);
|
|
||||||
fTextView = new FindTextView(rect, B_EMPTY_STRING,
|
|
||||||
rect.OffsetToCopy(B_ORIGIN).InsetByCopy(3, 3), B_FOLLOW_ALL);
|
|
||||||
fTextView->SetWordWrap(true);
|
fTextView->SetWordWrap(true);
|
||||||
fTextView->SetMode((find_mode)mode);
|
fTextView->SetMode((find_mode)mode);
|
||||||
fTextView->SetData(previous);
|
fTextView->SetData(previous);
|
||||||
|
|
||||||
BScrollView* scrollView = new BScrollView("scroller", fTextView,
|
BScrollView* scrollView = new BScrollView("scroller", fTextView,
|
||||||
B_FOLLOW_ALL, B_WILL_DRAW, false, false);
|
B_WILL_DRAW | B_FRAME_EVENTS, false, false);
|
||||||
view->AddChild(scrollView);
|
|
||||||
|
|
||||||
ResizeTo(290, button->Frame().Height() * 3 + 30);
|
BButton* button = new BButton(B_TRANSLATE("Find"),
|
||||||
|
new BMessage(kMsgStartFind));
|
||||||
|
button->MakeDefault(true);
|
||||||
|
|
||||||
SetSizeLimits(fCaseCheckBox->Bounds().Width() + button->Bounds().Width()
|
fCaseCheckBox = new BCheckBox(B_TRANSLATE("Case sensitive"), NULL);
|
||||||
+ 20, 32768, button->Frame().Height() * 3 + 10, 32768);
|
bool caseSensitive;
|
||||||
|
if (previous.FindBool("case_sensitive", &caseSensitive) != B_OK
|
||||||
|
&& (settings == NULL
|
||||||
|
|| settings->FindBool("case_sensitive", &caseSensitive) != B_OK)) {
|
||||||
|
caseSensitive = true;
|
||||||
|
}
|
||||||
|
fCaseCheckBox->SetValue(caseSensitive);
|
||||||
|
|
||||||
|
BLayoutBuilder::Group<>(this, B_VERTICAL)
|
||||||
|
.SetInsets(B_USE_WINDOW_SPACING)
|
||||||
|
.AddGroup(B_HORIZONTAL)
|
||||||
|
.Add(menuField->CreateLabelLayoutItem())
|
||||||
|
.Add(menuField->CreateMenuBarLayoutItem())
|
||||||
|
.AddGlue()
|
||||||
|
.End()
|
||||||
|
.Add(scrollView)
|
||||||
|
.AddGroup(B_HORIZONTAL)
|
||||||
|
.Add(fCaseCheckBox)
|
||||||
|
.AddGlue()
|
||||||
|
.Add(button);
|
||||||
|
|
||||||
|
ResizeTo(std::max(Bounds().Width() / 2, 300.f),
|
||||||
|
button->Frame().Height() * 3 + 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user