12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # 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;
|