[beryl-commits] r2256 - trunk/beryl-settings-2

quinn at server.beryl-project.org quinn at server.beryl-project.org
Tue Jan 2 09:39:09 CET 2007


Author: quinn
Date: 2007-01-02 08:39:08 +0000 (Tue, 02 Jan 2007)
New Revision: 2256

Modified:
   trunk/beryl-settings-2/main.py
Log:
add key grabbing


Modified: trunk/beryl-settings-2/main.py
===================================================================
--- trunk/beryl-settings-2/main.py	2007-01-02 07:50:50 UTC (rev 2255)
+++ trunk/beryl-settings-2/main.py	2007-01-02 08:39:08 UTC (rev 2256)
@@ -399,6 +399,59 @@
 def hideshowclick(wid):
 	UpdateBindingsList(wid.props.active)
 
+def kpe(win,ev,ent):
+	keygot=(ev.keyval,ev.state)
+	#check to see if its a modifier key
+	#currently this will be a hardcoded list, should perhaps be changed later
+	ModKeys=['Alt_L','Alt_R','AltGr','Super_L','Super_R','Control_L','Control_R','Shift_L','Shift_R','Meta_L','Meta_R','Multi_key']
+	if (ModKeys.__contains__(gdk.keyval_name(ev.keyval))):
+		return
+	ev=gdk.event_get()
+	win.grab_remove()
+	gdk.keyboard_ungrab()
+	win.destroy()
+	statemask=gdk.SHIFT_MASK | gdk.CONTROL_MASK | gdk.MOD1_MASK | gdk.MOD2_MASK | gdk.MOD3_MASK | \
+		gdk.MOD5_MASK | gdk.SUPER_MASK | gdk.HYPER_MASK | gdk.META_MASK
+	keygot=(keygot[0],keygot[1]&statemask)
+	win.destroy()
+	if (keygot[1]==0 and keygot[0]==gdk.keyval_from_name("Escape")):
+		return
+	if (keygot[1]==0 and keygot[0]==gdk.keyval_from_name("BackSpace")):
+		ent.set_text("Disabled")
+	else:
+		ent.set_text(gtk.accelerator_name(keygot[0],keygot[1]))
+
+
+def getkey(wid,ent):
+	global keygot
+	win=gtk.Window(gtk.WINDOW_POPUP)
+	win.set_position(gtk.WIN_POS_MOUSE)
+	win.set_resizable(False)
+	fram=gtk.Frame()
+	win.add(fram)
+	fram.set_shadow_type(gtk.SHADOW_OUT)
+	align=gtk.Alignment(0,0,0,0)
+	align.props.border_width=32
+	str="Please press the key on the keyboard\n"
+	str+="you wish to modify this keyboard-shortcut\n"
+	str+="to use from now on. Press BACKSPACE to clear,\n"
+	str+="Press ESCAPE to cancel."
+	lab=gtk.Label(str)
+	fram.add(align)
+	align.add(lab)
+	win.show_all()
+	while(gtk.events_pending()):
+		gtk.main_iteration()
+	gdk.flush()
+	while(gtk.events_pending()):
+		gtk.main_iteration()
+	win.window.set_events(gdk.KEY_PRESS_MASK)
+	gdk.keyboard_grab(win.window,True)
+	win.grab_add()
+	win.grab_focus()
+	keygot=None
+	win.connect("key-press-event",kpe,ent)
+
 def BindingPopup(wid,path,col):
 	#why does this get a tuple? that makes no sense.
 	spath=None
@@ -434,6 +487,7 @@
 		tb.attach(ent,1,2,0,1)
 		grab=gtk.Button("Grab Key")
 		tb.attach(grab,2,3,0,1)
+		grab.connect("clicked",getkey,ent)
 		clear=gtk.Button("Clear")
 		tb.attach(clear,3,4,0,1)
 		rest=gtk.Button()




More information about the commits mailing list