… | |
… | |
154 | $window->connect (key_up => $key_cb); |
154 | $window->connect (key_up => $key_cb); |
155 | $window->connect (key_down => $key_cb); |
155 | $window->connect (key_down => $key_cb); |
156 | |
156 | |
157 | $window->grab_focus; |
157 | $window->grab_focus; |
158 | $window->show; |
158 | $window->show; |
|
|
159 | } |
|
|
160 | |
|
|
161 | # find macro by event |
|
|
162 | sub match_event($) { |
|
|
163 | my ($ev) = @_; |
|
|
164 | |
|
|
165 | grep { |
|
|
166 | if (my $key = $_->{accelkey}) { |
|
|
167 | $key->[1] == $ev->{sym} |
|
|
168 | && $key->[0] == ($ev->{mod} & $MODIFIER_MASK) |
|
|
169 | } else { |
|
|
170 | 0 |
|
|
171 | } |
|
|
172 | } @{ $::PROFILE->{macro} || [] } |
159 | } |
173 | } |
160 | |
174 | |
161 | sub keyboard_setup { |
175 | sub keyboard_setup { |
162 | my $kbd_setup = new CFPlus::UI::VBox; |
176 | my $kbd_setup = new CFPlus::UI::VBox; |
163 | |
177 | |
… | |
… | |
321 | can_events => 1, |
335 | can_events => 1, |
322 | on_button_down => $macro_cb, |
336 | on_button_down => $macro_cb, |
323 | ); |
337 | ); |
324 | |
338 | |
325 | $macros->add (1, $y, new CFPlus::UI::Label |
339 | $macros->add (1, $y, new CFPlus::UI::Label |
326 | text => (join "; ", @{ $macro->{action} }), |
340 | text => (join "; ", @{ $macro->{action} || [] }), |
327 | tooltip => $tooltip_commands . $tooltip_common, |
341 | tooltip => $tooltip_commands . $tooltip_common, |
328 | expand => 1, |
342 | expand => 1, |
329 | ellipsise => 3, |
343 | ellipsise => 3, |
330 | can_hover => 1, |
344 | can_hover => 1, |
331 | can_events => 1, |
345 | can_events => 1, |
… | |
… | |
340 | } |
354 | } |
341 | |
355 | |
342 | # this is a shortcut method that asks for a binding |
356 | # this is a shortcut method that asks for a binding |
343 | # and then just binds it. |
357 | # and then just binds it. |
344 | sub quick_macro { |
358 | sub quick_macro { |
345 | my ($self, $cmds, $end_cb) = @_; |
359 | my ($cmds, $end_cb) = @_; |
346 | |
360 | |
347 | my $macro = { |
361 | my $macro = { |
348 | action => $cmds, |
362 | action => $cmds, |
349 | }; |
363 | }; |
350 | |
364 | |
351 | trigger_edit $macro, sub { |
365 | trigger_edit $macro, sub { |
352 | |
|
|
353 | if ($_[0]) { |
366 | if ($_[0]) { |
354 | push @{ $::PROFILE->{macro} }, $macro; |
367 | push @{ $::PROFILE->{macro} }, $macro; |
355 | $REFRESH_MACRO_LIST->(); |
368 | $REFRESH_MACRO_LIST->(); |
356 | } |
369 | } |
357 | |
370 | |