From 4ea19e99427e0c0121d7b64eb0f144682eb5526b Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Tue, 2 Oct 2018 13:20:57 +0300 Subject: [PATCH] working center, screenshots, and new background support --- reporting/markslider.py | 43 ++++++++++++++++++++++++++++++------ reporting/markslider.tar.gz | Bin 11707 -> 12047 bytes 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/reporting/markslider.py b/reporting/markslider.py index 78dca2d..c878f1d 100755 --- a/reporting/markslider.py +++ b/reporting/markslider.py @@ -20,7 +20,7 @@ '''Markslider: a slideshow engine based on markdown.''' __author__ = "Ville Rantanen " -__version__ = "1.0" +__version__ = "1.1" import sys,os,argparse,re,datetime from argparse import ArgumentParser @@ -66,17 +66,19 @@ class slide_reader: self.re_command = re.compile("(.*)`(.*)`>(.*)") #~ self.control_chars = ''.join(map(unichr, range(0,32) + range(127,160))) #~ self.control_char_re = re.compile('[%s]' % re.escape(self.control_chars)) + self.background = [] self.read() def read(self): ''' Read a file, set pages and data ''' self.pages = 0 + self.background = [] self.data = [] self.file_start_page = [] first_slide_found = False for fname in self.files: - first_slide_found=False + first_slide_found = False f=open(fname,'r') new_page=[] for row in f: @@ -94,6 +96,7 @@ class slide_reader: new_page=[] # if first slide havent been found yet: if not first_slide_found: + self.background.append(row) continue new_page.extend(self.generate_content(row)) if len(new_page)>0: @@ -295,6 +298,8 @@ Keyboard shortcuts: execution = parser.add_argument_group('execution') control = parser.add_argument_group('controls') + content.add_argument("--background",action="store_true",dest="background",default = False, + help="Use the rows before the first # header as slide background") content.add_argument("--center",action="store_true",dest="center",default=False, help="Center slides on screen.") content.add_argument("--dc",action="store_true",dest="dark_colors",default=False, @@ -318,6 +323,7 @@ Keyboard shortcuts: help="Timer for slideshow. If set, starts automatic slide changing.") content.add_argument("-w",action="store_false",dest="wrap",default=True, help="Disable line wrapping. Cuts long lines.") + content.add_argument("--toc",action="store",dest="toc",default=False, const="Table of Contents", type=str, nargs='?', help="Insert table of contents. Define the header, or use default: %(const)s") @@ -345,9 +351,9 @@ def page_print(reader,opts,offset): bc.clear() if opts.center: # Placeholder for 80x25 center alignment align_width = reader.get_max_width() - align_x_offset = scrsize[1]/2-align_width/2 - align_pad = " "*align_x_offset - align_y_offset = scrsize[0]/2 - reader.get_max_height()/2 + align_x_offset = int(scrsize[1]/2 - align_width/2) + align_pad = " " * align_x_offset + align_y_offset = int(scrsize[0]/2 - reader.get_max_height()/2) bc.down_line(align_y_offset) else: align_pad = "" @@ -363,6 +369,13 @@ def page_print(reader,opts,offset): opts) + bc.Z ) + if opts.background: + bc.save() + if opts.color: + sys.stdout.write("\n".join([align_pad + bc.color_string(x) for x in reader.background])) + else: + sys.stdout.write("\n".join([align_pad + bc.nocolor_string(x) for x in reader.background])) + bc.restore() if (sys.version_info < (3, 0)): # python2 magic page = [row.decode('utf-8') for row in page] @@ -713,7 +726,10 @@ def take_screenshot(reader,opts): if not os.path.exists(opts.screenshots): os.mkdir(opts.screenshots) subprocess.call( - "sleep 0.5; import -window $WINDOWID '%s'"%(out_file,), + "sleep 0.5; import -window %s '%s'"%( + opts.xwinid, + out_file + ), stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True @@ -732,7 +748,20 @@ def main(): bc = ansi.code() getch = getch() opts = setup_options() - + if opts.screenshots: + print("Click the terminal window to read window ID") + xwininfo = subprocess.check_output( + "xwininfo", + shell = True + ) + if type(xwininfo) == bytes: + xwininfo = xwininfo.decode('utf-8') + xwininfo = re.search(r"Window id: (0x[0-9]+)", xwininfo) + if xwininfo: + opts.xwinid = xwininfo.group(1) + else: + print("Cannot parse window ID") + sys.exit(1) browser( opts, opts.files diff --git a/reporting/markslider.tar.gz b/reporting/markslider.tar.gz index 937b0f324144672dc06abfd18608c821fa8ad752..27567d631b45439634fab92926c4033c74346499 100644 GIT binary patch literal 12047 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 literal 11707 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