ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/kgsueme/gtk.pl
(Generate patch)

Comparing kgsueme/kgsueme/gtk.pl (file contents):
Revision 1.31 by root, Tue Jun 1 10:11:14 2004 UTC vs.
Revision 1.32 by root, Wed Jun 2 09:32:32 2004 UTC

134 } 134 }
135 135
136 $img; 136 $img;
137} 137}
138 138
139#############################################################################
140
141sub optionmenu {
142 my ($ref, @entry) = @_;
143
144 my @vals;
145
146 my $widget = new Gtk2::OptionMenu;
147 $widget->set (menu => my $menu = new Gtk2::Menu);
148
149 my $idx = 0;
150
151 while (@entry >= 2) {
152 my $value = shift @entry;
153 my $label = shift @entry;
154
155 $menu->append (new Gtk2::MenuItem $label);
156 push @vals, $value;
157
158 if ($value eq $$ref && $idx >= 0) {
159 $widget->set_history ($idx);
160 $idx = -1e6;
161 }
162 $idx++;
163 }
164
165 my $cb = shift @entry;
166
167 $widget->signal_connect (changed => sub {
168 my $new = $vals[$_[0]->get_history];
169
170 if ($new ne $$ref) {
171 $$ref = $new;
172 $cb->($new) if $cb;
173 }
174 });
175
176 $widget;
177}
178
179sub textentry {
180 my ($ref, $width, $cb) = @_;
181
182 my $widget = new Gtk2::Entry;
183 $widget->set (text => $$ref, width_chars => $width);
184 $widget->signal_connect (changed => sub {
185 $$ref = $_[0]->get_text;
186 $cb->($$ref) if $cb;
187 });
188
189 $widget;
190}
191
192sub numentry {
193 my ($ref, $width, $cb) = @_;
194
195 my $widget = new Gtk2::Entry;
196 $widget->set (text => $$ref, width_chars => $width);
197 eval { $widget->set (xalign => 1) }; # workaround für 2.2
198 $widget->signal_connect (changed => sub {
199 $$ref = $_[0]->get_text;
200 $cb->($$ref) if $cb;
201 });
202
203 $widget;
204}
205
206sub timeentry {
207 my ($ref, $width, $cb) = @_;
208
209 my $widget = new Gtk2::Entry;
210 $widget->set (text => util::format_time $$ref, width_chars => $width);
211 eval { $widget->set (xalign => 1) }; # workaround für 2.2
212 $widget->signal_connect (changed => sub {
213 $$ref = util::parse_time $_[0]->get_text;
214 $cb->($$ref) if $cb;
215 });
216
217 $widget;
218}
219
220sub button {
221 my ($label, $cb) = @_;
222
223 my $widget = new_with_label Gtk2::Button $label;
224 $widget->signal_connect (clicked => sub { $cb->() if $cb });
225
226 $widget;
227}
228
139package gtk::widget; 229package gtk::widget;
140 230
141# hacked gtk pseudo-widget 231# hacked gtk pseudo-widget
142 232
143sub new { 233sub new {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines