BrowserView.js
[app.wkmirror] / TabbedBrowser.js
1 Gtk = imports.gi.Gtk;
2 WebKit = imports.gi.WebKit;
3
4 BrowserSettings = imports.BrowserSettings;
5 BrowserView = imports.BrowserView;
6 BrowserTab = imports.BrowserTab;
7
8 TabbedBrowser = new GType({
9     parent: Gtk.Notebook.type,
10     name: "TabbedBrowser",
11     init: function ()
12     {
13         // Public
14         this.close_tab = function (tab)
15         {
16             browser.remove_page(browser.page_num(tab));
17             tab.destroy();
18
19             if(!browser.get_n_pages())
20             {
21                 browser.new_tab(BrowserSettings.home_page);
22             }
23         };
24
25         this.new_tab = function (url, new_web_view)
26         {
27             var new_tab = new BrowserTab.BrowserTab({web_view: new_web_view});
28
29             if(!new_web_view)
30                 new_tab.get_web_view().browse(url);
31
32             var tab_label = new Gtk.Label({label:"Untitled"});
33             var tab_button = new Gtk.Button({relief: Gtk.ReliefStyle.NONE});
34             tab_button.set_image(new Gtk.Image({stock: "gtk-close",
35                                                 icon_size: Gtk.IconSize.MENU}));
36             tab_button.signal.clicked.connect(this.close_tab, this);
37
38             var tab_title = new Gtk.HBox();
39             tab_title.pack_start(tab_label);
40             tab_title.pack_start(tab_button);
41             tab_title.show_all();
42
43             new_tab.set_tab_label(tab_label);
44
45             this.append_page(new_tab, tab_title);
46             this.set_tab_reorderable(new_tab, true);
47
48             if(BrowserSettings.select_new_tabs)
49                 this.page = this.page_num(new_tab);
50         };
51
52         this.current_tab = function ()
53         {
54             return this.get_nth_page(this.page);
55         };
56
57         // Implementation
58         this.new_tab(BrowserSettings.home_page);
59     }
60 });