--- deliantra/Deliantra-Client/bin/cfplus 2006/08/13 14:30:07 1.109 +++ deliantra/Deliantra-Client/bin/cfplus 2006/08/14 03:41:29 1.115 @@ -157,7 +157,7 @@ sub server_query { my ($conn, $flags, $prompt) = @_; - $conn->{query_dialog} = my $dialog = new CFPlus::UI::FancyFrame + $conn->{query_dialog} = my $dialog = new CFPlus::UI::Toplevel x => "center", y => "center", title => "Server Query", @@ -665,14 +665,19 @@ ); $r->add (my $vb = new CFPlus::UI::VBox); - $vb->add ($STATWIDS->{title} = new CFPlus::UI::Label valign => 0, align => -1, text => "Title:", expand => 1, + $vb->add (new CFPlus::UI::FancyFrame + label => "Player", + child => (my $pi = new CFPlus::UI::VBox), + ); + + $pi->add ($STATWIDS->{title} = new CFPlus::UI::Label valign => 0, align => -1, text => "Title:", expand => 1, can_hover => 1, can_events => 1, tooltip => "Your name and title. You can change your title by using the title command, if supported by the server."); - $vb->add ($STATWIDS->{map} = new CFPlus::UI::Label valign => 0, align => -1, text => "Map:", expand => 1, + $pi->add ($STATWIDS->{map} = new CFPlus::UI::Label valign => 0, align => -1, text => "Map:", expand => 1, can_hover => 1, can_events => 1, tooltip => "The map you are currently on (if supported by the server)."); - $vb->add (my $hb0 = new CFPlus::UI::HBox); + $pi->add (my $hb0 = new CFPlus::UI::HBox); $hb0->add ($STATWIDS->{weight} = new CFPlus::UI::Label valign => 0, align => -1, text => "Weight:", expand => 1, can_hover => 1, can_events => 1, tooltip => "The weight of the player including all inventory items."); @@ -680,7 +685,10 @@ can_hover => 1, can_events => 1, tooltip => "The weight limit: you cannot carry more than this."); - $vb->add (my $hb = new CFPlus::UI::HBox expand => 1); + $vb->add (new CFPlus::UI::FancyFrame + label => "Primary/Secondary Statistics", + child => (my $hb = new CFPlus::UI::HBox expand => 1), + ); $hb->add (my $tbl = new CFPlus::UI::Table expand => 1); my $color2 = [1, 1, 0]; @@ -711,7 +719,10 @@ align => -1, text => $label, tooltip => "#stat_$label"); } - $vb->add (my $tbl2 = new CFPlus::UI::Table expand => 1); + $vb->add (new CFPlus::UI::FancyFrame + label => "Resistancies", + child => (my $tbl2 = new CFPlus::UI::Table expand => 1), + ); my $row = 0; my $col = 0; @@ -915,7 +926,7 @@ my $table = new CFPlus::UI::Table; $vbox->add (new CFPlus::UI::ScrolledWindow expand => 1, child => $table); - my $dialog = new CFPlus::UI::FancyFrame + my $dialog = new CFPlus::UI::Toplevel title => "Server List", name => 'metaserver_dialog', x => 'center', @@ -937,7 +948,10 @@ sub server_setup { my $vbox = new CFPlus::UI::VBox; - $vbox->add (my $table = new CFPlus::UI::Table expand => 1, col_expand => [0, 1]); + $vbox->add (new CFPlus::UI::FancyFrame + label => "Connection Settings", + child => (my $table = new CFPlus::UI::Table expand => 1, col_expand => [0, 1]), + ); $table->add (0, 2, new CFPlus::UI::Label valign => 0, align => 1, text => "Host:Port"); { @@ -1042,20 +1056,16 @@ } ); - $vbox->add (new CFPlus::UI::Label - text => "Server Info", - fontsize => 1.2, - padding_y => 8, - fg => [1, 1, 0, 1], + $vbox->add (new CFPlus::UI::FancyFrame + label => "Server Info", + child => ($SERVER_INFO = new CFPlus::UI::Label ellipsise => 0), ); - $vbox->add ($SERVER_INFO = new CFPlus::UI::Label ellipsise => 0); - $vbox } sub message_window { - my $window = new CFPlus::UI::FancyFrame + my $window = new CFPlus::UI::Toplevel name => "message_window", title => "Messages", border_bg => [1, 1, 1, 1], @@ -1119,7 +1129,7 @@ sub open_string_query { my $cb = $_[1]; - my $dialog = new CFPlus::UI::FancyFrame + my $dialog = new CFPlus::UI::Toplevel x => "center", y => "center", z => 50, @@ -1138,7 +1148,7 @@ sub open_quit_dialog { unless ($QUIT_DIALOG) { - $QUIT_DIALOG = new CFPlus::UI::FancyFrame + $QUIT_DIALOG = new CFPlus::UI::Toplevel x => "center", y => "center", z => 50, @@ -1337,7 +1347,7 @@ } sub player_window { - my $plwin = $PL_WINDOW = new CFPlus::UI::FancyFrame + my $plwin = $PL_WINDOW = new CFPlus::UI::Toplevel x => "center", y => "center", force_w => $WIDTH * 9/10, @@ -1436,7 +1446,10 @@ }; my $vb = new CFPlus::UI::VBox; - $vb->add (my $hb = new CFPlus::UI::HBox); + $vb->add (new CFPlus::UI::FancyFrame + label => "Options", + child => (my $hb = new CFPlus::UI::HBox), + ); $hb->add (new CFPlus::UI::Label text => "only shift-up stops fire"); $hb->add (new CFPlus::UI::CheckBox expand => 1, @@ -1448,7 +1461,9 @@ 0 }); - $vb->add ($binding_list); + $vb->add (new CFPlus::UI::FancyFrame + label => "Bindings", + child => $binding_list); $vb->add (my $hb = new CFPlus::UI::HBox); $hb->add (new CFPlus::UI::Button @@ -1491,7 +1506,7 @@ } sub help_window { - my $win = new CFPlus::UI::FancyFrame + my $win = new CFPlus::UI::Toplevel x => 'center', y => 'center', z => 2, @@ -1503,38 +1518,80 @@ $win->add (my $vbox = new CFPlus::UI::VBox); - $vbox->add (my $buttons = new CFPlus::UI::HBox); + $vbox->add (new CFPlus::UI::FancyFrame + label => "Navigation", + child => (my $buttons = new CFPlus::UI::HBox), + ); $vbox->add (my $viewer = new CFPlus::UI::TextScroller - expand => 1, fontsize => 0.8, padding_x => 4); + expand => 1, fontsize => 0.8, padding_x => 4, padding_y => 4); - $buttons->add (new CFPlus::UI::Label text => "Choose a document to display: "); - $buttons->add (my $combo = new CFPlus::UI::Selector - value => undef, - options => [ - [intro => "Introduction"], - [manual => "Main Manual"], - [skill_help => "Skill Reference"], - [command_help => "Command Reference"], - [dmcommand_help => "DM Commands"], - [COPYING => "License Terms"], - ], - on_changed => sub { - my ($self, $pod) = @_; + my @history; + my @future; + my $curnode; - $viewer->clear; - $viewer->add_paragraph (CFPlus::Pod::section pod => $pod); - $viewer->set_offset (0); + my $load_node; $load_node = sub { + my ($node, $para) = @_; - 0 - }, - on_visibility_change => sub { - my ($self, $visible) = @_; - return unless $visible; - return if $self->{value}; - $self->set_value ("intro"); - 0 - }, - ); + $buttons->clear; + + if (@history) { + $buttons->add (new CFPlus::UI::Button + text => "⋘", + tooltip => "back to " . (CFPlus::asxml CFPlus::Pod::full_path $history[-1]) . "", + on_activate => sub { + unshift @future, [$curnode, $viewer->current_paragraph] if $curnode; + $load_node->(@{pop @history}); + }, + ); + } + + if (@future) { + $buttons->add (new CFPlus::UI::Button + text => "⋙", + tooltip => "forward to " . (CFPlus::asxml CFPlus::Pod::full_path $future[0]) . "", + on_activate => sub { + push @history, [$curnode, $viewer->current_paragraph]; + $load_node->(@{shift @future}); + }, + ); + } + + $buttons->add (new CFPlus::UI::Label text => " "); + + my @path = CFPlus::Pod::full_path_of $node; + pop @path; # drop current node + + for my $node (@path) { + $buttons->add (new CFPlus::UI::Button + text => $node->{kw}[0], + tooltip => "go to " . (CFPlus::asxml CFPlus::Pod::full_path $node) . "", + on_activate => sub { + push @history, [$curnode, $viewer->current_paragraph] if $curnode; @future = (); + $load_node->($node); + }, + ); + $buttons->add (new CFPlus::UI::Label text => "/"); + } + + $buttons->add (new CFPlus::UI::Label text => $node->{kw}[0], padding_x => 4, padding_y => 4); + + $curnode = $node; + + $viewer->clear; + $viewer->add_paragraph (CFPlus::Pod::as_paragraphs CFPlus::Pod::section_of $curnode); + $viewer->scroll_to ($para); + }; + + $load_node->(CFPlus::Pod::find pod => "mainpage"); + + $CFPlus::Pod::goto_document = sub { + my (@path) = @_; + + push @history, [$curnode, $viewer->current_paragraph] if $curnode; @future = (); + + $load_node->(CFPlus::Pod::find @path); + $win->show; + }; $win } @@ -1593,7 +1650,7 @@ child => $STATUSBOX, )->show; - CFPlus::UI::FancyFrame->new ( + CFPlus::UI::Toplevel->new ( title => "Map", name => "mapmap", x => 0, @@ -1631,7 +1688,7 @@ tooltip => "Server Log. This text viewer contains all the messages sent by the server.", ; - $SETUP_DIALOG = new CFPlus::UI::FancyFrame + $SETUP_DIALOG = new CFPlus::UI::Toplevel title => "Setup", name => "setup_dialog", x => 'center',