Package icaro-bloques :: Module navegador'
[hide private]
[frames] | no frames]

Source Code for Module icaro-bloques.navegador'

  1  #!/usr/bin/python 
  2  # -*- coding: utf-8 -*- 
  3   
  4  # This program is free software: you can redistribute it and/or modify 
  5  # it under the terms of the GNU General Public License as published by 
  6  # the Free Software Foundation, either version 3 of the License, or 
  7  # (at your option) any later version. 
  8  # 
  9  # This program is distributed in the hope that it will be useful, 
 10  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 12  # GNU General Public License for more details. 
 13   
 14  import sys, re 
 15  import gtk, gobject 
 16  import webkit 
 17  DEFAULT_URL = sys.path[0]+'/documentos/publican/manual_np05/tmp/es-ES/html/index.html' 
18 -class SimpleBrowser: # needs GTK, Python, Webkit-GTK
19 tam=1
20 - def __init__(self):
21 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) 22 self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS) 23 self.window.connect('delete_event', self.close_application) 24 self.window.set_default_size(750, 500) 25 vbox = gtk.VBox(spacing=5) 26 vbox.set_border_width(5) 27 self.txt_url = gtk.Entry() 28 self.txt_url.connect('activate', self._txt_url_activate) 29 #~ 30 # Genero una barra de herramientas 31 toolbar = gtk.HBox(spacing=5) 32 vbox.pack_start(toolbar,False,False) 33 #~ 34 # Agrego el boton "Atras" 35 self.btnback = gtk.Button() 36 self.btnback.add(gtk.Arrow(gtk.ARROW_LEFT,gtk.SHADOW_OUT)) 37 self.btnback.connect('clicked',self._go_back) 38 toolbar.pack_start(self.btnback,False,False) 39 # Agrego el boton de "Ir" 40 button = gtk.Button('Inicio') 41 button.connect('clicked',self._open_bar_url) 42 toolbar.pack_start(button,False,False) 43 # Agrego el boton "Adelante" 44 self.btnforward = gtk.Button() 45 self.btnforward.add(gtk.Arrow(gtk.ARROW_RIGHT,gtk.SHADOW_OUT)) 46 self.btnforward.connect('clicked',self._go_forward) 47 toolbar.pack_start(self.btnforward,False,False) 48 # Agrego el boton de "close" 49 button = gtk.Button('salir') 50 button.connect('clicked',self.close) 51 toolbar.pack_start(button,False,False) 52 # Agrego el boton de "zoom" 53 button = gtk.Button('Aumentar') 54 button.connect('clicked',self.zoom,1) 55 toolbar.pack_start(button,False,False) 56 button = gtk.Button('Disminuir') 57 button.connect('clicked',self.zoom,-1) 58 toolbar.pack_start(button,False,False) 59 #~ # Agrego el boton "Actualizar" 60 #~ btnrefresh = gtk.Button('Actualizar') 61 #~ btnrefresh.connect('clicked',self._refresh) 62 #~ toolbar.pack_start(btnrefresh,False,False) 63 #~ 64 #~ # Agrego la barra de direcciones 65 #~ self.text = gtk.Entry() 66 #~ self.text.connect('activate',self._open_bar_url) 67 #~ toolbar.pack_start(self.text,True,True) 68 #~ 69 70 71 # Agrego el renderer del motor 72 self.scrolled_window = gtk.ScrolledWindow() 73 self.webview = webkit.WebView() 74 self.scrolled_window.add(self.webview) 75 vbox.pack_start(self.scrolled_window, fill=True, expand=True) 76 self.window.add(vbox) 77 78 # Agrego un alinea de estado, con una etiqueta y una barra de progreso 79 self.pbar = gtk.ProgressBar() 80 self.status = gtk.Label() 81 hbox2 = gtk.HBox(False,0) 82 hbox2.pack_start(self.status,False,False) 83 hbox2.pack_end(self.pbar,False,False) 84 vbox.pack_start(hbox2,False,True) 85 86 # Defino las acciones a realizar segun los eventos del motor html 87 self.webview.connect('load-started',self._load_start) 88 self.webview.connect('load-progress-changed',self._load_progress_changed) 89 self.webview.connect('load-finished',self._load_finished) 90 self.webview.connect('title-changed',self._title_changed) 91 self.webview.connect('hovering-over-link',self._hover_link)
92
93 - def _open_bar_url(self, nada):
94 self.open(DEFAULT_URL)
95 - def _txt_url_activate(self, entry):
96 self._load(entry.get_text())
97 - def _load(self, url):
98 self.webview.open(url)
99 - def open(self, url):
100 # Si la url no tiene el http:// adelante, se lo agrego 101 #~ if url[0:7] != "http://": 102 #~ url = "http://"+url 103 self.txt_url.set_text(url) 104 self._load(url)
105 - def show(self):
106 self.window.show_all()
107
108 - def zoom(self,b,c):
109 self.tam +=c 110 self.webview.set_zoom_level(self.tam) 111 if self.tam<=0: 112 self.tam==0
113 - def close(self,arg):
114 #~ gtk.main_quit() 115 self.window.hide()
116 - def close_application(self, widget, event, data=None):
117 #~ gtk.main_quit() 118 self.window.hide()
119 - def _load_start(self, view, nadas):
120 self.status.set_text('Cargando...') 121 self.pbar.set_fraction(0)
122 - def _load_progress_changed(self, view, prog):
123 self.pbar.set_fraction(prog/100.0)
124 - def _load_finished(self, view, nada):
125 self.pbar.set_fraction(0) 126 self.status.set_text('Listo')
127 - def _go_back(self,nada):
128 self.webview.go_back()
129 - def _go_forward(self,nada):
130 self.webview.go_forward()
131 - def _refresh(self,nada):
132 self.webview.reload()
133 - def _title_changed(self,view,frame,title):
134 # Actualizo el titulo del navegador, la url en la barra de url y activo/desactivo los botones Adelante y Atras 135 self.window.set_title('%s' % title) 136 #self.text.set_text(frame.get_uri()) 137 self.btnback.props.sensitive = self.webview.can_go_back() 138 self.btnforward.props.sensitive = self.webview.can_go_forward()
145 146 #~ if __name__ == '__main__': 147 #~ if len(sys.argv) > 1: 148 #~ url = sys.argv[1] 149 #~ else: 150 #~ url = DEFAULT_URL 151 #~ gtk.gdk.threads_init() 152 #~ browser = SimpleBrowser() 153 #~ browser.open(url) 154 #~ browser.show() 155 #~ gtk.main() 156