--- 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',