#!/usr/bin/perl

# Coded by Trizen
# Email: echo dHJpemVueEBnbWFpbC5jb20K | base64 -d
# Website: http://trizen.go.ro

use Gtk2 ('-init');
use Gtk2::WebKit;

@data = <DATA>;
$data = join('', @data);
$gui = 'Gtk2::Builder'->new;
$gui->add_from_string($data);
$gui->connect_signals(undef);
$win = $gui->get_object('window1');
$entry = $gui->get_object('entry1');
&create_browser;
&create_status;
$win->show_all;
$web_view->grab_focus;
&entry;
sub entry {
    $uri = $entry->get_text;
    $uri ||= 'http://google.com';
    if (not $uri =~ /\./ and $uri) {
        $uri = "http://www.google.com/search?q=$uri";
    }
    if (not $uri =~ /^http:/ and $uri =~ /.([\w]{2,4})/) {
        $uri = "http://$uri";
    }
    $web_view->open($uri);
    $entry->set_text($uri);
}
'Gtk2'->main;
sub create_browser {
    $sw = $gui->get_object('scrolledwindow1');
    $sw->set_policy('automatic', 'automatic');
    $sw->set_size_request(900, 500);
    $web_view = 'Gtk2::WebKit::WebView'->new;
    $web_view->signal_connect('notify::progress', \&notify_progress, undef);
    $web_view->signal_connect('hovering-over-link', \&hovering_over_link, undef);
    $sw->add($web_view);
    $web_view->stop_loading;
}
sub go_home {
    $web_view->open('http://google.com');
}
sub zoom_in {
    $web_view->zoom_in;
}
sub zoom_out {
    $web_view->zoom_out;
}
sub create_status {
    $statusbar = $gui->get_object('statusbar1');
    $status_context_id = $statusbar->get_context_id('Link Hover');
}
sub go_back {
    $web_view->go_back;
}
sub go_forward {
    $web_view->go_forward;
}
sub notify_load_status {
    
}
sub stop_loading {
    $web_view->stop_loading;
}
sub refresh {
    $web_view->reload;
}
sub notify_progress {
    $load_progress = $web_view->get('progress');
    $wtitle = Gtk2::WebKit::WebView::get_title($web_view);
    my $title = sprintf('Progress: %2d%%', 100 * $load_progress);
    $win->set_title("$wtitle - $title");
    $url = $web_view->get_uri;
    $entry->set_text($url);
}
sub hovering_over_link {
    my($hash, undef, $link) = @_;
    if (defined $link) {
        $statusbar->pop($status_context_id);
        $statusbar->push($status_context_id, $link);
    }
}
sub destroy {
    'Gtk2'->main_quit;
}
__DATA__
<?xml version="1.0"?>
<interface>
  <requires lib="gtk+" version="2.16"/>
  <!-- interface-naming-policy project-wide -->
  <object class="GtkWindow" id="window1">
    <property name="window_position">mouse</property>
    <property name="icon_name">applications-internet</property>
    <signal name="destroy" handler="destroy"/>
    <child>
      <object class="GtkVPaned" id="vpaned1">
        <property name="visible">True</property>
        <property name="can_focus">True</property>
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkHBox" id="hbox1">
            <property name="visible">True</property>
            <child>
              <object class="GtkButton" id="button1">
                <property name="label">gtk-go-back</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="relief">none</property>
                <property name="use_stock">True</property>
                <signal name="clicked" handler="go_back"/>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="button2">
                <property name="label">gtk-go-forward</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="relief">none</property>
                <property name="use_stock">True</property>
                <property name="image_position">right</property>
                <signal name="clicked" handler="go_forward"/>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">1</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="button8">
                <property name="label">gtk-home</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="relief">none</property>
                <property name="use_stock">True</property>
                <signal name="clicked" handler="go_home"/>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">2</property>
              </packing>
            </child>
            <child>
              <object class="GtkEntry" id="entry1">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="invisible_char">&#x2022;</property>
                <signal name="activate" handler="entry"/>
              </object>
              <packing>
                <property name="position">3</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="button3">
                <property name="label">gtk-ok</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="relief">none</property>
                <property name="use_stock">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">4</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="button7">
                <property name="label">gtk-refresh</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="relief">none</property>
                <property name="use_stock">True</property>
                <signal name="clicked" handler="refresh"/>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">5</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="button6">
                <property name="label">gtk-media-stop</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="relief">none</property>
                <property name="use_stock">True</property>
                <signal name="clicked" handler="stop_loading"/>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">6</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="button4">
                <property name="label">gtk-zoom-in</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="relief">none</property>
                <property name="use_stock">True</property>
                <property name="xalign">0.41999998688697815</property>
                <property name="yalign">0.43000000715255737</property>
                <signal name="clicked" handler="zoom_in"/>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">7</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="button5">
                <property name="label">gtk-zoom-out</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="relief">none</property>
                <property name="use_stock">True</property>
                <signal name="clicked" handler="zoom_out"/>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">8</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="resize">False</property>
            <property name="shrink">True</property>
          </packing>
        </child>
        <child>
          <object class="GtkVBox" id="vbox1">
            <property name="visible">True</property>
            <property name="orientation">vertical</property>
            <child>
              <object class="GtkScrolledWindow" id="scrolledwindow1">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="hscrollbar_policy">automatic</property>
                <property name="vscrollbar_policy">automatic</property>
                <child>
                  <placeholder/>
                </child>
              </object>
              <packing>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkStatusbar" id="statusbar1">
                <property name="visible">True</property>
                <property name="spacing">2</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="position">1</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="resize">True</property>
            <property name="shrink">True</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

