Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-08-23 17:14:18 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-08-25 15:50:13 (GMT)
commitbe724488e6122946504472309ca6ef0ea6f18ec0 (patch)
treece2fb6f8643e0d3fd861c2cf6280f2ad9d28aaa1 /src
parentb8f2287b75f983058af49cba2d41a0247df4e85d (diff)
Add thumbs view to ObjectChooser
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/journal/listview.py24
-rw-r--r--src/jarabe/journal/objectchooser.py18
-rw-r--r--src/jarabe/journal/objectview.py19
-rw-r--r--src/jarabe/journal/tableview.py4
-rw-r--r--src/jarabe/journal/thumbsview.py58
5 files changed, 71 insertions, 52 deletions
diff --git a/src/jarabe/journal/listview.py b/src/jarabe/journal/listview.py
index d0bcc15..3366def 100644
--- a/src/jarabe/journal/listview.py
+++ b/src/jarabe/journal/listview.py
@@ -28,6 +28,7 @@ from sugar.graphics.icon import CellRendererIcon
from sugar.graphics.xocolor import XoColor
from sugar import util
+from jarabe.journal.source import Source
from jarabe.journal.listmodel import ListModel
from jarabe.journal.palettes import ObjectPalette, BuddyPalette
from jarabe.journal import model
@@ -39,7 +40,10 @@ class ListView(gtk.TreeView):
__gsignals__ = {
'detail-clicked': (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE,
- ([object]))
+ ([object])),
+ 'entry-activated': (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ ([str])),
}
def __init__(self):
@@ -73,6 +77,24 @@ class ListView(gtk.TreeView):
self.connect('notify::hover-selection',
self.__notify_hover_selection_cb)
+ self.connect('button-release-event', self.__button_release_event_cb)
+
+ def __button_release_event_cb(self, tree_view, event):
+ if not tree_view.props.hover_selection:
+ return False
+
+ if event.window != tree_view.get_bin_window():
+ return False
+
+ pos = tree_view.get_path_at_pos(event.x, event.y)
+ if pos is None:
+ return False
+
+ path, column_, x_, y_ = pos
+ uid = tree_view.get_model()[path][Source.FIELD_UID]
+ self.emit('entry-activated', uid)
+
+ return False
def __notify_hover_selection_cb(self, widget, pspec):
self.cell_icon.props.show_palette = not self.props.hover_selection
diff --git a/src/jarabe/journal/objectchooser.py b/src/jarabe/journal/objectchooser.py
index e0c0c26..57e9ceb 100644
--- a/src/jarabe/journal/objectchooser.py
+++ b/src/jarabe/journal/objectchooser.py
@@ -80,15 +80,16 @@ class ObjectChooser(gtk.Window):
self._toolbar = SearchToolbar()
self._toolbar.connect('query-changed', self.__query_changed_cb)
+ self._toolbar.connect('view-changed', self.__view_changed_cb)
self._toolbar.set_size_request(-1, style.GRID_CELL_SIZE)
vbox.pack_start(self._toolbar, expand=False)
self._toolbar.show()
- self._list_view = ObjectView()
- self._list_view.props.hover_selection = True
- self._list_view.connect('entry-activated', self.__entry_activated_cb)
- vbox.pack_start(self._list_view)
- self._list_view.show()
+ self._object_view = ObjectView()
+ self._object_view.props.hover_selection = True
+ self._object_view.connect('entry-activated', self.__entry_activated_cb)
+ vbox.pack_start(self._object_view)
+ self._object_view.show()
self._toolbar.set_mount_point('/')
@@ -126,7 +127,10 @@ class ObjectChooser(gtk.Window):
return self._selected_object_id
def __query_changed_cb(self, toolbar, query):
- self._list_view.update_with_query(query)
+ self._object_view.update_with_query(query)
+
+ def __view_changed_cb(self, sender, view):
+ self._object_view.change_view(view)
def __volume_changed_cb(self, volume_toolbar, mount_point):
logging.debug('Selected volume: %r.', mount_point)
@@ -135,7 +139,7 @@ class ObjectChooser(gtk.Window):
def __visibility_notify_event_cb(self, window, event):
logging.debug('visibility_notify_event_cb %r', self)
visible = event.state == gtk.gdk.VISIBILITY_FULLY_OBSCURED
- self._list_view.set_is_visible(visible)
+ self._object_view.set_is_visible(visible)
class TitleBox(VolumesToolbar):
__gtype_name__ = 'TitleBox'
diff --git a/src/jarabe/journal/objectview.py b/src/jarabe/journal/objectview.py
index 3160c1c..ab04a5b 100644
--- a/src/jarabe/journal/objectview.py
+++ b/src/jarabe/journal/objectview.py
@@ -77,8 +77,7 @@ class ObjectView(gtk.Bin):
view.modify_base(gtk.STATE_NORMAL,
style.COLOR_WHITE.get_gdk_color())
view.connect('detail-clicked', self.__detail_clicked_cb)
- view.connect('button-release-event',
- self.__button_release_event_cb)
+ view.connect('entry-activated', self.__entry_activated_cb)
view.show()
widget = gtk.ScrolledWindow()
@@ -291,23 +290,9 @@ class ObjectView(gtk.Bin):
def __detail_clicked_cb(self, list_view, object_id):
self.emit('detail-clicked', object_id)
- def __button_release_event_cb(self, tree_view, event):
- if not tree_view.props.hover_selection:
- return False
-
- if event.window != tree_view.get_bin_window():
- return False
-
- pos = tree_view.get_path_at_pos(event.x, event.y)
- if pos is None:
- return False
-
- path, column_, x_, y_ = pos
- uid = tree_view.get_model()[path][Source.FIELD_UID]
+ def __entry_activated_cb(self, sender, uid):
self.emit('entry-activated', uid)
- return False
-
def do_size_allocate(self, allocation):
self.allocation = allocation
self.child.size_allocate(allocation)
diff --git a/src/jarabe/journal/tableview.py b/src/jarabe/journal/tableview.py
index b9c158b..a2ce24b 100644
--- a/src/jarabe/journal/tableview.py
+++ b/src/jarabe/journal/tableview.py
@@ -31,7 +31,7 @@ class TableCell:
def __init__(self):
self.row = None
- self.tree = None
+ self.table = None
def do_fill_in(self):
pass
@@ -99,7 +99,7 @@ class TableView(SmoothTable):
canvas.set_root(sel_box)
cell = cell_class()
- cell.tree = self
+ cell.table = self
sel_box.append(cell, hippo.PACK_EXPAND)
canvas.connect('enter-notify-event',
diff --git a/src/jarabe/journal/thumbsview.py b/src/jarabe/journal/thumbsview.py
index 9f7ebbd..73d04bb 100644
--- a/src/jarabe/journal/thumbsview.py
+++ b/src/jarabe/journal/thumbsview.py
@@ -48,6 +48,8 @@ class ThumbsCell(TableCell, hippo.CanvasBox):
padding_top=style.DEFAULT_SPACING * 2,
spacing=style.DEFAULT_PADDING)
+ self.connect('button-release-event', self.__button_release_event_cb)
+
# tools column
tools_box = hippo.CanvasBox(
@@ -80,13 +82,13 @@ class ThumbsCell(TableCell, hippo.CanvasBox):
border_color=style.COLOR_BUTTON_GREY.get_int())
self.allocation_box.append(self.activity_box, hippo.PACK_FIXED)
- self.thumb = ThumbCanvas(
+ self.thumb = ThumbCanvas(self,
xalign=hippo.ALIGNMENT_START,
yalign=hippo.ALIGNMENT_START)
self.thumb.connect('detail-clicked', self.__detail_clicked_cb)
self.activity_box.append(self.thumb, hippo.PACK_FIXED)
- self.activity_icon = ActivityIcon(
+ self.activity_icon = ActivityIcon(self,
xalign=hippo.ALIGNMENT_START,
yalign=hippo.ALIGNMENT_START)
self.activity_icon.connect('detail-clicked', self.__detail_clicked_cb)
@@ -109,7 +111,7 @@ class ThumbsCell(TableCell, hippo.CanvasBox):
self.date.props.text = self.row[Source.FIELD_MODIFY_TIME] or ''
self.keep.props.keep = int(self.row[Source.FIELD_KEEP] or 0) == 1
- w, h = self.tree.thumb_size
+ w, h = self.table.thumb_size
self.activity_box.props.box_width = w
self.activity_box.props.box_height = h
@@ -125,14 +127,14 @@ class ThumbsCell(TableCell, hippo.CanvasBox):
if thumb is None:
self.thumb.set_visible(False)
self.activity_icon.set_visible(True)
- self.activity_icon.set_metadata(self.row.metadata)
+ self.activity_icon.palette = None
else:
self.activity_icon.set_visible(False)
self.thumb.set_visible(True)
self.thumb.props.scale_width = w - style.LINE_WIDTH * 2
self.thumb.props.scale_height = h - style.LINE_WIDTH * 2
self.thumb.props.image = thumb
- self.thumb.set_metadata(self.row.metadata)
+ self.thumb.palette = None
self.thumb.allocate(w, h, True)
self.activity_box.set_position(self.thumb,
style.LINE_WIDTH, style.LINE_WIDTH)
@@ -142,29 +144,31 @@ class ThumbsCell(TableCell, hippo.CanvasBox):
model.write(self.row.metadata, update_mtime=False)
def __detail_activated_cb(self, button):
- self.tree.emit('detail-clicked', self.row[Source.FIELD_UID])
+ self.table.emit('detail-clicked', self.row[Source.FIELD_UID])
def __detail_clicked_cb(self, sender, uid):
- self.tree.emit('detail-clicked', uid)
+ self.table.emit('detail-clicked', uid)
+
+ def __button_release_event_cb(self, sender, event):
+ if not self.table.props.hover_selection:
+ return False
+ uid = self.row[Source.FIELD_UID]
+ self.table.emit('entry-activated', uid)
+ return False
class ActivityCanvas:
- def __init__(self):
- self._metadata = None
+ def __init__(self, cell):
+ self._cell = cell
self.connect_after('button-release-event',
self.__button_release_event_cb)
self.palette = None
- def set_metadata(self, metadata):
- # pylint: disable-msg=W0201
- self.palette = None
- self._metadata = metadata
-
def create_palette(self):
- if self._metadata is None:
- return None
- palette = ObjectPalette(self._metadata, detail=True)
+ if self._cell.table.props.hover_selection:
+ return
+ palette = ObjectPalette(self._cell.row.metadata, detail=True)
palette.connect('detail-clicked', self.__detail_clicked_cb)
return palette
@@ -172,7 +176,7 @@ class ActivityCanvas:
self.emit('detail-clicked', uid)
def __button_release_event_cb(self, button, event):
- misc.resume(self._metadata)
+ misc.resume(self._cell.row.metadata)
return True
@@ -183,13 +187,12 @@ class ActivityIcon(ActivityCanvas, CanvasIcon):
([str])),
}
- def __init__(self, **kwargs):
+ def __init__(self, cell, **kwargs):
CanvasIcon.__init__(self, **kwargs)
- ActivityCanvas.__init__(self)
-
- def set_metadata(self, metadata):
- ActivityCanvas.set_metadata(self, metadata)
+ ActivityCanvas.__init__(self, cell)
+ def create_palette(self):
+ metadata = self._cell.row.metadata
self.props.file_name = misc.get_icon_name(metadata)
if misc.is_activity_bundle(metadata):
@@ -199,6 +202,8 @@ class ActivityIcon(ActivityCanvas, CanvasIcon):
if 'icon-color' in metadata and metadata['icon-color']:
self.props.xo_color = XoColor(self._metadata['icon-color'])
+ ActivityCanvas.create_palette(self)
+
class ThumbCanvas(ActivityCanvas, hippo.CanvasImage):
@@ -207,9 +212,9 @@ class ThumbCanvas(ActivityCanvas, hippo.CanvasImage):
([str])),
}
- def __init__(self, **kwargs):
+ def __init__(self, cell, **kwargs):
hippo.CanvasImage.__init__(self, **kwargs)
- ActivityCanvas.__init__(self)
+ ActivityCanvas.__init__(self, cell)
self._palette_invoker = CanvasInvoker()
self._palette_invoker.attach(self)
@@ -246,6 +251,9 @@ class ThumbsView(TableView):
'detail-clicked': (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE,
([object])),
+ 'entry-activated': (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ ([str])),
}
def __init__(self):