diff options
author | Ignacio Rodríguez <ignacio@Ignacio-Magallanes.(none)> | 2012-11-08 18:36:18 (GMT) |
---|---|---|
committer | Ignacio Rodríguez <ignacio@Ignacio-Magallanes.(none)> | 2012-11-08 18:36:18 (GMT) |
commit | aae999923bff78451cd0bc05fffcbdca5e53b2ee (patch) | |
tree | 0f647e67e510c26625e39423a6bc9c8838c5cd4c | |
parent | 410b145d6e118dcee0bf5fba0c4cd16dd23cb32f (diff) |
Versión 2! :)
-rw-r--r-- | Toolbars.py | 160 | ||||
-rw-r--r-- | abook.py | 167 | ||||
-rw-r--r-- | ayuda.py | 88 | ||||
-rw-r--r-- | icons/help-icon.svg | 32 |
4 files changed, 334 insertions, 113 deletions
diff --git a/Toolbars.py b/Toolbars.py new file mode 100644 index 0000000..7d92ade --- /dev/null +++ b/Toolbars.py @@ -0,0 +1,160 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Toolbars.py +# Gabriel, hice esto porque es un revoltijo abook.py :P +try: + import gtk + from gettext import gettext as _ + from sugar import profile + from sugar import mime + from sugar.activity import activity + from sugar.activity.widgets import StopButton + from sugar.activity.widgets import ActivityToolbarButton + from sugar.activity.widgets import ToolbarButton + from sugar.graphics.icon import Icon + from sugar.graphics.colorbutton import ColorToolButton + from sugar.graphics.toolbarbox import ToolbarBox + from sugar.graphics.toolbutton import ToolButton + from sugar.graphics.objectchooser import ObjectChooser + from sugar.graphics.alert import Alert, NotifyAlert + import pango + + from book import cBook + from book import cPage + from book import cOption + from textbook import tutorial_book + from textbook import empty_book + from textbook import credits_book + from Combo import Combo + from ayuda import HelpButton as Ayudas +except ImportError: + print 'NO SE ESTA EN SUGAR.. SALIENDO' + +Fonts = Combo() +Fonts.set_items(["Purisa 8", "Purisa 12", "Purisa 24", "Monospace 8", "Monospace 12", "Monospace 24", "Times New Roman 8", "Times New Roman 12", "Times New Roman 24", "FreeSans 8", "FreeSans 12", "FreeSans 24"]) +Title_Tam = Combo() +Title_Tam.set_items(["Purisa 8", "Purisa 12", "Purisa 24", "Monospace 8", "Monospace 12", "Monospace 24", "Times New Roman 8", "Times New Roman 12", "Times New Roman 24", "FreeSans 8", "FreeSans 12", "FreeSans 24"]) +Colore = ColorToolButton() +Color_t = ColorToolButton() +restart_button = ToolButton("home") +reading_button = ToolButton("read") +load_button = ToolButton("open-from-journal") +credits = ToolButton("credits") +new_button = ToolButton("new") +book_button = ToolButton("edit-p") +page_button = ToolButton("edit-c") +check_button = ToolButton("broken") + +def Text_Toolbar(toolbar): + text_button = ToolbarButton(icon_name="format-text-size") + text_toolbar = gtk.Toolbar() + A = gtk.Label(_('<--Color Content:')) + B = gtk.Label(_('<--Color Title:')) + text_toolbar.insert(Colore, -1) + + Item = gtk.ToolItem() + Item.add(A) + Item.show() + text_toolbar.insert(Item, -1) + Item = gtk.ToolItem() + Item.add(Fonts) + Item.show() + text_toolbar.insert(Item, -1) + Fonts.show() + A.show() + Fonts.show() + text_toolbar.insert(gtk.SeparatorToolItem(), -1) + Item = gtk.ToolItem() + Item.add(B) + Item.show() + text_toolbar.insert(Color_t, -1) + text_toolbar.insert(Item, -1) + Item = gtk.ToolItem() + Item.add(Title_Tam) + Item.show() + Title_Tam.show() + + text_toolbar.insert(Item, -1) + + Colore.show() + Color_t.show() + text_toolbar.show_all() + text_button.props.page = text_toolbar + toolbar.toolbar.insert(text_button, -1) +def Read_Toolbar(toolbar): + # read toolbar + read_button = ToolbarButton(icon_name="read") + read_toolbar = gtk.Toolbar() + + + restart_button.set_tooltip(_("Start from the begining")) + + read_toolbar.insert(restart_button, -1) + + reading_button.set_tooltip(_("Read the book")) + + read_toolbar.insert(reading_button, -1) + + load_button.set_tooltip(_("Load book from Journal")) + + read_toolbar.insert(load_button, -1) + read_button.props.page = read_toolbar + read_toolbar.show_all() + Sep = gtk.SeparatorToolItem() + Sep.set_expand(False) + Sep.set_draw(True) + read_toolbar.insert(Sep, -1) + Sep.show() + + credits.set_tooltip(_("Credits")) + + read_toolbar.insert(credits, -1) + credits.show() + toolbar.toolbar.insert(read_button, -1) +def Write_Toolbar(toolbar): + # write toolbar + write_button = ToolbarButton(icon_name="edit") + write_toolbar = gtk.Toolbar() + + new_button.set_tooltip(_("New book")) + + write_toolbar.insert(new_button, -1) + + book_button.set_tooltip(_("Edit book properties")) + + write_toolbar.insert(book_button, -1) + + page_button.set_tooltip(_("Edit book contents")) + + write_toolbar.insert(page_button, -1) + + check_button.set_tooltip(_("Check book for missing parts")) + + write_toolbar.insert(check_button, -1) + write_button.props.page = write_toolbar + write_toolbar.show_all() + toolbar.toolbar.insert(write_button, -1) + +def Ayuda(toolbar): + Boton_Ayuda = Ayudas() + # Porfavor, traducir esto al ingles! # + Boton_Ayuda.add_section(_("Crear un libro")) + Boton_Ayuda.add_paragraph(_("Para crear un nuevo libro debes hacer click en el icono"),'edit') + Boton_Ayuda.add_paragraph(_("Posterior a esto haz click en:"),'new') + Boton_Ayuda.add_section(_("Editar un libro")) + Boton_Ayuda.add_paragraph(_("Para editar el libro debes hacer click en"),'edit') + Boton_Ayuda.add_paragraph(_("Luego haz click en:"),'edit-c') + Boton_Ayuda.add_section(_("Editar las propiedades")) + Boton_Ayuda.add_paragraph(_("Para editar las propiedades debes hacer click en"),'edit') + Boton_Ayuda.add_paragraph(_("Despues haz click en:"),'edit-p') + Boton_Ayuda.add_section(_("Leer un libro")) + Boton_Ayuda.add_paragraph(_("Para leer un libro debes hacer click en:"),'read') + Boton_Ayuda.add_paragraph(_("Si quieres ir a la primer página debes hacer click en:"),'home') + Boton_Ayuda.add_paragraph(_("Si quieres cargar tu libro haz click en:"),'open-from-journal') + Boton_Ayuda.add_paragraph(_("Si te interesan los créditos haz click en:"),'credits') + Boton_Ayuda.add_section(_("Editar la 'letra'")) + Boton_Ayuda.add_paragraph(_("Para editar la tipografía de un libro debes hacer click en:"),'format-text-size') + Boton_Ayuda.add_paragraph(_("Si tu quieres editar el nombre de la tipografía deberas hacer click donde dice 'Purisa 8', se desplegara una lista de fuentes. Selecciona una")) + Boton_Ayuda.add_paragraph(_("Si quieres editar el color haz click en:"), 'color-preview') + Boton_Ayuda.show() + toolbar.toolbar.insert(Boton_Ayuda, -1) @@ -45,113 +45,50 @@ from sugar.graphics.toolbutton import ToolButton from sugar.graphics.objectchooser import ObjectChooser from sugar.graphics.alert import Alert, NotifyAlert import pango - +from ayuda import HelpButton as Ayuda from book import cBook from book import cPage from book import cOption from textbook import tutorial_book from textbook import empty_book from textbook import credits_book -from Combo import Combo -# ColorToolButton -# Color for Font -Tamano = Combo() -Tamano.set_items(["8","10","12","24","32","48","72"]) -Colore = ColorToolButton() +from Toolbars import Text_Toolbar +from Toolbars import Write_Toolbar +from Toolbars import Read_Toolbar +from Toolbars import Ayuda +import Toolbars + class AdventureBookActivity(activity.Activity): def __init__(self, handle): activity.Activity.__init__(self, handle, True) - - # Toolbar toolbarbox = ToolbarBox() - Colore.set_title(_('Select color for font and go to home page')) - Colore.connect('notify::color', self.Home) - Tamano.connect('change_selection', self.Home) +## CONNECTS ## + Toolbars.restart_button.connect("clicked", self._restart_button_cb) + Toolbars.reading_button.connect("clicked", self._read_button_cb) + Toolbars.load_button.connect("clicked", self._load_button_cb) + Toolbars.credits.connect("clicked", self.Credits) + Toolbars.new_button.connect("clicked", self._new_button_cb) + Toolbars.book_button.connect("clicked", self._edit_book_button_cb, Toolbars.Colore.get_color()) + Toolbars.page_button.connect("clicked", self._edit_page_button_cb) + Toolbars.check_button.connect("clicked", self._check_button_cb, Toolbars.Colore.get_color()) + Toolbars.Colore.set_title(_('Select color for font and go to home page')) + Toolbars.Colore.connect('notify::color', self.Home) + Toolbars.Fonts.connect('change_selection', self.Home) + Toolbars.Title_Tam.connect('change_selection', self.Home) + Toolbars.Color_t.connect('notify::color', self.Home) +# FIN DE CONNECTS # + # The Activity Button: activity_button = ActivityToolbarButton(self) - W = gtk.Label(_('Select a size for font\nand go to home page')) - # Insert the Activity Toolbar Button in the toolbarbox - toolbarbox.toolbar.insert(activity_button, 0) - - # Separator - separator = gtk.SeparatorToolItem() - separator.set_expand(False) - separator.set_draw(True) - toolbarbox.toolbar.insert(separator, -1) - Item = gtk.ToolItem() - Item.add(Tamano) - It = gtk.ToolItem() - It.add(W) - toolbarbox.toolbar.insert(Colore, -1) - toolbarbox.toolbar.insert(It, -1) - toolbarbox.toolbar.insert(Item, -1) - Item.show() - It.show() - W.show() - Tamano.show() - toolbarbox.toolbar.insert(gtk.SeparatorToolItem(), -1) - Colore.show() - - - # read toolbar - read_button = ToolbarButton(icon_name="read") - read_toolbar = gtk.Toolbar() - - restart_button = ToolButton("home") - restart_button.set_tooltip(_("Start from the begining")) - restart_button.connect("clicked", self._restart_button_cb) - read_toolbar.insert(restart_button, -1) - reading_button = ToolButton("read") - reading_button.set_tooltip(_("Read the book")) - reading_button.connect("clicked", self._read_button_cb) - read_toolbar.insert(reading_button, -1) - load_button = ToolButton("open-from-journal") - load_button.set_tooltip(_("Load book from Journal")) - load_button.connect("clicked", self._load_button_cb) - read_toolbar.insert(load_button, -1) - read_button.props.page = read_toolbar - read_toolbar.show_all() - toolbarbox.toolbar.insert(read_button, -1) - Sep = gtk.SeparatorToolItem() - Sep.set_expand(False) - Sep.set_draw(True) - read_toolbar.insert(Sep, -1) - Sep.show() - credits = ToolButton("credits") - credits.set_tooltip(_("Credits")) - credits.connect("clicked", self.Credits) - read_toolbar.insert(credits, -1) - credits.show() - # write toolbar - write_button = ToolbarButton(icon_name="edit") - write_toolbar = gtk.Toolbar() - new_button = ToolButton("new") - new_button.set_tooltip(_("New book")) - new_button.connect("clicked", self._new_button_cb) - write_toolbar.insert(new_button, -1) - book_button = ToolButton("edit-p") - book_button.set_tooltip(_("Edit book properties")) - book_button.connect("clicked", self._edit_book_button_cb, Colore.get_color()) - write_toolbar.insert(book_button, -1) - page_button = ToolButton("edit-c") - page_button.set_tooltip(_("Edit book contents")) - page_button.connect("clicked", self._edit_page_button_cb) - write_toolbar.insert(page_button, -1) - check_button = ToolButton("broken") - check_button.set_tooltip(_("Check book for missing parts")) - check_button.connect("clicked", self._check_button_cb, Colore.get_color()) - write_toolbar.insert(check_button, -1) - write_button.props.page = write_toolbar - write_toolbar.show_all() - toolbarbox.toolbar.insert(write_button, -1) - # Separator - separator = gtk.SeparatorToolItem() - separator.set_expand(True) - separator.set_draw(False) - toolbarbox.toolbar.insert(separator, -1) + # Insert the Activity Toolbar Button in the toolbarbox + toolbarbox.toolbar.insert(activity_button, 0) + Read_Toolbar(toolbarbox) + Write_Toolbar(toolbarbox) + Text_Toolbar(toolbarbox) + Ayuda(toolbarbox) # Stop button stopbtn = StopButton(self) toolbarbox.toolbar.insert(stopbtn, -1) @@ -162,10 +99,10 @@ class AdventureBookActivity(activity.Activity): # Define main view as a vbox container self._main_view = gtk.VBox() self.set_canvas(self._main_view) - + # Load tutorial book for first-time runs self._book = tutorial_book() - self._start_book(Colore.get_color()) + self._start_book(Toolbars.Colore.get_color()) def Home(self, widget, pspec): self._restart_button_cb(None) @@ -176,11 +113,13 @@ class AdventureBookActivity(activity.Activity): def _start_book(self, Color): - Tam = pango.FontDescription(Tamano.get_active_text()) - self._clean_main_view() + Tam = pango.FontDescription(Toolbars.Fonts.get_active_text()) + Title = pango.FontDescription(Toolbars.Title_Tam.get_active_text()) + Color_ts = Toolbars.Color_t.get_color() + self._clean_main_view() title_label = gtk.Label(self._book.get_title()) - title_label.modify_fg(gtk.STATE_NORMAL, Color) - title_label.modify_font(Tam) + title_label.modify_fg(gtk.STATE_NORMAL, Color_ts) + title_label.modify_font(Title) title_label.show() author_label = gtk.Label(self._book.get_author()) author_label.modify_fg(gtk.STATE_NORMAL, Color) @@ -206,27 +145,29 @@ class AdventureBookActivity(activity.Activity): def _start_button_cb(self, widget): self._current_page = self._book.get_pages()[0] - self._show_page(Colore.get_color()) + self._show_page(Toolbars.Colore.get_color()) def _restart_button_cb(self, widget): - self._start_book(Colore.get_color()) + self._start_book(Toolbars.Colore.get_color()) def _read_button_cb(self, widget): - self._show_page(Colore.get_color()) + self._show_page(Toolbars.Colore.get_color()) def _show_page(self, Color): self._clean_main_view() - Tam = pango.FontDescription(Tamano.get_active_text()) - + Tam = pango.FontDescription(Toolbars.Fonts.get_active_text()) + Title = pango.FontDescription(Toolbars.Title_Tam.get_active_text()) + Color_ts = Toolbars.Color_t.get_color() + print Tam title_label = gtk.Label(self._current_page.get_title()) - title_label.modify_fg(gtk.STATE_NORMAL, Color) + title_label.modify_fg(gtk.STATE_NORMAL, Color_ts) title_label.show() - title_label.modify_font(Tam) + title_label.modify_font(Title) text_label = gtk.Label(self._current_page.get_text()) text_label.modify_fg(gtk.STATE_NORMAL, Color) @@ -247,7 +188,7 @@ class AdventureBookActivity(activity.Activity): def _option_button_cb(self, widget, option): self._current_page = option.get_page() - self._show_page(Colore.get_color()) + self._show_page(Toolbars.Colore.get_color()) def _load_button_cb(self, widget): @@ -277,11 +218,11 @@ class AdventureBookActivity(activity.Activity): def _new_button_cb(self, widget): self._book = empty_book() - self._start_book(Colore.get_color()) + self._start_book(Toolbars.Colore.get_color()) # self._start_button_cb(widget) def Credits(self, widget): self._book = credits_book() - self._start_book(Colore.get_color()) + self._start_book(Toolbars.Colore.get_color()) def _edit_book_button_cb(self, widget, Color): Tam = pango.FontDescription('8') @@ -369,7 +310,7 @@ class AdventureBookActivity(activity.Activity): page_list_view.get_selection().set_mode(gtk.SELECTION_SINGLE) page_list_view.connect("cursor-changed", self._page_selected_for_edition_cb, - page_vbox, Colore.get_color()) + page_vbox, Toolbars.Colore.get_color()) page_list_view.set_cursor(0) # need to change to point to page page_list_column = gtk.TreeViewColumn(_("Book pages")) page_list_view.append_column(page_list_column) @@ -439,7 +380,7 @@ class AdventureBookActivity(activity.Activity): def _page_selected_for_edition_cb(self, w, page_vbox, Color): - Tam = pango.FontDescription(Tamano.get_active_text()) + Tam = pango.FontDescription('10') for ch in page_vbox.get_children(): page_vbox.remove(ch) @@ -549,7 +490,7 @@ class AdventureBookActivity(activity.Activity): def _add_option_button_cb(self, w, page, option_hbox, options_vbox): - Tam = pango.FontDescription(Tamano.get_active_text()) + Tam = pango.FontDescription('10') w.get_parent().remove(w) @@ -598,7 +539,7 @@ class AdventureBookActivity(activity.Activity): def _check_button_cb(self, widget, Color): - Tam = pango.FontDescription(Tamano.get_active_text()) + Tam = pango.FontDescription('10') self._clean_main_view() # check that all pages are referenced @@ -690,6 +631,6 @@ class AdventureBookActivity(activity.Activity): option_props = cOption(o['text'], page_dest) page_orig.add_option(option_props) - self._start_book(Colore.get_color()) + self._start_book(Toolbars.Colore.get_color()) diff --git a/ayuda.py b/ayuda.py new file mode 100644 index 0000000..639159d --- /dev/null +++ b/ayuda.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright (C) 2012, Gonzalo Odiard <godiard@gmail.com> + +# 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 3 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 + +# HelpButton widget + +from gettext import gettext as _ + +import gtk + +from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.icon import Icon +from sugar.graphics import style + + +class HelpButton(gtk.ToolItem): + + def __init__(self, **kwargs): + gtk.ToolItem.__init__(self) + + help_button = ToolButton('help-icon') + help_button.set_tooltip(_('Help')) + self.add(help_button) + + self._palette = help_button.get_palette() + + sw = gtk.ScrolledWindow() + sw.set_size_request(int(gtk.gdk.screen_width() / 2.8), + gtk.gdk.screen_height() - style.GRID_CELL_SIZE * 3) + sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + + self._max_text_width = int(gtk.gdk.screen_width() / 3) - 20 + self._vbox = gtk.VBox() + self._vbox.set_homogeneous(False) + + hbox = gtk.HBox() + hbox.pack_start(self._vbox, False, True, 0) + + sw.add_with_viewport(hbox) + + self._palette.set_content(sw) + sw.show_all() + + help_button.connect('clicked', self.__help_button_clicked_cb) + + def __help_button_clicked_cb(self, button): + self._palette.popup(immediate=True, state=1) + + def add_section(self, section_text): + hbox = gtk.HBox() + label = gtk.Label() + label.set_use_markup(True) + label.set_markup('<b>%s</b>' % section_text) + label.set_line_wrap(True) + label.set_size_request(self._max_text_width, -1) + hbox.add(label) + hbox.show_all() + self._vbox.pack_start(hbox, False, False, padding=5) + + def add_paragraph(self, text, icon=None): + hbox = gtk.HBox() + label = gtk.Label(text) + label.set_justify(gtk.JUSTIFY_LEFT) + label.set_line_wrap(True) + hbox.add(label) + if icon is not None: + _icon = Icon(icon_name=icon) + hbox.add(_icon) + label.set_size_request(self._max_text_width - 20, -1) + else: + label.set_size_request(self._max_text_width, -1) + + hbox.show_all() + self._vbox.pack_start(hbox, False, False, padding=5) diff --git a/icons/help-icon.svg b/icons/help-icon.svg new file mode 100644 index 0000000..36f763c --- /dev/null +++ b/icons/help-icon.svg @@ -0,0 +1,32 @@ +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' +'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [ + <!ENTITY stroke_color "#ffffff"> + <!ENTITY fill_color "#010101"> +]> + +<svg height="55px" viewBox="0 0 55 55" width="55px" +xmlns="http://www.w3.org/2000/svg" +xmlns:xlink="http://www.w3.org/1999/xlink"> + + <g> + <path d="M27.5,50.125 C15.157,50.125 5,39.968 5,27.625 C5,15.282 + 15.157,5.125 27.5,5.125 C39.843,5.125 50,15.282 50,27.625 + C49.837,40.071 40.412,49.484 28.077,50.118 z M27.01,34.768 + C28.452,34.839 29.871,34.056 30.301,32.622 C30.538,31.831 + 30.438,30.811 30.438,30.048 C32.901,29.422 35.315,28.194 + 36.775,26.041 C38.635,23.299 38.692,19.361 37.139,16.471 + C35.241,12.938 31.3,11.4 27.467,11.326 C25.327,11.363 + 23.184,11.958 21.331,13.036 C19.004,14.391 16.92,16.931 + 17.59,19.785 C17.767,20.537 18.189,21.24 18.866,21.638 + C21.301,23.068 23.001,20.116 24.478,18.753 C25.357,17.943 + 26.602,17.383 27.82,17.553 C29.264,17.754 30.642,18.618 + 31.073,20.071 C31.224,20.581 31.229,21.118 31.155,21.642 + C30.908,23.4 29.517,24.191 27.938,24.685 C26.56,25.116 + 24.024,25.251 23.956,27.167 L23.957,27.167 L23.957,31.667 + C23.947,33.36 25.073,34.466 26.649,34.738 z M27.016,44.444 + C28.993,44.54 30.706,42.921 30.706,40.937 C30.706,38.99 + 29.106,37.475 27.196,37.427 C25.253,37.431 23.54,39.139 + 23.691,41.117 C23.823,42.857 24.98,44.062 26.662,44.408 z" + fill="&stroke_color;" stroke="none"/> + </g> +</svg> |