1
0
mirror of https://github.com/gryf/wicd.git synced 2025-12-20 12:58:07 +01:00

curses/curses_misc.py: Added a htop-like OptCols

curses/wicd-curses.py:
  Added support for OptCols.  Some of the keys in there are not valid as of yet.
This commit is contained in:
Andrew Psaltis
2009-02-28 18:58:12 -05:00
parent 780685c842
commit 940f563ec5
2 changed files with 53 additions and 5 deletions

View File

@@ -512,3 +512,33 @@ class InputDialog(Dialog2):
def on_exit(self, exitcode): def on_exit(self, exitcode):
return exitcode, self.edit.get_edit_text() return exitcode, self.edit.get_edit_text()
# htop-style menu menu-bar on the bottom of the screen
class OptCols(urwid.WidgetWrap):
# tuples = [(key,desc,on_event)], on_event currently ignored
# attrs = (attr_key,attr_desc)
def __init__(self,tuples,attrs=('body','infobar')):
# Find the longest string. Keys for this bar should be no greater than
# 2 characters long (e.g., -> for left)
maxlen = 6
for i in tuples:
newmax = len(i[0])+len(i[1])
if newmax > maxlen:
maxlen = newmax
# Construct the texts
textList = []
i = 0
for cmd in tuples:
#theText = urwid.Text([(attrs[0],cmd[0]),(attrs[1],cmd[1])])
col = urwid.Columns([('fixed',len(cmd[0]),
urwid.Text((attrs[0],cmd[0])) ),
urwid.AttrWrap(urwid.Text(cmd[1]),attrs[1])])
if i != len(tuples)-1:
textList.append(('fixed',maxlen,col))
else: # The last one
textList.append(col)
i+=1
cols = urwid.Columns(textList)
self.__super.__init__(cols)

View File

@@ -53,7 +53,7 @@ import sys
from time import sleep from time import sleep
# Curses UIs for other stuff # Curses UIs for other stuff
from curses_misc import SelText,DynEdit,DynIntEdit,ComboBox,Dialog2,TextDialog,InputDialog,error from curses_misc import *
from prefs_curses import PrefsDialog from prefs_curses import PrefsDialog
import netentry_curses import netentry_curses
@@ -524,9 +524,24 @@ class appGUI():
# spam,spam,spam,spam,spam,spam,spam,spam,spam,spam,spam,spam, # spam,spam,spam,spam,spam,spam,spam,spam,spam,spam,spam,spam,
# spam,spam,spam,spam] ] # spam,spam,spam,spam] ]
#self.spamLB = urwid.ListBox(spamL) #self.spamLB = urwid.ListBox(spamL)
# Keymappings proposed by nanotube in #wicd
keys = [
('H' ,'Help' ,None),
('->','Config',None),
#(' ',' ',None),
('C' ,'Connect',None),
('D' ,'Disconn',None),
('R' ,'Refresh',None),
('P' ,'Prefs',None),
('I' ,'Hidden',None),
('Q' ,'Quit',None)
]
#(' ' ,' ',None),
#(' ' ,' ',None),
#(' ' ,' ',None),
self.footer1 = urwid.AttrWrap(urwid.Text("Something important will eventually go here."),'body') self.footer1 = OptCols(keys)
self.footer2 = urwid.AttrWrap(urwid.Text("If you are seeing this, then something has gone wrong!"),'important') self.footer2 = urwid.Columns([urwid.AttrWrap(urwid.Text("If you are seeing this, then something has gone wrong!"),'important'),urwid.Text('0',align='right')])
self.footerList = urwid.ListBox([self.footer1,self.footer2]) self.footerList = urwid.ListBox([self.footer1,self.footer2])
# Pop takes a number! # Pop takes a number!
#walker.pop(1) #walker.pop(1)
@@ -708,7 +723,9 @@ class appGUI():
if from_idle and self.connecting: if from_idle and self.connecting:
# This is probably the wrong way to do this, but it works for now. # This is probably the wrong way to do this, but it works for now.
toAppend=self.twirl[self.incr % 4] toAppend=self.twirl[self.incr % 4]
self.footer2 = urwid.AttrWrap(urwid.Text(text+' '+toAppend),'important') self.footer2 = urwid.Columns([
urwid.AttrWrap(urwid.Text(text+' '+toAppend),'important'),
('fixed',8,urwid.Text(str(self.incr),align='right'))])
self.frame.set_footer(urwid.BoxAdapter( self.frame.set_footer(urwid.BoxAdapter(
urwid.ListBox([self.footer1,self.footer2]),2)) urwid.ListBox([self.footer1,self.footer2]),2))
return True return True
@@ -725,7 +742,7 @@ class appGUI():
else: else:
theText += "-- Press H or ? for Help" theText += "-- Press H or ? for Help"
quit_note = ' -- '+language["press_to_quit"] quit_note = ' -- '+language["press_to_quit"]
self.footer1 = urwid.Text(str(self.incr) + theText+quit_note,wrap='clip') #self.footer1 = urwid.Text(str(self.incr) + theText+quit_note,wrap='clip')
self.incr+=1 self.incr+=1
return True return True
@@ -891,6 +908,7 @@ def main():
('editfc', 'white','dark blue', 'bold'), ('editfc', 'white','dark blue', 'bold'),
('editnfc','dark gray','default'), ('editnfc','dark gray','default'),
('tab active','dark green','light gray'), ('tab active','dark green','light gray'),
('infobar','black','dark cyan'),
# Simple colors around text # Simple colors around text
('green','dark green','default'), ('green','dark green','default'),
('blue','dark blue','default'), ('blue','dark blue','default'),