… | |
… | |
66 | on_escape => sub { $w->destroy; 1 }, |
66 | on_escape => sub { $w->destroy; 1 }, |
67 | ); |
67 | ); |
68 | $entry->grab_focus; |
68 | $entry->grab_focus; |
69 | $w->show; |
69 | $w->show; |
70 | } |
70 | } |
|
|
71 | |
|
|
72 | my $bg_cursed = [1 , 0 , 0, 0.5]; |
|
|
73 | my $bg_magic = [0.2, 0.2, 1, 0.5]; |
71 | |
74 | |
72 | sub update_widgets { |
75 | sub update_widgets { |
73 | my ($self) = @_; |
76 | my ($self) = @_; |
74 | |
77 | |
75 | # necessary to avoid cyclic references |
78 | # necessary to avoid cyclic references |
… | |
… | |
163 | . "Middle click - apply\n" |
166 | . "Middle click - apply\n" |
164 | . "Shift-Middle click - lock/unlock\n" |
167 | . "Shift-Middle click - lock/unlock\n" |
165 | . "Right click - further options" |
168 | . "Right click - further options" |
166 | . "</small>\n"; |
169 | . "</small>\n"; |
167 | |
170 | |
168 | my $bg = $self->{flags} & F_CURSED ? [1 , 0 , 0, 0.5] |
171 | my $bg = $self->{flags} & F_CURSED ? $bg_cursed |
169 | : $self->{flags} & F_MAGIC ? [0.2, 0.2, 1, 0.5] |
172 | : $self->{flags} & F_MAGIC ? $bg_magic |
170 | : undef; |
173 | : undef; |
171 | |
174 | |
172 | my $desc = DC::Item::desc_string $self; |
175 | my $desc = DC::Item::desc_string $self; |
|
|
176 | my $face_tooltip = "<b>$desc</b>\n\n$tooltip_std"; |
173 | |
177 | |
|
|
178 | if (my $face = $self->{face_widget}) { |
|
|
179 | if ($face->{bg} != $bg) { |
|
|
180 | $face->{bg} = $bg; |
|
|
181 | $face->update; |
|
|
182 | } |
|
|
183 | |
|
|
184 | $face->set_face ($self->{face}) if $face->{face} != $self->{face}; |
|
|
185 | $face->set_anim ($self->{anim}) if $face->{anim} != $self->{anim}; |
|
|
186 | $face->set_animspeed ($self->{animspeed}) if $face->{animspeed} != $self->{animspeed}; |
|
|
187 | |
|
|
188 | #$face->set_tooltip ( |
|
|
189 | # "<b>Face/Animation.</b>\n" |
|
|
190 | # . "Item uses face #$self->{face}. " |
|
|
191 | # . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ") |
|
|
192 | # . "\n\n$tooltip_std" |
|
|
193 | #); |
|
|
194 | $face->set_tooltip ($face_tooltip); |
|
|
195 | } else { |
174 | $self->{face_widget} ||= new DC::UI::Face |
196 | $self->{face_widget} = new DC::UI::Face |
175 | can_events => 1, |
197 | can_events => 1, |
176 | can_hover => 1, |
198 | can_hover => 1, |
|
|
199 | bg => $bg, |
|
|
200 | face => $self->{face}, |
177 | anim => $self->{anim}, |
201 | anim => $self->{anim}, |
178 | animspeed => $self->{animspeed}, # TODO# must be set at creation time |
202 | animspeed => $self->{animspeed}, # TODO# must be set at creation time |
|
|
203 | tooltip => $face_tooltip, |
179 | on_button_down => $button_cb, |
204 | on_button_down => $button_cb, |
|
|
205 | ; |
180 | ; |
206 | } |
181 | $self->{face_widget}{bg} = $bg; |
|
|
182 | $self->{face_widget}{face} = $self->{face}; |
|
|
183 | $self->{face_widget}{anim} = $self->{anim}; |
|
|
184 | $self->{face_widget}{animspeed} = $self->{animspeed}; |
|
|
185 | # $self->{face_widget}->set_tooltip ( |
|
|
186 | # "<b>Face/Animation.</b>\n" |
|
|
187 | # . "Item uses face #$self->{face}. " |
|
|
188 | # . ($self->{animspeed} ? "Item uses animation #$self->{anim} at " . (1 / $self->{animspeed}) . "fps. " : "Item is not animated. ") |
|
|
189 | # . "\n\n$tooltip_std" |
|
|
190 | # ); |
|
|
191 | $self->{face_widget}->set_tooltip ("<b>$desc</b>\n\n$tooltip_std"); |
|
|
192 | |
207 | |
193 | $self->{desc_widget} ||= new DC::UI::Label |
208 | $self->{desc_widget} ||= new DC::UI::Label |
194 | can_events => 1, |
209 | can_events => 1, |
195 | can_hover => 1, |
210 | can_hover => 1, |
196 | ellipsise => 2, |
211 | ellipsise => 2, |