slide editing supports multiple slide files

This commit is contained in:
Ville Rantanen
2017-03-07 14:15:39 +02:00
parent f7b0333ae4
commit 9918a03bd7

View File

@@ -74,10 +74,11 @@ class slide_reader:
self.pages=0 self.pages=0
self.data=[] self.data=[]
self.file_start_page=[] self.file_start_page=[]
first_slide_found=False
for fname in self.files: for fname in self.files:
first_slide_found=False
f=open(fname,'r') f=open(fname,'r')
new_page=[] new_page=[]
first_slide_found=False
for row in f: for row in f:
if not row: if not row:
continue continue
@@ -113,7 +114,7 @@ class slide_reader:
return self.data return self.data
def get_current_filename(self): def get_current_filename(self):
for i,offset in enumerate(self.file_start_page): for i,offset in enumerate(self.file_start_page):
if offset>=self.page: if offset>self.page:
return self.files[i] return self.files[i]
return "NA" return "NA"
def get_filename(self): def get_filename(self):
@@ -158,11 +159,14 @@ class slide_reader:
def get_max_width(self): def get_max_width(self):
return self.max_width return self.max_width
def get_toc(self): def get_toc(self,display_position=False):
title=self.opts.toc if self.opts.toc else "Table of Contents" title=self.opts.toc if self.opts.toc else "Table of Contents"
TOC=["# "+title,""] TOC=["# "+title,""]
for h1,page in enumerate(self.data[(self.opts.toc_page-1):]): offset=(self.opts.toc_page-1) if self.opts.toc else 0
for h1,page in enumerate(self.data[offset:]):
title=page[0].strip("# ") title=page[0].strip("# ")
if display_position and h1==self.page-offset:
title="_%s_"%(title,)
TOC.append("%d. %s"%(h1+1,title)) TOC.append("%d. %s"%(h1+1,title))
subh=[0,0,0] subh=[0,0,0]
if self.opts.toc_depth>1: if self.opts.toc_depth>1:
@@ -378,7 +382,7 @@ def page_print(reader,opts,offset):
sys.stdout.flush() sys.stdout.flush()
return return
def menu_print(reader,opts): def print_menu(reader,opts):
bc.posprint( opts.size[0], 0, bc.posprint( opts.size[0], 0,
colorify("${y}%d${Z}/%d %s|%s"%( colorify("${y}%d${Z}/%d %s|%s"%(
@@ -402,7 +406,7 @@ def print_help(reader,opts):
def print_toc(reader,opts): def print_toc(reader,opts):
''' Create a window with TOC ''' ''' Create a window with TOC '''
text=reader.get_toc() text=reader.get_toc(display_position=True)
title=opts.toc if opts.toc else "Table of Contents" title=opts.toc if opts.toc else "Table of Contents"
maxlen=max([len(x) for x in text]) maxlen=max([len(x) for x in text])
bc.posprint(3,3,"+"+"-"*maxlen+"+") bc.posprint(3,3,"+"+"-"*maxlen+"+")
@@ -411,6 +415,7 @@ def print_toc(reader,opts):
colored=md_color.colorize(parsed,not opts.color,opts.dark_colors) colored=md_color.colorize(parsed,not opts.color,opts.dark_colors)
else: else:
if opts.color: if opts.color:
colored=[bc.color_string(row[1]) for row in parsed] colored=[bc.color_string(row[1]) for row in parsed]
else: else:
colored=[bc.nocolor_string(row[1]) for row in parsed] colored=[bc.nocolor_string(row[1]) for row in parsed]
@@ -455,7 +460,7 @@ def browser(opts,files):
opts.size=get_console_size() opts.size=get_console_size()
page_print(reader,opts,offset) page_print(reader,opts,offset)
if opts.menu: if opts.menu:
menu_print(reader,opts) print_menu(reader,opts)
sys.stdout.write(bc.pos(opts.size[0], opts.size[1])) sys.stdout.write(bc.pos(opts.size[0], opts.size[1]))
sys.stdout.flush() sys.stdout.flush()
if opts.screenshots: if opts.screenshots:
@@ -612,9 +617,12 @@ def launch(reader,opts,offset):
def modify_file(reader,offset): def modify_file(reader,offset):
row=1 row=1
row_restarts=reader.file_start_page
for page in range(reader.page): for page in range(reader.page):
row+=len(reader.data[page]) row+=len(reader.data[page])
subprocess.call("vim +%d -c 'exe \"normal! zt\"' -c %d %s"%(row,row+offset[1],reader.filename), if (page+1) in row_restarts:
row=1
subprocess.call("vim +%d -c 'exe \"normal! zt\"' -c %d %s"%(row,row+offset[1],reader.get_current_filename()),
shell=True) shell=True)
def take_screenshot(reader,opts): def take_screenshot(reader,opts):