Exemple #1
0
class App(object):
	script = __file__
	def __init__(self, runner):
		self.quitting = False
		self.runner = runner
		self.mainloop = Main(delegate=self, queue=runner.queue)
		gtk.gdk.threads_init()
		thread.start_new_thread(gtk.main, ())
		self.do(self.init_gtk)
		self.mainloop.run()
	
	def exit(self): # called by main thread
		if self.quitting:
			return # we already know!
		self.do(self.quit)
		self.do(lambda _=None: gtk.main_quit())
	
	def do(self, func, arg=None):
		gobject.idle_add(func, arg)
	
	def update(self, page=None):
		def _update(page=None):
			if page is None:
				page = self.mainLoop.page
			self.browser.load_html_string(str(page), "file://" + (os.path.dirname(__file__)))
		self.do(_update, page)
	
	def _navigation_requested_cb(self, view, frame, networkRequest):
		url = networkRequest.get_uri()
		opener = os.environ.get('EDITOR', 'gnome-open')
		if not urlparse.editable_file(url):
			return 0
		path, line = urlparse.path_and_line_from(url)
		subprocess.Popen([opener, path])
		# return 1 to stop any other handlers running
		return 1

	def quit(self, _=None):
		self.quitting = True
		self.runner.terminate()

	def init_gtk(self, _):
		self.window = gtk.Window()
		self.window.set_title("Autonose")
		
		scrollView = gtk.ScrolledWindow()
		self.browser = webkit.WebView()
		self.browser.connect('navigation_requested', self._navigation_requested_cb)
		scrollView.add(self.browser)

		self.window.set_default_size(800, 600)
		self.window.connect('destroy', self.quit)

		self.window.add(scrollView)
		self.update("<h1>loading...</h1>")
		self.window.show_all()
Exemple #2
0
	def __init__(self, runner):
		self.quitting = False
		self.runner = runner
		self.mainloop = Main(delegate=self, queue=runner.queue)
		gtk.gdk.threads_init()
		thread.start_new_thread(gtk.main, ())
		self.do(self.init_gtk)
		self.mainloop.run()