1
0
mirror of https://github.com/gryf/wicd.git synced 2025-12-28 09:22:36 +01:00

Ad-hoc network support is added ("O").

This commit is should be the last one containing new interface elements. :-D
This also may not work directly from the install.  I need to change some stuff
first.
curses/curses_misc.py:
  Fixed bug in Dialog2 where mouse clicks would cause the program to crash
  Added DynEdit and DynIntEdit, Simple DynWrapped widgets, nothing special
    about them
curses/wicd-curses.py:
  Added support for Ad-Hoc network controls (I don't know exactly how this
    works)
curses/README,TODO,in/man=wicd-curses.8.in:
  Ad-Hoc network support has been added
This commit is contained in:
Andrew Psaltis
2009-01-23 21:13:36 -05:00
parent fa2a5a3704
commit abf05c782f
5 changed files with 97 additions and 10 deletions

View File

@@ -29,6 +29,7 @@ H : Raise help dialog
S : Provide instructions for configuring scripts
delete : Delete selected wired network profile (from the wired ComboBox)
F2 : Rename selected wired network profile (from the wired ComboBox)
O : Raise ad-hoc network dialog
IN DIALOGS (Meta usually is "Alt"):
ESC or Q: Quit dialog without saving information (if present)

View File

@@ -3,5 +3,4 @@ Things to do (in no particular order):
* Implement a keyhandler function for the overall frame
* Make keystrokes customizable
* Make color schemes customizable
* Implement a "make an ad-hoc network" dialog
* Perform a mass code cleanup

View File

@@ -88,6 +88,20 @@ class DynWrap(urwid.AttrWrap):
def selectable(self):
return self._sensitive
# Just an Edit Dynwrapped to the most common specifications
class DynEdit(DynWrap):
def __init__(self,caption='',edit_text='',sensitive=True,attrs=('editbx','editnfc'),focus_attr='editfc'):
caption = ('editcp',caption + ': ')
edit = urwid.Edit(caption,edit_text)
self.__super.__init__(edit,sensitive,attrs,focus_attr)
# Just an IntEdit Dynwrapped to the most common specifications
class DynIntEdit(DynWrap):
def __init__(self,caption='',edit_text='',sensitive=True,attrs=('editbx','editnfc'),focus_attr='editfc'):
caption = ('editcp',caption + ':')
edit = urwid.IntEdit(caption,edit_text)
self.__super.__init__(edit,sensitive,attrs,focus_attr)
class MaskingEditException(Exception):
pass
@@ -436,13 +450,14 @@ class Dialog2(urwid.WidgetWrap):
overlay.mouse_event( size,
event, button, col, row,
focus=True)
if k == 'window resize':
size = ui.get_cols_rows()
k = self.view.keypress( size, k )
if k == 'esc':
raise DialogExit(-1)
if k:
self.unhandled_key( size, k)
else:
if k == 'window resize':
size = ui.get_cols_rows()
k = self.view.keypress( size, k )
if k == 'esc':
raise DialogExit(-1)
if k:
self.unhandled_key( size, k)
except DialogExit, e:
return self.on_exit( e.args[0] )

View File

@@ -54,7 +54,7 @@ import sys
from time import sleep
# Curses UIs for other stuff
from curses_misc import SelText,ComboBox,TextDialog,InputDialog,error
from curses_misc import SelText,DynEdit,DynIntEdit,ComboBox,Dialog2,TextDialog,InputDialog,error
from prefs_curses import PrefsDialog
import netentry_curses
from netentry_curses import WirelessSettingsDialog, WiredSettingsDialog
@@ -445,6 +445,66 @@ class WiredComboBox(ComboBox):
loc = self.get_focus()[1]
return self.theList[loc]
# Dialog2 that initiates an Ad-Hoc network connection
class AdHocDialog(Dialog2):
def __init__(self):
essid_t = language['essid']
ip_t = language['ip']
channel_t = language['channel']
key_t = " " + language['key']
use_ics_t = language['use_ics']
use_encrypt_t = language['use_wep_encryption']
self.essid_edit = DynEdit(essid_t)
self.ip_edit = DynEdit(ip_t)
self.channel_edit = DynIntEdit(channel_t)
self.key_edit = DynEdit(key_t,sensitive=False)
self.use_ics_chkb = urwid.CheckBox(use_ics_t)
self.use_encrypt_chkb = urwid.CheckBox(use_encrypt_t,
on_state_change=self.encrypt_callback)
blank = urwid.Text('')
# Set defaults
self.essid_edit.set_edit_text("My_Adhoc_Network")
self.ip_edit.set_edit_text("169.254.12.10")
self.channel_edit.set_edit_text("3")
l = [self.essid_edit,self.ip_edit,self.channel_edit,blank,
self.use_ics_chkb,self.use_encrypt_chkb,self.key_edit]
#for line in text:
# l.append( urwid.Text( line,align=align))
body = urwid.ListBox(l)
#body = urwid.AttrWrap(body, 'body')
header = ('header',"Create an Ad-Hoc network")
Dialog2.__init__(self, header, 15, 50, body)
self.add_buttons([('OK',1),('Cancel',-1)])
self.frame.set_focus('body')
def encrypt_callback(self,chkbox,new_state,user_info=None):
self.key_edit.set_sensitive(new_state)
def unhandled_key(self, size, k):
if k in ('up','page up'):
self.frame.set_focus('body')
if k in ('down','page down'):
self.frame.set_focus('footer')
if k == 'enter':
# pass enter to the "ok" button
self.frame.set_focus('footer')
self.buttons.set_focus(0)
self.view.keypress( size, k )
def on_exit(self,exitcode):
data = ( self.essid_edit.get_edit_text(),
self.ip_edit.get_edit_text(),
self.channel_edit.get_edit_text(),
self.use_ics_chkb.get_state(),
self.use_encrypt_chkb.get_state(),
self.key_edit.get_edit_text())
return exitcode, data
########################################
##### APPLICATION INTERFACE CLASS
########################################
@@ -784,6 +844,15 @@ class appGUI():
nettype = 'wireless'
netname = str(self.wiredLB.get_focus()[1])
run_configscript(self.frame,netname,nettype)
if "O" in keys:
exitcode,data = AdHocDialog().run(ui,self.frame)
#essid,ip,channel,use_ics,use_encrypt,key_edit
if exitcode == 1:
wireless.CreateAdHocNetwork(data[0],
data[2],
data[1], "WEP",
data[5],
data[4], False)
for k in keys:
if urwid.is_mouse_event(k):