seed r434 - trunk/examples/browser
- From: hortont svn gnome org
- To: svn-commits-list gnome org
- Subject: seed r434 - trunk/examples/browser
- Date: Fri, 12 Dec 2008 05:02:52 +0000 (UTC)
Author: hortont
Date: Fri Dec 12 05:02:52 2008
New Revision: 434
URL: http://svn.gnome.org/viewvc/seed?rev=434&view=rev
Log:
Sync browser with bzr.
Added:
trunk/examples/browser/browser-bookmarks.js
trunk/examples/browser/browser-find.js
trunk/examples/browser/browser-menu.js
Modified:
trunk/examples/browser/Makefile.am
trunk/examples/browser/browser-actions.js
trunk/examples/browser/browser-main.js
trunk/examples/browser/browser-tab.js
trunk/examples/browser/browser-toolbar.js
trunk/examples/browser/main.js
Modified: trunk/examples/browser/Makefile.am
==============================================================================
--- trunk/examples/browser/Makefile.am (original)
+++ trunk/examples/browser/Makefile.am Fri Dec 12 05:02:52 2008
@@ -4,13 +4,18 @@
browser-actions.js \
browser-main.js \
browser-tab.js \
- browser-toolbar.js
+ browser-toolbar.js \
+ browser-menu.js \
+ browser-bookmarks.js \
+ browser-find.js
EXTRA_DIST = \
main.js \
browser-actions.js \
browser-main.js \
browser-tab.js \
browser-toolbar.js
-
+ browser-menu.js \
+ browser-bookmarks.js \
+ browser-find.js
## File created by the gnome-build tools
Modified: trunk/examples/browser/browser-actions.js
==============================================================================
--- trunk/examples/browser/browser-actions.js (original)
+++ trunk/examples/browser/browser-actions.js Fri Dec 12 05:02:52 2008
@@ -21,9 +21,11 @@
return false;
}
-function close_tab()
+function close_tab(button, tab)
{
- browser.remove_page(browser.page_num(current_tab()));
+ browser.remove_page(browser.page_num(tab));
+ //for some reason this complains tab is not an object
+ //tab.destroy();
if(!browser.get_n_pages())
{
@@ -45,43 +47,255 @@
return false;
}
+function show_find()
+{
+ findBox.show();
+ findBox.entryBox.grab_focus();
+
+ return false;
+}
+
+function find(entry, event, box)
+{
+ //current_tab().webView.unmark_text_matches();
+ current_tab().webView.search_text("", box.caseSensitive.active,
+ true, true);
+ current_tab().webView.search_text(entry.text, box.caseSensitive.active,
+ true, true);
+
+ return false;
+}
+
+function show_about()
+{
+ // reuse window, formatting, centering, etc
+ about_window = new Gtk.Window();
+ var title_label = new Gtk.Label({label:"<span size='x-large'>" +
+ "<b>Seed Browser 0.2</b></span>",
+ use_markup: true});
+ var under_label = new Gtk.Label({label:"A simple WebKit-based browser, " +
+ "in Seed."});
+ var by_label = new Gtk.Label({label:"(C) 2008, seed maintainers"});
+
+ var close_button = Gtk.Button.new_from_stock(Gtk.STOCK_CLOSE);
+ // TODO: actually destroy the window!
+ close_button.signal.clicked.connect(function(){about_window.hide()});
+
+ var vbox = new Gtk.VBox();
+ vbox.pack_start(title_label, true, true, 5);
+ vbox.pack_start(under_label, true, true, 5);
+ vbox.pack_start(by_label, true, true, 5);
+ vbox.pack_start(close_button, false, false, 5);
+
+ about_window.add(vbox);
+ // instead of this, use packing once I find out how to do margins!
+ about_window.resize(300, 200);
+ about_window.show_all();
+ return false;
+}
+
+function get_up_url()
+{
+ var curr_url = current_tab().webView.get_main_frame().get_uri();
+ var last = curr_url.lastIndexOf("/");
+
+ if ( curr_url.length-1 == last )
+ return curr_url.substring(0,curr_url.lastIndexOf("/"));
+ else
+ return curr_url.substring(0,last);
+}
+
+function create_action(nam, label, stock_id, accelerator, func)
+{
+ var new_action;
+
+ if(label != null)
+ new_action = new Gtk.Action({name:nam, label:label,
+ stock_id:stock_id});
+ else
+ new_action = new Gtk.Action({name:nam,
+ stock_id:stock_id});
+
+ new_action.set_accel_group(accels);
+
+ actions.add_action_with_accel(new_action, accelerator);
+
+ new_action.connect_accelerator();
+ new_action.signal.activate.connect(func);
+
+ return new_action;
+}
+
function initialize_actions()
{
actions = new Gtk.ActionGroup({name:"toolbar"});
accels = new Gtk.AccelGroup();
+
+ new_tab_action =
+ create_action("new", "New Tab", "gtk-new", "<Control>t",
+ function ()
+ {
+ browser.newTab().setWebView(new WebKit.WebView());
+ browser.page = browser.get_n_pages() - 1;
+ });
+
+ close_tab_action =
+ create_action("close",
+ "Close Tab",
+ "gtk-close",
+ "<Control>w",
+ close_tab);
- var new_tab_action = new Gtk.Action({name:"new", label:"New Tab",
- tooltip:"New Tab", stock_id:"gtk-new"});
- new_tab_action.set_accel_group(accels);
- actions.add_action_with_accel(new_tab_action, "<Control>t");
- new_tab_action.connect_accelerator();
- new_tab_action.signal.activate.connect(
- function ()
- {
- browser.newTab().navigateTo(homePage);
- browser.page = browser.get_n_pages() - 1;
- }
- );
+ go_back_action =
+ create_action("go-back",
+ "Go Back",
+ "gtk-go-back",
+ "<Alt>Left",
+ go_back);
- var close_tab_action = new Gtk.Action({name:"close", label:"Close",
- tooltip:"Close Tab", stock_id:"gtk-close"});
- close_tab_action.set_accel_group(accels);
- actions.add_action_with_accel(close_tab_action, "<Control>w");
- close_tab_action.connect_accelerator();
- close_tab_action.signal.activate.connect(close_tab);
-
- var focus_urlbar_action = new Gtk.Action({name:"url", label:"Focus URL Bar",
- tooltip:"Focus URL Bar"});
- focus_urlbar_action.set_accel_group(accels);
- actions.add_action_with_accel(focus_urlbar_action, "<Control>l");
- focus_urlbar_action.connect_accelerator();
- focus_urlbar_action.signal.activate.connect(
+ go_forward_action =
+ create_action("go-forward",
+ "Go Forward",
+ "gtk-go-forward",
+ "<Alt>Right",
+ go_forward);
+
+ focus_urlbar_action =
+ create_action("url",
+ "Focus URL Bar",
+ "",
+ "<Control>l",
+ function ()
+ {
+ current_tab().toolbar.urlBar.grab_focus();
+ });
+ refresh_action =
+ create_action("refresh",
+ "Refresh",
+ "gtk-reload",
+ "F5",
+ refresh_page);
+
+ quit_action =
+ create_action("quit",
+ null,
+ "gtk-quit",
+ null,
+ shutdown);
+
+ cut_action =
+ create_action("cut",
+ null,
+ "gtk-cut",
+ null,
+ function ()
+ {
+ current_tab().webView.cut_clipboard();
+ });
+
+ copy_action =
+ create_action("copy",
+ null,
+ "gtk-copy",
+ null,
+ function ()
+ {
+ current_tab().webView.copy_clipboard();
+ });
+
+ paste_action =
+ create_action("paste",
+ null,
+ "gtk-paste",
+ null,
+ function ()
+ {
+ current_tab().webView.paste_clipboard();
+ });
+
+ print_action =
+ create_action("print",
+ null,
+ "gtk-print",
+ "<Control>p",
+ function ()
+ {
+ current_tab().webView.execute_script("print()");
+ });
+
+ zoom_in_action =
+ create_action("zoom-in",
+ null,
+ "gtk-zoom-in",
+ "<Control>plus", // TODO: needs to work for Ctrl-= also!!
+ function ()
+ {
+ var new_zoom_level = current_tab().webView.zoom_level + 0.1;
+ // FIXME: for some reason segfaults if try to zoom beyond here
+ if (new_zoom_level < 5.65)
+ current_tab().webView.zoom_level = new_zoom_level;
+ return false;
+ });
+
+ zoom_out_action =
+ create_action("zoom-out",
+ null,
+ "gtk-zoom-out",
+ "<Control>minus",
+ function ()
+ {
+ var new_zoom_level = current_tab().webView.zoom_level - 0.1;
+ if ( new_zoom_level > 0 )
+ current_tab().webView.zoom_level = new_zoom_level;
+ return false;
+ });
+
+ zoom_zero_action =
+ create_action("zoom-zero",
+ null,
+ "gtk-zoom-100",
+ "<Control>0",
+ function ()
+ {
+ current_tab().webView.zoom_level = 1;
+
+ return false;
+ });
+
+ about_action =
+ create_action("about",
+ null,
+ "gtk-about",
+ null,
+ show_about);
+
+ find_action =
+ create_action("find",
+ null,
+ "gtk-find",
+ null,
+ show_find);
+
+ add_bookmark_action =
+ create_action("addbookmark",
+ "Add Bookmark",
+ "gtk-add",
+ "<Ctrl>B",
+ add_bookmark);
+
+ // Someone needs to figure out how to use Tab in a key accel.
+ /*cycle_tabs_action = new Gtk.Action({name:"cycletabs", label:"Cycle Through Tabs",
+ tooltip:"Cycle Through Tabs"});
+ cycle_tabs_action.set_accel_group(accels);
+ cycle_tabs_action.connect_accelerator();
+ actions.add_action_with_accel(cycle_tabs_action, "<Control><Tab>");
+ cycle_tabs_action.signal.activate.connect(
function ()
{
- current_tab().toolbar.urlBar.grab_focus();
+
}
- );
+ );*/
return accels;
}
Added: trunk/examples/browser/browser-bookmarks.js
==============================================================================
--- (empty file)
+++ trunk/examples/browser/browser-bookmarks.js Fri Dec 12 05:02:52 2008
@@ -0,0 +1,56 @@
+bookmarks_db = new sqlite.Database("/tmp/seed_browser_bookmarks.db");
+
+// Where do we PUT the DB? also, tildes don't expand... that's too bad
+// Is there a better way to tell if the DB was already created??
+
+try
+{
+ bookmarks_db.exec("create table bookmarks (key INTEGER PRIMARY KEY, url TEXT, name TEXT);");
+ Seed.print("new bookmarks db");
+}
+catch(e)
+{
+ Seed.print("loaded bookmarks db");
+}
+
+function populate_bookmarks_menu()
+{
+ bookmarks_db.exec("select * from bookmarks",
+ function(results)
+ {
+ var new_bookmark_item = Gtk.MenuItem.new_with_label(results["name"]);
+ new_bookmark_item.tooltip_text = results["url"];
+ new_bookmark_item.signal.activate.connect(select_bookmark, null, results);
+ menu.bookmarksMenu.append(new_bookmark_item);
+ });
+
+}
+
+function add_bookmark()
+{
+ // This right here is the second largest security vulnerability I've ever knowingly written.
+ // TODO: ROBB, we need a substitution api...
+ // Also it's just stupid, because it'll break on quotes, etc. And we all know sanitizing your SQL yourself is retarded.
+
+ var b_url = current_tab().webView.get_main_frame().get_uri();
+ //var b_name = current_tab().webView.get_main_frame().get_title();
+ var b_name = current_tab().titleLabel.label;
+ //var b_name = b_url; // ^ something about in arguments makes this not work FIXIT. the gir says no args.
+ bookmarks_db.exec("insert into bookmarks (url, name) values ('" + b_url + "','" + b_name + "');");
+ bookmarks_db.exec("select * from bookmarks where url='" + b_url + "' AND name='" + b_name + "';",
+ function(results){g_results=results}); // TODO: there's a better way to do this.
+ // RACERACERACE
+ // probably need to save IDs-to-menuitems so we can destroy them if we want, etc...
+ // todo: how do we get the ID out when we insert??
+ var new_bookmark_item = Gtk.MenuItem.new_with_label(b_name);
+ new_bookmark_item.tooltip_text = b_url;
+ new_bookmark_item.signal.activate.connect(select_bookmark, null, g_results);
+ new_bookmark_item.show_all();
+
+ menu.bookmarksMenu.append(new_bookmark_item);
+}
+
+function select_bookmark(menuItem, results)
+{
+ current_tab().navigateTo(results["url"]);
+}
Added: trunk/examples/browser/browser-find.js
==============================================================================
--- (empty file)
+++ trunk/examples/browser/browser-find.js Fri Dec 12 05:02:52 2008
@@ -0,0 +1,39 @@
+// TODO: escape in the text field should hide it, not search more!
+
+FindBoxType = {
+ parent: Gtk.HBox.type,
+ name: "FindBox",
+ instance_init: function(klass)
+ {
+ var closeButton = new Gtk.Button();
+ closeButton.set_image(new Gtk.Image({stock: "gtk-close",
+ icon_size: Gtk.IconSize.menu}));
+ closeButton.signal.clicked.connect(
+ function ()
+ {
+ this.entryBox.text = "";
+ this.hide();
+ }, this);
+ closeButton.set_relief(Gtk.ReliefStyle.none);
+
+ var findLabel = new Gtk.Label({label:"Find: "});
+ this.entryBox = new Gtk.Entry();
+ this.entryBox.signal.key_release_event.connect(find, null, this);
+
+ this.caseSensitive = new Gtk.CheckButton({label:"Match case"});
+ this.caseSensitive.signal.toggled.connect(
+ function (a,b)
+ {
+ // BROKEN.
+ current_tab().webView.unmark_text_matches();
+ find(this, 0, b);
+ return false;
+ }, this.entryBox, this);
+
+ this.pack_start(closeButton);
+ this.pack_start(findLabel);
+ this.pack_start(this.entryBox, true, true);
+ this.pack_start(this.caseSensitive, false, false, 10);
+ }};
+
+FindBox = new GType(FindBoxType);
Modified: trunk/examples/browser/browser-main.js
==============================================================================
--- trunk/examples/browser/browser-main.js (original)
+++ trunk/examples/browser/browser-main.js Fri Dec 12 05:02:52 2008
@@ -18,7 +18,7 @@
},
instance_init: function(klass)
{
-
+ this.scrollable = true;
}};
TabbedBrowser = new GType(TabbedBrowserType);
Added: trunk/examples/browser/browser-menu.js
==============================================================================
--- (empty file)
+++ trunk/examples/browser/browser-menu.js Fri Dec 12 05:02:52 2008
@@ -0,0 +1,130 @@
+FileMenuType = {
+ parent: Gtk.Menu.type,
+ name: "FileMenu",
+ instance_init: function(klass)
+ {
+ this.newTabItem = new_tab_action.create_menu_item();
+ //this.openItem = new Gtk.MenuItem({"child": new Gtk.Label({"label": "Open..."})});
+ //this.saveAsItem = new Gtk.MenuItem({"child": new Gtk.Label({"label": "Save As..."})});
+ this.closeItem = close_tab_action.create_menu_item();
+ this.quitItem = quit_action.create_menu_item();
+ this.printItem = print_action.create_menu_item();
+
+ this.append(this.newTabItem);
+ //this.append(this.openItem);
+ //this.append(this.saveAsItem);
+ this.append(this.closeItem);
+ this.append(new Gtk.SeparatorMenuItem());
+ this.append(this.printItem);
+ this.append(new Gtk.SeparatorMenuItem());
+ this.append(this.quitItem);
+ }};
+
+FileMenu = new GType(FileMenuType);
+
+EditMenuType = {
+ parent: Gtk.Menu.type,
+ name: "EditMenu",
+ class_init: function(klass, prototype)
+ {
+ },
+ instance_init: function(klass)
+ {
+ this.cutItem = cut_action.create_menu_item();
+ this.copyItem = copy_action.create_menu_item();
+ this.pasteItem = paste_action.create_menu_item();
+ this.findItem = find_action.create_menu_item();
+
+ this.append(this.cutItem);
+ this.append(this.copyItem);
+ this.append(this.pasteItem);
+ this.append(new Gtk.SeparatorMenuItem());
+ this.append(this.findItem);
+ }};
+
+EditMenu = new GType(EditMenuType);
+
+BookmarksMenuType = {
+ parent: Gtk.Menu.type,
+ name: "BookmarksMenu",
+ class_init: function(klass, prototype)
+ {
+ },
+ instance_init: function(klass)
+ {
+ this.addBookmarkItem = add_bookmark_action.create_menu_item();
+ this.append(this.addBookmarkItem);
+ this.append(new Gtk.SeparatorMenuItem());
+ }};
+
+BookmarksMenu = new GType(BookmarksMenuType);
+
+HelpMenuType = {
+ parent: Gtk.Menu.type,
+ name: "HelpMenu",
+ class_init: function(klass, prototype)
+ {
+ },
+ instance_init: function(klass)
+ {
+ this.aboutTabItem = about_action.create_menu_item();
+ this.append(this.aboutTabItem);
+ }};
+
+HelpMenu = new GType(HelpMenuType);
+
+
+ViewMenuType = {
+ parent: Gtk.Menu.type,
+ name: "ViewMenu",
+ instance_init: function(klass)
+ {
+ this.zoomInTabItem = zoom_in_action.create_menu_item();
+ this.append(this.zoomInTabItem);
+
+ this.zoomOutTabItem = zoom_out_action.create_menu_item();
+ this.append(this.zoomOutTabItem);
+
+ this.zoomZeroTabItem = zoom_zero_action.create_menu_item();
+ this.append(this.zoomZeroTabItem);
+ }};
+
+ViewMenu = new GType(ViewMenuType);
+
+
+BrowserMenuType = {
+ parent: Gtk.MenuBar.type,
+ name: "BrowserMenu",
+ class_init: function(klass, prototype)
+ {
+ },
+ instance_init: function(klass)
+ {
+ // Toplevel menus
+ this.fileMenu = new FileMenu();
+ this.editMenu = new EditMenu();
+ this.bookmarksMenu = new BookmarksMenu();
+ this.helpMenu = new HelpMenu();
+ this.viewMenu = new ViewMenu();
+
+ this.fileItem = new Gtk.MenuItem({"child": new Gtk.Label({"label": "File"})});
+ this.editItem = new Gtk.MenuItem({"child": new Gtk.Label({"label": "Edit"})});
+ this.viewItem = new Gtk.MenuItem({"child": new Gtk.Label({"label": "View"})});
+ this.bookmarksItem = new Gtk.MenuItem({"child": new Gtk.Label({"label": "Bookmarks"})});
+ this.helpItem = new Gtk.MenuItem({"child": new Gtk.Label({"label": "Help"})});
+
+ this.fileItem.submenu = this.fileMenu;
+ this.editItem.submenu = this.editMenu;
+ this.viewItem.submenu = this.viewMenu;
+ this.bookmarksItem.submenu = this.bookmarksMenu;
+ this.helpItem.submenu = this.helpMenu;
+
+ this.append(this.fileItem);
+ this.append(this.editItem);
+ this.append(this.viewItem);
+ this.append(this.bookmarksItem);
+ this.append(this.helpItem);
+ }};
+
+BrowserMenu = new GType(BrowserMenuType);
+
Modified: trunk/examples/browser/browser-tab.js
==============================================================================
--- trunk/examples/browser/browser-tab.js (original)
+++ trunk/examples/browser/browser-tab.js Fri Dec 12 05:02:52 2008
@@ -9,6 +9,8 @@
function url_changed(webView, webFrame, tab)
{
+ tab.toolbar.back.sensitive = webView.can_go_back();
+ tab.toolbar.forward.sensitive = webView.can_go_forward();
tab.toolbar.urlBar.text = webFrame.get_uri();
return false;
}
@@ -53,7 +55,40 @@
this.webView.signal.create_web_view.connect(new_tab_requested, null, this);
this.webView.signal.web_view_ready.connect(new_tab_ready, null, this);
+ this.webView.full_content_zoom = true;
+
+ this.webView.signal.load_started.connect(
+ function()
+ {
+ // At least on the Eee, the progress bar is bigger than the
+ // default status bar, so the status bar size changes when we hide/show
+ progressBar.show();
+ progressBar.fraction = 0;
+ // Questionable UI decision.
+ progressBar.pulse();
+ });
+ this.webView.signal.load_progress_changed.connect(
+ function(view, progress)
+ {
+ progressBar.fraction = progress/100;
+ });
+ this.webView.signal.load_finished.connect(
+ function()
+ {
+ progressBar.hide();
+ });
+
+ this.webView.signal.hovering_over_link.connect(
+ function(view, link, uri)
+ {
+ status.pop(hoverContextId);
+ status.push(hoverContextId, uri);
+ });
+
this.toolbar.urlBar.signal.activate.connect(browse, null, this);
+ this.toolbar.back.sensitive = this.webView.can_go_back();
+ this.toolbar.forward.sensitive = this.webView.can_go_forward();
+
webView.set_settings(webKitSettings);
var inspector = webView.get_inspector();
@@ -97,7 +132,7 @@
var closeButton = new Gtk.Button();
closeButton.set_image(new Gtk.Image({stock: "gtk-close",
icon_size: Gtk.IconSize.menu}));
- closeButton.signal.clicked.connect(close_tab, this);
+ closeButton.signal.clicked.connect(close_tab, null, this);
closeButton.set_relief(Gtk.ReliefStyle.none);
this.progress = new Gtk.ProgressBar({fraction: 0.5});
@@ -108,7 +143,13 @@
this.title.pack_start(closeButton);
this.title.show_all();
+/* forker_pipe.write("fork");
+ this.pid = parseInt(forker_pipe.read());
+ Seed.print("new pid: " + this.pid);*/
+
+
this.show_all();
+ this.toolbar.urlBar.grab_focus();
}};
BrowserTab = new GType(BrowserTabType);
Modified: trunk/examples/browser/browser-toolbar.js
==============================================================================
--- trunk/examples/browser/browser-toolbar.js (original)
+++ trunk/examples/browser/browser-toolbar.js Fri Dec 12 05:02:52 2008
@@ -1,25 +1,25 @@
BrowserToolbarType = {
parent: Gtk.HBox.type,
name: "BrowserToolbar",
- class_init: function(klass, prototype)
- {
- },
instance_init: function(klass)
{
this.urlBar = new Gtk.Entry();
+ this.searchBar = new Gtk.Entry();
- var back = new Gtk.ToolButton({stock_id:"gtk-go-back"});
- var forward = new Gtk.ToolButton({stock_id:"gtk-go-forward"});
- var refresh = new Gtk.ToolButton({stock_id:"gtk-refresh"});
+ this.back = new Gtk.ToolButton({stock_id:"gtk-go-back"});
+ this.forward = new Gtk.ToolButton({stock_id:"gtk-go-forward"});
+ this.refresh = new Gtk.ToolButton({stock_id:"gtk-refresh"});
- back.signal.clicked.connect(go_back);
- forward.signal.clicked.connect(go_forward);
- refresh.signal.clicked.connect(refresh_page);
+ this.back.signal.clicked.connect(go_back);
+ this.forward.signal.clicked.connect(go_forward);
+ this.refresh.signal.clicked.connect(refresh_page);
+
+ this.pack_start(this.back);
+ this.pack_start(this.forward);
+ this.pack_start(this.refresh);
- this.pack_start(back);
- this.pack_start(forward);
- this.pack_start(refresh);
this.pack_start(this.urlBar, true, true);
+ this.pack_start(this.searchBar, false, false, 5);
}};
BrowserToolbar = new GType(BrowserToolbarType);
Modified: trunk/examples/browser/main.js
==============================================================================
--- trunk/examples/browser/main.js (original)
+++ trunk/examples/browser/main.js Fri Dec 12 05:02:52 2008
@@ -1,34 +1,54 @@
#!/usr/bin/env seed
+
Seed.import_namespace("Gtk");
Seed.import_namespace("WebKit");
Seed.import_namespace("Multiprocessing");
+Seed.import_namespace("sqlite");
-var forker_pipes = new Multiprocessing.Pipe();
+/*var forker_pipes = new Multiprocessing.Pipe();
var forker_pid = Seed.fork();
if (forker_pid == 0)
{
+ var children = new Object;
Seed.print("*** Initializing forker \n");
Seed.print(forker_pipes[0].read());
forker_pipes[0].write("And the other direction!");
+
+ forker_pipes[0].add_watch(1,
+ function(source, condition)
+ {
+ var message = source.read();
+ Seed.print("*** forker communication from main: " + message);
+ if (message == "fork\n")
+ {
+ var child_pipes = new Multiprocessing.Pipe();
+ child_pid = Seed.fork();
+ if (child_pid == 0)
+ {
+ }
+ else
+ {
+ source.write(child_pid);
+ }
+ }
+ return true;
+ });
+
Gtk.main();
}
-
+*/
/* Todo (priority order):
* Ctrl-click-open-in-new-tab?
- * Progress
- * Bookmarks
- * FIND IN PAGE
+ * Bookmark editing/deleting/dropdown on creation allowing you to change the name!!
* History
- * Search bar
+ * Search bar
* Zoom
* View source (or is web inspector enough? it's nicer than anything I can do)
* Save / open local files
- * printinglol?
* cookies?? do they not happen magically?
* favicon
* Settings manager
- * Status bar (hover, etc)
*/
// Configuration
@@ -36,34 +56,57 @@
var selectTabOnCreation = false;
var webKitSettings = new WebKit.WebSettings({enable_developer_extras: true});
+Seed.include("browser-bookmarks.js");
Seed.include("browser-actions.js");
Seed.include("browser-toolbar.js");
Seed.include("browser-tab.js");
+Seed.include("browser-menu.js");
Seed.include("browser-main.js");
-
+Seed.include("browser-find.js");
Gtk.init(null, null);
-forker_pipes[1].write("Testing communication from main to forker,"+
+function shutdown()
+{
+ // TODO: make this signaly... or something. wrapper function is silly.
+ bookmarks_db.close();
+ Gtk.main_quit();
+}
+
+/*forker_pipes[1].write("Testing communication from main to forker,"+
" received");
Seed.print(forker_pipes[1].read());
+forker_pipe = forker_pipes[1];*/
var window = new Gtk.Window({title: "Browser"});
-window.signal.hide.connect(Gtk.main_quit);
-window.resize(800,800);
+window.signal.hide.connect(shutdown);
+window.resize(800,500);
window.add_accel_group(initialize_actions());
+var status = new Gtk.Statusbar();
+// Small race condition with progressBar of sorts.
+// ^^ /what/?
+var progressBar = new Gtk.ProgressBar();
+var menu = new BrowserMenu();
+var findBox = new FindBox();
var browserBox = new Gtk.VBox();
+populate_bookmarks_menu();
+
var browser = new TabbedBrowser();
+hoverContextId = status.get_context_id("hover");
browser.newTab().navigateTo(homePage);
-var status = new Gtk.Statusbar();
+status.pack_end(progressBar, false, false, 0);
+
+browserBox.pack_start(menu);
browserBox.pack_start(browser, true, true);
-browserBox.pack_start(status);
+browserBox.pack_start(findBox);
+browserBox.pack_start(status, false, false, 0);
window.add(browserBox);
window.show_all();
+findBox.hide();
Gtk.main();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]