working C++ status bar.

Signed-off-by: tamasmeszaros <meszaros.q@gmail.com>
This commit is contained in:
tamasmeszaros 2018-08-30 11:40:06 +02:00
parent 9e2d48ff3b
commit 15ad0ef2f2
12 changed files with 75 additions and 201 deletions

View file

@ -63,15 +63,11 @@ sub new {
# initialize status bar
$self->{statusbar} = Slic3r::GUI::ProgressStatusBar->new();
# $self->{statusbar}->SetParent($self, Wx::NewId);
$self->{statusbar}->Embed;
$self->{statusbar}->SetStatusText(L("Version ").$Slic3r::VERSION.L(" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases"));
# Make the global status bar and its progress indicator available in C++
$appController->set_global_progress_indicator(
$self->{statusbar}->GetProgId(),
$self->{statusbar}->GetId(),
);
$appController->set_global_progress_indicator($self->{statusbar});
$appController->set_model($self->{plater}->{model});
$appController->set_print($self->{plater}->{print});

View file

@ -1569,7 +1569,9 @@ sub on_progress_event {
my ($self, $percent, $message) = @_;
$self->statusbar->SetProgress($percent);
$self->statusbar->SetStatusText("$message…");
# TODO: three dot character is not properly translated into C++
# $self->statusbar->SetStatusText("$message…");
$self->statusbar->SetStatusText("$message...");
}
# Called when the G-code export finishes, either successfully or with an error.

View file

@ -1,146 +1,18 @@
# Status bar at the bottom of the main screen.
# Now it just implements cancel cb on perl side, every other functionality is
# in C++
package Slic3r::GUI::ProgressStatusBar;
package Slic3r::GUI::ProgressStatusBar;
use strict;
use warnings;
# use Wx qw(:gauge :misc);
# use base 'Wx::StatusBar';
our $cancel_cb;
# sub new {
# my $class = shift;
# my $self = $class->SUPER::new(@_);
# $self->{busy} = 0;
# $self->{timer} = Wx::Timer->new($self);
# $self->{prog} = Wx::Gauge->new($self, wxGA_HORIZONTAL, 100, wxDefaultPosition, wxDefaultSize);
# $self->{prog}->Hide;
# $self->{cancelbutton} = Wx::Button->new($self, -1, "Cancel", wxDefaultPosition, wxDefaultSize);
# $self->{cancelbutton}->Hide;
# $self->SetFieldsCount(3);
# $self->SetStatusWidths(-1, 150, 155);
# Wx::Event::EVT_TIMER($self, \&OnTimer, $self->{timer});
# Wx::Event::EVT_SIZE($self, \&OnSize);
# Wx::Event::EVT_BUTTON($self, $self->{cancelbutton}, sub {
# $self->{cancel_cb}->();
# $self->{cancelbutton}->Hide;
# });
# return $self;
# }
# sub DESTROY {
# my $self = shift;
# $self->{timer}->Stop if $self->{timer} && $self->{timer}->IsRunning;
# }
# sub OnSize {
# my ($self, $event) = @_;
# my %fields = (
# # 0 is reserved for status text
# 1 => $self->{cancelbutton},
# 2 => $self->{prog},
# );
# foreach (keys %fields) {
# my $rect = $self->GetFieldRect($_);
# my $offset = &Wx::wxGTK ? 1 : 0; # add a cosmetic 1 pixel offset on wxGTK
# my $pos = [$rect->GetX + $offset, $rect->GetY + $offset];
# $fields{$_}->Move($pos);
# $fields{$_}->SetSize($rect->GetWidth - $offset, $rect->GetHeight);
# }
# $event->Skip;
# }
# sub OnTimer {
# my ($self, $event) = @_;
# if ($self->{prog}->IsShown) {
# $self->{timer}->Stop;
# }
# $self->{prog}->Pulse if $self->{_busy};
# }
sub SetCancelCallback {
my $self = shift;
my ($cb) = @_;
$cancel_cb = $cb;
# $cb ? $self->{cancelbutton}->Show : $self->{cancelbutton}->Hide;
$cb ? $self->ShowCancelButton : $self->HideCancelButton;
}
# sub Run {
# my $self = shift;
# my $rate = shift || 100;
# if (!$self->{timer}->IsRunning) {
# $self->{timer}->Start($rate);
# }
# }
# sub GetProgress {
# my $self = shift;
# return $self->{prog}->GetValue;
# }
# sub SetProgress {
# my $self = shift;
# my ($val) = @_;
# if (!$self->{prog}->IsShown) {
# $self->ShowProgress(1);
# }
# if ($val == $self->{prog}->GetRange) {
# $self->{prog}->SetValue(0);
# $self->ShowProgress(0);
# } else {
# $self->{prog}->SetValue($val);
# }
# }
# sub SetRange {
# my $self = shift;
# my ($val) = @_;
# if ($val != $self->{prog}->GetRange) {
# $self->{prog}->SetRange($val);
# }
# }
# sub ShowProgress {
# my $self = shift;
# my ($show) = @_;
# $self->{prog}->Show($show);
# $self->{prog}->Pulse;
# }
# sub StartBusy {
# my $self = shift;
# my $rate = shift || 100;
# $self->{_busy} = 1;
# $self->ShowProgress(1);
# if (!$self->{timer}->IsRunning) {
# $self->{timer}->Start($rate);
# }
# }
# sub StopBusy {
# my $self = shift;
# $self->{timer}->Stop;
# $self->ShowProgress(0);
# $self->{prog}->SetValue(0);
# $self->{_busy} = 0;
# }
# sub IsBusy {
# my $self = shift;
# return $self->{_busy};
# }
1;