Skip to content

Instantly share code, notes, and snippets.

@michvaldes001
Last active December 18, 2016 23:48
Show Gist options
  • Save michvaldes001/419ca507a5089eb739d6 to your computer and use it in GitHub Desktop.
Save michvaldes001/419ca507a5089eb739d6 to your computer and use it in GitHub Desktop.
Simple Python + GTK + Webkit browser V0.1
#!/usr/bin/env python
import gtk, webkit
#addressbar
def go_but(widget):
add = addressbar.get_text()
try:
add.index("://")
except:
add = "http://"+add
addressbar.set_text(add)
web_render.open(add)
#back button
def back_but(widget):
web_render.go_back()
#forward_button
def forward_but(widget):
web_render.go_forward()
#set window title
def new_title(view, frame, title):
win.set_title(title)
#update url in address bar
def on_click_link(view, frame):
uri = frame.get_uri()
addressbar.set_text(uri)
#create window
win = gtk.Window()
win.set_default_size(1024, 768)
win.connect('destroy', lambda w: gtk.main_quit())
box1 = gtk.VBox()
win.add(box1)
box2 = gtk.HBox()
box1.pack_start(box2, False)
backbutton = gtk.Button("<<")
box2.pack_start(backbutton, False)
backbutton.connect('clicked', back_but)
forwardbutton = gtk.Button(">>")
box2.pack_start(forwardbutton, False)
forwardbutton.connect('clicked', forward_but)
addressbar = gtk.Entry()
addressbar.connect('activate', go_but)
box2.pack_start(addressbar)
gobutton = gtk.Button("GO")
box2.pack_start(gobutton, False)
gobutton.connect('clicked', go_but)
scroller = gtk.ScrolledWindow()
box1.pack_start(scroller)
web_render = webkit.WebView()
web_render.open("https://www.google.com")
web_render.connect("title-changed", new_title)
web_render.connect("load-committed", on_click_link)
scroller.add(web_render)
win.show_all()
gtk.main()
#!/usr/bin/env python
import gtk, webkit
class browser_instance():
#addressbar
def go_but(self, widget):
self.add = self.addressbar.get_text()
try:
self.add.index("://")
except:
self.add = "http://"+ self.add
self.addressbar.set_text(self.add)
self.web_render.open(self.add)
#back button
def back_but(self, widget):
self.web_render.go_back()
#forward_button
def forward_but(self, widget):
self.web_render.go_forward()
#set window title
def new_title(self, view, frame, title):
self.win.set_title(title)
#update url in address bar
def on_click_link(self, view, frame):
self.uri = frame.get_uri()
self.addressbar.set_text(self.uri)
#render window
def __init__(self):
self.win = gtk.Window()
self.win.set_default_size(1024, 768)
self.win.connect('destroy', lambda w: gtk.main_quit())
self.box1 = gtk.VBox()
self.win.add(self.box1)
self.box2 = gtk.HBox()
self.box1.pack_start(self.box2, False)
self.backbutton = gtk.Button("<<")
self.box2.pack_start(self.backbutton, False)
self.backbutton.connect('clicked', self.back_but)
self.forwardbutton = gtk.Button(">>")
self.box2.pack_start(self.forwardbutton, False)
self.forwardbutton.connect('clicked', self.forward_but)
self.gobutton = gtk.Button("GO")
self.box2.pack_start(self.gobutton, False)
self.gobutton.connect('clicked', self.go_but)
self.addressbar = gtk.Entry()
self.addressbar.connect('activate', self.go_but)
self.box2.pack_start(self.addressbar)
self.scroller = gtk.ScrolledWindow()
self.box1.pack_start(self.scroller)
self.web_render = webkit.WebView()
self.web_render.open("https://www.google.com")
self.web_render.connect("title-changed", self.new_title)
self.web_render.connect("load-committed", self.on_click_link)
self.scroller.add(self.web_render)
self.win.show_all()
gtk.main()
browser_instance()
#!/usr/bin/env python
from gi.repository import Gtk, WebKit
class browser_instance():
#addressbar
def go_but(self, widget):
self.add = self.addressbar.get_text()
try:
self.add.index("://")
except:
self.add = "http://"+ self.add
self.addressbar.set_text(self.add)
self.web_render.open(self.add)
#back button
def back_but(self, widget):
self.web_render.go_back()
#forward_button
def forward_but(self, widget):
self.web_render.go_forward()
#set window title
def new_title(self, view, frame, title):
self.win.set_title(title)
#update url in address bar
def on_click_link(self, view, frame):
self.uri = frame.get_uri()
self.addressbar.set_text(self.uri)
#create bookmark button
def bookmark_but(self, widget):
self.bookmarks_box.append_text((self.addressbar.get_text()))
#go to link on bookmark list
def on_bookmarks_box_changed(self, combo):
active_link = combo.get_active_text()
print active_link
self.addressbar.set_text(active_link)
self.web_render.open(active_link)
#render window
def __init__(self):
self.win = Gtk.Window()
self.win.set_default_size(1024, 768)
self.win.connect('destroy', lambda w: Gtk.main_quit())
self.box1 = Gtk.VBox()
self.win.add(self.box1)
self.box2 = Gtk.HBox()
self.box1.pack_start(self.box2, False, False, 0)
self.backbutton = Gtk.Button("<<")
self.box2.pack_start(self.backbutton, False, False, 0)
self.backbutton.connect('clicked', self.back_but)
self.forwardbutton = Gtk.Button(">>")
self.box2.pack_start(self.forwardbutton, False, False, 0)
self.forwardbutton.connect('clicked', self.forward_but)
self.gobutton = Gtk.Button("GO")
self.box2.pack_start(self.gobutton, False, False, 0)
self.gobutton.connect('clicked', self.go_but)
self.addressbar = Gtk.Entry()
self.addressbar.connect('activate', self.go_but)
self.box2.pack_start(self.addressbar, True, True, 0)
self.bookmarkbutton = Gtk.Button("BOOKMARK")
self.box2.pack_start(self.bookmarkbutton, False, False, 0)
self.bookmarkbutton.connect('clicked', self.bookmark_but)
self.bookmarks_box = Gtk.ComboBoxText.new()
self.bookmarks_box.set_entry_text_column(20)
self.bookmarks_box.append_text("BOOKMARKS")
self.box2.pack_start(self.bookmarks_box, True, True, 0)
self.bookmarks_box.connect("changed", self.on_bookmarks_box_changed)
self.scroller = Gtk.ScrolledWindow()
self.box1.pack_start(self.scroller, True, True, 0)
#manage webkit
self.web_render = WebKit.WebView()
self.web_render.open("https://www.google.com")
self.web_render.connect("title-changed", self.new_title)
self.web_render.connect("load-committed", self.on_click_link)
self.scroller.add(self.web_render)
self.win.show_all()
Gtk.main()
#call browser_instance class
browser_instance()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment