Apologies for the duplicate patches and the comment cruft in the last
email. Here is a patch which cleans this all up in one go.
- Eben
On Wed, Apr 16, 2008 at 11:23 AM, Eben Eliason <[EMAIL PROTECTED]> wrote:
> This is the first in a series of patches which attempt to clean up the
> design and interactions of the Journal. The second patch included is
> a one-liner because I forgot to change a color back to normal after
> making some other changes.
>
> - Eben
>
From 25608650d0980ec4de50fb9d12f8c1c17df2370f Mon Sep 17 00:00:00 2001
From: Eben Eliason <[EMAIL PROTECTED]>
Date: Wed, 16 Apr 2008 00:19:14 -0400
Subject: [PATCH] First pass at refining the Journal visual design
---
collapsedentry.py | 58 ++++++++++++-------------
expandedentry.py | 122 ++++++++++++++++++++++++++++++++---------------------
journaltoolbox.py | 32 +++++---------
keepicon.py | 6 +-
4 files changed, 115 insertions(+), 103 deletions(-)
diff --git a/collapsedentry.py b/collapsedentry.py
index 75bef5a..9fff01a 100644
--- a/collapsedentry.py
+++ b/collapsedentry.py
@@ -65,7 +65,8 @@ class CollapsedEntry(hippo.CanvasBox):
_PROGRESS_COL_WIDTH = style.GRID_CELL_SIZE * 5
def __init__(self, jobject, allow_resume=True):
- hippo.CanvasBox.__init__(self, spacing=style.DEFAULT_SPACING,
+ hippo.CanvasBox.__init__(self,
+ spacing=style.DEFAULT_SPACING,
padding_top=style.DEFAULT_PADDING,
padding_bottom=style.DEFAULT_PADDING,
padding_left=style.DEFAULT_PADDING * 2,
@@ -77,36 +78,32 @@ class CollapsedEntry(hippo.CanvasBox):
self._allow_resume = allow_resume
self._is_selected = False
- self._frame = CanvasRoundBox()
- self._frame.connect_after('button-release-event', self._frame_button_release_event_cb)
- self.append(self._frame, hippo.PACK_EXPAND)
-
self._keep_icon = self._create_keep_icon()
- self._frame.append(self._keep_icon)
+ self.append(self._keep_icon)
self._icon = self._create_icon()
- self._frame.append(self._icon)
+ self.append(self._icon)
self._title = self._create_title()
- self._frame.append(self._title, hippo.PACK_EXPAND)
+ self.append(self._title, hippo.PACK_EXPAND)
self._buddies_list = self._create_buddies_list()
- self._frame.append(self._buddies_list)
+ self.append(self._buddies_list)
self._date = self._create_date()
- self._frame.append(self._date)
+ self.append(self._date)
- self._resume_button = self._create_resume_button()
- self._frame.append(self._resume_button)
+ self._detail_button = self._create_detail_button()
+ self.append(self._detail_button)
if not self._allow_resume:
- self._frame.set_child_visible(self._resume_button, False)
+ self.set_child_visible(self._detail_button, False)
# Progress controls
self._progress_bar = self._create_progress_bar()
- self._frame.append(self._progress_bar)
+ self.append(self._progress_bar)
self._cancel_button = self._create_cancel_button()
- self._frame.append(self._cancel_button)
+ self.append(self._cancel_button)
self.set_jobject(jobject)
@@ -131,23 +128,23 @@ class CollapsedEntry(hippo.CanvasBox):
return icon
def _create_title(self):
+ # TODO: We'd prefer to ellipsize in the middle
title = hippo.CanvasText(text='',
xalign=hippo.ALIGNMENT_START,
font_desc=style.FONT_BOLD.get_pango_desc(),
- size_mode=hippo.CANVAS_SIZE_WRAP_WORD)
+ size_mode=hippo.CANVAS_SIZE_ELLIPSIZE_END)
return title
def _create_buddies_list(self):
return BuddyList([], self._BUDDIES_COL_WIDTH)
- def _create_resume_button(self):
- button = CanvasIcon(icon_name='activity-start',
+ def _create_detail_button(self):
+ button = CanvasIcon(icon_name='go-right',
size=style.SMALL_ICON_SIZE,
- box_width=style.GRID_CELL_SIZE,
- fill_color=style.COLOR_BUTTON_GREY.get_svg(),
- stroke_color=style.COLOR_BUTTON_GREY.get_svg())
+ box_width=style.GRID_CELL_SIZE * 3 / 5,
+ fill_color=style.COLOR_BUTTON_GREY.get_svg())
button.connect('button-release-event',
- self._resume_button_release_event_cb)
+ self._detail_button_release_event_cb)
return button
def _create_progress_bar(self):
@@ -184,19 +181,17 @@ class CollapsedEntry(hippo.CanvasBox):
self._buddies_list.set_visible(not in_process)
self._date.set_visible(not in_process)
- self._resume_button.set_visible(not in_process and self._allow_resume)
+ self._detail_button.set_visible(not in_process and self._allow_resume)
self._progress_bar.set_visible(in_process)
self._cancel_button.set_visible(in_process)
+ # TODO: determine the appearance of in-progress entries
def _update_color(self):
if self._is_in_progress():
- self._frame.props.background_color = style.COLOR_WHITE.get_int()
- self._frame.props.border = style.LINE_WIDTH
- self._frame.props.border_color = style.COLOR_TOOLBAR_GREY.get_int()
+ self.props.background_color = style.COLOR_WHITE.get_int()
else:
- self._frame.props.background_color = style.COLOR_TEXT_FIELD_GREY.get_int()
- self._frame.props.border = 0
+ self.props.background_color = style.COLOR_WHITE.get_int()
def _is_in_progress(self):
return self._jobject.metadata.has_key('progress') and \
@@ -228,9 +223,10 @@ class CollapsedEntry(hippo.CanvasBox):
self._jobject.resume()
return True
- def _resume_button_release_event_cb(self, button, event):
- logging.debug('_resume_button_release_event_cb')
- self._jobject.resume()
+ def _detail_button_release_event_cb(self, button, event):
+ logging.debug('_detail_button_release_event_cb')
+ if not self._is_in_progress():
+ self.emit('entry-activated')
return True
def _cancel_button_release_event_cb(self, button, event):
diff --git a/expandedentry.py b/expandedentry.py
index 65b7808..1bb7993 100644
--- a/expandedentry.py
+++ b/expandedentry.py
@@ -51,18 +51,23 @@ class CanvasTextView(hippo.CanvasWidget):
hippo.CanvasWidget.__init__(self, **kwargs)
self.text_view_widget = gtk.TextView()
self.text_view_widget.props.buffer.props.text = text
+ self.text_view_widget.props.left_margin = style.DEFAULT_SPACING
+ self.text_view_widget.props.right_margin = style.DEFAULT_SPACING
+ self.text_view_widget.props.wrap_mode = gtk.WRAP_WORD
self.text_view_widget.show()
+ # TODO: These fields should expand vertically instead of scrolling
scrolled_window = gtk.ScrolledWindow()
scrolled_window.set_shadow_type(gtk.SHADOW_OUT)
- scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
scrolled_window.add(self.text_view_widget)
self.props.widget = scrolled_window
class BuddyList(hippo.CanvasBox):
def __init__(self, model):
- hippo.CanvasBox.__init__(self, xalign=hippo.ALIGNMENT_START)
+ hippo.CanvasBox.__init__(self, xalign=hippo.ALIGNMENT_START,
+ orientation=hippo.ORIENTATION_HORIZONTAL)
for buddy in model:
nick, color = buddy
@@ -71,65 +76,64 @@ class BuddyList(hippo.CanvasBox):
xo_color=XoColor(color),
size=style.STANDARD_ICON_SIZE)
hbox.append(icon)
-
- label = hippo.CanvasText(text=nick,
- font_desc=style.FONT_NORMAL.get_pango_desc())
- hbox.append(label)
-
self.append(hbox)
class ExpandedEntry(hippo.CanvasBox):
def __init__(self, object_id):
hippo.CanvasBox.__init__(self)
- self.props.orientation = hippo.ORIENTATION_HORIZONTAL
+ self.props.orientation = hippo.ORIENTATION_VERTICAL
self.props.background_color = style.COLOR_WHITE.get_int()
- self.props.spacing = style.DEFAULT_SPACING
- self.props.padding = style.DEFAULT_PADDING
+ self.props.padding_top = style.DEFAULT_SPACING * 3
self._jobject = datastore.get(object_id)
self._update_title_sid = None
- # Create three columns
+ # Create header
+ header = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
+ padding=style.DEFAULT_PADDING,
+ padding_right=style.GRID_CELL_SIZE,
+ spacing=style.DEFAULT_SPACING)
+ self.append(header)
+
+ # Create two column body
+
+ body = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
+ spacing=style.DEFAULT_SPACING * 3,
+ padding_left=style.GRID_CELL_SIZE,
+ padding_right=style.GRID_CELL_SIZE,
+ padding_top=style.DEFAULT_SPACING * 3)
+
+ self.append(body, hippo.PACK_EXPAND)
+
first_column = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL,
- padding=style.DEFAULT_PADDING,
spacing=style.DEFAULT_SPACING)
- self.append(first_column)
+ body.append(first_column)
second_column = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL,
- padding_right=style.GRID_CELL_SIZE,
- padding=style.DEFAULT_PADDING,
- spacing=style.DEFAULT_SPACING)
- self.append(second_column, hippo.PACK_EXPAND)
+ spacing=style.DEFAULT_SPACING)
+ body.append(second_column, hippo.PACK_EXPAND)
- self.append(Separator(hippo.ORIENTATION_VERTICAL))
-
- third_column = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL,
- box_width=style.GRID_CELL_SIZE * 4)
- self.append(third_column)
+ # Header
- # First column
self._keep_icon = self._create_keep_icon()
- first_column.append(self._keep_icon)
+ header.append(self._keep_icon)
- # Second column
- header = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL,
- spacing=style.DEFAULT_SPACING)
- second_column.append(header)
-
self._icon = self._create_icon()
header.append(self._icon)
self._title = self._create_title()
header.append(self._title, hippo.PACK_EXPAND)
- hbox = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL)
- second_column.append(hbox)
+ # TODO: create a version list popup instead of a date label
+ self._date = self._create_date()
+ header.append(self._date)
+
+ # First column
self._preview = self._create_preview()
- hbox.append(self._preview)
+ first_column.append(self._preview)
- self._buddy_list = self._create_buddy_list()
- hbox.append(self._buddy_list)
+ # Second column
description_box, self._description = self._create_description()
second_column.append(description_box)
@@ -137,9 +141,8 @@ class ExpandedEntry(hippo.CanvasBox):
tags_box, self._tags = self._create_tags()
second_column.append(tags_box)
- # Third column
- self._version_list = self._create_version_list()
- third_column.append(self._version_list)
+ self._buddy_list = self._create_buddy_list()
+ second_column.append(self._buddy_list)
def _create_keep_icon(self):
keep = self._jobject.metadata.has_key('keep') and \
@@ -177,6 +180,12 @@ class ExpandedEntry(hippo.CanvasBox):
self._title_focus_out_event_cb)
return title
+ def _create_date(self):
+ date = hippo.CanvasText(xalign=hippo.ALIGNMENT_START,
+ font_desc=style.FONT_NORMAL.get_pango_desc(),
+ text = misc.get_date(self._jobject))
+ return date
+
def _create_preview(self):
width = style.zoom(320)
height = style.zoom(240)
@@ -223,22 +232,36 @@ class ExpandedEntry(hippo.CanvasBox):
return box
def _create_buddy_list(self):
+
+ vbox = hippo.CanvasBox()
+ vbox.props.spacing = style.DEFAULT_SPACING
+
+ text = hippo.CanvasText(text=_('Participants:'),
+ xalign=hippo.ALIGNMENT_START,
+ font_desc=style.FONT_NORMAL.get_pango_desc())
+ text.props.color=style.COLOR_BUTTON_GREY.get_int()
+ vbox.append(text)
+
if self._jobject.metadata.has_key('buddies') and \
self._jobject.metadata['buddies']:
# json cannot read unicode strings
buddies_str = self._jobject.metadata['buddies'].encode('utf8')
buddies = json.read(buddies_str).values()
- return BuddyList(buddies)
+ vbox.append(BuddyList(buddies))
+ return vbox
else:
- return BuddyList([])
+ return vbox
def _create_description(self):
vbox = hippo.CanvasBox()
- #vbox.props.spacing = style.DEFAULT_SPACING
- vbox.append(hippo.CanvasText(text=_('Description:'),
- xalign=hippo.ALIGNMENT_START,
- font_desc=style.FONT_NORMAL.get_pango_desc()))
-
+ vbox.props.spacing = style.DEFAULT_SPACING
+
+ text = hippo.CanvasText(text=_('Description:'),
+ xalign=hippo.ALIGNMENT_START,
+ font_desc=style.FONT_NORMAL.get_pango_desc())
+ text.props.color=style.COLOR_BUTTON_GREY.get_int()
+ vbox.append(text)
+
description = self._jobject.metadata.get('description', '')
text_view = CanvasTextView(description, box_height=style.GRID_CELL_SIZE * 2)
vbox.append(text_view, hippo.PACK_EXPAND)
@@ -251,10 +274,13 @@ class ExpandedEntry(hippo.CanvasBox):
def _create_tags(self):
vbox = hippo.CanvasBox()
- #vbox.props.spacing = style.DEFAULT_SPACING
- vbox.append(hippo.CanvasText(text=_('Tags:'),
- xalign=hippo.ALIGNMENT_START,
- font_desc=style.FONT_NORMAL.get_pango_desc()))
+ vbox.props.spacing = style.DEFAULT_SPACING
+
+ text = hippo.CanvasText(text=_('Tags:'),
+ xalign=hippo.ALIGNMENT_START,
+ font_desc=style.FONT_NORMAL.get_pango_desc())
+ text.props.color=style.COLOR_BUTTON_GREY.get_int()
+ vbox.append(text)
tags = self._jobject.metadata.get('tags', '')
text_view = CanvasTextView(tags, box_height=style.GRID_CELL_SIZE * 2)
diff --git a/journaltoolbox.py b/journaltoolbox.py
index 630d245..f018af6 100644
--- a/journaltoolbox.py
+++ b/journaltoolbox.py
@@ -332,26 +332,15 @@ class EntryToolbar(gtk.Toolbar):
gtk.Toolbar.__init__(self)
go_back_button = ToolButton('go-previous')
- go_back_button.set_tooltip(_('Go back'))
+ go_back_button.set_tooltip(_('Back'))
go_back_button.connect('clicked', self._go_back_button_clicked_cb)
self.add(go_back_button)
go_back_button.show()
- separator = gtk.SeparatorToolItem()
- separator.set_expand(True)
- separator.props.draw = False
- self.add(separator)
- separator.show()
-
- erase_button = ToolButton('erase')
- erase_button.set_tooltip(_('Erase'))
- erase_button.connect('clicked', self._erase_button_clicked_cb)
- self.add(erase_button)
- erase_button.show()
-
- separator = gtk.SeparatorToolItem()
- self.add(separator)
- separator.show()
+ self._resume = ToolButton('activity-start')
+ self._resume.connect('clicked', self._resume_clicked_cb)
+ self.add(self._resume)
+ self._resume.show()
self._copy = ToolButton()
@@ -359,7 +348,7 @@ class EntryToolbar(gtk.Toolbar):
self._copy.set_icon_widget(icon)
icon.show()
- self._copy.set_tooltip(_('Copy to clipboard'))
+ self._copy.set_tooltip(_('Copy'))
self._copy.connect('clicked', self._copy_clicked_cb)
self.add(self._copy)
self._copy.show()
@@ -368,10 +357,11 @@ class EntryToolbar(gtk.Toolbar):
self.add(separator)
separator.show()
- self._resume = ToolButton('activity-start')
- self._resume.connect('clicked', self._resume_clicked_cb)
- self.add(self._resume)
- self._resume.show()
+ erase_button = ToolButton('dialog-cancel')
+ erase_button.set_tooltip(_('Erase'))
+ erase_button.connect('clicked', self._erase_button_clicked_cb)
+ self.add(erase_button)
+ erase_button.show()
def set_jobject(self, jobject):
self._jobject = jobject
diff --git a/keepicon.py b/keepicon.py
index 393310d..ace98e2 100644
--- a/keepicon.py
+++ b/keepicon.py
@@ -28,8 +28,8 @@ class KeepIcon(CanvasIcon):
def __init__(self, keep):
CanvasIcon.__init__(self, icon_name='emblem-favorite',
- box_width=style.GRID_CELL_SIZE,
- size=0.75*style.STANDARD_ICON_SIZE)
+ box_width=style.GRID_CELL_SIZE * 3 / 5,
+ size=style.SMALL_ICON_SIZE)
self._keep = None
self._set_keep(keep)
@@ -42,7 +42,7 @@ class KeepIcon(CanvasIcon):
self.props.xo_color = profile.get_color()
else:
self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
- self.props.fill_color = style.COLOR_WHITE.get_svg()
+ self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
def do_set_property(self, pspec, value):
if pspec.name == 'keep':
--
1.5.3.3
_______________________________________________
Sugar mailing list
[email protected]
http://lists.laptop.org/listinfo/sugar