mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Reworked the plater UI messages to standard wxWidgets wxCommandEvent
messages to support receiving status line updates from the C++ code.
This commit is contained in:
		
							parent
							
								
									a5e48cdf4d
								
							
						
					
					
						commit
						6e80a9111c
					
				
					 1 changed files with 23 additions and 11 deletions
				
			
		| 
						 | 
					@ -63,7 +63,10 @@ sub new {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    $self->{print}->set_status_cb(sub {
 | 
					    $self->{print}->set_status_cb(sub {
 | 
				
			||||||
        my ($percent, $message) = @_;
 | 
					        my ($percent, $message) = @_;
 | 
				
			||||||
        Wx::PostEvent($self, Wx::PlThreadEvent->new(-1, $PROGRESS_BAR_EVENT, shared_clone([$percent, $message])));
 | 
					        my $event = Wx::CommandEvent->new($PROGRESS_BAR_EVENT);
 | 
				
			||||||
 | 
					        $event->SetString($message);
 | 
				
			||||||
 | 
					        $event->SetInt($percent);
 | 
				
			||||||
 | 
					        Wx::PostEvent($self, $event);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    # Initialize preview notebook
 | 
					    # Initialize preview notebook
 | 
				
			||||||
| 
						 | 
					@ -307,23 +310,22 @@ sub new {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    EVT_COMMAND($self, -1, $PROGRESS_BAR_EVENT, sub {
 | 
					    EVT_COMMAND($self, -1, $PROGRESS_BAR_EVENT, sub {
 | 
				
			||||||
        my ($self, $event) = @_;
 | 
					        my ($self, $event) = @_;
 | 
				
			||||||
        my ($percent, $message) = @{$event->GetData};
 | 
					        $self->on_progress_event($event->GetInt, $event->GetString);
 | 
				
			||||||
        $self->on_progress_event($percent, $message);
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    EVT_COMMAND($self, -1, $ERROR_EVENT, sub {
 | 
					    EVT_COMMAND($self, -1, $ERROR_EVENT, sub {
 | 
				
			||||||
        my ($self, $event) = @_;
 | 
					        my ($self, $event) = @_;
 | 
				
			||||||
        Slic3r::GUI::show_error($self, @{$event->GetData});
 | 
					        Slic3r::GUI::show_error($self, $event->GetString);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    EVT_COMMAND($self, -1, $EXPORT_COMPLETED_EVENT, sub {
 | 
					    EVT_COMMAND($self, -1, $EXPORT_COMPLETED_EVENT, sub {
 | 
				
			||||||
        my ($self, $event) = @_;
 | 
					        my ($self, $event) = @_;
 | 
				
			||||||
        $self->on_export_completed($event->GetData);
 | 
					        $self->on_export_completed($event->GetInt);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    EVT_COMMAND($self, -1, $PROCESS_COMPLETED_EVENT, sub {
 | 
					    EVT_COMMAND($self, -1, $PROCESS_COMPLETED_EVENT, sub {
 | 
				
			||||||
        my ($self, $event) = @_;
 | 
					        my ($self, $event) = @_;
 | 
				
			||||||
        $self->on_process_completed($event->GetData);
 | 
					        $self->on_process_completed($event->GetInt ? undef : $event->GetString);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					@ -1184,12 +1186,15 @@ sub start_background_process {
 | 
				
			||||||
        eval {
 | 
					        eval {
 | 
				
			||||||
            $self->{print}->process;
 | 
					            $self->{print}->process;
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					        my $event = Wx::CommandEvent->new($PROCESS_COMPLETED_EVENT);
 | 
				
			||||||
        if ($@) {
 | 
					        if ($@) {
 | 
				
			||||||
            Slic3r::debugf "Background process error: $@\n";
 | 
					            Slic3r::debugf "Background process error: $@\n";
 | 
				
			||||||
            Wx::PostEvent($self, Wx::PlThreadEvent->new(-1, $PROCESS_COMPLETED_EVENT, $@));
 | 
					            $event->SetInt(0);
 | 
				
			||||||
 | 
					            $event->SetString($@);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            Wx::PostEvent($self, Wx::PlThreadEvent->new(-1, $PROCESS_COMPLETED_EVENT, undef));
 | 
					            $event->SetInt(1);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        Wx::PostEvent($self, $event);
 | 
				
			||||||
        Slic3r::thread_cleanup();
 | 
					        Slic3r::thread_cleanup();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    Slic3r::debugf "Background processing started.\n";
 | 
					    Slic3r::debugf "Background processing started.\n";
 | 
				
			||||||
| 
						 | 
					@ -1367,12 +1372,19 @@ sub on_process_completed {
 | 
				
			||||||
            eval {
 | 
					            eval {
 | 
				
			||||||
                $_thread_self->{print}->export_gcode(output_file => $_thread_self->{export_gcode_output_file});
 | 
					                $_thread_self->{print}->export_gcode(output_file => $_thread_self->{export_gcode_output_file});
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					            my $export_completed_event = Wx::CommandEvent->new($EXPORT_COMPLETED_EVENT);
 | 
				
			||||||
            if ($@) {
 | 
					            if ($@) {
 | 
				
			||||||
                Wx::PostEvent($_thread_self, Wx::PlThreadEvent->new(-1, $ERROR_EVENT, shared_clone([ $@ ])));
 | 
					                {
 | 
				
			||||||
                Wx::PostEvent($_thread_self, Wx::PlThreadEvent->new(-1, $EXPORT_COMPLETED_EVENT, 0));
 | 
					                    my $error_event = Wx::CommandEvent->new($ERROR_EVENT);
 | 
				
			||||||
 | 
					                    $error_event->SetString($@);
 | 
				
			||||||
 | 
					                    Wx::PostEvent($_thread_self, $error_event);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                $export_completed_event->SetInt(0);
 | 
				
			||||||
 | 
					                $export_completed_event->SetString($@);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                Wx::PostEvent($_thread_self, Wx::PlThreadEvent->new(-1, $EXPORT_COMPLETED_EVENT, 1));
 | 
					                $export_completed_event->SetInt(1);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            Wx::PostEvent($_thread_self, $export_completed_event);
 | 
				
			||||||
            Slic3r::thread_cleanup();
 | 
					            Slic3r::thread_cleanup();
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        Slic3r::debugf "Background G-code export started.\n";
 | 
					        Slic3r::debugf "Background G-code export started.\n";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue