mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Editable text control for specifying the cut Z in cut dialog
This commit is contained in:
		
							parent
							
								
									70e8db8a0a
								
							
						
					
					
						commit
						6e231a8cae
					
				
					 1 changed files with 37 additions and 11 deletions
				
			
		|  | @ -512,11 +512,11 @@ extends 'Slic3r::GUI::OptionsGroup::Field::wxSizer'; | |||
| 
 | ||||
| has 'scale'         => (is => 'rw', default => sub { 10 }); | ||||
| has 'slider'        => (is => 'rw'); | ||||
| has 'statictext'    => (is => 'rw'); | ||||
| has 'textctrl'      => (is => 'rw'); | ||||
| 
 | ||||
| use Slic3r::Geometry qw(X Y); | ||||
| use Wx qw(:misc :sizer); | ||||
| use Wx::Event qw(EVT_SLIDER); | ||||
| use Wx::Event qw(EVT_SLIDER EVT_TEXT EVT_KILL_FOCUS); | ||||
| 
 | ||||
| sub BUILD { | ||||
|     my ($self) = @_; | ||||
|  | @ -534,25 +534,35 @@ sub BUILD { | |||
|     ); | ||||
|     $self->slider($slider); | ||||
|      | ||||
|     my $statictext = Wx::StaticText->new($self->parent, -1, $slider->GetValue/$self->scale, | ||||
|         wxDefaultPosition, [20,-1]); | ||||
|     $self->statictext($statictext); | ||||
|     my $textctrl = Wx::TextCtrl->new($self->parent, -1, $slider->GetValue/$self->scale, | ||||
|         wxDefaultPosition, [50,-1]); | ||||
|     $self->textctrl($textctrl); | ||||
|      | ||||
|     $sizer->Add($slider, 1, wxALIGN_CENTER_VERTICAL, 0); | ||||
|     $sizer->Add($statictext, 0, wxALIGN_CENTER_VERTICAL, 0); | ||||
|     $sizer->Add($textctrl, 0, wxALIGN_CENTER_VERTICAL, 0); | ||||
|      | ||||
|     EVT_SLIDER($self->parent, $slider, sub { | ||||
|         $self->_update_statictext; | ||||
|         $self->_update_textctrl; | ||||
|         $self->_on_change($self->option->opt_id); | ||||
|     }); | ||||
|     EVT_TEXT($self->parent, $textctrl, sub { | ||||
|         my $value = $textctrl->GetValue; | ||||
|         if ($value =~ /^-?\d+(\.\d*)?$/) { | ||||
|             $self->set_value($value); | ||||
|             $self->_on_change($self->option->opt_id); | ||||
|         } | ||||
|     }); | ||||
|     EVT_KILL_FOCUS($textctrl, sub { | ||||
|         $self->_on_kill_focus($self->option->opt_id, @_); | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| sub set_value { | ||||
|     my ($self, $value) = @_; | ||||
|      | ||||
|     $self->disable_change_event(1); | ||||
|     $self->slider->SetValue($value); | ||||
|     $self->_update_statictext; | ||||
|     $self->slider->SetValue($value*$self->scale); | ||||
|     $self->_update_textctrl; | ||||
|     $self->disable_change_event(0); | ||||
| } | ||||
| 
 | ||||
|  | @ -561,9 +571,25 @@ sub get_value { | |||
|     return $self->slider->GetValue/$self->scale; | ||||
| } | ||||
| 
 | ||||
| sub _update_statictext { | ||||
| sub _update_textctrl { | ||||
|     my ($self) = @_; | ||||
|     $self->statictext->SetLabel($self->get_value); | ||||
|     $self->textctrl->SetLabel($self->get_value); | ||||
| } | ||||
| 
 | ||||
| sub enable { | ||||
|     my ($self) = @_; | ||||
|      | ||||
|     $self->slider->Enable; | ||||
|     $self->textctrl->Enable; | ||||
|     $self->textctrl->SetEditable(1); | ||||
| } | ||||
| 
 | ||||
| sub disable { | ||||
|     my ($self) = @_; | ||||
|      | ||||
|     $self->slider->Disable; | ||||
|     $self->textctrl->Disable; | ||||
|     $self->textctrl->SetEditable(0); | ||||
| } | ||||
| 
 | ||||
| 1; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alessandro Ranellucci
						Alessandro Ranellucci