#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2006, Red Hat, Inc. # Copyright (C) 2011, One Laptop Per Child # Copyright (C) 2009, Tomeu Vizoso, Simon Schampijer # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #, # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import gtk import gobject from sugar.graphics.icon import Icon class TabLabel(gtk.HBox): __gtype_name__ = 'BrowseTabLabel' __gsignals__ = { 'tab-close': (gobject.SIGNAL_RUN_FIRST, None, ([object])), } def __init__(self, child, label=""): gtk.HBox.__init__(self) self._child = child self._label = gtk.Label(label) self._label.set_alignment(0, 0.5) self.pack_start(self._label, True, True, 0) self._label.show() self.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0, 0, 1)) close_tab_icon = Icon(icon_name='close-tab') button = gtk.Button() button.props.relief = gtk.RELIEF_NONE button.props.focus_on_click = False icon_box = gtk.HBox() icon_box.pack_start(close_tab_icon, True, False, 0) button.add(icon_box) button.connect('clicked', self.__button_clicked_cb) button.set_name('browse-tab-close') self.pack_start(button, False, True, 0) close_tab_icon.show() icon_box.show() button.show() self._close_button = button def set_text(self, title): self._label.set_text(title) def update_size(self, size): self.set_size_request(size, -1) def hide_close_button(self): self._close_button.hide() def show_close_button(self): self._close_button.show() def __button_clicked_cb(self, button): self.emit('tab-close', self._child)