diff options
-rw-r--r-- | JokeMachineActivity.py | 9 | ||||
-rw-r--r-- | MANIFEST | 42 | ||||
-rw-r--r-- | activity/activity.info | 3 | ||||
-rw-r--r-- | gui/canvaslistbox.py | 8 | ||||
-rw-r--r-- | gui/frame.py | 33 | ||||
-rw-r--r-- | gui/lessonplanwidget.py | 1 | ||||
-rw-r--r-- | gui/page.py | 24 | ||||
-rw-r--r-- | gui/theme.py | 19 | ||||
-rw-r--r-- | i18n.py | 167 | ||||
-rw-r--r-- | i18n_misc_strings.py | 5 | ||||
-rw-r--r-- | locale/af/LC_MESSAGES/org.worldwideworkshop.olpc.JokeMachine.mo | bin | 2696 -> 0 bytes | |||
-rw-r--r-- | pages/choose.py | 20 | ||||
-rw-r--r-- | pages/cover.py | 10 | ||||
-rw-r--r-- | pages/edit.py | 43 | ||||
-rw-r--r-- | pages/joke.py | 15 | ||||
-rw-r--r-- | pages/preview.py | 12 | ||||
-rw-r--r-- | pages/submit.py | 13 |
17 files changed, 69 insertions, 355 deletions
diff --git a/JokeMachineActivity.py b/JokeMachineActivity.py index ef5fe9e..f3feb34 100644 --- a/JokeMachineActivity.py +++ b/JokeMachineActivity.py @@ -18,6 +18,10 @@ # own creations we would love to hear from you at info@WorldWideWorkshop.org ! # +# init gthreads before using abiword +import gobject +gobject.threads_init() + import os import logging import gtk @@ -402,11 +406,12 @@ class JokeMachineActivity(activity.Activity): f.close() else: logging.debug('nothing to persist') + raise NotImplementedError - def close(self): + def can_close(self): '''Called on activity close''' logging.info('Exiting Activity. Performing cleanup...') Globals.shutdown() logging.info('Done') - activity.Activity.close(self) + return True diff --git a/MANIFEST b/MANIFEST deleted file mode 100644 index 4a7985d..0000000 --- a/MANIFEST +++ /dev/null @@ -1,42 +0,0 @@ -./JokeMachineActivity.py -./globals.py -./resources/gtkrc -./gui/__init__.py -./gui/canvaslistbox.py -./gui/frame.py -./gui/lessonplanwidget.py -./gui/page.py -./gui/theme.py -./i18n.py -./i18n_misc_strings.py -./resources/GameLogoCharacter.png -./resources/audio.png -./resources/image.png -./resources/laugh_attack.au -./lessons/Introduction/default.abw -./lessons/Lesson 1/default.abw -./lessons/Lesson 2/default.abw -./lessons/Lesson 3/default.abw -./lessons/Lesson 4/default.abw -./po/JokeMachine.pot -./po/af.po -./mesh/__init__.py -./mesh/activitysession.py -./pages/__init__.py -./pages/choose.py -./pages/cover.py -./pages/edit.py -./pages/joke.py -./pages/preview.py -./pages/submit.py -./persistence/__init__.py -./persistence/joke.py -./persistence/jokebook.py -./persistence/jokemachinestate.py -./setup.py -./tmp/.keep -./util/__init__.py -./util/audioplayer.py -./util/decorators.py -./util/journalpickler.py -./util/persistence.py diff --git a/activity/activity.info b/activity/activity.info index 3d81840..44e1dc7 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -1,8 +1,7 @@ [Activity] name = Joke Machine bundle_id = org.worldwideworkshop.JokeMachineActivity -service_name = org.worldwideworkshop.JokeMachineActivity -class = JokeMachineActivity.JokeMachineActivity +exec = sugar-activity JokeMachineActivity.JokeMachineActivity -s icon = activity-jokemachine activity_version = 8 host_version = 1 diff --git a/gui/canvaslistbox.py b/gui/canvaslistbox.py index 126e4f0..e53f7a6 100644 --- a/gui/canvaslistbox.py +++ b/gui/canvaslistbox.py @@ -29,7 +29,7 @@ from gui import page # TODO- height seems bust class CanvasListBox(hippo.CanvasWidget): - def __init__(self, width = 0, height = 0): + def __init__(self): self._entries_div = hippo.CanvasBox() # props not set properly in constructor @@ -50,8 +50,6 @@ class CanvasListBox(hippo.CanvasWidget): scroller = gtk.ScrolledWindow() scroller.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - if width > 0 or height > 0: - scroller.set_size_request(width, height) # TODO -> Size according to _entries_div w/ a max_entries or somesuch ? viewport = gtk.Viewport() viewport.set_shadow_type(gtk.SHADOW_NONE) viewport.add(hbox) @@ -67,6 +65,6 @@ class CanvasListBox(hippo.CanvasWidget): border_color=theme.COLOR_DARK_GREEN.get_int()) - def append(self, entry): - self._entries_div.append(entry) + def append(self, entry, *args): + self._entries_div.append(entry, *args) diff --git a/gui/frame.py b/gui/frame.py index 0d04610..49a5a8e 100644 --- a/gui/frame.py +++ b/gui/frame.py @@ -23,7 +23,6 @@ import gtk import hippo import logging -from i18n import LanguageComboBox from gettext import gettext as _ from globals import Globals @@ -66,15 +65,13 @@ class Frame(hippo.Canvas): orientation=hippo.ORIENTATION_VERTICAL) self.__root.append(self.__container, hippo.PACK_EXPAND) - self.__page = hippo.CanvasBox(box_height=theme.PAGE_HEIGHT, - background_color=theme.COLOR_PAGE.get_int(), + self.__page = hippo.CanvasBox(background_color=theme.COLOR_PAGE.get_int(), border=4, border_color=theme.COLOR_PAGE_BORDER.get_int(), spacing=8, padding=20, - xalign=hippo.ALIGNMENT_CENTER, orientation=hippo.ORIENTATION_VERTICAL) - self.__container.append(self.__page) + self.__container.append(self.__page, hippo.PACK_EXPAND) self.__page_class = None @@ -94,23 +91,6 @@ class Frame(hippo.Canvas): logo.set_from_file(Globals.logo) ret.append(hippo.CanvasWidget(widget=logo)) - # language selection box - language = hippo.CanvasWidget(background_color=theme.COLOR_BACKGROUND.get_int(), - border_top=theme.BORDER_WIDTH, - border_left=theme.BORDER_WIDTH, - border_color=theme.COLOR_FRAME.get_int(), - padding_top=12, - padding_bottom=12, - padding_left=100, - padding_right=100, - yalign=hippo.ALIGNMENT_CENTER, - orientation=hippo.ORIENTATION_VERTICAL) - button = LanguageComboBox('org.worldwideworkshop.olpc.JokeMachine') - button.install() - button.set_name('fubar') - language.props.widget = button - ret.append(language, hippo.PACK_EXPAND) - # lesson plans lesson_plans = hippo.CanvasWidget(background_color=theme.COLOR_BACKGROUND.get_int(), border_top=theme.BORDER_WIDTH, @@ -168,7 +148,7 @@ class Frame(hippo.Canvas): def set(self, value): self.__page_class = type(value) self.__page.clear() - self.__page.append(value) + self.__page.append(value, hippo.PACK_EXPAND) # some rules for the buttons in the footer if not Globals.JokeMachineActivity.is_initiator \ @@ -220,13 +200,12 @@ class Frame(hippo.Canvas): border_color=theme.COLOR_BLUE.get_int()) widget_box.append(hippo.CanvasText(text= _('Lesson Plans:'), xalign=hippo.ALIGNMENT_START, - padding=10, - font_desc=theme.FONT_BODY.get_pango_desc())) + padding=10)) lesson_plans = LessonPlanWidget(Globals.pwd) - lesson_plans.set_size_request(1050, 500) widget_box.append(hippo.CanvasWidget(widget=lesson_plans, border=0, - border_color=theme.COLOR_DARK_GREEN.get_int())) + border_color=theme.COLOR_DARK_GREEN.get_int()), + hippo.PACK_EXPAND) self.page = widget_box self.__button_read.set_visible(False) self.__button_make.set_visible(False) diff --git a/gui/lessonplanwidget.py b/gui/lessonplanwidget.py index 3d4a100..98c90ce 100644 --- a/gui/lessonplanwidget.py +++ b/gui/lessonplanwidget.py @@ -22,6 +22,7 @@ import os import locale import gtk import logging +from gettext import gettext as _ from abiword import Canvas as AbiCanvas diff --git a/gui/page.py b/gui/page.py index 0d83449..b0aafb5 100644 --- a/gui/page.py +++ b/gui/page.py @@ -59,8 +59,8 @@ class Page(hippo.CanvasBox): self.__color_listrow = theme.COLOR_LIST_ROW_ALT.get_int() - def append(self, item, **kwargs): - hippo.CanvasBox.append(self, item, **kwargs) + def append(self, item, *args, **kwargs): + hippo.CanvasBox.append(self, item, *args, **kwargs) @property @@ -74,14 +74,14 @@ class Page(hippo.CanvasBox): return self.__color_listrow - def make_listrow(self, contents = None): + def make_listrow(self, contents = None, *args): list_row = RoundBox() list_row.props.border = 0 # properties not being set properly by constructor list_row.props.padding = theme.DEFAULT_PADDING #list_row.props.padding_right=0 list_row.props.background_color = self.color_listrow if contents is not None: - list_row.append(contents) + list_row.append(contents, *args) return list_row @@ -104,8 +104,7 @@ class Page(hippo.CanvasBox): sound_name = _('Click to choose a sound') choose_sound = hippo.CanvasText(text=sound_name, - xalign=hippo.ALIGNMENT_START, - font_desc=theme.FONT_BODY.get_pango_desc()) + xalign=hippo.ALIGNMENT_START) choose_sound.connect('button-press-event', self.__do_clicked_choose_sound, obj, property) sound_box = RoundBox() @@ -183,8 +182,7 @@ class Page(hippo.CanvasBox): size_mode=hippo.CANVAS_SIZE_WRAP_WORD, box_width=width, xalign=xalign, - color=text_color.get_int(), - font_desc=theme.FONT_BODY.get_pango_desc()) + color=text_color.get_int()) def make_textbox(self, obj, property, width=300, height=100, editable=True): @@ -202,8 +200,7 @@ class Page(hippo.CanvasBox): field_box.append(hippo.CanvasText(text=label, box_width=label_width, xalign=hippo.ALIGNMENT_START, - color=theme.COLOR_DARK_GREEN.get_int(), - font_desc=theme.FONT_BODY.get_pango_desc())) + color=theme.COLOR_DARK_GREEN.get_int())) #if editable: textfield = self.__textview(value, field_width, -1, editable, False) textfield.control.get_buffer().connect('changed', self.__do_changed_control, obj, property) @@ -213,8 +210,7 @@ class Page(hippo.CanvasBox): #glitch_box.append(hippo.CanvasText(text=value, #size_mode=hippo.CANVAS_SIZE_WRAP_WORD, #box_width=field_width, - #xalign=hippo.ALIGNMENT_START, - #font_desc=theme.FONT_BODY.get_pango_desc())) + #xalign=hippo.ALIGNMENT_START)) #field_box.append(glitch_box) return field_box @@ -228,16 +224,12 @@ class Page(hippo.CanvasBox): # control props textview.set_wrap_mode(gtk.WRAP_WORD) - font = font_desc=theme.FONT_TEXTBOX.get_pango_desc() - font.set_weight(pango.WEIGHT_LIGHT) - textview.modify_font(font) textview.modify_base(gtk.STATE_NORMAL, theme.COLOR_TEXTBOX.get_gdk_color()) textview.set_editable(editable) textview.set_cursor_visible(editable) if height == -1: context = textview.create_pango_context() layout = pango.Layout(context) - layout.set_font_description(font) # TODO theme.FONT_BODY should be a pango.FontDescription, not a string layout.set_text(text[ : text.find('\n')]) (w, h) = layout.get_pixel_size() height = h #+ theme.BORDER_WIDTH_CONTROL / 2 # fudge factor - on the XO-1 hardware all known solutions evaporate diff --git a/gui/theme.py b/gui/theme.py index 22c6f30..20537aa 100644 --- a/gui/theme.py +++ b/gui/theme.py @@ -98,10 +98,6 @@ COLOR_TAB_TEXT = COLOR_WHITE zoom = style.zoom -PAGE_HEIGHT = style.zoom(635) # don't ask -TABS_HEIGHT = style.zoom(480) # 465 450 -PREVIEW_HEIGHT = style.zoom(519) # 564 - PADDING_TAB = style.zoom(6) DEFAULT_PADDING = style.zoom(6) DEFAULT_SPACING = style.zoom(8) @@ -111,21 +107,6 @@ BORDER_WIDTH_IMAGE = style.zoom(1) SPACER_VERTICAL = style.zoom(20) SPACER_HORIZONTAL = style.zoom(20) -# fonts ######################################################################## - -#FONT_SIZE = zoom(7 * _XO_DPI / _get_screen_dpi()) -#FONT_NORMAL = Font('Bitstream Vera Sans %d' % FONT_SIZE) -#_XO_DPI = 200.0 -FONT_SIZE_LARGE = style.zoom(10 * style._XO_DPI / style._get_screen_dpi()) -FONT_LARGE = style.Font('Bitstream Vera Sans %d' % FONT_SIZE_LARGE) - -#FONT_LARGE = style.FONT_NORMAL #'Sans 18' -FONT_BODY = style.FONT_NORMAL #'Sans 14' -FONT_BODY_BOLD = style.FONT_BOLD #'Sans Bold 14' -FONT_TABS = style.FONT_NORMAL #'Sans 12' -FONT_TEXTBOX = style.FONT_NORMAL #'Sans 10' - - # images ####################################################################### IMAGE_CHOOSE = 'resources/image.png' diff --git a/i18n.py b/i18n.py deleted file mode 100644 index 963d258..0000000 --- a/i18n.py +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# 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 -# - - -### i18n.py -### TODO: Describe -### $Id: $ -### -### author: Carlos Neves (cn (at) sueste.net) -### (c) 2007 World Wide Workshop Foundation - -import os -import gettext -import locale - -import gtk, gobject - -_ = lambda x: x - -# Images were taken from http://www.sodipodi.com/ -# except for korea taken from http://zh.wikipedia.org/wiki/Image:Unification_flag_of_Korea.svg - -lang_name_mapping = { - 'zh_cn':(None, _('Chinese (simplified)'), 'china'), - 'zh_tw':(None, _('Chinese (traditional)'), 'china'), - 'cs':(None, _('Czech'),'czech_republic'), - 'da':(None, _('Danish'),'denmark'), - 'nl':(None, _('Dutch'), 'netherlands'), - 'en':('English', _('English'),'united_states'), - 'en_gb':('English', _('English - Great Britain'),'united_kingdom'), - 'en_us':('English', _('English - U.S.'),'united_states'), - 'fi':(None, _('Finnish'),'finland'), - 'fr':('Français', _('French'),'france'), - 'de':(None, _('German'),'germany'), - 'hu':(None, _('Hungarian'),'hungary'), - 'it':(None, _('Italian'),'italy'), - 'ja':(None, _('Japanese'),'japan'), - 'ko':(None, _('Korean'),'korea'), - 'no':(None, _('Norwegian'),'norway'), - 'pl':(None, _('Polish'),'poland'), - 'pt':('Português', _('Portuguese'),'portugal'), - 'pt_br':('Português do Brasil', _('Portuguese - Brazilian'),'brazil'), - 'ru':(None, _('Russian'),'russian_federation'), - 'sk':(None, _('Slovak'),'slovenia'), - 'es':('Español', _('Spanish'),'spain'), - 'sv':(None, _('Swedish'),'sweden'), - 'tr':(None, _('Turkish'),'turkey'), - 'af':(None, _('Afrikaans'), 'south_africa'), -} - -class LangDetails (object): - def __init__ (self, code, name, image, domain): - self.code = code - self.country_code = self.code.split('_')[0] - self.name = name - self.image = image - self.domain = domain - - def guess_translation (self, fallback=False): - self.gnutranslation = gettext.translation(self.domain, 'locale', [self.code], fallback=fallback) - - def install (self): - self.gnutranslation.install() - - def matches (self, code, exact=True): - if exact: - return code.lower() == self.code.lower() - return code.split('_')[0].lower() == self.country_code.lower() - -def get_lang_details (lang, domain): - mapping = lang_name_mapping.get(lang.lower(), None) - if mapping is None: - # Try just the country code - lang = lang.split('_')[0] - mapping = lang_name_mapping.get(lang.lower(), None) - if mapping is None: - return None - if mapping[0] is None: - return LangDetails(lang, mapping[1], mapping[2], domain) - return LangDetails(lang, mapping[0], mapping[2], domain) - -def list_available_translations (domain): - rv = [get_lang_details('en', domain)] - rv[0].guess_translation(True) - if not os.path.isdir('locale'): - return rv - for i,x in enumerate([x for x in os.listdir('locale') if os.path.isdir('locale/' + x) and not x.startswith('.')]): - try: - details = get_lang_details(x, domain) - if details is not None: - details.guess_translation() - rv.append(details) - except: - raise - pass - return rv - -class LanguageComboBox (gtk.ComboBox): - def __init__ (self, domain): - liststore = gtk.ListStore(gobject.TYPE_STRING) - gtk.ComboBox.__init__(self, liststore) - - self.cell = gtk.CellRendererText() - self.pack_start(self.cell, True) - self.add_attribute(self.cell, 'text', 0) - - self.translations = list_available_translations(domain) - for i,x in enumerate(self.translations): - liststore.insert(i+1, (gettext.gettext(x.name), )) - self.connect('changed', self.install) - - def modify_bg (self, state, color): - setattr(self.cell, 'background-gdk',color) - setattr(self.cell, 'background-set',True) - - def install (self, *args): - if self.get_active() > -1: - self.translations[self.get_active()].install() - else: - code, encoding = locale.getdefaultlocale() - if code is None: - code = 'en' - # Try to find the exact translation - for i,t in enumerate(self.translations): - if t.matches(code): - self.set_active(i) - break - if self.get_active() < 0: - # Failed, try to get the translation based only in the country - for i,t in enumerate(self.translations): - if t.matches(code, False): - self.set_active(i) - break - if self.get_active() < 0: - # nothing found, select first translation - self.set_active(0) - # Allow for other callbacks - return False - -### -def gather_other_translations (): - from glob import glob - lessons = filter(lambda x: os.path.isdir(x), glob('lessons/*')) - lessons = map(lambda x: os.path.basename(x), lessons) - lessons = map(lambda x: x[0].isdigit() and x[1:] or x, lessons) - images = filter(lambda x: os.path.isdir(x), glob('images/*')) - images = map(lambda x: os.path.basename(x), images) - f = file('i18n_misc_strings.py', 'w') - for e in images+lessons: - f.write('_("%s")\n' % e) - f.close() - diff --git a/i18n_misc_strings.py b/i18n_misc_strings.py deleted file mode 100644 index d31a70e..0000000 --- a/i18n_misc_strings.py +++ /dev/null @@ -1,5 +0,0 @@ -_("Lesson 1") -_("Lesson 2") -_("Lesson 3") -_("Lesson 4") -_("Introduction") diff --git a/locale/af/LC_MESSAGES/org.worldwideworkshop.olpc.JokeMachine.mo b/locale/af/LC_MESSAGES/org.worldwideworkshop.olpc.JokeMachine.mo Binary files differdeleted file mode 100644 index f2a2854..0000000 --- a/locale/af/LC_MESSAGES/org.worldwideworkshop.olpc.JokeMachine.mo +++ /dev/null diff --git a/pages/choose.py b/pages/choose.py index e5f9280..33a637f 100644 --- a/pages/choose.py +++ b/pages/choose.py @@ -45,16 +45,14 @@ class Choose(Page): # page title self.append(hippo.CanvasText(text= _('Choose a Jokebook to read:'), xalign=hippo.ALIGNMENT_START, - padding=10, - font_desc=theme.FONT_BODY.get_pango_desc())) + padding=10)) # list of Jokebooks allow_edit = Globals.JokeMachineActivity.is_initiator - #jokebooks_div = CanvasListBox(1050, 500) - jokebooks_div = CanvasListBox(1050, theme.zoom(500)) # TODO -> This should be sizing relative to parent + jokebooks_div = CanvasListBox() for jokebook in Globals.JokeMachineState.jokebooks: jokebooks_div.append(self.__make_jokebook_div(jokebook, allow_edit)) - self.append(jokebooks_div) + self.append(jokebooks_div, hippo.PACK_EXPAND) def __do_clicked_title(self, control, event, jokebook): @@ -93,22 +91,17 @@ class Choose(Page): list_row.append(self.__make_column_div(100, thumbnail)) # title - title = hippo.CanvasText(text=jokebook.title, + title = hippo.CanvasText( + text = (jokebook.title or '')+ "\n" + (jokebook.owner or ''), padding_left = 20, xalign=hippo.ALIGNMENT_START, - font_desc=theme.FONT_LARGE.get_pango_desc(), color=theme.COLOR_LINK.get_int()) title.set_clickable(True) title.connect('button-press-event', self.__do_clicked_title, jokebook) - list_row.append(self.__make_column_div(330, title)) + list_row.append(self.__make_column_div(-1, title), hippo.PACK_EXPAND) list_row.append(hippo.CanvasBox(box_width=theme.SPACER_HORIZONTAL)) # TODO spacer - # owner - list_row.append(self.__make_column_div(330, hippo.CanvasText(text= jokebook.owner, - xalign=hippo.ALIGNMENT_START, - font_desc=theme.FONT_LARGE.get_pango_desc()))) - # buttons if edit: button = gtk.Button(_('Edit')) @@ -118,6 +111,7 @@ class Choose(Page): button = gtk.Button(_('Delete')) button.connect('clicked', self.__do_clicked_delete, jokebook) list_row.append(self.__make_column_div(100, hippo.CanvasWidget(widget=theme.theme_widget(button)))) + list_row.append(hippo.CanvasBox(box_width=theme.SPACER_HORIZONTAL)) # TODO spacer return list_row diff --git a/pages/cover.py b/pages/cover.py index 50d096a..77a205e 100644 --- a/pages/cover.py +++ b/pages/cover.py @@ -38,15 +38,15 @@ class Cover(Page): Page.__init__(self) # title - self.append(hippo.CanvasText(text='"' + jokebook.title + '" ' + _('started by') + ' ' + jokebook.owner, + self.append(hippo.CanvasText(text='"' + (jokebook.title or '') + '" ' + + _('started by') + ' ' + (jokebook.owner or ''), xalign=hippo.ALIGNMENT_CENTER, - padding_top=10, - font_desc=theme.FONT_BODY_BOLD.get_pango_desc())) + padding_top=10)) self.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL)) # cover picture - cover_picture = self.make_imagebox(jokebook, 'image', 640, 480, False) - self.append(cover_picture) + cover_picture = self.make_imagebox(jokebook, 'image', 480, 360, False) + self.append(cover_picture, hippo.PACK_EXPAND) self.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL)) # open button diff --git a/pages/edit.py b/pages/edit.py index 63aa2d8..e269392 100644 --- a/pages/edit.py +++ b/pages/edit.py @@ -48,52 +48,43 @@ class PageSelector(hippo.CanvasBox): hippo.CanvasBox.__init__(self, **kwargs) self.__parent = parent - control_width = 1024 # TODO -> Figure this out from parent size self.props.border = 1 self.props.border_color=theme.COLOR_TAB_ACTIVE.get_int() self.props.background_color=theme.COLOR_PAGE.get_int() self.props.orientation=hippo.ORIENTATION_VERTICAL - # button box -> # TODO -> Make into generic control - tab_width = control_width / 3.0 tab_box = hippo.CanvasBox(background_color=theme.COLOR_TAB_SEPERATOR.get_int(), spacing=2, orientation=hippo.ORIENTATION_HORIZONTAL) self.__tab_1 = hippo.CanvasText(text=_('Edit Jokebook Cover'), - box_width=tab_width, padding=theme.PADDING_TAB, xalign=hippo.ALIGNMENT_START, background_color=theme.COLOR_TAB_ACTIVE.get_int(), - color=theme.COLOR_TAB_TEXT.get_int(), - font_desc=theme.FONT_TABS.get_pango_desc()) + color=theme.COLOR_TAB_TEXT.get_int()) self.__tab_1.page = EditInfo self.__tab_1.connect('button-press-event', self.__do_clicked_tab) - tab_box.append(self.__tab_1) + tab_box.append(self.__tab_1, hippo.PACK_EXPAND) self.__tab_2 = hippo.CanvasText(text=_('Edit My Jokes'), - box_width=tab_width, padding=theme.PADDING_TAB, xalign=hippo.ALIGNMENT_START, background_color=theme.COLOR_TAB_INACTIVE.get_int(), - color=theme.COLOR_TAB_TEXT.get_int(), - font_desc=theme.FONT_TABS.get_pango_desc()) + color=theme.COLOR_TAB_TEXT.get_int()) self.__tab_2.page = EditJokes self.__tab_2.connect('button-press-event', self.__do_clicked_tab) - tab_box.append(self.__tab_2) + tab_box.append(self.__tab_2, hippo.PACK_EXPAND) self.__tab_3 = hippo.CanvasText(text=_('Review Submitted Jokes'), - box_width=tab_width, padding=theme.PADDING_TAB, xalign=hippo.ALIGNMENT_START, background_color=theme.COLOR_TAB_INACTIVE.get_int(), - color=theme.COLOR_TAB_TEXT.get_int(), - font_desc=theme.FONT_TABS.get_pango_desc()) + color=theme.COLOR_TAB_TEXT.get_int()) self.__tab_3.page = EditReview self.__tab_3.connect('button-press-event', self.__do_clicked_tab) - tab_box.append(self.__tab_3) + tab_box.append(self.__tab_3, hippo.PACK_EXPAND) self.append(tab_box) self.__page = hippo.CanvasBox(background_color=theme.COLOR_PAGE.get_int(), orientation=hippo.ORIENTATION_VERTICAL) - self.append(self.__page) + self.append(self.__page, hippo.PACK_EXPAND) @Property @@ -101,7 +92,7 @@ class PageSelector(hippo.CanvasBox): def get(self): return self.__page.the_page def set(self, value): self.__page.clear() - self.__page.append(value) + self.__page.append(value, hippo.PACK_EXPAND) self.__page.the_page = value @@ -117,12 +108,12 @@ class PageSelector(hippo.CanvasBox): class Edit(Page): def __init__(self, jokebook): - Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER) + Page.__init__(self) self.__jokebook = jokebook self.__page_selector = PageSelector(self) - self.append(self.__page_selector) + self.append(self.__page_selector, hippo.PACK_EXPAND) self.__page_selector.page = EditInfo(jokebook, self) button = gtk.Button(_('Preview')) @@ -145,8 +136,7 @@ class EditInfo(Page): # TODO -> gui.Page should follow this pattern rather Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER, orientation=hippo.ORIENTATION_VERTICAL, padding=20, - spacing=20, - box_height=theme.TABS_HEIGHT) + spacing=20) self.__parent = parent @@ -177,17 +167,17 @@ class EditJokes(Page): self.__parent = parent # list of jokes - jokes_div = CanvasListBox(800, theme.TABS_HEIGHT) + jokes_div = CanvasListBox() jokes_div.props.border=0 for joke in jokebook.jokes: button = gtk.Button(' ' + _('Delete') + ' ') button.connect('clicked', self.__do_clicked_delete, jokebook, joke) - list_row = self.make_listrow(JokeEditor(joke)) + list_row = self.make_listrow(JokeEditor(joke), hippo.PACK_EXPAND) list_row.append(hippo.CanvasWidget(widget=theme.theme_widget(button), padding=5), hippo.PACK_END) jokes_div.append(list_row) - self.append(jokes_div) + self.append(jokes_div, hippo.PACK_EXPAND) # new joke button buttons = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL, @@ -233,7 +223,7 @@ class EditReview(Page): self.__parent = parent - jokes_div = CanvasListBox(800, theme.TABS_HEIGHT) + jokes_div = CanvasListBox() jokes_div.props.border=0 for joke in jokebook.submissions: list_row = self.make_listrow(JokeViewer(joke, jokebook.title)) @@ -267,8 +257,7 @@ class EditReview(Page): #status_box.append(hippo.CanvasText(text=_('Status:'), #color=theme.COLOR_DARK_GREEN.get_int(), #box_width=100, - #xalign=hippo.ALIGNMENT_START, - #font_desc=theme.FONT_BODY.get_pango_desc())) + #xalign=hippo.ALIGNMENT_START)) ##button = None #button = gtk.RadioButton() #button = gtk.RadioButton(button, _('Approved')) diff --git a/pages/joke.py b/pages/joke.py index 3063df9..9eb804e 100644 --- a/pages/joke.py +++ b/pages/joke.py @@ -57,14 +57,11 @@ class JokeViewer(Page): self.left.append(joke_image) self.left.append(hippo.CanvasText(text=jokebook_title, xalign=hippo.ALIGNMENT_START, - color=theme.COLOR_DARK_GREEN.get_int(), - font_desc=theme.FONT_BODY_BOLD.get_pango_desc())) + color=theme.COLOR_DARK_GREEN.get_int())) self.left.append(hippo.CanvasText(text=_('Joke') + ' ' + str(joke.id), - xalign=hippo.ALIGNMENT_START, - font_desc=theme.FONT_BODY.get_pango_desc())) + xalign=hippo.ALIGNMENT_START)) self.left.append(hippo.CanvasText(text=_('By') + ' ' + str(joke.joker), - xalign=hippo.ALIGNMENT_START, - font_desc=theme.FONT_BODY.get_pango_desc())) + xalign=hippo.ALIGNMENT_START)) # right column self.right = hippo.CanvasBox(border=0, @@ -74,8 +71,7 @@ class JokeViewer(Page): orientation=hippo.ORIENTATION_VERTICAL) self.right.append(hippo.CanvasText(text=_('Question'), xalign=hippo.ALIGNMENT_START, - color=theme.COLOR_DARK_GREEN.get_int(), - font_desc=theme.FONT_BODY.get_pango_desc())) + color=theme.COLOR_DARK_GREEN.get_int())) self.right.append(self.make_bodytext(joke.text)) self.right.append(hippo.CanvasBox(box_height=30)) # spacer @@ -83,8 +79,7 @@ class JokeViewer(Page): self.answer_box = hippo.CanvasBox() self.answer_box.append(hippo.CanvasText(text=_('Answer'), xalign=hippo.ALIGNMENT_START, - color=theme.COLOR_DARK_GREEN.get_int(), - font_desc=theme.FONT_BODY.get_pango_desc())) + color=theme.COLOR_DARK_GREEN.get_int())) self.answer_box.append(self.make_bodytext(joke.answer)) self.right.append(self.answer_box) diff --git a/pages/preview.py b/pages/preview.py index c88fffe..e0b07a3 100644 --- a/pages/preview.py +++ b/pages/preview.py @@ -41,17 +41,17 @@ class Preview(Page): def __init__(self, jokebook): Page.__init__(self, xalign=hippo.ALIGNMENT_CENTER) - preview_box = CanvasListBox(1028, theme.PREVIEW_HEIGHT) # TODO - really shouldn't be hardcoded + preview_box = CanvasListBox() # cover cover = self.make_listrow() cover.props.orientation=hippo.ORIENTATION_VERTICAL - cover.append(hippo.CanvasText(text='"' + jokebook.title + '" ' + _('started by') + ' ' + jokebook.owner, + cover.append(hippo.CanvasText(text='"' + (jokebook.title or '')+ '" ' + + _('started by') + ' ' + (jokebook.owner or ''), xalign=hippo.ALIGNMENT_CENTER, - padding_top=10, - font_desc=theme.FONT_BODY_BOLD.get_pango_desc())) + padding_top=10)) cover.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL)) - cover_picture = self.make_imagebox(jokebook, 'image', 640, 480, False) + cover_picture = self.make_imagebox(jokebook, 'image', 480, 360, False) cover.append(cover_picture) cover.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL)) preview_box.append(cover) @@ -60,7 +60,7 @@ class Preview(Page): for joke in jokebook.jokes: list_row = self.make_listrow(JokeViewer(joke, jokebook.title)) preview_box.append(list_row) - self.append(preview_box) + self.append(preview_box, hippo.PACK_EXPAND) self.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL)) diff --git a/pages/submit.py b/pages/submit.py index 99645a6..aed4dbe 100644 --- a/pages/submit.py +++ b/pages/submit.py @@ -44,13 +44,11 @@ class JokeEditor(Page): padding=4, border_color=theme.COLOR_RED.get_int(), border=0, - xalign=hippo.ALIGNMENT_START, orientation=hippo.ORIENTATION_HORIZONTAL) # left column self.left = hippo.CanvasBox(border=0, border_color=theme.COLOR_RED.get_int(), - box_width=450, xalign=hippo.ALIGNMENT_START, orientation=hippo.ORIENTATION_VERTICAL, padding=theme.BORDER_WIDTH_CONTROL/2) @@ -60,27 +58,24 @@ class JokeEditor(Page): # right column self.right = hippo.CanvasBox(border=0, border_color=theme.COLOR_RED.get_int(), - box_width=350, - xalign=hippo.ALIGNMENT_START, + padding=theme.SPACER_HORIZONTAL, orientation=hippo.ORIENTATION_VERTICAL, padding_bottom=theme.BORDER_WIDTH_CONTROL/2, spacing=theme.BORDER_WIDTH_CONTROL/2) self.right.append(hippo.CanvasText(text=_('Question'), xalign=hippo.ALIGNMENT_START, - color=theme.COLOR_DARK_GREEN.get_int(), - font_desc=theme.FONT_BODY.get_pango_desc())) + color=theme.COLOR_DARK_GREEN.get_int())) self.right.append(self.make_textbox(joke, 'text')) self.right.append(hippo.CanvasBox(box_height=theme.SPACER_VERTICAL)) self.right.append(hippo.CanvasText(text=_('Answer'), xalign=hippo.ALIGNMENT_START, - color=theme.COLOR_DARK_GREEN.get_int(), - font_desc=theme.FONT_BODY.get_pango_desc())) + color=theme.COLOR_DARK_GREEN.get_int())) self.right.append(self.make_textbox(joke, 'answer')) self.append(self.left) - self.append(self.right) + self.append(self.right, hippo.PACK_EXPAND) class Submit(Page): |