--- deliantra/Deliantra-Client/DC/BindingEditor.pm 2006/07/07 23:07:14 1.3 +++ deliantra/Deliantra-Client/DC/BindingEditor.pm 2006/10/01 14:48:51 1.7 @@ -1,52 +1,52 @@ -package CFClient::BindingEditor; +package CFPlus::BindingEditor; use strict; -use CFClient::UI; +use CFPlus::UI; -our @ISA = CFClient::UI::FancyFrame::; +our @ISA = CFPlus::UI::Toplevel::; my @ALLOWED_MODIFIER_KEYS = ( - CFClient::SDLK_LSHIFT, - CFClient::SDLK_LCTRL , - CFClient::SDLK_LALT , - CFClient::SDLK_LMETA , - - CFClient::SDLK_RSHIFT, - CFClient::SDLK_RCTRL , - CFClient::SDLK_RALT , - CFClient::SDLK_RMETA , + CFPlus::SDLK_LSHIFT, + CFPlus::SDLK_LCTRL , + CFPlus::SDLK_LALT , + CFPlus::SDLK_LMETA , + + CFPlus::SDLK_RSHIFT, + CFPlus::SDLK_RCTRL , + CFPlus::SDLK_RALT , + CFPlus::SDLK_RMETA , ); my %ALLOWED_MODIFIERS = ( - CFClient::KMOD_LSHIFT => "LSHIFT", - CFClient::KMOD_LCTRL => "LCTRL", - CFClient::KMOD_LALT => "LALT", - CFClient::KMOD_LMETA => "LMETA", - - CFClient::KMOD_RSHIFT => "RSHIFT", - CFClient::KMOD_RCTRL => "RCTRL", - CFClient::KMOD_RALT => "RALT", - CFClient::KMOD_RMETA => "RMETA", + CFPlus::KMOD_LSHIFT => "LSHIFT", + CFPlus::KMOD_LCTRL => "LCTRL", + CFPlus::KMOD_LALT => "LALT", + CFPlus::KMOD_LMETA => "LMETA", + + CFPlus::KMOD_RSHIFT => "RSHIFT", + CFPlus::KMOD_RCTRL => "RCTRL", + CFPlus::KMOD_RALT => "RALT", + CFPlus::KMOD_RMETA => "RMETA", ); my %DIRECT_BIND_CHARS = map { $_ => 1 } qw/0 1 2 3 4 5 6 7 8 9/; my @DIRECT_BIND_KEYS = ( - CFClient::SDLK_F1, - CFClient::SDLK_F2, - CFClient::SDLK_F3, - CFClient::SDLK_F4, - CFClient::SDLK_F5, - CFClient::SDLK_F6, - CFClient::SDLK_F7, - CFClient::SDLK_F8, - CFClient::SDLK_F9, - CFClient::SDLK_F10, - CFClient::SDLK_F11, - CFClient::SDLK_F12, - CFClient::SDLK_F13, - CFClient::SDLK_F14, - CFClient::SDLK_F15, + CFPlus::SDLK_F1, + CFPlus::SDLK_F2, + CFPlus::SDLK_F3, + CFPlus::SDLK_F4, + CFPlus::SDLK_F5, + CFPlus::SDLK_F6, + CFPlus::SDLK_F7, + CFPlus::SDLK_F8, + CFPlus::SDLK_F9, + CFPlus::SDLK_F10, + CFPlus::SDLK_F11, + CFPlus::SDLK_F12, + CFPlus::SDLK_F13, + CFPlus::SDLK_F14, + CFPlus::SDLK_F15, ); sub keycombo_to_name { @@ -58,7 +58,7 @@ keys %ALLOWED_MODIFIERS; $mods .= "+" if $mods ne ''; - return $mods . CFClient::SDL_GetKeyName ($sym); + return $mods . CFPlus::SDL_GetKeyName ($sym); } sub new { @@ -71,9 +71,9 @@ @_ ); - $self->add (my $vb = new CFClient::UI::VBox); + $self->add (my $vb = new CFPlus::UI::VBox); - $vb->add ($self->{rec_btn} = new CFClient::UI::Button + $vb->add ($self->{rec_btn} = new CFPlus::UI::Button text => "start recording", tooltip => "Start/Stops recording of actions." ."All subsequent actions after the recording started will be captured." @@ -87,21 +87,21 @@ } }); - $vb->add (new CFClient::UI::Label text => "Actions:"); - $vb->add ($self->{cmdbox} = new CFClient::UI::VBox); + $vb->add (new CFPlus::UI::Label text => "Actions:"); + $vb->add ($self->{cmdbox} = new CFPlus::UI::VBox); - $vb->add (new CFClient::UI::Label text => "Bound to: "); - $vb->add (my $hb = new CFClient::UI::HBox); - $hb->add ($self->{keylbl} = new CFClient::UI::Label expand => 1); - $hb->add (new CFClient::UI::Button + $vb->add (new CFPlus::UI::Label text => "Bound to: "); + $vb->add (my $hb = new CFPlus::UI::HBox); + $hb->add ($self->{keylbl} = new CFPlus::UI::Label expand => 1); + $hb->add (new CFPlus::UI::Button text => "bind", tooltip => "This opens a query where you have to press the key combination to bind the recorded actions", on_activate => sub { $self->ask_for_bind; }); - $vb->add (my $hb = new CFClient::UI::HBox); - $hb->add (new CFClient::UI::Button + $vb->add (my $hb = new CFPlus::UI::HBox); + $hb->add (new CFPlus::UI::Button text => "OK", expand => 1, tooltip => "This closes the binding editor and saves the binding", @@ -112,7 +112,7 @@ 0 }); - $hb->add (new CFClient::UI::Button + $hb->add (new CFPlus::UI::Button text => "Cancel", expand => 1, tooltip => "This closes the binding editor without saving", @@ -131,13 +131,13 @@ sub cfg_bind { my ($self, $mod, $sym, $cmds) = @_; - $::CFG->{profile}{default}{bindings}{$mod}{$sym} = $cmds; + $::PROFILE->{bindings}{$mod}{$sym} = $cmds; ::update_bindings (); } sub cfg_unbind { my ($self, $mod, $sym, $cmds) = @_; - delete $::CFG->{profile}{default}{bindings}{$mod}{$sym}; + delete $::PROFILE->{bindings}{$mod}{$sym}; ::update_bindings (); } @@ -186,7 +186,7 @@ Scalar::Util::weaken $self; - $self->{binder} = new CFClient::UI::FancyFrame + $self->{binder} = new CFPlus::UI::Toplevel title => "Bind Action", x => "center", y => "center", @@ -198,12 +198,12 @@ }, ; - $self->{binder}->add (my $vb = new CFClient::UI::VBox); - $vb->add (new CFClient::UI::Label + $self->{binder}->add (my $vb = new CFPlus::UI::VBox); + $vb->add (new CFPlus::UI::Label text => "Press a modifier (CTRL, ALT and/or SHIFT) and a key." . "You can only bind 0-9 and F1-F15 without modifiers." ); - $vb->add (my $entry = new CFClient::UI::Entry + $vb->add (my $entry = new CFPlus::UI::Entry text => "", on_key_down => sub { my ($entry, $ev) = @_; @@ -214,12 +214,12 @@ # XXX: This seems a little bit hackisch to me, but I have to ignore them return if grep { $_ == $sym } @ALLOWED_MODIFIER_KEYS; - if ($mod == CFClient::KMOD_NONE + if ($mod == CFPlus::KMOD_NONE and not $DIRECT_BIND_CHARS{chr ($ev->{unicode})} and not grep { $sym == $_ } @DIRECT_BIND_KEYS) { $::STATUSBOX->add ( - "Cannot bind key " . CFClient::SDL_GetKeyName ($sym) . " directly without modifier, " + "Cannot bind key " . CFPlus::SDL_GetKeyName ($sym) . " directly without modifier, " . "as those keys are reserved for the command completer." ); return; @@ -232,7 +232,9 @@ $self->commit if $commit; $end_cb->() if $end_cb; - (delete $self->{binder})->destroy; + if (my $binder = delete $self->{binder}) { + $binder->destroy; + } 1 }, on_focus_out => sub { @@ -305,11 +307,11 @@ my $idx = 0; for (@$cmds) { - $self->{cmdbox}->add (my $hb = new CFClient::UI::HBox); + $self->{cmdbox}->add (my $hb = new CFPlus::UI::HBox); my $i = $idx; - $hb->add (new CFClient::UI::Label text => $_); - $hb->add (new CFClient::UI::Button + $hb->add (new CFPlus::UI::Label text => $_); + $hb->add (new CFPlus::UI::Button text => "delete", tooltip => "Deletes the action from the record", on_activate => sub {