Updated to use B_TRANSLATE* macros. relates to #5408.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36663 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Matt Madia 2010-05-06 16:11:12 +00:00
parent 4e689749d8
commit 04bcc0b403
10 changed files with 219 additions and 207 deletions

View File

@ -1,12 +1,12 @@
/*
* Copyright 2008-2009, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
*
* Authors:
* Michael Pfeiffer <laplace@users.sourceforge.net>
* Axel Dörfler <axeld@pinc-software.de>
*/
*/
#include "BootManagerWindow.h"
#include <Alert.h>
@ -55,17 +55,19 @@ void
BootManager::AboutRequested()
{
BString aboutText;
const char* title = TR_CMT("Haiku Boot Manager", "About text title");
const char* title = B_TRANSLATE_COMMENT("Haiku Boot Manager",
"About text title");
aboutText <<
title << "\n\n" <<
TR("written by") << "\n"
B_TRANSLATE("written by") << "\n"
"\tDavid Dengg\n"
"\tMichael Pfeiffer\n"
"\n" <<
TR_CMT("Copyright %year, Haiku Inc.\n", "Leave %year untranslated");
B_TRANSLATE_COMMENT("Copyright %year, Haiku Inc.\n",
"Leave %year untranslated");
aboutText.ReplaceLast("%year", "2008-2010");
BAlert *alert = new BAlert("about",
aboutText.String(), TR("OK"));
aboutText.String(), B_TRANSLATE("OK"));
BTextView *view = alert->TextView();
BFont font;

View File

