Add localization support to WebPositive, patch by Humdinger
* Includes style fixes * Functional fixes by myself, patch wouldn't build
This commit is contained in:
@@ -28,10 +28,12 @@
|
||||
#include "AuthenticationPanel.h"
|
||||
|
||||
#include <Button.h>
|
||||
#include <Catalog.h>
|
||||
#include <CheckBox.h>
|
||||
#include <ControlLook.h>
|
||||
#include <GridLayoutBuilder.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
#include <Message.h>
|
||||
#include <Screen.h>
|
||||
#include <SeparatorView.h>
|
||||
@@ -44,28 +46,41 @@ static const uint32 kMsgPanelOK = 'pnok';
|
||||
static const uint32 kMsgJitter = 'jitr';
|
||||
static const uint32 kHidePassword = 'hdpw';
|
||||
|
||||
|
||||
#undef B_TRANSLATION_CONTEXT
|
||||
#define B_TRANSLATION_CONTEXT "Authentication Panel"
|
||||
|
||||
AuthenticationPanel::AuthenticationPanel(BRect parentFrame)
|
||||
: BWindow(BRect(-1000, -1000, -900, -900), "Authentication Required",
|
||||
B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
|
||||
B_ASYNCHRONOUS_CONTROLS | B_NOT_RESIZABLE | B_NOT_ZOOMABLE
|
||||
| B_CLOSE_ON_ESCAPE | B_AUTO_UPDATE_SIZE_LIMITS)
|
||||
, m_parentWindowFrame(parentFrame)
|
||||
, m_usernameTextControl(new BTextControl("user", "Username:", "", NULL))
|
||||
, m_passwordTextControl(new BTextControl("pass", "Password:", "", NULL))
|
||||
, m_hidePasswordCheckBox(new BCheckBox("hide", "Hide password text", new BMessage(kHidePassword)))
|
||||
, m_rememberCredentialsCheckBox(new BCheckBox("remember", "Remember username and password for this site", NULL))
|
||||
, m_okButton(new BButton("ok", "OK", new BMessage(kMsgPanelOK)))
|
||||
, m_cancelButton(new BButton("cancel", "Cancel", new BMessage(B_QUIT_REQUESTED)))
|
||||
, m_cancelled(false)
|
||||
, m_exitSemaphore(create_sem(0, "Authentication Panel"))
|
||||
:
|
||||
BWindow(BRect(-1000, -1000, -900, -900),
|
||||
B_TRANSLATE("Authentication Required"), B_TITLED_WINDOW_LOOK,
|
||||
B_MODAL_APP_WINDOW_FEEL, B_ASYNCHRONOUS_CONTROLS | B_NOT_RESIZABLE
|
||||
| B_NOT_ZOOMABLE | B_CLOSE_ON_ESCAPE | B_AUTO_UPDATE_SIZE_LIMITS),
|
||||
m_parentWindowFrame(parentFrame),
|
||||
m_usernameTextControl(new BTextControl("user", B_TRANSLATE("Username:"),
|
||||
"", NULL)),
|
||||
m_passwordTextControl(new BTextControl("pass", B_TRANSLATE("Password:"),
|
||||
"", NULL)),
|
||||
m_hidePasswordCheckBox(new BCheckBox("hide", B_TRANSLATE("Hide password "
|
||||
"text"), new BMessage(kHidePassword))),
|
||||
m_rememberCredentialsCheckBox(new BCheckBox("remember",
|
||||
B_TRANSLATE("Remember username and password for this site"), NULL)),
|
||||
m_okButton(new BButton("ok", B_TRANSLATE("OK"),
|
||||
new BMessage(kMsgPanelOK))),
|
||||
m_cancelButton(new BButton("cancel", B_TRANSLATE("Cancel"),
|
||||
new BMessage(B_QUIT_REQUESTED))),
|
||||
m_cancelled(false),
|
||||
m_exitSemaphore(create_sem(0, "Authentication Panel"))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
AuthenticationPanel::~AuthenticationPanel()
|
||||
{
|
||||
delete_sem(m_exitSemaphore);
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
AuthenticationPanel::QuitRequested()
|
||||
{
|
||||
@@ -74,6 +89,7 @@ AuthenticationPanel::QuitRequested()
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AuthenticationPanel::MessageReceived(BMessage* message)
|
||||
{
|
||||
@@ -81,21 +97,23 @@ AuthenticationPanel::MessageReceived(BMessage* message)
|
||||
case kMsgPanelOK:
|
||||
release_sem(m_exitSemaphore);
|
||||
break;
|
||||
case kHidePassword: {
|
||||
// TODO: Toggling this is broken in BTextView. Workaround is to
|
||||
// set the text and selection again.
|
||||
BString text = m_passwordTextControl->Text();
|
||||
int32 selectionStart;
|
||||
int32 selectionEnd;
|
||||
m_passwordTextControl->TextView()->GetSelection(&selectionStart, &selectionEnd);
|
||||
case kHidePassword: {
|
||||
// TODO: Toggling this is broken in BTextView. Workaround is to
|
||||
// set the text and selection again.
|
||||
BString text = m_passwordTextControl->Text();
|
||||
int32 selectionStart;
|
||||
int32 selectionEnd;
|
||||
m_passwordTextControl->TextView()->GetSelection(&selectionStart,
|
||||
&selectionEnd);
|
||||
m_passwordTextControl->TextView()->HideTyping(
|
||||
m_hidePasswordCheckBox->Value() == B_CONTROL_ON);
|
||||
m_passwordTextControl->SetText(text.String());
|
||||
m_passwordTextControl->TextView()->Select(selectionStart, selectionEnd);
|
||||
break;
|
||||
}
|
||||
case kMsgJitter: {
|
||||
UpdateIfNeeded();
|
||||
m_hidePasswordCheckBox->Value() == B_CONTROL_ON);
|
||||
m_passwordTextControl->SetText(text.String());
|
||||
m_passwordTextControl->TextView()->Select(selectionStart,
|
||||
selectionEnd);
|
||||
break;
|
||||
}
|
||||
case kMsgJitter: {
|
||||
UpdateIfNeeded();
|
||||
BPoint leftTop = Frame().LeftTop();
|
||||
const float jitterOffsets[] = { -10, 0, 10, 0 };
|
||||
const int32 jitterOffsetCount = sizeof(jitterOffsets) / sizeof(float);
|
||||
@@ -106,14 +124,15 @@ AuthenticationPanel::MessageReceived(BMessage* message)
|
||||
}
|
||||
MoveTo(leftTop);
|
||||
break;
|
||||
}
|
||||
}
|
||||
default:
|
||||
BWindow::MessageReceived(message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool AuthenticationPanel::getAuthentication(const BString& text,
|
||||
const BString& previousUser, const BString& previousPass,
|
||||
const BString& previousUser, const BString& previousPass,
|
||||
bool previousRememberCredentials, bool badPassword,
|
||||
BString& user, BString& pass, bool* rememberCredentials)
|
||||
{
|
||||
@@ -121,17 +140,18 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
|
||||
rgb_color infoColor = ui_color(B_PANEL_TEXT_COLOR);
|
||||
BRect textBounds(0, 0, 250, 200);
|
||||
BTextView* textView = new BTextView(textBounds, "text", textBounds,
|
||||
be_plain_font, &infoColor, B_FOLLOW_NONE, B_WILL_DRAW | B_SUPPORTS_LAYOUT);
|
||||
be_plain_font, &infoColor, B_FOLLOW_NONE, B_WILL_DRAW
|
||||
| B_SUPPORTS_LAYOUT);
|
||||
textView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||
textView->SetText(text.String());
|
||||
textView->MakeEditable(false);
|
||||
textView->MakeSelectable(false);
|
||||
|
||||
m_usernameTextControl->SetText(previousUser.String());
|
||||
m_usernameTextControl->SetText(previousUser.String());
|
||||
m_passwordTextControl->TextView()->HideTyping(true);
|
||||
// Ignore the previous password, if it didn't work.
|
||||
if (!badPassword)
|
||||
m_passwordTextControl->SetText(previousPass.String());
|
||||
m_passwordTextControl->SetText(previousPass.String());
|
||||
m_hidePasswordCheckBox->SetValue(B_CONTROL_ON);
|
||||
m_rememberCredentialsCheckBox->SetValue(previousRememberCredentials);
|
||||
|
||||
@@ -139,24 +159,24 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
|
||||
SetLayout(new BGroupLayout(B_VERTICAL, 0.0));
|
||||
float spacing = be_control_look->DefaultItemSpacing();
|
||||
AddChild(BGroupLayoutBuilder(B_VERTICAL, 0.0)
|
||||
.Add(BGridLayoutBuilder(0, spacing)
|
||||
.Add(textView, 0, 0, 2)
|
||||
.Add(m_usernameTextControl->CreateLabelLayoutItem(), 0, 1)
|
||||
.Add(m_usernameTextControl->CreateTextViewLayoutItem(), 1, 1)
|
||||
.Add(m_passwordTextControl->CreateLabelLayoutItem(), 0, 2)
|
||||
.Add(m_passwordTextControl->CreateTextViewLayoutItem(), 1, 2)
|
||||
.Add(BSpaceLayoutItem::CreateGlue(), 0, 3)
|
||||
.Add(m_hidePasswordCheckBox, 1, 3)
|
||||
.Add(m_rememberCredentialsCheckBox, 0, 4, 2)
|
||||
.SetInsets(spacing, spacing, spacing, spacing)
|
||||
)
|
||||
.Add(new BSeparatorView(B_HORIZONTAL, B_PLAIN_BORDER))
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, spacing)
|
||||
.AddGlue()
|
||||
.Add(m_cancelButton)
|
||||
.Add(m_okButton)
|
||||
.SetInsets(spacing, spacing, spacing, spacing)
|
||||
)
|
||||
.Add(BGridLayoutBuilder(0, spacing)
|
||||
.Add(textView, 0, 0, 2)
|
||||
.Add(m_usernameTextControl->CreateLabelLayoutItem(), 0, 1)
|
||||
.Add(m_usernameTextControl->CreateTextViewLayoutItem(), 1, 1)
|
||||
.Add(m_passwordTextControl->CreateLabelLayoutItem(), 0, 2)
|
||||
.Add(m_passwordTextControl->CreateTextViewLayoutItem(), 1, 2)
|
||||
.Add(BSpaceLayoutItem::CreateGlue(), 0, 3)
|
||||
.Add(m_hidePasswordCheckBox, 1, 3)
|
||||
.Add(m_rememberCredentialsCheckBox, 0, 4, 2)
|
||||
.SetInsets(spacing, spacing, spacing, spacing)
|
||||
)
|
||||
.Add(new BSeparatorView(B_HORIZONTAL, B_PLAIN_BORDER))
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, spacing)
|
||||
.AddGlue()
|
||||
.Add(m_cancelButton)
|
||||
.Add(m_okButton)
|
||||
.SetInsets(spacing, spacing, spacing, spacing)
|
||||
)
|
||||
);
|
||||
|
||||
float textHeight = textView->LineHeight(0) * textView->CountLines();
|
||||
@@ -164,14 +184,14 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
|
||||
|
||||
SetDefaultButton(m_okButton);
|
||||
if (badPassword && previousUser.Length())
|
||||
m_passwordTextControl->MakeFocus(true);
|
||||
m_passwordTextControl->MakeFocus(true);
|
||||
else
|
||||
m_usernameTextControl->MakeFocus(true);
|
||||
m_usernameTextControl->MakeFocus(true);
|
||||
|
||||
if (m_parentWindowFrame.IsValid())
|
||||
CenterIn(m_parentWindowFrame);
|
||||
else
|
||||
CenterOnScreen();
|
||||
if (m_parentWindowFrame.IsValid())
|
||||
CenterIn(m_parentWindowFrame);
|
||||
else
|
||||
CenterOnScreen();
|
||||
|
||||
// Start AuthenticationPanel window thread
|
||||
Show();
|
||||
@@ -182,12 +202,14 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
|
||||
|
||||
// Block calling thread
|
||||
// Get the originating window, if it exists, to let it redraw itself.
|
||||
BWindow* window = dynamic_cast<BWindow*>(BLooper::LooperForThread(find_thread(NULL)));
|
||||
BWindow* window = dynamic_cast<BWindow*>
|
||||
(BLooper::LooperForThread(find_thread(NULL)));
|
||||
if (window) {
|
||||
status_t err;
|
||||
for (;;) {
|
||||
do {
|
||||
err = acquire_sem_etc(m_exitSemaphore, 1, B_RELATIVE_TIMEOUT, 10000);
|
||||
err = acquire_sem_etc(m_exitSemaphore, 1, B_RELATIVE_TIMEOUT,
|
||||
10000);
|
||||
// We've (probably) had our time slice taken away from us
|
||||
} while (err == B_INTERRUPTED);
|
||||
|
||||
@@ -209,9 +231,10 @@ bool AuthenticationPanel::getAuthentication(const BString& text,
|
||||
user = m_usernameTextControl->Text();
|
||||
pass = m_passwordTextControl->Text();
|
||||
if (rememberCredentials)
|
||||
*rememberCredentials = m_rememberCredentialsCheckBox->Value() == B_CONTROL_ON;
|
||||
*rememberCredentials = m_rememberCredentialsCheckBox->Value()
|
||||
== B_CONTROL_ON;
|
||||
|
||||
bool canceled = m_cancelled;
|
||||
bool canceled = m_cancelled;
|
||||
Quit();
|
||||
// AuthenticationPanel object is TOAST here.
|
||||
return !canceled;
|
||||
|
||||
@@ -28,6 +28,19 @@
|
||||
|
||||
#include "BrowserApp.h"
|
||||
|
||||
#include <Alert.h>
|
||||
#include <Autolock.h>
|
||||
#include <Catalog.h>
|
||||
#include <Directory.h>
|
||||
#include <Entry.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <Locale.h>
|
||||
#include <Path.h>
|
||||
#include <Screen.h>
|
||||
#include <debugger.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "BrowserWindow.h"
|
||||
#include "BrowsingHistory.h"
|
||||
#include "DownloadWindow.h"
|
||||
@@ -39,20 +52,13 @@
|
||||
#include "WebPage.h"
|
||||
#include "WebSettings.h"
|
||||
#include "WebView.h"
|
||||
#include <Alert.h>
|
||||
#include <Autolock.h>
|
||||
#include <Directory.h>
|
||||
#include <Entry.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <Locale.h>
|
||||
#include <Path.h>
|
||||
#include <Screen.h>
|
||||
#include <debugger.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
#undef B_TRANSLATION_CONTEXT
|
||||
#define B_TRANSLATION_CONTEXT "WebPositive"
|
||||
|
||||
const char* kApplicationSignature = "application/x-vnd.Haiku-WebPositive";
|
||||
const char* kApplicationName = "WebPositive";
|
||||
const char* kApplicationName = B_TRANSLATE_SYSTEM_NAME("WebPositive");
|
||||
static const uint32 PRELOAD_BROWSING_HISTORY = 'plbh';
|
||||
|
||||
#define ENABLE_NATIVE_COOKIES 0
|
||||
@@ -174,8 +180,10 @@ BrowserApp::ReadyToRun()
|
||||
float borderWidth = 0;
|
||||
if (decoratorSettings.FindFloat("border width", &borderWidth) != B_OK)
|
||||
borderWidth = 5;
|
||||
fDownloadWindow->MoveTo(screenFrame.Width() - fDownloadWindow->Frame().Width() - borderWidth,
|
||||
screenFrame.Height() - fDownloadWindow->Frame().Height() - borderWidth);
|
||||
fDownloadWindow->MoveTo(screenFrame.Width()
|
||||
- fDownloadWindow->Frame().Width() - borderWidth,
|
||||
screenFrame.Height() - fDownloadWindow->Frame().Height()
|
||||
- borderWidth);
|
||||
}
|
||||
fSettingsWindow = new SettingsWindow(settingsWindowFrame, fSettings);
|
||||
|
||||
@@ -217,7 +225,8 @@ BrowserApp::MessageReceived(BMessage* message)
|
||||
}
|
||||
case NEW_TAB: {
|
||||
BrowserWindow* window;
|
||||
if (message->FindPointer("window", reinterpret_cast<void**>(&window)) != B_OK)
|
||||
if (message->FindPointer("window",
|
||||
reinterpret_cast<void**>(&window)) != B_OK)
|
||||
break;
|
||||
BString url;
|
||||
message->FindString("url", &url);
|
||||
@@ -268,9 +277,10 @@ bool
|
||||
BrowserApp::QuitRequested()
|
||||
{
|
||||
if (fDownloadWindow->DownloadsInProgress()) {
|
||||
BAlert* alert = new BAlert("Downloads in progress",
|
||||
"There are still downloads in progress, do you really want to "
|
||||
"quit WebPositive now?", "Quit", "Continue downloads");
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Downloads in progress"),
|
||||
B_TRANSLATE("There are still downloads in progress, do you really "
|
||||
"want to quit WebPositive now?"), B_TRANSLATE("Quit"),
|
||||
B_TRANSLATE("Continue downloads"));
|
||||
int32 choice = alert->Go();
|
||||
if (choice == 1) {
|
||||
if (fWindowCount == 0) {
|
||||
|
||||
@@ -32,6 +32,37 @@
|
||||
|
||||
#include "BrowserWindow.h"
|
||||
|
||||
#include <Alert.h>
|
||||
#include <Application.h>
|
||||
#include <Bitmap.h>
|
||||
#include <Button.h>
|
||||
#include <Catalog.h>
|
||||
#include <CheckBox.h>
|
||||
#include <Clipboard.h>
|
||||
#include <Directory.h>
|
||||
#include <Entry.h>
|
||||
#include <File.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <GridLayoutBuilder.h>
|
||||
#include <GroupLayout.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <LayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
#include <MenuBar.h>
|
||||
#include <MenuItem.h>
|
||||
#include <MessageRunner.h>
|
||||
#include <NodeInfo.h>
|
||||
#include <Path.h>
|
||||
#include <Roster.h>
|
||||
#include <Screen.h>
|
||||
#include <SeparatorView.h>
|
||||
#include <SpaceLayoutItem.h>
|
||||
#include <StatusBar.h>
|
||||
#include <StringView.h>
|
||||
#include <TextControl.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "AuthenticationPanel.h"
|
||||
#include "BaseURL.h"
|
||||
#include "BitmapButton.h"
|
||||
@@ -48,35 +79,10 @@
|
||||
#include "WebView.h"
|
||||
#include "WebViewConstants.h"
|
||||
#include "WindowIcon.h"
|
||||
#include <Alert.h>
|
||||
#include <Application.h>
|
||||
#include <Bitmap.h>
|
||||
#include <Button.h>
|
||||
#include <CheckBox.h>
|
||||
#include <Clipboard.h>
|
||||
#include <Directory.h>
|
||||
#include <Entry.h>
|
||||
#include <File.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <GridLayoutBuilder.h>
|
||||
#include <GroupLayout.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <LayoutBuilder.h>
|
||||
#include <MenuBar.h>
|
||||
#include <MenuItem.h>
|
||||
#include <MessageRunner.h>
|
||||
#include <NodeInfo.h>
|
||||
#include <Path.h>
|
||||
#include <Roster.h>
|
||||
#include <Screen.h>
|
||||
#include <SeparatorView.h>
|
||||
#include <SpaceLayoutItem.h>
|
||||
#include <StatusBar.h>
|
||||
#include <StringView.h>
|
||||
#include <TextControl.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#undef B_TRANSLATION_CONTEXT
|
||||
#define B_TRANSLATION_CONTEXT "WebPositive Window"
|
||||
|
||||
enum {
|
||||
OPEN_LOCATION = 'open',
|
||||
@@ -148,9 +154,9 @@ public:
|
||||
private:
|
||||
void _AddStaticItems()
|
||||
{
|
||||
AddItem(new BMenuItem("Manage bookmarks",
|
||||
AddItem(new BMenuItem(B_TRANSLATE("Manage bookmarks"),
|
||||
new BMessage(SHOW_BOOKMARKS), 'M'), 0);
|
||||
AddItem(new BMenuItem("Bookmark this page",
|
||||
AddItem(new BMenuItem(B_TRANSLATE("Bookmark this page"),
|
||||
new BMessage(CREATE_BOOKMARK), 'B'), 0);
|
||||
}
|
||||
};
|
||||
@@ -281,82 +287,88 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
|
||||
#else
|
||||
BMenu* mainMenu = new BMenuBar("Main menu");
|
||||
#endif
|
||||
BMenu* menu = new BMenu("Window");
|
||||
BMenu* menu = new BMenu(B_TRANSLATE("Window"));
|
||||
BMessage* newWindowMessage = new BMessage(NEW_WINDOW);
|
||||
newWindowMessage->AddString("url", "");
|
||||
BMenuItem* newItem = new BMenuItem("New window", newWindowMessage, 'N');
|
||||
BMenuItem* newItem = new BMenuItem(B_TRANSLATE("New window"),
|
||||
newWindowMessage, 'N');
|
||||
menu->AddItem(newItem);
|
||||
newItem->SetTarget(be_app);
|
||||
newItem = new BMenuItem("New tab", new BMessage(*newTabMessage), 'T');
|
||||
newItem = new BMenuItem(B_TRANSLATE("New tab"),
|
||||
new BMessage(*newTabMessage), 'T');
|
||||
menu->AddItem(newItem);
|
||||
newItem->SetTarget(be_app);
|
||||
menu->AddItem(new BMenuItem("Open location", new BMessage(OPEN_LOCATION),
|
||||
'L'));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Open location"),
|
||||
new BMessage(OPEN_LOCATION), 'L'));
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(new BMenuItem("Close window", new BMessage(B_QUIT_REQUESTED),
|
||||
'W', B_SHIFT_KEY));
|
||||
menu->AddItem(new BMenuItem("Close tab", new BMessage(CLOSE_TAB), 'W'));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Close window"),
|
||||
new BMessage(B_QUIT_REQUESTED), 'W', B_SHIFT_KEY));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Close tab"),
|
||||
new BMessage(CLOSE_TAB), 'W'));
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(new BMenuItem("Downloads",
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Downloads"),
|
||||
new BMessage(SHOW_DOWNLOAD_WINDOW), 'D'));
|
||||
menu->AddItem(new BMenuItem("Settings",
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Settings"),
|
||||
new BMessage(SHOW_SETTINGS_WINDOW)));
|
||||
BMenuItem* aboutItem = new BMenuItem("About",
|
||||
BMenuItem* aboutItem = new BMenuItem(B_TRANSLATE("About"),
|
||||
new BMessage(B_ABOUT_REQUESTED));
|
||||
menu->AddItem(aboutItem);
|
||||
aboutItem->SetTarget(be_app);
|
||||
menu->AddSeparatorItem();
|
||||
BMenuItem* quitItem = new BMenuItem("Quit",
|
||||
BMenuItem* quitItem = new BMenuItem(B_TRANSLATE("Quit"),
|
||||
new BMessage(B_QUIT_REQUESTED), 'Q');
|
||||
menu->AddItem(quitItem);
|
||||
quitItem->SetTarget(be_app);
|
||||
mainMenu->AddItem(menu);
|
||||
|
||||
menu = new BMenu("Edit");
|
||||
menu->AddItem(fCutMenuItem = new BMenuItem("Cut", new BMessage(B_CUT),
|
||||
'X'));
|
||||
menu->AddItem(fCopyMenuItem = new BMenuItem("Copy", new BMessage(B_COPY),
|
||||
'C'));
|
||||
menu->AddItem(fPasteMenuItem = new BMenuItem("Paste", new BMessage(B_PASTE),
|
||||
'V'));
|
||||
menu = new BMenu(B_TRANSLATE("Edit"));
|
||||
menu->AddItem(fCutMenuItem = new BMenuItem(B_TRANSLATE("Cut"),
|
||||
new BMessage(B_CUT), 'X'));
|
||||
menu->AddItem(fCopyMenuItem = new BMenuItem(B_TRANSLATE("Copy"),
|
||||
new BMessage(B_COPY), 'C'));
|
||||
menu->AddItem(fPasteMenuItem = new BMenuItem(B_TRANSLATE("Paste"),
|
||||
new BMessage(B_PASTE), 'V'));
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(new BMenuItem("Find", new BMessage(EDIT_SHOW_FIND_GROUP),
|
||||
'F'));
|
||||
menu->AddItem(fFindPreviousMenuItem = new BMenuItem("Find previous",
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Find"),
|
||||
new BMessage(EDIT_SHOW_FIND_GROUP), 'F'));
|
||||
menu->AddItem(fFindPreviousMenuItem
|
||||
= new BMenuItem(B_TRANSLATE("Find previous"),
|
||||
new BMessage(EDIT_FIND_PREVIOUS), 'G', B_SHIFT_KEY));
|
||||
menu->AddItem(fFindNextMenuItem = new BMenuItem("Find next",
|
||||
menu->AddItem(fFindNextMenuItem = new BMenuItem(B_TRANSLATE("Find next"),
|
||||
new BMessage(EDIT_FIND_NEXT), 'G'));
|
||||
mainMenu->AddItem(menu);
|
||||
fFindPreviousMenuItem->SetEnabled(false);
|
||||
fFindNextMenuItem->SetEnabled(false);
|
||||
|
||||
menu = new BMenu("View");
|
||||
menu->AddItem(new BMenuItem("Reload", new BMessage(RELOAD), 'R'));
|
||||
menu = new BMenu(B_TRANSLATE("View"));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Reload"), new BMessage(RELOAD),
|
||||
'R'));
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(new BMenuItem("Increase size",
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Increase size"),
|
||||
new BMessage(ZOOM_FACTOR_INCREASE), '+'));
|
||||
menu->AddItem(new BMenuItem("Decrease size",
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Decrease size"),
|
||||
new BMessage(ZOOM_FACTOR_DECREASE), '-'));
|
||||
menu->AddItem(new BMenuItem("Reset size",
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Reset size"),
|
||||
new BMessage(ZOOM_FACTOR_RESET), '0'));
|
||||
fZoomTextOnlyMenuItem = new BMenuItem("Zoom text only",
|
||||
fZoomTextOnlyMenuItem = new BMenuItem(B_TRANSLATE("Zoom text only"),
|
||||
new BMessage(ZOOM_TEXT_ONLY));
|
||||
fZoomTextOnlyMenuItem->SetMarked(fZoomTextOnly);
|
||||
menu->AddItem(fZoomTextOnlyMenuItem);
|
||||
|
||||
menu->AddSeparatorItem();
|
||||
fFullscreenItem = new BMenuItem("Fullscreen",
|
||||
fFullscreenItem = new BMenuItem(B_TRANSLATE("Fullscreen"),
|
||||
new BMessage(TOGGLE_FULLSCREEN), B_RETURN);
|
||||
menu->AddItem(fFullscreenItem);
|
||||
menu->AddItem(new BMenuItem("Page source",
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Page source"),
|
||||
new BMessage(SHOW_PAGE_SOURCE), 'U'));
|
||||
mainMenu->AddItem(menu);
|
||||
|
||||
fHistoryMenu = new BMenu("History");
|
||||
fHistoryMenu->AddItem(fBackMenuItem = new BMenuItem("Back",
|
||||
fHistoryMenu = new BMenu(B_TRANSLATE("History"));
|
||||
fHistoryMenu->AddItem(fBackMenuItem = new BMenuItem(B_TRANSLATE("Back"),
|
||||
new BMessage(GO_BACK), B_LEFT_ARROW));
|
||||
fHistoryMenu->AddItem(fForwardMenuItem = new BMenuItem("Forward",
|
||||
new BMessage(GO_FORWARD), B_RIGHT_ARROW));
|
||||
fHistoryMenu->AddItem(fForwardMenuItem
|
||||
= new BMenuItem(B_TRANSLATE("Forward"), new BMessage(GO_FORWARD),
|
||||
B_RIGHT_ARROW));
|
||||
fHistoryMenu->AddSeparatorItem();
|
||||
fHistoryMenuFixedItemCount = fHistoryMenu->CountItems();
|
||||
mainMenu->AddItem(fHistoryMenu);
|
||||
@@ -366,7 +378,7 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
|
||||
if (_BookmarkPath(bookmarkPath) == B_OK
|
||||
&& get_ref_for_path(bookmarkPath.Path(), &bookmarkRef) == B_OK) {
|
||||
BMenu* bookmarkMenu
|
||||
= new BookmarkMenu("Bookmarks", this, &bookmarkRef);
|
||||
= new BookmarkMenu(B_TRANSLATE("Bookmarks"), this, &bookmarkRef);
|
||||
mainMenu->AddItem(bookmarkMenu);
|
||||
}
|
||||
|
||||
@@ -412,15 +424,16 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
|
||||
const float kElementSpacing = 5;
|
||||
|
||||
// Find group
|
||||
fFindTextControl = new BTextControl("find", "Find:", "",
|
||||
fFindTextControl = new BTextControl("find", B_TRANSLATE("Find:"), "",
|
||||
new BMessage(EDIT_FIND_NEXT));
|
||||
fFindTextControl->SetModificationMessage(new BMessage(FIND_TEXT_CHANGED));
|
||||
fFindPreviousButton = new BButton("Previous",
|
||||
fFindPreviousButton = new BButton(B_TRANSLATE("Previous"),
|
||||
new BMessage(EDIT_FIND_PREVIOUS));
|
||||
fFindNextButton = new BButton("Next", new BMessage(EDIT_FIND_NEXT));
|
||||
fFindCloseButton = new BButton("Close",
|
||||
fFindNextButton = new BButton(B_TRANSLATE("Next"),
|
||||
new BMessage(EDIT_FIND_NEXT));
|
||||
fFindCloseButton = new BButton(B_TRANSLATE("Close"),
|
||||
new BMessage(EDIT_HIDE_FIND_GROUP));
|
||||
fFindCaseSensitiveCheckBox = new BCheckBox("Match case");
|
||||
fFindCaseSensitiveCheckBox = new BCheckBox(B_TRANSLATE("Match case"));
|
||||
BGroupLayout* findGroup = BLayoutBuilder::Group<>(B_VERTICAL, 0.0)
|
||||
.Add(new BSeparatorView(B_HORIZONTAL, B_PLAIN_BORDER))
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, kElementSpacing)
|
||||
@@ -511,7 +524,7 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
|
||||
|
||||
// Add shortcuts to select a particular tab
|
||||
for (int32 i = 1; i <= 9; i++) {
|
||||
BMessage *selectTab = new BMessage(SELECT_TAB);
|
||||
BMessage* selectTab = new BMessage(SELECT_TAB);
|
||||
selectTab->AddInt32("tab index", i - 1);
|
||||
char numStr[2];
|
||||
snprintf(numStr, sizeof(numStr), "%d", (int) i);
|
||||
@@ -603,10 +616,10 @@ BrowserWindow::DispatchMessage(BMessage* message, BHandler* target)
|
||||
// Only do this when the mouse is over the web view
|
||||
if (CurrentWebView()->Bounds().Contains(where)) {
|
||||
// Zoom and unzoom text on Command + mouse wheel.
|
||||
// This could of course (and maybe should be) implemented in the WebView, but there
|
||||
// would need to be a way for the WebView to know the setting of the
|
||||
// fZoomTextOnly member here. Plus other clients of the API may not want
|
||||
// this feature.
|
||||
// This could of course (and maybe should be) implemented in the
|
||||
// WebView, but there would need to be a way for the WebView to
|
||||
// know the setting of the fZoomTextOnly member here. Plus other
|
||||
// clients of the API may not want this feature.
|
||||
if ((modifiers() & B_COMMAND_KEY) != 0) {
|
||||
float dy;
|
||||
if (message->FindFloat("be:wheel_delta_y", &dy) == B_OK) {
|
||||
@@ -667,8 +680,10 @@ BrowserWindow::MessageReceived(BMessage* message)
|
||||
BrowsingHistory* history = BrowsingHistory::DefaultInstance();
|
||||
if (history->CountItems() == 0)
|
||||
break;
|
||||
BAlert* alert = new BAlert("Confirmation", "Do you really want to "
|
||||
"clear the browsing history?", "Clear", "Cancel");
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Confirmation"),
|
||||
B_TRANSLATE("Do you really want to "
|
||||
"clear the browsing history?"), B_TRANSLATE("Clear"),
|
||||
B_TRANSLATE("Cancel"));
|
||||
if (alert->Go() == 0)
|
||||
history->Clear();
|
||||
break;
|
||||
@@ -715,11 +730,12 @@ BrowserWindow::MessageReceived(BMessage* message)
|
||||
}
|
||||
message->RemoveName("refs");
|
||||
if (addedCount > 10) {
|
||||
BString string;
|
||||
string << "Do you want to open " << addedCount;
|
||||
string << " bookmarks all at once?";
|
||||
BAlert* alert = new BAlert("Open bookmarks confirmation",
|
||||
string.String(), "Cancel", "Open all");
|
||||
BString string(B_TRANSLATE_COMMENT("Do you want to open %addedCount "
|
||||
"bookmarks all at once?", "Don't translate variable %addedCount."));
|
||||
string.ReplaceFirst("%addedCount", BString() << addedCount);
|
||||
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Open bookmarks confirmation"),
|
||||
string.String(), B_TRANSLATE("Cancel"), B_TRANSLATE("Open all"));
|
||||
if (alert->Go() == 0)
|
||||
break;
|
||||
}
|
||||
@@ -1100,7 +1116,7 @@ BrowserWindow::CreateNewTab(const BString& _url, bool select, BWebView* webView)
|
||||
|
||||
bool isNewWindow = fTabManager->CountTabs() == 0;
|
||||
|
||||
fTabManager->AddTab(webView, "New tab");
|
||||
fTabManager->AddTab(webView, B_TRANSLATE("New tab"));
|
||||
|
||||
BString url(_url);
|
||||
if (applyNewPagePolicy && url.Length() == 0)
|
||||
@@ -1185,7 +1201,7 @@ BrowserWindow::NewWindowRequested(const BString& url, bool primaryAction)
|
||||
|
||||
void
|
||||
BrowserWindow::NewPageCreated(BWebView* view, BRect windowFrame,
|
||||
bool modalDialog, bool resizable, bool activate)
|
||||
bool modalDialog, bool resizable, bool activate)
|
||||
{
|
||||
if (windowFrame.IsValid()) {
|
||||
BrowserWindow* window = new BrowserWindow(windowFrame, fAppSettings,
|
||||
@@ -1218,7 +1234,7 @@ BrowserWindow::LoadNegotiating(const BString& url, BWebView* view)
|
||||
|
||||
fURLInputGroup->SetText(url.String());
|
||||
|
||||
BString status("Requesting: ");
|
||||
BString status(B_TRANSLATE("Requesting: "));
|
||||
status << url;
|
||||
view->WebPage()->SetStatusMessage(status);
|
||||
}
|
||||
@@ -1233,7 +1249,7 @@ BrowserWindow::LoadCommitted(const BString& url, BWebView* view)
|
||||
// This hook is invoked when the load is commited.
|
||||
fURLInputGroup->SetText(url.String());
|
||||
|
||||
BString status("Loading: ");
|
||||
BString status(B_TRANSLATE("Loading: "));
|
||||
status << url;
|
||||
view->WebPage()->SetStatusMessage(status);
|
||||
}
|
||||
@@ -1259,8 +1275,9 @@ BrowserWindow::LoadFailed(const BString& url, BWebView* view)
|
||||
if (view != CurrentWebView())
|
||||
return;
|
||||
|
||||
BString status(url);
|
||||
status << " failed.";
|
||||
BString status(B_TRANSLATE_COMMENT("%url failed.", "Loading URL failed. "
|
||||
"Don't translate variable %url."));
|
||||
status.ReplaceFirst("%url", url);
|
||||
view->WebPage()->SetStatusMessage(status);
|
||||
if (!fLoadingProgressBar->IsHidden())
|
||||
fLoadingProgressBar->Hide();
|
||||
@@ -1273,8 +1290,9 @@ BrowserWindow::LoadFinished(const BString& url, BWebView* view)
|
||||
if (view != CurrentWebView())
|
||||
return;
|
||||
|
||||
BString status(url);
|
||||
status << " finished.";
|
||||
BString status(B_TRANSLATE_COMMENT("%url finished.", "Loading URL "
|
||||
"finished. Don't translate variable %url."));
|
||||
status.ReplaceFirst("%url", url);
|
||||
view->WebPage()->SetStatusMessage(status);
|
||||
if (!fLoadingProgressBar->IsHidden())
|
||||
fLoadingProgressBar->Hide();
|
||||
@@ -1283,8 +1301,9 @@ BrowserWindow::LoadFinished(const BString& url, BWebView* view)
|
||||
fForwardButton->IsEnabled(), false, view);
|
||||
|
||||
int32 tabIndex = fTabManager->TabForView(view);
|
||||
if (tabIndex > 0 && strcmp("New tab", fTabManager->TabLabel(tabIndex)) == 0)
|
||||
fTabManager->SetTabLabel(tabIndex, url);
|
||||
if (tabIndex > 0 && strcmp(B_TRANSLATE("New tab"),
|
||||
fTabManager->TabLabel(tabIndex)) == 0)
|
||||
fTabManager->SetTabLabel(tabIndex, url);
|
||||
}
|
||||
|
||||
|
||||
@@ -1447,8 +1466,8 @@ BrowserWindow::UpdateGlobalHistory(const BString& url)
|
||||
|
||||
bool
|
||||
BrowserWindow::AuthenticationChallenge(BString message, BString& inOutUser,
|
||||
BString& inOutPassword, bool& inOutRememberCredentials, uint32 failureCount,
|
||||
BWebView* view)
|
||||
BString& inOutPassword, bool& inOutRememberCredentials,
|
||||
uint32 failureCount, BWebView* view)
|
||||
{
|
||||
CredentialsStorage* persistentStorage
|
||||
= CredentialsStorage::PersistentInstance();
|
||||
@@ -1571,11 +1590,13 @@ BrowserWindow::_CreateBookmark()
|
||||
BPath path;
|
||||
status_t status = _BookmarkPath(path);
|
||||
if (status != B_OK) {
|
||||
BString message("There was an error retrieving the bookmark "
|
||||
"folder.\n\n");
|
||||
message << "Error: " << strerror(status);
|
||||
BAlert* alert = new BAlert("Bookmark error", message.String(), "OK",
|
||||
NULL, NULL, B_WIDTH_AS_USUAL, B_STOP_ALERT);
|
||||
BString message(B_TRANSLATE_COMMENT("There was an error retrieving "
|
||||
"the bookmark folder.\n\nError: %error", "Don't translate the "
|
||||
"variable %error"));
|
||||
message.ReplaceFirst("%error", strerror(status));
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Bookmark error"),
|
||||
message.String(), B_TRANSLATE("OK"), NULL, NULL,
|
||||
B_WIDTH_AS_USUAL, B_STOP_ALERT);
|
||||
alert->Go();
|
||||
return;
|
||||
}
|
||||
@@ -1599,10 +1620,12 @@ BrowserWindow::_CreateBookmark()
|
||||
// URLs, only for matching file names.
|
||||
BDirectory directory(path.Path());
|
||||
if (status == B_OK && _CheckBookmarkExists(directory, bookmarkName, url)) {
|
||||
BString message("A bookmark for this page (");
|
||||
message << bookmarkName;
|
||||
message << ") already exists.";
|
||||
BAlert* alert = new BAlert("Bookmark info", message.String(), "OK");
|
||||
BString message(B_TRANSLATE_COMMENT("A bookmark for this page "
|
||||
"(%bookmarkName) already exists.", "Don't translate variable "
|
||||
"%bookmarkName"));
|
||||
message.ReplaceFirst("%bookmarkName", bookmarkName);
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Bookmark info"),
|
||||
message.String(), B_TRANSLATE("OK"));
|
||||
alert->Go();
|
||||
return;
|
||||
}
|
||||
@@ -1690,11 +1713,13 @@ BrowserWindow::_CreateBookmark()
|
||||
}
|
||||
|
||||
if (status != B_OK) {
|
||||
BString message("There was an error creating the bookmark "
|
||||
"file.\n\n");
|
||||
message << "Error: " << strerror(status);
|
||||
BAlert* alert = new BAlert("Bookmark error", message.String(), "OK",
|
||||
NULL, NULL, B_WIDTH_AS_USUAL, B_STOP_ALERT);
|
||||
BString message(B_TRANSLATE_COMMENT("There was an error creating the "
|
||||
"bookmark file.\n\nError: %error", "Don't translate variable "
|
||||
"%error"));
|
||||
message.ReplaceFirst("%error", strerror(status));
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Bookmark error"),
|
||||
message.String(), B_TRANSLATE("OK"), NULL, NULL,
|
||||
B_WIDTH_AS_USUAL, B_STOP_ALERT);
|
||||
alert->Go();
|
||||
return;
|
||||
}
|
||||
@@ -1713,11 +1738,13 @@ BrowserWindow::_ShowBookmarks()
|
||||
status = be_roster->Launch(&ref);
|
||||
|
||||
if (status != B_OK && status != B_ALREADY_RUNNING) {
|
||||
BString message("There was an error trying to show the Bookmarks "
|
||||
"folder.\n\n");
|
||||
message << "Error: " << strerror(status);
|
||||
BAlert* alert = new BAlert("Bookmark error", message.String(), "OK",
|
||||
NULL, NULL, B_WIDTH_AS_USUAL, B_STOP_ALERT);
|
||||
BString message(B_TRANSLATE_COMMENT("There was an error trying to "
|
||||
"show the Bookmarks folder.\n\nError: %error", "Don't translate variable "
|
||||
"%error"));
|
||||
message.ReplaceFirst("%error", strerror(status));
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Bookmark error"),
|
||||
message.String(), B_TRANSLATE("OK"), NULL, NULL,
|
||||
B_WIDTH_AS_USUAL, B_STOP_ALERT);
|
||||
alert->Go();
|
||||
return;
|
||||
}
|
||||
@@ -1857,7 +1884,7 @@ BrowserWindow::_UpdateHistoryMenu()
|
||||
return;
|
||||
|
||||
int32 count = history->CountItems();
|
||||
BMenuItem* clearHistoryItem = new BMenuItem("Clear history",
|
||||
BMenuItem* clearHistoryItem = new BMenuItem(B_TRANSLATE("Clear history"),
|
||||
new BMessage(CLEAR_HISTORY));
|
||||
clearHistoryItem->SetEnabled(count > 0);
|
||||
fHistoryMenu->AddItem(clearHistoryItem);
|
||||
@@ -1885,8 +1912,8 @@ BrowserWindow::_UpdateHistoryMenu()
|
||||
BDateTime fiveDaysAgoStart = fourDaysAgoStart;
|
||||
fiveDaysAgoStart.Date().AddDays(-1);
|
||||
|
||||
BMenu* todayMenu = new BMenu("Today");
|
||||
BMenu* yesterdayMenu = new BMenu("Yesterday");
|
||||
BMenu* todayMenu = new BMenu(B_TRANSLATE("Today"));
|
||||
BMenu* yesterdayMenu = new BMenu(B_TRANSLATE("Yesterday"));
|
||||
BMenu* twoDaysAgoMenu = new BMenu(
|
||||
twoDaysAgoStart.Date().LongDayName().String());
|
||||
BMenu* threeDaysAgoMenu = new BMenu(
|
||||
@@ -1895,7 +1922,7 @@ BrowserWindow::_UpdateHistoryMenu()
|
||||
fourDaysAgoStart.Date().LongDayName().String());
|
||||
BMenu* fiveDaysAgoMenu = new BMenu(
|
||||
fiveDaysAgoStart.Date().LongDayName().String());
|
||||
BMenu* earlierMenu = new BMenu("Earlier");
|
||||
BMenu* earlierMenu = new BMenu(B_TRANSLATE("Earlier"));
|
||||
|
||||
for (int32 i = 0; i < count; i++) {
|
||||
BrowsingHistoryItem historyItem = history->HistoryItemAt(i);
|
||||
@@ -2075,8 +2102,9 @@ void
|
||||
BrowserWindow::_ShowProgressBar(bool show)
|
||||
{
|
||||
if (show) {
|
||||
if (!fStatusGroup->IsVisible() && (fVisibleInterfaceElements & INTERFACE_ELEMENT_STATUS) != 0)
|
||||
fStatusGroup->SetVisible(true);
|
||||
if (!fStatusGroup->IsVisible() && (fVisibleInterfaceElements
|
||||
& INTERFACE_ELEMENT_STATUS) != 0)
|
||||
fStatusGroup->SetVisible(true);
|
||||
fLoadingProgressBar->Show();
|
||||
} else {
|
||||
if (!fInterfaceVisible)
|
||||
@@ -2130,7 +2158,7 @@ BrowserWindow::_SmartURLHandler(const BString& url) const
|
||||
{
|
||||
BString result = url;
|
||||
|
||||
// Only process if this doesn't look like a full URL (http:// or
|
||||
// Only process if this doesn't look like a full URL (http:// or
|
||||
// file://, etc.)
|
||||
if (url.FindFirst("://") == B_ERROR) {
|
||||
if (url.FindFirst(".") == B_ERROR || url.FindFirst(" ") != B_ERROR)
|
||||
@@ -2207,7 +2235,8 @@ BrowserWindow::_HandlePageSourceResult(const BMessage* message)
|
||||
char buffer[1024];
|
||||
snprintf(buffer, sizeof(buffer), "Failed to show the "
|
||||
"page source: %s\n", strerror(ret));
|
||||
BAlert* alert = new BAlert("Page source error", buffer, "OK");
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Page source error"), buffer,
|
||||
B_TRANSLATE("OK"));
|
||||
alert->Go(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,11 +32,13 @@
|
||||
#include <Alert.h>
|
||||
#include <Bitmap.h>
|
||||
#include <Button.h>
|
||||
#include <Catalog.h>
|
||||
#include <Clipboard.h>
|
||||
#include <Directory.h>
|
||||
#include <Entry.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
#include <MenuItem.h>
|
||||
#include <NodeInfo.h>
|
||||
#include <NodeMonitor.h>
|
||||
@@ -51,6 +53,9 @@
|
||||
#include "StringForSize.h"
|
||||
|
||||
|
||||
#undef B_TRANSLATION_CONTEXT
|
||||
#define B_TRANSLATION_CONTEXT "Download Window"
|
||||
|
||||
enum {
|
||||
OPEN_DOWNLOAD = 'opdn',
|
||||
RESTART_DOWNLOAD = 'rsdn',
|
||||
@@ -143,7 +148,8 @@ public:
|
||||
|
||||
virtual BSize MinSize()
|
||||
{
|
||||
return BSize(fIconBitmap.Bounds().Width(), fIconBitmap.Bounds().Height());
|
||||
return BSize(fIconBitmap.Bounds().Width(),
|
||||
fIconBitmap.Bounds().Height());
|
||||
}
|
||||
|
||||
virtual BSize PreferredSize()
|
||||
@@ -218,8 +224,8 @@ DownloadProgressView::Init(BMessage* archive)
|
||||
fLastSpeedReferenceSize = 0;
|
||||
fEstimatedFinishReferenceSize = 0;
|
||||
|
||||
fProcessStartTime = fLastSpeedReferenceTime = fEstimatedFinishReferenceTime
|
||||
= system_time();
|
||||
fProcessStartTime = fLastSpeedReferenceTime
|
||||
= fEstimatedFinishReferenceTime = system_time();
|
||||
|
||||
SetViewColor(245, 245, 245);
|
||||
SetFlags(Flags() | B_FULL_UPDATE_ON_RESIZE | B_WILL_DRAW);
|
||||
@@ -245,16 +251,20 @@ DownloadProgressView::Init(BMessage* archive)
|
||||
} else
|
||||
fIconView = new IconView();
|
||||
|
||||
if (!fDownload && (fStatusBar->CurrentValue() < 100 || !entry.Exists()))
|
||||
fTopButton = new SmallButton("Restart", new BMessage(RESTART_DOWNLOAD));
|
||||
else {
|
||||
fTopButton = new SmallButton("Open", new BMessage(OPEN_DOWNLOAD));
|
||||
if (!fDownload && (fStatusBar->CurrentValue() < 100 || !entry.Exists())) {
|
||||
fTopButton = new SmallButton(B_TRANSLATE("Restart"),
|
||||
new BMessage(RESTART_DOWNLOAD));
|
||||
} else {
|
||||
fTopButton = new SmallButton(B_TRANSLATE("Open"),
|
||||
new BMessage(OPEN_DOWNLOAD));
|
||||
fTopButton->SetEnabled(fDownload == NULL);
|
||||
}
|
||||
if (fDownload)
|
||||
fBottomButton = new SmallButton("Cancel", new BMessage(CANCEL_DOWNLOAD));
|
||||
else {
|
||||
fBottomButton = new SmallButton("Remove", new BMessage(REMOVE_DOWNLOAD));
|
||||
if (fDownload) {
|
||||
fBottomButton = new SmallButton(B_TRANSLATE("Cancel"),
|
||||
new BMessage(CANCEL_DOWNLOAD));
|
||||
} else {
|
||||
fBottomButton = new SmallButton(B_TRANSLATE("Remove"),
|
||||
new BMessage(REMOVE_DOWNLOAD));
|
||||
fBottomButton->SetEnabled(fDownload == NULL);
|
||||
}
|
||||
|
||||
@@ -399,8 +409,9 @@ DownloadProgressView::MessageReceived(BMessage* message)
|
||||
if (status == B_OK)
|
||||
status = be_roster->Launch(&ref);
|
||||
if (status != B_OK && status != B_ALREADY_RUNNING) {
|
||||
BAlert* alert = new BAlert("Open download error",
|
||||
"The download could not be opened.", "OK");
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Open download error"),
|
||||
B_TRANSLATE("The download could not be opened."),
|
||||
B_TRANSLATE("OK"));
|
||||
alert->Go(NULL);
|
||||
}
|
||||
break;
|
||||
@@ -572,11 +583,11 @@ DownloadProgressView::ShowContextMenu(BPoint screenWhere)
|
||||
screenWhere += BPoint(2, 2);
|
||||
|
||||
BPopUpMenu* contextMenu = new BPopUpMenu("download context");
|
||||
BMenuItem* copyURL = new BMenuItem("Copy URL to clipboard",
|
||||
BMenuItem* copyURL = new BMenuItem(B_TRANSLATE("Copy URL to clipboard"),
|
||||
new BMessage(COPY_URL_TO_CLIPBOARD));
|
||||
copyURL->SetEnabled(fURL.Length() > 0);
|
||||
contextMenu->AddItem(copyURL);
|
||||
BMenuItem* openFolder = new BMenuItem("Open containing folder",
|
||||
BMenuItem* openFolder = new BMenuItem(B_TRANSLATE("Open containing folder"),
|
||||
new BMessage(OPEN_CONTAINING_FOLDER));
|
||||
contextMenu->AddItem(openFolder);
|
||||
|
||||
@@ -622,7 +633,7 @@ DownloadProgressView::DownloadFinished()
|
||||
fExpectedSize = fCurrentSize;
|
||||
}
|
||||
fTopButton->SetEnabled(true);
|
||||
fBottomButton->SetLabel("Remove");
|
||||
fBottomButton->SetLabel(B_TRANSLATE("Remove"));
|
||||
fBottomButton->SetMessage(new BMessage(REMOVE_DOWNLOAD));
|
||||
fBottomButton->SetEnabled(true);
|
||||
fInfoView->SetText("");
|
||||
@@ -633,10 +644,10 @@ void
|
||||
DownloadProgressView::DownloadCanceled()
|
||||
{
|
||||
fDownload = NULL;
|
||||
fTopButton->SetLabel("Restart");
|
||||
fTopButton->SetLabel(B_TRANSLATE("Restart"));
|
||||
fTopButton->SetMessage(new BMessage(RESTART_DOWNLOAD));
|
||||
fTopButton->SetEnabled(true);
|
||||
fBottomButton->SetLabel("Remove");
|
||||
fBottomButton->SetLabel(B_TRANSLATE("Remove"));
|
||||
fBottomButton->SetMessage(new BMessage(REMOVE_DOWNLOAD));
|
||||
fBottomButton->SetEnabled(true);
|
||||
fInfoView->SetText("");
|
||||
@@ -726,12 +737,14 @@ DownloadProgressView::_UpdateStatusText()
|
||||
currentSize.Truncate(currentSizeUnitPos);
|
||||
}
|
||||
buffer << currentSize;
|
||||
buffer << " of ";
|
||||
buffer << " ";
|
||||
buffer << B_TRANSLATE_COMMENT("of", "...as in '12kB of 256kB'");
|
||||
buffer << " ";
|
||||
buffer << expectedSize;
|
||||
buffer << ", ";
|
||||
buffer << string_for_size(fBytesPerSecond, sizeBuffer,
|
||||
sizeof(sizeBuffer));
|
||||
buffer << "/s)";
|
||||
buffer << B_TRANSLATE_COMMENT("/s)", "...as in 'per second'");
|
||||
float stringWidth = fInfoView->StringWidth(buffer.String());
|
||||
if (stringWidth < fInfoView->Bounds().Width())
|
||||
fInfoView->SetText(buffer.String());
|
||||
@@ -739,7 +752,7 @@ DownloadProgressView::_UpdateStatusText()
|
||||
// complete string too wide, try with shorter version
|
||||
buffer << string_for_size(fBytesPerSecond, sizeBuffer,
|
||||
sizeof(sizeBuffer));
|
||||
buffer << "/s";
|
||||
buffer << B_TRANSLATE_COMMENT("/s)", "...as in 'per second'");
|
||||
stringWidth = fInfoView->StringWidth(buffer.String());
|
||||
if (stringWidth < fInfoView->Bounds().Width())
|
||||
fInfoView->SetText(buffer.String());
|
||||
@@ -770,7 +783,7 @@ DownloadProgressView::_UpdateStatusText()
|
||||
2, time->tm_hour, 2, time->tm_min);
|
||||
}
|
||||
|
||||
BString buffer1("Finish: ");
|
||||
BString buffer1(B_TRANSLATE_COMMENT("Finish: ", "Finishing time"));
|
||||
buffer1 << timeText;
|
||||
finishTime -= now;
|
||||
time = gmtime(&finishTime);
|
||||
@@ -779,30 +792,36 @@ DownloadProgressView::_UpdateStatusText()
|
||||
if (finishTime > secondsPerDay) {
|
||||
int64 days = finishTime / secondsPerDay;
|
||||
if (days == 1)
|
||||
buffer2 << "Over 1 day";
|
||||
else
|
||||
buffer2 << "Over " << days << " days";
|
||||
buffer2 << B_TRANSLATE("Over 1 day left");
|
||||
else {
|
||||
buffer2 << B_TRANSLATE("Over %days days left");
|
||||
buffer2.ReplaceFirst("%days", BString() << days);
|
||||
}
|
||||
} else if (finishTime > 60 * 60) {
|
||||
int64 hours = finishTime / (60 * 60);
|
||||
if (hours == 1)
|
||||
buffer2 << "Over 1 hour";
|
||||
else
|
||||
buffer2 << "Over " << hours << " hours";
|
||||
buffer2 << B_TRANSLATE("Over 1 hour left");
|
||||
else {
|
||||
buffer2 << B_TRANSLATE("Over %hours hours left");
|
||||
buffer2.ReplaceFirst("%hours", BString() << hours);
|
||||
}
|
||||
} else if (finishTime > 60) {
|
||||
int64 minutes = finishTime / 60;
|
||||
if (minutes == 1)
|
||||
buffer2 << "Over 1 minute";
|
||||
else
|
||||
buffer2 << minutes << " minutes";
|
||||
buffer2 << B_TRANSLATE("Over 1 minute left");
|
||||
else {
|
||||
buffer2 << B_TRANSLATE("%minutes minutes");
|
||||
buffer2.ReplaceFirst("%minutes", BString() << minutes);
|
||||
}
|
||||
} else {
|
||||
if (finishTime == 1)
|
||||
buffer2 << "1 second";
|
||||
else
|
||||
buffer2 << finishTime << " seconds";
|
||||
buffer2 << B_TRANSLATE("1 second left");
|
||||
else {
|
||||
buffer2 << B_TRANSLATE("%seconds seconds left");
|
||||
buffer2.ReplaceFirst("%seconds", BString() << finishTime);
|
||||
}
|
||||
}
|
||||
|
||||
buffer2 << " left";
|
||||
|
||||
buffer = "(";
|
||||
buffer << buffer1 << " - " << buffer2 << ")";
|
||||
|
||||
|
||||
@@ -31,12 +31,14 @@
|
||||
|
||||
#include <Alert.h>
|
||||
#include <Button.h>
|
||||
#include <Catalog.h>
|
||||
#include <ControlLook.h>
|
||||
#include <Entry.h>
|
||||
#include <File.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <GroupLayout.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
#include <MenuBar.h>
|
||||
#include <MenuItem.h>
|
||||
#include <Path.h>
|
||||
@@ -54,6 +56,9 @@
|
||||
#include "WebPage.h"
|
||||
|
||||
|
||||
#undef B_TRANSLATION_CONTEXT
|
||||
#define B_TRANSLATION_CONTEXT "Download Window"
|
||||
|
||||
enum {
|
||||
INIT = 'init',
|
||||
OPEN_DOWNLOADS_FOLDER = 'odnf',
|
||||
@@ -134,7 +139,7 @@ protected:
|
||||
|
||||
DownloadWindow::DownloadWindow(BRect frame, bool visible,
|
||||
SettingsMessage* settings)
|
||||
: BWindow(frame, "Downloads",
|
||||
: BWindow(frame, B_TRANSLATE("Downloads"),
|
||||
B_TITLED_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL,
|
||||
B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE),
|
||||
fMinimizeOnClose(false)
|
||||
@@ -155,26 +160,27 @@ DownloadWindow::DownloadWindow(BRect frame, bool visible,
|
||||
fDownloadViewsLayout = downloadsGroupView->GroupLayout();
|
||||
|
||||
BMenuBar* menuBar = new BMenuBar("Menu bar");
|
||||
BMenu* menu = new BMenu("Downloads");
|
||||
menu->AddItem(new BMenuItem("Open downloads folder",
|
||||
BMenu* menu = new BMenu(B_TRANSLATE("Downloads"));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Open downloads folder"),
|
||||
new BMessage(OPEN_DOWNLOADS_FOLDER)));
|
||||
BMessage* newWindowMessage = new BMessage(NEW_WINDOW);
|
||||
newWindowMessage->AddString("url", "");
|
||||
BMenuItem* newWindowItem = new BMenuItem("New browser window",
|
||||
BMenuItem* newWindowItem = new BMenuItem(B_TRANSLATE("New browser window"),
|
||||
newWindowMessage, 'N');
|
||||
menu->AddItem(newWindowItem);
|
||||
newWindowItem->SetTarget(be_app);
|
||||
menu->AddSeparatorItem();
|
||||
menu->AddItem(new BMenuItem("Hide", new BMessage(B_QUIT_REQUESTED), 'D'));
|
||||
menu->AddItem(new BMenuItem(B_TRANSLATE("Hide"),
|
||||
new BMessage(B_QUIT_REQUESTED), 'D'));
|
||||
menuBar->AddItem(menu);
|
||||
|
||||
fDownloadsScrollView = new DownloadContainerScrollView(downloadsGroupView);
|
||||
|
||||
fRemoveFinishedButton = new BButton("Remove finished",
|
||||
fRemoveFinishedButton = new BButton(B_TRANSLATE("Remove finished"),
|
||||
new BMessage(REMOVE_FINISHED_DOWNLOADS));
|
||||
fRemoveFinishedButton->SetEnabled(false);
|
||||
|
||||
fRemoveMissingButton = new BButton("Remove missing",
|
||||
fRemoveMissingButton = new BButton(B_TRANSLATE("Remove missing"),
|
||||
new BMessage(REMOVE_MISSING_DOWNLOADS));
|
||||
fRemoveMissingButton->SetEnabled(false);
|
||||
|
||||
@@ -274,11 +280,12 @@ DownloadWindow::MessageReceived(BMessage* message)
|
||||
if (status == B_OK)
|
||||
status = be_roster->Launch(&ref);
|
||||
if (status != B_OK && status != B_ALREADY_RUNNING) {
|
||||
BString errorString("The downloads folder could not be "
|
||||
"opened.\n\n");
|
||||
errorString << "Error: " << strerror(status);
|
||||
BAlert* alert = new BAlert("Error opening downloads folder",
|
||||
errorString.String(), "OK");
|
||||
BString errorString(B_TRANSLATE_COMMENT("The downloads folder could "
|
||||
"not be opened.\n\nError: %error", "Don't translate "
|
||||
"variable %error"));
|
||||
errorString.ReplaceFirst("%error", strerror(status));
|
||||
BAlert* alert = new BAlert(B_TRANSLATE("Error opening downloads "
|
||||
"folder"), errorString.String(), B_TRANSLATE("OK"));
|
||||
alert->Go(NULL);
|
||||
}
|
||||
break;
|
||||
@@ -528,9 +535,10 @@ DownloadWindow::_SaveSettings()
|
||||
item->View());
|
||||
if (!view)
|
||||
continue;
|
||||
BMessage downloadArchive;
|
||||
if (view->SaveSettings(&downloadArchive) == B_OK)
|
||||
message.AddMessage("download", &downloadArchive);
|
||||
|
||||
BMessage downloadArchive;
|
||||
if (view->SaveSettings(&downloadArchive) == B_OK)
|
||||
message.AddMessage("download", &downloadArchive);
|
||||
}
|
||||
message.Flatten(&file);
|
||||
}
|
||||
|
||||
@@ -7,10 +7,12 @@
|
||||
|
||||
#include <Bitmap.h>
|
||||
#include <Button.h>
|
||||
#include <Catalog.h>
|
||||
#include <ControlLook.h>
|
||||
#include <Clipboard.h>
|
||||
#include <GroupLayout.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
#include <LayoutUtils.h>
|
||||
#include <MenuItem.h>
|
||||
#include <PopUpMenu.h>
|
||||
@@ -28,6 +30,10 @@
|
||||
#include "TextViewCompleter.h"
|
||||
|
||||
|
||||
#undef B_TRANSLATION_CONTEXT
|
||||
#define B_TRANSLATION_CONTEXT "URL Bar"
|
||||
|
||||
|
||||
class URLChoice : public BAutoCompleter::Choice {
|
||||
public:
|
||||
URLChoice(const BString& choiceText, const BString& displayText,
|
||||
@@ -235,10 +241,14 @@ URLInputGroup::URLTextView::MouseDown(BPoint where)
|
||||
be_clipboard->Unlock();
|
||||
}
|
||||
|
||||
BMenuItem* cutItem = new BMenuItem("Cut", new BMessage(B_CUT));
|
||||
BMenuItem* copyItem = new BMenuItem("Copy", new BMessage(B_COPY));
|
||||
BMenuItem* pasteItem = new BMenuItem("Paste", new BMessage(B_PASTE));
|
||||
BMenuItem* clearItem = new BMenuItem("Clear", new BMessage(MSG_CLEAR));
|
||||
BMenuItem* cutItem = new BMenuItem(B_TRANSLATE("Cut"),
|
||||
new BMessage(B_CUT));
|
||||
BMenuItem* copyItem = new BMenuItem(B_TRANSLATE("Copy"),
|
||||
new BMessage(B_COPY));
|
||||
BMenuItem* pasteItem = new BMenuItem(B_TRANSLATE("Paste"),
|
||||
new BMessage(B_PASTE));
|
||||
BMenuItem* clearItem = new BMenuItem(B_TRANSLATE("Clear"),
|
||||
new BMessage(MSG_CLEAR));
|
||||
cutItem->SetEnabled(canCutOrCopy);
|
||||
copyItem->SetEnabled(canCutOrCopy);
|
||||
pasteItem->SetEnabled(canPaste);
|
||||
@@ -362,8 +372,8 @@ URLInputGroup::URLTextView::InsertText(const char* inText, int32 inLength,
|
||||
baseUrlEnd = TextLength();
|
||||
BFont font;
|
||||
GetFont(&font);
|
||||
const rgb_color black = (rgb_color){ 0, 0, 0, 255 };
|
||||
const rgb_color gray = (rgb_color){ 60, 60, 60, 255 };
|
||||
const rgb_color black = (rgb_color) { 0, 0, 0, 255 };
|
||||
const rgb_color gray = (rgb_color) { 60, 60, 60, 255 };
|
||||
if (baseUrlStart > 0)
|
||||
SetFontAndColor(0, baseUrlStart - 1, &font, B_FONT_ALL, &gray);
|
||||
if (baseUrlEnd > baseUrlStart) {
|
||||
|
||||
Reference in New Issue
Block a user