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

Reply via email to