Advertisement
IAteYourKitten

PyGTK, WebKit issues adding new webview inside tabs

May 3rd, 2014
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.63 KB | None | 0 0
  1. # -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
  2. ### BEGIN LICENSE
  3. # This file is in the public domain
  4. ### END LICENSE
  5.  
  6. from locale import gettext as _
  7.  
  8. from gi.repository import Gtk, WebKit # pylint: disable=E0611
  9. import logging
  10. logger = logging.getLogger('optimus')
  11.  
  12. from optimus_lib import Window
  13. from optimus.AboutOptimusDialog import AboutOptimusDialog
  14. from optimus.PreferencesOptimusDialog import PreferencesOptimusDialog
  15.  
  16. # See optimus_lib.Window.py for more details about how this class works
  17. class OptimusWindow(Window):
  18.     __gtype_name__ = "OptimusWindow"
  19.    
  20.     def finish_initializing(self, builder): # pylint: disable=E1002
  21.         """Set up the main window"""
  22.         super(OptimusWindow, self).finish_initializing(builder)
  23.  
  24.         self.AboutDialog = AboutOptimusDialog
  25.         self.PreferencesDialog = PreferencesOptimusDialog
  26.        
  27.  
  28.         # Code for other initialization actions should be added here.
  29.         self.refreshbutton = self.builder.get_object("refreshbutton")
  30.         self.urlentry = self.builder.get_object("urlentry")
  31.         self.backbutton = self.builder.get_object("backbutton")
  32.         self.forwardbutton = self.builder.get_object("forwardbutton")
  33.         self.notebook = self.builder.get_object("notebook1")
  34.         self.tab = self.builder.get_object("addtab")      
  35.         self.webview = WebKit.WebView()
  36.         self.webview.connect("title-changed", self.on_title_changed)
  37.         self.webview.connect("load-started", self.on_load_started)
  38.         self.webview.connect("load-finished", self.on_load_finished)
  39.         self.notebook.connect("switch-page", self._tab_changed)
  40.        
  41.         self.scrolledwindow = self.builder.get_object("scrolledwindow")
  42.         self.window = self.builder.get_object("window")
  43.         self.notebook.show()
  44.  
  45.         self.scrolledwindow.add(self.webview)  
  46.         self.webview.show()
  47.         self.webview.open("http://google.com")
  48.         self.tabs = []
  49.    
  50.         self.backbutton.set_sensitive(False)
  51.         self.forwardbutton.set_sensitive(False)
  52.         self.webview.settings=WebKit.WebSettings()
  53.         useragent=self.webview.settings.get_property('user-agent')
  54.         devsettings=self.webview.settings.get_property('enable-developer-extras')
  55.         self.num = 0
  56.  
  57.         self.webview.settings.set_property('enable-developer-extras', True)
  58.         self.webview.settings.set_property('user-agent', 'Optimus Browser')
  59.         self.webview.set_settings(self.webview.settings)
  60.  
  61.     def on_urlentry_activate(self, widget):
  62.         if self.webview.can_go_back():
  63.             self.backbutton.set_sensitive(True)
  64.  
  65.     def _tab_changed(self, notebook, current_page, index):
  66.         print self.notebook.get_current_page()
  67.  
  68.     def get_pages(self):
  69.         subjectNum = self.notebook.get_current_page()
  70.         pages = self.notebook.get_nth_page(subjectNum)
  71.         return pages
  72.  
  73.     def on_refreshbutton_clicked(self, widget):
  74.         self.webview.reload()
  75.  
  76.     def on_addtab_clicked(self, widget):
  77.         self.num = self.num + 1
  78.         self.newtablabel = Gtk.Label(self.num)
  79.         self.newpagelabel = Gtk.ScrolledWindow()
  80.         self.notebook.insert_page(self.newpagelabel, self.newtablabel, self.num)
  81.         self.scrolledwindow.add(self.webview)
  82.         print self.notebook.get_current_page()
  83.         print self.num
  84.         self.get_pages()
  85.         self.notebook.show_all()
  86.         self.show_all()
  87.        
  88.  
  89.     def on_backbutton_clicked(self, widget):
  90.         self.webview.go_back()
  91.  
  92.     def on_forwardbutton_clicked(self, widget):
  93.         self.webview.go_forward()
  94.  
  95.     def on_urlentry_activate(self, widget):
  96.         url = widget.get_text()
  97.         if ' ' in url:
  98.             url = 'https://www.google.ca/search?q=' + url
  99.             self.urlentry.set_text(url)
  100.         elif '.' not in url:
  101.             url = 'https://www.google.ca/search?q=' + url
  102.             self.urlentry.set_text(url)
  103.         elif not url.startswith('http'):
  104.             url = 'http://' + url
  105.             self.urlentry.set_text(url)
  106.  
  107.         self.webview.open(url)
  108.  
  109.     def on_title_changed(self, webview, frame, title):
  110.         self.set_title(title)
  111.  
  112.     def on_load_started(self, webview, frame):
  113.         print 'Loaded'
  114.  
  115.     def on_load_finished(self, webview, frame):
  116.         self.set_title(frame.get_title())
  117.         if self.webview.can_go_back():
  118.             self.backbutton.set_sensitive(True)
  119.         else:
  120.             self.backbutton.set_sensitive(False)
  121.  
  122.         if self.webview.can_go_forward():
  123.             self.forwardbutton.set_sensitive(True)
  124.         else:
  125.             self.forwardbutton.set_sensitive(False)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement