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:
Michael Pfeiffer 2009-08-17 08:51:41 +00:00
parent 37dd4be139
commit 43337f64e4
5 changed files with 42 additions and 94 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2007, Haiku. * Copyright 2002-2009, Haiku.
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
* *
* Authors: * Authors:
@ -26,12 +26,19 @@
#include <Application.h> #include <Application.h>
#include <StorageKit.h> #include <StorageKit.h>
#include <Layout.h>
#include <GridLayout.h>
#include <GridLayoutBuilder.h>
#include <GroupLayoutBuilder.h>
#include <stdio.h> #include <stdio.h>
AddPrinterDialog::AddPrinterDialog(BWindow *parent) 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) Inherited(BRect(78.0, 71.0, 400, 300), "Add Printer",
, fPrintersPrefletMessenger(parent) B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS),
fPrintersPrefletMessenger(parent)
{ {
BuildGUI(0); BuildGUI(0);
@ -163,105 +170,54 @@ AddPrinterDialog::HandleChangedTransport(BMessage *msg)
void void
AddPrinterDialog::BuildGUI(int stage) 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 // add a "printer name" input field
fName = new BTextControl(r, "printer_name", fName = new BTextControl("printer_name", "Printer Name:", B_EMPTY_STRING,
NAME_LABEL, B_EMPTY_STRING, NULL, NULL);
B_FOLLOW_LEFT_RIGHT);
fName->SetFont(be_bold_font); fName->SetFont(be_bold_font);
fName->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT); fName->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
panel->AddChild(fName);
fName->SetModificationMessage(new BMessage(kNameChangedMsg)); 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 // add a "driver" popup menu field
fPrinter = new BPopUpMenu("<pick one>"); fPrinter = new BPopUpMenu("<pick one>");
BMenuField *printerMenuField = new BMenuField(r, "drivers_list", KIND_LABEL, fPrinter, BMenuField *printerMenuField = new BMenuField("drivers_list",
B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT, "Printer Type:", fPrinter);
B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
printerMenuField->SetFont(be_plain_font);
printerMenuField->SetAlignment(B_ALIGN_RIGHT); printerMenuField->SetAlignment(B_ALIGN_RIGHT);
panel->AddChild(printerMenuField);
printerMenuField->GetPreferredSize(&w, &h);
printerMenuField->ResizeTo(r.Width(), h);
FillMenu(fPrinter, "Print", kPrinterSelectedMsg); FillMenu(fPrinter, "Print", kPrinterSelectedMsg);
r.OffsetBy(0, printerMenuField->Bounds().Height() + kVMargin);
// add a "connected to" (aka transports list) menu field // add a "connected to" (aka transports list) menu field
fTransport = new BPopUpMenu("<pick one>"); fTransport = new BPopUpMenu("<pick one>");
BMenuField *transportMenuField = new BMenuField(r, "transports_list", PORT_LABEL, fTransport, BMenuField *transportMenuField = new BMenuField("transports_list",
B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT, "Connected to:", fTransport);
B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
transportMenuField->SetFont(be_plain_font);
transportMenuField->SetAlignment(B_ALIGN_RIGHT); transportMenuField->SetAlignment(B_ALIGN_RIGHT);
panel->AddChild(transportMenuField);
transportMenuField->GetPreferredSize(&w, &h);
transportMenuField->ResizeTo(r.Width(), h);
FillTransportMenu(fTransport); FillTransportMenu(fTransport);
r.OffsetBy(0, transportMenuField->Bounds().Height() + kVMargin); // add a "OK" button
fOk = new BButton(NULL, "Add", new BMessage((uint32)B_OK),
// 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),
B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM); 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 // add a "Cancel button
BButton *cancel = new BButton(r, NULL, "Cancel", new BMessage(B_CANCEL), B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM); BButton *cancel = new BButton(NULL, "Cancel", new BMessage(B_CANCEL));
cancel->ResizeToPreferred();
cancel->GetPreferredSize(&w, &h); SetLayout(new BGridLayout());
// put cancel button left next the ok button
x = fOk->Frame().left - w - kVMargin; AddChild(BGridLayoutBuilder(0, 4)
y = fOk->Frame().top; .Add(fName->CreateLabelLayoutItem(), 0, 0)
cancel->MoveTo(x, y); .Add(fName->CreateTextViewLayoutItem(), 1, 0)
panel->AddChild(cancel); .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); SetDefaultButton(fOk);
fOk->MakeDefault(true); 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); fName->MakeFocus(true);
Update(); Update();

View File

@ -1,7 +1,5 @@
SubDir HAIKU_TOP src preferences print ; SubDir HAIKU_TOP src preferences print ;
SetSubDirSupportedPlatformsBeOSCompatible ;
UsePrivateHeaders shared print ; UsePrivateHeaders shared print ;
Preference Printers : Preference Printers :
@ -20,8 +18,3 @@ Preference Printers :
: :
Printers.rdef Printers.rdef
; ;
Package haiku-printingkit-cvs :
Printers :
# boot beos preferences ;
boot home Desktop haiku-printingkit ;

View File

@ -47,7 +47,8 @@
JobListView::JobListView(BRect frame) 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)
{ {
} }

View File

@ -46,7 +46,8 @@
PrinterListView::PrinterListView(BRect frame) 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), fFolder(NULL),
fActivePrinter(NULL) fActivePrinter(NULL)
{ {

View File

@ -47,8 +47,7 @@
PrintersWindow::PrintersWindow(BRect frame) PrintersWindow::PrintersWindow(BRect frame)
: :
Inherited(BRect(78.0, 71.0, 561.0, 409.0), "Printers", B_TITLED_WINDOW, Inherited(BRect(78.0, 71.0, 561.0, 409.0), "Printers", B_TITLED_WINDOW, 0),
B_NOT_H_RESIZABLE),
fSelectedPrinter(NULL), fSelectedPrinter(NULL),
fAddingPrinter(false) fAddingPrinter(false)
{ {
@ -285,8 +284,6 @@ PrintersWindow::BuildGUI()
// Resize boxes to the same size // Resize boxes to the same size
jscroller->ResizeTo(width, jscroller->Bounds().Height()); jscroller->ResizeTo(width, jscroller->Bounds().Height());
pscroller->ResizeTo(width, pscroller->Bounds().Height()); pscroller->ResizeTo(width, pscroller->Bounds().Height());
SetSizeLimits(Bounds().Width(), Bounds().Width(), Bounds().Height(), 20000);
} }