Release versions 1.2.11 and 1.2.11-1
[videolink.git] / browser_widget.hpp
1 // Copyright 2005 Ben Hutchings <ben@decadent.org.uk>.
2 // See the file "COPYING" for licence details.
3
4 #ifndef INC_BROWSER_WIDGET_HPP
5 #define INC_BROWSER_WIDGET_HPP
6
7 #include <glibmm/signalproxy.h>
8 #include <gtkmm/bin.h>
9
10 #include "wchar_t_short.h"
11 #include <gtkmozembed.h>
12 #include <nsCOMPtr.h>
13 #include "wchar_t_default.h"
14
15 class browser_widget;
16 class nsIWebBrowser;
17
18 namespace Glib
19 {
20     browser_widget * wrap(GtkMozEmbed * object, bool take_copy = false);
21 }
22
23 class browser_widget : public Gtk::Bin
24 {
25 public:
26     browser_widget();
27     virtual ~browser_widget();
28     GtkMozEmbed * gobj();
29     const GtkMozEmbed * gobj() const;
30
31     void load_uri(const char * uri);
32     void load_uri(const std::string & uri);
33     void stop_load();
34     void go_back();
35     void go_forward();
36     void reload(gint32 flags = GTK_MOZ_EMBED_FLAG_RELOADNORMAL);
37
38     bool can_go_back() const;
39     bool can_go_forward() const;
40
41     std::string get_link_message() const;
42     std::string get_js_status() const;
43     std::string get_title() const;
44     std::string get_location() const;
45     already_AddRefed<nsIWebBrowser> get_browser();
46
47     Glib::SignalProxy0<void> signal_link_message();
48     Glib::SignalProxy0<void> signal_js_status();
49     Glib::SignalProxy0<void> signal_location();
50     Glib::SignalProxy0<void> signal_title();
51     Glib::SignalProxy2<void, gint /*cur*/, gint /*max*/> signal_progress();
52     Glib::SignalProxy3<void, const char *, gint /*flags*/, guint /*status*/>
53         signal_net_state();
54     Glib::SignalProxy0<void> signal_net_start();
55     Glib::SignalProxy0<void> signal_net_stop();
56     Glib::SignalProxy1<browser_widget *, guint /*chromemask*/> signal_new_window();
57     Glib::SignalProxy1<void, bool /*visibility*/> signal_visibility();
58     Glib::SignalProxy0<void> signal_destroy();
59     Glib::SignalProxy1<bool, const char * /*uri*/> signal_open_uri();
60
61     // This must be instantiated after Gtk initialisation and before
62     // instantiation of browser_widget.
63     struct initialiser
64     {
65         initialiser();
66         ~initialiser();
67     };
68
69 private:
70     browser_widget(GObject * gobject, bool take_copy);
71     static Glib::ObjectBase * wrap_new(GObject * gobject);
72     friend browser_widget * Glib::wrap(GtkMozEmbed * object, bool take_copy);
73 };
74
75 #endif // !INC_BROWSER_WIDGET_HPP