From 3fa58cf85bd6953c9d24b90f74464ca07282e079 Mon Sep 17 00:00:00 2001 From: Henrik Brix Andersen Date: Tue, 3 Jul 2012 17:21:32 +0200 Subject: [PATCH] Add a friendly index --- lib/Slic3r/GUI/ConfigWizard.pm | 103 +++++++++++++++++++++++++++------ var/bullet_black.png | Bin 0 -> 211 bytes var/bullet_blue.png | Bin 0 -> 289 bytes var/bullet_white.png | Bin 0 -> 201 bytes 4 files changed, 85 insertions(+), 18 deletions(-) create mode 100755 var/bullet_black.png create mode 100755 var/bullet_blue.png create mode 100755 var/bullet_white.png diff --git a/lib/Slic3r/GUI/ConfigWizard.pm b/lib/Slic3r/GUI/ConfigWizard.pm index 94f5ff83..9dd382cd 100644 --- a/lib/Slic3r/GUI/ConfigWizard.pm +++ b/lib/Slic3r/GUI/ConfigWizard.pm @@ -3,15 +3,13 @@ use strict; use warnings; use utf8; -use Wx qw(:bitmap); +use Wx; use base 'Wx::Wizard'; sub new { my $class = shift; my ($parent) = @_; - # TODO: Add instructional bitmaps - my $self = $class->SUPER::new($parent, -1, 'Configuration Wizard', - Wx::Bitmap->new("$Slic3r::var/Slic3r_128px.png", wxBITMAP_TYPE_PNG)); + my $self = $class->SUPER::new($parent, -1, 'Configuration Wizard'); # Start from sane defaults $self->{old} = Slic3r::Config->current; @@ -26,6 +24,8 @@ sub new { $self->add_page(Slic3r::GUI::ConfigWizard::Page::BedTemperature->new($self)); $self->add_page(Slic3r::GUI::ConfigWizard::Page::Finished->new($self)); + $_->build_index for @{$self->{pages}}; + return $self; } @@ -77,7 +77,7 @@ sub new { my $callback = $params{callback} || sub {}; # label - my $label = Wx::StaticText->new($parent, -1, "$opt->{label}:", wxDefaultPosition, [$label_width, -1]); + my $label = Wx::StaticText->new($parent, -1, "$opt->{label}:", wxDefaultPosition, wxDefaultSize); $label->Wrap($label_width); $self->Add($label, 1, wxEXPAND); @@ -135,18 +135,62 @@ sub new { return $self; } -package Slic3r::GUI::ConfigWizard::Page; -use Wx qw(:font :misc :sizer :staticline :systemsettings); -use base 'Wx::WizardPage'; +package Slic3r::GUI::ConfigWizard::Index; +use Wx qw(:bitmap :font :misc :sizer :systemsettings); +use base 'Wx::Panel'; sub new { my $class = shift; my ($parent, $title) = @_; my $self = $class->SUPER::new($parent); - $self->{width} = 400; - $self->{vsizer} = Wx::BoxSizer->new(wxVERTICAL); - $self->SetSizer($self->{vsizer}); + $self->{sizer} = Wx::FlexGridSizer->new(0, 2, 5, 0); + $self->SetSizer($self->{sizer}); + + my $bitmap = Wx::StaticBitmap->new($self, -1, Wx::Bitmap->new("$Slic3r::var/bullet_blue.png", wxBITMAP_TYPE_PNG)); + $self->{sizer}->Add($bitmap, 0, wxALIGN_CENTER_VERTICAL, 0); + + my $text = Wx::StaticText->new($self, -1, $title, wxDefaultPosition, wxDefaultSize); + $self->{sizer}->Add($text, 0, wxALIGN_CENTER_VERTICAL, 0); + + return $self; +} + +sub prepend_title { + my $self = shift; + my ($title) = @_; + + my $text = Wx::StaticText->new($self, -1, $title, wxDefaultPosition, wxDefaultSize); + $self->{sizer}->Prepend($text, 0, wxALIGN_CENTER_VERTICAL, 0); + + my $bitmap = Wx::StaticBitmap->new($self, -1, Wx::Bitmap->new("$Slic3r::var/bullet_black.png", wxBITMAP_TYPE_PNG)); + $self->{sizer}->Prepend($bitmap, 0, wxALIGN_CENTER_VERTICAL, 0); +} + +sub append_title { + my $self = shift; + my ($title) = @_; + + my $bitmap = Wx::StaticBitmap->new($self, -1, Wx::Bitmap->new("$Slic3r::var/bullet_white.png", wxBITMAP_TYPE_PNG)); + $self->{sizer}->Add($bitmap, 0, wxALIGN_CENTER_VERTICAL, 0); + + my $text = Wx::StaticText->new($self, -1, $title, wxDefaultPosition, wxDefaultSize); + $text->SetForegroundColour(Wx::Colour->new(128, 128, 128)); + $self->{sizer}->Add($text, 0, wxALIGN_CENTER_VERTICAL, 0); +} + +package Slic3r::GUI::ConfigWizard::Page; +use Wx qw(:font :misc :sizer :staticline :systemsettings); +use base 'Wx::WizardPage'; + +sub new { + my $class = shift; + my ($parent, $title, $short_title) = @_; + my $self = $class->SUPER::new($parent); + + my $sizer = Wx::FlexGridSizer->new(0, 2, 10, 10); + $sizer->AddStretchSpacer(0); + $self->SetSizer($sizer); # title my $text = Wx::StaticText->new($self, -1, $title, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); @@ -154,9 +198,17 @@ sub new { $bold_font->SetWeight(wxFONTWEIGHT_BOLD); $bold_font->SetPointSize(14); $text->SetFont($bold_font); - $self->{vsizer}->Add($text, 0, wxALIGN_LEFT | wxALL, 10); - my $line = Wx::StaticLine->new($self, -1, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL, ''); - $self->{vsizer}->Add($line, 0, wxEXPAND| wxALL, 10); + $sizer->Add($text, 0, wxALIGN_LEFT, 0); + + # index + $self->{short_title} = $short_title ? $short_title : $title; + $self->{index} = Slic3r::GUI::ConfigWizard::Index->new($self, $self->{short_title}); + $sizer->Add($self->{index}, 0, wxTOP | wxRIGHT, 10); + + # contents + $self->{width} = 400; + $self->{vsizer} = Wx::BoxSizer->new(wxVERTICAL); + $sizer->Add($self->{vsizer}, 0, wxEXPAND, 0); return $self; } @@ -167,7 +219,8 @@ sub append_text { my $para = Wx::StaticText->new($self, -1, $text, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); $para->Wrap($self->{width}); - $self->{vsizer}->Add($para, 0, wxALIGN_LEFT | wxALL, 10); + $para->SetMinSize([$self->{width}, -1]); + $self->{vsizer}->Add($para, 0, wxALIGN_LEFT | wxTOP | wxBOTTOM, 10); } sub append_option { @@ -179,7 +232,7 @@ sub append_option { my ($opt_key, $value) = @_; $self->{options}->{$opt_key} = $value; }); - $self->{vsizer}->Add($option, 0, wxEXPAND | wxALL, 10); + $self->{vsizer}->Add($option, 0, wxEXPAND | wxTOP | wxBOTTOM, 10); } sub apply { @@ -209,13 +262,27 @@ sub GetNext { return $self->{next_page}; } +sub get_short_title { + my $self = shift; + return $self->{short_title}; +} + +sub build_index { + my $self = shift; + + my $page = $self; + $self->{index}->prepend_title($page->get_short_title) while ($page = $page->GetPrev); + $page = $self; + $self->{index}->append_title($page->get_short_title) while ($page = $page->GetNext); +} + package Slic3r::GUI::ConfigWizard::Page::Welcome; use base 'Slic3r::GUI::ConfigWizard::Page'; sub new { my $class = shift; my ($parent) = @_; - my $self = $class->SUPER::new($parent, 'Welcome to the Slic3r Configuration Wizard'); + my $self = $class->SUPER::new($parent, 'Welcome to the Slic3r Configuration Wizard', 'Welcome'); $self->append_text('Hello, welcome to Slic3r! This wizard helps you with the initial configuration; just a few settings and you will be ready to print.'); $self->append_text('To import an existing configuration instead, cancel this wizard and use the Open Config menu item found in the File menu.'); @@ -354,7 +421,7 @@ use base 'Slic3r::GUI::ConfigWizard::Page'; sub new { my $class = shift; my ($parent) = @_; - my $self = $class->SUPER::new($parent, 'Congratulations!'); + my $self = $class->SUPER::new($parent, 'Congratulations!', 'Finish'); $self->append_text('You have successfully completed the Slic3r Configuration Wizard. ' . 'Slic3r is now configured for your printer and filament.'); diff --git a/var/bullet_black.png b/var/bullet_black.png new file mode 100755 index 0000000000000000000000000000000000000000..57619706d10d9736b1849a83f2c5694fbe09c53b GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h^>lFz(Kw&{<9vg>5sw~gS5O!4 zr|{HuUFIBKiQyL}eBJ-L{`UVT|6_O~L{G%N{Wbre{kQtZ_0LvEhDX@>Vt8IAj)#jg!+?Z23wnf7d! zNAH#A4i6V)y_WtvZQ1hT)TAWgjoY{t%BOsI;8VOzQvNniDZk5xCy$)UQWb1PRjRoz l1#moJy|?3|{zvx%+C#5QQ<|d}62BjvZR2H60wE-%M_H=O!(Kvthf+1gnf`Cilxr3SC zCq+y2HhAz(;&}R`x^q^&(wiOs&2u-u^*?dO$=Q}CfYva0y85}Sb4q9e0M-pfO8@`> literal 0 HcmV?d00001