diff options
author | Agustin Zubiaga <aguz@sugarlabs.org> | 2012-06-09 03:13:32 (GMT) |
---|---|---|
committer | Agustin Zubiaga <aguz@sugarlabs.org> | 2012-06-09 03:13:32 (GMT) |
commit | 04db2560940c0659447f84833af8e78aa7388b0e (patch) | |
tree | d77287d71eb7f360331a2902bb2cf991398d4b49 | |
parent | ea63dfebe3a23aac77a006d71062e19b80158384 (diff) |
Using a thread to download the list
-rw-r--r-- | activity.py | 5 | ||||
-rw-r--r-- | activity/activity.info | 2 | ||||
-rw-r--r-- | activity/notes.svg | 32 | ||||
-rw-r--r-- | canvas.py | 26 | ||||
-rw-r--r-- | utils.py | 4 |
5 files changed, 27 insertions, 42 deletions
diff --git a/activity.py b/activity.py index 08666fd..e60a51e 100644 --- a/activity.py +++ b/activity.py @@ -100,8 +100,11 @@ class InstallActivity(activity.Activity): search_entry.add_clear_button() search_item = gtk.ToolItem() search_item.add(search_entry) + search_item.set_sensitive(False) toolbarbox.toolbar.insert(search_item, -1) + canvas.gtk_list.setup(search_item) + separator = gtk.SeparatorToolItem() separator.set_draw(False) separator.set_expand(True) @@ -111,9 +114,7 @@ class InstallActivity(activity.Activity): toolbarbox.toolbar.insert(stopbtn, -1) self.set_toolbar_box(toolbarbox) - self.show_all() - canvas.set_page(0) diff --git a/activity/activity.info b/activity/activity.info index 1e52566..0a20ee6 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -3,6 +3,6 @@ name = Install activity_version = 1 bundle_id = org.sugarlabs.Install exec = sugar-activity activity.InstallActivity -s -icon = notes +icon = activity-install show_launcher = yes license = GPLv3+ diff --git a/activity/notes.svg b/activity/notes.svg deleted file mode 100644 index b0bd905..0000000 --- a/activity/notes.svg +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" ?><!-- Created with Inkscape (http://www.inkscape.org/) --><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [ - <!ENTITY stroke_color "#ffffff"> - <!ENTITY fill_color "#000000"> -]><svg height="55" id="svg2" inkscape:version="0.48.2 r9819" sodipodi:docname="notes.svg" version="1.1" width="55" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs id="defs4"> - <linearGradient id="linearGradient3756" inkscape:collect="always"> - <stop id="stop3758" offset="0" style="stop-color:#0000fd;stop-opacity:1;"/> - <stop id="stop3760" offset="1" style="stop-color:#0000fd;stop-opacity:0;"/> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient3762" inkscape:collect="always" x1="431.02184" x2="459.51553" xlink:href="#linearGradient3756" y1="1010.5219" y2="1010.5219"/> - </defs> - <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="-9.4403697" inkscape:cy="42.848126" inkscape:document-units="px" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="746" inkscape:window-maximized="1" inkscape:window-width="1280" inkscape:window-x="0" inkscape:window-y="26" inkscape:zoom="5.3044218" pagecolor="#ffffff" showgrid="false" showguides="true"/> - <metadata id="metadata7"> - <rdf:RDF> - <cc:Work rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> - <dc:title/> - </cc:Work> - </rdf:RDF> - </metadata> - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Capa 1" transform="translate(0,-997.36218)"> - <g id="clipping-text" style="display:block;stroke:&fill_color;;stroke-opacity:1" transform="matrix(0.90599684,0,0,0.99133469,4.1080154,999.0103)"> - <g id="g4127" style="stroke:&fill_color;;stroke-opacity:1;display:inline;fill:&stroke_color;;fill-opacity:1"> - <g id="g4129" style="stroke:&fill_color;;stroke-opacity:1;fill:&stroke_color;;fill-opacity:1"> - <rect height="40.802326" id="rect3376" style="fill:&stroke_color;;fill-opacity:1;stroke:&fill_color;;stroke-width:3.04907632000000017;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" transform="matrix(0.78332962,-0.62160655,0.67983097,0.73336884,0,0)" width="30.865267" x="-13.573125" y="17.59075"/> - </g> - </g> - </g> - <text id="text2992" sodipodi:linespacing="125%" style="font-size:11.91758347000000029px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:&fill_color;;fill-opacity:1;stroke:&stroke_color;;font-family:VAGRounded BT;-inkscape-font-specification:VAGRounded BT;font-stretch:normal;font-variant:normal;stroke-opacity:1;stroke-width:0.29999999999999999;stroke-miterlimit:4;stroke-dasharray:none" transform="matrix(0.99555921,0.35386732,-0.41030503,0.8586194,0,0)" x="430.87506" xml:space="preserve" y="1014.7582"><tspan id="tspan2994" sodipodi:role="line" style="fill-opacity:1;fill:&fill_color;;stroke:&stroke_color;;stroke-opacity:1" x="430.87506" y="1014.7582">Store</tspan></text> - </g> -</svg>
\ No newline at end of file @@ -19,6 +19,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import gtk +import pango import threading import utils @@ -75,7 +76,6 @@ class List(gtk.VBox): def __init__(self, parent): gtk.VBox.__init__(self) - self._list = utils.get_store_list() self.download_list = DownloadList() self._parent = parent @@ -83,10 +83,26 @@ class List(gtk.VBox): self.thread = None self.words = '' - self.can_search = True + self.can_search = False self.show_all() + def setup(self, search_entry): + label = gtk.Label(_("Loading...")) + label.modify_font(pango.FontDescription("25")) + self.pack_start(label, True, True, 0) + threading.Thread(target=utils.update_list).start() + + self._list = utils.get_store_list() + if self._list: + search_entry.set_sensitive(True) + self.can_search = True + self.clear() + else: + label.set_text(_("Failed to download the list")) + + _logger.debug(str(self._list)) + def _add_activity(self, widget): self.pack_start(widget, False, False, 7) separator = gtk.HSeparator() @@ -95,7 +111,7 @@ class List(gtk.VBox): widget.show() separator.show() - def _clear(self): + def clear(self): for child in self.get_children(): self.remove(child) child = None @@ -105,7 +121,7 @@ class List(gtk.VBox): if self.can_search: self.can_search = False self.w = entry.get_text().lower() - self._clear() + self.clear() self.thread = threading.Thread(target=self._search) self.thread.start() else: @@ -122,8 +138,6 @@ class List(gtk.VBox): activity_widget = ActivityWidget(_id, self) self._add_activity(activity_widget) self.can_search = True - - class ActivityWidget(gtk.HBox): @@ -26,13 +26,15 @@ import logging from sugar.activity import activity from sugar.bundle.activitybundle import ActivityBundle +from gettext import gettext as _ + # Paths LIST_DOWNLOAD = "http://www.fing.edu.uy/~aaguiar/files/store.lst" LIST_PATH = os.path.join(activity.get_activity_root(), 'data', 'store.lst') TMP_DIR = os.path.join(activity.get_activity_root(), "tmp") # Logging -_logger = logging.getLogger('activitiesstore-activity') +_logger = logging.getLogger('install-activity') _logger.setLevel(logging.DEBUG) logging.basicConfig() |