From e88dae8723f840f6f4d29e48215e7eb7615536a6 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 9 Jul 2007 14:37:21 +0200 Subject: [PATCH] Start the new approach to style and sizing. Fix tabs sizing. --- sugar/graphics/style.py | 55 +++++++++++++++++++++++++++++++++++++++ sugar/graphics/toolbox.py | 12 ++++++--- 2 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 sugar/graphics/style.py diff --git a/sugar/graphics/style.py b/sugar/graphics/style.py new file mode 100644 index 00000000..cab2cbd9 --- /dev/null +++ b/sugar/graphics/style.py @@ -0,0 +1,55 @@ +# 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 + +def _compute_zoom_factor(): + return gtk.gdk.screen_width() / 1200.0 + +def _zoom(units): + return int(ZOOM_FACTOR * units) + +def _compute_font_height(font): + widget = gtk.Label('') + + context = widget.get_pango_context() + font = context.load_font(font.get_pango_desc()) + metrics = font.get_metrics() + + return pango.PIXELS(metrics.get_ascent() + metrics.get_descent()) + +class Font(object): + def __init__(self, desc): + self._desc = desc + + def __str__(self): + return self._desc + + def get_pango_desc(self): + return pango.FontDescription(self._desc) + +_FOCUS_LINE_WIDTH = 2 + +ZOOM_FACTOR = _compute_zoom_factor() + +FONT_SIZE = _zoom(7 * 200 / 72.0) +FONT_NORMAL = Font('Bitstream Vera Sans %d' % FONT_SIZE) +FONT_BOLD = Font('Bitstream Vera Sans bold %d' % FONT_SIZE) + +TOOLBOX_SEPARATOR_HEIGHT = _zoom(9) +TOOLBOX_HORIZONTAL_PADDING = _zoom(75) +TOOLBOX_TAB_VBORDER = int((_zoom(36) - FONT_SIZE - _FOCUS_LINE_WIDTH) / 2) diff --git a/sugar/graphics/toolbox.py b/sugar/graphics/toolbox.py index d510eebc..34109c00 100644 --- a/sugar/graphics/toolbox.py +++ b/sugar/graphics/toolbox.py @@ -19,7 +19,7 @@ import gtk import gobject from sugar.graphics.toolbutton import ToolButton -from sugar.graphics import units +from sugar.graphics import style _N_TABS = 8 @@ -39,8 +39,14 @@ class Toolbox(gtk.VBox): self._notebook.set_tab_pos(gtk.POS_BOTTOM) self._notebook.set_show_border(False) self._notebook.set_show_tabs(False) + self._notebook.props.tab_vborder = style.TOOLBOX_TAB_VBORDER self.pack_start(self._notebook) self._notebook.show() + + label = gtk.Label('') + label.set_size_request(-1, style.TOOLBOX_SEPARATOR_HEIGHT) + self.pack_start(label, False) + label.show() self._notebook.connect('notify::page', self._notify_page_cb) @@ -63,8 +69,8 @@ class Toolbox(gtk.VBox): label.set_alignment(0.0, 0.5) toolbar_box = gtk.HBox() - toolbar_box.pack_start(toolbar, True, True, units.grid_to_pixels(1)) - toolbar_box.set_size_request(-1, units.grid_to_pixels(1)) + toolbar_box.pack_start(toolbar, True, True, + style.TOOLBOX_HORIZONTAL_PADDING) toolbar_box.connect('expose-event', self._toolbar_box_expose_cb) self._notebook.append_page(toolbar_box, label)