from gtk import *
from iw import *
import xkb
import string
from gui import _
class KeyboardWindow (InstallWindow):
def __init__ (self, ics):
InstallWindow.__init__ (self, ics)
ics.setTitle (_("Keyboard Configuration"))
ics.readHTML ("kybd")
ics.setNextEnabled (TRUE)
self.kb = xkb.XKB ()
self.rules = self.kb.getRules ()
rules = self.kb.getRulesBase ()
self.rulesbase = rules[string.rfind (rules, "/")+1:]
self.model = "pc101"
self.layout = "en_US"
self.variant = ""
self.hasrun = 0
def getNext (self):
if self.hasrun:
self.todo.x.setKeyboard (self.rulesbase, self.model,
self.layout, self.variant, "")
return None
def select_row (self, clist, row, col, event):
self.model = self.modelList.get_row_data (self.modelList.selection[0])
self.layout = self.layoutList.get_row_data (self.layoutList.selection[0])
self.variant = self.variantList.get_row_data (self.variantList.selection[0])
self.kb.setRule (self.model, self.layout, self.variant, "complete")
def getScreen (self):
box = GtkVBox (FALSE, 5)
im = self.ics.readPixmap ("gnome-keyboard.png")
if im:
im.render ()
pix = im.make_pixmap ()
a = GtkAlignment ()
a.add (pix)
a.set (0.0, 0.0, 0.0, 0.0)
box.pack_start (a, FALSE)
def moveto (widget, *args):
widget.moveto (widget.selection[0], 0, 0.5, 0.5)
box.pack_start (GtkLabel (_("Model")), FALSE)
sw = GtkScrolledWindow ()
sw.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC)
self.modelList = GtkCList ()
self.modelList.freeze ()
self.modelList.set_selection_mode (SELECTION_BROWSE)
for (key, model) in self.rules[0].items ():
loc = self.modelList.append ((model,))
self.modelList.set_row_data (loc, key)
if key == "pc101":
self.modelList.select_row (loc, 0)
self.modelList.sort ()
self.modelList.connect ("select_row", self.select_row)
self.modelList.columns_autosize ()
self.modelList.connect_after ("size_allocate", moveto)
self.modelList.thaw ()
sw.add (self.modelList)
box.pack_start (sw, TRUE)
box.pack_start (GtkLabel (_("Layout")), FALSE)
sw = GtkScrolledWindow ()
sw.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC)
self.layoutList = GtkCList ()
self.layoutList.freeze ()
self.layoutList.set_selection_mode (SELECTION_BROWSE)
for (key, layout) in self.rules[1].items ():
loc = self.layoutList.append ((layout,))
self.layoutList.set_row_data (loc, key)
if key == "en_US":
self.layoutList.select_row (loc, 0)
self.layoutList.sort ()
self.layoutList.connect ("select_row", self.select_row)
self.layoutList.columns_autosize ()
self.layoutList.connect_after ("size_allocate", moveto)
self.layoutList.thaw ()
sw.add (self.layoutList)
box.pack_start (sw, TRUE)
box.pack_start (GtkLabel (_("Variant")), FALSE)
sw = GtkScrolledWindow ()
sw.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC)
self.variantList = GtkCList ()
self.variantList.set_selection_mode (SELECTION_BROWSE)
self.variantList.append (("None",))
for (key, variant) in self.rules[2].items ():
loc = self.variantList.append ((variant,))
self.variantList.set_row_data (loc, key)
self.variantList.sort ()
self.variantList.connect ("select_row", self.select_row)
self.variantList.columns_autosize ()
sw.add (self.variantList)
box.pack_start (sw, FALSE)
label = GtkLabel (_("Test your selection here:"))
label.set_alignment (0.0, 0.5)
box.pack_start (label, FALSE)
entry = GtkEntry ()
box.pack_start (entry, FALSE)
box.set_border_width (5)
self.hasrun = 1
return box