> We'd like to use threads in one of our Linux GTK Wx GUI's. The
> purpose of the thread is to check some text files for changes
> every 2
> seconds.
Hi Mike,
I use Wx::Timer, which is wonderful and doesn't degrade performance. I use
it to update status of controls during media playing (I don't use the
standard toolbar).
I do use threads, but the only information I get back is whether it has
completed or not, but it works fine although a little more complicated than
Timer.
Good luck.
Steve
Abbreviated example.
At start of program:
#
# Wx::Timer
#
$i_frame->{TIMER} = Wx::Timer->new( $i_frame, 1 );
$i_frame->{TIMER}->Start( 200 );
Then later on:
sub on_timer {
#
# subroutine to perform periodic processing
#
my( $i_frame, $event ) = @_;
my $time_in_msecs;
my $time_in_secs;
######## update slider control position
#################################################
if ($gl_media_control_available == 1){
# If wxMediaCtrl available
$time_in_msecs=$i_frame->{Ctl_Media}->Tell();
# Obtains the current position in time within the movie in milliseconds.
$time_in_secs=$time_in_msecs/1000;
$i_frame->{Ctl_Media_Slider_Sld}->SetValue($time_in_secs);
# Set slider to video position in secs.
my $length_in_secs=($i_frame->{Ctl_Media}->Length())/1000;
# Only works after a 'play' command.
my $ss = $length_in_secs % 60;
if (length($ss) == 1) {$ss = "0" . $ss}
# zero-pad seconds
my $loc_length_hhhss = int($length_in_secs / 60) . ":" . $ss
;
$ss = $time_in_secs % 60;
if (length($ss) == 1) {$ss = "0" . $ss}
# zerp pad seconds
my $loc_time_hhhss = int($time_in_secs / 60) . ":" . $ss ;
$i_frame->{Ctl_Media_Slider_End_Lbl}->SetLabel("
".$loc_time_hhhss."/".$loc_length_hhhss); # Set max video length in mm:ss.
}
}