Ticket #3357: 0001-Subtoolbar-with-Clear-and-Remove-buttons-SL-3357.patch

File 0001-Subtoolbar-with-Clear-and-Remove-buttons-SL-3357.patch, 5.3 KB (added by humitos, 12 years ago)
  • new file icons/edit-clear.svg

    From 0b4f3423d224248c86874486634ad3b811086520 Mon Sep 17 00:00:00 2001
    From: Manuel Kaufmann <humitos@gmail.com>
    Date: Tue, 5 Jun 2012 19:13:18 -0300
    Subject: [PATCH Jukebox] Subtoolbar with "Clear" and "Remove" buttons SL
     #3357
    
    There is a new Toolbar that contains "Clear Playlist" and
    "Remove selected track(s) from the playlist" buttons.
    
    Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
    ---
     icons/edit-clear.svg |    7 +++++++
     jukeboxactivity.py   |   40 ++++++++++++++++++++++++++++++++++++++++
     widgets.py           |   12 ++++++++++++
     3 files changed, 59 insertions(+)
     create mode 100644 icons/edit-clear.svg
    
    diff --git a/icons/edit-clear.svg b/icons/edit-clear.svg
    new file mode 100644
    index 0000000..edbe99f
    - +  
     1<?xml version="1.0" ?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
     2        <!ENTITY stroke_color "#010101">
     3        <!ENTITY fill_color "#FFFFFF">
     4]><svg enable-background="new 0 0 55 55" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="edit-clear">
     5        <path d="M5,10.033v34.934h45V10.033H5z M37.575,35.1c0.684,0.683,0.684,1.793,0,2.476   c-0.341,0.342-0.789,0.513-1.237,0.513s-0.896-0.171-1.238-0.513l-7.601-7.602l-7.602,7.602c-0.342,0.342-0.79,0.513-1.237,0.513   s-0.895-0.171-1.237-0.513c-0.684-0.683-0.684-1.793,0-2.476l7.601-7.601l-7.601-7.602c-0.684-0.684-0.684-1.791,0-2.474   c0.683-0.684,1.791-0.684,2.474,0l7.602,7.601l7.601-7.601c0.683-0.684,1.793-0.684,2.476,0c0.684,0.683,0.684,1.791,0,2.474   l-7.602,7.602L37.575,35.1z" fill="&fill_color;"/>
     6</g></svg>
     7
  • jukeboxactivity.py

    diff --git a/jukeboxactivity.py b/jukeboxactivity.py
    index cc277b7..1766b40 100644
    a b from sugar.datastore import datastore 
    3333
    3434OLD_TOOLBAR = False
    3535try:
     36    from sugar.graphics.toolbutton import ToolButton
    3637    from sugar.graphics.toolbarbox import ToolbarBox
    3738    from sugar.graphics.toolbarbox import ToolbarButton
    3839    from sugar.activity.widgets import StopButton
    class JukeboxActivity(activity.Activity): 
    8990            toolbox.add_toolbar(_('View'), _view_toolbar)
    9091            _view_toolbar.show()
    9192
     93            _playlist_toolbar = gtk.Toolbar()
     94            erase_playlist_entry = ToolButton(icon_name='edit-delete')
     95            erase_playlist_entry.connect('clicked',
     96                                         self._erase_playlist_entry_clicked_cb)
     97            _playlist_toolbar.insert(erase_playlist_entry, -1)
     98
     99            clear_playlist = ToolButton(icon_name='edit-clear')
     100            clear_playlist.connect('clicked', self._clear_playlist_clicked_cb)
     101            _playlist_toolbar.insert(clear_playlist, -1)
     102            _playlist_toolbar.show_all()
     103
     104            toolbox.add_toolbar(_('Playlist'), _playlist_toolbar)
     105
    92106            toolbox.show()
    93107
    94108            toolbar.grab_focus()
    class JukeboxActivity(activity.Activity): 
    120134            toolbar_box.toolbar.insert(view_toolbar_button, -1)
    121135            view_toolbar_button.show()
    122136
     137            _playlist_toolbar = gtk.Toolbar()
     138            erase_playlist_entry = ToolButton(icon_name='edit-delete')
     139            erase_playlist_entry.set_tooltip(_('Remove selected track(s)' \
     140                                                   ' from the playlist'))
     141            erase_playlist_entry.connect('clicked',
     142                                         self._erase_playlist_entry_clicked_cb)
     143            _playlist_toolbar.insert(erase_playlist_entry, -1)
     144
     145            clear_playlist = ToolButton(icon_name='edit-clear')
     146            clear_playlist.set_tooltip(_('Clear Playlist'))
     147            clear_playlist.connect('clicked', self._clear_playlist_clicked_cb)
     148            _playlist_toolbar.insert(clear_playlist, -1)
     149            _playlist_toolbar.show_all()
     150
     151            playlist_toolbar_button = ToolbarButton(
     152                page=_playlist_toolbar,
     153                icon_name='view-source')
     154            toolbar_box.toolbar.insert(playlist_toolbar_button, -1)
     155
    123156            self.control = Control(toolbar_box.toolbar, self)
    124157
    125158            separator = gtk.SeparatorToolItem()
    class JukeboxActivity(activity.Activity): 
    573606
    574607        return True
    575608
     609    def _erase_playlist_entry_clicked_cb(self, widget):
     610        self.playlist_widget.delete_selected_items()
     611
     612    def _clear_playlist_clicked_cb(self, widget):
     613        self.playlist = []
     614        self.playlist_widget.clear()
     615
    576616    def __go_fullscreen_cb(self, toolbar):
    577617        self.fullscreen()
    578618
  • widgets.py

    diff --git a/widgets.py b/widgets.py
    index 67c5bc4..8befd9e 100644
    a b class PlayListWidget(gtk.ScrolledWindow): 
    8585
    8686    def set_cursor(self, index):
    8787        self.listview.set_cursor((index,))
     88
     89    def clear(self):
     90        self.treemodel.clear()
     91        self._playlist = None
     92
     93    def delete_selected_items(self):
     94        selection = self.listview.get_selection()
     95        sel_model, sel_rows = self.listview.get_selection().get_selected_rows()
     96        for row in sel_rows:
     97            self._playlist.pop(row[0])
     98            self.treemodel.remove(self.treemodel.get_iter(row))
     99        self.update(self._playlist)