--- deliantra/Deliantra-Client/bin/cfplus 2006/06/06 02:55:50 1.60 +++ deliantra/Deliantra-Client/bin/cfplus 2006/06/08 01:51:32 1.65 @@ -239,13 +239,13 @@ my ($sw1, $sw2) = map +(new CFClient::UI::Combobox value => $_, options => [ - [Str => 1, "Strength ($conn->{stat}{+CS_STAT_STR})"], - [Dex => 2, "Dexterity ($conn->{stat}{+CS_STAT_DEX})"], - [Con => 3, "Constitution ($conn->{stat}{+CS_STAT_CON})"], - [Int => 4, "Intelligence ($conn->{stat}{+CS_STAT_INT})"], - [Wis => 5, "Wisdom ($conn->{stat}{+CS_STAT_WIS})"], - [Pow => 6, "Power ($conn->{stat}{+CS_STAT_POW})"], - [Cha => 7, "Charisma ($conn->{stat}{+CS_STAT_CHA})"], + [1 => "Str", "Strength ($conn->{stat}{+CS_STAT_STR})"], + [2 => "Dex", "Dexterity ($conn->{stat}{+CS_STAT_DEX})"], + [3 => "Con", "Constitution ($conn->{stat}{+CS_STAT_CON})"], + [4 => "Int", "Intelligence ($conn->{stat}{+CS_STAT_INT})"], + [5 => "Wis", "Wisdom ($conn->{stat}{+CS_STAT_WIS})"], + [6 => "Pow", "Power ($conn->{stat}{+CS_STAT_POW})"], + [7 => "Cha", "Charisma ($conn->{stat}{+CS_STAT_CHA})"], ], ), 1 .. 2; @@ -627,6 +627,33 @@ $win } +sub debug_setup { + my $table = new CFClient::UI::Table; + + $table->add (0, 0, new CFClient::UI::Label text => "Widget Borders"); + $table->add (1, 0, new CFClient::UI::CheckBox on_changed => sub { $ENV{CFPLUS_DEBUG} ^= 1 }); + $table->add (0, 1, new CFClient::UI::Label text => "Tooltip Widget Info"); + $table->add (1, 1, new CFClient::UI::CheckBox on_changed => sub { $ENV{CFPLUS_DEBUG} ^= 2 }); + $table->add (0, 2, new CFClient::UI::Label text => "Show FPS"); + $table->add (1, 2, new CFClient::UI::CheckBox on_changed => sub { $ENV{CFPLUS_DEBUG} ^= 4 }); + $table->add (0, 3, new CFClient::UI::Label text => "Suppress Tooltips"); + $table->add (1, 3, new CFClient::UI::CheckBox on_changed => sub { $ENV{CFPLUS_DEBUG} ^= 8 }); + + my @default_smooth = (0.05, 0.13, 0.05, 0.13, 0.30, 0.13, 0.05, 0.13, 0.05); + + for my $x (0..2) { + for my $y (0 .. 2) { + $table->add ($x + 3, $y, + new CFClient::UI::Entry + text => $default_smooth[$x * 3 + $y], + on_changed => sub { $MAP->{smooth_matrix}[$x * 3 + $y] = $_[1] if $MAP; 0 }, + ); + } + } + + + $table +} sub stats_window { my $tgw = new CFClient::UI::FancyFrame @@ -848,9 +875,19 @@ $table->clear; - my @col = qw(Use #Users Host Uptime Version Description); - $table->add ($_, 0, new CFClient::UI::Label align => 0, fg => [1, 1, 0], text => $col[$_]) - for 0 .. $#col; + my @tip = ( + "The current number of users logged in on the server.", + "The hostname of the server.", + "The time this server has been running without being restarted.", + "The server software version - a '+' indicates a Crossfire+ server.", + "Short information about this server provided by its admins.", + ); + my @col = qw(#Users Host Uptime Version Description); + $table->add ($_, 0, new CFClient::UI::Label + can_hover => 1, can_events => 1, + align => 0, fg => [1, 1, 0], + text => $col[$_], tooltip => $tip[$_]) + for 0 .. $#col; my @align = qw(1 0 1 1 -1); @@ -877,16 +914,26 @@ $y++; - $table->add (0, $y, new CFClient::UI::VBox children => [ - (new CFClient::UI::Button text => "Use", on_activate => sub { - $HOST_ENTRY->set_text ($CFG->{host} = $host); - $METASERVER->toggle_visibility; - }), + $table->add (scalar @$m, $y, new CFClient::UI::VBox children => [ + (new CFClient::UI::Button + text => "Use", + tooltip => "Put this server into the Host:Port field", + on_activate => sub { + $HOST_ENTRY->set_text ($CFG->{host} = $host); + $METASERVER->hide; + }, + ), (new CFClient::UI::Empty expand => 1), ]); - $table->add ($_ + 1, $y, new CFClient::UI::Label - ellipsise => 0, align => $align[$_], text => $m->[$_], fontsize => 0.8) + $table->add ($_, $y, new CFClient::UI::Label + ellipsise => 0, + align => $align[$_], + text => $m->[$_], + tooltip => $tip[$_], + can_hover => 1, + can_events => 1, + fontsize => 0.8) for 0 .. $#$m; } } @@ -895,18 +942,21 @@ sub metaserver_dialog { my $dialog = new CFClient::UI::FancyFrame - title => "Server List", - name => 'metaserver_dialog', - x => 'center', - y => 'center', - z => 3, - child => (my $vbox = new CFClient::UI::VBox), + title => "Server List", + name => 'metaserver_dialog', + x => 'center', + y => 'center', + z => 3, + force_h => $::HEIGHT * 0.4, + child => (my $vbox = new CFClient::UI::VBox), on_visibility_change => sub { update_metaserver if $_[1]; }, ; - $vbox->add ($dialog->{table} = new CFClient::UI::Table); + $dialog->{table} = new CFClient::UI::Table; + + $vbox->add (new CFClient::UI::ScrolledWindow expand => 1, child => $dialog->{table}); $dialog } @@ -939,6 +989,7 @@ other => $METASERVER, tooltip => "Show a list of available crossfire servers", on_activate => sub { $METASERVER->toggle_visibility }, + on_visibility_change => sub { $METASERVER->hide unless $_[1] }, ); } @@ -1174,12 +1225,14 @@ state => $CFG->{pickup} & $mask, on_changed => sub { my ($box, $value) = @_; + if ($value) { $::CFG->{pickup} |= $mask; } else { - $::CFG->{pickup} = $::CFG->{pickup} & ~$mask; + $::CFG->{pickup} &= ~$mask; } - $::CONN->send (sprintf "command pickup %u", $::CFG->{pickup}) + + $::CONN->send_command ("pickup $::CFG->{pickup}") if defined $::CONN; }); } @@ -1311,7 +1364,7 @@ $vb } -sub make_help_window { +sub help_window { my $win = new CFClient::UI::FancyFrame x => 'center', y => 'center', @@ -1324,33 +1377,40 @@ $win->add (my $vbox = new CFClient::UI::VBox); $vbox->add (my $buttons = new CFClient::UI::HBox); - $vbox->add (my $viewer = new CFClient::UI::TextView expand => 1, fontsize => 0.8); + $vbox->add (my $viewer = new CFClient::UI::TextScroller + expand => 1, fontsize => 0.8, padding_x => 4); - for ( - [intro => "Introduction"], - [manual => "Manual"], - [command_help => "Commands"], - [skill_help => "Skills"], - ) { - my ($pod, $label) = @$_; + $buttons->add (new CFClient::UI::Label text => "Choose a document to display: "); + $buttons->add (my $combo = new CFClient::UI::Combobox + value => undef, + options => [ + [intro => "Introduction"], + [manual => "Manual"], + [skill_help => "Skills"], + [command_help => "Commands"], + [dmcommand_help => "DM Commands"], + [COPYING => "License Terms"], + ], + on_changed => sub { + my ($self, $pod) = @_; - $buttons->add (new CFClient::UI::Button - text => $label, - on_activate => sub { - my $pom = CFClient::load_pod CFClient::find_rcfile "pod/$pod.pod", - doc_viewer => 1, sub { CFClient::pod_to_pango_list $_[0] }; + my $pom = CFClient::load_pod CFClient::find_rcfile "pod/$pod.pod", + doc_viewer => 1, sub { CFClient::pod_to_pango_list $_[0] }; - $viewer->clear; - - $viewer->add_paragraph ([1, 1, 1, 1], $_->[1], $_->[0]) - for @$pom; + $viewer->clear; + + $viewer->add_paragraph ([1, 1, 1, 1], $_->[1], $_->[0]) + for @$pom; - $viewer->set_offset (0); - }, - ); - } - - $viewer->add_paragraph ([1, 1, 0, 1], "Use one of the buttons above to display a document."); + $viewer->set_offset (0); + }, + on_visibility_change => sub { + my ($self, $visible) = @_; + return unless $visible; + return if $self->{value}; + $self->set_value ("intro"); + }, + ); $win } @@ -1437,10 +1497,11 @@ $MAPWIDGET->show; $MAPWIDGET->focus_in; - $LOGVIEW = new CFClient::UI::TextView + $LOGVIEW = new CFClient::UI::TextScroller expand => 1, font => $FONT_FIXED, fontsize => $::CFG->{log_fontsize}, + indent => -4, can_hover => 1, can_events => 1, tooltip => "Server Log. This text viewer contains all the messages sent by the server.", @@ -1476,6 +1537,8 @@ . "binding editor closes"); $SETUP_NOTEBOOK->add (Spells => $SETUP_SPELLS = spell_setup, "Displays all spells you have and lets you edit keyboard shortcuts for them."); + $SETUP_NOTEBOOK->add (Debug => debug_setup, + "Some debuggign options. Do not ask."); $BUTTONBAR = new CFClient::UI::Buttonbar x => 0, y => 0, z => 200; # put on top @@ -1503,7 +1566,7 @@ }, ); - $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => make_help_window, + $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => help_window, tooltip => "View Documentation"); $BUTTONBAR->add (new CFClient::UI::Button @@ -1774,6 +1837,7 @@ face_prefetch => 0, output_sync => 1, output_count => 1, + pickup => 0, ); while (my ($k, $v) = each %DEF_CFG) {