Merge lp:~davidc3/unity-scope-colourlovers/enhance-previews into lp:unity-scope-colourlovers

Proposed by David Callé
Status: Merged
Approved by: Michal Hruby
Approved revision: 31
Merged at revision: 28
Proposed branch: lp:~davidc3/unity-scope-colourlovers/enhance-previews
Merge into: lp:unity-scope-colourlovers
Diff against target: 139 lines (+45/-23)
3 files modified
data/colourlovers.scope.in (+1/-1)
src/unity_colourlovers_daemon.py (+44/-21)
tests/test_colourlovers.py (+0/-1)
To merge this branch: bzr merge lp:~davidc3/unity-scope-colourlovers/enhance-previews
Reviewer Review Type Date Requested Status
Michal Hruby (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+161173@code.launchpad.net

Commit message

Enhance previews, make search faster by only looking for patterns

Description of the change

Add more metadata to previews:
http://ubuntuone.com/2jTSUKoHkjg5e88iSyDfYZ

Only search for patterns (palettes and colours are useless without Gimp and Inkscape integration, which needs to be redone)

To post a comment you must log in.
31. By David Callé

Don't use variants in results

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Michal Hruby (mhr3) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'data/colourlovers.scope.in'
--- data/colourlovers.scope.in 2013-04-26 14:37:19 +0000
+++ data/colourlovers.scope.in 2013-04-26 15:46:23 +0000
@@ -4,7 +4,7 @@
4Icon=/usr/share/icons/unity-icon-theme/places/svg/service-colourlovers.svg4Icon=/usr/share/icons/unity-icon-theme/places/svg/service-colourlovers.svg
5_Keywords=colourlovers;color;colors;patterns;pattern;palette;palettes;5_Keywords=colourlovers;color;colors;patterns;pattern;palette;palettes;
6RequiredMetadata=6RequiredMetadata=
7OptionalMetadata=7OptionalMetadata=description[s];comment_nb[s];date_created[s];rating[s];
8Loader=/usr/share/unity-scopes/colourlovers/unity_colourlovers_daemon.py8Loader=/usr/share/unity-scopes/colourlovers/unity_colourlovers_daemon.py
9RemoteContent=true9RemoteContent=true
10Type=graphics10Type=graphics
1111
=== modified file 'src/unity_colourlovers_daemon.py'
--- src/unity_colourlovers_daemon.py 2013-03-25 06:53:01 +0000
+++ src/unity_colourlovers_daemon.py 2013-04-26 15:46:23 +0000
@@ -21,6 +21,7 @@
21import json21import json
22import gettext22import gettext
23import os23import os
24import datetime
2425
25APP_NAME = 'unity-scope-colourlovers'26APP_NAME = 'unity-scope-colourlovers'
26LOCAL_PATH = '/usr/share/locale/'27LOCAL_PATH = '/usr/share/locale/'
@@ -49,7 +50,19 @@
4950
50FILTERS = []51FILTERS = []
5152
52EXTRA_METADATA = []53m1 = {'id' :'description',
54 'type' :'s',
55 'field':Unity.SchemaFieldType.OPTIONAL}
56m2 = {'id' :'comment_nb',
57 'type' :'s',
58 'field':Unity.SchemaFieldType.OPTIONAL}
59m3 = {'id' :'rating',
60 'type' :'s',
61 'field':Unity.SchemaFieldType.OPTIONAL}
62m4 = {'id' :'date_created',
63 'type' :'s',
64 'field':Unity.SchemaFieldType.OPTIONAL}
65EXTRA_METADATA = [m1, m2, m3, m4]
5366
54def search(search, filters):67def search(search, filters):
55 '''68 '''
@@ -66,10 +79,10 @@
66 extras metadata fields (variant)79 extras metadata fields (variant)
67 '''80 '''
68 results = []81 results = []
69 if not search:82 if not search or len(search) < 2:
70 return results83 return results
71 search = urllib.parse.quote(search)84 search = urllib.parse.quote(search)
72 for cat in ['patterns', 'palettes', 'colors']:85 for cat in ['patterns']:
73 uri = '%sapi/%s?format=json&keywords=%s' % (SEARCH_URI, cat,search)86 uri = '%sapi/%s?format=json&keywords=%s' % (SEARCH_URI, cat,search)
74 try:87 try:
75 req = urllib.request.Request(uri, headers={'User-Agent' : "Magic Browser"})88 req = urllib.request.Request(uri, headers={'User-Agent' : "Magic Browser"})
@@ -84,7 +97,11 @@
84 results.append({'uri':d['url'],97 results.append({'uri':d['url'],
85 'icon':d['imageUrl'],98 'icon':d['imageUrl'],
86 'title':d['title'],99 'title':d['title'],
87 'comment':d['userName']})100 'comment':d['userName'],
101 'description':d['description'],
102 'rating':str(d['numHearts']),
103 'date_created':str(d['dateCreated']),
104 'comment_nb':str(d['numComments'])})
88 return results105 return results
89106
90107
@@ -121,34 +138,40 @@
121 i['comment'] = ''138 i['comment'] = ''
122 if not 'dnd_uri' in i or not i['dnd_uri'] or i['dnd_uri'] == '':139 if not 'dnd_uri' in i or not i['dnd_uri'] or i['dnd_uri'] == '':
123 i['dnd_uri'] = i['uri']140 i['dnd_uri'] = i['uri']
124 i['metadata'] = {}141 i['provider_credits'] = GLib.Variant('s', PROVIDER_CREDITS)
125 if EXTRA_METADATA:142 result_set.add_result(**i)
126 for e in i:
127 for m in EXTRA_METADATA:
128 if m['id'] == e:
129 i['metadata'][e] = i[e]
130 i['metadata']['provider_credits'] = GLib.Variant('s', PROVIDER_CREDITS)
131 result = Unity.ScopeResult.create(str(i['uri']), str(i['icon']),
132 i['category'], i['result_type'],
133 str(i['mimetype']), str(i['title']),
134 str(i['comment']), str(i['dnd_uri']),
135 i['metadata'])
136 result_set.add_result(result)
137 except Exception as error:143 except Exception as error:
138 print (error)144 print (error)
139145
140class Preview (Unity.ResultPreviewer):146class Preview (Unity.ResultPreviewer):
141147
142 def do_run(self):148 def do_run(self):
143 preview = Unity.GenericPreview.new(self.result.title, '', None)149 if self.result.metadata and 'description' in self.result.metadata and self.result.metadata['description'].get_string() != '':
150 description = self.result.metadata['description'].get_string()
151 else:
152 description = ''
153 preview = Unity.GenericPreview.new(self.result.title, description.strip(), None)
144 preview.props.subtitle = _("By ") + self.result.comment154 preview.props.subtitle = _("By ") + self.result.comment
145 preview.props.image_source_uri = self.result.icon_hint155 preview.props.image_source_uri = self.result.icon_hint
156 if self.result.metadata and 'date_created' in self.result.metadata and self.result.metadata['date_created'].get_string() != '':
157 # Format date
158 date = datetime.datetime.strptime(self.result.metadata['date_created'].get_string(), '%Y-%m-%d %H:%M:%S')
159 translated_date = date.strftime('%x')
160 preview.add_info(Unity.InfoHint.new("date_created", _("Created"), None, translated_date))
161 if self.result.metadata and 'comment_nb' in self.result.metadata and self.result.metadata['comment_nb'].get_string() != '':
162 preview.add_info(Unity.InfoHint.new("comment_nb", _("Comments"), None, self.result.metadata['comment_nb'].get_string()))
163 if self.result.metadata and 'rating' in self.result.metadata and self.result.metadata['rating'].get_string() != '':
164 # Create hearts rating
165 fullhearts = int(float(self.result.metadata['rating'].get_string())) * "\u2665"
166 emptyhearts = (5 - int(float(self.result.metadata['rating'].get_string()))) * "\u2661"
167 if self.result.metadata['rating'].get_string() != '0':
168 preview.add_info(Unity.InfoHint.new("rating", _("Rating"), None, fullhearts+emptyhearts))
169 if "/patterns/" in self.result.icon_hint:
170 wallpaper_action = Unity.PreviewAction.new("wallpaper", _("Set as wallpaper"), None)
171 preview.add_action(wallpaper_action)
146 icon = Gio.FileIcon.new (Gio.file_new_for_path(PROVIDER_ICON))172 icon = Gio.FileIcon.new (Gio.file_new_for_path(PROVIDER_ICON))
147 view_action = Unity.PreviewAction.new("view", _("View"), icon)173 view_action = Unity.PreviewAction.new("view", _("View"), icon)
148 preview.add_action(view_action)174 preview.add_action(view_action)
149 if "/patterns/" in self.result.icon_hint:
150 wallpaper_action = Unity.PreviewAction.new("wallpaper", _("Set as wallpaper"), None)
151 preview.add_action(wallpaper_action)
152 return preview175 return preview
153176
154177
155178
=== modified file 'tests/test_colourlovers.py'
--- tests/test_colourlovers.py 2013-03-25 06:53:01 +0000
+++ tests/test_colourlovers.py 2013-04-26 15:46:23 +0000
@@ -5,7 +5,6 @@
5import shutil5import shutil
6import tempfile6import tempfile
7from unittest import TestCase7from unittest import TestCase
8
9from gi.repository import Unity8from gi.repository import Unity
109
1110

Subscribers

People subscribed via source and target branches

to all changes: