| 
									
										
										
										
											2007-04-20 14:45:39 +02:00
										 |  |  | # Copyright (C) 2007, Red Hat, Inc. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import gtk | 
					
						
							| 
									
										
										
										
											2007-04-26 11:31:41 +02:00
										 |  |  | import gobject | 
					
						
							| 
									
										
										
										
											2007-09-05 14:23:17 +02:00
										 |  |  | import hippo | 
					
						
							| 
									
										
										
										
											2007-04-26 11:31:41 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-07-09 14:37:21 +02:00
										 |  |  | from sugar.graphics import style | 
					
						
							| 
									
										
										
										
											2007-04-20 14:45:39 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Toolbox(gtk.VBox): | 
					
						
							|  |  |  |     __gtype_name__ = 'SugarToolbox' | 
					
						
							| 
									
										
										
										
											2007-06-26 12:28:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     __gsignals__ = { | 
					
						
							|  |  |  |         'current-toolbar-changed': (gobject.SIGNAL_RUN_FIRST, | 
					
						
							|  |  |  |                                     gobject.TYPE_NONE, | 
					
						
							|  |  |  |                                     ([int])) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-04-20 14:45:39 +02:00
										 |  |  |     def __init__(self): | 
					
						
							|  |  |  |         gtk.VBox.__init__(self) | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         self._notebook = gtk.Notebook() | 
					
						
							|  |  |  |         self._notebook.set_tab_pos(gtk.POS_BOTTOM) | 
					
						
							| 
									
										
										
										
											2007-04-20 15:38:34 +02:00
										 |  |  |         self._notebook.set_show_border(False) | 
					
						
							| 
									
										
										
										
											2007-05-14 15:48:36 +02:00
										 |  |  |         self._notebook.set_show_tabs(False) | 
					
						
							| 
									
										
										
										
											2007-07-09 14:37:21 +02:00
										 |  |  |         self._notebook.props.tab_vborder = style.TOOLBOX_TAB_VBORDER | 
					
						
							| 
									
										
										
										
											2007-07-09 15:09:59 +02:00
										 |  |  |         self._notebook.props.tab_hborder = style.TOOLBOX_TAB_HBORDER | 
					
						
							| 
									
										
										
										
											2007-04-20 14:45:39 +02:00
										 |  |  |         self.pack_start(self._notebook) | 
					
						
							|  |  |  |         self._notebook.show() | 
					
						
							| 
									
										
										
										
											2007-07-09 14:37:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-05 14:23:17 +02:00
										 |  |  |         # FIXME improve gtk.Notebook and do this in the theme | 
					
						
							| 
									
										
										
										
											2007-09-13 21:16:49 +02:00
										 |  |  |         self._separator = hippo.Canvas() | 
					
						
							| 
									
										
										
										
											2007-09-05 14:23:17 +02:00
										 |  |  |         box = hippo.CanvasBox( | 
					
						
							|  |  |  |                     border_color=style.COLOR_BUTTON_GREY.get_int(), | 
					
						
							|  |  |  |                     background_color=style.COLOR_PANEL_GREY.get_int(), | 
					
						
							|  |  |  |                     box_height=style.TOOLBOX_SEPARATOR_HEIGHT, | 
					
						
							|  |  |  |                     border_bottom=style.LINE_WIDTH) | 
					
						
							| 
									
										
										
										
											2007-09-13 21:16:49 +02:00
										 |  |  |         self._separator.set_root(box) | 
					
						
							|  |  |  |         self.pack_start(self._separator, False) | 
					
						
							| 
									
										
										
										
											2007-06-26 12:28:42 +02:00
										 |  |  |          | 
					
						
							|  |  |  |         self._notebook.connect('notify::page', self._notify_page_cb) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _notify_page_cb(self, notebook, pspec): | 
					
						
							|  |  |  |         self.emit('current-toolbar-changed', notebook.props.page) | 
					
						
							|  |  |  |          | 
					
						
							| 
									
										
										
										
											2007-04-20 14:45:39 +02:00
										 |  |  |     def add_toolbar(self, name, toolbar): | 
					
						
							| 
									
										
										
										
											2007-05-01 12:41:22 +02:00
										 |  |  |         label = gtk.Label(name) | 
					
						
							| 
									
										
										
										
											2008-04-24 16:55:19 +02:00
										 |  |  |         width, height_ = label.size_request() | 
					
						
							| 
									
										
										
										
											2008-02-26 00:32:27 +01:00
										 |  |  |         label.set_size_request(max(width, style.TOOLBOX_TAB_LABEL_WIDTH), -1) | 
					
						
							| 
									
										
										
										
											2007-05-01 12:41:22 +02:00
										 |  |  |         label.set_alignment(0.0, 0.5) | 
					
						
							| 
									
										
										
										
											2007-05-01 13:50:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-09 23:54:47 +02:00
										 |  |  |         event_box = gtk.EventBox() | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         alignment = gtk.Alignment(0.0, 0.0, 1.0, 1.0) | 
					
						
							|  |  |  |         alignment.set_padding(0, 0, style.TOOLBOX_HORIZONTAL_PADDING, | 
					
						
							|  |  |  |                               style.TOOLBOX_HORIZONTAL_PADDING) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         alignment.add(toolbar) | 
					
						
							|  |  |  |         event_box.add(alignment) | 
					
						
							|  |  |  |         alignment.show() | 
					
						
							|  |  |  |         event_box.show() | 
					
						
							| 
									
										
										
										
											2007-05-18 13:32:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-09 23:54:47 +02:00
										 |  |  |         self._notebook.append_page(event_box, label) | 
					
						
							| 
									
										
										
										
											2007-05-14 15:48:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if self._notebook.get_n_pages() > 1: | 
					
						
							|  |  |  |             self._notebook.set_show_tabs(True) | 
					
						
							| 
									
										
										
										
											2007-09-13 21:16:49 +02:00
										 |  |  |             self._separator.show() | 
					
						
							| 
									
										
										
										
											2007-05-14 15:48:36 +02:00
										 |  |  |                      | 
					
						
							| 
									
										
										
										
											2007-04-29 21:11:59 +02:00
										 |  |  |     def remove_toolbar(self, index): | 
					
						
							|  |  |  |         self._notebook.remove_page(index) | 
					
						
							| 
									
										
										
										
											2007-05-14 15:48:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if self._notebook.get_n_pages() < 2: | 
					
						
							|  |  |  |             self._notebook.set_show_tabs(False) | 
					
						
							| 
									
										
										
										
											2007-09-13 21:16:49 +02:00
										 |  |  |             self._separator.hide() | 
					
						
							| 
									
										
										
										
											2007-06-04 23:54:33 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def set_current_toolbar(self, index): | 
					
						
							|  |  |  |         self._notebook.set_current_page(index) | 
					
						
							| 
									
										
										
										
											2007-10-23 17:40:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def get_current_toolbar(self): | 
					
						
							|  |  |  |         return self._notebook.get_current_page() | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     current_toolbar = property(get_current_toolbar, set_current_toolbar) | 
					
						
							|  |  |  | 
 |