gtkmozembed 0.90.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +163 -0
- data/README +46 -0
- data/Rakefile +13 -0
- data/ext/gtkmozembed/Makefile +163 -0
- data/ext/gtkmozembed/depend +6 -0
- data/ext/gtkmozembed/extconf.rb +127 -0
- data/ext/gtkmozembed/gtkmozembed-enum-types.c +103 -0
- data/ext/gtkmozembed/gtkmozembed-enum-types.h +26 -0
- data/ext/gtkmozembed/gtkmozembed-enum-types.o +0 -0
- data/ext/gtkmozembed/gtkmozembed.so +0 -0
- data/ext/gtkmozembed/rbgtkmozembed-init.cpp +84 -0
- data/ext/gtkmozembed/rbgtkmozembed-init.o +0 -0
- data/ext/gtkmozembed/rbgtkmozembed.c +634 -0
- data/ext/gtkmozembed/rbgtkmozembed.h +39 -0
- data/ext/gtkmozembed/rbgtkmozembed.o +0 -0
- data/ext/gtkmozembed/rbgtkmozembedversion.h +25 -0
- data/ext/gtkmozembed/ruby-gtkmozembed.pc +3 -0
- data/extconf.rb +49 -0
- data/lib/gtkmozembed.rb +31 -0
- data/sample/COPYING +340 -0
- data/sample/README +5 -0
- data/sample/ruby-gecko.rb +223 -0
- data/test/gtk-moz-embed-test-utils.rb +2 -0
- data/test/run-test.rb +35 -0
- data/test/test-gtk-moz-embed.rb +39 -0
- metadata +108 -0
@@ -0,0 +1,103 @@
|
|
1
|
+
|
2
|
+
/* Generated by glib-mkenums.rb ($Id: glib-mkenums.rb 3990 2010-10-27 03:38:42Z ktou $) */
|
3
|
+
|
4
|
+
#include "gtkmozembed-enum-types.h"
|
5
|
+
#include <gtkmozembed.h>
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
/* enumerations from "/usr/include/xulrunner-1.9.1/unstable/gtkmozembed.h" */
|
10
|
+
GType
|
11
|
+
gtk_moz_embed_progress_flags_get_type (void)
|
12
|
+
{
|
13
|
+
static GType etype = 0;
|
14
|
+
if (etype == 0) {
|
15
|
+
static const GFlagsValue values[] = {
|
16
|
+
{ GTK_MOZ_EMBED_FLAG_START, "GTK_MOZ_EMBED_FLAG_START", "start" },
|
17
|
+
{ GTK_MOZ_EMBED_FLAG_REDIRECTING, "GTK_MOZ_EMBED_FLAG_REDIRECTING", "redirecting" },
|
18
|
+
{ GTK_MOZ_EMBED_FLAG_TRANSFERRING, "GTK_MOZ_EMBED_FLAG_TRANSFERRING", "transferring" },
|
19
|
+
{ GTK_MOZ_EMBED_FLAG_NEGOTIATING, "GTK_MOZ_EMBED_FLAG_NEGOTIATING", "negotiating" },
|
20
|
+
{ GTK_MOZ_EMBED_FLAG_STOP, "GTK_MOZ_EMBED_FLAG_STOP", "stop" },
|
21
|
+
{ GTK_MOZ_EMBED_FLAG_IS_REQUEST, "GTK_MOZ_EMBED_FLAG_IS_REQUEST", "is-request" },
|
22
|
+
{ GTK_MOZ_EMBED_FLAG_IS_DOCUMENT, "GTK_MOZ_EMBED_FLAG_IS_DOCUMENT", "is-document" },
|
23
|
+
{ GTK_MOZ_EMBED_FLAG_IS_NETWORK, "GTK_MOZ_EMBED_FLAG_IS_NETWORK", "is-network" },
|
24
|
+
{ GTK_MOZ_EMBED_FLAG_IS_WINDOW, "GTK_MOZ_EMBED_FLAG_IS_WINDOW", "is-window" },
|
25
|
+
{ GTK_MOZ_EMBED_FLAG_RESTORING, "GTK_MOZ_EMBED_FLAG_RESTORING", "restoring" },
|
26
|
+
{ 0, NULL, NULL }
|
27
|
+
};
|
28
|
+
etype = g_flags_register_static ("GtkMozEmbedProgressFlags", values);
|
29
|
+
}
|
30
|
+
return etype;
|
31
|
+
}
|
32
|
+
|
33
|
+
GType
|
34
|
+
gtk_moz_embed_status_flags_get_type (void)
|
35
|
+
{
|
36
|
+
static GType etype = 0;
|
37
|
+
if (etype == 0) {
|
38
|
+
static const GFlagsValue values[] = {
|
39
|
+
{ GTK_MOZ_EMBED_STATUS_FAILED_DNS, "GTK_MOZ_EMBED_STATUS_FAILED_DNS", "dns" },
|
40
|
+
{ GTK_MOZ_EMBED_STATUS_FAILED_CONNECT, "GTK_MOZ_EMBED_STATUS_FAILED_CONNECT", "connect" },
|
41
|
+
{ GTK_MOZ_EMBED_STATUS_FAILED_TIMEOUT, "GTK_MOZ_EMBED_STATUS_FAILED_TIMEOUT", "timeout" },
|
42
|
+
{ GTK_MOZ_EMBED_STATUS_FAILED_USERCANCELED, "GTK_MOZ_EMBED_STATUS_FAILED_USERCANCELED", "usercanceled" },
|
43
|
+
{ 0, NULL, NULL }
|
44
|
+
};
|
45
|
+
etype = g_flags_register_static ("GtkMozEmbedStatusFlags", values);
|
46
|
+
}
|
47
|
+
return etype;
|
48
|
+
}
|
49
|
+
|
50
|
+
GType
|
51
|
+
gtk_moz_embed_reload_flags_get_type (void)
|
52
|
+
{
|
53
|
+
static GType etype = 0;
|
54
|
+
if (etype == 0) {
|
55
|
+
static const GFlagsValue values[] = {
|
56
|
+
{ GTK_MOZ_EMBED_FLAG_RELOADNORMAL, "GTK_MOZ_EMBED_FLAG_RELOADNORMAL", "normal" },
|
57
|
+
{ GTK_MOZ_EMBED_FLAG_RELOADBYPASSCACHE, "GTK_MOZ_EMBED_FLAG_RELOADBYPASSCACHE", "bypasscache" },
|
58
|
+
{ GTK_MOZ_EMBED_FLAG_RELOADBYPASSPROXY, "GTK_MOZ_EMBED_FLAG_RELOADBYPASSPROXY", "bypassproxy" },
|
59
|
+
{ GTK_MOZ_EMBED_FLAG_RELOADBYPASSPROXYANDCACHE, "GTK_MOZ_EMBED_FLAG_RELOADBYPASSPROXYANDCACHE", "bypassproxyandcache" },
|
60
|
+
{ GTK_MOZ_EMBED_FLAG_RELOADCHARSETCHANGE, "GTK_MOZ_EMBED_FLAG_RELOADCHARSETCHANGE", "charsetchange" },
|
61
|
+
{ 0, NULL, NULL }
|
62
|
+
};
|
63
|
+
etype = g_flags_register_static ("GtkMozEmbedReloadFlags", values);
|
64
|
+
}
|
65
|
+
return etype;
|
66
|
+
}
|
67
|
+
|
68
|
+
GType
|
69
|
+
gtk_moz_embed_chrome_flags_get_type (void)
|
70
|
+
{
|
71
|
+
static GType etype = 0;
|
72
|
+
if (etype == 0) {
|
73
|
+
static const GFlagsValue values[] = {
|
74
|
+
{ GTK_MOZ_EMBED_FLAG_DEFAULTCHROME, "GTK_MOZ_EMBED_FLAG_DEFAULTCHROME", "defaultchrome" },
|
75
|
+
{ GTK_MOZ_EMBED_FLAG_WINDOWBORDERSON, "GTK_MOZ_EMBED_FLAG_WINDOWBORDERSON", "windowborderson" },
|
76
|
+
{ GTK_MOZ_EMBED_FLAG_WINDOWCLOSEON, "GTK_MOZ_EMBED_FLAG_WINDOWCLOSEON", "windowcloseon" },
|
77
|
+
{ GTK_MOZ_EMBED_FLAG_WINDOWRESIZEON, "GTK_MOZ_EMBED_FLAG_WINDOWRESIZEON", "windowresizeon" },
|
78
|
+
{ GTK_MOZ_EMBED_FLAG_MENUBARON, "GTK_MOZ_EMBED_FLAG_MENUBARON", "menubaron" },
|
79
|
+
{ GTK_MOZ_EMBED_FLAG_TOOLBARON, "GTK_MOZ_EMBED_FLAG_TOOLBARON", "toolbaron" },
|
80
|
+
{ GTK_MOZ_EMBED_FLAG_LOCATIONBARON, "GTK_MOZ_EMBED_FLAG_LOCATIONBARON", "locationbaron" },
|
81
|
+
{ GTK_MOZ_EMBED_FLAG_STATUSBARON, "GTK_MOZ_EMBED_FLAG_STATUSBARON", "statusbaron" },
|
82
|
+
{ GTK_MOZ_EMBED_FLAG_PERSONALTOOLBARON, "GTK_MOZ_EMBED_FLAG_PERSONALTOOLBARON", "personaltoolbaron" },
|
83
|
+
{ GTK_MOZ_EMBED_FLAG_SCROLLBARSON, "GTK_MOZ_EMBED_FLAG_SCROLLBARSON", "scrollbarson" },
|
84
|
+
{ GTK_MOZ_EMBED_FLAG_TITLEBARON, "GTK_MOZ_EMBED_FLAG_TITLEBARON", "titlebaron" },
|
85
|
+
{ GTK_MOZ_EMBED_FLAG_EXTRACHROMEON, "GTK_MOZ_EMBED_FLAG_EXTRACHROMEON", "extrachromeon" },
|
86
|
+
{ GTK_MOZ_EMBED_FLAG_ALLCHROME, "GTK_MOZ_EMBED_FLAG_ALLCHROME", "allchrome" },
|
87
|
+
{ GTK_MOZ_EMBED_FLAG_WINDOWRAISED, "GTK_MOZ_EMBED_FLAG_WINDOWRAISED", "windowraised" },
|
88
|
+
{ GTK_MOZ_EMBED_FLAG_WINDOWLOWERED, "GTK_MOZ_EMBED_FLAG_WINDOWLOWERED", "windowlowered" },
|
89
|
+
{ GTK_MOZ_EMBED_FLAG_CENTERSCREEN, "GTK_MOZ_EMBED_FLAG_CENTERSCREEN", "centerscreen" },
|
90
|
+
{ GTK_MOZ_EMBED_FLAG_DEPENDENT, "GTK_MOZ_EMBED_FLAG_DEPENDENT", "dependent" },
|
91
|
+
{ GTK_MOZ_EMBED_FLAG_MODAL, "GTK_MOZ_EMBED_FLAG_MODAL", "modal" },
|
92
|
+
{ GTK_MOZ_EMBED_FLAG_OPENASDIALOG, "GTK_MOZ_EMBED_FLAG_OPENASDIALOG", "openasdialog" },
|
93
|
+
{ GTK_MOZ_EMBED_FLAG_OPENASCHROME, "GTK_MOZ_EMBED_FLAG_OPENASCHROME", "openaschrome" },
|
94
|
+
{ 0, NULL, NULL }
|
95
|
+
};
|
96
|
+
etype = g_flags_register_static ("GtkMozEmbedChromeFlags", values);
|
97
|
+
}
|
98
|
+
return etype;
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
/* Generated data ends here */
|
103
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
/* Generated by glib-mkenums.rb ($Id: glib-mkenums.rb 3990 2010-10-27 03:38:42Z ktou $) */
|
3
|
+
|
4
|
+
#ifndef __GTKMOZEMBED_ENUM_TYPES_H__
|
5
|
+
#define __GTKMOZEMBED_ENUM_TYPES_H__
|
6
|
+
|
7
|
+
#include <glib-object.h>
|
8
|
+
|
9
|
+
G_BEGIN_DECLS
|
10
|
+
|
11
|
+
/* enumerations from "/usr/include/xulrunner-1.9.1/unstable/gtkmozembed.h" */
|
12
|
+
GType gtk_moz_embed_progress_flags_get_type (void);
|
13
|
+
#define GTK_TYPE_MOZ_EMBED_PROGRESS_FLAGS (gtk_moz_embed_progress_flags_get_type())
|
14
|
+
GType gtk_moz_embed_status_flags_get_type (void);
|
15
|
+
#define GTK_TYPE_MOZ_EMBED_STATUS_FLAGS (gtk_moz_embed_status_flags_get_type())
|
16
|
+
GType gtk_moz_embed_reload_flags_get_type (void);
|
17
|
+
#define GTK_TYPE_MOZ_EMBED_RELOAD_FLAGS (gtk_moz_embed_reload_flags_get_type())
|
18
|
+
GType gtk_moz_embed_chrome_flags_get_type (void);
|
19
|
+
#define GTK_TYPE_MOZ_EMBED_CHROME_FLAGS (gtk_moz_embed_chrome_flags_get_type())
|
20
|
+
|
21
|
+
G_END_DECLS
|
22
|
+
|
23
|
+
#endif /* __GTKMOZEMBED_ENUM_TYPES_H__ */
|
24
|
+
|
25
|
+
/* Generated data ends here */
|
26
|
+
|
Binary file
|
Binary file
|
@@ -0,0 +1,84 @@
|
|
1
|
+
/* -*- c-file-style: "ruby" -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbgtkmozembed-init.c -
|
5
|
+
|
6
|
+
Ruby-GNOME2 Gtk::MozEmbed - Ruby bindings for GtkMozEmbed
|
7
|
+
|
8
|
+
Copyright (C) 2009 Ruby-GNOME2 Project Team.
|
9
|
+
|
10
|
+
This library is free software; you can redistribute it and/or
|
11
|
+
modify it under the terms of the GNU Lesser General Public
|
12
|
+
License as published by the Free Software Foundation; either
|
13
|
+
version 2.1 of the License, or (at your option) any later version.
|
14
|
+
|
15
|
+
This library is distributed in the hope that it will be useful,
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
18
|
+
Lesser General Public License for more details.
|
19
|
+
|
20
|
+
You should have received a copy of the GNU Lesser General Public
|
21
|
+
License along with this library; if not, write to the Free Software
|
22
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
23
|
+
************************************************/
|
24
|
+
|
25
|
+
#include "rbgtkmozembed.h"
|
26
|
+
|
27
|
+
#ifdef XPCOM_GLUE
|
28
|
+
# include "gtkmozembed_glue.cpp"
|
29
|
+
#endif
|
30
|
+
|
31
|
+
G_BEGIN_DECLS
|
32
|
+
|
33
|
+
#ifdef XPCOM_GLUE
|
34
|
+
static void
|
35
|
+
setup_xpcom_glue(void)
|
36
|
+
{
|
37
|
+
static const GREVersionRange greVersion = {
|
38
|
+
"1.9b", PR_TRUE,
|
39
|
+
"2", PR_TRUE
|
40
|
+
};
|
41
|
+
char xpcomPath[PATH_MAX];
|
42
|
+
|
43
|
+
nsresult rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0,
|
44
|
+
xpcomPath, sizeof(xpcomPath));
|
45
|
+
if (NS_FAILED(rv))
|
46
|
+
return;
|
47
|
+
|
48
|
+
rv = XPCOMGlueStartup(xpcomPath);
|
49
|
+
if (NS_FAILED(rv))
|
50
|
+
return;
|
51
|
+
|
52
|
+
rv = GTKEmbedGlueStartup();
|
53
|
+
if (NS_FAILED(rv))
|
54
|
+
return;
|
55
|
+
|
56
|
+
rv = GTKEmbedGlueStartupInternal();
|
57
|
+
if (NS_FAILED(rv))
|
58
|
+
return;
|
59
|
+
|
60
|
+
char *lastSlash = strrchr(xpcomPath, '/');
|
61
|
+
if (lastSlash)
|
62
|
+
*lastSlash = '\0';
|
63
|
+
|
64
|
+
gtk_moz_embed_set_path(xpcomPath);
|
65
|
+
|
66
|
+
gtk_moz_embed_push_startup();
|
67
|
+
}
|
68
|
+
#endif
|
69
|
+
|
70
|
+
void
|
71
|
+
Init_gtkmozembed(void)
|
72
|
+
{
|
73
|
+
#ifdef XPCOM_GLUE
|
74
|
+
setup_xpcom_glue();
|
75
|
+
#else
|
76
|
+
# ifdef DEFAULT_MOZILLA_FIVE_HOME
|
77
|
+
gtk_moz_embed_set_comp_path(DEFAULT_MOZILLA_FIVE_HOME);
|
78
|
+
# endif
|
79
|
+
#endif
|
80
|
+
|
81
|
+
Init_gtk_moz_embed();
|
82
|
+
}
|
83
|
+
|
84
|
+
G_END_DECLS
|
Binary file
|
@@ -0,0 +1,634 @@
|
|
1
|
+
/* -*- c-file-style: "ruby" -*- */
|
2
|
+
|
3
|
+
/************************************************
|
4
|
+
|
5
|
+
rbgtkmozembed.c -
|
6
|
+
|
7
|
+
Ruby-GNOME2 Gtk::MozEmbed - Ruby bindings for GtkMozEmbed
|
8
|
+
|
9
|
+
Copyright (C) 2005-2007, 2009 Ruby-GNOME2 Project Team.
|
10
|
+
Copyright (C) 2005 Mirko Maischberger, All rights reserved.
|
11
|
+
|
12
|
+
This library is free software; you can redistribute it and/or
|
13
|
+
modify it under the terms of the GNU Lesser General Public
|
14
|
+
License as published by the Free Software Foundation; either
|
15
|
+
version 2.1 of the License, or (at your option) any later version.
|
16
|
+
|
17
|
+
This library is distributed in the hope that it will be useful,
|
18
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
19
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
20
|
+
Lesser General Public License for more details.
|
21
|
+
|
22
|
+
You should have received a copy of the GNU Lesser General Public
|
23
|
+
License along with this library; if not, write to the Free Software
|
24
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
25
|
+
|
26
|
+
|
27
|
+
Many thanks to Christopher Blizzard <blizzard@mozilla.org> for
|
28
|
+
writing the gtkmozembed library and to the Mozilla Foundation.
|
29
|
+
|
30
|
+
Thanks should as well go to the Gtk and GNOME developers, Yukihiro
|
31
|
+
Matsumoto for Ruby and to the Ruby-GNOME2 Team.
|
32
|
+
|
33
|
+
************************************************/
|
34
|
+
|
35
|
+
#include "rbgtkmozembed.h"
|
36
|
+
#include "gtkmozembed-enum-types.h"
|
37
|
+
|
38
|
+
/*
|
39
|
+
* Class: Gtk::MozEmbed
|
40
|
+
*
|
41
|
+
* This class wraps the GtkMozEmbed widget in a Ruby class. The
|
42
|
+
* GtkMozEmbed is an HTML rendering widget based on Mozilla Gecko
|
43
|
+
* provided by either Mozilla or Firefox. You need to have
|
44
|
+
* libgtkmozembed.so in your library path to use and
|
45
|
+
* mozilla-gtkmozembed.pc and gtkmozembed.h in order to compile.
|
46
|
+
*
|
47
|
+
* Gtk::MozEmbed.new
|
48
|
+
* ...
|
49
|
+
* Gtk::MozEmbed.location="http://ruby-gnome2.sf.net"
|
50
|
+
* ...
|
51
|
+
*
|
52
|
+
* Please see the sample application ruby-gecko for more info and
|
53
|
+
* examples.
|
54
|
+
*
|
55
|
+
*/
|
56
|
+
|
57
|
+
#define _SELF(s) (GTK_MOZ_EMBED(RVAL2GOBJ(s)))
|
58
|
+
|
59
|
+
|
60
|
+
/*
|
61
|
+
* Class method: new
|
62
|
+
*
|
63
|
+
* Constructor for the Gtk::MozEmbed object.
|
64
|
+
*
|
65
|
+
* Returns: a newly created Gtk::MozEmbed widget.
|
66
|
+
*
|
67
|
+
*/
|
68
|
+
static VALUE
|
69
|
+
moz_initialize(self)
|
70
|
+
VALUE self;
|
71
|
+
{
|
72
|
+
RBGTK_INITIALIZE(self, gtk_moz_embed_new());
|
73
|
+
return Qnil;
|
74
|
+
}
|
75
|
+
|
76
|
+
/*
|
77
|
+
* Class method: set_profile_path(profile_path, profile_name)
|
78
|
+
*
|
79
|
+
* profile_path: the path to store the profile (String).
|
80
|
+
* profile_name: the name of the application using the widget (String).
|
81
|
+
*
|
82
|
+
* You should call this method before the constructor. The
|
83
|
+
* profile_path parameter should be set to $ENV['HOME']+'/.mozilla'.
|
84
|
+
*
|
85
|
+
* A new profile directory with this name will be created in the
|
86
|
+
* profile_path directory.
|
87
|
+
*
|
88
|
+
* Returns: nil.
|
89
|
+
*
|
90
|
+
*/
|
91
|
+
static VALUE
|
92
|
+
moz_set_profile_path(self, profile_path, profile_name)
|
93
|
+
VALUE self, profile_path, profile_name;
|
94
|
+
{
|
95
|
+
gtk_moz_embed_set_profile_path(RVAL2CSTR(profile_path),
|
96
|
+
RVAL2CSTR(profile_name));
|
97
|
+
return Qnil;
|
98
|
+
}
|
99
|
+
|
100
|
+
/*
|
101
|
+
* Class method: set_comp_path(path)
|
102
|
+
*
|
103
|
+
* path: the mozilla component path (String).
|
104
|
+
*
|
105
|
+
* You should call this method before the constructor.
|
106
|
+
*
|
107
|
+
* The path should be something like /usr/lib/mozilla or
|
108
|
+
* /usr/lib/mozilla-firefox depending on your installation and
|
109
|
+
* distribution.
|
110
|
+
*
|
111
|
+
* We call this inside Init_gtkmozembed() and set the value at
|
112
|
+
* compile time before initializing XPCOM.
|
113
|
+
*
|
114
|
+
* Returns: nil.
|
115
|
+
*
|
116
|
+
*/
|
117
|
+
static VALUE
|
118
|
+
moz_set_comp_path(self, path)
|
119
|
+
VALUE self, path;
|
120
|
+
{
|
121
|
+
gtk_moz_embed_set_comp_path(RVAL2CSTR(path));
|
122
|
+
return Qnil;
|
123
|
+
}
|
124
|
+
|
125
|
+
/*
|
126
|
+
* Method: load_url(url)
|
127
|
+
*
|
128
|
+
* url: the url to load (String).
|
129
|
+
*
|
130
|
+
* This method starts loading the given url, and returns
|
131
|
+
* immediately. The url should be in the form "http://www.gnome.org".
|
132
|
+
*
|
133
|
+
* Returns: the object itself.
|
134
|
+
*
|
135
|
+
*/
|
136
|
+
|
137
|
+
/*
|
138
|
+
* Method: set_location(url)
|
139
|
+
*
|
140
|
+
* See Gtk::MozEmbed#load_url
|
141
|
+
*
|
142
|
+
* Returns: self.
|
143
|
+
*/
|
144
|
+
|
145
|
+
/*
|
146
|
+
* Method: location=url
|
147
|
+
*
|
148
|
+
* See Gtk::MozEmbed#load_url
|
149
|
+
*
|
150
|
+
* Returns: self.
|
151
|
+
*/
|
152
|
+
|
153
|
+
static VALUE
|
154
|
+
moz_load_url(self, url)
|
155
|
+
VALUE self, url;
|
156
|
+
{
|
157
|
+
gtk_moz_embed_load_url(_SELF(self), RVAL2CSTR(url));
|
158
|
+
return self;
|
159
|
+
}
|
160
|
+
|
161
|
+
/*
|
162
|
+
* Method: stop_load
|
163
|
+
*
|
164
|
+
* Stops loading the current page.
|
165
|
+
*
|
166
|
+
* Returns: the object itself.
|
167
|
+
*
|
168
|
+
*/
|
169
|
+
static VALUE
|
170
|
+
moz_stop_load(self)
|
171
|
+
VALUE self;
|
172
|
+
{
|
173
|
+
gtk_moz_embed_stop_load(_SELF(self));
|
174
|
+
return self;
|
175
|
+
}
|
176
|
+
|
177
|
+
/*
|
178
|
+
* Method: can_go_back?
|
179
|
+
*
|
180
|
+
* This method reflects the status of the browsing history.
|
181
|
+
*
|
182
|
+
* Returns: True if the browser can go back one page.
|
183
|
+
*
|
184
|
+
*/
|
185
|
+
static VALUE
|
186
|
+
moz_can_go_back(self)
|
187
|
+
VALUE self;
|
188
|
+
{
|
189
|
+
return CBOOL2RVAL(gtk_moz_embed_can_go_back(_SELF(self)));
|
190
|
+
}
|
191
|
+
|
192
|
+
/*
|
193
|
+
* Method: can_go_forward?
|
194
|
+
*
|
195
|
+
* This method reflects the status of the browsing history.
|
196
|
+
*
|
197
|
+
* Returns: True if the browser can go forward one page.
|
198
|
+
*
|
199
|
+
*/
|
200
|
+
static VALUE
|
201
|
+
moz_can_go_forward(self)
|
202
|
+
VALUE self;
|
203
|
+
{
|
204
|
+
return CBOOL2RVAL(gtk_moz_embed_can_go_forward(_SELF(self)));
|
205
|
+
}
|
206
|
+
|
207
|
+
/*
|
208
|
+
* Method: go_back
|
209
|
+
*
|
210
|
+
* Tells the browser to go back one page in the history.
|
211
|
+
*
|
212
|
+
* Returns: the object itself.
|
213
|
+
*
|
214
|
+
*/
|
215
|
+
static VALUE
|
216
|
+
moz_go_back(self)
|
217
|
+
VALUE self;
|
218
|
+
{
|
219
|
+
gtk_moz_embed_go_back(_SELF(self));
|
220
|
+
return self;
|
221
|
+
}
|
222
|
+
|
223
|
+
/*
|
224
|
+
* Method: go_forward
|
225
|
+
*
|
226
|
+
* Tells the browser to go one page forward in the history.
|
227
|
+
*
|
228
|
+
* Returns: the object itself.
|
229
|
+
*
|
230
|
+
*/
|
231
|
+
static VALUE
|
232
|
+
moz_go_forward(self)
|
233
|
+
VALUE self;
|
234
|
+
{
|
235
|
+
gtk_moz_embed_go_forward(_SELF(self));
|
236
|
+
return self;
|
237
|
+
}
|
238
|
+
|
239
|
+
/*
|
240
|
+
* Method: location
|
241
|
+
*
|
242
|
+
* The current location, usefull when the "location" signal is raised.
|
243
|
+
*
|
244
|
+
* Returns: the current location (String).
|
245
|
+
*
|
246
|
+
*/
|
247
|
+
static VALUE
|
248
|
+
moz_get_location(self)
|
249
|
+
VALUE self;
|
250
|
+
{
|
251
|
+
char* url = gtk_moz_embed_get_location(_SELF(self));
|
252
|
+
return CSTR2RVAL(url);
|
253
|
+
}
|
254
|
+
|
255
|
+
|
256
|
+
/*
|
257
|
+
* Method: link_message
|
258
|
+
*
|
259
|
+
* The location of the selected link, useful when the "link_message"
|
260
|
+
* signal is raised.
|
261
|
+
*
|
262
|
+
* Returns: the selected url.
|
263
|
+
*
|
264
|
+
*/
|
265
|
+
static VALUE
|
266
|
+
moz_get_link_message(self)
|
267
|
+
VALUE self;
|
268
|
+
{
|
269
|
+
char *msg = gtk_moz_embed_get_link_message(_SELF(self));
|
270
|
+
return CSTR2RVAL(msg);
|
271
|
+
}
|
272
|
+
|
273
|
+
/*
|
274
|
+
* Method: js_status
|
275
|
+
*
|
276
|
+
* The JavaScript|ECMAScript status message, useful when the
|
277
|
+
* "js_status" signal is raised.
|
278
|
+
*
|
279
|
+
* Returns: the selected url (String).
|
280
|
+
*
|
281
|
+
*/
|
282
|
+
static VALUE
|
283
|
+
moz_get_js_status(self)
|
284
|
+
VALUE self;
|
285
|
+
{
|
286
|
+
char *msg = gtk_moz_embed_get_js_status(_SELF(self));
|
287
|
+
return CSTR2RVAL(msg);
|
288
|
+
}
|
289
|
+
|
290
|
+
/*
|
291
|
+
* Method: title
|
292
|
+
*
|
293
|
+
* The title of the currently loaded page, usefull when the "title"
|
294
|
+
* signal is raised.
|
295
|
+
*
|
296
|
+
* Returns: the page title (String).
|
297
|
+
*
|
298
|
+
*/
|
299
|
+
static VALUE
|
300
|
+
moz_get_title(self)
|
301
|
+
VALUE self;
|
302
|
+
{
|
303
|
+
char *title = gtk_moz_embed_get_title(_SELF(self));
|
304
|
+
return CSTR2RVAL(title);
|
305
|
+
}
|
306
|
+
|
307
|
+
/*
|
308
|
+
* Method: reload(flags)
|
309
|
+
*
|
310
|
+
* flags: one of the Gtk::MozEmbed::ReloadFlags
|
311
|
+
* (Gtk::MozEmbed::RELOADNORMAL, Gtk::MozEmbed::RELOADBYPASSCACHE,
|
312
|
+
* Gtk::MozEmbed::RELOADBYPASSPROXY, Gtk::MozEmbed::RELOADBYPASSPROXYANDCACHE).
|
313
|
+
*
|
314
|
+
* Forces a page reload of a specific type.
|
315
|
+
*
|
316
|
+
* Returns: the object itself.
|
317
|
+
*
|
318
|
+
*/
|
319
|
+
static VALUE
|
320
|
+
moz_reload(self, flags)
|
321
|
+
VALUE self, flags;
|
322
|
+
{
|
323
|
+
gtk_moz_embed_reload(_SELF(self),
|
324
|
+
RVAL2GFLAGS(flags, GTK_TYPE_MOZ_EMBED_RELOAD_FLAGS));
|
325
|
+
return self;
|
326
|
+
}
|
327
|
+
|
328
|
+
/*
|
329
|
+
* Method: set_chrome_mask(flags)
|
330
|
+
*
|
331
|
+
* flags: a combination of Gtk::MozEmbed::ChromeFlags.
|
332
|
+
*
|
333
|
+
* Set the chrome mask.
|
334
|
+
*
|
335
|
+
* Returns: the object itself.
|
336
|
+
*
|
337
|
+
*/
|
338
|
+
|
339
|
+
static VALUE
|
340
|
+
moz_set_chrome_mask(self, flags)
|
341
|
+
VALUE self, flags;
|
342
|
+
{
|
343
|
+
gtk_moz_embed_set_chrome_mask(_SELF(self),
|
344
|
+
RVAL2GFLAGS(flags, GTK_TYPE_MOZ_EMBED_CHROME_FLAGS));
|
345
|
+
return self;
|
346
|
+
}
|
347
|
+
|
348
|
+
/*
|
349
|
+
* Method: chrome_mask
|
350
|
+
*
|
351
|
+
* Get the chrome mask.
|
352
|
+
*
|
353
|
+
* Returns: a combination of Moz::GtkEmbed::ChromeFlags.
|
354
|
+
*
|
355
|
+
*/
|
356
|
+
static VALUE
|
357
|
+
moz_get_chrome_mask(self)
|
358
|
+
VALUE self;
|
359
|
+
{
|
360
|
+
guint32 mask = gtk_moz_embed_get_chrome_mask(_SELF(self));
|
361
|
+
return GFLAGS2RVAL(mask, GTK_TYPE_MOZ_EMBED_CHROME_FLAGS);
|
362
|
+
}
|
363
|
+
|
364
|
+
/*
|
365
|
+
* Method: render_data(data, base_uri, mime_type)
|
366
|
+
*
|
367
|
+
* data: the data to be rendered.
|
368
|
+
* base_uri: the base uri for the resolver.
|
369
|
+
* mime_type: the mime/type of the data to be rendered.
|
370
|
+
*
|
371
|
+
* This function will allow you to take a chunk of random data and
|
372
|
+
* render it into the Gtk::MozEmbed window. See also
|
373
|
+
* Gtk::MozEmbed#open_stream, Gtk::MozEmbed#append_data and
|
374
|
+
* Gtk::MozEmbed#close_stream.
|
375
|
+
*
|
376
|
+
* Returns: self.
|
377
|
+
*
|
378
|
+
*/
|
379
|
+
static VALUE
|
380
|
+
moz_render_data(self, data, base_uri, mime_type)
|
381
|
+
VALUE self, data, base_uri, mime_type;
|
382
|
+
{
|
383
|
+
gtk_moz_embed_render_data(_SELF(self),
|
384
|
+
RSTRING_PTR(data),
|
385
|
+
RSTRING_LEN(data),
|
386
|
+
RVAL2CSTR(base_uri),
|
387
|
+
RVAL2CSTR(mime_type));
|
388
|
+
return self;
|
389
|
+
}
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
|
394
|
+
static gboolean stream_open = FALSE;
|
395
|
+
|
396
|
+
/*
|
397
|
+
* Method: open_stream(base_uri, mime_type)
|
398
|
+
*
|
399
|
+
* base_uri: the uri that Gtk::MozEmbed will use to resolve
|
400
|
+
* relative addresses (String).
|
401
|
+
* mime_type: the mime type of the data (String).
|
402
|
+
*
|
403
|
+
* This method sould be called to visualize self feeded html.
|
404
|
+
*
|
405
|
+
* The base_uri must be a valid base uri, this should contain
|
406
|
+
* the protocol name and the path separated by a colon.
|
407
|
+
*
|
408
|
+
* The mime_type should be a valid mime-type and instucts
|
409
|
+
* GtkMozEmbed about the data that we'll send with "<<":
|
410
|
+
*
|
411
|
+
* * "text/html" if an HTML is to be displayed.
|
412
|
+
* * "text/plain" if TXT data are to be displayed.
|
413
|
+
* * "image/png" if we want to send some PNG data.
|
414
|
+
* * "image/jpeg" if our data are in JPEG format.
|
415
|
+
* * "image/gif" if our data are in GIF format.
|
416
|
+
* * See /etc/mime.types for more.
|
417
|
+
*
|
418
|
+
* moz.open_stream("file:///basepath/", "text/html")
|
419
|
+
* moz.append_data("
|
420
|
+
* <html>
|
421
|
+
* <body>
|
422
|
+
* test
|
423
|
+
* <a href=\"hello.html\">this is resolved against base_path</a>
|
424
|
+
* </body>
|
425
|
+
* </html>")
|
426
|
+
* moz.close_stream
|
427
|
+
*
|
428
|
+
* See also #render_data.
|
429
|
+
*
|
430
|
+
* Returns: self.
|
431
|
+
*
|
432
|
+
*/
|
433
|
+
static VALUE
|
434
|
+
moz_open_stream(self, base_uri, mime_type)
|
435
|
+
VALUE self, base_uri, mime_type;
|
436
|
+
{
|
437
|
+
gchar *bu = RVAL2CSTR(base_uri);
|
438
|
+
|
439
|
+
if(!strchr(bu, ':'))
|
440
|
+
rb_raise(rb_eArgError,
|
441
|
+
"The base_uri parameter must be a valid base uri. "
|
442
|
+
"(e.g http://www.sitename.org/base/, file:///path/.../)");
|
443
|
+
gtk_moz_embed_open_stream(_SELF(self), bu, RVAL2CSTR(mime_type));
|
444
|
+
stream_open = TRUE;
|
445
|
+
return self;
|
446
|
+
}
|
447
|
+
|
448
|
+
/*
|
449
|
+
* Method: append_data(data)
|
450
|
+
*
|
451
|
+
* data: The data do be added to the rendering stream (String).
|
452
|
+
*
|
453
|
+
* You should feed data to the rendering stream via this method.
|
454
|
+
* The data should be in the mime format if you want to send some
|
455
|
+
* self drawn PNG or JPEG data from a Pixbuf please see:
|
456
|
+
* http://ruby-gnome2.sourceforge.jp/hiki.cgi?Gdk%3A%3APixbuf#save_to_buffer
|
457
|
+
*
|
458
|
+
* Returns: self.
|
459
|
+
*/
|
460
|
+
static VALUE
|
461
|
+
moz_append_data(self, data)
|
462
|
+
VALUE self, data;
|
463
|
+
{
|
464
|
+
if(!stream_open)
|
465
|
+
rb_raise(rb_eRuntimeError,
|
466
|
+
"Can't append date before open_stream"
|
467
|
+
" is called.");
|
468
|
+
|
469
|
+
gtk_moz_embed_append_data(_SELF(self),
|
470
|
+
RSTRING_PTR(data),
|
471
|
+
RSTRING_LEN(data));
|
472
|
+
return self;
|
473
|
+
}
|
474
|
+
|
475
|
+
/*
|
476
|
+
* Method: close_stream
|
477
|
+
*
|
478
|
+
* This closes the stream. This way Gtk::MozEmbed knows we
|
479
|
+
* are finished.
|
480
|
+
*
|
481
|
+
* Returns: self.
|
482
|
+
*
|
483
|
+
*/
|
484
|
+
static VALUE
|
485
|
+
moz_close_stream(self)
|
486
|
+
VALUE self;
|
487
|
+
{
|
488
|
+
if(!stream_open)
|
489
|
+
rb_raise(rb_eRuntimeError,
|
490
|
+
"You should open the stream before closing it.");
|
491
|
+
|
492
|
+
gtk_moz_embed_close_stream(_SELF(self));
|
493
|
+
stream_open = FALSE;
|
494
|
+
return self;
|
495
|
+
}
|
496
|
+
|
497
|
+
|
498
|
+
/*
|
499
|
+
* Signals are automagically handled by Ruby-GNOME2.
|
500
|
+
* except for new_window which needs a custom handling.
|
501
|
+
*
|
502
|
+
*/
|
503
|
+
|
504
|
+
|
505
|
+
/* The new_window signal is handled separately. */
|
506
|
+
|
507
|
+
static gulong new_win_sig = 0;
|
508
|
+
|
509
|
+
static void
|
510
|
+
moz_custom_new_window_cb(embed, retval, chromemask, func)
|
511
|
+
GtkMozEmbed *embed;
|
512
|
+
GtkMozEmbed **retval;
|
513
|
+
guint chromemask;
|
514
|
+
VALUE func;
|
515
|
+
{
|
516
|
+
VALUE new_moz =
|
517
|
+
rb_funcall(func, rb_intern("call"), 2,
|
518
|
+
GOBJ2RVAL(embed),
|
519
|
+
GFLAGS2RVAL(chromemask, GTK_TYPE_MOZ_EMBED_CHROME_FLAGS));
|
520
|
+
*retval = RVAL2GOBJ(new_moz);
|
521
|
+
}
|
522
|
+
|
523
|
+
/*
|
524
|
+
* Method: on_new_window { |widget, chromemask| block }
|
525
|
+
*
|
526
|
+
* The new_window signal should not be connected directly, this method
|
527
|
+
* should be used instead. The block should eval to the newly created
|
528
|
+
* Gtk::MozEmbed widget. This method serves the purpose of creating
|
529
|
+
* a new window around the widget when requested.
|
530
|
+
*
|
531
|
+
* Returns: self.
|
532
|
+
*/
|
533
|
+
static VALUE
|
534
|
+
set_on_new_window_block(self)
|
535
|
+
VALUE self;
|
536
|
+
{
|
537
|
+
VALUE func = rb_block_proc();
|
538
|
+
G_RELATIVE(self, func);
|
539
|
+
new_win_sig =
|
540
|
+
g_signal_connect(RVAL2GOBJ(self), "new_window",
|
541
|
+
G_CALLBACK(moz_custom_new_window_cb),
|
542
|
+
(void *)func);
|
543
|
+
return self;
|
544
|
+
}
|
545
|
+
|
546
|
+
/*
|
547
|
+
* Method: no_new_window
|
548
|
+
*
|
549
|
+
* This method clears the code block associated via the
|
550
|
+
* Gtk::MozEmbed#on_new_window method.
|
551
|
+
*
|
552
|
+
* Returns: self.
|
553
|
+
*/
|
554
|
+
static VALUE
|
555
|
+
clear_on_new_window_block(self)
|
556
|
+
VALUE self;
|
557
|
+
{
|
558
|
+
GObject *moz = RVAL2GOBJ(self);
|
559
|
+
|
560
|
+
if(g_signal_handler_is_connected(moz, new_win_sig))
|
561
|
+
g_signal_handler_disconnect(RVAL2GOBJ(self), new_win_sig);
|
562
|
+
else
|
563
|
+
rb_raise(rb_eRuntimeError,
|
564
|
+
"#on_new_window code block not set so it cannot be removed.");
|
565
|
+
|
566
|
+
return self;
|
567
|
+
}
|
568
|
+
|
569
|
+
/** INIT **/
|
570
|
+
|
571
|
+
void
|
572
|
+
Init_gtk_moz_embed(void)
|
573
|
+
{
|
574
|
+
|
575
|
+
VALUE moz = G_DEF_CLASS(GTK_TYPE_MOZ_EMBED, "MozEmbed", mGtk);
|
576
|
+
|
577
|
+
rb_define_module_function(moz, "set_profile_path",
|
578
|
+
moz_set_profile_path, 2);
|
579
|
+
rb_define_module_function(moz, "set_comp_path",
|
580
|
+
moz_set_comp_path, 1);
|
581
|
+
|
582
|
+
rb_define_method(moz, "initialize", moz_initialize, 0);
|
583
|
+
rb_define_method(moz, "load_url", moz_load_url, 1);
|
584
|
+
/* Alias method so that location & location= work in pair */
|
585
|
+
rb_define_method(moz, "set_location", moz_load_url, 1);
|
586
|
+
rb_define_method(moz, "stop_load", moz_stop_load, 0);
|
587
|
+
rb_define_method(moz, "can_go_back?", moz_can_go_back, 0);
|
588
|
+
rb_define_method(moz, "can_go_forward?", moz_can_go_forward, 0);
|
589
|
+
rb_define_method(moz, "go_back", moz_go_back, 0);
|
590
|
+
rb_define_method(moz, "go_forward", moz_go_forward, 0);
|
591
|
+
rb_define_method(moz, "location", moz_get_location, 0);
|
592
|
+
rb_define_method(moz, "js_status", moz_get_js_status, 0);
|
593
|
+
rb_define_method(moz, "link_message", moz_get_link_message, 0);
|
594
|
+
rb_define_method(moz, "title", moz_get_title, 0);
|
595
|
+
rb_define_method(moz, "reload", moz_reload, 1);
|
596
|
+
rb_define_method(moz, "chrome_mask", moz_get_chrome_mask, 0);
|
597
|
+
rb_define_method(moz, "set_chrome_mask", moz_set_chrome_mask, 1);
|
598
|
+
rb_define_method(moz, "render_data", moz_render_data, 3);
|
599
|
+
rb_define_method(moz, "open_stream", moz_open_stream, 2);
|
600
|
+
rb_define_method(moz, "append_data", moz_append_data, 1);
|
601
|
+
/*
|
602
|
+
* This overrides the Bin method so it's disabled:
|
603
|
+
* rb_define_method(moz, "<<", moz_append_data, 1);
|
604
|
+
*/
|
605
|
+
rb_define_method(moz, "close_stream", moz_close_stream, 0);
|
606
|
+
|
607
|
+
/* overriding new_window signal to take care of retval ourself */
|
608
|
+
rb_define_method(moz, "on_new_window", set_on_new_window_block, 0);
|
609
|
+
rb_define_method(moz, "no_new_window", clear_on_new_window_block, 0);
|
610
|
+
|
611
|
+
G_DEF_SETTERS(moz);
|
612
|
+
|
613
|
+
G_DEF_CLASS(GTK_TYPE_MOZ_EMBED_PROGRESS_FLAGS, "ProgressFlags", moz);
|
614
|
+
G_DEF_CONSTANTS(moz, GTK_TYPE_MOZ_EMBED_PROGRESS_FLAGS,
|
615
|
+
"GTK_MOZ_EMBED_FLAG_");
|
616
|
+
|
617
|
+
G_DEF_CLASS(GTK_TYPE_MOZ_EMBED_STATUS_FLAGS, "StatusFlags", moz);
|
618
|
+
G_DEF_CONSTANTS(moz, GTK_TYPE_MOZ_EMBED_STATUS_FLAGS,
|
619
|
+
"GTK_MOZ_EMBED_STATUS_");
|
620
|
+
|
621
|
+
G_DEF_CLASS(GTK_TYPE_MOZ_EMBED_RELOAD_FLAGS, "ReloadFlags", moz);
|
622
|
+
G_DEF_CONSTANTS(moz, GTK_TYPE_MOZ_EMBED_RELOAD_FLAGS,
|
623
|
+
"GTK_MOZ_EMBED_FLAG_");
|
624
|
+
|
625
|
+
G_DEF_CLASS(GTK_TYPE_MOZ_EMBED_CHROME_FLAGS, "ChromeFlags", moz);
|
626
|
+
G_DEF_CONSTANTS(moz, GTK_TYPE_MOZ_EMBED_CHROME_FLAGS,
|
627
|
+
"GTK_MOZ_EMBED_FLAG_");
|
628
|
+
|
629
|
+
rb_define_const(moz, "BUILD_VERSION",
|
630
|
+
rb_ary_new3(3,
|
631
|
+
INT2FIX(GTKMOZEMBED_MAJOR_VERSION),
|
632
|
+
INT2FIX(GTKMOZEMBED_MINOR_VERSION),
|
633
|
+
INT2FIX(GTKMOZEMBED_MICRO_VERSION)));
|
634
|
+
}
|