--- deliantra/Deliantra-Client/DC/UI.pm 2006/04/09 21:34:49 1.38 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/04/09 21:39:08 1.39 @@ -136,6 +136,8 @@ #$self->deactivate; } +############################################################################# + package Crossfire::Client::Widget::Container; our @ISA = Crossfire::Client::Widget::; @@ -202,11 +204,13 @@ $_->draw for @{$self->{children}}; } +############################################################################# + package Crossfire::Client::Widget::Bin; our @ISA = Crossfire::Client::Widget::Container::; -sub get { $_[0]->{children}[0] } +sub child { $_[0]->{children}[0] } sub size_request { $_[0]{children}[0]->size_request if $_[0]{children}[0]; @@ -219,6 +223,8 @@ if $self->{children}[0] } +############################################################################# + package Crossfire::Client::Widget::Toplevel; our @ISA = Crossfire::Client::Widget::Container::; @@ -229,6 +235,8 @@ ::refresh (); } +############################################################################# + package Crossfire::Client::Widget::Window; our @ISA = Crossfire::Client::Widget::Bin::; @@ -307,6 +315,8 @@ glDisable GL_TEXTURE_2D; } +############################################################################# + package Crossfire::Client::Widget::Frame; our @ISA = Crossfire::Client::Widget::Bin::; @@ -315,7 +325,7 @@ sub size_request { my ($self) = @_; - my $chld = $self->get + my $chld = $self->child or return (0, 0); $chld->move (2, 2); @@ -329,14 +339,14 @@ $self->w ($w); $self->h ($h); - $self->get->size_allocate ($w - 4, $h - 4); - $self->get->move (2, 2); + $self->child->size_allocate ($w - 4, $h - 4); + $self->child->move (2, 2); } sub _draw { my ($self) = @_; - my $chld = $self->get; + my $chld = $self->child; my ($w, $h) = $chld->size_request; @@ -351,6 +361,8 @@ $chld->draw; } +############################################################################# + package Crossfire::Client::Widget::FancyFrame; our @ISA = Crossfire::Client::Widget::Frame::; @@ -370,7 +382,8 @@ sub size_request { my ($self) = @_; - my ($w, $h) = $self->get->size_request; + + my ($w, $h) = $self->SUPER::size_request; $h += $self->{txts}->[1]->{height}; $h += $self->{txts}->[4]->{height}; @@ -393,15 +406,15 @@ $h = $h < 0 ? 0 : $h; $w = $w < 0 ? 0 : $w; warn "CHILD:$w $h\n"; - $self->get->size_allocate ($w, $h); - $self->get->move ($self->{txts}->[3]->{width}, $self->{txts}->[1]->{height}); + $self->child->size_allocate ($w, $h); + $self->child->move ($self->{txts}->[3]->{width}, $self->{txts}->[1]->{height}); } sub _draw { my ($self) = @_; my ($w, $h) = ($self->w, $self->h); - my ($cw, $ch) = ($self->get->w, $self->get->h); + my ($cw, $ch) = ($self->child->w, $self->child->h); glEnable GL_BLEND; glEnable GL_TEXTURE_2D; @@ -467,10 +480,12 @@ glDisable GL_BLEND; glDisable GL_TEXTURE_2D; - $self->get->draw; + $self->child->draw; } +############################################################################# + package Crossfire::Client::Widget::Table; our @ISA = Crossfire::Client::Widget::Bin::; @@ -556,6 +571,8 @@ } } +############################################################################# + package Crossfire::Client::Widget::VBox; our @ISA = Crossfire::Client::Widget::Container::; @@ -613,6 +630,8 @@ } } +############################################################################# + package Crossfire::Client::Widget::Label; our @ISA = Crossfire::Client::Widget::; @@ -678,6 +697,8 @@ glDisable GL_TEXTURE_2D; } +############################################################################# + package Crossfire::Client::Widget::TextEntry; our @ISA = Crossfire::Client::Widget::Label::; @@ -705,6 +726,8 @@ $self->set_text ($text); } +############################################################################# + package Crossfire::Client::Widget::MapWidget; use strict; @@ -880,6 +903,8 @@ } } +############################################################################# + package Crossfire::Client::Widget::Animator; use SDL::OpenGL;