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

curses/curses_misc.py:

meta+left/right now sets focus back to whereever you were in the list.
curses/wicd-curses.py:
  Made a custom combobox for the wired networks.  The one during the last commit was actually the wireless list.
  (Hopefully) made the wired network show up when it is actually active.
  Removed appGUI.call_connect and appGUI.connect.  They are no longer needed.
in/man=wicd-curses.8.in: ADDED.  wicd-curses(8) man page
setup.py: Install the above man page if we are installing the rest of the curses client
This commit is contained in:
Andrew Psaltis
2009-01-03 22:57:41 -05:00
parent a6801c9a10
commit 5b8417e8a8
4 changed files with 150 additions and 54 deletions

View File

@@ -123,6 +123,7 @@ class TabColumns(urwid.WidgetWrap):
if key == "meta left" or key == "meta right":
self._w.get_body().set_focus(0)
self.keypress(size,key[5:])
self._w.get_body().set_focus(1)
else:
wid = self.pile.get_focus().get_body()
if wid == self.columns:
@@ -147,7 +148,7 @@ class ComboBoxException(Exception):
class ComboBox(urwid.WidgetWrap):
"""A ComboBox of text objects"""
class ComboSpace(urwid.WidgetWrap):
"""The actual menu-like space that comes down from the ComboText"""
"""The actual menu-like space that comes down from the ComboBox"""
def __init__(self,list,body,ui,show_first,pos=(0,0),attr=('body','focus')):
"""
body : parent widget

View File

@@ -167,14 +167,15 @@ def gen_network_list():
id = 0
wiredL = []
is_active = wireless.GetWirelessIP('') == None and wired.GetWiredIP('') != None
# This one makes a list of strings to put in a combo box.
for profile in wired.GetWiredProfileList():
theString = '%4s %25s' % (id, profile)
#### THIS IS wired.blah() in experimental
#print config.GetLastUsedWiredNetwork()
# Tag if no wireless IP present, and wired one is
is_active = wireless.GetWirelessIP('') == None and wired.GetWiredIP('') != None
if is_active:
theString = '>'+theString[1:]
#if is_active:
# theString = '>'+theString[1:]
#wiredL.append(urwid.AttrWrap(SelText(theString),'connected',
# 'connected focus'))
@@ -184,6 +185,7 @@ def gen_network_list():
id+=1
wlessL = []
# This one makes a list of NetLabels
for network_id in range(0, wireless.GetNumberOfNetworks()):
is_active = wireless.GetCurrentSignalStrength("") != 0 and wireless.GetCurrentNetworkID(wireless.GetIwconfig())==network_id
@@ -228,6 +230,11 @@ def about_dialog(body):
if about.b_pressed == 'OK':
return False
########################################
##### URWID SUPPORT CLASSES
########################################
# Wireless network label
class NetLabel(urwid.WidgetWrap):
def __init__(self, id, is_active):
# Pick which strength measure to use based on what the daemon says
@@ -272,6 +279,50 @@ class NetLabel(urwid.WidgetWrap):
# This should work.
wireless.ConnectWireless(self.id)
class WiredComboBox(ComboBox):
"""
list : the list of wired network profiles. The rest is self-explanitory.
"""
def init(self,list):
self.theList = list
id = 0
wiredL = []
is_active = wireless.GetWirelessIP('') == None and wired.GetWiredIP('') != None
for profile in list:
theString = '%4s %25s' % (id, profile)
#### THIS IS wired.blah() in experimental
#print config.GetLastUsedWiredNetwork()
# Tag if no wireless IP present, and wired one is
if is_active:
theString = '>'+theString[1:]
#wiredL.append(urwid.AttrWrap(SelText(theString),'connected',
# 'connected focus'))
#else:
# wiredL.append(urwid.AttrWrap(SelText(theString),'body','focus'))
wiredL.append(theString)
id+=1
self.__super.__init__(list=wiredL,use_enter=False)
self.set_show_first(theList.index(wired.GetDefaultWiredProfile()))
def keypress(self,size,key):
self.__super.keypress(size,key)
if key == 'C':
# Configure the network
pass
elif key == 'S':
# Configure scripts
pass
elif key == 'enter':
self.connect()
return key
def connect(self):
wired.ConnectWired()
def get_selected_profile(self):
"""Get the selected wired profile"""
return self.theList[self._w.get_selected()[1]]
########################################
##### APPLICATION INTERFACE CLASS
########################################
@@ -294,7 +345,7 @@ class appGUI():
self.wlessH=urwid.Filler(urwid.Text("Wireless Network(s)"))
wiredL,wlessL = gen_network_list()
self.wiredCB = urwid.Filler(ComboBox(list=wiredL,use_enter=False))
self.wiredCB = urwid.Filler(WiredComboBox(list=wiredL))
self.wlessLB = urwid.ListBox(wlessL)
# Stuff I used to simulate large lists
#spam = SelText('spam')
@@ -305,8 +356,9 @@ class appGUI():
# spam,spam,spam,spam] ]
#self.spamLB = urwid.ListBox(spamL)
# Choose whether to show the wired part of the interface.
if daemon.GetAlwaysShowWiredInterface():
# Choose whether to show the wired part of the interface, if a cable
# is plugged in, or the
if daemon.GetAlwaysShowWiredInterface() or wired.CheckPluggedIn():
self.thePile = urwid.Pile([('fixed',1,self.wiredH),
('fixed',1,self.wiredCB),
('fixed',1,self.wlessH),
@@ -329,7 +381,7 @@ class appGUI():
self.prev_state = False
self.connecting = False
self.screen_locked = False
self.always_show_wired = daemon.GetAlwaysShowWiredInterface()
#self.always_show_wired = daemon.GetAlwaysShowWiredInterface()
self.pref = None
@@ -365,10 +417,9 @@ class appGUI():
self.wiredCB.get_body().set_list(wiredL)
self.wiredCB.get_body().build_combobox(self.frame,ui,3)
self.wlessLB.body = urwid.SimpleListWalker(wlessL)
# If the "Always Show Wired" part of the interface changes, change
# along with it.
if daemon.GetAlwaysShowWiredInterface() != self.always_show_wired:
if daemon.GetAlwaysShowWiredInterface():
if daemon.GetAlwaysShowWiredInterface() or wired.CheckPluggedIn():
#if daemon.GetAlwaysShowWiredInterface():
self.thePile = urwid.Pile([('fixed',1,self.wiredH),
('fixed',1,self.wiredCB),
('fixed',1,self.wlessH),
@@ -376,7 +427,7 @@ class appGUI():
else:
self.thePile = urwid.Pile([('fixed',1,self.wlessH),self.wlessLB] )
self.frame.body = self.thePile
self.always_show_wired = not self.always_show_wired
#self.always_show_wired = not self.always_show_wired
self.prev_state = state
# Update the footer/status bar
@@ -494,10 +545,6 @@ class appGUI():
return False
if "f5" in keys:
wireless.Scan()
if "enter" in keys:
# TODO: Make this totally go away by superclassing ComboBox
# Should be a function of the labels, I think.
self.call_connect()
if "D" in keys:
# Disconnect from all networks.
daemon.Disconnect()
@@ -536,36 +583,6 @@ class appGUI():
return True
# Bring back memories, anyone?
def call_connect(self):
wid = self.thePile.get_focus()
if wid is self.wiredCB:
#wid2,pos = self.wiredCB.get_focus()
# Apparently, connect() doesn't care about the networkid
self.connect(self,'wired',0)
#return "Wired network %i" % pos
elif wid is self.wlessLB:
# Do nothing
pass
else:
self.set_status("call_connect() failed! This is definitely a bug!")
#return "Failure!"
def connect(self, event, nettype, networkid):
""" Initiates the connection process in the daemon. """
if nettype == "wireless":
# I need to do something that is similar to this in this UI, but
# I don't have an "advanced settings" dialog yet.
#if not self.check_encryption_valid(networkid,
# networkentry.advanced_dialog):
# self.edit_advanced(None, None, nettype, networkid, networkentry)
# return False
wireless.ConnectWireless(networkid)
elif nettype == "wired":
wired.ConnectWired()
self.update_status()
########################################
##### INITIALIZATION FUNCTIONS
########################################

77
in/man=wicd-curses.8.in Normal file
View File

@@ -0,0 +1,77 @@
.TH WICD-CURSES "8" "January 2009" "wicd-curses"
.SH NAME
.B wicd-curses
\- curses-based wicd(8) controller
.SH DESCRIPTION
wicd-curses is a curses-based network controller that uses the Wired/Wireless Internet Connection Daemon (wicd) to control your network connections. It is suitable to run in terminal multiplexers like screen(1).
It is designed to imitate the GTK-based wicd-client(1) as much as possible, and uses the Urwid (http://excess.org/urwid) console widget library to vastly simplify development.
This man page only documents the current status of wicd-curses. This may/may not be the most up-to-date document.
.SH "ARGUMENTS"
These are not implemented yet.
.TP
.BR "\-r" , " \-\-raw\-screen"
Use Urwid's raw console display, instead of the (faster) curses-based one. This may be useful if you are experiencing unicode problems.
.SH CONTROLS
All of these are case sensitive.
.TP
.BR enter
Connect to selected network
.TP
.BR "F8 " or " Q"
Quit the client.
.TP
.BR D
Disconnect all devices from network connections
.TP
.BR ESC
If connecting to a network, stop doing so
.TP
.BR "F5 " or " R"
Refresh the network list
.TP
.BR P
Bring up the preferences controller
.PP
The following are not implemented yet:
.TP
.BR C
Bring up network configuration controller for the selected network
.TP
.BR S
Bring up the script selector for the selected network (requires superuser privileges)
.SH "FILES"
These are not used yet.
.TP
.I ~/.wicd/WHEREAREMYFILES
Reminder that your network configuration files are not here ;-)
.TP
.I %LIB%keymap.py
Tenative location of the system keymap
.TP
.I %LIB%colors.py
Tenative location of the system color schemes
.TP
.I ~/.wicd/keymap.py
Custom keybindings. Also where you can (later) disable the mouse.
.TP
.I ~/.wicd/colors.py
Custom color schemes.
.SH "SEE ALSO"
.BR wicd-client (1),
.BR wicd (8)
.SH BUGS
Probably lots. ;-)
If you happen to find one, ask about it on #wicd on freenode, or submit a bug report to http://launchpad.net/wicd, branch experimental-nacl.
.SH WICD-CURSES AUTHOR
Andrew Psaltis <ampsaltis@gmail.com>
.SH WICD AUTHORS
Adam Blackburn <compwiz18@gmail.com>
.br
Dan O'Reilly <oreilldf@gmail.com>

View File

@@ -399,6 +399,7 @@ try:
data.append(( wpath.lib, ['curses/prefs_curses.py']))
data.append(( wpath.lib, ['curses/wicd-curses.py']))
data.append(( wpath.bin, ['scripts/wicd-curses']))
data.append(( wpath.mandir + 'man8', ['man/wicd-curses.8']))
piddir = os.path.dirname(wpath.pidfile)
if not piddir.endswith('/'):
piddir += '/'