From f38f2f139ee11642a1e922da1a27ff7adbda4fce Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci <aar@cpan.org> Date: Mon, 18 Jun 2012 11:26:21 +0200 Subject: [PATCH] Make window resizable --- lib/Slic3r/Config.pm | 14 ++++++++------ lib/Slic3r/GUI.pm | 8 ++------ lib/Slic3r/GUI/OptionsGroup.pm | 6 ++++-- lib/Slic3r/GUI/Plater.pm | 2 +- lib/Slic3r/GUI/SkeinPanel.pm | 2 +- lib/Slic3r/GUI/Tab.pm | 17 ++++++++++------- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/lib/Slic3r/Config.pm b/lib/Slic3r/Config.pm index 2a413b5f3..c9a4647b2 100644 --- a/lib/Slic3r/Config.pm +++ b/lib/Slic3r/Config.pm @@ -16,7 +16,7 @@ our $Options = { cli => 'notes=s', type => 's', multiline => 1, - width => 450, + full_width => 1, height => 130, serialize => sub { join '\n', split /\R/, $_[0] }, deserialize => sub { join "\n", split /\\n/, $_[0] }, @@ -33,7 +33,7 @@ our $Options = { label => 'Output filename format', cli => 'output-filename-format=s', type => 's', - width => 300, + full_width => 1, }, # printer options @@ -319,7 +319,7 @@ our $Options = { cli => 'start-gcode=s', type => 's', multiline => 1, - width => 350, + full_width => 1, height => 120, serialize => sub { join '\n', split /\R+/, $_[0] }, deserialize => sub { join "\n", split /\\n/, $_[0] }, @@ -329,7 +329,7 @@ our $Options = { cli => 'end-gcode=s', type => 's', multiline => 1, - width => 350, + full_width => 1, height => 120, serialize => sub { join '\n', split /\R+/, $_[0] }, deserialize => sub { join "\n", split /\\n/, $_[0] }, @@ -339,7 +339,7 @@ our $Options = { cli => 'layer-gcode=s', type => 's', multiline => 1, - width => 350, + full_width => 1, height => 50, serialize => sub { join '\n', split /\R+/, $_[0] }, deserialize => sub { join "\n", split /\\n/, $_[0] }, @@ -349,7 +349,7 @@ our $Options = { cli => 'post-process=s@', type => 's@', multiline => 1, - width => 350, + full_width => 1, height => 60, serialize => sub { join '; ', @{$_[0]} }, deserialize => sub { [ split /\s*;\s*/, $_[0] ] }, @@ -416,12 +416,14 @@ our $Options = { sidetext => 'approximate seconds', cli => 'fan-below-layer-time=i', type => 'i', + width => 60, }, 'slowdown_below_layer_time' => { label => 'Slow down if layer print time is below', sidetext => 'approximate seconds', cli => 'slowdown-below-layer-time=i', type => 'i', + width => 60, }, 'min_print_speed' => { label => 'Min print speed', diff --git a/lib/Slic3r/GUI.pm b/lib/Slic3r/GUI.pm index b6c4c6510..90eac2132 100644 --- a/lib/Slic3r/GUI.pm +++ b/lib/Slic3r/GUI.pm @@ -21,14 +21,11 @@ sub OnInit { $self->SetAppName('Slic3r'); Slic3r::debugf "wxWidgets version %s\n", &Wx::wxVERSION_STRING; - my $frame = Wx::Frame->new( undef, -1, 'Slic3r', [-1, -1], Wx::wxDefaultSize, - wxDEFAULT_FRAME_STYLE ^ (wxRESIZE_BORDER | wxMAXIMIZE_BOX) ); + my $frame = Wx::Frame->new(undef, -1, 'Slic3r', [-1, -1], [760,500], wxDEFAULT_FRAME_STYLE); Wx::Image::AddHandler(Wx::PNGHandler->new); $frame->SetIcon(Wx::Icon->new("$Slic3r::var/Slic3r_128px.png", &Wx::wxBITMAP_TYPE_PNG) ); my $panel = Slic3r::GUI::SkeinPanel->new($frame); - my $box = Wx::BoxSizer->new(wxVERTICAL); - $box->Add($panel, 0); if (eval "use Growl::GNTP; 1") { # register growl notifications @@ -75,8 +72,7 @@ sub OnInit { # will not be handled correctly $frame->SetMenuBar($menubar); - $box->SetSizeHints($frame); - $frame->SetSizer($box); + $frame->SetMinSize($frame->GetSize); $frame->Show; $frame->Layout; diff --git a/lib/Slic3r/GUI/OptionsGroup.pm b/lib/Slic3r/GUI/OptionsGroup.pm index a2398e8df..caf9956a0 100644 --- a/lib/Slic3r/GUI/OptionsGroup.pm +++ b/lib/Slic3r/GUI/OptionsGroup.pm @@ -19,7 +19,9 @@ sub new { my $self = $class->SUPER::new($box, wxVERTICAL); my $grid_sizer = Wx::FlexGridSizer->new(scalar(@{$p{options}}), 2, ($p{no_labels} ? 1 : 2), 0); - + $grid_sizer->SetFlexibleDirection(&Wx::wxHORIZONTAL); + $grid_sizer->AddGrowableCol($p{no_labels} ? 0 : 1); + # grab the default font, to fix Windows font issues/keep things consistent my $bold_font = Wx::SystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); $bold_font->SetWeight(&Wx::wxFONTWEIGHT_BOLD); @@ -101,7 +103,7 @@ sub new { $sizer->Add($sidetext, 0, &Wx::wxLEFT, 4); $grid_sizer->Add($sizer); } else { - $grid_sizer->Add($field); + $grid_sizer->Add($field, 0, $opt->{full_width} ? &Wx::wxEXPAND : 0); } $fields{$opt_key} ||= [$field]; } diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index c9d460f30..42611295b 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -49,7 +49,7 @@ sub new { $self->{list} = Wx::ListView->new($self, -1, [-1, -1], [-1, 180], &Wx::wxLC_SINGLE_SEL | &Wx::wxLC_REPORT | &Wx::wxBORDER_DEFAULT); $self->{list}->InsertColumn(0, "Name", &Wx::wxLIST_FORMAT_LEFT, 300); $self->{list}->InsertColumn(1, "Copies", &Wx::wxLIST_FORMAT_CENTER, 50); - $self->{list}->InsertColumn(2, "Scale", &Wx::wxLIST_FORMAT_CENTER, 50); + $self->{list}->InsertColumn(2, "Scale", &Wx::wxLIST_FORMAT_CENTER, &Wx::wxLIST_AUTOSIZE_USEHEADER); EVT_LIST_ITEM_SELECTED($self, $self->{list}, \&list_item_selected); EVT_LIST_ITEM_DESELECTED($self, $self->{list}, \&list_item_deselected); diff --git a/lib/Slic3r/GUI/SkeinPanel.pm b/lib/Slic3r/GUI/SkeinPanel.pm index d60402ad5..83873d44f 100644 --- a/lib/Slic3r/GUI/SkeinPanel.pm +++ b/lib/Slic3r/GUI/SkeinPanel.pm @@ -66,7 +66,7 @@ sub new { my $sizer = Wx::BoxSizer->new(wxVERTICAL); $sizer->Add($buttons_sizer, 0, wxEXPAND | wxALL, 10); - $sizer->Add($tabpanel); + $sizer->Add($tabpanel, 1, wxEXPAND); $sizer->SetSizeHints($self); $self->SetSizer($sizer); diff --git a/lib/Slic3r/GUI/Tab.pm b/lib/Slic3r/GUI/Tab.pm index 4582a5638..70dc33de3 100644 --- a/lib/Slic3r/GUI/Tab.pm +++ b/lib/Slic3r/GUI/Tab.pm @@ -101,6 +101,7 @@ sub new { }, { title => 'Cooling thresholds', + label_width => 250, options => [qw(fan_below_layer_time slowdown_below_layer_time min_print_speed)], }, ]); @@ -132,11 +133,7 @@ sub new { { title => 'Post-processing scripts', no_labels => 1, - options => [qw(post_process)], # this is not the right place for duplicate_distance - }, - { - title => 'Other', - options => [qw(duplicate_distance)], # this is not the right place for duplicate_distance + options => [qw(post_process)], }, ]); @@ -149,6 +146,10 @@ sub new { title => 'Flow', options => [qw(bridge_flow_ratio)], }, + { + title => 'Other', + options => [qw(duplicate_distance)], + }, ]); return $self; @@ -227,13 +228,15 @@ package Slic3r::GUI::Tab::Page; use Wx qw(:sizer :progressdialog); use Wx::Event qw(); -use base 'Wx::Panel'; +use base 'Wx::ScrolledWindow'; sub new { my $class = shift; my ($parent, %params) = @_; my $self = $class->SUPER::new($parent, -1); + $self->SetScrollbars(1, 1, 1, 1); + $self->{vsizer} = Wx::BoxSizer->new(&Wx::wxVERTICAL); $self->SetSizer($self->{vsizer}); @@ -247,7 +250,7 @@ sub new { sub append_optgroup { my $self = shift; - my $optgroup = Slic3r::GUI::OptionsGroup->new($self, @_, label_width => 200); + my $optgroup = Slic3r::GUI::OptionsGroup->new($self, label_width => 200, @_); $self->{vsizer}->Add($optgroup, 0, wxEXPAND | wxALL, 5); }