timer for markslider, more verbose whenfilech..
This commit is contained in:
@@ -185,13 +185,14 @@ function whenfilechanges() {
|
|||||||
do ntime[$i]=$( stat -c %Z "${fname[$i]}" )
|
do ntime[$i]=$( stat -c %Z "${fname[$i]}" )
|
||||||
[ "${ntime[$i]}" -ne "${otime[$i]}" ] && {
|
[ "${ntime[$i]}" -ne "${otime[$i]}" ] && {
|
||||||
echo "${fname[$i]} changed:"
|
echo "${fname[$i]} changed:"
|
||||||
eval "$@"
|
|
||||||
otime[$i]=$( stat -c %Z "${fname[$i]}" )
|
otime[$i]=$( stat -c %Z "${fname[$i]}" )
|
||||||
|
eval "$@"
|
||||||
echo -n "Waiting for file changes... "
|
echo -n "Waiting for file changes... "
|
||||||
date
|
date
|
||||||
}
|
}
|
||||||
done
|
done
|
||||||
read -t 2 forced
|
read -t 2 forced
|
||||||
|
echo -ne Waiting.. $( date )\\r
|
||||||
[ $? -eq 0 ] && eval "$@"
|
[ $? -eq 0 ] && eval "$@"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ __version__ = "0.6"
|
|||||||
|
|
||||||
import sys,os,argparse,re
|
import sys,os,argparse,re
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
import traceback,tty,termios,subprocess
|
import traceback,tty,termios,subprocess,signal
|
||||||
|
|
||||||
HL=">"
|
HL=">"
|
||||||
EOS="# End of Slides"
|
EOS="# End of Slides"
|
||||||
@@ -158,12 +158,16 @@ class slide_reader:
|
|||||||
|
|
||||||
def get_page_no(self):
|
def get_page_no(self):
|
||||||
return self.page
|
return self.page
|
||||||
def inc_page_no(self,inc=1):
|
def inc_page_no(self,inc=1,loop=False):
|
||||||
self.page+=inc
|
self.page+=inc
|
||||||
if self.page<0:
|
if self.page<0:
|
||||||
self.page=0
|
self.page=0
|
||||||
|
if loop:
|
||||||
|
self.page=self.pages-1
|
||||||
if self.page>=self.pages:
|
if self.page>=self.pages:
|
||||||
self.page=self.pages-1
|
self.page=self.pages-1
|
||||||
|
if loop:
|
||||||
|
self.page=0
|
||||||
self.width=max([len(x) for x in self.data[self.page]])
|
self.width=max([len(x) for x in self.data[self.page]])
|
||||||
self.height=len(self.data[self.page])
|
self.height=len(self.data[self.page])
|
||||||
def last_page(self):
|
def last_page(self):
|
||||||
@@ -224,9 +228,10 @@ class slide_reader:
|
|||||||
def get_interactive_help_text():
|
def get_interactive_help_text():
|
||||||
return ''' left/right,page up/down,home,end
|
return ''' left/right,page up/down,home,end
|
||||||
change page
|
change page
|
||||||
s toggle status bar
|
|
||||||
q exit browser
|
q exit browser
|
||||||
r reload the file
|
r reload the file
|
||||||
|
s toggle status bar
|
||||||
|
t toggle timer (reqs. --timer switch)
|
||||||
,/. scroll page
|
,/. scroll page
|
||||||
up/down move highlight
|
up/down move highlight
|
||||||
h help'''
|
h help'''
|
||||||
@@ -253,18 +258,20 @@ Keyboard shortcuts:
|
|||||||
|
|
||||||
parser.add_argument("--dc",action="store_true",dest="dark_colors",default=False,
|
parser.add_argument("--dc",action="store_true",dest="dark_colors",default=False,
|
||||||
help="Use dark colorscheme, better for white background terminals.")
|
help="Use dark colorscheme, better for white background terminals.")
|
||||||
|
parser.add_argument("-e",action="store_true",dest="execute",default=False,
|
||||||
|
help="Execute commands in $! or $> tags at show time with Enter key. WARNING: Potentially very dangerous to run others' slides with this switch!")
|
||||||
|
parser.add_argument("-E",action="store_true",dest="execute_read",default=False,
|
||||||
|
help="Execute commands in $> tags at file read time. WARNING: Potentially very dangerous to run others' slides with this switch!")
|
||||||
parser.add_argument("-m",action="store_true",dest="autocolor",default=False,
|
parser.add_argument("-m",action="store_true",dest="autocolor",default=False,
|
||||||
help="Color by markdown structure.")
|
help="Color by markdown structure.")
|
||||||
parser.add_argument("--no-color","-n",action="store_false",dest="color",default=True,
|
parser.add_argument("--no-color","-n",action="store_false",dest="color",default=True,
|
||||||
help="Disable color.")
|
help="Disable color.")
|
||||||
parser.add_argument("-s",action="store_false",dest="menu",default=True,
|
parser.add_argument("-s",action="store_false",dest="menu",default=True,
|
||||||
help="Disable status bar.")
|
help="Disable status bar.")
|
||||||
|
parser.add_argument("--timer",action="store",dest="slideTimer",default=False, type=int,
|
||||||
|
help="Timer for slideshow. If set, starts automatic slide changing.")
|
||||||
parser.add_argument("-w",action="store_false",dest="wrap",default=True,
|
parser.add_argument("-w",action="store_false",dest="wrap",default=True,
|
||||||
help="Disable line wrapping. Cuts long lines.")
|
help="Disable line wrapping. Cuts long lines.")
|
||||||
parser.add_argument("-e",action="store_true",dest="execute",default=False,
|
|
||||||
help="Execute commands in $! or $> tags at show time with Enter key. WARNING: Potentially very dangerous to run others' slides with this switch!")
|
|
||||||
parser.add_argument("-E",action="store_true",dest="execute_read",default=False,
|
|
||||||
help="Execute commands in $> tags at file read time. WARNING: Potentially very dangerous to run others' slides with this switch!")
|
|
||||||
parser.add_argument("--toc",action="store",dest="toc",default=False,
|
parser.add_argument("--toc",action="store",dest="toc",default=False,
|
||||||
const="Table of Contents", type=str, nargs='?',
|
const="Table of Contents", type=str, nargs='?',
|
||||||
help="Insert table of contents. Define the header, or use default: %(const)s")
|
help="Insert table of contents. Define the header, or use default: %(const)s")
|
||||||
@@ -276,6 +283,7 @@ Keyboard shortcuts:
|
|||||||
parser.add_argument("filename",type=str,
|
parser.add_argument("filename",type=str,
|
||||||
help="File to show")
|
help="File to show")
|
||||||
opts=parser.parse_args()
|
opts=parser.parse_args()
|
||||||
|
opts.slideShow=not not opts.slideTimer
|
||||||
return opts
|
return opts
|
||||||
|
|
||||||
def page_print(reader,opts,offset):
|
def page_print(reader,opts,offset):
|
||||||
@@ -315,10 +323,11 @@ def page_print(reader,opts,offset):
|
|||||||
def menu_print(reader,opts):
|
def menu_print(reader,opts):
|
||||||
|
|
||||||
bc.posprint( opts.size[0], 0,
|
bc.posprint( opts.size[0], 0,
|
||||||
colorify("${y}%d${Z}/%d %s|"%(
|
colorify("${y}%d${Z}/%d %s|%s"%(
|
||||||
1+reader.get_page_no(),
|
1+reader.get_page_no(),
|
||||||
reader.get_pages(),
|
reader.get_pages(),
|
||||||
reader.get_filename()),
|
reader.get_filename(),
|
||||||
|
"slideshow" if opts.slideShow else ""),
|
||||||
opts))
|
opts))
|
||||||
|
|
||||||
def print_help(reader,opts):
|
def print_help(reader,opts):
|
||||||
@@ -326,7 +335,7 @@ def print_help(reader,opts):
|
|||||||
helptext=get_interactive_help_text().split('\n')
|
helptext=get_interactive_help_text().split('\n')
|
||||||
maxlen=max([len(x) for x in helptext])
|
maxlen=max([len(x) for x in helptext])
|
||||||
bc.posprint(3,6,"+"+"-"*maxlen+"+")
|
bc.posprint(3,6,"+"+"-"*maxlen+"+")
|
||||||
bc.posprint(4,6,("|{:^"+str(maxlen)+"}|").format("Help"))
|
bc.posprint(4,6,colorify("|${U}${Y}"+("{:^"+str(maxlen)+"}").format("Help")+"${Z}|",opts))
|
||||||
for y,row in enumerate(helptext):
|
for y,row in enumerate(helptext):
|
||||||
bc.posprint(5+y,6,("|{:<"+str(maxlen)+"}|").format(row))
|
bc.posprint(5+y,6,("|{:<"+str(maxlen)+"}|").format(row))
|
||||||
bc.posprint(6+y,6,"+"+"-"*maxlen+"+")
|
bc.posprint(6+y,6,"+"+"-"*maxlen+"+")
|
||||||
@@ -340,6 +349,16 @@ def offset_change(opts,reader,offset,new_offset):
|
|||||||
offseth=min(reader.get_page_height(),new_offset[1])
|
offseth=min(reader.get_page_height(),new_offset[1])
|
||||||
return [max(0,o) for o in (offsety,offseth)]
|
return [max(0,o) for o in (offsety,offseth)]
|
||||||
|
|
||||||
|
def timeouthandler(sig,frame):
|
||||||
|
#~ print(sig,frame)
|
||||||
|
raise IOError("Input timeout")
|
||||||
|
|
||||||
|
def getkeypress():
|
||||||
|
try:
|
||||||
|
return ord(getch.get())
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
|
||||||
def browser(opts,filename):
|
def browser(opts,filename):
|
||||||
''' Main function for printing '''
|
''' Main function for printing '''
|
||||||
|
|
||||||
@@ -359,7 +378,15 @@ def browser(opts,filename):
|
|||||||
menu_print(reader,opts)
|
menu_print(reader,opts)
|
||||||
sys.stdout.write(bc.pos(opts.size[0], opts.size[1]))
|
sys.stdout.write(bc.pos(opts.size[0], opts.size[1]))
|
||||||
while 1:
|
while 1:
|
||||||
inkey=ord(getch.get())
|
if opts.slideTimer and opts.slideShow:
|
||||||
|
signal.signal(signal.SIGALRM, timeouthandler)
|
||||||
|
signal.alarm(opts.slideTimer)
|
||||||
|
inkey=getkeypress()
|
||||||
|
signal.alarm(0)
|
||||||
|
if not inkey and opts.slideShow:
|
||||||
|
reader.inc_page_no(1,True)
|
||||||
|
offset=(0,0)
|
||||||
|
break
|
||||||
#~ print(inkey)
|
#~ print(inkey)
|
||||||
if inkey in [113,3,120]:
|
if inkey in [113,3,120]:
|
||||||
#print('Exited in: ')
|
#print('Exited in: ')
|
||||||
@@ -380,6 +407,8 @@ def browser(opts,filename):
|
|||||||
print_help(reader,opts)
|
print_help(reader,opts)
|
||||||
if inkey==ord('s'):
|
if inkey==ord('s'):
|
||||||
opts.menu=not opts.menu
|
opts.menu=not opts.menu
|
||||||
|
if inkey==ord('t'):
|
||||||
|
opts.slideShow=not opts.slideShow
|
||||||
if inkey==ord('r'):
|
if inkey==ord('r'):
|
||||||
reader.read()
|
reader.read()
|
||||||
offset=offset_change(opts,reader,offset,(0, 0))
|
offset=offset_change(opts,reader,offset,(0, 0))
|
||||||
|
|||||||
Reference in New Issue
Block a user