Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- #
- # Instalar Gtk3 y Gtk3::WebKit por CPAN,para funcionar correctamente
- # Programa de prueba para Tiempo de Tux <http://www.itimetux.com>
- # Por Demianx864
- # Eres libre de estudiar modificar y añadir nuevas cosas a el programa,que te diviertas :D
- # Simple PerlBrowser 4.0
- # Gracias al modulo WebKit <http://webkitgtk.org/>
- #
- use strict;
- use feature ':5.14';
- use Glib qw/TRUE FALSE/;
- use Gtk3 -init;
- use Gtk3::WebKit;
- # Parametros de la ventana
- my $titulo = "Simple Perl Browser 3";
- my $ventana = Gtk3::Window->new('toplevel');
- $ventana->set_default_size(800, 600);
- $ventana->set_title($titulo);
- $ventana->set_border_width(5);
- $ventana->signal_connect (delete_event => \&salir );
- # Webkit
- my $uri = shift @ARGV || 'http://www.duckduckgo.com';
- my $ver = Gtk3::WebKit::WebView->new();
- # Cargamos url
- $ver->load_uri( $uri );
- $ver->signal_connect( 'notify::progress' => \&progreso, undef );
- $ver->signal_connect( 'notify::title' => \&titulo, undef );
- # Añadimos url a scrolls
- my $scrolls = Gtk3::ScrolledWindow->new();
- $scrolls->set_policy ('automatic', 'automatic');
- $scrolls->add($ver);
- # Entrada
- my $entry = Gtk3::Entry->new;
- $entry->signal_connect( "activate" => \&entrada, undef );
- # Botones
- my $brg = Gtk3::ToolButton->new_from_stock('gtk-quit');
- my $go = Gtk3::ToolButton->new_from_stock('gtk-find');
- my $fresh = Gtk3::ToolButton->new_from_stock('gtk-refresh');
- my $frenar = Gtk3::ToolButton->new_from_stock('gtk-stop');
- my $batras = Gtk3::ToolButton->new_from_stock('gtk-go-back');
- my $belante = Gtk3::ToolButton->new_from_stock('gtk-go-forward');
- my $vermenos = Gtk3::ToolButton->new_from_stock('gtk-zoom-in');
- my $vermas = Gtk3::ToolButton->new_from_stock('gtk-zoom-out');
- my $label = Gtk3::Label->new("");
- $go->signal_connect ( "clicked" => \&entrada, undef );
- $fresh->signal_connect ( "clicked" => \&recargar, undef );
- $frenar->signal_connect ( "clicked" => \¶r );
- $batras->signal_connect( "clicked" => \&atras );
- $belante->signal_connect ( "clicked" => \&adelante );
- $vermenos->signal_connect ( "clicked" => \&zomin );
- $vermas->signal_connect ( "clicked" => \&zomout);
- # Frenar y recargar unificados
- my $botones = Gtk3::Notebook->new();
- $botones->set_show_tabs(FALSE);
- $botones->set_show_border(FALSE);
- $botones->append_page($fresh);
- $botones->append_page($frenar);
- # Unimos todo
- # hbox
- my $hbox = Gtk3::Box->new("horizontal", 0);
- $hbox->pack_start($entry, TRUE,TRUE , 0);
- $hbox->pack_start($go, FALSE,FALSE , 0);
- $hbox->pack_start($label, FALSE,FALSE , 0);
- $hbox->pack_start($botones, FALSE,FALSE , 0);
- $hbox->pack_start($vermas, FALSE,FALSE , 0);
- $hbox->pack_start($vermenos, FALSE,FALSE , 0);
- $hbox->pack_start($batras, FALSE, FALSE, 0);
- $hbox->pack_start($belante, FALSE, FALSE, 0);
- # vbox
- my $vbox = Gtk3::Box->new("vertical", 0);
- $vbox->pack_start($hbox, FALSE, FALSE, 0);
- $vbox->pack_start($scrolls,TRUE, TRUE, 0);
- $ventana->add($vbox);
- # Lo mostramos
- $ventana->show_all();
- Gtk3->main();
- ### Funciones :) ###
- sub salir {
- say "Hasta luego";
- Gtk3->main_quit;
- return FALSE;
- }
- sub adelante{
- $ver->go_forward;
- &cargar();
- }
- sub atras{
- $ver->go_back;
- &cargar();
- }
- sub entrada{
- &cargar();
- my $uri = $entry->get_text;
- my $sbr = substr($uri,0,7);
- if ($sbr eq "http://") {
- $uri = $uri;
- }
- elsif($uri =~ /[.]/) {
- $uri = "http://$uri";
- }
- else {
- $uri = "http://www.google.com/search?q=$uri";
- }
- $ver->load_uri($uri);
- my $url_sitio = $ver->get_uri();
- $botones->set_current_page(1);
- }
- sub zomin { $ver->zoom_in }
- sub zomout { $ver->zoom_out }
- sub progreso{
- &cargar();
- my $ctitulo;
- my $carga = $ver->get('progress');
- my $url_sitio = $ver->get_uri();
- $entry->set_text("$url_sitio");
- for ( $ctitulo < 100 ) {
- my $ctitul = sprintf ("%2d%%", 100 * $carga);
- $ctitulo = chop($ctitul);
- $label->set_markup("$ctitul%");
- if ($ctitul == 100) {
- $botones->set_current_page(0);
- }
- }
- }
- sub titulo {
- my $titul2 = $ver->get_title();
- if ($titul2){ $ventana->set_title( $titul2 ) };
- }
- sub recargar {
- &cargar();
- $ver->reload;
- }
- sub parar {
- $ver->stop_loading;
- $botones->set_current_page(0);
- }
- sub cargar { $botones->set_current_page(1); }
- #........
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement