mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-05-22 12:38:08 +08:00
ComboBox for fill density values
This commit is contained in:
parent
7421a7bf63
commit
b5b735c988
@ -262,8 +262,6 @@ sub validate {
|
|||||||
if !first { $_ eq $self->solid_fill_pattern } @{$Options->{solid_fill_pattern}{values}};
|
if !first { $_ eq $self->solid_fill_pattern } @{$Options->{solid_fill_pattern}{values}};
|
||||||
|
|
||||||
# --fill-density
|
# --fill-density
|
||||||
die "Invalid value for --fill-density\n"
|
|
||||||
if $self->fill_density < 0 || $self->fill_density > 100;
|
|
||||||
die "The selected fill pattern is not supposed to work at 100% density\n"
|
die "The selected fill pattern is not supposed to work at 100% density\n"
|
||||||
if $self->fill_density == 100
|
if $self->fill_density == 100
|
||||||
&& !first { $_ eq $self->fill_pattern } @{$Options->{solid_fill_pattern}{values}};
|
&& !first { $_ eq $self->fill_pattern } @{$Options->{solid_fill_pattern}{values}};
|
||||||
|
@ -171,19 +171,27 @@ sub _build_field {
|
|||||||
# default width on Windows is too large
|
# default width on Windows is too large
|
||||||
my $size = Wx::Size->new($opt->{width} || 60, $opt->{height} || -1);
|
my $size = Wx::Size->new($opt->{width} || 60, $opt->{height} || -1);
|
||||||
|
|
||||||
$field = $opt->{type} eq 'i'
|
|
||||||
? Wx::SpinCtrl->new($self->parent, -1, $opt->{default}, wxDefaultPosition, $size, $style, $opt->{min} || 0, $opt->{max} || 2147483647, $opt->{default})
|
|
||||||
: Wx::TextCtrl->new($self->parent, -1, $opt->{default}, wxDefaultPosition, $size, $style);
|
|
||||||
$field->Disable if $opt->{readonly};
|
|
||||||
|
|
||||||
my $on_change = sub { $self->_on_change($opt_key, $field->GetValue) };
|
my $on_change = sub { $self->_on_change($opt_key, $field->GetValue) };
|
||||||
if ($opt->{type} eq 'i') {
|
if ($opt->{type} eq 'i') {
|
||||||
|
$field = Wx::SpinCtrl->new($self->parent, -1, $opt->{default}, wxDefaultPosition, $size, $style, $opt->{min} || 0, $opt->{max} || 2147483647, $opt->{default});
|
||||||
$self->_setters->{$opt_key} = sub { $field->SetValue($_[0]) };
|
$self->_setters->{$opt_key} = sub { $field->SetValue($_[0]) };
|
||||||
EVT_SPINCTRL ($self->parent, $field, $on_change);
|
EVT_SPINCTRL ($self->parent, $field, $on_change);
|
||||||
|
} elsif ($opt->{values}) {
|
||||||
|
$field = Wx::ComboBox->new($self->parent, -1, $opt->{default}, wxDefaultPosition, $size, $opt->{labels} || $opt->{values});
|
||||||
|
$self->_setters->{$opt_key} = sub {
|
||||||
|
$field->SetValue($_[0]);
|
||||||
|
};
|
||||||
|
EVT_COMBOBOX($self->parent, $field, sub {
|
||||||
|
$field->SetValue($opt->{values}[ $field->GetSelection ]); # set the text field to the selected value
|
||||||
|
$self->_on_change($opt_key, $on_change);
|
||||||
|
});
|
||||||
|
EVT_TEXT($self->parent, $field, $on_change);
|
||||||
} else {
|
} else {
|
||||||
|
$field = Wx::TextCtrl->new($self->parent, -1, $opt->{default}, wxDefaultPosition, $size, $style);
|
||||||
$self->_setters->{$opt_key} = sub { $field->ChangeValue($_[0]) };
|
$self->_setters->{$opt_key} = sub { $field->ChangeValue($_[0]) };
|
||||||
EVT_TEXT ($self->parent, $field, $on_change);
|
EVT_TEXT ($self->parent, $field, $on_change);
|
||||||
}
|
}
|
||||||
|
$field->Disable if $opt->{readonly};
|
||||||
$tooltip .= " (default: " . $opt->{default} . ")" if ($opt->{default});
|
$tooltip .= " (default: " . $opt->{default} . ")" if ($opt->{default});
|
||||||
} elsif ($opt->{type} eq 'bool') {
|
} elsif ($opt->{type} eq 'bool') {
|
||||||
$field = Wx::CheckBox->new($self->parent, -1, "");
|
$field = Wx::CheckBox->new($self->parent, -1, "");
|
||||||
|
@ -247,6 +247,34 @@ class PrintConfigDef
|
|||||||
Options["fill_density"].tooltip = "Density of internal infill, expressed in the range 0% - 100%.";
|
Options["fill_density"].tooltip = "Density of internal infill, expressed in the range 0% - 100%.";
|
||||||
Options["fill_density"].sidetext = "%";
|
Options["fill_density"].sidetext = "%";
|
||||||
Options["fill_density"].cli = "fill-density=s";
|
Options["fill_density"].cli = "fill-density=s";
|
||||||
|
Options["fill_density"].min = 0;
|
||||||
|
Options["fill_density"].max = 100;
|
||||||
|
Options["fill_density"].enum_values.push_back("5");
|
||||||
|
Options["fill_density"].enum_values.push_back("10");
|
||||||
|
Options["fill_density"].enum_values.push_back("15");
|
||||||
|
Options["fill_density"].enum_values.push_back("20");
|
||||||
|
Options["fill_density"].enum_values.push_back("25");
|
||||||
|
Options["fill_density"].enum_values.push_back("30");
|
||||||
|
Options["fill_density"].enum_values.push_back("40");
|
||||||
|
Options["fill_density"].enum_values.push_back("50");
|
||||||
|
Options["fill_density"].enum_values.push_back("60");
|
||||||
|
Options["fill_density"].enum_values.push_back("70");
|
||||||
|
Options["fill_density"].enum_values.push_back("80");
|
||||||
|
Options["fill_density"].enum_values.push_back("90");
|
||||||
|
Options["fill_density"].enum_values.push_back("100");
|
||||||
|
Options["fill_density"].enum_labels.push_back("5%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("10%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("15%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("20%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("25%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("30%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("40%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("50%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("60%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("70%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("80%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("90%");
|
||||||
|
Options["fill_density"].enum_labels.push_back("100%");
|
||||||
|
|
||||||
Options["fill_pattern"].type = coEnum;
|
Options["fill_pattern"].type = coEnum;
|
||||||
Options["fill_pattern"].label = "Fill pattern";
|
Options["fill_pattern"].label = "Fill pattern";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user