@ -155,8 +155,8 @@ BootManagerController::_HasSelectedPartitions()
}
BAlert* alert = new BAlert("info",
TR("At least one partition must be selected!"),
TR_CMT("OK", "Button"));
B_TRANSLATE("At least one partition must be selected!"),
B_TRANSLATE_COMMENT("OK", "Button"));
alert->Go();
return false;
@ -166,10 +166,10 @@ BootManagerController::_HasSelectedPartitions()
bool
BootManagerController::_WriteBootMenu()
{
BAlert* alert = new BAlert("confirm", TR("About to write the boot menu "
"to disk. Are you sure you want to continue?"),
TR_CMT("Write boot menu", "Button"),
TR_CMT("Back", "Button"), NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT);
BAlert* alert = new BAlert("confirm", B_TRANSLATE("About to write the "
"boot menu to disk. Are you sure you want to continue?"),
B_TRANSLATE_COMMENT("Write boot menu", "Button"),
B_TRANSLATE_COMMENT("Back", "Button"), NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT);
if (alert->Go() == 1)
return false;
@ -199,15 +199,15 @@ BootManagerController::_RestoreMBR()
fSettings.FindString("file", &path);
BString message;
message << TR_CMT("About to restore the Master Boot Record (MBR) of"
" %disk from %file. Do you wish to continue?",
message << B_TRANSLATE_COMMENT("About to restore the Master Boot Record "
"(MBR) of %disk from %file. Do you wish to continue?",
"Don't translate the place holders: %disk and %file");
message.ReplaceFirst("%disk", disk);
message.ReplaceFirst("%file", path);
BAlert* alert = new BAlert("confirm", message.String(),
TR_CMT("Restore MBR", "Button"),
TR_CMT("Back", "Button"),
B_TRANSLATE_COMMENT("Restore MBR", "Button"),
B_TRANSLATE_COMMENT("Back", "Button"),
NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT);
if (alert->Go() == 1)
return false;
@ -232,7 +232,7 @@ BootManagerController::CreatePage(int32 state, WizardView* wizard)
case kStateErrorEntry:
page = _CreateErrorEntryPage(frame);
wizard->SetPreviousButtonHidden(true);
wizard->SetNextButtonLabel(TR_CMT("Done", "Button"));
wizard->SetNextButtonLabel(B_TRANSLATE_COMMENT("Done", "Button"));
break;
case kStateSaveMBR:
page = _CreateSaveMBRPage(frame);
@ -250,21 +250,21 @@ BootManagerController::CreatePage(int32 state, WizardView* wizard)
break;
case kStateInstallSummary:
page = _CreateInstallSummaryPage(frame);
wizard->SetNextButtonLabel(TR_CMT("Next", "Button"));
wizard->SetNextButtonLabel(B_TRANSLATE_COMMENT("Next", "Button"));
break;
case kStateInstalled:
page = _CreateInstalledPage(frame);
wizard->SetNextButtonLabel(TR_CMT("Done", "Button"));
wizard->SetNextButtonLabel(B_TRANSLATE_COMMENT("Done", "Button"));
break;
case kStateUninstall:
page = _CreateUninstallPage(frame);
wizard->SetPreviousButtonHidden(false);
wizard->SetNextButtonLabel(TR_CMT("Next", "Button"));
wizard->SetNextButtonLabel(B_TRANSLATE_COMMENT("Next", "Button"));
break;
case kStateUninstalled:
// TODO prevent overwriting MBR after clicking "Previous"
page = _CreateUninstalledPage(frame);
wizard->SetNextButtonLabel(TR_CMT("Done", "Button"));
wizard->SetNextButtonLabel(B_TRANSLATE_COMMENT("Done", "Button"));
break;
}
@ -279,15 +279,17 @@ BootManagerController::_CreateErrorEntryPage(BRect frame)
if (fReadPartitionsStatus == kErrorBootSectorTooSmall)
description <<
TR_CMT("Partition table not compatible", "Title") << "\n\n" <<
TR("The partition table of the first hard disk is not compatible "
"with Boot Manager.\n"
B_TRANSLATE_COMMENT("Partition table not compatible", "Title") <<
"\n\n" <<
B_TRANSLATE("The partition table of the first hard disk is not "
"compatible with Boot Manager.\n"
"Boot Manager needs 2 KB available space before the first "
"partition.");
else
description <<
TR_CMT("Error reading partition table", "Title") << "\n\n" <<
TR("Boot Manager is unable to read the partition table!");
B_TRANSLATE_COMMENT("Error reading partition table", "Title") <<
"\n\n" <<
B_TRANSLATE("Boot Manager is unable to read the partition table!");
return new DescriptionPage(frame, "errorEntry", description.String(), true);
}
@ -301,8 +303,8 @@ BootManagerController::_CreateSaveMBRPage(BRect frame)
fSettings.FindString("disk", &disk);
description <<
TR_CMT("Backup Master Boot Record", "Title") << "\n\n" <<
TR("The Master Boot Record (MBR) of the boot device:\n"
B_TRANSLATE_COMMENT("Backup Master Boot Record", "Title") << "\n\n" <<
B_TRANSLATE("The Master Boot Record (MBR) of the boot device:\n"
"\t%s\n"
"will now be saved to disk. Please select a file to "
"save the MBR into.\n\n"
@ -326,8 +328,10 @@ BootManagerController::_CreateMBRSavedPage(BRect frame)
if (fSaveMBRStatus == B_OK) {
description <<
TR_CMT("Old Master Boot Record saved", "Title") << "\n\n" <<
TR("The old Master Boot Record was successfully save to %s.") <<
B_TRANSLATE_COMMENT("Old Master Boot Record saved", "Title") <<
"\n\n" <<
B_TRANSLATE("The old Master Boot Record was successfully save to "
"%s.") <<
"\n";
} else {
description <<

View File

@ -1,7 +1,7 @@
/*
* Copyright 2008, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
*
* Authors:
* Michael Pfeiffer <laplace@users.sourceforge.net>
*/
@ -32,19 +32,20 @@
BootManagerWindow::BootManagerWindow()
:
BWindow(BRect(100, 100, 500, 400), TR_CMT("Boot Manager", "Window Title"),
BWindow(BRect(100, 100, 500, 400), B_TRANSLATE_COMMENT("Boot Manager",
"Window Title"),
B_TITLED_WINDOW,
B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE)
{
float minWidth, maxWidth, minHeight, maxHeight;
GetSizeLimits(&minWidth, &maxWidth, &minHeight, &maxHeight);
SetSizeLimits(250, maxWidth, 250, maxHeight);
fWizardView = new WizardView(Bounds(), "wizard", B_FOLLOW_ALL);
AddChild(fWizardView);
fController.Initialize(fWizardView);
AddShortcut('A', B_COMMAND_KEY, new BMessage(B_ABOUT_REQUESTED));
CenterOnScreen();
@ -68,18 +69,18 @@ BootManagerWindow::MessageReceived(BMessage* msg)
case kMessageNext:
fController.Next(fWizardView);
break;
case kMessagePrevious:
fController.Previous(fWizardView);
break;
case B_ABOUT_REQUESTED:
be_app_messenger.SendMessage(B_ABOUT_REQUESTED);
break;
default:
BWindow::MessageReceived(msg);
}
}
}

View File

@ -1,7 +1,7 @@
/*
* Copyright 2008, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
*
* Authors:
* Michael Pfeiffer <laplace@users.sourceforge.net>
*/
@ -45,14 +45,14 @@ typedef struct {
static const TimeoutOption gTimeoutOptions[] =
{
{ 0, TR_MARK("Immediately")},
{ 1, TR_MARK("After one second")},
{ 2, TR_MARK("After two seconds")},
{ 3, TR_MARK("After three seconds")},
{ 4, TR_MARK("After four seconds")},
{ 5, TR_MARK("After five seconds")},
{ 60, TR_MARK("After one minute")},
{ kTimeoutIndefinitely, TR_MARK("Never")}
{ 0, B_TRANSLATE_MARK("Immediately")},
{ 1, B_TRANSLATE_MARK("After one second")},
{ 2, B_TRANSLATE_MARK("After two seconds")},
{ 3, B_TRANSLATE_MARK("After three seconds")},
{ 4, B_TRANSLATE_MARK("After four seconds")},
{ 5, B_TRANSLATE_MARK("After five seconds")},
{ 60, B_TRANSLATE_MARK("After one minute")},
{ kTimeoutIndefinitely, B_TRANSLATE_MARK("Never")}
};
@ -95,7 +95,7 @@ get_label_for_timeout(int32 timeout)
DefaultPartitionPage::DefaultPartitionPage(BMessage* settings, BRect frame, const char* name)
: WizardPageView(settings, frame, name, B_FOLLOW_ALL,
: WizardPageView(settings, frame, name, B_FOLLOW_ALL,
B_WILL_DRAW | B_FRAME_EVENTS | B_FULL_UPDATE_ON_RESIZE)
{
_BuildUI();
@ -157,11 +157,11 @@ void
DefaultPartitionPage::_BuildUI()
{
BRect rect(Bounds());
BString text;
text <<
TR_CMT("Default Partition", "Title") << "\n\n" <<
TR("Please specify a default partition and a timeout.\n"
B_TRANSLATE_COMMENT("Default Partition", "Title") << "\n\n" <<
B_TRANSLATE("Please specify a default partition and a timeout.\n"
"The boot menu will load the default partition after "
"the timeout unless you select another partition. You "
"can also have the boot menu wait indefinitely for you "
@ -173,15 +173,16 @@ DefaultPartitionPage::_BuildUI()
AddChild(fDescription);
LayoutDescriptionVertically(fDescription);
rect.top = fDescription->Frame().bottom + kTextDistance;
BPopUpMenu* popUpMenu = _CreatePopUpMenu();
BPopUpMenu* popUpMenu = _CreatePopUpMenu();
fDefaultPartition = new BMenuField(rect, "partitions",
TR_CMT("Default Partition:", "Menu field label"), popUpMenu);
B_TRANSLATE_COMMENT("Default Partition:", "Menu field label"),
popUpMenu);
float divider = be_plain_font->StringWidth(fDefaultPartition->Label()) + 3;
fDefaultPartition->SetDivider(divider);
AddChild(fDefaultPartition);
fDefaultPartition->ResizeToPreferred();
// timeout slider
rect.top = fDefaultPartition->Frame().bottom + kTextDistance;
int32 timeout;
@ -197,12 +198,13 @@ DefaultPartitionPage::_BuildUI()
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);
fTimeoutSlider->SetModificationMessage(new BMessage(kMsgTimeout));
fTimeoutSlider->SetValue(sliderValue);
fTimeoutSlider->SetLimitLabels(TR("Immediately"),TR("Never"));
fTimeoutSlider->SetLimitLabels(B_TRANSLATE("Immediately"),
B_TRANSLATE("Never"));
fTimeoutSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
fTimeoutSlider->SetHashMarkCount(kNumberOfTimeoutOptions);
fTimeoutSlider->ResizeToPreferred();
AddChild(fTimeoutSlider);
_Layout();
}
@ -212,20 +214,20 @@ DefaultPartitionPage::_CreatePopUpMenu()
{
int32 defaultPartitionIndex;
fSettings->FindInt32("defaultPartition", &defaultPartitionIndex);
BMenuItem* selectedItem = NULL;
int32 selectedItemIndex = 0;
BPopUpMenu* menu = new BPopUpMenu(TR_CMT("Partitions",
BPopUpMenu* menu = new BPopUpMenu(B_TRANSLATE_COMMENT("Partitions",
"Pop up menu title"));
BMessage message;
for (int32 i = 0; fSettings->FindMessage("partition", i, &message) == B_OK;
i ++) {
bool show;
if (message.FindBool("show", &show) != B_OK || !show)
continue;
BString name;
message.FindString("name", &name);
@ -247,8 +249,8 @@ DefaultPartitionPage::_CreatePopUpMenu()
void
DefaultPartitionPage::_GetTimeoutLabel(int32 timeout, BString& label)
{
const char* text = TR(get_label_for_timeout(timeout));
label = TR("Timeout: %s");
const char* text = B_TRANSLATE(get_label_for_timeout(timeout));
label = B_TRANSLATE("Timeout: %s");
label.ReplaceFirst("%s", text);
}
@ -257,10 +259,10 @@ void
DefaultPartitionPage::_Layout()
{
LayoutDescriptionVertically(fDescription);
float left = fDefaultPartition->Frame().left;
float top = fDescription->Frame().bottom + kTextDistance;
fDefaultPartition->MoveTo(left, top);
top = fDefaultPartition->Frame().bottom + kTextDistance;

View File

@ -66,8 +66,8 @@ EntryPage::_BuildUI()
BString text;
text <<
TR_CMT("Install boot menu", "Title") << "\n\n" <<
TR("Choose this option to install a boot menu, "
B_TRANSLATE_COMMENT("Install boot menu", "Title") << "\n\n" <<
B_TRANSLATE("Choose this option to install a boot menu, "
"allowing you to select which operating "
"system to boot when you turn on your "
"computer.") << "\n";
@ -83,8 +83,8 @@ EntryPage::_BuildUI()
text.Truncate(0);
text <<
TR_CMT("Uninstall boot menu", "Title") << "\n\n" <<
TR("Choose this option to remove the boot menu "
B_TRANSLATE_COMMENT("Uninstall boot menu", "Title") << "\n\n" <<
B_TRANSLATE("Choose this option to remove the boot menu "
"previously installed by this program.\n");
fUninstallText = CreateDescription(textRect, "uninstallText", text);
MakeHeading(fUninstallText);

View File

@ -1,7 +1,7 @@
/*
* Copyright 2008, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
*
* Authors:
* Michael Pfeiffer <laplace@users.sourceforge.net>
*/
@ -30,7 +30,7 @@ const uint32 kMsgOpenFilePanel = 'open';
FileSelectionPage::FileSelectionPage(BMessage* settings, BRect frame, const char* name,
const char* description, file_panel_mode mode)
: WizardPageView(settings, frame, name, B_FOLLOW_ALL,
: WizardPageView(settings, frame, name, B_FOLLOW_ALL,
B_WILL_DRAW | B_FRAME_EVENTS | B_FULL_UPDATE_ON_RESIZE)
, fMode(mode)
, fFilePanel(NULL)
@ -93,16 +93,17 @@ void
FileSelectionPage::_BuildUI(const char* description)
{
BRect rect(Bounds());
fDescription = CreateDescription(rect, "description", description);
MakeHeading(fDescription);
AddChild(fDescription);
BString file;
fSettings->FindString("file", &file);
fSelect = new BButton(rect, "select", TR_CMT("Select", "Button"),
fSelect = new BButton(rect, "select",
B_TRANSLATE_COMMENT("Select", "Button"),
new BMessage(kMsgOpenFilePanel),
B_FOLLOW_RIGHT);
fSelect->ResizeToPreferred();
@ -110,14 +111,14 @@ FileSelectionPage::_BuildUI(const char* description)
float selectLeft = rect.right - fSelect->Bounds().Width();
rect.right = selectLeft - kFileButtonDistance;
fFile = new BTextControl(rect, "file",
TR_CMT("File:", "Text control label"),
B_TRANSLATE_COMMENT("File:", "Text control label"),
file.String(), new BMessage());
fFile->SetDivider(be_plain_font->StringWidth(fFile->Label()) + 5);
AddChild(fFile);
fSelect->MoveTo(selectLeft, 0);
AddChild(fSelect);
_Layout();
}
@ -126,7 +127,7 @@ void
FileSelectionPage::_Layout()
{
LayoutDescriptionVertically(fDescription);
float left = fFile->Frame().left;
float top = fDescription->Frame().bottom + kTextDistance;
@ -144,10 +145,10 @@ FileSelectionPage::_Layout()
}
fFile->MoveTo(left, fileTop);
float width = fSelect->Frame().left - kFileButtonDistance - left;
fFile->ResizeTo(width, fileHeight);
left = fSelect->Frame().left;
fSelect->MoveTo(left, selectTop);
}
@ -167,7 +168,7 @@ FileSelectionPage::_OpenFilePanel()
if (file.GetParent(&parent) == B_OK &&
get_ref_for_path(parent.Path(), &base) == B_OK)
directory = &base;
BMessenger messenger(this);
fFilePanel = new BFilePanel(fMode, &messenger, directory,
B_FILE_NODE,
@ -198,7 +199,7 @@ FileSelectionPage::_SetFileFromFilePanelMessage(BMessage* message)
BEntry entry(&entryRef);
BPath path;
if (entry.GetPath(&path) == B_OK)
fFile->SetText(path.Path());
fFile->SetText(path.Path());
}
}

View File

@ -1,7 +1,7 @@
/*
* Copyright 2008, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
*
* Authors:
* Michael Pfeiffer <laplace@users.sourceforge.net>
*/
@ -43,7 +43,7 @@
#define GET_FIRST_BIOS_DRIVE 1
class Buffer : public BMallocIO
class Buffer : public BMallocIO
{
public:
Buffer() : BMallocIO() {}
@ -58,7 +58,7 @@ public:
bool
Buffer::WriteInt8(int8 value)
Buffer::WriteInt8(int8 value)
{
return Write(&value, sizeof(value)) == sizeof(value);
}
@ -123,12 +123,12 @@ class PartitionRecorder : public BDiskDeviceVisitor
public:
PartitionRecorder(BMessage* settings, int8 drive);
virtual bool Visit(BDiskDevice* device);
virtual bool Visit(BDiskDevice* device);
virtual bool Visit(BPartition* partition, int32 level);
bool HasPartitions() const;
bool HasPartitions() const;
off_t FirstOffset() const;
private:
bool _Record(BPartition* partition);
@ -181,7 +181,7 @@ PartitionRecorder::_Record(BPartition* partition)
{
if (partition->ContainsPartitioningSystem())
return false;
BPath partitionPath;
partition->GetPath(&partitionPath);
@ -191,17 +191,18 @@ PartitionRecorder::_Record(BPartition* partition)
fIndex ++;
BString number;
number << fIndex;
buffer << TR_CMT("Unnamed %d",
buffer << B_TRANSLATE_COMMENT("Unnamed %d",
"Default name of a partition whose name could not be read from "
"disk; characters in codepage 437 are allowed only");
buffer.ReplaceFirst("%d", number);
name = buffer.String();
}
const char* type = partition->Type();
if (type == NULL)
type = TR_CMT("Unknown", "Text is shown for an unknown partition type");
type = B_TRANSLATE_COMMENT("Unknown", "Text is shown for an unknown "
"partition type");
BMessage message;
// Data as required by BootLoader.h
message.AddBool("show", true);
@ -209,16 +210,16 @@ PartitionRecorder::_Record(BPartition* partition)
message.AddString("type", type);
message.AddString("path", partitionPath.Path());
message.AddInt8("drive", fDrive);
message.AddInt64("size", partition->Size());
message.AddInt64("size", partition->Size());
// Specific data
off_t offset = partition->Offset();
message.AddInt64("offset", offset);
fSettings->AddMessage("partition", &message);
if (offset < fFirstOffset)
fFirstOffset = offset;
return false;
}
@ -248,42 +249,42 @@ LegacyBootDrive::ReadPartitions(BMessage *settings)
BDiskDevice device;
bool diskFound = false;
while (diskDeviceRoster.GetNextDevice(&device) == B_OK) {
BPath path;
status_t status = device.GetPath(&path);
status_t status = device.GetPath(&path);
if (status != B_OK)
return status;
// skip not from BIOS bootable drives
int8 drive;
if (!_GetBiosDrive(path.Path(), &drive))
continue;
PartitionRecorder recorder(settings, drive);
device.VisitEachDescendant(&recorder);
if (!diskFound) {
settings->AddString("disk", path.Path());
diskFound = true;
#if !USE_SECOND_DISK
// Enough space to write boot menu to drive?
// (ignored in test build)
off_t size = sizeof(kBootLoader);
if (!recorder.HasPartitions() || recorder.FirstOffset() < size)
return kErrorBootSectorTooSmall;
// TODO remove when booting from all drives works
break;
#endif
}
}
}
#if USE_SECOND_DISK
// for testing only write boot menu to second hdd
settings->ReplaceString("disk", "/dev/disk/ata/1/master/raw");
#endif
if (diskFound)
return B_OK;
else
@ -297,40 +298,40 @@ LegacyBootDrive::WriteBootMenu(BMessage *settings)
BString path;
if (settings->FindString("disk", &path) != B_OK)
return B_BAD_VALUE;
int32 defaultPartitionIndex;
if (settings->FindInt32("defaultPartition", &defaultPartitionIndex) != B_OK)
return B_BAD_VALUE;
int32 timeout;
if (settings->FindInt32("timeout", &timeout) != B_OK)
return B_BAD_VALUE;
int fd = open(path.String(), O_RDWR);
if (fd < 0)
return B_IO_ERROR;
MasterBootRecord oldMBR;
if (read(fd, &oldMBR, sizeof(oldMBR)) != sizeof(oldMBR)) {
close(fd);
return B_IO_ERROR;
}
if (!_IsValid(&oldMBR)) {
close(fd);
return B_BAD_VALUE;
}
Buffer newBootLoader;
ssize_t size = sizeof(kBootLoader);
if (newBootLoader.Write(kBootLoader, size) != size) {
close(fd);
return B_NO_MEMORY;
}
MasterBootRecord* newMBR = (MasterBootRecord*)newBootLoader.BMallocIO::Buffer();
_CopyPartitionTable(newMBR, &oldMBR);
int menuEntries = 0;
int defaultMenuEntry = 0;
BMessage partition;
@ -342,14 +343,14 @@ LegacyBootDrive::WriteBootMenu(BMessage *settings)
continue;
if (index == defaultPartitionIndex)
defaultMenuEntry = menuEntries;
menuEntries ++;
}
newBootLoader.WriteInt16(menuEntries);
newBootLoader.WriteInt16(defaultMenuEntry);
newBootLoader.WriteInt16(timeout);
for (index = 0; settings->FindMessage("partition", index, &partition) == B_OK; index ++) {
bool show;
BString name;
@ -364,20 +365,20 @@ LegacyBootDrive::WriteBootMenu(BMessage *settings)
partition.FindInt8("drive", &drive);
if (!show)
continue;
BString biosName;
_ConvertToBIOSText(name.String(), biosName);
newBootLoader.WriteString(biosName.String());
newBootLoader.WriteInt8(drive);
newBootLoader.WriteInt64(offset / kBlockSize);
}
}
if (!newBootLoader.Align(kBlockSize)) {
close(fd);
return B_ERROR;
}
lseek(fd, 0, SEEK_SET);
const uint8* buffer = (uint8*)newBootLoader.BMallocIO::Buffer();
status_t status = _WriteBlocks(fd, buffer, newBootLoader.Position());
@ -388,20 +389,20 @@ LegacyBootDrive::WriteBootMenu(BMessage *settings)
status_t
LegacyBootDrive::SaveMasterBootRecord(BMessage* settings, BFile* file)
{
{
BString path;
if (settings->FindString("disk", &path) != B_OK)
return B_BAD_VALUE;
int fd = open(path.String(), O_RDONLY);
if (fd < 0)
return B_IO_ERROR;
ssize_t size = kBlockSize * kNumberOfBootLoaderBlocks;
uint8* buffer = new(std::nothrow) uint8[size];
if (buffer == NULL) {
close(fd);
close(fd);
return B_NO_MEMORY;
}
@ -410,7 +411,7 @@ LegacyBootDrive::SaveMasterBootRecord(BMessage* settings, BFile* file)
close(fd);
delete[] buffer;
return B_IO_ERROR;
}
}
MasterBootRecord* mbr = (MasterBootRecord*)buffer;
if (!_IsValid(mbr)) {
@ -421,7 +422,7 @@ LegacyBootDrive::SaveMasterBootRecord(BMessage* settings, BFile* file)
if (file->Write(buffer, size) != size)
status = B_IO_ERROR;
delete[] buffer;
delete[] buffer;
close(fd);
return status;
}
@ -433,27 +434,27 @@ LegacyBootDrive::RestoreMasterBootRecord(BMessage* settings, BFile* file)
BString path;
if (settings->FindString("disk", &path) != B_OK)
return B_BAD_VALUE;
int fd = open(path.String(), O_RDWR);
if (fd < 0)
return B_IO_ERROR;
MasterBootRecord oldMBR;
if (read(fd, &oldMBR, sizeof(oldMBR)) != sizeof(oldMBR)) {
close(fd);
return B_IO_ERROR;
return B_IO_ERROR;
}
if (!_IsValid(&oldMBR)) {
close(fd);
return B_BAD_VALUE;
}
lseek(fd, 0, SEEK_SET);
lseek(fd, 0, SEEK_SET);
size_t size = kBlockSize * kNumberOfBootLoaderBlocks;
uint8* buffer = new(std::nothrow) uint8[size];
if (buffer == NULL) {
close(fd);
close(fd);
return B_NO_MEMORY;
}
@ -461,7 +462,7 @@ LegacyBootDrive::RestoreMasterBootRecord(BMessage* settings, BFile* file)
close(fd);
delete[] buffer;
return B_IO_ERROR;
}
}
MasterBootRecord* newMBR = (MasterBootRecord*)buffer;
if (!_IsValid(newMBR)) {
@ -469,11 +470,11 @@ LegacyBootDrive::RestoreMasterBootRecord(BMessage* settings, BFile* file)
delete[] buffer;
return B_BAD_VALUE;
}
_CopyPartitionTable(newMBR, &oldMBR);
status_t status = _WriteBlocks(fd, buffer, size);
delete[] buffer;
delete[] buffer;
close(fd);
return status;
}
@ -590,7 +591,7 @@ void
LegacyBootDrive::_CopyPartitionTable(MasterBootRecord* destination,
const MasterBootRecord* source)
{
memcpy(destination->diskSignature, source->diskSignature,
memcpy(destination->diskSignature, source->diskSignature,
sizeof(source->diskSignature) + sizeof(source->reserved) +
sizeof(source->partition));
}

View File

@ -1,7 +1,7 @@
/*
* Copyright 2008, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
*
* Authors:
* Michael Pfeiffer, laplace@users.sourceforge.net
* Ingo Weinhold <bonefish@cs.tu-berlin.de>
@ -33,7 +33,7 @@ const uint32 kMessageName = 'name';
PartitionsPage::PartitionsPage(BMessage* settings, BRect frame, const char* name)
: WizardPageView(settings, frame, name, B_FOLLOW_ALL,
: WizardPageView(settings, frame, name, B_FOLLOW_ALL,
B_WILL_DRAW | B_FRAME_EVENTS | B_FULL_UPDATE_ON_RESIZE)
{
_BuildUI();
@ -59,23 +59,23 @@ PartitionsPage::PageCompleted()
BControl* control = dynamic_cast<BControl*>(child);
if (control == NULL)
continue;
int32 index;
BMessage* message = control->Message();
if (message == NULL || message->FindInt32("index", &index) != B_OK)
continue;
BMessage partition;
if (fSettings->FindMessage("partition", index, &partition) != B_OK)
continue;
if (kMessageShow == message->what) {
partition.ReplaceBool("show", control->Value() == 1);
} else if (kMessageName == message->what &&
dynamic_cast<BTextControl*>(control) != NULL) {
partition.ReplaceString("name", ((BTextControl*)control)->Text());
}
fSettings->ReplaceMessage("partition", index, &partition);
}
}
@ -96,11 +96,11 @@ void
PartitionsPage::_BuildUI()
{
BRect rect(Bounds());
BString text;
text <<
TR_CMT("Partitions", "Title") << "\n\n" <<
TR("The following partitions were detected. Please "
B_TRANSLATE_COMMENT("Partitions", "Title") << "\n\n" <<
B_TRANSLATE("The following partitions were detected. Please "
"check the box next to the partitions to be included "
"in the boot menu. You can also set the names of the "
"partitions as you would like them to appear in the "
@ -109,24 +109,24 @@ PartitionsPage::_BuildUI()
MakeHeading(fDescription);
AddChild(fDescription);
LayoutDescriptionVertically(fDescription);
rect.left = fDescription->Frame().left + 1;
rect.top = fDescription->Frame().bottom + kTextDistance;
rect.right -= B_V_SCROLL_BAR_WIDTH;
rect.bottom -= B_H_SCROLL_BAR_HEIGHT + 3;
fPartitions = new BView(rect, "partitions", B_FOLLOW_ALL,
B_WILL_DRAW);
fPartitionsScrollView = new BScrollView("scrollView", fPartitions,
fPartitionsScrollView = new BScrollView("scrollView", fPartitions,
B_FOLLOW_ALL,
0,
true, true);
fPartitionsScrollView->SetViewColor(ViewColor());
AddChild(fPartitionsScrollView);
_FillPartitionsView(fPartitions);
_Layout();
}
@ -139,11 +139,11 @@ PartitionsPage::_Layout()
float left = fPartitionsScrollView->Frame().left;
float top = fDescription->Frame().bottom + kTextDistance;
fPartitionsScrollView->MoveTo(left, top);
float width = fPartitionsScrollView->Frame().Width();
float height = Bounds().bottom - top;
fPartitionsScrollView->ResizeTo(width, height);
// update scroll bar range and proportion
BScrollBar* scrollbar = fPartitionsScrollView->ScrollBar(B_HORIZONTAL);
float viewWidth = fPartitions->Bounds().IntegerWidth();
@ -157,7 +157,7 @@ PartitionsPage::_Layout()
else
proportion = viewWidth / fPartitionsWidth;
scrollbar->SetProportion(proportion);
scrollbar = fPartitionsScrollView->ScrollBar(B_VERTICAL);
float viewHeight = fPartitions->Bounds().IntegerHeight();
max = fPartitionsHeight - viewHeight;
@ -180,10 +180,10 @@ void
PartitionsPage::_FillPartitionsView(BView* view)
{
const int32 inset = 1;
font_height fontHeight;
be_plain_font->GetHeight(&fontHeight);
int32 textControlHeight;
{
BTextControl control(BRect(0, 0, 100, 100), "", "", "", NULL);
@ -195,7 +195,7 @@ PartitionsPage::_FillPartitionsView(BView* view)
const int32 height = (int32)(2*inset
+ max_c(textControlHeight, textHeight));
const int32 kDistance = (int32)(ceil(be_plain_font->StringWidth("x")));
// show | name | type | size | path
int32 showWidth = 0;
int32 nameWidth = 0;
@ -203,12 +203,12 @@ PartitionsPage::_FillPartitionsView(BView* view)
int32 sizeWidth = 0;
int32 pathWidth = 0;
_ComputeColumnWidths(showWidth, nameWidth, typeWidth, sizeWidth, pathWidth);
int32 totalWidth = showWidth + nameWidth + typeWidth + sizeWidth
+ pathWidth + 2 * inset + 4 * kDistance;
int32 rowNumber = 0;
BRect frame(view->Bounds());
frame.bottom = frame.top + height;
frame.right = frame.left + 65000;
@ -226,7 +226,7 @@ PartitionsPage::_FillPartitionsView(BView* view)
message.FindString("type", &type);
message.FindString("path", &path);
message.FindInt64("size", &size);
// create row for partition data
BView* row = new BView(frame, "row", B_FOLLOW_TOP | B_FOLLOW_LEFT, 0);
row->SetViewColor(((rowNumber % 2) == 0) ? kEvenRowColor : kOddRowColor);
@ -237,7 +237,7 @@ PartitionsPage::_FillPartitionsView(BView* view)
BRect rect(row->Bounds());
rect.InsetBy(inset, inset);
rect.right = rect.left + showWidth;
BCheckBox* checkBox = new BCheckBox(rect, "show", "",
BCheckBox* checkBox = new BCheckBox(rect, "show", "",
_CreateControlMessage(kMessageShow, i));
if (show)
checkBox->SetValue(1);
@ -248,15 +248,15 @@ PartitionsPage::_FillPartitionsView(BView* view)
checkBox->MoveTo(inset, (int)((height - showHeight + 1) / 2));
row->AddChild(checkBox);
rect.OffsetBy(showWidth + kDistance, 0);
// name
rect.right = rect.left + nameWidth;
BTextControl* nameControl = new BTextControl(rect, "name", "", name.String(),
BTextControl* nameControl = new BTextControl(rect, "name", "", name.String(),
_CreateControlMessage(kMessageName, i));
nameControl->SetDivider(0);
row->AddChild(nameControl);
rect.OffsetBy(nameWidth + kDistance, 0);
// type
rect.right = rect.left + typeWidth;
BStringView* typeView = new BStringView(rect, "type", type.String());
@ -271,21 +271,21 @@ PartitionsPage::_FillPartitionsView(BView* view)
sizeView->SetAlignment(B_ALIGN_RIGHT);
row->AddChild(sizeView);
rect.OffsetBy(sizeWidth + kDistance, 0);
// path
rect.right = rect.left + pathWidth;
BStringView* pathView = new BStringView(rect, "path", path.String());
row->AddChild(pathView);
row->AddChild(pathView);
}
fPartitionsWidth = totalWidth;
fPartitionsHeight = frame.top;
}
void
PartitionsPage::_ComputeColumnWidths(int32& showWidth, int32& nameWidth,
PartitionsPage::_ComputeColumnWidths(int32& showWidth, int32& nameWidth,
int32& typeWidth, int32& sizeWidth, int32& pathWidth)
{
BCheckBox checkBox(BRect(0, 0, 100, 100), "show", "", new BMessage());
@ -293,9 +293,9 @@ PartitionsPage::_ComputeColumnWidths(int32& showWidth, int32& nameWidth,
showWidth = checkBox.Bounds().IntegerWidth();
// reserve space for about 16 characters
nameWidth = (int32)ceil(be_plain_font->StringWidth("oooooooooooooooo"));
const int32 kStringViewInsets = 2;
BMessage message;
for (int32 i = 0; fSettings->FindMessage("partition", i, &message) == B_OK; i ++) {
// get partition data
@ -309,7 +309,7 @@ PartitionsPage::_ComputeColumnWidths(int32& showWidth, int32& nameWidth,
_CreateSizeText(size, &sizeText);
int32 width = (int32)ceil(be_plain_font->StringWidth(type.String())) +
kStringViewInsets;
kStringViewInsets;
if (typeWidth < width)
typeWidth = width;
@ -326,7 +326,7 @@ PartitionsPage::_ComputeColumnWidths(int32& showWidth, int32& nameWidth,
}
void
void
PartitionsPage::_CreateSizeText(int64 _size, BString* text)
{
const char* suffixes[] = {
@ -347,7 +347,7 @@ PartitionsPage::_CreateSizeText(int64 _size, BString* text)
}
BMessage*
BMessage*
PartitionsPage::_CreateControlMessage(uint32 what, int32 index)
{
BMessage* message = new BMessage(what);

View File

@ -1,7 +1,7 @@
/*
* Copyright 2008, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
*
* Authors:
* Michael Pfeiffer <laplace@users.sourceforge.net>
*/
@ -22,7 +22,7 @@
UninstallPage::UninstallPage(BMessage* settings, BRect frame, const char* name)
: WizardPageView(settings, frame, name, B_FOLLOW_ALL,
: WizardPageView(settings, frame, name, B_FOLLOW_ALL,
B_WILL_DRAW | B_FRAME_EVENTS | B_FULL_UPDATE_ON_RESIZE)
{
_BuildUI();
@ -48,18 +48,18 @@ void
UninstallPage::_BuildUI()
{
BRect rect(Bounds());
BString text;
text <<
TR_CMT("Uninstall Boot Manager", "Title") << "\n\n" <<
TR("Please locate the Master Boot Record (MBR) save file to "
B_TRANSLATE_COMMENT("Uninstall Boot Manager", "Title") << "\n\n" <<
B_TRANSLATE("Please locate the Master Boot Record (MBR) save file to "
"restore from. This is the file that was created when the "
"boot manager was first installed.");
fDescription = CreateDescription(rect, "description", text);
MakeHeading(fDescription);
AddChild(fDescription);
_Layout();
}
@ -67,6 +67,6 @@ UninstallPage::_BuildUI()
void
UninstallPage::_Layout()
{
LayoutDescriptionVertically(fDescription);
LayoutDescriptionVertically(fDescription);
}

View File

@ -1,7 +1,7 @@
/*
* Copyright 2008, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
*
* Authors:
* Michael Pfeiffer <laplace@users.sourceforge.net>
*/
@ -49,25 +49,25 @@ WizardView::PageFrame()
float right = Bounds().right - kBorderWidth;
float top = kBorderHeight;
float bottom = fSeparator->Frame().top - kSeparatorDistance - 1;
return BRect(left, top, right, bottom);
return BRect(left, top, right, bottom);
}
void
void
WizardView::SetPage(WizardPageView* page)
{
if (fPage == page)
return;
if (fPage != NULL) {
RemoveChild(fPage);
delete fPage;
}
fPage = page;
if (page == NULL)
return;
BRect frame = PageFrame();
page->MoveTo(frame.left, frame.top);
page->ResizeTo(frame.Width()+1, frame.Height()+1);
@ -112,12 +112,12 @@ WizardView::SetNextButtonLabel(const char* text)
fNext->SetLabel(text);
fNext->ResizeToPreferred();
BRect newFrame = fNext->Frame();
fNext->MoveBy(frame.Width() - newFrame.Width(),
fNext->MoveBy(frame.Width() - newFrame.Width(),
frame.Height() - newFrame.Height());
}
void
void
WizardView::SetPreviousButtonHidden(bool hide)
{
if (hide) {
@ -134,35 +134,36 @@ void
WizardView::_BuildUI()
{
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
float width = Bounds().Width();
float height = Bounds().Height();
fSeparator = new BBox(BRect(kBorderWidth, 0,
width - 1 - kBorderWidth, kSeparatorHeight - 1),
fSeparator = new BBox(BRect(kBorderWidth, 0,
width - 1 - kBorderWidth, kSeparatorHeight - 1),
"separator",
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_BOTTOM);
AddChild(fSeparator);
fPrevious = new BButton(BRect(0, 0, 100, 20), "previous",
TR_CMT("Previous", "Button"),
new BMessage(kMessagePrevious),
B_TRANSLATE_COMMENT("Previous", "Button"),
new BMessage(kMessagePrevious),
B_FOLLOW_LEFT | B_FOLLOW_BOTTOM);
AddChild(fPrevious);
fPrevious->ResizeToPreferred();
fNext = new BButton(BRect(0, 0, 100, 20), "next", TR_CMT("Next", "Button"),
new BMessage(kMessageNext),
fNext = new BButton(BRect(0, 0, 100, 20), "next",
B_TRANSLATE_COMMENT("Next", "Button"),
new BMessage(kMessageNext),
B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
AddChild(fNext);
fNext->ResizeToPreferred();
// layout views
float buttonHeight = fPrevious->Bounds().Height();
float buttonHeight = fPrevious->Bounds().Height();
float buttonTop = height - 1 - buttonHeight - kBorderHeight;
fPrevious->MoveTo(kBorderWidth, buttonTop);
fSeparator->MoveTo(kBorderWidth, buttonTop - kSeparatorDistance - kSeparatorHeight);
fNext->MoveTo(width - fNext->Bounds().Width() - kBorderWidth - 1, buttonTop);
}