diff options
author | Kate Scheppke <kscheppke@gmail.com> | 2008-07-21 20:10:47 (GMT) |
---|---|---|
committer | Kate Scheppke <kscheppke@gmail.com> | 2008-07-21 20:10:47 (GMT) |
commit | 6a606f958c537b116ed3dd9bbbba0c3e2fb7dae2 (patch) | |
tree | f7654f2a07c7593b61b6a79ac86efe798afb965e |
Initial import
-rw-r--r-- | .project | 17 | ||||
-rw-r--r-- | .pydevproject | 9 | ||||
-rw-r--r-- | src/Key.py | 11 | ||||
-rw-r--r-- | src/keyboard.py | 102 |
4 files changed, 139 insertions, 0 deletions
diff --git a/.project b/.project new file mode 100644 index 0000000..216fd33 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>typingTurtle</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.python.pydev.PyDevBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.python.pydev.pythonNature</nature> + </natures> +</projectDescription> diff --git a/.pydevproject b/.pydevproject new file mode 100644 index 0000000..9711a53 --- /dev/null +++ b/.pydevproject @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse-pydev version="1.0"?> + +<pydev_project> +<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH"> +<path>/typingTurtle/src</path> +</pydev_pathproperty> +<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.4</pydev_property> +</pydev_project> diff --git a/src/Key.py b/src/Key.py new file mode 100644 index 0000000..2ed1ce0 --- /dev/null +++ b/src/Key.py @@ -0,0 +1,11 @@ +import pygtk +pygtk.require('2.0') +import gtk + +class Key(gtk.Widget): + def __init__(self, text, rectangle): + self.text = text + self.specs = rectangle + + +
\ No newline at end of file diff --git a/src/keyboard.py b/src/keyboard.py new file mode 100644 index 0000000..a0ca9ad --- /dev/null +++ b/src/keyboard.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python + +import pygtk +pygtk.require('2.0') +import gtk +from Key import * + +class keyboard: + def __init__(self): + window = gtk.Window(gtk.WINDOW_TOPLEVEL) + window.set_default_size(800,350) + window.set_title("keyboard widget") + window.connect("destroy", lambda w: gtk.main_quit()) + self.area = gtk.DrawingArea() + self.area.set_size_request(800, 350) + self.pangolayout = self.area.create_pango_layout("") + self.layout = gtk.Layout(None,None) + self.layout.set_size(800,350) + self.layout.put(self.area,10,10) + window.add(self.layout) + self.area.set_events(gtk.gdk.POINTER_MOTION_MASK | + gtk.gdk.POINTER_MOTION_HINT_MASK ) + bounds = window.get_allocation() + self.area.connect("expose-event", self.area_expose_cb) + self.area.show() + self.layout.show() + window.show() + + def area_expose_cb(self, area, event): + self.style = self.area.get_style() + self.gc = self.style.fg_gc[gtk.STATE_NORMAL] + bounds = area.get_allocation() + Xdim = bounds[2] - bounds[0] + Ydim = bounds[3] - bounds[1] + col = 10 + key_width = int(Xdim / 18) + key_height = int(Ydim / 7) + key_gap = int(key_width / 5) + row_gap = int(key_height / 5) + row_level_0 = 70 + row_level_1 = 100 + row_level_2 = row_level_1 + key_height + row_gap + row_level_3 = row_level_2 + key_height + row_gap + row_level_4 = row_level_3 + key_height + row_gap + row_level_5 = row_level_4 + key_height + row_gap + keys = [] + #Row 1 + row1 = [("1","!"),("2","@"),("3","#"),("4","$"),("5","%"),("6","^"),("7","&"),("8","*"),("9","("),("0",")"),("-","_"),("=","+")] + row2 = [("q","Q"),("w","W"),("e","E"),("r","R"),("t","T"),("y","Y"),("u","U"),("i","I"),("o","O"),("p","P"),("[","{"),("]","}")] + row3 = [("a","A"),("s","S"),("d","D"),("f","F"),("g","G"),("h","H"),("j","J"),("k","K"),("l","L"),(";",":"),("'",")"),("\"","|")] + row4 = [("z","Z"),("x","X"),("c","C"),("v","V"),("b","B"),("n","N"),("m","M"),(",","<"),(".",">"),("/","?")] + myCol = col + keys.append(Key(("`","~"),(myCol,row_level_1,(key_width-key_gap),key_height))) + myCol += (key_width) + for text in row1: + keys.append(Key(text,(myCol,row_level_1,key_width,key_height))) + myCol += (key_width + key_gap) + keys.append(Key(("erase","erase"),(myCol,row_level_1,key_width*2,key_height))) + + #Row 2 + myCol = col + keys.append(Key(("<-","<-"),(myCol,row_level_2,key_width,key_height))) + myCol += (key_width + key_gap) + for text in row2: + keys.append(Key(text,(myCol,row_level_2,key_width,key_height))) + myCol += (key_width + key_gap) + + #Row 3 + myCol = col + keys.append(Key(("ctrl","ctrl"),(myCol,row_level_3,key_width+key_gap,key_height))) + myCol += (key_width + key_gap + key_gap) + for text in row3: + keys.append(Key(text,(myCol,row_level_3,key_width,key_height))) + myCol += (key_width + key_gap) + + #Row 4 + myCol = col + keys.append(Key(("shift","shift"),(myCol,row_level_4,key_width*2,key_height))) + myCol += (2*key_width + key_gap) + for text in row4: + keys.append(Key(text,(myCol,row_level_4,key_width,key_height))) + myCol += (key_width + key_gap) + + for i in range(0,51): + self.draw_key(keys[i]) + return True + + def draw_key(self, key): + self.area.window.draw_rectangle(self.gc, False, key.specs[0], key.specs[1], key.specs[2], key.specs[3]) + self.pangolayout.set_text(key.text[0]) + self.area.window.draw_layout(self.gc, key.specs[0]+5, key.specs[1]+5, self.pangolayout) + return + + + +def main(): + gtk.main() + return 0 + +if __name__ == "__main__": + keyboard() + main()
\ No newline at end of file |