ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/UI.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC/UI.pm (file contents):
Revision 1.222 by root, Mon May 22 03:59:51 2006 UTC vs.
Revision 1.225 by root, Tue May 23 21:14:41 2006 UTC

209sub show { 209sub show {
210 my ($self) = @_; 210 my ($self) = @_;
211 return if $self->{parent}; 211 return if $self->{parent};
212 212
213 $CFClient::UI::ROOT->add ($self); 213 $CFClient::UI::ROOT->add ($self);
214}
215
216sub show_centered {
217 my ($self) = @_;
218 return if $self->{parent};
219
220 $self->show;
221
222 $CFClient::UI::ROOT->on_post_alloc (
223 "centered $self" => sub {
224 $self->move (($::WIDTH - $self->{w}) * 0.5, ($::HEIGHT - $self->{h}) * 0.5);
225 },
226 );
214} 227}
215 228
216sub hide { 229sub hide {
217 my ($self) = @_; 230 my ($self) = @_;
218 231
730 743
731sub size_request { 744sub size_request {
732 my ($self) = @_; 745 my ($self) = @_;
733 746
734 @$self{qw(child_w child_h)} = @{$self->child}{qw(req_w req_h)}; 747 @$self{qw(child_w child_h)} = @{$self->child}{qw(req_w req_h)};
735 $self->child->configure (0, 0, @$self{qw(child_w child_h)});
736 748
737 @$self{qw(child_w child_h)} 749 @$self{qw(child_w child_h)}
738} 750}
739 751
740sub size_allocate { 752sub size_allocate {
741 my ($self, $w, $h) = @_; 753 my ($self, $w, $h) = @_;
742 754
755 my ($cw, $ch) = @$self{qw(child_w child_h)};
756# $w = $self->{w};
757 $self->child->configure (0, 0, $cw, $ch);
743 $self->update; 758 $self->update;
744} 759}
745 760
746sub set_offset { 761sub set_offset {
747 my ($self, $x, $y) = @_; 762 my ($self, $x, $y) = @_;
1475 active_fg => [0, 0, 0], 1490 active_fg => [0, 0, 0],
1476 can_hover => 1, 1491 can_hover => 1,
1477 can_focus => 1, 1492 can_focus => 1,
1478 valign => 0, 1493 valign => 0,
1479 can_events => 1, 1494 can_events => 1,
1495 #text => ...
1480 @_ 1496 @_
1481 ) 1497 )
1482} 1498}
1483 1499
1484sub _set_text { 1500sub _set_text {
2069 $self->update; 2085 $self->update;
2070 2086
2071 $self 2087 $self
2072} 2088}
2073 2089
2090sub set_range {
2091 my ($self, $range) = @_;
2092
2093 $self->{range} = $range;
2094
2095 $self->update;
2096}
2097
2074sub set_value { 2098sub set_value {
2075 my ($self, $value) = @_; 2099 my ($self, $value) = @_;
2076 2100
2077 my ($old_value, $lo, $hi, $page, $unit) = @{$self->{range}}; 2101 my ($old_value, $lo, $hi, $page, $unit) = @{$self->{range}};
2078 2102
2177 # draw handle 2201 # draw handle
2178 $tex[0]->draw_quad_alpha ($self->{knob_x}, 0, $self->{knob_w}, 1); 2202 $tex[0]->draw_quad_alpha ($self->{knob_x}, 0, $self->{knob_w}, 1);
2179 2203
2180 glDisable GL_TEXTURE_2D; 2204 glDisable GL_TEXTURE_2D;
2181} 2205}
2206
2207#############################################################################
2208
2209package CFClient::UI::ValSlider;
2210
2211our @ISA = CFClient::UI::HBox::;
2212
2213sub new {
2214 my ($class, %arg) = @_;
2215
2216 my $range = delete $arg{range};
2217
2218 my $self = $class->SUPER::new (
2219 slider => (new CFClient::UI::Slider expand => 1, range => $range),
2220 entry => (new CFClient::UI::Label text => "", template => delete $arg{template}),
2221 to_value => sub { shift },
2222 from_value => sub { shift },
2223 %arg,
2224 );
2225
2226 $self->{slider}->connect (changed => sub {
2227 my ($self, $value) = @_;
2228 $self->{parent}{entry}->set_text ($self->{parent}{to_value}->($value));
2229 $self->{parent}->emit (changed => $value);
2230 });
2231
2232# $self->{entry}->connect (changed => sub {
2233# my ($self, $value) = @_;
2234# $self->{parent}{slider}->set_value ($self->{parent}{from_value}->($value));
2235# $self->{parent}->emit (changed => $value);
2236# });
2237
2238 $self->add ($self->{slider}, $self->{entry});
2239
2240 $self->{slider}->emit (changed => $self->{slider}{range}[0]);
2241
2242 $self
2243}
2244
2245sub set_range { shift->{slider}->set_range (@_) }
2246sub set_value { shift->{slider}->set_value (@_) }
2182 2247
2183############################################################################# 2248#############################################################################
2184 2249
2185package CFClient::UI::TextView; 2250package CFClient::UI::TextView;
2186 2251
2615 2680
2616 my $self = $class->SUPER::new ( 2681 my $self = $class->SUPER::new (
2617 can_hover => 1, 2682 can_hover => 1,
2618 can_events => 1, 2683 can_events => 1,
2619 tooltip => ((CFClient::UI::Label::escape $desc) 2684 tooltip => ((CFClient::UI::Label::escape $desc)
2620 . "\n<small>leftclick - pick up\nmiddle click - apply\nrightclick - menu</small>"), 2685 . "\n<small>leftclick - examine\nshift+leftclick - move/pickup/drop\nmiddle click - apply\nrightclick - menu</small>"),
2621 connect_button_down => sub { 2686 connect_button_down => sub {
2622 my ($self, $ev, $x, $y) = @_; 2687 my ($self, $ev, $x, $y) = @_;
2623 2688
2624 # todo: maybe put examine on 1? but should just be a tooltip :( 2689 # todo: maybe put examine on 1? but should just be a tooltip :(
2625 if ($ev->{button} == 1) { 2690 if (($ev->{mod} & CFClient::KMOD_SHIFT) && $ev->{button} == 1) {
2626 my $targ = $::CONN->{player}{tag}; 2691 my $targ = $::CONN->{player}{tag};
2627 2692
2628 if ($item->{container} == $::CONN->{player}{tag}) { 2693 if ($item->{container} == $::CONN->{player}{tag}) {
2629 $targ = $main::OPENCONT; 2694 $targ = $main::OPENCONT;
2630 } 2695 }
2631 2696
2632 $::CONN->send ("move $targ $item->{tag} 0"); 2697 $::CONN->send ("move $targ $item->{tag} 0");
2698 } elsif ($ev->{button} == 1) {
2699 $::CONN->send ("examine $item->{tag}");
2633 } elsif ($ev->{button} == 2) { 2700 } elsif ($ev->{button} == 2) {
2634 $::CONN->send ("apply $item->{tag}"); 2701 $::CONN->send ("apply $item->{tag}");
2635 } elsif ($ev->{button} == 3) { 2702 } elsif ($ev->{button} == 3) {
2636 my @menu_items = ( 2703 my @menu_items = (
2637 ["examine", sub { $::CONN->send ("examine $item->{tag}") }], 2704 ["examine", sub { $::CONN->send ("examine $item->{tag}") }],
2690 2757
2691sub new { 2758sub new {
2692 my $class = shift; 2759 my $class = shift;
2693 2760
2694 my $self = $class->SUPER::new ( 2761 my $self = $class->SUPER::new (
2695 scrolled => (new CFClient::UI::VBox), 2762 scrolled => (new CFClient::UI::Table),
2696 @_, 2763 @_,
2697 ); 2764 );
2698 2765
2699 $self 2766 $self
2700} 2767}
2711 } @$items; 2778 } @$items;
2712 2779
2713 $self->{real_items} = \@items; 2780 $self->{real_items} = \@items;
2714 2781
2715 for my $item (@items) { 2782 for my $item (@items) {
2783 $item->{item} = $item;
2716 $item = $item->{widget} ||= new CFClient::UI::InventoryItem item => $item; 2784 $item = $item->{widget} ||= new CFClient::UI::InventoryItem item => $item;
2717 $item->update_item (); 2785 $item->update_item ();
2718 } 2786 }
2719 2787
2788 my $i = 0;
2789 for (@items) {
2720 $self->{scrolled}->add (@items); 2790 $self->{scrolled}->add (0, $i, $_);
2791 my $nrof = $_->{item}->{nrof} || 1;
2792 $self->{scrolled}->add (1, $i++, new CFClient::UI::Label text => ($_->{item}->{weight} * $nrof) / 1000);
2793 }
2721 2794
2722# $range->{range} = [$self->{pos}, 0, $self->{max_pos}, $page]; 2795# $range->{range} = [$self->{pos}, 0, $self->{max_pos}, $page];
2723} 2796}
2724 2797
2725sub size_request { 2798sub size_request {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines