GTK3: remove gtkmozembed and make htmlview work with webktview in a scrolled window
svn: r20168
This commit is contained in:
parent
72e956b1db
commit
6686435b19
@ -89,10 +89,6 @@ def get_identity():
|
|||||||
# Constants
|
# Constants
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
# I think we should set the two following variable in const.py
|
|
||||||
# They are used only with gtkmozembed.
|
|
||||||
MOZEMBED_PATH = TEMP_DIR
|
|
||||||
MOZEMBED_SUBPATH = get_empty_tempdir('mozembed_gramps')
|
|
||||||
GEOVIEW_SUBPATH = get_empty_tempdir('geoview')
|
GEOVIEW_SUBPATH = get_empty_tempdir('geoview')
|
||||||
NOWEB = 0
|
NOWEB = 0
|
||||||
WEBKIT = 1
|
WEBKIT = 1
|
||||||
@ -130,13 +126,6 @@ try:
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
#TODO GTK3: gtkmozembed not for GTK3
|
|
||||||
##try:
|
|
||||||
## import gtkmozembed
|
|
||||||
## TOOLKIT += MOZILLA
|
|
||||||
##except:
|
|
||||||
## pass
|
|
||||||
|
|
||||||
#no interfaces present, raise Error so that options for GeoView do not show
|
#no interfaces present, raise Error so that options for GeoView do not show
|
||||||
if TOOLKIT == NOWEB :
|
if TOOLKIT == NOWEB :
|
||||||
raise ImportError, 'No GTK html plugin found'
|
raise ImportError, 'No GTK html plugin found'
|
||||||
@ -325,113 +314,6 @@ class RendererWebkit(Renderer):
|
|||||||
"""
|
"""
|
||||||
return self.window.get_main_frame().get_uri()
|
return self.window.get_main_frame().get_uri()
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# The Mozilla or Gecko Renderer class
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
class RendererMozilla(Renderer):
|
|
||||||
"""
|
|
||||||
Implementation of Renderer with gtkmozembed
|
|
||||||
"""
|
|
||||||
def __init__(self):
|
|
||||||
Renderer.__init__(self)
|
|
||||||
if hasattr(gtkmozembed, 'set_profile_path'):
|
|
||||||
set_profile_path = gtkmozembed.set_profile_path
|
|
||||||
else:
|
|
||||||
set_profile_path = gtkmozembed.gtk_moz_embed_set_profile_path
|
|
||||||
set_profile_path(MOZEMBED_PATH, MOZEMBED_SUBPATH)
|
|
||||||
self.__set_mozembed_proxy()
|
|
||||||
self.window = gtkmozembed.MozEmbed()
|
|
||||||
self.browser = MOZILLA
|
|
||||||
self.title = None
|
|
||||||
self.handler = self.window.connect("net-stop", self.page_loaded)
|
|
||||||
self.window.connect("title", self.get_title)
|
|
||||||
self.fct = None
|
|
||||||
|
|
||||||
def page_loaded(self, *args):
|
|
||||||
"""
|
|
||||||
We just loaded one page in the browser.
|
|
||||||
Set the button sensitivity
|
|
||||||
"""
|
|
||||||
self.set_button_sensitivity()
|
|
||||||
|
|
||||||
def set_button_sensitivity(self):
|
|
||||||
"""
|
|
||||||
We must set the back and forward button in the HtmlView class.
|
|
||||||
"""
|
|
||||||
self.fct()
|
|
||||||
|
|
||||||
def open(self, url):
|
|
||||||
"""
|
|
||||||
We need to load the page in the browser.
|
|
||||||
"""
|
|
||||||
self.window.load_url(url)
|
|
||||||
|
|
||||||
def get_title(self, *args):
|
|
||||||
"""
|
|
||||||
We need to get the html title page.
|
|
||||||
"""
|
|
||||||
self.title = self.window.get_title()
|
|
||||||
|
|
||||||
def execute_script(self, url):
|
|
||||||
"""
|
|
||||||
We need to execute a javascript function into the browser
|
|
||||||
"""
|
|
||||||
self.window.load_url(url)
|
|
||||||
|
|
||||||
def get_uri(self):
|
|
||||||
"""
|
|
||||||
What is the uri loaded in the browser ?
|
|
||||||
"""
|
|
||||||
return self.window.get_location()
|
|
||||||
|
|
||||||
def refresh(self):
|
|
||||||
"""
|
|
||||||
We need to reload the page in the browser.
|
|
||||||
"""
|
|
||||||
self.window.reload(0)
|
|
||||||
|
|
||||||
def __set_mozembed_proxy(self):
|
|
||||||
"""
|
|
||||||
Try to see if we have some proxy environment variable.
|
|
||||||
http_proxy in our case.
|
|
||||||
The standard format is : http://[user:password@]proxy:port/
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
proxy = os.environ['http_proxy']
|
|
||||||
if proxy:
|
|
||||||
host_port = None
|
|
||||||
prefs = open(os.path.join(MOZEMBED_SUBPATH,
|
|
||||||
"prefs.js"),
|
|
||||||
"w+")
|
|
||||||
if not os.path.exists(prefs):
|
|
||||||
parts = urlparse.urlparse(proxy)
|
|
||||||
if not parts[0] or parts[0] == 'http':
|
|
||||||
host_port = parts[1]
|
|
||||||
hport = host_port.split(':')
|
|
||||||
host = hport[0].strip()
|
|
||||||
if host:
|
|
||||||
try:
|
|
||||||
port = int(hport[1])
|
|
||||||
except:
|
|
||||||
user = host
|
|
||||||
uprox = hport[1].split('@')
|
|
||||||
password = uprox[0]
|
|
||||||
host = uprox[1]
|
|
||||||
port = int(hport[2])
|
|
||||||
if port and host:
|
|
||||||
port = str(port)
|
|
||||||
(lang_country, modifier ) = locale.getlocale()
|
|
||||||
lang = lang_country.split('_')[0]
|
|
||||||
prefs.write(MOZJS % vars() )
|
|
||||||
prefs.close()
|
|
||||||
except:
|
|
||||||
try: # trying to remove pref.js in case of proxy change.
|
|
||||||
os.remove(os.path.join(MOZEMBED_SUBPATH, "prefs.js"))
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# HtmlView
|
# HtmlView
|
||||||
@ -474,49 +356,18 @@ class HtmlView(NavigationView):
|
|||||||
#top widget at the top
|
#top widget at the top
|
||||||
self.box.pack_start(self.top_widget(), False, False, 0 )
|
self.box.pack_start(self.top_widget(), False, False, 0 )
|
||||||
#web page under it in a scrolled window
|
#web page under it in a scrolled window
|
||||||
self.table = Gtk.Table(1, 1, False)
|
#self.table = Gtk.Table(1, 1, False)
|
||||||
frames = Gtk.HBox(False, 4)
|
|
||||||
self.frames = frames
|
|
||||||
self.toolkit = TOOLKIT = get_toolkits()
|
self.toolkit = TOOLKIT = get_toolkits()
|
||||||
if (get_toolkits() == (WEBKIT+MOZILLA)):
|
self.renderer = RendererWebkit()
|
||||||
# The two toolkits ( webkit and mozilla ) are available.
|
self.frames = Gtk.HBox(False, 4)
|
||||||
# The user is able to choose what toolkit he will use.
|
frame = Gtk.ScrolledWindow(None, None)
|
||||||
try:
|
frame.set_shadow_type(Gtk.ShadowType.NONE)
|
||||||
# preferences.webkit is useful only in geoview;
|
frame.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
||||||
# not in htmlview.
|
frame.add(self.renderer.get_window())
|
||||||
if self._config.get('preferences.webkit'):
|
self.frames.set_homogeneous(False)
|
||||||
TOOLKIT = WEBKIT
|
self.frames.pack_start(frame, True, True, 0)
|
||||||
else:
|
self.frames.pack_end(self.filter, False, False, 0)
|
||||||
TOOLKIT = MOZILLA
|
self.box.pack_start(self.frames, True, True, 0)
|
||||||
except:
|
|
||||||
self.toolkit = "html"
|
|
||||||
if self.toolkit == "html":
|
|
||||||
_LOG.debug("We are native htmlrenderer.")
|
|
||||||
frame = Gtk.ScrolledWindow(None, None)
|
|
||||||
frame.set_shadow_type(Gtk.ShadowType.NONE)
|
|
||||||
frame.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
|
||||||
frame.add_with_viewport(self.table)
|
|
||||||
else:
|
|
||||||
_LOG.debug("We are called by geoview.")
|
|
||||||
frame = Gtk.Frame()
|
|
||||||
frame.set_size_request(100,100)
|
|
||||||
frame.add(self.table)
|
|
||||||
#self.bootstrap_handler = self.box.connect("size-request",
|
|
||||||
# self.init_parent_signals_for_map)
|
|
||||||
self.table.get_parent().set_shadow_type(Gtk.ShadowType.NONE)
|
|
||||||
self.table.set_row_spacings(1)
|
|
||||||
self.table.set_col_spacings(0)
|
|
||||||
if (TOOLKIT == MOZILLA) :
|
|
||||||
_LOG.debug("We use gtkmozembed")
|
|
||||||
self.renderer = RendererMozilla()
|
|
||||||
else:
|
|
||||||
_LOG.debug("We use webkit")
|
|
||||||
self.renderer = RendererWebkit()
|
|
||||||
self.table.add(self.renderer.get_window())
|
|
||||||
frames.set_homogeneous(False)
|
|
||||||
frames.pack_start(frame, True, True, 0)
|
|
||||||
frames.pack_end(self.filter, False, False, 0)
|
|
||||||
self.box.pack_start(frames, True, True, 0)
|
|
||||||
# this is used to activate the back and forward button
|
# this is used to activate the back and forward button
|
||||||
# from the renderer class.
|
# from the renderer class.
|
||||||
self.renderer.fct = lambda: self.set_button_sensitivity
|
self.renderer.fct = lambda: self.set_button_sensitivity
|
||||||
|
Loading…
Reference in New Issue
Block a user