Merge lp:~michael.nelson/ubuntu-webcatalog/import-icon-file into lp:ubuntu-webcatalog
- import-icon-file
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 9 |
Proposed branch: | lp:~michael.nelson/ubuntu-webcatalog/import-icon-file |
Merge into: | lp:ubuntu-webcatalog |
Diff against target: |
1131 lines (+983/-20) 10 files modified
.bzrignore (+1/-0) django_project/settings.py (+1/-1) requirements.txt (+1/-0) src/webcatalog/forms.py (+1/-0) src/webcatalog/management/commands/import_app_install_data.py (+63/-16) src/webcatalog/models.py (+3/-1) src/webcatalog/tests/factory.py (+4/-2) src/webcatalog/tests/test_commands.py (+17/-0) src/webcatalog/tests/test_data/firefox.xpm (+294/-0) src/webcatalog/tests/test_data/scribus.xpm (+598/-0) |
To merge this branch: | bzr merge lp:~michael.nelson/ubuntu-webcatalog/import-icon-file |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Anthony Lenton (community) | Approve | ||
Review via email: mp+57473@code.launchpad.net |
Commit message
Description of the change
Overview
========
This branch attempts to extract the icons included in the app-install-data package and add them to the application models as they are imported.
But, after running a full import (http://
{{{
>>> Application.
2381
>>> Application.
573
}}}
That's based on the desktop and icon files in:
I checked with mvo, and apparently this is valid:
{{{
13:45 <mvo> it sounds a bit high, but I need to double check, hold on a couple of minutes, should be straightforward
13:55 <mvo> I have (on natty) 2226 apps and 584 missing icons
}}}
Issues
======
I started trying to add better test coverage of the commands add_icon_to_app method, but got stuck when tests froze with this diff:
https:/
(actually, not only did the test freeze, but the VM I was working on needed to be restarted each time :/ )
As this is just a prototype, i'd be happy to land it with the current tests, but would prefer to find a way for the above patch to work.
Running the command to import apps with icons
=======
It'll take quite a while, but if you want to see the command running, use:
fab manage:
Preview Diff
1 | === modified file '.bzrignore' |
2 | --- .bzrignore 2011-04-12 13:16:43 +0000 |
3 | +++ .bzrignore 2011-04-13 15:01:18 +0000 |
4 | @@ -3,3 +3,4 @@ |
5 | virtualenv/ |
6 | django_project/local_settings.py |
7 | django_project/static/ |
8 | +django_project/media_root_dev/* |
9 | |
10 | === added directory 'django_project/media_root_dev' |
11 | === modified file 'django_project/settings.py' |
12 | --- django_project/settings.py 2011-04-08 12:25:25 +0000 |
13 | +++ django_project/settings.py 2011-04-13 15:01:18 +0000 |
14 | @@ -45,7 +45,7 @@ |
15 | |
16 | # Absolute filesystem path to the directory that will hold user-uploaded files. |
17 | # Example: "/home/media/media.lawrence.com/media/" |
18 | -MEDIA_ROOT = '' |
19 | +MEDIA_ROOT = './django_project/media_root_dev/' |
20 | |
21 | # URL that handles the media served from MEDIA_ROOT. Make sure to use a |
22 | # trailing slash. |
23 | |
24 | === modified file 'requirements.txt' |
25 | --- requirements.txt 2011-04-11 13:51:17 +0000 |
26 | +++ requirements.txt 2011-04-13 15:01:18 +0000 |
27 | @@ -3,3 +3,4 @@ |
28 | setuptools |
29 | south |
30 | python-debian |
31 | +PIL |
32 | |
33 | === modified file 'src/webcatalog/forms.py' |
34 | --- src/webcatalog/forms.py 2011-04-12 15:05:33 +0000 |
35 | +++ src/webcatalog/forms.py 2011-04-13 15:01:18 +0000 |
36 | @@ -45,6 +45,7 @@ |
37 | 'x-appinstall-description': 'description', |
38 | 'x-appinstall-section': 'section', |
39 | 'type': 'app_type', |
40 | + 'icon': 'icon_name', |
41 | } |
42 | |
43 | |
44 | |
45 | === modified file 'src/webcatalog/management/commands/import_app_install_data.py' |
46 | --- src/webcatalog/management/commands/import_app_install_data.py 2011-04-13 01:46:00 +0000 |
47 | +++ src/webcatalog/management/commands/import_app_install_data.py 2011-04-13 15:01:18 +0000 |
48 | @@ -22,11 +22,16 @@ |
49 | with_statement, |
50 | ) |
51 | |
52 | +import os |
53 | +import shutil |
54 | import tempfile |
55 | import urllib |
56 | from apt_inst import DebFile |
57 | +from glob import iglob |
58 | from optparse import make_option |
59 | +from StringIO import StringIO |
60 | |
61 | +from django.core.files.images import ImageFile |
62 | from django.core.management.base import BaseCommand |
63 | |
64 | from webcatalog.forms import ApplicationForm |
65 | @@ -72,26 +77,68 @@ |
66 | if self.verbosity > 0: |
67 | self.stdout.write( |
68 | "Processing application data to update database...\n") |
69 | + data_dir = tempfile.mkdtemp() |
70 | + deb_file.data.extractall(data_dir) |
71 | + matcher = data_dir + '/usr/share/app-install/desktop/*.desktop' |
72 | + icon_dir = data_dir + '/usr/share/app-install/icons/' |
73 | + for desktop_file in iglob(matcher): |
74 | + self.process_desktop_file(desktop_file, icon_dir) |
75 | |
76 | - deb_file.data.go(self.process_archive_member) |
77 | + shutil.rmtree(data_dir) |
78 | |
79 | def get_uri_for_series(self, distro_series): |
80 | # Write a temporary sources.list, update the cache and access: |
81 | # cache['app-install-data-ubuntu'].candidate.uri |
82 | pass |
83 | |
84 | - def process_archive_member(self, member, data): |
85 | - if member.name.endswith('desktop'): |
86 | - form = ApplicationForm.get_form_from_desktop_data(data) |
87 | - |
88 | - if form.is_valid(): |
89 | - app = form.save() |
90 | - app.update_departments() |
91 | - if self.verbosity > 0: |
92 | - self.stdout.write( |
93 | - u"{0} created.\n".format(app.name).encode('utf-8')) |
94 | - else: |
95 | - if self.verbosity > 0: |
96 | - self.stdout.write( |
97 | - u"Skipping {0} as input failed validation: {1}.\n".format( |
98 | - member.name, form.errors).encode('utf-8')) |
99 | + def process_desktop_file(self, desktop_file_path, icon_dir): |
100 | + with open(desktop_file_path, 'r') as desktop_file: |
101 | + data = desktop_file.read() |
102 | + form = ApplicationForm.get_form_from_desktop_data(data) |
103 | + |
104 | + if form.is_valid(): |
105 | + app = form.save() |
106 | + app.update_departments() |
107 | + self.add_icon_to_app(app, icon_dir) |
108 | + if self.verbosity > 0: |
109 | + self.stdout.write( |
110 | + u"{0} created.\n".format(app.name).encode('utf-8')) |
111 | + else: |
112 | + if self.verbosity > 0: |
113 | + self.stdout.write( |
114 | + u"Skipping {0} as input failed validation: {1}.\n".format( |
115 | + member.name, form.errors).encode('utf-8')) |
116 | + |
117 | + def add_icon_to_app(self, app, icon_dir): |
118 | + # If the desktop file specifies an icon, we check for it in the |
119 | + # default location, otherwise we use the packagename and check |
120 | + # for that. |
121 | + icon_name = app.icon_name or app.package_name |
122 | + icon_path_generic = icon_dir + "{0}".format(icon_name) |
123 | + icon_path = '' |
124 | + |
125 | + # Some desktop files specify the icon extension as part of the |
126 | + # icon name. |
127 | + supported_extensions = ('xpm', 'png', 'svg', 'tiff') |
128 | + if icon_path_generic.endswith(supported_extensions): |
129 | + if os.path.exists(icon_path_generic): |
130 | + icon_path = icon_path_generic |
131 | + else: |
132 | + # Python's glob module doesn't seem to support extra matchers |
133 | + # such as '@(xpm|png|svg)'. |
134 | + for ext in supported_extensions: |
135 | + path_with_ext = icon_path_generic + '.' + ext |
136 | + if os.path.exists(path_with_ext): |
137 | + icon_path = path_with_ext |
138 | + break |
139 | + |
140 | + if icon_path: |
141 | + with open(icon_path, "r") as icon_file: |
142 | + app.icon = ImageFile(icon_file) |
143 | + app.save() |
144 | + else: |
145 | + if self.verbosity > 0: |
146 | + self.stdout.write( |
147 | + u"No icon found for {0} at {1}.({2}).\n".format( |
148 | + app.name, icon_path_generic, |
149 | + '|'.join(supported_extensions)).encode('utf-8')) |
150 | |
151 | === modified file 'src/webcatalog/models.py' |
152 | --- src/webcatalog/models.py 2011-04-13 01:46:00 +0000 |
153 | +++ src/webcatalog/models.py 2011-04-13 15:01:18 +0000 |
154 | @@ -56,9 +56,11 @@ |
155 | section = models.CharField(max_length=32) |
156 | categories = models.CharField(max_length=255, blank=True) |
157 | departments = models.ManyToManyField('Department', blank=True) |
158 | + icon_name = models.CharField(max_length=255, blank=True) |
159 | + icon = models.ImageField(upload_to='icons/%Y/%m', max_length=200, |
160 | + null=True, blank=True) |
161 | |
162 | # Other desktop fields used by s-c |
163 | - gnome_full_name = models.CharField(max_length=255, blank=True) |
164 | # x-gnome-fullname |
165 | # X-AppInstall-Ignore |
166 | # Icon |
167 | |
168 | === modified file 'src/webcatalog/tests/factory.py' |
169 | --- src/webcatalog/tests/factory.py 2011-04-12 13:58:04 +0000 |
170 | +++ src/webcatalog/tests/factory.py 2011-04-13 15:01:18 +0000 |
171 | @@ -24,6 +24,7 @@ |
172 | import os |
173 | from itertools import count |
174 | |
175 | +from django.core.files.images import ImageFile |
176 | from django.test import TestCase |
177 | |
178 | from webcatalog.models import Application |
179 | @@ -70,7 +71,7 @@ |
180 | user.save() |
181 | |
182 | def make_application(self, package_name=None, name=None, |
183 | - comment=None, description=None): |
184 | + comment=None, description=None, icon_name='', icon=None): |
185 | if name is None: |
186 | name = self.get_unique_string(prefix='Readable Name') |
187 | if package_name is None: |
188 | @@ -82,7 +83,8 @@ |
189 | |
190 | return Application.objects.create( |
191 | package_name=package_name, name=name, comment=comment, |
192 | - description=description, popcon=999) |
193 | + description=description, popcon=999, icon=icon, |
194 | + icon_name=icon_name) |
195 | |
196 | def get_test_path(self, file_name): |
197 | return os.path.join( |
198 | |
199 | === modified file 'src/webcatalog/tests/test_commands.py' |
200 | --- src/webcatalog/tests/test_commands.py 2011-04-11 14:08:41 +0000 |
201 | +++ src/webcatalog/tests/test_commands.py 2011-04-13 15:01:18 +0000 |
202 | @@ -21,6 +21,7 @@ |
203 | absolute_import, |
204 | with_statement, |
205 | ) |
206 | +import os |
207 | import shutil |
208 | import tempfile |
209 | |
210 | @@ -80,3 +81,19 @@ |
211 | self.assertEqual( |
212 | 'Graphic Page Layout and Publication (Stable)', |
213 | scribus.comment) |
214 | + |
215 | + def test_icon_added_to_model(self): |
216 | + call_command( |
217 | + 'import_app_install_data', |
218 | + local_app_install_deb=self.factory.get_test_path( |
219 | + 'app-install-data-test_all.deb'), |
220 | + verbosity=0) |
221 | + |
222 | + self.assertEqual(2, Application.objects.count()) |
223 | + scribus, firefox = Application.objects.all() |
224 | + self.assertEqual( |
225 | + os.path.getsize(self.factory.get_test_path('firefox.xpm')), |
226 | + firefox.icon.size) |
227 | + self.assertEqual( |
228 | + os.path.getsize(self.factory.get_test_path('scribus.xpm')), |
229 | + scribus.icon.size) |
230 | |
231 | === added file 'src/webcatalog/tests/test_data/firefox.xpm' |
232 | --- src/webcatalog/tests/test_data/firefox.xpm 1970-01-01 00:00:00 +0000 |
233 | +++ src/webcatalog/tests/test_data/firefox.xpm 2011-04-13 15:01:18 +0000 |
234 | @@ -0,0 +1,294 @@ |
235 | +/* XPM */ |
236 | +static char *firefox[] = { |
237 | +/* columns rows colors chars-per-pixel */ |
238 | +"32 32 256 2 ", |
239 | +" c #1F0A03", |
240 | +". c #330F09", |
241 | +"X c #000836", |
242 | +"o c #211220", |
243 | +"O c #282036", |
244 | +"+ c #420E03", |
245 | +"@ c #541705", |
246 | +"# c #701805", |
247 | +"$ c #6D3812", |
248 | +"% c #4E2B3B", |
249 | +"& c #6C302F", |
250 | +"* c #001147", |
251 | +"= c #011C5A", |
252 | +"- c #132C5C", |
253 | +"; c #282C59", |
254 | +": c #253255", |
255 | +"> c #001E67", |
256 | +", c #062767", |
257 | +"< c #0C306F", |
258 | +"1 c #032B76", |
259 | +"2 c #0D3677", |
260 | +"3 c #133C76", |
261 | +"4 c #123D7D", |
262 | +"5 c #213970", |
263 | +"6 c #523746", |
264 | +"7 c #354A5E", |
265 | +"8 c #1D4C7D", |
266 | +"9 c #3A547A", |
267 | +"0 c #374F68", |
268 | +"q c #4B4848", |
269 | +"w c #565867", |
270 | +"e c #5F6A68", |
271 | +"r c #6C7175", |
272 | +"t c #880B03", |
273 | +"y c #940E03", |
274 | +"u c #990E03", |
275 | +"i c #951204", |
276 | +"p c #9B1204", |
277 | +"a c #9B1D06", |
278 | +"s c #A31504", |
279 | +"d c #A31D05", |
280 | +"f c #AA1905", |
281 | +"g c #B71F05", |
282 | +"h c #842D11", |
283 | +"j c #AB2A08", |
284 | +"k c #AB2406", |
285 | +"l c #B42A05", |
286 | +"z c #B62708", |
287 | +"x c #AE330D", |
288 | +"c c #BB3B0D", |
289 | +"v c #B8350B", |
290 | +"b c #C23C0B", |
291 | +"n c #C53806", |
292 | +"m c #CF3507", |
293 | +"M c #9F4D10", |
294 | +"N c #B9490D", |
295 | +"B c #BD5F0E", |
296 | +"V c #A3481D", |
297 | +"C c #B45715", |
298 | +"Z c #B05118", |
299 | +"A c #BF7E1D", |
300 | +"S c #B96610", |
301 | +"D c #8E5139", |
302 | +"F c #A9572A", |
303 | +"G c #B95B29", |
304 | +"H c #AD4C23", |
305 | +"J c #946D2F", |
306 | +"K c #B8652C", |
307 | +"L c #AF7A3F", |
308 | +"P c #BE6E33", |
309 | +"I c #C3420D", |
310 | +"U c #CD450C", |
311 | +"Y c #CD4B0E", |
312 | +"T c #C9460A", |
313 | +"R c #D34B06", |
314 | +"E c #D1460B", |
315 | +"W c #D44A0C", |
316 | +"Q c #D84906", |
317 | +"! c #D3520D", |
318 | +"~ c #DA540C", |
319 | +"^ c #D55B0E", |
320 | +"/ c #DC5D0B", |
321 | +"( c #D85907", |
322 | +") c #CB4C11", |
323 | +"_ c #C34B13", |
324 | +"` c #CE5412", |
325 | +"' c #CA5618", |
326 | +"] c #D25512", |
327 | +"[ c #D35C14", |
328 | +"{ c #DC5C11", |
329 | +"} c #E15709", |
330 | +"| c #E25210", |
331 | +" . c #D5660C", |
332 | +".. c #DB630D", |
333 | +"X. c #DE6C0B", |
334 | +"o. c #D86807", |
335 | +"O. c #DF7206", |
336 | +"+. c #CA6212", |
337 | +"@. c #D66315", |
338 | +"#. c #DA6413", |
339 | +"$. c #DC6A16", |
340 | +"%. c #DB6C1A", |
341 | +"&. c #D8641C", |
342 | +"*. c #DF701A", |
343 | +"=. c #E16B0C", |
344 | +"-. c #E2740C", |
345 | +";. c #E27E0A", |
346 | +":. c #E87B0C", |
347 | +">. c #E56914", |
348 | +",. c #E57917", |
349 | +"<. c #C46A27", |
350 | +"1. c #CE7031", |
351 | +"2. c #EA7727", |
352 | +"3. c #895941", |
353 | +"4. c #AA5846", |
354 | +"5. c #8B6A56", |
355 | +"6. c #947659", |
356 | +"7. c #AE6D45", |
357 | +"8. c #9A7F69", |
358 | +"9. c #CC7F4D", |
359 | +"0. c #B68B30", |
360 | +"q. c #DF9013", |
361 | +"w. c #E6850A", |
362 | +"e. c #E78B0D", |
363 | +"r. c #ED950E", |
364 | +"t. c #E48312", |
365 | +"y. c #EC8417", |
366 | +"u. c #F0801D", |
367 | +"i. c #EB9613", |
368 | +"p. c #EC9919", |
369 | +"a. c #F09F19", |
370 | +"s. c #DFA01E", |
371 | +"d. c #EFA016", |
372 | +"f. c #F2A718", |
373 | +"g. c #F8B81E", |
374 | +"h. c #D38A22", |
375 | +"j. c #DC8531", |
376 | +"k. c #E98C38", |
377 | +"l. c #F89337", |
378 | +"z. c #DBA529", |
379 | +"x. c #EDA624", |
380 | +"c. c #F4B724", |
381 | +"v. c #EAB937", |
382 | +"b. c #F3BA3A", |
383 | +"n. c #F9C42B", |
384 | +"m. c #F7C539", |
385 | +"M. c #FAD43E", |
386 | +"N. c #AE8556", |
387 | +"B. c #939373", |
388 | +"V. c #A99979", |
389 | +"C. c #AE9473", |
390 | +"Z. c #A5A27C", |
391 | +"A. c #D5934F", |
392 | +"S. c #E58C48", |
393 | +"D. c #DCAC4F", |
394 | +"F. c #E0B147", |
395 | +"G. c #E3AE41", |
396 | +"H. c #ECA76E", |
397 | +"J. c #E6C64C", |
398 | +"K. c #F5CA47", |
399 | +"L. c #F8D749", |
400 | +"P. c #F3C953", |
401 | +"I. c #F9D958", |
402 | +"U. c #E4C65A", |
403 | +"Y. c #FDE056", |
404 | +"T. c #DAC964", |
405 | +"R. c #EDD765", |
406 | +"E. c #F6E66F", |
407 | +"W. c #063988", |
408 | +"Q. c #144585", |
409 | +"!. c #164A8B", |
410 | +"~. c #1C4C8C", |
411 | +"^. c #1A5596", |
412 | +"/. c #1B589B", |
413 | +"(. c #265893", |
414 | +"). c #305988", |
415 | +"_. c #2D608F", |
416 | +"`. c #356D9A", |
417 | +"'. c #3A749A", |
418 | +"]. c #3A638B", |
419 | +"[. c #2C5CAB", |
420 | +"{. c #1D64A9", |
421 | +"}. c #1967B2", |
422 | +"|. c #1E72BB", |
423 | +" X c #2364A4", |
424 | +".X c #2268AB", |
425 | +"XX c #2978BB", |
426 | +"oX c #3178B9", |
427 | +"OX c #3670A6", |
428 | +"+X c #496686", |
429 | +"@X c #46789D", |
430 | +"#X c #507290", |
431 | +"$X c #5C798D", |
432 | +"%X c #4665A1", |
433 | +"&X c #6276A3", |
434 | +"*X c #267DC2", |
435 | +"=X c #758887", |
436 | +"-X c #7A8E99", |
437 | +";X c #538DB4", |
438 | +":X c #6692AD", |
439 | +">X c #2A82C6", |
440 | +",X c #2A85CB", |
441 | +"<X c #3386C6", |
442 | +"1X c #358ACA", |
443 | +"2X c #3494D5", |
444 | +"3X c #3D9AD7", |
445 | +"4X c #4893C8", |
446 | +"5X c #498BCC", |
447 | +"6X c #56A1C7", |
448 | +"7X c #45A1D9", |
449 | +"8X c #55AAD8", |
450 | +"9X c #74B5D7", |
451 | +"0X c #45A9E4", |
452 | +"qX c #51AFE2", |
453 | +"wX c #55B7E8", |
454 | +"eX c #7DC2D6", |
455 | +"rX c #58C5F0", |
456 | +"tX c #63C3E8", |
457 | +"yX c #75CCEB", |
458 | +"uX c #7CD6EE", |
459 | +"iX c #68D2F1", |
460 | +"pX c #75D9F3", |
461 | +"aX c #63CEF1", |
462 | +"sX c #959D81", |
463 | +"dX c #B29880", |
464 | +"fX c #B3B59B", |
465 | +"gX c #A8B29F", |
466 | +"hX c #92A6A6", |
467 | +"jX c #A7B7AB", |
468 | +"kX c #C49F83", |
469 | +"lX c #D4A280", |
470 | +"zX c #D8D48A", |
471 | +"xX c #85C7DD", |
472 | +"cX c #8DD0DE", |
473 | +"vX c #91D3DC", |
474 | +"bX c #88DBF0", |
475 | +"nX c #95DEEE", |
476 | +"mX c #A6DDED", |
477 | +"MX c #87E4F5", |
478 | +"NX c #95ECFB", |
479 | +"BX c #99E7F8", |
480 | +"VX c #A8EDFA", |
481 | +"CX c #B6EAF5", |
482 | +"ZX c #A9F1FD", |
483 | +"AX c #B7F1FB", |
484 | +"SX c #BDF1FB", |
485 | +"DX c #ACE1ED", |
486 | +"FX c #C3DCD9", |
487 | +"GX c #C4F4FC", |
488 | +"HX c #CBF5FC", |
489 | +"JX c #CBF9FF", |
490 | +"KX c #D7FAFF", |
491 | +"LX c #DBFBFF", |
492 | +"PX c #D1F7FD", |
493 | +"IX c #C2EAF4", |
494 | +"UX c None", |
495 | +/* pixels */ |
496 | +"UXUXUXUXUXUXUXUXUXUXUXUXUX8 _.`.@X@X'.UXUXUXUXUXUXUXUXUXUXUXUXUX", |
497 | +"UXUXUXUXUXUXUXUXUXUX3 '.6XxXmXCXCXIXDXxX;X8 UXUXUXUXUXUXUXUXUXUX", |
498 | +"UXUXUXUXUXUXUXUX, ~.5XbXAXJXLXLXLXLXKXHXBX:X$XUXUXUXUXUXUXUXUXUX", |
499 | +"UXUXUXUXUXUXUX, !.5XyXBXSXHXHXPXPXHXHXGXZXeXhXgXr UXUXUXUXUXUXUX", |
500 | +"UXUXUXl.k.UX= 3 [.5X9XjXkXFXGXHXHXGXSXAXVXuX4X-XzXB.4.UXUXUXUXUX", |
501 | +"UXUXUX2.>.6 < w %X&X4.' dXCXSXSXGXSXCXBXbXtX8X:XsXR.V.F UXUXUXUX", |
502 | +"UXUXUX| | @.<.9.9.G n 7.cXVXAXAXAXAXBXyXtX8X4X:XfXT.R.N.P UXUXUX", |
503 | +"UXUXUX~ >.>.{ / { Y ] B.pXNXNXZXVXBXMXuXtX8XwXoXsXE.I.J.N.F.UXUX", |
504 | +"UXUX>.>.| ~ ~ ] ] ] [ H dXgXjXvXNXNXMXMXpXiXrX3X].T.E.K.D.J.UXUX", |
505 | +"UXUX,./ ~ Q Y W ] ] #.n W | [ -XpXpXpXiXaXrX7X<X{.B.I.P.P.L.UXUX", |
506 | +"UXUX>.} Q E E E ) ] { 1.H.H.C.;XtXrXrXqX0X0XXX.X{.e K.L.I.M.UXUX", |
507 | +"UXu.} Q E E E Y W [ &.S.lX-X%X7XwXwXqX1XXX1X>X^.(.w v.J.Y.m.h.UX", |
508 | +"UXu.{ E E E Y Y ] &.2.k.r *X3X0X0X3X<XoX X X^.!.+XV.D.b.I.b.+.UX", |
509 | +"UX2.| W E E ] ' ' &.<.A.=X,X2X2X2X,X X^.^.!.!.Q.9 R.K.b.L.v.F UX", |
510 | +"UX,.~ E ) ] ] c a a 6 ).].*X*X*X>X>X.X^.!.Q.8 8 0 J.M.n.M.z.D UX", |
511 | +"UX| W E W ] ` d d j w }.}.|.|.*X|.|.|.{.Q.W.2 2 7 J.J.n.n.0.0.UX", |
512 | +"UX| b U Y [ _ l l n P +X{.}.}.OX#X@X.X/.2 2 2 < q J.m.c.c.s.s.UX", |
513 | +"UXm m m Y ` ` n T R $.1.5.e 5.P j.D.V.(.8 < 1 : 0.c.n.g.f.i.w.UX", |
514 | +"UXm n v Y ] [ W Q } T ' >.*.*.$.#.K 6.(.2 , = 7 z.x.g.d.i.;.UXUX", |
515 | +"UXUXz z c ) [ [ ( } ` j c _ I N & 5 W.W.< = * J d.f.f.e.w.o.UXUX", |
516 | +"UXUXz f z c ` [ ..>...) h & % ; 2 W.1 1 > > : h.d.r.r.w.o.G UXUX", |
517 | +"UXUXg s p k _ ` [ @.$.*.F 6 ; 1 > * X X O q F x.i.w.w.-.V F UXUX", |
518 | +"UXUXUXf u u x ) ` [ @.%.*.%.K 6 O o o $ B O.e.p.w.w.=.C 3.A.UXUX", |
519 | +"UXUXUXUXs y i v _ ' [ @.@.$. .#.+.+.$.-.=.-.:.-.t.t.o.0.x.UXUXUX", |
520 | +"UXUXUXUXf u t i v I ) ` [ @.@.#..... .^ .X.X.t.p.w.r.f.UXUXUXUX", |
521 | +"UXUXUXUXUXu y t i l I Y ` ` [ ^ ^ ^ ! ! ^ $.O.t.t.w.t.UXUXUXUXUX", |
522 | +"UXUXUXUXUXUXt i i y k v Y ! [ / ....=.=.=.=.*. . .B UXUXUXUXUXUX", |
523 | +"UXUXUXUXUXUXUX@ i s p s j b T ! ~ ( / ( .. .C V V UXUXUXUXUXUXUX", |
524 | +"UXUXUXUXUXUXUXUX. # s f k l n n T R R ( o.o.C M UXUXUXUXUXUXUXUX", |
525 | +"UXUXUXUXUXUXUXUXUXUX+ h x x v T n N N N M $ . UXUXUXUXUXUXUXUXUX", |
526 | +"UXUXUXUXUXUXUXUXUXUXUXUXUX+ . @ # . UXUXUXUXUXUXUXUXUXUXUXUXUX", |
527 | +"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX" |
528 | +}; |
529 | |
530 | === added file 'src/webcatalog/tests/test_data/scribus.xpm' |
531 | --- src/webcatalog/tests/test_data/scribus.xpm 1970-01-01 00:00:00 +0000 |
532 | +++ src/webcatalog/tests/test_data/scribus.xpm 2011-04-13 15:01:18 +0000 |
533 | @@ -0,0 +1,598 @@ |
534 | +/* XPM */ |
535 | +static char * scribus_cvs_xpm[] = { |
536 | +"32 32 563 2", |
537 | +" c None", |
538 | +". c #3A89BB", |
539 | +"+ c #5297C4", |
540 | +"@ c #6CA7CD", |
541 | +"# c #76ADD1", |
542 | +"$ c #78AFD1", |
543 | +"% c #6DA7CE", |
544 | +"& c #5398C4", |
545 | +"* c #3989BB", |
546 | +"= c #3685B9", |
547 | +"- c #569AC5", |
548 | +"; c #88B8D7", |
549 | +"> c #B2D1E5", |
550 | +", c #C4DCEB", |
551 | +"' c #C5DCEC", |
552 | +") c #C5DDEC", |
553 | +"! c #C6DDEC", |
554 | +"~ c #87B7D6", |
555 | +"{ c #5E98BD", |
556 | +"] c #727D85", |
557 | +"^ c #3988BB", |
558 | +"/ c #79AED1", |
559 | +"( c #A7CBE1", |
560 | +"_ c #B6D4E6", |
561 | +": c #B7D4E6", |
562 | +"< c #B0C7D6", |
563 | +"[ c #B3B2B3", |
564 | +"} c #969798", |
565 | +"| c #2379AF", |
566 | +"1 c #2F83B7", |
567 | +"2 c #86B7D6", |
568 | +"3 c #A2C8E0", |
569 | +"4 c #A3C9E0", |
570 | +"5 c #A4C9E0", |
571 | +"6 c #A5C9E0", |
572 | +"7 c #A5C9E1", |
573 | +"8 c #B5C4CE", |
574 | +"9 c #D0CFCF", |
575 | +"0 c #A7A7A6", |
576 | +"a c #343738", |
577 | +"b c #2679AE", |
578 | +"c c #2A7FB5", |
579 | +"d c #63A3CA", |
580 | +"e c #92BFDA", |
581 | +"f c #93BFDA", |
582 | +"g c #92BEDA", |
583 | +"h c #92BED9", |
584 | +"i c #B2BABF", |
585 | +"j c #C7C6C5", |
586 | +"k c #A1A1A0", |
587 | +"l c #666767", |
588 | +"m c #2D3032", |
589 | +"n c #257BB2", |
590 | +"o c #3A8ABC", |
591 | +"p c #75ADD0", |
592 | +"q c #84B6D5", |
593 | +"r c #83B6D5", |
594 | +"s c #83B5D4", |
595 | +"t c #83B5D5", |
596 | +"u c #86B4D0", |
597 | +"v c #AEB1B3", |
598 | +"w c #B4B4B3", |
599 | +"x c #8A8A8A", |
600 | +"y c #787878", |
601 | +"z c #424242", |
602 | +"A c #495155", |
603 | +"B c #2174A8", |
604 | +"C c #257DB4", |
605 | +"D c #418EBF", |
606 | +"E c #6CA8CD", |
607 | +"F c #71ABCE", |
608 | +"G c #72ABCF", |
609 | +"H c #71AACE", |
610 | +"I c #71ABCF", |
611 | +"J c #7FA5BE", |
612 | +"K c #ACADAE", |
613 | +"L c #909090", |
614 | +"M c #737373", |
615 | +"N c #707070", |
616 | +"O c #585859", |
617 | +"P c #406982", |
618 | +"Q c #267AAF", |
619 | +"R c #206EA0", |
620 | +"S c #2275A9", |
621 | +"T c #2479AF", |
622 | +"U c #3C89BB", |
623 | +"V c #5D9EC7", |
624 | +"W c #62A1C9", |
625 | +"X c #62A2C9", |
626 | +"Y c #63A2C9", |
627 | +"Z c #7998AD", |
628 | +"` c #A6A6A6", |
629 | +" . c #717070", |
630 | +".. c #636363", |
631 | +"+. c #656565", |
632 | +"@. c #56636B", |
633 | +"#. c #3078A6", |
634 | +"$. c #287CB3", |
635 | +"%. c #2374A8", |
636 | +"&. c #327AA9", |
637 | +"*. c #2778AC", |
638 | +"=. c #2477AC", |
639 | +"-. c #307FB2", |
640 | +";. c #4A91BE", |
641 | +">. c #5297C2", |
642 | +",. c #5197C3", |
643 | +"'. c #5096C3", |
644 | +"). c #5298C4", |
645 | +"!. c #5197C4", |
646 | +"~. c #5397C2", |
647 | +"{. c #798F9F", |
648 | +"]. c #8E8C8A", |
649 | +"^. c #5A5958", |
650 | +"/. c #545454", |
651 | +"(. c #595B5C", |
652 | +"_. c #426E8A", |
653 | +":. c #287DB3", |
654 | +"<. c #297FB6", |
655 | +"[. c #2375AA", |
656 | +"}. c #407BA3", |
657 | +"|. c #528FB8", |
658 | +"1. c #4288B5", |
659 | +"2. c #2B7AAC", |
660 | +"3. c #2678AB", |
661 | +"4. c #3380B1", |
662 | +"5. c #3F8AB9", |
663 | +"6. c #3F8BBB", |
664 | +"7. c #408BBC", |
665 | +"8. c #3F8BBC", |
666 | +"9. c #3E8BBC", |
667 | +"0. c #408CBD", |
668 | +"a. c #418DBE", |
669 | +"b. c #418DBD", |
670 | +"c. c #3E8CBD", |
671 | +"d. c #408DBE", |
672 | +"e. c #458CB9", |
673 | +"f. c #8A9C9E", |
674 | +"g. c #B8AD8C", |
675 | +"h. c #6F634B", |
676 | +"i. c #4E4C49", |
677 | +"j. c #485A66", |
678 | +"k. c #2D78A8", |
679 | +"l. c #297FB7", |
680 | +"m. c #226A98", |
681 | +"n. c #427FA7", |
682 | +"o. c #5994BC", |
683 | +"p. c #5995BD", |
684 | +"q. c #498CB8", |
685 | +"r. c #2D7BAD", |
686 | +"s. c #2476AA", |
687 | +"t. c #2D7CAE", |
688 | +"u. c #2F7FB2", |
689 | +"v. c #2F81B5", |
690 | +"w. c #3082B6", |
691 | +"x. c #2E81B6", |
692 | +"y. c #3083B7", |
693 | +"z. c #2F82B7", |
694 | +"A. c #3183B8", |
695 | +"B. c #3284B8", |
696 | +"C. c #3184B8", |
697 | +"D. c #3584B5", |
698 | +"E. c #AFC1B2", |
699 | +"F. c #D3BD84", |
700 | +"G. c #907138", |
701 | +"H. c #595040", |
702 | +"I. c #366B8C", |
703 | +"J. c #287EB6", |
704 | +"K. c #297EB5", |
705 | +"L. c #236B9A", |
706 | +"M. c #1D557A", |
707 | +"N. c #1B5376", |
708 | +"O. c #4783AB", |
709 | +"P. c #5C96BC", |
710 | +"Q. c #5C96BE", |
711 | +"R. c #5E98BF", |
712 | +"S. c #5593BC", |
713 | +"T. c #3780B0", |
714 | +"U. c #2777AA", |
715 | +"V. c #2677AA", |
716 | +"W. c #2779AD", |
717 | +"X. c #287CB2", |
718 | +"Y. c #297DB3", |
719 | +"Z. c #287DB4", |
720 | +"`. c #297EB4", |
721 | +" + c #2A7EB5", |
722 | +".+ c #4B8CAF", |
723 | +"++ c #C6C6A4", |
724 | +"@+ c #AE8F4F", |
725 | +"#+ c #8A7341", |
726 | +"$+ c #446E7F", |
727 | +"%+ c #2B7FB5", |
728 | +"&+ c #2571A1", |
729 | +"*+ c #195072", |
730 | +"=+ c #1B4F70", |
731 | +"-+ c #1A5073", |
732 | +";+ c #4A85AC", |
733 | +">+ c #5B95BC", |
734 | +",+ c #5C95BD", |
735 | +"'+ c #5E97BD", |
736 | +")+ c #5F97BE", |
737 | +"!+ c #5B95BD", |
738 | +"~+ c #4086B3", |
739 | +"{+ c #2978AA", |
740 | +"]+ c #2476A8", |
741 | +"^+ c #2577AB", |
742 | +"/+ c #277AAF", |
743 | +"(+ c #277CB1", |
744 | +"_+ c #297DB2", |
745 | +":+ c #2A7EB3", |
746 | +"<+ c #297EB3", |
747 | +"[+ c #2B7EB3", |
748 | +"}+ c #709BA6", |
749 | +"|+ c #CEBC86", |
750 | +"1+ c #9A7737", |
751 | +"2+ c #727964", |
752 | +"3+ c #317DAB", |
753 | +"4+ c #2A80B6", |
754 | +"5+ c #287DB2", |
755 | +"6+ c #1D567B", |
756 | +"7+ c #194C6C", |
757 | +"8+ c #1B4D6D", |
758 | +"9+ c #194D6F", |
759 | +"0+ c #4D86AD", |
760 | +"a+ c #6097BD", |
761 | +"b+ c #6198BE", |
762 | +"c+ c #6399BE", |
763 | +"d+ c #639ABF", |
764 | +"e+ c #6299BF", |
765 | +"f+ c #629ABF", |
766 | +"g+ c #4C8DB6", |
767 | +"h+ c #2C7AAB", |
768 | +"i+ c #2878A9", |
769 | +"j+ c #2B7AAB", |
770 | +"k+ c #2F7FB0", |
771 | +"l+ c #3181B3", |
772 | +"m+ c #3382B4", |
773 | +"n+ c #3383B5", |
774 | +"o+ c #3382B5", |
775 | +"p+ c #3985B3", |
776 | +"q+ c #ADBAA6", |
777 | +"r+ c #C2A86C", |
778 | +"s+ c #9E824C", |
779 | +"t+ c #5B726E", |
780 | +"u+ c #2D81B5", |
781 | +"v+ c #2D81B6", |
782 | +"w+ c #27709D", |
783 | +"x+ c #1D4F6E", |
784 | +"y+ c #1D4D6C", |
785 | +"z+ c #1F4F6E", |
786 | +"A+ c #1C4F70", |
787 | +"B+ c #4E86AB", |
788 | +"C+ c #6499BD", |
789 | +"D+ c #659ABE", |
790 | +"E+ c #679BBF", |
791 | +"F+ c #679CBF", |
792 | +"G+ c #689CC0", |
793 | +"H+ c #689DC0", |
794 | +"I+ c #5D96BC", |
795 | +"J+ c #3E84B0", |
796 | +"K+ c #3A82AF", |
797 | +"L+ c #3D85B1", |
798 | +"M+ c #4189B5", |
799 | +"N+ c #438BB8", |
800 | +"O+ c #438BB9", |
801 | +"P+ c #428BB9", |
802 | +"Q+ c #6298B5", |
803 | +"R+ c #E2D3A4", |
804 | +"S+ c #AD9054", |
805 | +"T+ c #A28F63", |
806 | +"U+ c #52767F", |
807 | +"V+ c #3080B2", |
808 | +"W+ c #2A6991", |
809 | +"X+ c #224F6B", |
810 | +"Y+ c #214D68", |
811 | +"Z+ c #23506C", |
812 | +"`+ c #265471", |
813 | +" @ c #205677", |
814 | +".@ c #4982A7", |
815 | +"+@ c #679ABD", |
816 | +"@@ c #699CBF", |
817 | +"#@ c #6A9DC0", |
818 | +"$@ c #6B9EC0", |
819 | +"%@ c #6B9EC1", |
820 | +"&@ c #6D9FC1", |
821 | +"*@ c #70A1C2", |
822 | +"=@ c #74A3C4", |
823 | +"-@ c #6B9FC1", |
824 | +";@ c #5291B8", |
825 | +">@ c #4D8DB5", |
826 | +",@ c #5090B8", |
827 | +"'@ c #5292BB", |
828 | +")@ c #5394BE", |
829 | +"!@ c #5193BE", |
830 | +"~@ c #94ADAD", |
831 | +"{@ c #CDBA8B", |
832 | +"]@ c #AF9562", |
833 | +"^@ c #A2926C", |
834 | +"/@ c #56757B", |
835 | +"(@ c #2E6587", |
836 | +"_@ c #264D65", |
837 | +":@ c #264E65", |
838 | +"<@ c #285571", |
839 | +"[@ c #2F6689", |
840 | +"}@ c #306C92", |
841 | +"|@ c #276993", |
842 | +"1@ c #2A6C96", |
843 | +"2@ c #4485AE", |
844 | +"3@ c #528EB5", |
845 | +"4@ c #6197BB", |
846 | +"5@ c #699DBF", |
847 | +"6@ c #6D9FC0", |
848 | +"7@ c #75A3C3", |
849 | +"8@ c #79A6C5", |
850 | +"9@ c #7FA9C8", |
851 | +"0@ c #83ADCA", |
852 | +"a@ c #7CA9C7", |
853 | +"b@ c #6299BD", |
854 | +"c@ c #5E98BC", |
855 | +"d@ c #6099BE", |
856 | +"e@ c #609CC1", |
857 | +"f@ c #619CC1", |
858 | +"g@ c #C1C6B4", |
859 | +"h@ c #C3AD7D", |
860 | +"i@ c #B39D70", |
861 | +"j@ c #9B8457", |
862 | +"k@ c #5C655D", |
863 | +"l@ c #315265", |
864 | +"m@ c #2C4F64", |
865 | +"n@ c #305D78", |
866 | +"o@ c #397BA5", |
867 | +"p@ c #3E87B5", |
868 | +"q@ c #3A85B4", |
869 | +"r@ c #276F9C", |
870 | +"s@ c #20618B", |
871 | +"t@ c #377BA6", |
872 | +"u@ c #3C80AB", |
873 | +"v@ c #3D81AC", |
874 | +"w@ c #4586AF", |
875 | +"x@ c #558FB5", |
876 | +"y@ c #6E9FC0", |
877 | +"z@ c #7CA8C6", |
878 | +"A@ c #87AFCB", |
879 | +"B@ c #8DB3CD", |
880 | +"C@ c #90B5CF", |
881 | +"D@ c #8BB3CE", |
882 | +"E@ c #74A5C4", |
883 | +"F@ c #6FA2C3", |
884 | +"G@ c #6EA2C3", |
885 | +"H@ c #7DAAC4", |
886 | +"I@ c #D4D0B5", |
887 | +"J@ c #B39969", |
888 | +"K@ c #9E885E", |
889 | +"L@ c #767260", |
890 | +"M@ c #4E6169", |
891 | +"N@ c #3D596A", |
892 | +"O@ c #396078", |
893 | +"P@ c #4082AC", |
894 | +"Q@ c #448DBA", |
895 | +"R@ c #458DBB", |
896 | +"S@ c #3C85B4", |
897 | +"T@ c #266791", |
898 | +"U@ c #265D81", |
899 | +"V@ c #3678A2", |
900 | +"W@ c #4384AC", |
901 | +"X@ c #4484AD", |
902 | +"Y@ c #4887AF", |
903 | +"Z@ c #5590B5", |
904 | +"`@ c #6399BB", |
905 | +" # c #75A4C3", |
906 | +".# c #8CB3CD", |
907 | +"+# c #97BAD2", |
908 | +"@# c #9CBDD4", |
909 | +"## c #92B8D0", |
910 | +"$# c #7DABC8", |
911 | +"%# c #7BAAC7", |
912 | +"&# c #95B6C6", |
913 | +"*# c #CEC4A6", |
914 | +"=# c #A5926D", |
915 | +"-# c #787E77", |
916 | +";# c #556874", |
917 | +"># c #4C6271", |
918 | +",# c #455E6E", |
919 | +"'# c #467593", |
920 | +")# c #488EBA", |
921 | +"!# c #488FBB", |
922 | +"~# c #488EBB", |
923 | +"{# c #387FAC", |
924 | +"]# c #2D6181", |
925 | +"^# c #2C6E98", |
926 | +"/# c #4686AF", |
927 | +"(# c #4C8BB3", |
928 | +"_# c #4D8BB2", |
929 | +":# c #508CB2", |
930 | +"<# c #5B93B7", |
931 | +"[# c #6198BA", |
932 | +"}# c #699DBE", |
933 | +"|# c #73A3C2", |
934 | +"1# c #85AFCA", |
935 | +"2# c #9DBED4", |
936 | +"3# c #A6C4D8", |
937 | +"4# c #8AB3CD", |
938 | +"5# c #A9BFC4", |
939 | +"6# c #BDB295", |
940 | +"7# c #848E8C", |
941 | +"8# c #657884", |
942 | +"9# c #5F7B8D", |
943 | +"0# c #5E87A0", |
944 | +"a# c #5B8DAD", |
945 | +"b# c #5491B7", |
946 | +"c# c #5293BC", |
947 | +"d# c #5193BD", |
948 | +"e# c #4B8EB8", |
949 | +"f# c #30729C", |
950 | +"g# c #2C6385", |
951 | +"h# c #3E7FA7", |
952 | +"i# c #508EB5", |
953 | +"j# c #528FB6", |
954 | +"k# c #5792B8", |
955 | +"l# c #6098BA", |
956 | +"m# c #669BBD", |
957 | +"n# c #6D9FBF", |
958 | +"o# c #74A4C2", |
959 | +"p# c #7BA8C5", |
960 | +"q# c #86B0CA", |
961 | +"r# c #9ABCD2", |
962 | +"s# c #AAC7D9", |
963 | +"t# c #9BBDD3", |
964 | +"u# c #AFBCBC", |
965 | +"v# c #9FA49C", |
966 | +"w# c #748A99", |
967 | +"x# c #7296AE", |
968 | +"y# c #70A3C3", |
969 | +"z# c #69A1C4", |
970 | +"A# c #629CC1", |
971 | +"B# c #5B98BF", |
972 | +"C# c #5695BD", |
973 | +"D# c #5494BC", |
974 | +"E# c #4183AD", |
975 | +"F# c #326686", |
976 | +"G# c #316E95", |
977 | +"H# c #508DB3", |
978 | +"I# c #5893B8", |
979 | +"J# c #5C95B9", |
980 | +"K# c #659CBE", |
981 | +"L# c #6CA0C1", |
982 | +"M# c #72A3C3", |
983 | +"N# c #79A8C5", |
984 | +"O# c #7FAAC6", |
985 | +"P# c #87B0CA", |
986 | +"Q# c #8DB4CC", |
987 | +"R# c #96BAD1", |
988 | +"S# c #9FBFD4", |
989 | +"T# c #A6B5B8", |
990 | +"U# c #8BA0AC", |
991 | +"V# c #7FA7C0", |
992 | +"W# c #7AAAC8", |
993 | +"X# c #75A7C7", |
994 | +"Y# c #6FA3C5", |
995 | +"Z# c #69A0C3", |
996 | +"`# c #609BC0", |
997 | +" $ c #5C98BF", |
998 | +".$ c #5392B9", |
999 | +"+$ c #367298", |
1000 | +"@$ c #2E5A76", |
1001 | +"#$ c #39779F", |
1002 | +"$$ c #5E97BA", |
1003 | +"%$ c #669CBD", |
1004 | +"&$ c #6CA0C0", |
1005 | +"*$ c #72A4C3", |
1006 | +"=$ c #79A8C6", |
1007 | +"-$ c #7EACC8", |
1008 | +";$ c #83AEC9", |
1009 | +">$ c #87B0C9", |
1010 | +",$ c #8AB1CA", |
1011 | +"'$ c #8BB2CA", |
1012 | +")$ c #8BB0C6", |
1013 | +"!$ c #84AEC8", |
1014 | +"~$ c #7EABC7", |
1015 | +"{$ c #7AA9C7", |
1016 | +"]$ c #6EA3C4", |
1017 | +"^$ c #689FC2", |
1018 | +"/$ c #619BBF", |
1019 | +"($ c #5794BA", |
1020 | +"_$ c #3C7AA2", |
1021 | +":$ c #335B76", |
1022 | +"<$ c #2F6181", |
1023 | +"[$ c #407EA5", |
1024 | +"}$ c #5C95B8", |
1025 | +"|$ c #689DBF", |
1026 | +"1$ c #6EA1C1", |
1027 | +"2$ c #73A4C3", |
1028 | +"3$ c #82AEC9", |
1029 | +"4$ c #85B0CA", |
1030 | +"5$ c #86B0C9", |
1031 | +"6$ c #85AEC9", |
1032 | +"7$ c #82ADC8", |
1033 | +"8$ c #7DAAC6", |
1034 | +"9$ c #7AA8C6", |
1035 | +"0$ c #70A4C5", |
1036 | +"a$ c #6AA0C3", |
1037 | +"b$ c #5E97BB", |
1038 | +"c$ c #417FA6", |
1039 | +"d$ c #346280", |
1040 | +"e$ c #316180", |
1041 | +"f$ c #407CA2", |
1042 | +"g$ c #6298BA", |
1043 | +"h$ c #7CAAC8", |
1044 | +"i$ c #80ADC9", |
1045 | +"j$ c #83AFCA", |
1046 | +"k$ c #84AFCA", |
1047 | +"l$ c #7FABC6", |
1048 | +"m$ c #7CA9C5", |
1049 | +"n$ c #79A7C5", |
1050 | +"o$ c #76A7C6", |
1051 | +"p$ c #70A3C4", |
1052 | +"q$ c #649ABD", |
1053 | +"r$ c #417CA2", |
1054 | +"s$ c #35627F", |
1055 | +"t$ c #325A74", |
1056 | +"u$ c #3B7498", |
1057 | +"v$ c #568EB1", |
1058 | +"w$ c #6EA0BF", |
1059 | +"x$ c #78A7C5", |
1060 | +"y$ c #7CAAC7", |
1061 | +"z$ c #7EACC9", |
1062 | +"A$ c #81AECA", |
1063 | +"B$ c #81ADC9", |
1064 | +"C$ c #80ACC7", |
1065 | +"D$ c #7EAAC6", |
1066 | +"E$ c #7BA8C4", |
1067 | +"F$ c #76A5C2", |
1068 | +"G$ c #6EA1C0", |
1069 | +"H$ c #578FB3", |
1070 | +"I$ c #3D7598", |
1071 | +"J$ c #365B73", |
1072 | +"K$ c #3D5B6D", |
1073 | +"L$ c #366683", |
1074 | +"M$ c #3E799F", |
1075 | +"N$ c #5D93B5", |
1076 | +"O$ c #71A1C0", |
1077 | +"P$ c #7DAAC7", |
1078 | +"Q$ c #7EABC8", |
1079 | +"R$ c #78A6C2", |
1080 | +"S$ c #6F9EBC", |
1081 | +"T$ c #5B90B1", |
1082 | +"U$ c #3F799E", |
1083 | +"V$ c #396683", |
1084 | +"W$ c #415B6C", |
1085 | +"X$ c #475A68", |
1086 | +"Y$ c #345F7C", |
1087 | +"Z$ c #32698C", |
1088 | +"`$ c #40779B", |
1089 | +" % c #4B81A3", |
1090 | +".% c #5086A7", |
1091 | +"+% c #3F7799", |
1092 | +"@% c #32688A", |
1093 | +"#% c #365F79", |
1094 | +"$% c #495B66", |
1095 | +"%% c #455965", |
1096 | +"&% c #3C596B", |
1097 | +"*% c #39596E", |
1098 | +"=% c #3D596B", |
1099 | +"-% c #465964", |
1100 | +" ", |
1101 | +" ", |
1102 | +" . + @ # $ % & * ", |
1103 | +" = - ; > , ' ) ! ! , > ~ { ] ", |
1104 | +" ^ / ( _ : _ : _ _ : : : : < [ } ", |
1105 | +" | 1 2 3 4 5 6 7 7 7 7 7 5 4 4 8 9 0 a ", |
1106 | +" b c d e f g e f f f f f f f g h i j k l m ", |
1107 | +" n o p q r r r r s q q s s t s u v w x y z A ", |
1108 | +" B C D E F G H H F F I F H H G H J K L M N O P Q ", |
1109 | +" R S T U V W W W X W X W W X W Y W Z ` ...+.@.#.$.%. ", |
1110 | +" &.*.=.-.;.>.,.'.,.).).!.,.).).).~.{.].^./.(._.:.<.[. ", |
1111 | +" }.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.a.e.f.g.h.i.j.k.l.:.m. ", |
1112 | +" n.o.p.q.r.s.t.u.v.w.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N. ", |
1113 | +" O.P.Q.R.S.T.U.V.W.X.$.Y.Z.`.c K. +.+++@+#+$+%+l.&+*+=+-+ ", |
1114 | +" ;+>+,+'+)+!+~+{+]+^+/+(+X._+:+<+[+}+|+1+2+3+4+5+6+7+8+9+ ", |
1115 | +" 0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+ ", |
1116 | +" B+C+D+E+F+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @ ", |
1117 | +" .@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@ ", |
1118 | +" 1@2@3@4@5@6@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@ ", |
1119 | +" s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@ ", |
1120 | +" U@V@W@X@2@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]# ", |
1121 | +" ^#/#(#_#:#<#[#}#|#1#2#3#2#4#5#6#7#8#9#0#a#b#c#d#e#f# ", |
1122 | +" g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#A#B#C#D#E#F# ", |
1123 | +" G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$ ", |
1124 | +" @$#$Z@$$%$&$*$=$-$;$>$,$'$)$!$~${$X#]$^$/$($_$:$ ", |
1125 | +" <$[$}$|$1$2$=$$#3$4$q#5$6$7$8$9$X#0$a$b$c$d$ ", |
1126 | +" e$f$g$1$E@=$h$i$j$k$;$7$l$m$n$o$p$q$r$s$ ", |
1127 | +" t$u$v$w$x$y$z$i$A$B$C$D$E$F$G$H$I$J$ ", |
1128 | +" K$L$M$N$O$n$P$Q$Q$8$R$S$T$U$V$W$ ", |
1129 | +" X$Y$Z$`$ %.%.% %+%@%#%$% ", |
1130 | +" %%&%*%*%=%-% ", |
1131 | +" "}; |
Hi Michael,
Great code as usual :)
- The two new tests fail for me, apparently due to arbitrary ordering in the DB when you get all() applications. Not assuming that firefox will be the first app retrieved and scribus the second one fixes it here.
- As for the pastebinned test, it seems to burn cpu calling the mocked os.path.exists, as django. core.files. storage also calls out to os.path.exists to get an available filename within the call to app.save(), and then iterates until it finds a filename that *doesn't* exist. It's fixed here by patching 'webcatalog. management. commands. import_ app_install_ data.os' in the test instead, and then setting mock_os. path.exists. return_ value = True so that storage can still use the real version. The test then fails for a different reason, but it might be what you were looking for?
Anyway, I'll probably land this with the two small test fixes, just to see the pretty icons :P