Added Go Home functionality, revised the status bar to give request status, and moved the current url to be reported in the window (tab) title.
This commit is contained in:
parent
aa985bdddf
commit
745ac8605a
@ -4,9 +4,9 @@
|
|||||||
# This program uses telnet instead of nc to make nex requests, because I couldn't get the Perl nc module to work right.
|
# This program uses telnet instead of nc to make nex requests, because I couldn't get the Perl nc module to work right.
|
||||||
|
|
||||||
#TODO: Some branding (status popup on load?, Connex menu item?), About dialog
|
#TODO: Some branding (status popup on load?, Connex menu item?), About dialog
|
||||||
#TODO: Fill out help Dialog
|
#TODO: Fill out help Dialog, mention vi navigatio and search
|
||||||
#TODO: Fill out About Dialog
|
#TODO: Fill out About Dialog
|
||||||
#Make status dialog actually useful
|
#TODO:Make status dialog actually useful
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -35,6 +35,13 @@ my $port = $PORT_DEFAULT;
|
|||||||
my $pathspec = $PATHSPEC_DEFAULT;
|
my $pathspec = $PATHSPEC_DEFAULT;
|
||||||
my $docname; # = "";
|
my $docname; # = "";
|
||||||
|
|
||||||
|
|
||||||
|
#new status bar purpose, tracking state
|
||||||
|
my $S_REQUESTING = "Requesting...";
|
||||||
|
my $S_READY= " Ready";
|
||||||
|
my $S_DIDNT= "(page not requested) " . $S_READY;
|
||||||
|
my $S_NORESPONSE ="(No Response) " . $S_READY;
|
||||||
|
|
||||||
#for future use, when you think you can deal with doc types
|
#for future use, when you think you can deal with doc types
|
||||||
my $doctype = "txt";
|
my $doctype = "txt";
|
||||||
my $dot_ext = ".";
|
my $dot_ext = ".";
|
||||||
@ -55,7 +62,8 @@ if (defined $full_url){
|
|||||||
if ($uri->scheme ne $SCHEME_NEX){
|
if ($uri->scheme ne $SCHEME_NEX){
|
||||||
die "Need a $SCHEME_NEX url, or start without supplying URL argument.\n";
|
die "Need a $SCHEME_NEX url, or start without supplying URL argument.\n";
|
||||||
}
|
}
|
||||||
$full_url= $uri->as_string;
|
$full_url= $uri->as_string;
|
||||||
|
$HOME_URL = $full_url; #TODO make sure you want to do this, mostly go home and other defaults will go here instead o nightfall.city
|
||||||
}else{
|
}else{
|
||||||
$full_url = $HOME_URL;
|
$full_url = $HOME_URL;
|
||||||
}
|
}
|
||||||
@ -80,7 +88,8 @@ my @menu = (
|
|||||||
{ -label => 'Choose Link >', -value => \&goto_link_dialog },
|
{ -label => 'Choose Link >', -value => \&goto_link_dialog },
|
||||||
{ -label => 'Back ^B/<', -value => \&goto_back },
|
{ -label => 'Back ^B/<', -value => \&goto_back },
|
||||||
{ -label => 'Go to Link ^G', -value => \&navigate_link_dialog },
|
{ -label => 'Go to Link ^G', -value => \&navigate_link_dialog },
|
||||||
{ -label => 'Page Links ^P', -value => \&page_links_dialog },
|
{ -label => 'Go Home ^M', -value => \&goto_home },
|
||||||
|
{ -label => 'Page Links ^P', -value => \&page_links_dialog },
|
||||||
{ -label => 'History ^Y', -value => \&history_status_dialog },
|
{ -label => 'History ^Y', -value => \&history_status_dialog },
|
||||||
{ -label => 'Exit ^Q', -value => \&exit_dialog }
|
{ -label => 'Exit ^Q', -value => \&exit_dialog }
|
||||||
]
|
]
|
||||||
@ -141,7 +150,6 @@ sub navigate_link_dialog()
|
|||||||
#if not user canceled then navigate
|
#if not user canceled then navigate
|
||||||
if($return){
|
if($return){
|
||||||
navigate($return);
|
navigate($return);
|
||||||
update_status_bar();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,8 +162,8 @@ sub goto_link_dialog()
|
|||||||
if($return){
|
if($return){
|
||||||
my $linkcount = scalar @page_links;
|
my $linkcount = scalar @page_links;
|
||||||
if($return <= $linkcount && $return >0){
|
if($return <= $linkcount && $return >0){
|
||||||
|
update_status($S_REQUESTING);
|
||||||
goto_link($return);
|
goto_link($return);
|
||||||
update_status_bar();
|
|
||||||
}else{
|
}else{
|
||||||
#$browser->focus();
|
#$browser->focus();
|
||||||
my $return1 = $cui->status("there is no link # " . $return);
|
my $return1 = $cui->status("there is no link # " . $return);
|
||||||
@ -174,14 +182,28 @@ sub goto_back()
|
|||||||
my $fetched = fetch_history();
|
my $fetched = fetch_history();
|
||||||
#if($fetched) {
|
#if($fetched) {
|
||||||
$full_url =$fetched;
|
$full_url =$fetched;
|
||||||
|
update_status($S_REQUESTING);
|
||||||
load($full_url,0); #don't move back to top
|
load($full_url,0); #don't move back to top
|
||||||
update_status_bar();
|
|
||||||
history_status_dialog();
|
history_status_dialog();
|
||||||
#}
|
#}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#let's consider home to be the first item in the history
|
||||||
|
sub goto_home()
|
||||||
|
{
|
||||||
|
if(@history) {
|
||||||
|
$full_url = $history[0]; #peek at first item
|
||||||
|
}else{
|
||||||
|
$full_url=$HOME_URL;
|
||||||
|
}
|
||||||
|
update_status($S_REQUESTING);
|
||||||
|
load($full_url,0); #don't move back to top
|
||||||
|
history_status_dialog();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sub goto_link{
|
sub goto_link{
|
||||||
my $linknum = shift;
|
my $linknum = shift;
|
||||||
@ -205,23 +227,37 @@ sub navigate{
|
|||||||
my $link = shift;
|
my $link = shift;
|
||||||
add_history($full_url); #add last link to history before going forward!
|
add_history($full_url); #add last link to history before going forward!
|
||||||
$full_url = $link;
|
$full_url = $link;
|
||||||
load($full_url, 1); #new URL go to top of page
|
update_status($S_REQUESTING);
|
||||||
|
load($full_url, 1); #new URL go to top of page
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub update_status_bar
|
sub update_status_bar
|
||||||
{
|
{
|
||||||
|
my $status = shift;
|
||||||
my $browser = $win1->getobj("browser");
|
my $browser = $win1->getobj("browser");
|
||||||
my $statusbar = $win1->getobj("status");
|
my $statusbar = $win1->getobj("status");
|
||||||
#$full_url = construct_valid_url($SCHEME_NEX, $host, $pathspec, $docname);
|
$statusbar->text($status . " | Press '>' key to enter link #. ctl-x for Menu. '<' to go back.");
|
||||||
$statusbar->text("$full_url" . " | Press '>' key to enter link #. ctl-x for Menu. '<' to go back.");
|
|
||||||
$statusbar->draw();
|
$statusbar->draw();
|
||||||
$browser->focus();
|
$browser->focus();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub update_browser_tab
|
||||||
|
{
|
||||||
|
my $browser = $win1->getobj("browser");
|
||||||
|
$browser->title("$full_url");
|
||||||
|
$browser->draw();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub update_status
|
||||||
|
{
|
||||||
|
my $status = shift;
|
||||||
|
update_status_bar($status);
|
||||||
|
update_browser_tab();
|
||||||
|
}
|
||||||
|
|
||||||
sub add_history
|
sub add_history
|
||||||
{
|
{
|
||||||
@ -367,6 +403,7 @@ $cui->set_binding( \&navigate_link_dialog , "\cG");
|
|||||||
$cui->set_binding( \&goto_back , "\cB");
|
$cui->set_binding( \&goto_back , "\cB");
|
||||||
$cui->set_binding( \&goto_back , "<");
|
$cui->set_binding( \&goto_back , "<");
|
||||||
$cui->set_binding( \&goto_link_dialog , ">");
|
$cui->set_binding( \&goto_link_dialog , ">");
|
||||||
|
$cui->set_binding( \&goto_home , "\cM");
|
||||||
$cui->set_binding( \&page_links_dialog , "\cP");
|
$cui->set_binding( \&page_links_dialog , "\cP");
|
||||||
$cui->set_binding( \&history_status_dialog , "\cY");
|
$cui->set_binding( \&history_status_dialog , "\cY");
|
||||||
$cui->set_binding( \&help_dialog , "\cH");
|
$cui->set_binding( \&help_dialog , "\cH");
|
||||||
@ -442,6 +479,9 @@ sub load
|
|||||||
my $top = shift;
|
my $top = shift;
|
||||||
#my $scheme, $host, $path, $query, $frag;
|
#my $scheme, $host, $path, $query, $frag;
|
||||||
my ($scheme, $host, $path, $query, $frag) = uri_split($url);
|
my ($scheme, $host, $path, $query, $frag) = uri_split($url);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#what happens with different scheme?
|
#what happens with different scheme?
|
||||||
if ($scheme eq $SCHEME_NEX){
|
if ($scheme eq $SCHEME_NEX){
|
||||||
#A lot of trial and error here, connect->print of path was somehow important to get output to complete...
|
#A lot of trial and error here, connect->print of path was somehow important to get output to complete...
|
||||||
@ -476,6 +516,12 @@ sub load
|
|||||||
if ($top){
|
if ($top){
|
||||||
$widget->pos(0);
|
$widget->pos(0);
|
||||||
}
|
}
|
||||||
|
if ($page_contents eq ''){
|
||||||
|
update_status($S_NORESPONSE);
|
||||||
|
}else{
|
||||||
|
update_status($S_READY);
|
||||||
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
#can't load non-nex as of now
|
#can't load non-nex as of now
|
||||||
my $browser = $win1->getobj("browser");
|
my $browser = $win1->getobj("browser");
|
||||||
@ -484,6 +530,7 @@ sub load
|
|||||||
#pop and revert to history for display
|
#pop and revert to history for display
|
||||||
#my $fetched = fetch_history();
|
#my $fetched = fetch_history();
|
||||||
$full_url = fetch_history();
|
$full_url = fetch_history();
|
||||||
|
update_status($S_DIDNT);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user