App-orgdaemon

 view release on metacpan or  search on metacpan

bin/org-daemon  view on Meta::CPAN

L0xvx3WDkaNoHShKz8HGr3Z9FTsDp9P5UVXF/Il5qncA4H0DqncASHVcviXWFJrJptmb842ZMswU
rQMAJEl6nTZWB7Isb6yaN/cBK05qBgs16JcFflCLFKrvhq+xMXHSZFJDAoZRJDlz/xHxYpP03qru
oFeFRfzBfpc7gWVEnnc3nm3Y+0PsFtWsWjHDmkZoqEGPAh/xuKOioAD0K5gj1dJhzvJevgIIDfS4
o7JcwlP+X37n25yPnXcOBaBnEhgD29ni9PX7CvMKaJqORRC8ciapKNYRkSTiBBlFokdWWnAdPbUk
2tnF5lg9110KRhBBIWnvNyEAAAhs/9L25srjly+GBV6MSgoGSQAcoand/GGsVTQ3N2extHrn1NRH
vP0YYAAQ0OplSy4Chb2/QFGUbsc/UZkv57WhS0363Bz92FzPwUOPXO18dvvOeIXW0tKSrNMOpj7g
k4UIKIqioDbQJEalJFuBjmEAQAhHorJcnJFLfPsjAFjf32Ct24RrqZ7vGoIXLsUj4DguIkkAEBno
570ede8yAh1J/pM/QTl+DMkyACgIYRg240qX1NdnKJn6l8Tv/PVny8plgFBr9YZ4lezz+bYtKsvj
GDHoj0qiqvBF0aVxdm12Dklrg65ezpbPh8J2mcpdvwUUePDYwcnz5zY1NXlcLse0J8TeG7Zd9cZ5
s28fAcuyrhAvhmLeW4FqZdMYdw8RCWmTkzlbPgAks+yEg42KJN+3ZDGdn8eyLI7jrMmUs6EaAK7V
foB4fsRmF01OU/MAAG5RCRKUOMGuqZgT4UUpHFHl04O4/9ARTYohq3oNAJhMppSUFBzH055awBRP
FLq6O7fuGJFg/bZdp/vCAHBU0mK0vp/lKA0JGGYoLNDQegAwJjC67XsAIKv6DTKZVQmMRqNawNbN
mwDDOj+tF667bk9gsVjK1m6+FhS1xfaewgmc0eDr8w7HTWt2RRwtCbZ883OLVInJZEpNTVW/kyYV
p1XOR5FIW23diPNg1uwK+4p3XOebifETkTXPPLFoSGVLMETqdwOAta4W+6+nxiIAAICcjeuIhIQb
P/7kP3lqOAFRW1s79FNQWJTCjTl54RSbkT5UdziGz/zzQvjkae7x0szXXh4Cm0ym7OzssWPHDjpK
TMQw8B47Hmq6Yl68MGZ+S0QzS0snG3Nd5y4PSR4lGO93+3AtlftuzXBkQ0PDnj17hkssK5frsjMD
Z8/3fL/vDkO/5erVyqrKqjUrX/l4w9k5Tx5NSb+2qe4WTHl5udlsFkVxuND92x9HU9IbC+xyMKhK
RhyZ6urYf8D54mpcS9l27yCYxOGqKEKCKNA6/S0mV195K9LmzHz1peya6ngzGQCiknR6SgnvbL+H
ZxmupSadOKLLzIj3bEGynFho01nuu5eHH4GjKAKAfwEkxHqUW0+AiwAAAABJRU5ErkJggg==
EOF

if ($overview_widget eq 'listbox') {
    $lb = $mw->Scrolled('Listbox',
			-width => 100,
			-height => 8,
			-scrollbars => "osoe",
			-font => 'Courier 9', # a fixed font
		       )->pack(qw(-fill both -expand 1));
    $lb->bind("<Double-1>" => sub {
		  show_date_by_index_in_emacs(shift->xyIndex);
	      });
} else {
    require Tk::HList;
    require Tk::ItemStyle;
    $lb = $mw->Scrolled('HList',
			-width => 100,
			-height => 10,
			-scrollbars => 'osoe',
			-selectbackground => '#4a6984',
			-selectmode => 'browse',
			-header => 0,
			-columns => 3,
			-command => sub {
			    my $path = shift;
			    show_date_by_index_in_emacs($path);
			},
		       )->pack(qw(-fill both -expand 1));
    $lb->anchorClear;
    $lb->columnWidth(0, 400);
}
$lb->Button(-padx => 0, -pady => 0, -borderwidth => 1,
	    -font => $small_font,
	    -text => 'Update',
	    -command => \&tk_do_one_iteration,
	   )->place(-relx => 1, -rely => 1, -anchor => 'se');

$mw->bind('<Control-p>' => sub { start_ptksh() });

tk_do_one_iteration();
if ($recheck_interval == 60) {
    # synchronize with full minute, only implemented for recheck_interval=60
    my(@l) = localtime;
    my $first_delay = $recheck_interval - $l[0];
    if ($first_delay) {
	$lb->after($first_delay*1000, sub {
		       tk_do_one_iteration();
		       normal_repeater();
		   });
    } else {
	normal_repeater();
    }
} else {
    normal_repeater();
}

$mw->protocol('WM_DELETE_WINDOW', sub {
		  return if ($mw->messageBox
			     (-icon => "question",
			      -title => "Exit org-daemon",
			      -message => "Really exit org-daemon?",
			      -type => "YesNo",
			      -default => 'No',
			     ) =~ /no/i);
		  $mw->destroy;
		  if ($AnyEvent::Impl::Tk::mw) {
		      $AnyEvent::Impl::Tk::mw->destroy;
		      # otherwise process would still run & hang
		  }

		  for my $mw0 (Tk::MainWindow::Existing()) {
		      if ($mw0->title eq 'ptksh') {
			  $mw0->destroy;
		      }
		  }
	      });

# emacsclient does not start if a directory is missing,
# so make sure we change into a non-removable directory.
chdir '/';

my @anyevent_notifiers; # for AnyEvent::Filesys::Notify
my $inotify_w; # for Linux::Inotify2
if ($use_anyevent) {
    if ($^O eq 'linux') {
	require AnyEvent;
	require Linux::Inotify2;
	my $inotify = Linux::Inotify2->new
	    or die "Cannot create new inotify object: $!";
	for my $org_file (keys %org_files) {
	    $inotify->watch($org_file, &Linux::Inotify2::IN_CLOSE_WRITE, sub {
				my $e = shift;
				if ($debug) {
				    warn "Linux::Inotify2 got an event:\n";
				    require Data::Dumper;
				    print STDERR Data::Dumper->new([$e],[qw()])->Indent(1)->Useqq(1)->Sortkeys(1)->Terse(1)->Dump;
				}
				tk_do_one_iteration();
			    });
	}
	$inotify_w = AE::io($inotify->fileno, 0, sub { $inotify->poll });
    } else {



( run in 0.537 second using v1.01-cache-2.11-cpan-39bf76dae61 )