diff --git a/connex.pl b/connex.pl index 29618fd..cd5966f 100755 --- a/connex.pl +++ b/connex.pl @@ -16,8 +16,6 @@ my $PATHSPEC_DEFAULT = ''; my $PORT_DEFAULT = 1900; my $SCHEME_NEX = "nex"; -my $home_default= $SCHEME_NEX . $HOST_DEFAULT; - my $host = "nightfall.city"; my $port = "1900"; my $pathspec = ""; @@ -28,7 +26,17 @@ my $dot_ext = "."; my $HOME_URL = uri_join($SCHEME_NEX,$HOST_DEFAULT); -my $full_url = $HOME_URL; +#if argument entered, it should be a nex url: +my $full_url= $ARGV[0]; +if (defined $full_url){ + my $uri=URI->new($full_url, $SCHEME_NEX); + if ($uri->scheme ne $SCHEME_NEX){ + die "need a $SCHEME_NEX url, or start without supplying URL argument.\n"; + } + $full_url= $uri->as_string; +}else{ + $full_url = $HOME_URL; +} my @history; my @page_links; @@ -42,14 +50,20 @@ my $connect = new Net::Telnet (Timeout => 10, my @menu = ( { -label => 'File', -submenu => [ - { -label => 'Go to Link ^G', -value => \&navigate_link_dialog }, - { -label => 'Choose Link >', -value => \&goto_link_dialog }, - { -label => 'Back ^B', -value => \&goto_back }, - { -label => 'History ^H', -value => \&history_status_dialog }, - { -label => 'Page Links ^P', -value => \&page_links_dialog }, - { -label => 'Exit ^Q', -value => \&exit_dialog } + { -label => 'Choose Link >', -value => \&goto_link_dialog }, + { -label => 'Back ^B/<', -value => \&goto_back }, + { -label => 'Go to Link ^G', -value => \&navigate_link_dialog }, + { -label => 'Page Links ^P', -value => \&page_links_dialog }, + { -label => 'History ^Y', -value => \&history_status_dialog }, + { -label => 'Exit ^Q', -value => \&exit_dialog } ] }, + { -label => 'Help', + -submenu => [ + { -label => 'Help ^H', -value => \&help_dialog }, + { -label => 'About ', -value => \&about_dialog }, + ] + }, ); @@ -170,7 +184,7 @@ sub update_status_bar my $browser = $win1->getobj("browser"); my $statusbar = $win1->getobj("status"); #$full_url = construct_valid_url($SCHEME_NEX, $host, $pathspec, $docname); - $statusbar->text("$full_url" . " | Press '>' key to enter link #. ctl-g to enter nex URL. '<' to go back."); + $statusbar->text("$full_url" . " | Press '>' key to enter link #. ctl-x for Menu. '<' to go back."); $statusbar->draw(); $browser->focus(); @@ -238,7 +252,34 @@ sub page_links_list } } +sub about_dialog +{ + my $browser = $win1->getobj("browser"); + $browser->focus(); + my $return = $cui->status("Connex browser\n by gorf\@rawtext.club\n 2024"); +} +sub help_dialog +{ + my $browser = $win1->getobj("browser"); + $browser->focus(); + my $message = <<'END_MESSAGE'; +Navigation: +Press '>' key to select a '[>#]link by # +Press '<' key to go back to previous page + +Program Features: +Press ctl-x for menu +END_MESSAGE + + my $return = $cui->dialog( + -message => $message, + -title => "Connex Help", + -buttons => ['ok'], + + ); + +} my $menu = $cui->add( 'menu','Menubar', @@ -249,6 +290,7 @@ my $menu = $cui->add( $win1 = $cui->add( 'win1', 'Window', + -title => "Connex, a Nightfall Express (nex://) browser", -border => 1, -y => 1, -bfg => 'red', @@ -280,12 +322,10 @@ $statusbar = $win1->add("status", "TextViewer", -width => -1, -reverse => 1, -paddingspaces => 1, - -text => "$HOME_URL | Press '>' key to enter link #. ctl-g to enter nex URL. '<' to go back.", + -text => "$full_url | Press '>' key to enter link #; ctl-x for menu; '<' to go back.", ); - - #key bindings, should match menu items $cui->set_binding(sub {$menu->focus()}, "\cX"); $cui->set_binding( \&exit_dialog , "\cQ"); @@ -293,6 +333,9 @@ $cui->set_binding( \&navigate_link_dialog , "\cG"); $cui->set_binding( \&goto_back , "\cB"); $cui->set_binding( \&goto_back , "<"); $cui->set_binding( \&goto_link_dialog , ">"); +$cui->set_binding( \&page_links_dialog , "\cP"); +$cui->set_binding( \&history_status_dialog , "\cY"); +$cui->set_binding( \&help_dialog , "\cH"); $cui->set_binding(sub { my $cui = shift; $cui->layout; @@ -304,12 +347,12 @@ $cui->set_binding(sub { # There is no need for the editor widget to loose focus, so # the "loose-focus" binding is disabled here. This also enables the # use of the "TAB" key in the editor, which is nice to have. -$texteditor->clear_binding('loose-focus'); +#$texteditor->clear_binding('loose-focus'); #start up -#$texteditor->focus(); +$texteditor->focus(); -navigate($HOME_URL); +navigate($full_url); $cui->mainloop();