BrowserWindow.vala
[app.webkitpdf] / 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);//"http://www.youtube.com/")
31                 //new_tab.get_web_view().browse(url);
32                         
33
34             var tab_label = new Gtk.Label({label:"Untitled"});
35             var tab_button = new Gtk.Button({relief: Gtk.ReliefStyle.NONE});
36             tab_button.set_image(new Gtk.Image({stock: "gtk-close",
37                                                 icon_size: Gtk.IconSize.MENU}));
38             tab_button.signal.clicked.connect(this.close_tab, this);
39
40             var tab_title = new Gtk.HBox();
41             tab_title.pack_start(tab_label);
42             tab_title.pack_start(tab_button);
43             tab_title.show_all();
44
45             new_tab.set_tab_label(tab_label);
46
47             this.append_page(new_tab, tab_title);
48             this.set_tab_reorderable(new_tab, true);
49
50             if(BrowserSettings.select_new_tabs)
51                 this.page = this.page_num(new_tab);
52         };
53
54         this.current_tab = function ()
55         {
56             return this.get_nth_page(this.page);
57         };
58
59         // Implementation
60         this.new_tab(BrowserSettings.home_page);
61     }
62 });