diff options
author | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-07-07 09:44:01 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-07-07 09:44:01 (GMT) |
commit | 0f33570021ca8a2191d3bc4c0e6a6235fae20ca5 (patch) | |
tree | 7122293265ddbf352be14616de1f7f4f3ca50b93 /src | |
parent | f5c01859cadf14f5fa737adb79449b21e79243b8 (diff) |
Fix object chooser
Diffstat (limited to 'src')
-rw-r--r-- | src/jarabe/journal/listview.py | 24 | ||||
-rw-r--r-- | src/jarabe/journal/objectchooser.py | 59 |
2 files changed, 44 insertions, 39 deletions
diff --git a/src/jarabe/journal/listview.py b/src/jarabe/journal/listview.py index 76cd30f..3c40779 100644 --- a/src/jarabe/journal/listview.py +++ b/src/jarabe/journal/listview.py @@ -132,7 +132,6 @@ class BaseListView(gtk.Bin): self.tree_view.append_column(column) self.cell_icon = CellRendererActivityIcon(self.tree_view) - self.cell_icon.connect('clicked', self.__icon_clicked_cb) column = gtk.TreeViewColumn('') column.props.sizing = gtk.TREE_VIEW_COLUMN_FIXED @@ -269,11 +268,6 @@ class BaseListView(gtk.Bin): metadata['keep'] = '1' model.write(metadata, update_mtime=False) - def __icon_clicked_cb(self, cell, path): - row = self._model[path] - metadata = model.get(row[ListModel.COLUMN_UID]) - misc.resume(metadata) - def update_with_query(self, query_dict): logging.debug('ListView.update_with_query') self._query = query_dict @@ -452,6 +446,8 @@ class ListView(BaseListView): BaseListView.__init__(self) self.cell_title.props.editable = True + + self.cell_icon.connect('clicked', self.__icon_clicked_cb) self.cell_icon.connect('detail-clicked', self.__detail_clicked_cb) cell_detail = CellRendererDetail(self.tree_view) @@ -470,6 +466,11 @@ class ListView(BaseListView): def __detail_clicked_cb(self, cell, uid): self.emit('detail-clicked', uid) + def __icon_clicked_cb(self, cell, path): + row = self.tree_view.get_model()[path] + metadata = model.get(row[ListModel.COLUMN_UID]) + misc.resume(metadata) + class CellRendererFavorite(CellRendererIcon): __gtype_name__ = 'JournalCellRendererFavorite' @@ -510,6 +511,8 @@ class CellRendererActivityIcon(CellRendererIcon): } def __init__(self, tree_view): + self._show_palette = True + CellRendererIcon.__init__(self, tree_view) self.props.width = style.GRID_CELL_SIZE @@ -520,6 +523,9 @@ class CellRendererActivityIcon(CellRendererIcon): self.tree_view = tree_view def create_palette(self): + if not self._show_palette: + return None + tree_model = self.tree_view.get_model() metadata = tree_model.get_metadata(self.props.palette_invoker.path) @@ -531,6 +537,12 @@ class CellRendererActivityIcon(CellRendererIcon): def __detail_clicked_cb(self, palette, uid): self.emit('detail-clicked', uid) + def set_show_palette(self, show_palette): + self._show_palette = show_palette + + show_palette = gobject.property(type=bool, default=True, + setter=set_show_palette) + class CellRendererBuddy(CellRendererIcon): __gtype_name__ = 'JournalCellRendererBuddy' diff --git a/src/jarabe/journal/objectchooser.py b/src/jarabe/journal/objectchooser.py index b70cf72..0e6de27 100644 --- a/src/jarabe/journal/objectchooser.py +++ b/src/jarabe/journal/objectchooser.py @@ -25,8 +25,8 @@ import wnck from sugar.graphics import style from sugar.graphics.toolbutton import ToolButton -from jarabe.journal.listview import ListView -from jarabe.journal.collapsedentry import BaseCollapsedEntry +from jarabe.journal.listview import BaseListView +from jarabe.journal.listmodel import ListModel from jarabe.journal.journaltoolbox import SearchToolbar from jarabe.journal.volumestoolbar import VolumesToolbar @@ -107,8 +107,8 @@ class ObjectChooser(gtk.Window): if window.get_xid() == parent.xid: self.destroy() - def __entry_activated_cb(self, list_view, entry): - self._selected_object_id = entry.metadata['uid'] + def __entry_activated_cb(self, list_view, uid): + self._selected_object_id = uid self.emit('response', gtk.RESPONSE_ACCEPT) def __delete_event_cb(self, chooser, event): @@ -163,44 +163,23 @@ class TitleBox(VolumesToolbar): self.insert(tool_item, -1) tool_item.show() -class ChooserCollapsedEntry(BaseCollapsedEntry): - __gtype_name__ = 'ChooserCollapsedEntry' +class ChooserListView(BaseListView): + __gtype_name__ = 'ChooserListView' __gsignals__ = { 'entry-activated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([])) + ([str])), } def __init__(self): - BaseCollapsedEntry.__init__(self) - - self.connect_after('button-release-event', - self.__button_release_event_cb) - self.connect('motion-notify-event', self.__motion_notify_event_cb) + BaseListView.__init__(self) - def __button_release_event_cb(self, entry, event): - self.emit('entry-activated') - return True + self.cell_icon.props.show_palette = False + self.tree_view.props.hover_selection = True - def __motion_notify_event_cb(self, entry, event): - if event.detail == hippo.MOTION_DETAIL_ENTER: - self.props.background_color = style.COLOR_PANEL_GREY.get_int() - elif event.detail == hippo.MOTION_DETAIL_LEAVE: - self.props.background_color = style.COLOR_WHITE.get_int() - return False - -class ChooserListView(ListView): - __gtype_name__ = 'ChooserListView' - - __gsignals__ = { - 'entry-activated': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ([object])) - } - - def __init__(self): - ListView.__init__(self) + self.tree_view.connect('button-release-event', + self.__button_release_event_cb) def create_entry(self): entry = ChooserCollapsedEntry() @@ -210,3 +189,17 @@ class ChooserListView(ListView): def __entry_activated_cb(self, entry): self.emit('entry-activated', entry) + def __button_release_event_cb(self, tree_view, event): + 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][ListModel.COLUMN_UID] + self.emit('entry-activated', uid) + + return False + |