--- deliantra/server/ext/widget.ext 2007/06/26 04:50:05 1.3 +++ deliantra/server/ext/widget.ext 2007/07/22 20:08:38 1.12 @@ -5,8 +5,8 @@ # ws_d id # widgetset destroy # ws_c ws id class args # widgetset create # w_c id [rid] name args # widget method call -# w_s id name value # widget member set -# w_g id rid name # widget member get +# w_s id @attr # widget member set +# w_g id rid @attr # widget member get # # and expects the following exti message types # w_r rid res # widget call return @@ -16,7 +16,13 @@ on_connect => sub { my ($ns) = @_; + Scalar::Util::weaken (my $weakns = $ns); + $ns->{id} = "a"; + $ns->{json_coder}->filter_json_single_key_object (__widget_ref__ => sub { + # cannot deserialise ATM + undef + }); }, ); @@ -62,11 +68,11 @@ ) { my ($x, $label) = @$_; - $statstable->add ($x, 0, $ws->new (Label => + $statstable->add_at ($x, 0, $ws->new (Label => can_hover => 1, can_events => 1, align => +1, text => $label, tooltip => "#stat_$label", )); - $statstable->add ($x, 1, $ws->{stat}{$label} = $ws->new (Label => + $statstable->add_at ($x, 1, $ws->{stat}{$label} = $ws->new (Label => can_hover => 1, can_events => 1, align => +1, template => "88", tooltip => "#stat_$label", )); @@ -86,8 +92,7 @@ my $ns = $pl->ns; return unless $ns->{can_widget}; - - csc_start $ns; + #csc_start $ns; }, ); @@ -122,7 +127,7 @@ my $ws = bless { id => $id, ns => $self, - w => {}, + _w => {}, }, "ext::widget::set"; $ws->msg (ws_n => id => $id); @@ -152,7 +157,7 @@ if (my $ns = shift->{ns}) { $msg{msgtype} = $type; - $ns->send_packet ("ext " . cf::to_json \%msg); + $ns->send_packet ("ext " . $ns->{json_coder}->encode (\%msg)); } } @@ -161,7 +166,7 @@ my $id = ++$self->{ns}{id}; - my $proxy = $self->{w}{$id} = bless { + my $proxy = $self->{_w}{$id} = bless { id => $id, }, "ext::widget::proxy"; @@ -175,7 +180,7 @@ } $self->msg (ws_c => - ws => $self->{w}{id}, + ws => $proxy->{id}, id => $id, class => $class, args => \%args, @@ -193,9 +198,10 @@ delete $self->{ns}{widget}{$self->{id}}; + #warn "DES<$self> $self->{ws}\n";#d# if (my $ws = $self->{ws}) { - delete $ws->{w}{$self->{id}}; $self->msg (w_c => name => "destroy"); + delete $ws->{_w}{$self->{id}}; } } @@ -240,15 +246,15 @@ } sub set { - my ($self, $member, $value) = @_; + my ($self, @kv) = @_; - $self->msg (w_s => name => $member, value => $value); + $self->msg (w_s => attr => \@kv); } sub get { my ($self, $member, $cb) = @_; - $self->msg_cb ($cb, w_g => name => $member); + $self->msg_cb ($cb, w_g => attr => [$member]); } sub TO_JSON {