mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
# Notify about the end of slicing.
 | 
						|
# The notifications are sent out using the Growl protocol if installed, and using DBus XWindow protocol.
 | 
						|
 | 
						|
package Slic3r::GUI::Notifier;
 | 
						|
use Moo;
 | 
						|
 | 
						|
has 'growler' => (is => 'rw');
 | 
						|
 | 
						|
my $icon = Slic3r::var("Slic3r.png");
 | 
						|
 | 
						|
sub BUILD {
 | 
						|
    my ($self) = @_;
 | 
						|
    
 | 
						|
    if (eval 'use Growl::GNTP; 1') {
 | 
						|
        # register with growl
 | 
						|
        eval {
 | 
						|
            $self->growler(Growl::GNTP->new(AppName => 'Slic3r', AppIcon => $icon));
 | 
						|
            $self->growler->register([{Name => 'SKEIN_DONE', DisplayName => 'Slicing Done'}]);
 | 
						|
        };
 | 
						|
        # if register() fails (for example because of a timeout), disable growler at all
 | 
						|
        $self->growler(undef) if $@;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
sub notify {
 | 
						|
    my ($self, $message) = @_;
 | 
						|
    my $title = 'Slicing Done!';
 | 
						|
 | 
						|
    eval {
 | 
						|
        $self->growler->notify(Event => 'SKEIN_DONE', Title => $title, Message => $message)
 | 
						|
            if $self->growler;
 | 
						|
    };
 | 
						|
    # Net::DBus is broken in multithreaded environment
 | 
						|
    if (0 && eval 'use Net::DBus; 1') {
 | 
						|
        eval {
 | 
						|
            my $session = Net::DBus->session;
 | 
						|
            my $serv = $session->get_service('org.freedesktop.Notifications');
 | 
						|
            my $notifier = $serv->get_object('/org/freedesktop/Notifications',
 | 
						|
                                             'org.freedesktop.Notifications');
 | 
						|
            $notifier->Notify('Slic3r', 0, $icon, $title, $message, [], {}, -1);
 | 
						|
            undef $Net::DBus::bus_session;
 | 
						|
        };
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
1;
 |