Fixed some font size issues:
* Use layout manager in "Add printer dialog". * Made preferences window resizable. TODO printers and job list view should truncate text if it does not fit into a row. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32452 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
37dd4be139
commit
43337f64e4
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2007, Haiku.
|
||||
* Copyright 2002-2009, Haiku.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
|
@ -26,12 +26,19 @@
|
|||
#include <Application.h>
|
||||
#include <StorageKit.h>
|
||||
|
||||
#include <Layout.h>
|
||||
#include <GridLayout.h>
|
||||
#include <GridLayoutBuilder.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
AddPrinterDialog::AddPrinterDialog(BWindow *parent)
|
||||
: Inherited(BRect(78.0, 71.0, 400, 300), "Add Printer",
|
||||
B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL, B_NOT_ZOOMABLE)
|
||||
, fPrintersPrefletMessenger(parent)
|
||||
:
|
||||
Inherited(BRect(78.0, 71.0, 400, 300), "Add Printer",
|
||||
B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
|
||||
B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS),
|
||||
fPrintersPrefletMessenger(parent)
|
||||
{
|
||||
BuildGUI(0);
|
||||
|
||||
|
@ -163,105 +170,54 @@ AddPrinterDialog::HandleChangedTransport(BMessage *msg)
|
|||
void
|
||||
AddPrinterDialog::BuildGUI(int stage)
|
||||
{
|
||||
float w, h;
|
||||
// preferred size of current control
|
||||
|
||||
const int32 kHMargin = 8;
|
||||
const int32 kVMargin = 8;
|
||||
|
||||
#define NAME_LABEL "Printer Name:"
|
||||
#define KIND_LABEL "Printer Type:"
|
||||
#define PORT_LABEL "Connected to:"
|
||||
|
||||
|
||||
BRect r = Bounds();
|
||||
|
||||
BView *panel = new BView(r, "panel", B_FOLLOW_ALL, 0);
|
||||
AddChild(panel);
|
||||
panel->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||
|
||||
r.InsetBy(kHMargin, kVMargin);
|
||||
|
||||
// add a "printer name" input field
|
||||
fName = new BTextControl(r, "printer_name",
|
||||
NAME_LABEL, B_EMPTY_STRING, NULL,
|
||||
B_FOLLOW_LEFT_RIGHT);
|
||||
fName = new BTextControl("printer_name", "Printer Name:", B_EMPTY_STRING,
|
||||
NULL);
|
||||
fName->SetFont(be_bold_font);
|
||||
fName->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||
panel->AddChild(fName);
|
||||
fName->SetModificationMessage(new BMessage(kNameChangedMsg));
|
||||
fName->GetPreferredSize(&w, &h);
|
||||
fName->ResizeTo(r.Width(), h);
|
||||
|
||||
r.OffsetBy(0, h + 2 * kVMargin);
|
||||
|
||||
// add a "driver" popup menu field
|
||||
fPrinter = new BPopUpMenu("<pick one>");
|
||||
BMenuField *printerMenuField = new BMenuField(r, "drivers_list", KIND_LABEL, fPrinter,
|
||||
B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT,
|
||||
B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
|
||||
printerMenuField->SetFont(be_plain_font);
|
||||
BMenuField *printerMenuField = new BMenuField("drivers_list",
|
||||
"Printer Type:", fPrinter);
|
||||
printerMenuField->SetAlignment(B_ALIGN_RIGHT);
|
||||
panel->AddChild(printerMenuField);
|
||||
printerMenuField->GetPreferredSize(&w, &h);
|
||||
printerMenuField->ResizeTo(r.Width(), h);
|
||||
FillMenu(fPrinter, "Print", kPrinterSelectedMsg);
|
||||
|
||||
r.OffsetBy(0, printerMenuField->Bounds().Height() + kVMargin);
|
||||
|
||||
// add a "connected to" (aka transports list) menu field
|
||||
fTransport = new BPopUpMenu("<pick one>");
|
||||
BMenuField *transportMenuField = new BMenuField(r, "transports_list", PORT_LABEL, fTransport,
|
||||
B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT,
|
||||
B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
|
||||
transportMenuField->SetFont(be_plain_font);
|
||||
BMenuField *transportMenuField = new BMenuField("transports_list",
|
||||
"Connected to:", fTransport);
|
||||
transportMenuField->SetAlignment(B_ALIGN_RIGHT);
|
||||
panel->AddChild(transportMenuField);
|
||||
transportMenuField->GetPreferredSize(&w, &h);
|
||||
transportMenuField->ResizeTo(r.Width(), h);
|
||||
FillTransportMenu(fTransport);
|
||||
|
||||
r.OffsetBy(0, transportMenuField->Bounds().Height() + kVMargin);
|
||||
|
||||
// update dividers
|
||||
float divider = be_bold_font->StringWidth(NAME_LABEL "#");
|
||||
divider = max_c(divider, be_plain_font->StringWidth(NAME_LABEL "#"));
|
||||
divider = max_c(divider, be_plain_font->StringWidth(PORT_LABEL "#"));
|
||||
|
||||
fName->SetDivider(divider);
|
||||
printerMenuField->SetDivider(divider);
|
||||
transportMenuField->SetDivider(divider);
|
||||
|
||||
// add a "OK" button, and make it default
|
||||
fOk = new BButton(r, NULL, "Add", new BMessage((uint32)B_OK),
|
||||
// add a "OK" button
|
||||
fOk = new BButton(NULL, "Add", new BMessage((uint32)B_OK),
|
||||
B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
|
||||
fOk->ResizeToPreferred();
|
||||
fOk->GetPreferredSize(&w, &h);
|
||||
// put the ok bottom at bottom right corner
|
||||
float x = panel->Bounds().right - w - kHMargin;
|
||||
float y = panel->Bounds().bottom - h - kVMargin;
|
||||
fOk->MoveTo(x, y);
|
||||
panel->AddChild(fOk);
|
||||
|
||||
// add a "Cancel button
|
||||
BButton *cancel = new BButton(r, NULL, "Cancel", new BMessage(B_CANCEL), B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
|
||||
cancel->ResizeToPreferred();
|
||||
cancel->GetPreferredSize(&w, &h);
|
||||
// put cancel button left next the ok button
|
||||
x = fOk->Frame().left - w - kVMargin;
|
||||
y = fOk->Frame().top;
|
||||
cancel->MoveTo(x, y);
|
||||
panel->AddChild(cancel);
|
||||
BButton *cancel = new BButton(NULL, "Cancel", new BMessage(B_CANCEL));
|
||||
|
||||
SetLayout(new BGridLayout());
|
||||
|
||||
AddChild(BGridLayoutBuilder(0, 4)
|
||||
.Add(fName->CreateLabelLayoutItem(), 0, 0)
|
||||
.Add(fName->CreateTextViewLayoutItem(), 1, 0)
|
||||
.Add(printerMenuField->CreateLabelLayoutItem(), 0, 1)
|
||||
.Add(printerMenuField->CreateMenuBarLayoutItem(), 1, 1)
|
||||
.Add(transportMenuField->CreateLabelLayoutItem(), 0, 2)
|
||||
.Add(transportMenuField->CreateMenuBarLayoutItem(), 1, 2)
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL)
|
||||
.AddGlue()
|
||||
.Add(cancel)
|
||||
.Add(fOk)
|
||||
, 0, 3, 2)
|
||||
.SetInsets(8, 8, 8, 8)
|
||||
);
|
||||
|
||||
SetDefaultButton(fOk);
|
||||
fOk->MakeDefault(true);
|
||||
|
||||
// Auto resize window
|
||||
r.bottom = transportMenuField->Frame().bottom + fOk->Bounds().Height() + 2 * kVMargin;
|
||||
ResizeTo(r.right, r.bottom);
|
||||
|
||||
SetSizeLimits(r.right, 10e5, r.bottom, 10e5);
|
||||
|
||||
fName->MakeFocus(true);
|
||||
|
||||
Update();
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
SubDir HAIKU_TOP src preferences print ;
|
||||
|
||||
SetSubDirSupportedPlatformsBeOSCompatible ;
|
||||
|
||||
UsePrivateHeaders shared print ;
|
||||
|
||||
Preference Printers :
|
||||
|
@ -20,8 +18,3 @@ Preference Printers :
|
|||
:
|
||||
Printers.rdef
|
||||
;
|
||||
|
||||
Package haiku-printingkit-cvs :
|
||||
Printers :
|
||||
# boot beos preferences ;
|
||||
boot home Desktop haiku-printingkit ;
|
||||
|
|
|
@ -47,7 +47,8 @@
|
|||
|
||||
|
||||
JobListView::JobListView(BRect frame)
|
||||
: Inherited(frame, "jobs_list", B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL)
|
||||
: Inherited(frame, "jobs_list", B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL,
|
||||
B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE | B_FULL_UPDATE_ON_RESIZE)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,8 @@
|
|||
|
||||
|
||||
PrinterListView::PrinterListView(BRect frame)
|
||||
: Inherited(frame, "printers_list", B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL),
|
||||
: Inherited(frame, "printers_list", B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL,
|
||||
B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE | B_FULL_UPDATE_ON_RESIZE),
|
||||
fFolder(NULL),
|
||||
fActivePrinter(NULL)
|
||||
{
|
||||
|
|
|
@ -47,8 +47,7 @@
|
|||
|
||||
PrintersWindow::PrintersWindow(BRect frame)
|
||||
:
|
||||
Inherited(BRect(78.0, 71.0, 561.0, 409.0), "Printers", B_TITLED_WINDOW,
|
||||
B_NOT_H_RESIZABLE),
|
||||
Inherited(BRect(78.0, 71.0, 561.0, 409.0), "Printers", B_TITLED_WINDOW, 0),
|
||||
fSelectedPrinter(NULL),
|
||||
fAddingPrinter(false)
|
||||
{
|
||||
|
@ -285,8 +284,6 @@ PrintersWindow::BuildGUI()
|
|||
// Resize boxes to the same size
|
||||
jscroller->ResizeTo(width, jscroller->Bounds().Height());
|
||||
pscroller->ResizeTo(width, pscroller->Bounds().Height());
|
||||
|
||||
SetSizeLimits(Bounds().Width(), Bounds().Width(), Bounds().Height(), 20000);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue