diff --git a/src/preferences/print/AddPrinterDialog.cpp b/src/preferences/print/AddPrinterDialog.cpp index e0a21cc449..63e7466935 100644 --- a/src/preferences/print/AddPrinterDialog.cpp +++ b/src/preferences/print/AddPrinterDialog.cpp @@ -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 #include +#include +#include +#include +#include + #include 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(""); - 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(""); - 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(); diff --git a/src/preferences/print/Jamfile b/src/preferences/print/Jamfile index 5f33e6a562..6aa8e25dcf 100644 --- a/src/preferences/print/Jamfile +++ b/src/preferences/print/Jamfile @@ -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 ; diff --git a/src/preferences/print/JobListView.cpp b/src/preferences/print/JobListView.cpp index 38cca75863..ea0d6b2e07 100644 --- a/src/preferences/print/JobListView.cpp +++ b/src/preferences/print/JobListView.cpp @@ -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) { } diff --git a/src/preferences/print/PrinterListView.cpp b/src/preferences/print/PrinterListView.cpp index 10de28b93a..717c6d2276 100644 --- a/src/preferences/print/PrinterListView.cpp +++ b/src/preferences/print/PrinterListView.cpp @@ -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) { diff --git a/src/preferences/print/PrintersWindow.cpp b/src/preferences/print/PrintersWindow.cpp index 0245dfdc88..acc6c62157 100644 --- a/src/preferences/print/PrintersWindow.cpp +++ b/src/preferences/print/PrintersWindow.cpp @@ -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); }