| 
									
										
										
										
											2007-02-20 16:38:25 +01:00
										 |  |  | # Copyright (C) 2007, One Laptop Per Child | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  | # modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  | # License as published by the Free Software Foundation; either | 
					
						
							|  |  |  | # version 2 of the License, or (at your option) any later version. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  | # Lesser General Public License for more details. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # You should have received a copy of the GNU Lesser General Public | 
					
						
							|  |  |  | # License along with this library; if not, write to the | 
					
						
							|  |  |  | # Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 
					
						
							|  |  |  | # Boston, MA 02111-1307, USA. | 
					
						
							| 
									
										
										
										
											2007-04-27 11:59:02 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # DEPRECATED. Do not use in new code. We will reimplement it in gtk | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-20 16:38:25 +01:00
										 |  |  | import sys | 
					
						
							|  |  |  | import logging | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import gobject | 
					
						
							|  |  |  | import gtk | 
					
						
							|  |  |  | import hippo | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-21 10:16:03 +01:00
										 |  |  | class Popup(hippo.CanvasBox, hippo.CanvasItem): | 
					
						
							|  |  |  |     __gtype_name__ = 'SugarPopup' | 
					
						
							| 
									
										
										
										
											2007-02-20 16:38:25 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     __gsignals__ = { | 
					
						
							|  |  |  |         'action-completed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-21 17:05:41 +01:00
										 |  |  |     def __init__(self): | 
					
						
							| 
									
										
										
										
											2007-02-20 16:38:25 +01:00
										 |  |  |         hippo.CanvasBox.__init__(self) | 
					
						
							| 
									
										
										
										
											2007-02-22 22:51:24 +01:00
										 |  |  |         self._visible = False | 
					
						
							|  |  |  |         self._window = hippo.CanvasWindow(gtk.WINDOW_POPUP) | 
					
						
							|  |  |  |         self._window.set_root(self) | 
					
						
							| 
									
										
										
										
											2007-02-21 17:05:41 +01:00
										 |  |  |         self.connect('button-press-event', self._button_press_event_cb) | 
					
						
							| 
									
										
										
										
											2007-02-20 16:38:25 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def popup(self, x, y): | 
					
						
							| 
									
										
										
										
											2007-02-22 22:51:24 +01:00
										 |  |  |         if not self._visible: | 
					
						
							| 
									
										
										
										
											2007-02-20 16:38:25 +01:00
										 |  |  |             self._window.move(x, y) | 
					
						
							|  |  |  |             self._window.show() | 
					
						
							| 
									
										
										
										
											2007-02-22 22:51:24 +01:00
										 |  |  |             self._visible = True | 
					
						
							| 
									
										
										
										
											2007-02-20 16:38:25 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def popdown(self): | 
					
						
							| 
									
										
										
										
											2007-02-22 22:51:24 +01:00
										 |  |  |         if self._visible: | 
					
						
							|  |  |  |             self._window.hide() | 
					
						
							|  |  |  |             self._visible = False | 
					
						
							| 
									
										
										
										
											2007-02-20 16:38:25 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-24 18:18:50 +01:00
										 |  |  |     def grab_pointer(self): | 
					
						
							|  |  |  |         gtk.gdk.pointer_grab(self._window.window, owner_events=False, | 
					
						
							|  |  |  |                              event_mask=gtk.gdk.BUTTON_PRESS_MASK | | 
					
						
							|  |  |  |                                         gtk.gdk.BUTTON_RELEASE_MASK | | 
					
						
							|  |  |  | 			                gtk.gdk.ENTER_NOTIFY_MASK | | 
					
						
							|  |  |  | 			                gtk.gdk.LEAVE_NOTIFY_MASK | | 
					
						
							|  |  |  | 			                gtk.gdk.POINTER_MOTION_MASK) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-21 17:05:41 +01:00
										 |  |  |     def _button_press_event_cb(self, menu, event): | 
					
						
							| 
									
										
										
										
											2007-02-20 16:38:25 +01:00
										 |  |  |         self.emit('action-completed') |