Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--JokeMachineActivity.py9
-rw-r--r--MANIFEST42
-rw-r--r--activity/activity.info3
-rw-r--r--gui/canvaslistbox.py8
-rw-r--r--gui/frame.py33
-rw-r--r--gui/lessonplanwidget.py1
-rw-r--r--gui/page.py24
-rw-r--r--gui/theme.py19
-rw-r--r--i18n.py167
-rw-r--r--i18n_misc_strings.py5
-rw-r--r--locale/af/LC_MESSAGES/org.worldwideworkshop.olpc.JokeMachine.mobin2696 -> 0 bytes
-rw-r--r--pages/choose.py20
-rw-r--r--pages/cover.py10
-rw-r--r--pages/edit.py43
-rw-r--r--pages/joke.py15
-rw-r--r--pages/preview.py12
-rw-r--r--pages/submit.py13
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
deleted file mode 100644
index f2a2854..0000000
--- a/locale/af/LC_MESSAGES/org.worldwideworkshop.olpc.JokeMachine.mo
+++ /dev/null
Binary files differ
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):