Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Notifier.pm « GUI « Slic3r « lib - github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a2242bcdf2d22595de85cf63a668a6edde1ea134 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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;