Karger78 has asked for the wisdom of the Perl Monks concerning the following question:

Here is my question, I am using the acme progress bar. It seems to work fine, however it's printing the text to the console. My app is using win32::GUI. I want the output to be printed to a textfield that i have created. All my other logging is printed to the text field. Here is an example of my print statement.
$main->CaseSearchResults->Append("Search found several tickets\r\r\n") +;
I have tried several times to make the progress print out to the text box, but I am unable to. Any ideas?

Replies are listed 'Best First'.
Re: use Acme::ProgressBar;
by ikegami (Patriarch) on Sep 24, 2009 at 16:12 UTC
    Beware of Acme:: modules. They are jokes. This one executes the call back, finds how long it took, then displays a progress bar that's 10x that long. Since the code has already been executed in the first 10%, it does nothing 90% of the time the progress bar is displayed. That's why progress { sleep 5 }; takes 50s to complete.
      Thanks for the heads up. I am trying to get the GUI progress bar to work. Do you guys have anyworking examples. Here is the issue now. my script calls a sub function that searches a network path and add all the files to an array, then it prints out the array in a GUI text box so the end user can see the results. The problem now is that the progress bar is not incremeting during the whole search function, when it's done the sub funtion then it populates the serach bar. Bascally what I want to do is have a progress bar displaying so my end users don't think the program has froze while it's doing it's searching. This is what i have thus far.
      $main->AddProgressBar(-name =>'pbar', -height=>20, -width =>175, -pos => [5,550], ); $main->AddTimer('T1', 1000); $main->T1->Interval(0); sub T1_Timer{ $main->pbar->DeltaPos(1); } sub btnFindLogs_Click {#start sub ##Start Timer $main->pbar->Interval(1) $CaseNumber = $main->CaseNumber->Text; $EmailAddress = $main->EmailAddress->Text; #$main->CaseSearchResults->Reset(); if ($CaseNumber eq "" || $EmailAddress eq "") { $main->CaseSearchResults->Append("No case number was entered + or email address was provided. Please try again. \r\r\n"); }else { my @ep = split ("@",$EmailAddress); $userName = $ep[0]; opendir(my $dir, $logSite) or die "Can't open '$logSite': $!"; for my $file (readdir($dir)) { for my $pattern ($CaseNumber) { if ($file =~ /$pattern/) { push @return, $file; # This avoids having the file in the result twice last; } } } @return = sort (@return); $size = @return; #end sub ##Populate text box with the serach resutls. foreach(@return) { $main->CaseSearchResults->Append($_."\r\r\n");} }#end of else if ($size > 0) { #if the size of the array is bigger then zero, then enable + the check boxes, if not, print that no logs were found. $main->chkCpRimNet->Enable();$main->cpLogsLocal->Enable(); +$main->chkSubmitHct->Enable(); #$main->btnClearLogs->Enable(); }else{$main->CaseSearchResults->Append("No Logs were found +\r\r\n");} }
Re: use Acme::ProgressBar;
by moritz (Cardinal) on Sep 24, 2009 at 15:57 UTC
    I hope you are aware the modules in the Acme:: namespace are mostly meant as jokes.

    If you want something for your GUI, look for a GUI widget instead - a text based progress bar won't do you any good.

    Perl 6 - links to (nearly) everything that is Perl 6.
      O, didn't know that. The progress bar does work good. I just want it to print out in a textbox instead of the console.
Re: use Acme::ProgressBar;
by Anonymous Monk on Sep 24, 2009 at 16:10 UTC