foldermenu banners printed with double # signs

This commit is contained in:
ville rantanen
2015-04-12 12:30:54 +03:00
parent 9a1d7c68ca
commit c61afaf39e
2 changed files with 31 additions and 13 deletions

View File

@@ -13,7 +13,7 @@ readline.parse_and_bind('set editing-mode vi')
MENUFILE='.foldermenu'
DEFAULTFILE = os.path.expanduser(os.path.join('~','.config','foldermenu','default'))
VERSION="0.3"
VERSION="0.4"
def setup_options():
''' Setup the command line options '''
@@ -25,6 +25,8 @@ def setup_options():
"If the command ends in '&' it is run in the background.")
parser.add_argument("-1","--one-shot",action='store_true', dest='once',default=False,
help="Launch only once, then exit")
parser.add_argument("-b","--no-banner", action='store_false', dest='banner', default=True,
help="Do not show banners. Banners are ## starting lines in the file")
parser.add_argument("-d","--no-defaults",action='store_false', dest='defaults',default=True,
help="Do not show default entries from "+DEFAULTFILE)
parser.add_argument("-x","--no-exec",action='store_false', dest='executables',default=True,
@@ -87,6 +89,9 @@ class bc:
def pos(self,y,x):
return "\033["+str(y)+";"+str(x)+"H"
def posprint(self, y,x,s):
sys.stdout.write( self.pos(y,x) + str(s) )
class getch:
def __init__(self):
import sys, tty, termios
@@ -117,6 +122,7 @@ class entry_collection:
options=[]
entries=[]
dirs=[]
banner=[]
menu_keys=[ichr(i+1) for i in range(60)]
args=''
dir_mode=False
@@ -132,6 +138,7 @@ class entry_collection:
def initialize(self):
self.entries=[]
self.dirs=[]
self.banner=[]
if self.options.defaults:
self.read_menu(DEFAULTFILE)
self.read_menu()
@@ -151,6 +158,9 @@ class entry_collection:
for row in f:
if row.strip()=='':
continue
if row[0:2]=='##':
self.banner.append(row[2:].replace("\n","").replace("\r",""))
continue
if row[0]=='#':
continue
row=row.strip().split(':',1)
@@ -218,28 +228,35 @@ class entry_collection:
pars=float(pars)
else:
pars=float(self.options.columns)
if self.options.banner:
b=self.banner
else:
b=[]
blen=len(b)
cwd=os.path.basename(os.getcwd())[0:15]
print(self.co.END+self.co.CLR+self.co.pos(1,3)+self.co.WHI+cwd+self.co.YEL+' Menu x:exit '+helptext+self.co.END)
self.co.posprint(1,3,self.co.END+self.co.CLR+self.co.WHI+cwd+self.co.YEL+' Menu x:exit '+helptext+self.co.END)
for i,e in enumerate(b):
self.co.posprint(i+2,0,e)
rows=int(math.ceil(len(my_entries)/pars))
while rows > maxrows:
pars+=1
rows=int(math.ceil(len(my_entries)/pars))
maxcolumns=int(math.ceil(maxcolumns/pars))
r=1
r=1+blen
par=1
for e,i in zip(my_entries,self.menu_keys):
if r>rows:
par=1+par
r=1
if r-blen>rows:
par+=1
r=1+blen
printline=e.description
if len(printline)>maxcolumns:
printline=printline[:maxcolumns]+"..."
if par==1:
print(self.co.WHI+i+self.co.END+' '+self.entry_color(e.launcher)+printline+self.co.END)
self.co.posprint(r+1,2,self.co.WHI+i+self.co.END+' '+self.entry_color(e.launcher)+printline+self.co.END)
else:
print(self.co.pos(r+1,maxcolumns*(par-1))+'| '+self.co.WHI+i+self.co.END+' '+self.entry_color(e.launcher)+printline+self.co.END)
r=1+r
print(self.co.pos(rows+2,0))
self.co.posprint(r+1,maxcolumns*(par-1),'| '+self.co.WHI+i+self.co.END+' '+self.entry_color(e.launcher)+printline+self.co.END)
r+=1
self.co.posprint(rows+2+blen,0,"")
def list(self):
""" draws the list at cursor """
@@ -294,7 +311,9 @@ class entry_collection:
if self.options.horizontal:
# let's shuffle the deck, and print values in horizontal order:
formatted=zip(*formatted)
if self.options.banner:
if self.banner:
print("\n".join(self.banner))
for row in formatted:
print '|'.join(row)

View File

@@ -325,8 +325,7 @@ function ised () {
function foldermenu_prompt {
[ -f .foldermenu ] && {
echo -n "f:"
foldermenu -lf 10 || echo -n "*"
foldermenu -lf 10 $@ || echo -n "*"
} || {
true
}