r5468 mmu_man - in /trunk/netsurf/beos: beos_gui.cpp beos_window.cpp res/beosdefault.css
by netsurf@semichrome.net
Author: mmu_man
Date: Thu Oct 2 08:34:20 2008
New Revision: 5468
URL: http://source.netsurf-browser.org?rev=5468&view=rev
Log:
- switch to using builtin css files from rsrc:
- add debug output to trace keyboard input as textinput doesn't work anymore.
Modified:
trunk/netsurf/beos/beos_gui.cpp
trunk/netsurf/beos/beos_window.cpp
trunk/netsurf/beos/res/beosdefault.css
Modified: trunk/netsurf/beos/beos_gui.cpp
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/beos_gui.cpp?rev=546...
==============================================================================
--- trunk/netsurf/beos/beos_gui.cpp (original)
+++ trunk/netsurf/beos/beos_gui.cpp Thu Oct 2 08:34:20 2008
@@ -78,7 +78,10 @@
/* Where to search for shared resources. Must have trailing / */
#define RESPATH "/boot/apps/netsurf/res/"
+
//TODO: use resources
+// enable using resources instead of files
+#define USE_RESOURCES 1
bool gui_in_multitask = false;
@@ -464,15 +467,22 @@
beos_fetch_filetype_init(buf);
/* set up stylesheet urls */
+
+#ifdef USE_RESOURCES
+ default_stylesheet_url = strdup("rsrc:/beosdefault.css,text/css");
+#else
find_resource(buf, "beosdefault.css", "./beos/res/beosdefault.css");
default_stylesheet_url = path_to_url(buf);
- //default_stylesheet_url = strdup("rsrc:/beosdefault.css,text/css");
+#endif
//default_stylesheet_url = generate_default_css();
LOG(("Using '%s' as Default CSS URL", default_stylesheet_url));
+#ifdef USE_RESOURCES
+ adblock_stylesheet_url = strdup("rsrc:/adblock.css,text/css");
+#else
find_resource(buf, "adblock.css", "./beos/res/adblock.css");
adblock_stylesheet_url = path_to_url(buf);
- //adblock_stylesheet_url = strdup("rsrc:/adblock.css,text/css");
+#endif
LOG(("Using '%s' as AdBlock CSS URL", adblock_stylesheet_url));
urldb_load(option_url_file);
Modified: trunk/netsurf/beos/beos_window.cpp
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/beos_window.cpp?rev=...
==============================================================================
--- trunk/netsurf/beos/beos_window.cpp (original)
+++ trunk/netsurf/beos/beos_window.cpp Thu Oct 2 08:34:20 2008
@@ -627,7 +627,6 @@
LOG(("discarding event for destroyed scaffolding"));
return;
}
- //#warning XXX VALIDATE gui_window!!!
// messages for top-level
if (scaffold) {
@@ -637,6 +636,7 @@
return;
}
+ LOG(("processing message"));
switch (message->what) {
case B_QUIT_REQUESTED:
// from the BApplication
@@ -814,6 +814,7 @@
if (!numbytes)
numbytes = strlen(bytes);
+ LOG(("mods 0x%08lx key %ld raw %ld byte[0] %d", mods, key, raw_char, buff[0]));
char byte;
if (numbytes == 1) {
@@ -877,7 +878,9 @@
// else use convert_from_utf8()
}
- if (browser_window_key_press(g->bw, nskey))
+ bool done = browser_window_key_press(g->bw, nskey);
+ LOG(("nskey %d %d", nskey, done));
+ //if (browser_window_key_press(g->bw, nskey))
return;
}
Modified: trunk/netsurf/beos/res/beosdefault.css
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/res/beosdefault.css?...
==============================================================================
--- trunk/netsurf/beos/res/beosdefault.css (original)
+++ trunk/netsurf/beos/res/beosdefault.css Thu Oct 2 08:34:20 2008
@@ -4,7 +4,8 @@
/* Load base stylesheet. */
-@import "default.css";
+/*@import "default.css";*/
+@import "rsrc:/default.css,text/css";
/* Apply GTK specific rules. */
15 years, 2 months
r5467 mmu_man - in /trunk/netsurf/beos: beos_scaffolding.cpp beos_scaffolding.h beos_window.cpp
by netsurf@semichrome.net
Author: mmu_man
Date: Wed Oct 1 19:11:30 2008
New Revision: 5467
URL: http://source.netsurf-browser.org?rev=5467&view=rev
Log:
First try at implementing menus, from RiscOS ones but lots don't work yet.
Modified:
trunk/netsurf/beos/beos_scaffolding.cpp
trunk/netsurf/beos/beos_scaffolding.h
trunk/netsurf/beos/beos_window.cpp
Modified: trunk/netsurf/beos/beos_scaffolding.cpp
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/beos_scaffolding.cpp...
==============================================================================
--- trunk/netsurf/beos/beos_scaffolding.cpp (original)
+++ trunk/netsurf/beos/beos_scaffolding.cpp Wed Oct 1 19:11:30 2008
@@ -24,7 +24,9 @@
#include <string.h>
#include <BeBuild.h>
#include <Button.h>
+#include <Menu.h>
#include <MenuBar.h>
+#include <MenuItem.h>
#include <Node.h>
#include <Path.h>
#include <PopUpMenu.h>
@@ -98,30 +100,18 @@
BScrollView *scroll_view;
#warning XXX
#if 0 /* GTK */
- GtkWindow *window;
- GtkEntry *url_bar;
GtkEntryCompletion *url_bar_completion;
- GtkLabel *status_bar;
- GtkToolbar *tool_bar;
- GtkToolButton *back_button;
- GtkToolButton *forward_button;
- GtkToolButton *stop_button;
- GtkToolButton *reload_button;
GtkMenuBar *menu_bar;
GtkMenuItem *back_menu;
GtkMenuItem *forward_menu;
GtkMenuItem *stop_menu;
GtkMenuItem *reload_menu;
- GtkImage *throbber;
- GtkPaned *status_pane;
-
- GladeXML *xml;
GladeXML *popup_xml;
GtkMenu *popup_menu;
- struct gtk_history_window *history_window;
#endif
+ struct beos_history_window *history_window;
int throb_frame;
struct gui_window *top_level;
@@ -132,6 +122,8 @@
struct beos_history_window {
struct beos_scaffolding *g;
+ BWindow *window;
+
#warning XXX
#if 0 /* GTK */
GtkWindow *window;
@@ -149,116 +141,10 @@
};
-#warning XXX: UPDATE
-typedef enum {
-
- /* no/unknown actions */
- NO_ACTION,
-
- /* help actions */
- HELP_OPEN_CONTENTS,
- HELP_OPEN_GUIDE,
- HELP_OPEN_INFORMATION,
- HELP_OPEN_ABOUT,
- HELP_LAUNCH_INTERACTIVE,
-
- /* history actions */
- HISTORY_SHOW_LOCAL,
- HISTORY_SHOW_GLOBAL,
-
- /* hotlist actions */
- HOTLIST_ADD_URL,
- HOTLIST_SHOW,
-
- /* cookie actions */
- COOKIES_SHOW,
- COOKIES_DELETE,
-
- /* page actions */
- BROWSER_PAGE,
- BROWSER_PAGE_INFO,
- BROWSER_PRINT,
- BROWSER_NEW_WINDOW,
- BROWSER_VIEW_SOURCE,
-
- /* object actions */
- BROWSER_OBJECT,
- BROWSER_OBJECT_INFO,
- BROWSER_OBJECT_RELOAD,
-
- /* save actions */
- BROWSER_OBJECT_SAVE,
- BROWSER_OBJECT_EXPORT_SPRITE,
- BROWSER_OBJECT_SAVE_URL_URI,
- BROWSER_OBJECT_SAVE_URL_URL,
- BROWSER_OBJECT_SAVE_URL_TEXT,
- BROWSER_SAVE,
- BROWSER_SAVE_COMPLETE,
- BROWSER_EXPORT_DRAW,
- BROWSER_EXPORT_TEXT,
- BROWSER_SAVE_URL_URI,
- BROWSER_SAVE_URL_URL,
- BROWSER_SAVE_URL_TEXT,
- HOTLIST_EXPORT,
- HISTORY_EXPORT,
-
- /* navigation actions */
- BROWSER_NAVIGATE_HOME,
- BROWSER_NAVIGATE_BACK,
- BROWSER_NAVIGATE_FORWARD,
- BROWSER_NAVIGATE_UP,
- BROWSER_NAVIGATE_RELOAD,
- BROWSER_NAVIGATE_RELOAD_ALL,
- BROWSER_NAVIGATE_STOP,
- BROWSER_NAVIGATE_URL,
-
- /* browser window/display actions */
- BROWSER_SCALE_VIEW,
- BROWSER_FIND_TEXT,
- BROWSER_IMAGES_FOREGROUND,
- BROWSER_IMAGES_BACKGROUND,
- BROWSER_BUFFER_ANIMS,
- BROWSER_BUFFER_ALL,
- BROWSER_SAVE_VIEW,
- BROWSER_WINDOW_DEFAULT,
- BROWSER_WINDOW_STAGGER,
- BROWSER_WINDOW_COPY,
- BROWSER_WINDOW_RESET,
-
- /* tree actions */
- TREE_NEW_FOLDER,
- TREE_NEW_LINK,
- TREE_EXPAND_ALL,
- TREE_EXPAND_FOLDERS,
- TREE_EXPAND_LINKS,
- TREE_COLLAPSE_ALL,
- TREE_COLLAPSE_FOLDERS,
- TREE_COLLAPSE_LINKS,
- TREE_SELECTION,
- TREE_SELECTION_EDIT,
- TREE_SELECTION_LAUNCH,
- TREE_SELECTION_DELETE,
- TREE_SELECT_ALL,
- TREE_CLEAR_SELECTION,
-
- /* toolbar actions */
- TOOLBAR_BUTTONS,
- TOOLBAR_ADDRESS_BAR,
- TOOLBAR_THROBBER,
- TOOLBAR_EDIT,
-
- /* misc actions */
- CHOICES_SHOW,
- APPLICATION_QUIT,
-} menu_action;
static int open_windows = 0; /**< current number of open browsers */
static struct beos_scaffolding *current_model; /**< current window for model dialogue use */
-#warning XXX
-#if 0 /* GTK */
-static void nsbeos_window_destroy_event(GtkWidget *, gpointer);
-#endif
static void nsbeos_window_update_back_forward(struct beos_scaffolding *);
static void nsbeos_throb(void *);
@@ -489,6 +375,8 @@
int width, height;
struct browser_window *bw;
bw = nsbeos_get_browser_for_gui(scaffold->top_level);
+ bool reloadAll = false;
+
LOG(("nsbeos_scaffolding_dispatch_event() what = 0x%08lx", message->what));
switch (message->what) {
case B_QUIT_REQUESTED:
@@ -532,24 +420,32 @@
browser_window_go(bw, url.String(), 0, true);
break;
}
+ case BROWSER_NAVIGATE_BACK:
case 'back':
if (!history_back_available(bw->history))
break;
history_back(bw, bw->history);
nsbeos_window_update_back_forward(scaffold);
break;
+ case BROWSER_NAVIGATE_FORWARD:
case 'forw':
if (!history_forward_available(bw->history))
break;
history_forward(bw, bw->history);
nsbeos_window_update_back_forward(scaffold);
break;
+ case BROWSER_NAVIGATE_STOP:
case 'stop':
browser_window_stop(bw);
break;
+ case BROWSER_NAVIGATE_RELOAD_ALL:
case 'relo':
- browser_window_reload(bw, true);
- break;
+ reloadAll = true;
+ // FALLTHRU
+ case BROWSER_NAVIGATE_RELOAD:
+ browser_window_reload(bw, reloadAll);
+ break;
+ case BROWSER_NAVIGATE_HOME:
case 'home':
{
static const char *addr = NETSURF_HOMEPAGE;
@@ -581,6 +477,7 @@
//nsbeos_completion_update(text.String());
break;
}
+/*
case 'menu':
{
menu_action action;
@@ -599,6 +496,142 @@
#warning XXX
break;
}
+*/
+ case NO_ACTION:
+ break;
+ case HELP_OPEN_CONTENTS:
+ break;
+ case HELP_OPEN_GUIDE:
+ break;
+ case HELP_OPEN_INFORMATION:
+ break;
+ case HELP_OPEN_ABOUT:
+ break;
+ case HELP_LAUNCH_INTERACTIVE:
+ break;
+ case HISTORY_SHOW_LOCAL:
+ break;
+ case HISTORY_SHOW_GLOBAL:
+ break;
+ case HOTLIST_ADD_URL:
+ break;
+ case HOTLIST_SHOW:
+ break;
+ case COOKIES_SHOW:
+ break;
+ case COOKIES_DELETE:
+ break;
+ case BROWSER_PAGE:
+ break;
+ case BROWSER_PAGE_INFO:
+ break;
+ case BROWSER_PRINT:
+ break;
+ case BROWSER_NEW_WINDOW:
+ {
+ BString text;
+ if (!scaffold->url_bar->LockLooper())
+ break;
+ text = scaffold->url_bar->Text();
+ scaffold->url_bar->UnlockLooper();
+
+ browser_window_create(text.String(), bw, NULL, false, false);
+ break;
+ }
+ case BROWSER_VIEW_SOURCE:
+ break;
+ case BROWSER_OBJECT:
+ break;
+ case BROWSER_OBJECT_INFO:
+ break;
+ case BROWSER_OBJECT_RELOAD:
+ break;
+ case BROWSER_OBJECT_SAVE:
+ break;
+ case BROWSER_OBJECT_EXPORT_SPRITE:
+ break;
+ case BROWSER_OBJECT_SAVE_URL_URI:
+ break;
+ case BROWSER_OBJECT_SAVE_URL_URL:
+ break;
+ case BROWSER_OBJECT_SAVE_URL_TEXT:
+ break;
+ case BROWSER_SAVE:
+ break;
+ case BROWSER_SAVE_COMPLETE:
+ break;
+ case BROWSER_EXPORT_DRAW:
+ break;
+ case BROWSER_EXPORT_TEXT:
+ break;
+ case BROWSER_SAVE_URL_URI:
+ break;
+ case BROWSER_SAVE_URL_URL:
+ break;
+ case BROWSER_SAVE_URL_TEXT:
+ break;
+ case HOTLIST_EXPORT:
+ break;
+ case HISTORY_EXPORT:
+ break;
+ case BROWSER_NAVIGATE_UP:
+ break;
+ case BROWSER_NAVIGATE_URL:
+ if (!scaffold->url_bar->LockLooper())
+ break;
+ scaffold->url_bar->MakeFocus();
+ scaffold->url_bar->UnlockLooper();
+ break;
+ case BROWSER_SCALE_VIEW:
+ break;
+ case BROWSER_FIND_TEXT:
+ break;
+ case BROWSER_IMAGES_FOREGROUND:
+ break;
+ case BROWSER_IMAGES_BACKGROUND:
+ break;
+ case BROWSER_BUFFER_ANIMS:
+ break;
+ case BROWSER_BUFFER_ALL:
+ break;
+ case BROWSER_SAVE_VIEW:
+ break;
+ case BROWSER_WINDOW_DEFAULT:
+ break;
+ case BROWSER_WINDOW_STAGGER:
+ break;
+ case BROWSER_WINDOW_COPY:
+ break;
+ case BROWSER_WINDOW_RESET:
+ break;
+ case TREE_NEW_FOLDER:
+ case TREE_NEW_LINK:
+ case TREE_EXPAND_ALL:
+ case TREE_EXPAND_FOLDERS:
+ case TREE_EXPAND_LINKS:
+ case TREE_COLLAPSE_ALL:
+ case TREE_COLLAPSE_FOLDERS:
+ case TREE_COLLAPSE_LINKS:
+ case TREE_SELECTION:
+ case TREE_SELECTION_EDIT:
+ case TREE_SELECTION_LAUNCH:
+ case TREE_SELECTION_DELETE:
+ case TREE_SELECT_ALL:
+ case TREE_CLEAR_SELECTION:
+ break;
+ case TOOLBAR_BUTTONS:
+ break;
+ case TOOLBAR_ADDRESS_BAR:
+ break;
+ case TOOLBAR_THROBBER:
+ break;
+ case TOOLBAR_EDIT:
+ break;
+ case CHOICES_SHOW:
+ break;
+ case APPLICATION_QUIT:
+ netsurf_quit = true;
+ break;
default:
break;
}
@@ -610,14 +643,6 @@
if (scaffold->being_destroyed) return;
scaffold->being_destroyed = 1;
nsbeos_window_destroy_event(scaffold->window, scaffold, NULL);
-#warning XXX
-#if 0 /* GTK */
- /* Our top_level has asked us to die */
- LOG(("Being Destroyed = %d", scaffold->being_destroyed));
- if (scaffold->being_destroyed) return;
- scaffold->being_destroyed = 1;
- nsbeos_window_destroy_event(0, scaffold);
-#endif
}
@@ -1115,6 +1140,17 @@
g->url_bar->SetTarget(view);
+ for (int i = 0; g->menu_bar->ItemAt(i); i++) {
+ if (!g->menu_bar->SubmenuAt(i))
+ continue;
+ g->menu_bar->SubmenuAt(i)->SetTargetForItems(view);
+ for (int j = 0; g->menu_bar->SubmenuAt(i)->ItemAt(j); j++) {
+ if (!g->menu_bar->SubmenuAt(i)->SubmenuAt(j))
+ continue;
+ g->menu_bar->SubmenuAt(i)->SubmenuAt(j)->SetTargetForItems(view);
+ }
+ }
+
if (g->window)
g->window->Show();
@@ -1146,6 +1182,53 @@
beos_widget_set_size_request(beos_WIDGET(vp), 0, 0);
#endif
+}
+
+static BMenuItem *make_menu_item(const char *name, BMessage *msg)
+{
+ BMenuItem *item;
+ BString label(messages_get(name));
+ BString accel;
+ uint32 mods = 0;
+ char key = 0;
+ // try to understand accelerators
+ int32 start = label.IFindLast(" ");
+ if (start > 0 && (label.Length() - start > 1)
+ && (label.Length() - start < 7)
+ && (label[start + 1] == 'F'
+ || label[start + 1] == '\xe2'
+ || label[start + 1] == '^')) {
+
+ label.MoveInto(accel, start, label.Length());
+ // strip the trailing spaces
+ while (label[label.Length() - 1] == ' ')
+ label.Truncate(label.Length() - 1);
+
+ if (accel.FindFirst("\xe2\x87\x91") > -1) {
+ accel.RemoveFirst("\xe2\x87\x91");
+ mods |= B_SHIFT_KEY;
+ }
+ if (accel.FindFirst("^") > -1) {
+ accel.RemoveFirst("^");
+ mods |= B_CONTROL_KEY; // ALT!!!
+ }
+ if (accel.Length() > 1 && accel[0] == 'F') { // Function key
+ int num;
+ if (sscanf(accel.String(), "F%d", &num) > 0) {
+ //
+ }
+ } else if (accel.Length() > 0) {
+ key = accel[0];
+ }
+ printf("MENU: detected accel '%s' mods 0x%08lx, key %d\n", accel.String(), mods, key);
+ }
+
+ // turn ... into ellipsis
+ label.ReplaceAll("...", B_UTF8_ELLIPSIS);
+
+ item = new BMenuItem(label.String(), msg, key, mods);
+
+ return item;
}
nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
@@ -1208,21 +1291,286 @@
g->window->AddChild(g->menu_bar);
BMenu *menu;
-
- menu = new BMenu("File");
+ BMenu *submenu;
+ BMenuItem *item;
+ BMessage *msg;
+
+ // App menu
+ //XXX: use icon item ?
+
+ menu = new BMenu(messages_get("NetSurf"));
g->menu_bar->AddItem(menu);
- menu = new BMenu("Edit");
+ msg = new BMessage(NO_ACTION);
+ item = make_menu_item("Info", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(NO_ACTION);
+ item = make_menu_item("AppHelp", msg);
+ menu->AddItem(item);
+
+ submenu = new BMenu(messages_get("Open"));
+ menu->AddItem(submenu);
+
+ msg = new BMessage(NO_ACTION);
+ item = make_menu_item("OpenURL", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(CHOICES_SHOW);
+ item = make_menu_item("Choices", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(APPLICATION_QUIT);
+ item = make_menu_item("Quit", msg);
+ menu->AddItem(item);
+
+ // Page menu
+
+ menu = new BMenu(messages_get("Page"));
g->menu_bar->AddItem(menu);
- menu = new BMenu("View");
+ msg = new BMessage(BROWSER_PAGE_INFO);
+ item = make_menu_item("PageInfo", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_SAVE);
+ item = make_menu_item("Save", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_SAVE_COMPLETE);
+ item = make_menu_item("SaveComp", msg);
+ menu->AddItem(item);
+
+ submenu = new BMenu(messages_get("Export"));
+ menu->AddItem(submenu);
+
+ /*
+ msg = new BMessage(BROWSER_EXPORT_DRAW);
+ item = make_menu_item("Draw", msg);
+ submenu->AddItem(item);
+ */
+
+ msg = new BMessage(BROWSER_EXPORT_TEXT);
+ item = make_menu_item("Text", msg);
+ submenu->AddItem(item);
+
+
+ submenu = new BMenu(messages_get("SaveURL"));
+ menu->AddItem(submenu);
+
+ //XXX
+ msg = new BMessage(BROWSER_OBJECT_SAVE_URL_URL);
+ item = make_menu_item("URL", msg);
+ submenu->AddItem(item);
+
+
+ msg = new BMessage(BROWSER_PRINT);
+ item = make_menu_item("Print", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_NEW_WINDOW);
+ item = make_menu_item("NewWindow", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_VIEW_SOURCE);
+ item = make_menu_item("ViewSrc", msg);
+ menu->AddItem(item);
+
+ // Object menu
+
+ menu = new BMenu(messages_get("Object"));
g->menu_bar->AddItem(menu);
- menu = new BMenu("Navigate");
+ msg = new BMessage(BROWSER_OBJECT_INFO);
+ item = make_menu_item("ObjInfo", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_OBJECT_SAVE);
+ item = make_menu_item("ObjSave", msg);
+ menu->AddItem(item);
+ // XXX: submenu: Sprite ?
+
+ msg = new BMessage(BROWSER_OBJECT_RELOAD);
+ item = make_menu_item("ObjReload", msg);
+ menu->AddItem(item);
+
+ // Navigate menu
+
+ menu = new BMenu(messages_get("Navigate"));
g->menu_bar->AddItem(menu);
- menu = new BMenu("Help");
+ msg = new BMessage(BROWSER_NAVIGATE_HOME);
+ item = make_menu_item("Home", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_NAVIGATE_BACK);
+ item = make_menu_item("Back", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_NAVIGATE_FORWARD);
+ item = make_menu_item("Forward", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_NAVIGATE_UP);
+ item = make_menu_item("UpLevel", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_NAVIGATE_RELOAD);
+ item = make_menu_item("Reload", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(BROWSER_NAVIGATE_STOP);
+ item = make_menu_item("Stop", msg);
+ menu->AddItem(item);
+
+ // View menu
+
+ menu = new BMenu(messages_get("View"));
g->menu_bar->AddItem(menu);
+
+ msg = new BMessage(BROWSER_SCALE_VIEW);
+ item = make_menu_item("ScaleView", msg);
+ menu->AddItem(item);
+
+ submenu = new BMenu(messages_get("Images"));
+ menu->AddItem(submenu);
+
+ msg = new BMessage(BROWSER_IMAGES_FOREGROUND);
+ item = make_menu_item("ForeImg", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(BROWSER_IMAGES_BACKGROUND);
+ item = make_menu_item("BackImg", msg);
+ submenu->AddItem(item);
+
+
+ submenu = new BMenu(messages_get("Toolbars"));
+ menu->AddItem(submenu);
+ submenu->SetEnabled(false);
+
+ msg = new BMessage(NO_ACTION);
+ item = make_menu_item("ToolButtons", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(NO_ACTION);
+ item = make_menu_item("ToolAddress", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(NO_ACTION);
+ item = make_menu_item("ToolThrob", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(NO_ACTION);
+ item = make_menu_item("ToolStatus", msg);
+ submenu->AddItem(item);
+
+
+ submenu = new BMenu(messages_get("Render"));
+ menu->AddItem(submenu);
+
+ msg = new BMessage(BROWSER_BUFFER_ANIMS);
+ item = make_menu_item("RenderAnims", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(BROWSER_BUFFER_ALL);
+ item = make_menu_item("RenderAll", msg);
+ submenu->AddItem(item);
+
+
+ msg = new BMessage(NO_ACTION);
+ item = make_menu_item("OptDefault", msg);
+ menu->AddItem(item);
+
+ // Utilities menu
+
+ menu = new BMenu(messages_get("Utilities"));
+ g->menu_bar->AddItem(menu);
+
+ submenu = new BMenu(messages_get("Hotlist"));
+ menu->AddItem(submenu);
+
+ msg = new BMessage(HOTLIST_ADD_URL);
+ item = make_menu_item("HotlistAdd", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(HOTLIST_SHOW);
+ item = make_menu_item("HotlistShow", msg);
+ submenu->AddItem(item);
+
+
+ submenu = new BMenu(messages_get("History"));
+ menu->AddItem(submenu);
+
+ msg = new BMessage(HISTORY_SHOW_LOCAL);
+ item = make_menu_item("HistLocal", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(HISTORY_SHOW_GLOBAL);
+ item = make_menu_item("HistGlobal", msg);
+ submenu->AddItem(item);
+
+
+ submenu = new BMenu(messages_get("Cookies"));
+ menu->AddItem(submenu);
+
+ msg = new BMessage(COOKIES_SHOW);
+ item = make_menu_item("ShowCookies", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(COOKIES_DELETE);
+ item = make_menu_item("DeleteCookies", msg);
+ submenu->AddItem(item);
+
+
+ msg = new BMessage(BROWSER_FIND_TEXT);
+ item = make_menu_item("FindText", msg);
+ menu->AddItem(item);
+
+ submenu = new BMenu(messages_get("Window"));
+ menu->AddItem(submenu);
+
+ msg = new BMessage(BROWSER_WINDOW_DEFAULT);
+ item = make_menu_item("WindowSave", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(BROWSER_WINDOW_STAGGER);
+ item = make_menu_item("WindowStagr", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(BROWSER_WINDOW_COPY);
+ item = make_menu_item("WindowSize", msg);
+ submenu->AddItem(item);
+
+ msg = new BMessage(BROWSER_WINDOW_RESET);
+ item = make_menu_item("WindowReset", msg);
+ submenu->AddItem(item);
+
+
+ // Help menu
+
+ menu = new BMenu(messages_get("Help"));
+ g->menu_bar->AddItem(menu);
+
+ msg = new BMessage(HELP_OPEN_CONTENTS);
+ item = make_menu_item("HelpContent", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(HELP_OPEN_GUIDE);
+ item = make_menu_item("HelpGuide", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(HELP_OPEN_INFORMATION);
+ item = make_menu_item("HelpInfo", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(HELP_OPEN_ABOUT);
+ item = make_menu_item("HelpAbout", msg);
+ menu->AddItem(item);
+
+ msg = new BMessage(HELP_LAUNCH_INTERACTIVE);
+ item = make_menu_item("HelpInter", msg);
+ menu->AddItem(item);
+
// the base view that receives the toolbar, statusbar and top-level view.
rect = frame.OffsetToCopy(0,0);
Modified: trunk/netsurf/beos/beos_scaffolding.h
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/beos_scaffolding.h?r...
==============================================================================
--- trunk/netsurf/beos/beos_scaffolding.h (original)
+++ trunk/netsurf/beos/beos_scaffolding.h Wed Oct 1 19:11:30 2008
@@ -44,6 +44,109 @@
};
+typedef enum {
+
+ /* no/unknown actions */
+ NO_ACTION = 'nsMA',
+
+ /* help actions */
+ HELP_OPEN_CONTENTS,
+ HELP_OPEN_GUIDE,
+ HELP_OPEN_INFORMATION,
+ HELP_OPEN_ABOUT,
+ HELP_LAUNCH_INTERACTIVE,
+
+ /* history actions */
+ HISTORY_SHOW_LOCAL,
+ HISTORY_SHOW_GLOBAL,
+
+ /* hotlist actions */
+ HOTLIST_ADD_URL,
+ HOTLIST_SHOW,
+
+ /* cookie actions */
+ COOKIES_SHOW,
+ COOKIES_DELETE,
+
+ /* page actions */
+ BROWSER_PAGE,
+ BROWSER_PAGE_INFO,
+ BROWSER_PRINT,
+ BROWSER_NEW_WINDOW,
+ BROWSER_VIEW_SOURCE,
+
+ /* object actions */
+ BROWSER_OBJECT,
+ BROWSER_OBJECT_INFO,
+ BROWSER_OBJECT_RELOAD,
+
+ /* save actions */
+ BROWSER_OBJECT_SAVE,
+ BROWSER_OBJECT_EXPORT_SPRITE,
+ BROWSER_OBJECT_SAVE_URL_URI,
+ BROWSER_OBJECT_SAVE_URL_URL,
+ BROWSER_OBJECT_SAVE_URL_TEXT,
+ BROWSER_SAVE,
+ BROWSER_SAVE_COMPLETE,
+ BROWSER_EXPORT_DRAW,
+ BROWSER_EXPORT_TEXT,
+ BROWSER_SAVE_URL_URI,
+ BROWSER_SAVE_URL_URL,
+ BROWSER_SAVE_URL_TEXT,
+ HOTLIST_EXPORT,
+ HISTORY_EXPORT,
+
+ /* navigation actions */
+ BROWSER_NAVIGATE_HOME,
+ BROWSER_NAVIGATE_BACK,
+ BROWSER_NAVIGATE_FORWARD,
+ BROWSER_NAVIGATE_UP,
+ BROWSER_NAVIGATE_RELOAD,
+ BROWSER_NAVIGATE_RELOAD_ALL,
+ BROWSER_NAVIGATE_STOP,
+ BROWSER_NAVIGATE_URL,
+
+ /* browser window/display actions */
+ BROWSER_SCALE_VIEW,
+ BROWSER_FIND_TEXT,
+ BROWSER_IMAGES_FOREGROUND,
+ BROWSER_IMAGES_BACKGROUND,
+ BROWSER_BUFFER_ANIMS,
+ BROWSER_BUFFER_ALL,
+ BROWSER_SAVE_VIEW,
+ BROWSER_WINDOW_DEFAULT,
+ BROWSER_WINDOW_STAGGER,
+ BROWSER_WINDOW_COPY,
+ BROWSER_WINDOW_RESET,
+
+ /* tree actions */
+ TREE_NEW_FOLDER,
+ TREE_NEW_LINK,
+ TREE_EXPAND_ALL,
+ TREE_EXPAND_FOLDERS,
+ TREE_EXPAND_LINKS,
+ TREE_COLLAPSE_ALL,
+ TREE_COLLAPSE_FOLDERS,
+ TREE_COLLAPSE_LINKS,
+ TREE_SELECTION,
+ TREE_SELECTION_EDIT,
+ TREE_SELECTION_LAUNCH,
+ TREE_SELECTION_DELETE,
+ TREE_SELECT_ALL,
+ TREE_CLEAR_SELECTION,
+
+ /* toolbar actions */
+ TOOLBAR_BUTTONS,
+ TOOLBAR_ADDRESS_BAR,
+ TOOLBAR_THROBBER,
+ TOOLBAR_EDIT,
+
+ /* misc actions */
+ CHOICES_SHOW,
+ APPLICATION_QUIT,
+} menu_action;
+
+
NSBrowserWindow *nsbeos_find_last_window(void);
nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel);
Modified: trunk/netsurf/beos/beos_window.cpp
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/beos_window.cpp?rev=...
==============================================================================
--- trunk/netsurf/beos/beos_window.cpp (original)
+++ trunk/netsurf/beos/beos_window.cpp Wed Oct 1 19:11:30 2008
@@ -138,6 +138,79 @@
case 'urlc':
case 'urle':
case 'menu':
+ case NO_ACTION:
+ case HELP_OPEN_CONTENTS:
+ case HELP_OPEN_GUIDE:
+ case HELP_OPEN_INFORMATION:
+ case HELP_OPEN_ABOUT:
+ case HELP_LAUNCH_INTERACTIVE:
+ case HISTORY_SHOW_LOCAL:
+ case HISTORY_SHOW_GLOBAL:
+ case HOTLIST_ADD_URL:
+ case HOTLIST_SHOW:
+ case COOKIES_SHOW:
+ case COOKIES_DELETE:
+ case BROWSER_PAGE:
+ case BROWSER_PAGE_INFO:
+ case BROWSER_PRINT:
+ case BROWSER_NEW_WINDOW:
+ case BROWSER_VIEW_SOURCE:
+ case BROWSER_OBJECT:
+ case BROWSER_OBJECT_INFO:
+ case BROWSER_OBJECT_RELOAD:
+ case BROWSER_OBJECT_SAVE:
+ case BROWSER_OBJECT_EXPORT_SPRITE:
+ case BROWSER_OBJECT_SAVE_URL_URI:
+ case BROWSER_OBJECT_SAVE_URL_URL:
+ case BROWSER_OBJECT_SAVE_URL_TEXT:
+ case BROWSER_SAVE:
+ case BROWSER_SAVE_COMPLETE:
+ case BROWSER_EXPORT_DRAW:
+ case BROWSER_EXPORT_TEXT:
+ case BROWSER_SAVE_URL_URI:
+ case BROWSER_SAVE_URL_URL:
+ case BROWSER_SAVE_URL_TEXT:
+ case HOTLIST_EXPORT:
+ case HISTORY_EXPORT:
+ case BROWSER_NAVIGATE_HOME:
+ case BROWSER_NAVIGATE_BACK:
+ case BROWSER_NAVIGATE_FORWARD:
+ case BROWSER_NAVIGATE_UP:
+ case BROWSER_NAVIGATE_RELOAD:
+ case BROWSER_NAVIGATE_RELOAD_ALL:
+ case BROWSER_NAVIGATE_STOP:
+ case BROWSER_NAVIGATE_URL:
+ case BROWSER_SCALE_VIEW:
+ case BROWSER_FIND_TEXT:
+ case BROWSER_IMAGES_FOREGROUND:
+ case BROWSER_IMAGES_BACKGROUND:
+ case BROWSER_BUFFER_ANIMS:
+ case BROWSER_BUFFER_ALL:
+ case BROWSER_SAVE_VIEW:
+ case BROWSER_WINDOW_DEFAULT:
+ case BROWSER_WINDOW_STAGGER:
+ case BROWSER_WINDOW_COPY:
+ case BROWSER_WINDOW_RESET:
+ case TREE_NEW_FOLDER:
+ case TREE_NEW_LINK:
+ case TREE_EXPAND_ALL:
+ case TREE_EXPAND_FOLDERS:
+ case TREE_EXPAND_LINKS:
+ case TREE_COLLAPSE_ALL:
+ case TREE_COLLAPSE_FOLDERS:
+ case TREE_COLLAPSE_LINKS:
+ case TREE_SELECTION:
+ case TREE_SELECTION_EDIT:
+ case TREE_SELECTION_LAUNCH:
+ case TREE_SELECTION_DELETE:
+ case TREE_SELECT_ALL:
+ case TREE_CLEAR_SELECTION:
+ case TOOLBAR_BUTTONS:
+ case TOOLBAR_ADDRESS_BAR:
+ case TOOLBAR_THROBBER:
+ case TOOLBAR_EDIT:
+ case CHOICES_SHOW:
+ case APPLICATION_QUIT:
Window()->DetachCurrentMessage();
nsbeos_pipe_message_top(message, NULL, fGuiWindow->scaffold);
break;
15 years, 2 months
r5466 mmu_man - in /trunk/netsurf/beos: beos_bitmap.cpp beos_plotters.cpp beos_window.cpp
by netsurf@semichrome.net
Author: mmu_man
Date: Wed Oct 1 16:04:32 2008
New Revision: 5466
URL: http://source.netsurf-browser.org?rev=5466&view=rev
Log:
- iMissing knockout option to false
- Use Begin/EndViewTransaction() though it doesn't seem to help much reduce flicker
- some fiddling with bitmaps
Modified:
trunk/netsurf/beos/beos_bitmap.cpp
trunk/netsurf/beos/beos_plotters.cpp
trunk/netsurf/beos/beos_window.cpp
Modified: trunk/netsurf/beos/beos_bitmap.cpp
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/beos_bitmap.cpp?rev=...
==============================================================================
--- trunk/netsurf/beos/beos_bitmap.cpp (original)
+++ trunk/netsurf/beos/beos_bitmap.cpp Wed Oct 1 16:04:32 2008
@@ -133,6 +133,7 @@
bmp->pretile_x = bmp->pretile_y = bmp->pretile_xy = NULL;
bmp->opaque = false;
+ bmp->opaque = (state & BITMAP_OPAQUE) != 0; // XXX store state instead
#if 0 /* GTK */
bmp->primary = gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8,
@@ -174,7 +175,8 @@
struct bitmap *bitmap = (struct bitmap *)vbitmap;
assert(bitmap);
/* todo: test if bitmap as opaque */
- return false;//bitmap->opaque;
+ //return bitmap->opaque;
+ return true;
}
@@ -188,7 +190,7 @@
struct bitmap *bitmap = (struct bitmap *)vbitmap;
assert(bitmap);
/* todo: get whether bitmap is opaque */
- return false;//bitmap->opaque;
+ return bitmap->opaque;
}
Modified: trunk/netsurf/beos/beos_plotters.cpp
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/beos_plotters.cpp?re...
==============================================================================
--- trunk/netsurf/beos/beos_plotters.cpp (original)
+++ trunk/netsurf/beos/beos_plotters.cpp Wed Oct 1 16:04:32 2008
@@ -106,7 +106,8 @@
NULL,
NULL,
NULL,
- nsbeos_plot_path
+ nsbeos_plot_path,
+ false // option_knockout
};
Modified: trunk/netsurf/beos/beos_window.cpp
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/beos_window.cpp?rev=...
==============================================================================
--- trunk/netsurf/beos/beos_window.cpp (original)
+++ trunk/netsurf/beos/beos_window.cpp Wed Oct 1 16:04:32 2008
@@ -292,8 +292,20 @@
BRect frame(0,0,-1,-1); // will be resized later
g->view = new NSBrowserFrameView(frame, g);
/* set the default background colour of the drawing area to white. */
+ //g->view->SetViewColor(B_TRANSPARENT_COLOR);
g->view->SetViewColor(kWhiteColor);
- g->view->SetHighColor(kWhiteColor);
+ g->view->SetLowColor(kWhiteColor);
+
+#ifdef B_BEOS_VERSION_DANO
+ /* enable double-buffering on the content view */
+/*
+ XXX: doesn't really work
+ g->view->SetDoubleBuffering(B_UPDATE_INVALIDATED
+ | B_UPDATE_SCROLLED
+ //| B_UPDATE_RESIZED
+ | B_UPDATE_EXPOSED);
+*/
+#endif
if (bw->parent != NULL ) {
g->toplevel = false;
@@ -670,6 +682,9 @@
return;
nsbeos_current_gc_set(view);
+ if (view->Window())
+ view->Window()->BeginViewTransaction();
+
plot = nsbeos_plotters;
nsbeos_plot_set_scale(g->bw->scale);
content_redraw(c, 0, 0,
@@ -683,6 +698,9 @@
if (g->careth != 0)
nsbeos_plot_caret(g->caretx, g->carety, g->careth);
+
+ if (view->Window())
+ view->Window()->EndViewTransaction();
// reset clipping just in case
view->ConstrainClippingRegion(NULL);
15 years, 2 months
r5465 mmu_man - /trunk/netsurf/beos/beos_thumbnail.cpp
by netsurf@semichrome.net
Author: mmu_man
Date: Wed Oct 1 15:44:39 2008
New Revision: 5465
URL: http://source.netsurf-browser.org?rev=5465&view=rev
Log:
Implemented thumbnails, though we don't use them yet.
Modified:
trunk/netsurf/beos/beos_thumbnail.cpp
Modified: trunk/netsurf/beos/beos_thumbnail.cpp
URL: http://source.netsurf-browser.org/trunk/netsurf/beos/beos_thumbnail.cpp?r...
==============================================================================
--- trunk/netsurf/beos/beos_thumbnail.cpp (original)
+++ trunk/netsurf/beos/beos_thumbnail.cpp Wed Oct 1 15:44:39 2008
@@ -42,6 +42,10 @@
#include "beos/beos_plotters.h"
#include "beos/beos_bitmap.h"
+// Zeta PRIVATE: in libzeta for now.
+extern status_t ScaleBitmap(const BBitmap& inBitmap, BBitmap& outBitmap);
+
+
/**
* Create a thumbnail of a page.
*
@@ -52,69 +56,98 @@
bool thumbnail_create(struct content *content, struct bitmap *bitmap,
const char *url)
{
-#warning WRITEME
-#if 0 /* GTK */
- GdkPixbuf *pixbuf;
- gint width;
- gint height;
- gint depth;
- GdkPixmap *pixmap;
- GdkPixbuf *big;
+ BBitmap *thumbnail;
+ BBitmap *small;
+ BBitmap *big;
+ BView *oldView;
+ BView *view;
+ BView *thumbView;
+ float width;
+ float height;
+ int depth;
assert(content);
assert(bitmap);
- pixbuf = beos_bitmap_get_primary(bitmap);
- width = gdk_pixbuf_get_width(pixbuf);
- height = gdk_pixbuf_get_height(pixbuf);
- depth = (gdk_screen_get_system_visual(gdk_screen_get_default()))->depth;
+ thumbnail = nsbeos_bitmap_get_primary(bitmap);
+ width = thumbnail->Bounds().Width();
+ height = thumbnail->Bounds().Height();
+ depth = 32;
+ //depth = (gdk_screen_get_system_visual(gdk_screen_get_default()))->depth;
- LOG(("Trying to create a thumbnail pixmap for a content of %dx%d@%d",
+ LOG(("Trying to create a thumbnail bitmap %dx%d for a content of %dx%d@%d",
+ width, height,
content->width, content->width, depth));
- pixmap = gdk_pixmap_new(NULL, content->width, content->width, depth);
-
- if (pixmap == NULL) {
- /* the creation failed for some reason: most likely because
- * we've been asked to create with with at least one dimention
- * as zero. The RISC OS thumbnail generator returns false
- * from here when it can't create a bitmap, so we assume it's
- * safe to do so here too.
- */
+ BRect contentRect(0, 0, content->width - 1, content->width - 1);
+ big = new BBitmap(contentRect,
+ B_BITMAP_ACCEPTS_VIEWS, B_RGB32);
+
+ if (big->InitCheck() < B_OK) {
+ delete big;
return false;
}
- gdk_drawable_set_colormap(pixmap, gdk_colormap_get_system());
+ small = new BBitmap(thumbnail->Bounds(),
+ B_BITMAP_ACCEPTS_VIEWS, B_RGB32);
- /* set the plotting functions up */
+ if (small->InitCheck() < B_OK) {
+ delete small;
+ delete big;
+ return false;
+ }
+
+ //XXX: _lock ?
+ // backup the current gc
+ oldView = nsbeos_current_gc();
+
+ view = new BView(contentRect, "thumbnailer",
+ B_FOLLOW_NONE, B_WILL_DRAW);
+ big->AddChild(view);
+
+ thumbView = new BView(small->Bounds(), "thumbnail",
+ B_FOLLOW_NONE, B_WILL_DRAW);
+ small->AddChild(thumbView);
+
+ view->LockLooper();
+
+ /* impose our view on the content... */
+ nsbeos_current_gc_set(view);
+
plot = nsbeos_plotters;
-
nsbeos_plot_set_scale(1.0);
- /* set to plot to pixmap */
- current_drawable = pixmap;
- current_gc = gdk_gc_new(current_drawable);
-#ifdef CAIRO_VERSION
- current_cr = gdk_cairo_create(current_drawable);
-#endif
plot.fill(0, 0, content->width, content->width, 0xffffffff);
/* render the content */
content_redraw(content, 0, 0, content->width, content->width,
0, 0, content->width, content->width, 1.0, 0xFFFFFF);
+
+ view->Sync();
+ view->UnlockLooper();
- /* resample the large plot down to the size of our thumbnail */
- big = gdk_pixbuf_get_from_drawable(NULL, pixmap, NULL, 0, 0, 0, 0,
- content->width, content->width);
+ // restore the current gc
+ nsbeos_current_gc_set(oldView);
- gdk_pixbuf_scale(big, pixbuf, 0, 0, width, height, 0, 0,
- (double)width / (double)content->width,
- (double)height / (double)content->width,
- GDK_INTERP_TILES);
- /* As a debugging aid, try this to dump out a copy of the thumbnail as
- * a PNG: gdk_pixbuf_save(pixbuf, "thumbnail.png", "png", NULL, NULL);
- */
+ // now scale it down
+//XXX: use Zeta's bilinear scaler ?
+//#ifdef B_ZETA_VERSION
+// err = ScaleBitmap(*shot, *scaledBmp);
+//#else
+ thumbView->LockLooper();
+ thumbView->DrawBitmap(big, big->Bounds(), small->Bounds());
+ thumbView->Sync();
+ thumbView->UnlockLooper();
+
+ small->LockBits();
+ thumbnail->LockBits();
+
+ // copy it to the bitmap
+ memcpy(thumbnail->Bits(), small->Bits(), thumbnail->BitsLength());
+
+ thumbnail->UnlockBits();
+ small->UnlockBits();
/* register the thumbnail with the URL */
if (url)
@@ -122,14 +155,13 @@
bitmap_modified(bitmap);
- g_object_unref(current_gc);
-#ifdef CAIRO_VERSION
- cairo_destroy(current_cr);
-#endif
- g_object_unref(pixmap);
- g_object_unref(big);
+ // cleanup
+ small->RemoveChild(thumbView);
+ delete thumbView;
+ delete small;
+ big->RemoveChild(view);
+ delete view;
+ delete big;
return true;
-#endif
- return false;
}
15 years, 2 months