… | |
… | |
514 | ); |
514 | ); |
515 | |
515 | |
516 | sub emit { |
516 | sub emit { |
517 | my ($self, $signal, @args) = @_; |
517 | my ($self, $signal, @args) = @_; |
518 | |
518 | |
519 | # I do not really like this solution, but I dislike duplication |
519 | # I do not really like this solution, but I do not like duplication |
520 | # and needlessly verbose code, too. |
520 | # and needlessly verbose code, either. |
521 | my @append |
521 | my @append |
522 | = $has_coords{$signal} |
522 | = $has_coords{$signal} |
523 | ? $args[0]->xy ($self) |
523 | ? $args[0]->xy ($self) |
524 | : (); |
524 | : (); |
525 | |
525 | |
… | |
… | |
898 | glClear GL_COLOR_BUFFER_BIT; |
898 | glClear GL_COLOR_BUFFER_BIT; |
899 | |
899 | |
900 | { |
900 | { |
901 | package CFPlus::UI::Base; |
901 | package CFPlus::UI::Base; |
902 | |
902 | |
903 | ($draw_x, $draw_y, $draw_w, $draw_h) = |
903 | local ($draw_x, $draw_y, $draw_w, $draw_h) = |
904 | (0, 0, $self->{w}, $self->{h}); |
904 | (0, 0, $self->{w}, $self->{h}); |
|
|
905 | |
|
|
906 | $self->_render; |
905 | } |
907 | } |
906 | |
|
|
907 | $self->_render; |
|
|
908 | }; |
908 | }; |
909 | } |
909 | } |
910 | |
910 | |
911 | sub _draw { |
911 | sub _draw { |
912 | my ($self) = @_; |
912 | my ($self) = @_; |
… | |
… | |
2959 | |
2959 | |
2960 | $self->{texture} ||= new_from_opengl CFPlus::Texture $W, $H, sub { |
2960 | $self->{texture} ||= new_from_opengl CFPlus::Texture $W, $H, sub { |
2961 | glClearColor 0, 0, 0, 0; |
2961 | glClearColor 0, 0, 0, 0; |
2962 | glClear GL_COLOR_BUFFER_BIT; |
2962 | glClear GL_COLOR_BUFFER_BIT; |
2963 | |
2963 | |
|
|
2964 | package CFPlus::UI::Base; |
|
|
2965 | local ($draw_x, $draw_y, $draw_w, $draw_h) = |
|
|
2966 | (0, 0, $self->{w}, $self->{h}); |
|
|
2967 | |
2964 | my $top = int $self->{children}[1]{range}[0]; |
2968 | my $top = int $self->{children}[1]{range}[0]; |
2965 | |
2969 | |
2966 | my $paridx = 0; |
2970 | my $paridx = 0; |
2967 | my $top_paragraph; |
2971 | my $top_paragraph; |
2968 | my $top = int $self->{children}[1]{range}[0]; |
2972 | my $top = int $self->{children}[1]{range}[0]; |
… | |
… | |
3284 | |
3288 | |
3285 | package CFPlus::UI::Buttonbar; |
3289 | package CFPlus::UI::Buttonbar; |
3286 | |
3290 | |
3287 | our @ISA = CFPlus::UI::HBox::; |
3291 | our @ISA = CFPlus::UI::HBox::; |
3288 | |
3292 | |
3289 | # TODO: should actualyl wrap buttons and other goodies. |
3293 | # TODO: should actually wrap buttons and other goodies. |
3290 | |
3294 | |
3291 | ############################################################################# |
3295 | ############################################################################# |
3292 | |
3296 | |
3293 | package CFPlus::UI::Menu; |
3297 | package CFPlus::UI::Menu; |
3294 | |
3298 | |
… | |
… | |
3823 | if ($ev->{button} == 1) { |
3827 | if ($ev->{button} == 1) { |
3824 | $::CONN->user_send ("cast $spell->{name}"); |
3828 | $::CONN->user_send ("cast $spell->{name}"); |
3825 | } elsif ($ev->{button} == 2) { |
3829 | } elsif ($ev->{button} == 2) { |
3826 | $::CONN->user_send ("invoke $spell->{name}"); |
3830 | $::CONN->user_send ("invoke $spell->{name}"); |
3827 | } elsif ($ev->{button} == 3) { |
3831 | } elsif ($ev->{button} == 3) { |
|
|
3832 | my $shortname = CFPlus::shorten $spell->{name}, 14; |
3828 | (new CFPlus::UI::Menu |
3833 | (new CFPlus::UI::Menu |
3829 | items => [ |
3834 | items => [ |
3830 | ["bind <i>cast $spell->{name}</i> to a key" => sub { $::BIND_EDITOR->do_quick_binding (["cast $spell->{name}"]) }], |
3835 | ["bind <i>cast $shortname</i> to a key" => sub { $::BIND_EDITOR->do_quick_binding (["cast $spell->{name}"]) }], |
3831 | ["bind <i>invoke $spell->{name}</i> to a key" => sub { $::BIND_EDITOR->do_quick_binding (["invoke $spell->{name}"]) }], |
3836 | ["bind <i>invoke $shortname</i> to a key" => sub { $::BIND_EDITOR->do_quick_binding (["invoke $spell->{name}"]) }], |
3832 | ], |
3837 | ], |
3833 | )->popup ($ev); |
3838 | )->popup ($ev); |
3834 | } else { |
3839 | } else { |
3835 | return 0; |
3840 | return 0; |
3836 | } |
3841 | } |
3837 | |
3842 | |
3838 | 1 |
3843 | 1 |
3839 | }; |
3844 | }; |
3840 | |
3845 | |
3841 | my $tooltip = "$spell->{message}$TOOLTIP_ALL"; |
3846 | my $tooltip = (CFPlus::asxml $spell->{message}) . $TOOLTIP_ALL; |
3842 | |
3847 | |
3843 | #TODO: add path info to tooltip |
3848 | #TODO: add path info to tooltip |
3844 | #$self->add (6, $row, new CFPlus::UI::Label text => $spell->{path}); |
3849 | #$self->add (6, $row, new CFPlus::UI::Label text => $spell->{path}); |
3845 | |
3850 | |
3846 | $self->add (0, $row, new CFPlus::UI::Face |
3851 | $self->add (0, $row, new CFPlus::UI::Face |
… | |
… | |
4124 | glLoadIdentity; |
4129 | glLoadIdentity; |
4125 | |
4130 | |
4126 | { |
4131 | { |
4127 | package CFPlus::UI::Base; |
4132 | package CFPlus::UI::Base; |
4128 | |
4133 | |
4129 | ($draw_x, $draw_y, $draw_w, $draw_h) = |
4134 | local ($draw_x, $draw_y, $draw_w, $draw_h) = |
4130 | (0, 0, $self->{w}, $self->{h}); |
4135 | (0, 0, $self->{w}, $self->{h}); |
4131 | } |
|
|
4132 | |
4136 | |
4133 | $self->_draw; |
4137 | $self->_draw; |
|
|
4138 | } |
4134 | } |
4139 | } |
4135 | |
4140 | |
4136 | ############################################################################# |
4141 | ############################################################################# |
4137 | |
4142 | |
4138 | package CFPlus::UI; |
4143 | package CFPlus::UI; |