def main(): logfile="___log-nest-layout" dumpfile="___scs-nest-layout-dump-%d"%os.getpid() if not os.path.exists(tmpdir): os.makedirs(tmpdir) logfile=os.path.join(tmpdir,logfile) dumpfile=os.path.join(tmpdir,dumpfile) sys.stdout=open(logfile,'w') sys.stderr=sys.stdout session=sys.argv[1] tlayout=sys.argv[2] scs=ScreenSaver(session) homelayout,homelayoutname=scs.get_layout_number() while True: regions=sc.get_regions(scs.pid) try: focusminsize="%s %s"%(regions[3][0], regions[3][1]) regions_c=regions[0] foff=regions[1] rsize=tuple([int(regions[4+foff][1]),int(regions[4+foff][2])]) hsize=int(regions[2][0]),int(regions[2][1]) if regions[4][0]: break except Exception,x: print(x) sys.exit(2) pass
date_file_tuple = (lastmod_date, f) layhist.redo.append(date_file_tuple) layhist.redo.sort(reverse = True) layhist.current = glob.glob(os.path.join(tdir, 'L*')) return layhist pass if __name__ == '__main__': mode = (sys.argv)[1] session = (sys.argv)[2] ss = ScreenSaver(session) layout = ss.get_layout_number()[0] setup_dirs(session, layout) if mode in ('undo', 'redo'): try: targ = int((sys.argv)[3]) except: targ = 1 if mode == 'undo': targ = -targ layhist = get_layout_history(session, layout) try: if targ > 0:
regions_new.regions.append((window, str(x), str(y))) regions_new.regions = regions_new.regions + regions_dst.regions[regions_dst.focus_offset+1:] print('destination regions: '+ str(regions_dst.regions)) print('source regions: ' + str(regions_src.regions)) print('new regions: ' + str(regions_new.regions)) sc.layout_begin(session) sc.layout_load_dump(open(src_dumpfile, 'r')) sc.layout_load_regions(regions_new, None, dst_term_size[0], dst_term_size[1]) sc.layout_end() remove(src_dumpfile) remove(regions_file_dst) remove(regions_file_src) sc.cleanup() if __name__ == '__main__': logfile = os.path.join(tmpdir, '___log_nest-layout') sys.stdout = open(logfile, 'w') sys.stderr = sys.stdout session = (sys.argv)[1] src_layout = (sys.argv)[2] scs = ScreenSaver(session) dst_layout = scs.get_layout_number()[0] nest_layout(session, src_layout, dst_layout)
if no_end: lock_and_com_file = os.path.join(lltmpdir, '%s' % session.split('.', 1)[0]) if os.path.exists(lock_and_com_file): try: f = open(lock_and_com_file, 'r') pid = f.readline().strip() tmpwin = f.readline().strip() tmplay = f.readline().strip() cwin = f.readline().strip() if tmpwin != '-1': cwin = ss.get_number_and_title()[0] else: cwin = '-1' clay = f.readline().strip() clay = ss.get_layout_number()[0] f.close() if layout_checkpoint: import layout layout.setup_dirs(session, clay) layout.layout_checkpoint(session, clay) f = open(lock_and_com_file, 'w') f.write( str(pid) + '\n' + str(tmpwin) + '\n' + str(tmplay) + '\n' + str(cwin) + '\n' + str(clay) + '\n' + str(title_width) + '\n' + str(height)) f.close() from signal import SIGINT os.kill(int(pid), SIGINT) if tmplay != '-1': ss.command_at(False, 'layout select %s' % tmplay)
if no_end: lock_and_com_file = os.path.join(lltmpdir, '%s' % session.split('.', 1)[0]) if os.path.exists(lock_and_com_file): try: f = open(lock_and_com_file, 'r') pid = f.readline().strip() tmpwin = f.readline().strip() tmplay = f.readline().strip() cwin = f.readline().strip() if tmpwin != '-1': cwin = ss.get_number_and_title()[0] else: cwin = '-1' clay = f.readline().strip() clay = ss.get_layout_number()[0] f.close() if layout_checkpoint: import layout layout.setup_dirs(session, clay) layout.layout_checkpoint(session, clay) f = open(lock_and_com_file, 'w') f.write(str(pid) + '\n' + str(tmpwin) + '\n' + str(tmplay) + '\n' + str(cwin) + '\n' + str(clay) + '\n' + str(title_width) + '\n' + str(height)) f.close() from signal import SIGINT os.kill(int(pid), SIGINT) if tmplay != '-1': ss.command_at(False, 'layout select %s' % tmplay) elif tmpwin != '-1':
def run(session, requirecleanup_win, requirecleanup_lay, curwin, curlay, height, select_other = False): global lock_and_com_file, mru_file lltmpdir = os.path.join(tmpdir, '___layoutlist') try: os.makedirs(lltmpdir) except: pass signal.signal(signal.SIGINT, handler) session = session.split('.', 1)[0] ret = 0 ss = ScreenSaver(session) wnum = os.getenv('WINDOW') if requirecleanup_lay: lnum = ss.get_layout_number()[0] else: lnum = None mru_file = os.path.join(lltmpdir, '%s_MRU' % session) if select_other: mru_layouts = pickle.load(open(mru_file, 'r')) num, title = mru_layouts[1] tmp = mru_layouts[0] mru_layouts[0] = mru_layouts[1] mru_layouts[1] = tmp ss.command_at(False, 'eval "layout select %s" "layout title"' % num) pickle.dump(mru_layouts, open(mru_file, 'w')) return ret if NO_END: lock_and_com_file = os.path.join(lltmpdir, '%s' % session) f = open(lock_and_com_file, 'w') f.write(str(os.getpid()) + '\n') if requirecleanup_win and not requirecleanup_lay: f.write(wnum + '\n') else: f.write('-1\n') if requirecleanup_lay: f.write(lnum + '\n') else: f.write('-1\n') f.close() try: try: layinfo = list(sc.gen_layout_info(ss, sc.dumpscreen_layout_info(ss))) finally: sc.cleanup() except: sys.stderr.write('Layouts dumping error.\n') return 1 screen = curses.initscr() (laytable, pos_start) = create_table(ss, screen, curlay, layinfo, lnum, height) try: curses.start_color() except: curses.endwin() sys.stderr.write('start_color() failed!\n') return 1 curses.noecho() #screen.notimeout(1) try: choice = menu_table( ss, screen, lnum, curwin, curlay, layinfo, laytable, pos_start[0], pos_start[1], height, ) if requirecleanup_lay and choice == lnum: choice = curlay except Exception: import traceback traceback.print_exc(file=sys.stderr) choice = curlay ret = 1 curses.endwin() if NO_END: from util import remove remove(lock_and_com_file) if requirecleanup_lay: ss.command_at(False, 'eval "layout select %s" "layout remove %s" "at \"%s\#\" kill" "layout title"' % (choice, lnum, wnum)) elif requirecleanup_win: ss.command_at(False, 'eval "select %s" "layout select %s" "at \"%s\#\" kill" "layout title"' % (curwin, choice, wnum)) else: ss.command_at(False, 'eval "layout select %s" "layout title"' % choice) return ret