Merge lp:~barry/computer-janitor/545306-dialog into lp:computer-janitor

Proposed by Barry Warsaw
Status: Merged
Approved by: Barry Warsaw
Approved revision: 236
Merged at revision: 235
Proposed branch: lp:~barry/computer-janitor/545306-dialog
Merge into: lp:computer-janitor
Diff against target: 869 lines (+263/-105)
15 files modified
computerjanitorapp/__init__.py (+1/-1)
computerjanitorapp/gtk/dialogs.py (+30/-2)
computerjanitorapp/gtk/ui.py (+10/-3)
computerjanitord/collector.py (+9/-1)
computerjanitord/errors.py (+16/-6)
computerjanitord/tests/test_collector.py (+43/-5)
debian/changelog (+8/-1)
po/POTFILES.in (+1/-1)
po/computerjanitor.pot (+24/-14)
po/es.po (+24/-14)
po/fi.po (+24/-14)
po/fr.po (+24/-14)
po/ja.po (+24/-14)
po/pl.po (+24/-14)
setup.py (+1/-1)
To merge this branch: bzr merge lp:~barry/computer-janitor/545306-dialog
Reviewer Review Type Date Requested Status
Barry Warsaw Approve
Review via email: mp+25691@code.launchpad.net

Description of the change

Might as well walk the walk and get this code reviewed before I merge it into trunk.

This fixes bug 545306 so that a dialog is displayed in the gtk version when another package manager such as Synaptic is running. This instead of crashing or (just) printing a traceback to the log file.

To post a comment you must log in.
Revision history for this message
Barry Warsaw (barry) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'computerjanitorapp/__init__.py'
2--- computerjanitorapp/__init__.py 2010-02-09 21:24:21 +0000
3+++ computerjanitorapp/__init__.py 2010-05-20 13:55:46 +0000
4@@ -23,7 +23,7 @@
5 ]
6
7
8-__version__ = '2.0'
9+__version__ = '2.0.1'
10
11
12 # Set up gettext.
13
14=== renamed file 'computerjanitorapp/gtk/areyousure.py' => 'computerjanitorapp/gtk/dialogs.py'
15--- computerjanitorapp/gtk/areyousure.py 2010-04-15 16:09:46 +0000
16+++ computerjanitorapp/gtk/dialogs.py 2010-05-20 13:55:46 +0000
17@@ -19,6 +19,7 @@
18 __metaclass__ = type
19 __all__ = [
20 'AreYouSure',
21+ 'CleanupProblem',
22 ]
23
24
25@@ -31,12 +32,16 @@
26 NL = '\n'
27
28
29-class AreYouSure:
30- """Confirmation of destructive actions."""
31+class DialogBase:
32+ """Base class for dialogs."""
33
34 def __init__(self, ui):
35 self._ui = ui
36
37+
38+class AreYouSure(DialogBase):
39+ """Confirmation of destructive actions."""
40+
41 def verify(self):
42 """Confirm package removal."""
43 # Start by getting all the active, non-ignored cruft. These are the
44@@ -77,3 +82,26 @@
45 response = dialog.run()
46 dialog.hide()
47 return response == gtk.RESPONSE_YES
48+
49+
50+class CleanupProblem(DialogBase):
51+ """Some problem occurred during cleanup.
52+
53+ This is almost definitely caused by another package manager running at the
54+ same time.
55+ """
56+
57+ def run(self):
58+ """Show the dialog and wait for confirmation."""
59+ message = _('System clean up could not complete. '
60+ 'Be sure no other package manager such as Synaptic or '
61+ 'Update Manager is running.')
62+ dialog = gtk.MessageDialog(
63+ parent=self._ui.widgets['window'],
64+ type=gtk.MESSAGE_ERROR,
65+ buttons=gtk.BUTTONS_OK,
66+ message_format=message)
67+ dialog.set_title(_('System clean up failure'))
68+ dialog.show_all()
69+ dialog.run()
70+ dialog.hide()
71
72=== modified file 'computerjanitorapp/gtk/ui.py'
73--- computerjanitorapp/gtk/ui.py 2010-04-15 16:09:46 +0000
74+++ computerjanitorapp/gtk/ui.py 2010-05-20 13:55:46 +0000
75@@ -24,13 +24,14 @@
76
77 import os
78 import gtk
79+import sys
80 import dbus
81 import glib
82 import pango
83 import gobject
84
85 from computerjanitorapp import __version__, setup_gettext
86-from computerjanitorapp.gtk.areyousure import AreYouSure
87+from computerjanitorapp.gtk.dialogs import AreYouSure, CleanupProblem
88 from computerjanitorapp.gtk.store import (
89 ListStoreColumns, Store, optimize, unused)
90 from computerjanitorapp.utilities import format_size
91@@ -505,9 +506,15 @@
92 # Make various ui elements insensitive.
93 self.desensitize()
94 cleanable = [cruft for cruft, ispkg in self.get_cleanable_cruft()]
95- # XXX 2010-03-08 barry: Do better than this.
96 def error(exception):
97- print exception
98+ # XXX 2010-05-19 barry: This will (almost?) always be caused by
99+ # some other package manager already running, so if we get that
100+ # exception, display a (hopefully) useful dialog. I'm not sure
101+ # it's very helpful to display the low-level apt exception in a
102+ # dialog. `exception` will always be a DBusException; we won't
103+ # get the more useful PackageCleanupError.
104+ print >> sys.stderr, exception
105+ CleanupProblem(self).run()
106 self.working = False
107 def reply():
108 pass
109
110=== modified file 'computerjanitord/collector.py'
111--- computerjanitord/collector.py 2010-03-16 14:43:33 +0000
112+++ computerjanitord/collector.py 2010-05-20 13:55:46 +0000
113@@ -27,7 +27,7 @@
114 import logging
115
116 from computerjanitor import PluginManager
117-from computerjanitord.errors import DuplicateCruftError
118+from computerjanitord.errors import DuplicateCruftError, PackageCleanupError
119 from computerjanitord.whitelist import Whitelist
120
121
122@@ -147,6 +147,14 @@
123 else:
124 try:
125 plugin.post_cleanup()
126+ except SystemError as error:
127+ # apt will raise a SystemError if some other package
128+ # manager is already running. Turn this into a dbus
129+ # derived exception so the client will be properly
130+ # informed.
131+ log.exception(
132+ 'plugin.post_cleanup(): {0}'.format(plugin))
133+ raise PackageCleanupError(str(error))
134 except:
135 log.exception(
136 'plugin.post_cleanup(): {0}'.format(plugin))
137
138=== modified file 'computerjanitord/errors.py'
139--- computerjanitord/errors.py 2010-03-30 19:20:11 +0000
140+++ computerjanitord/errors.py 2010-05-20 13:55:46 +0000
141@@ -32,11 +32,15 @@
142 import computerjanitor
143
144
145-class PermissionDeniedError(dbus.DBusException):
146- """Permission denied by policy"""
147-
148-
149-class CruftError(dbus.DBusException):
150+class DBusServiceBaseException(computerjanitor.Exception, dbus.DBusException):
151+ """Base class exception for the Computer Janitor DBus service."""
152+
153+
154+class PermissionDeniedError(DBusServiceBaseException):
155+ """Permission denied by policy."""
156+
157+
158+class CruftError(DBusServiceBaseException):
159 """Cruft exceptions passed back to dbus client."""
160
161 _errmsg = None
162@@ -60,7 +64,7 @@
163 _errmsg = 'No such cruft: {0.cruft_name}'
164
165
166-class LandmarkPackageError(computerjanitor.Exception):
167+class LandmarkPackageError(DBusServiceBaseException):
168 """Base class for problems with the landmark packages."""
169
170 _errmsg = None
171@@ -83,3 +87,9 @@
172 """A landmark package is not downloadable."""
173
174 _errmsg = 'Landmark package {0.package} is not downloadable'
175+
176+
177+class PackageCleanupError(DBusServiceBaseException):
178+ """Could not complete plugin post-cleanup."""
179+
180+ _errmsg = 'Post-cleanup exception'
181
182=== modified file 'computerjanitord/tests/test_collector.py'
183--- computerjanitord/tests/test_collector.py 2010-02-06 01:58:07 +0000
184+++ computerjanitord/tests/test_collector.py 2010-05-20 13:55:46 +0000
185@@ -24,15 +24,23 @@
186
187 import os
188 import shutil
189+import apt_pkg
190 import tempfile
191 import unittest
192+import pkg_resources
193+import multiprocessing
194
195 from computerjanitor.plugin import Plugin
196 from computerjanitord.collector import Collector
197-from computerjanitord.errors import DuplicateCruftError
198+from computerjanitord.errors import DuplicateCruftError, PackageCleanupError
199 from computerjanitord.tests.test_application import ApplicationTestSetupMixin
200
201
202+LOCK_FILE = pkg_resources.resource_filename(
203+ 'computerjanitord.tests',
204+ os.path.join('data', 'var', 'lib', 'dpkg', 'status'))
205+
206+
207 class MockCruft:
208 """Mock cruft that supports the required `get_name()` interface."""
209
210@@ -66,10 +74,23 @@
211 return []
212
213
214+class LockingPlugin(Plugin):
215+ """All this plugin does is acquire a fake apt lock after cleanup."""
216+
217+ def get_cruft(self):
218+ return []
219+
220+ def post_cleanup(self):
221+ # If the lock cannot be acquired, an exception is raised.
222+ with apt_pkg.FileLock(LOCK_FILE):
223+ # Do something.
224+ pass
225+
226+
227 class MockPluginManager:
228 def __init__(self, app, plugin_dirs):
229+ # Ignore plugin_dirs
230 self.app = app
231- # Ignore plugin_dirs
232
233 def get_plugins(self):
234 shortnames = ('one', 'two', 'three')
235@@ -77,9 +98,10 @@
236 plugin = MockPlugin(prefix, shortnames)
237 plugin.set_application(self.app)
238 yield plugin
239- plugin = SawAppPlugin()
240- plugin.set_application(self.app)
241- yield plugin
242+ for plugin_class in (SawAppPlugin, LockingPlugin):
243+ plugin = plugin_class()
244+ plugin.set_application(self.app)
245+ yield plugin
246
247
248 class MockCruftExtra(MockCruft):
249@@ -149,6 +171,22 @@
250 cruft_names = set(cruft.get_name() for cruft in self.collector.cruft)
251 self.assertEqual(cruft_keys, cruft_names)
252
253+ def test_cleanup_lock(self):
254+ # Pretend we're running synaptic at the same time. We have to acquire
255+ # this fake-synaptic lock in a subprocess.
256+ lock_event = multiprocessing.Event()
257+ continue_event = multiprocessing.Event()
258+ class AptLockThread(multiprocessing.Process):
259+ def run(self):
260+ with apt_pkg.FileLock(LOCK_FILE):
261+ lock_event.set()
262+ continue_event.wait(1.0)
263+ apt_locker = AptLockThread()
264+ apt_locker.start()
265+ lock_event.wait(1.0)
266+ self.assertRaises(PackageCleanupError, self.collector.clean, [])
267+ continue_event.set()
268+
269
270 class TestDuplicateCruftCollector(
271 unittest.TestCase, ApplicationTestSetupMixin):
272
273=== modified file 'debian/changelog'
274--- debian/changelog 2010-04-15 16:13:29 +0000
275+++ debian/changelog 2010-05-20 13:55:46 +0000
276@@ -1,4 +1,11 @@
277-computer-janitor (2.0-0ubuntu6) lucid; urgency=low
278+computer-janitor (2.0.1~ppa1) lucid; urgency=low
279+
280+ * Display dialog in gtk version when another package manager is running,
281+ preventing package plugin post-cleanup from completing. (LP: #545306)
282+
283+ -- Barry Warsaw <barry@canonical.com> Thu, 20 May 2010 09:36:15 -0400
284+
285+computer-janitor (2.0~ppa0) lucid; urgency=low
286
287 * Since CJ 2.0 won't make it into Lucid, do Maverick updates now.
288 (LP: #552777)
289
290=== modified file 'po/POTFILES.in'
291--- po/POTFILES.in 2010-04-01 17:33:15 +0000
292+++ po/POTFILES.in 2010-05-20 13:55:46 +0000
293@@ -1,6 +1,6 @@
294 [encoding: UTF-8]
295 computerjanitorapp/gtk/main.py
296-computerjanitorapp/gtk/areyousure.py
297+computerjanitorapp/gtk/dialogs.py
298 computerjanitorapp/gtk/ui.py
299 computerjanitorapp/gtk/__init__.py
300 computerjanitorapp/gtk/store.py
301
302=== modified file 'po/computerjanitor.pot'
303--- po/computerjanitor.pot 2010-04-15 16:09:46 +0000
304+++ po/computerjanitor.pot 2010-05-20 13:55:46 +0000
305@@ -8,7 +8,7 @@
306 msgstr ""
307 "Project-Id-Version: PACKAGE VERSION\n"
308 "Report-Msgid-Bugs-To: \n"
309-"POT-Creation-Date: 2010-04-15 12:09-0400\n"
310+"POT-Creation-Date: 2010-05-20 09:32-0400\n"
311 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
312 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
313 "Language-Team: LANGUAGE <LL@li.org>\n"
314@@ -20,54 +20,64 @@
315 #. that would require a richer interface to the dbus service, and
316 #. probably to the cruft plugin architecture underneath that.
317 #.
318-#: ../computerjanitorapp/gtk/areyousure.py:49
319+#: ../computerjanitorapp/gtk/dialogs.py:54
320 msgid "Are you sure you want to clean your system?"
321 msgstr ""
322
323-#: ../computerjanitorapp/gtk/areyousure.py:55
324-#: ../computerjanitorapp/gtk/areyousure.py:69
325+#: ../computerjanitorapp/gtk/dialogs.py:60
326+#: ../computerjanitorapp/gtk/dialogs.py:74
327 msgid "Clean up"
328 msgstr ""
329
330-#: ../computerjanitorapp/gtk/areyousure.py:62
331+#: ../computerjanitorapp/gtk/dialogs.py:67
332 msgid "<b>Software packages to remove: {packages}</b>."
333 msgstr ""
334
335-#: ../computerjanitorapp/gtk/areyousure.py:63
336+#: ../computerjanitorapp/gtk/dialogs.py:68
337 msgid ""
338 "\n"
339 "Removing packages that are still in use can cause errors."
340 msgstr ""
341
342-#: ../computerjanitorapp/gtk/areyousure.py:66
343+#: ../computerjanitorapp/gtk/dialogs.py:71
344 msgid "Remove packages"
345 msgstr ""
346
347-#: ../computerjanitorapp/gtk/areyousure.py:68
348+#: ../computerjanitorapp/gtk/dialogs.py:73
349 msgid "Non-package items to remove: {others}."
350 msgstr ""
351
352-#: ../computerjanitorapp/gtk/ui.py:48
353+#: ../computerjanitorapp/gtk/dialogs.py:96
354+msgid ""
355+"System clean up could not complete. Be sure no other package manager such as "
356+"Synaptic or Update Manager is running."
357+msgstr ""
358+
359+#: ../computerjanitorapp/gtk/dialogs.py:104
360+msgid "System clean up failure"
361+msgstr ""
362+
363+#: ../computerjanitorapp/gtk/ui.py:49
364 msgid "Package will be <b>removed</b>."
365 msgstr ""
366
367-#: ../computerjanitorapp/gtk/ui.py:49
368+#: ../computerjanitorapp/gtk/ui.py:50
369 msgid "Package will be <b>installed</b>."
370 msgstr ""
371
372-#: ../computerjanitorapp/gtk/ui.py:50
373+#: ../computerjanitorapp/gtk/ui.py:51
374 msgid "File will be <b>removed</b>."
375 msgstr ""
376
377-#: ../computerjanitorapp/gtk/ui.py:264
378+#: ../computerjanitorapp/gtk/ui.py:265
379 msgid "Size: {bytes}"
380 msgstr ""
381
382-#: ../computerjanitorapp/gtk/ui.py:346
383+#: ../computerjanitorapp/gtk/ui.py:347
384 msgid "Processing {cruft}"
385 msgstr ""
386
387-#: ../computerjanitorapp/gtk/ui.py:469
388+#: ../computerjanitorapp/gtk/ui.py:470
389 #: ../data/computer-janitor-gtk.desktop.in.h:2
390 msgid "Computer Janitor"
391 msgstr ""
392
393=== modified file 'po/es.po'
394--- po/es.po 2010-04-15 16:09:46 +0000
395+++ po/es.po 2010-05-20 13:55:46 +0000
396@@ -9,7 +9,7 @@
397 msgstr ""
398 "Project-Id-Version: PACKAGE VERSION\n"
399 "Report-Msgid-Bugs-To: \n"
400-"POT-Creation-Date: 2010-04-15 12:09-0400\n"
401+"POT-Creation-Date: 2010-05-20 09:32-0400\n"
402 "PO-Revision-Date: 2008-10-26 23:38+0100\n"
403 "Last-Translator: Ricardo Pérez López <ricardo@ubuntu.com>\n"
404 "Language-Team: \n"
405@@ -21,56 +21,66 @@
406 #. that would require a richer interface to the dbus service, and
407 #. probably to the cruft plugin architecture underneath that.
408 #.
409-#: ../computerjanitorapp/gtk/areyousure.py:49
410+#: ../computerjanitorapp/gtk/dialogs.py:54
411 msgid "Are you sure you want to clean your system?"
412 msgstr ""
413
414-#: ../computerjanitorapp/gtk/areyousure.py:55
415-#: ../computerjanitorapp/gtk/areyousure.py:69
416+#: ../computerjanitorapp/gtk/dialogs.py:60
417+#: ../computerjanitorapp/gtk/dialogs.py:74
418 #, fuzzy
419 msgid "Clean up"
420 msgstr "_Limpiar"
421
422-#: ../computerjanitorapp/gtk/areyousure.py:62
423+#: ../computerjanitorapp/gtk/dialogs.py:67
424 msgid "<b>Software packages to remove: {packages}</b>."
425 msgstr ""
426
427-#: ../computerjanitorapp/gtk/areyousure.py:63
428+#: ../computerjanitorapp/gtk/dialogs.py:68
429 msgid ""
430 "\n"
431 "Removing packages that are still in use can cause errors."
432 msgstr ""
433
434-#: ../computerjanitorapp/gtk/areyousure.py:66
435+#: ../computerjanitorapp/gtk/dialogs.py:71
436 #, fuzzy
437 msgid "Remove packages"
438 msgstr "paquete .deb"
439
440-#: ../computerjanitorapp/gtk/areyousure.py:68
441+#: ../computerjanitorapp/gtk/dialogs.py:73
442 msgid "Non-package items to remove: {others}."
443 msgstr ""
444
445-#: ../computerjanitorapp/gtk/ui.py:48
446+#: ../computerjanitorapp/gtk/dialogs.py:96
447+msgid ""
448+"System clean up could not complete. Be sure no other package manager such as "
449+"Synaptic or Update Manager is running."
450+msgstr ""
451+
452+#: ../computerjanitorapp/gtk/dialogs.py:104
453+msgid "System clean up failure"
454+msgstr ""
455+
456+#: ../computerjanitorapp/gtk/ui.py:49
457 msgid "Package will be <b>removed</b>."
458 msgstr ""
459
460-#: ../computerjanitorapp/gtk/ui.py:49
461+#: ../computerjanitorapp/gtk/ui.py:50
462 msgid "Package will be <b>installed</b>."
463 msgstr ""
464
465-#: ../computerjanitorapp/gtk/ui.py:50
466+#: ../computerjanitorapp/gtk/ui.py:51
467 msgid "File will be <b>removed</b>."
468 msgstr ""
469
470-#: ../computerjanitorapp/gtk/ui.py:264
471+#: ../computerjanitorapp/gtk/ui.py:265
472 msgid "Size: {bytes}"
473 msgstr ""
474
475-#: ../computerjanitorapp/gtk/ui.py:346
476+#: ../computerjanitorapp/gtk/ui.py:347
477 msgid "Processing {cruft}"
478 msgstr ""
479
480-#: ../computerjanitorapp/gtk/ui.py:469
481+#: ../computerjanitorapp/gtk/ui.py:470
482 #: ../data/computer-janitor-gtk.desktop.in.h:2
483 msgid "Computer Janitor"
484 msgstr ""
485
486=== modified file 'po/fi.po'
487--- po/fi.po 2010-04-15 16:09:46 +0000
488+++ po/fi.po 2010-05-20 13:55:46 +0000
489@@ -8,7 +8,7 @@
490 msgstr ""
491 "Project-Id-Version: cruft-remover 1.10\n"
492 "Report-Msgid-Bugs-To: \n"
493-"POT-Creation-Date: 2010-04-15 12:09-0400\n"
494+"POT-Creation-Date: 2010-05-20 09:32-0400\n"
495 "PO-Revision-Date: 2008-10-09 23:02+0300\n"
496 "Last-Translator: Lars Wirzenius <lars@ubuntu.com>\n"
497 "Language-Team: Finnish\n"
498@@ -21,56 +21,66 @@
499 #. that would require a richer interface to the dbus service, and
500 #. probably to the cruft plugin architecture underneath that.
501 #.
502-#: ../computerjanitorapp/gtk/areyousure.py:49
503+#: ../computerjanitorapp/gtk/dialogs.py:54
504 msgid "Are you sure you want to clean your system?"
505 msgstr ""
506
507-#: ../computerjanitorapp/gtk/areyousure.py:55
508-#: ../computerjanitorapp/gtk/areyousure.py:69
509+#: ../computerjanitorapp/gtk/dialogs.py:60
510+#: ../computerjanitorapp/gtk/dialogs.py:74
511 #, fuzzy
512 msgid "Clean up"
513 msgstr "_Puhdista"
514
515-#: ../computerjanitorapp/gtk/areyousure.py:62
516+#: ../computerjanitorapp/gtk/dialogs.py:67
517 msgid "<b>Software packages to remove: {packages}</b>."
518 msgstr ""
519
520-#: ../computerjanitorapp/gtk/areyousure.py:63
521+#: ../computerjanitorapp/gtk/dialogs.py:68
522 msgid ""
523 "\n"
524 "Removing packages that are still in use can cause errors."
525 msgstr ""
526
527-#: ../computerjanitorapp/gtk/areyousure.py:66
528+#: ../computerjanitorapp/gtk/dialogs.py:71
529 #, fuzzy
530 msgid "Remove packages"
531 msgstr ".deb-paketti"
532
533-#: ../computerjanitorapp/gtk/areyousure.py:68
534+#: ../computerjanitorapp/gtk/dialogs.py:73
535 msgid "Non-package items to remove: {others}."
536 msgstr ""
537
538-#: ../computerjanitorapp/gtk/ui.py:48
539+#: ../computerjanitorapp/gtk/dialogs.py:96
540+msgid ""
541+"System clean up could not complete. Be sure no other package manager such as "
542+"Synaptic or Update Manager is running."
543+msgstr ""
544+
545+#: ../computerjanitorapp/gtk/dialogs.py:104
546+msgid "System clean up failure"
547+msgstr ""
548+
549+#: ../computerjanitorapp/gtk/ui.py:49
550 msgid "Package will be <b>removed</b>."
551 msgstr ""
552
553-#: ../computerjanitorapp/gtk/ui.py:49
554+#: ../computerjanitorapp/gtk/ui.py:50
555 msgid "Package will be <b>installed</b>."
556 msgstr ""
557
558-#: ../computerjanitorapp/gtk/ui.py:50
559+#: ../computerjanitorapp/gtk/ui.py:51
560 msgid "File will be <b>removed</b>."
561 msgstr ""
562
563-#: ../computerjanitorapp/gtk/ui.py:264
564+#: ../computerjanitorapp/gtk/ui.py:265
565 msgid "Size: {bytes}"
566 msgstr ""
567
568-#: ../computerjanitorapp/gtk/ui.py:346
569+#: ../computerjanitorapp/gtk/ui.py:347
570 msgid "Processing {cruft}"
571 msgstr ""
572
573-#: ../computerjanitorapp/gtk/ui.py:469
574+#: ../computerjanitorapp/gtk/ui.py:470
575 #: ../data/computer-janitor-gtk.desktop.in.h:2
576 msgid "Computer Janitor"
577 msgstr ""
578
579=== modified file 'po/fr.po'
580--- po/fr.po 2010-04-15 16:09:46 +0000
581+++ po/fr.po 2010-05-20 13:55:46 +0000
582@@ -8,7 +8,7 @@
583 msgstr ""
584 "Project-Id-Version: cruft-remover 1.10\n"
585 "Report-Msgid-Bugs-To: \n"
586-"POT-Creation-Date: 2010-04-15 12:09-0400\n"
587+"POT-Creation-Date: 2010-05-20 09:32-0400\n"
588 "PO-Revision-Date: 2008-10-26 23:02+0300\n"
589 "Last-Translator: Jonathan Ernst <jonathan@ernstfamily.ch>\n"
590 "Language-Team: French\n"
591@@ -21,56 +21,66 @@
592 #. that would require a richer interface to the dbus service, and
593 #. probably to the cruft plugin architecture underneath that.
594 #.
595-#: ../computerjanitorapp/gtk/areyousure.py:49
596+#: ../computerjanitorapp/gtk/dialogs.py:54
597 msgid "Are you sure you want to clean your system?"
598 msgstr ""
599
600-#: ../computerjanitorapp/gtk/areyousure.py:55
601-#: ../computerjanitorapp/gtk/areyousure.py:69
602+#: ../computerjanitorapp/gtk/dialogs.py:60
603+#: ../computerjanitorapp/gtk/dialogs.py:74
604 #, fuzzy
605 msgid "Clean up"
606 msgstr "_Nettoyer"
607
608-#: ../computerjanitorapp/gtk/areyousure.py:62
609+#: ../computerjanitorapp/gtk/dialogs.py:67
610 msgid "<b>Software packages to remove: {packages}</b>."
611 msgstr ""
612
613-#: ../computerjanitorapp/gtk/areyousure.py:63
614+#: ../computerjanitorapp/gtk/dialogs.py:68
615 msgid ""
616 "\n"
617 "Removing packages that are still in use can cause errors."
618 msgstr ""
619
620-#: ../computerjanitorapp/gtk/areyousure.py:66
621+#: ../computerjanitorapp/gtk/dialogs.py:71
622 #, fuzzy
623 msgid "Remove packages"
624 msgstr "paquet .deb"
625
626-#: ../computerjanitorapp/gtk/areyousure.py:68
627+#: ../computerjanitorapp/gtk/dialogs.py:73
628 msgid "Non-package items to remove: {others}."
629 msgstr ""
630
631-#: ../computerjanitorapp/gtk/ui.py:48
632+#: ../computerjanitorapp/gtk/dialogs.py:96
633+msgid ""
634+"System clean up could not complete. Be sure no other package manager such as "
635+"Synaptic or Update Manager is running."
636+msgstr ""
637+
638+#: ../computerjanitorapp/gtk/dialogs.py:104
639+msgid "System clean up failure"
640+msgstr ""
641+
642+#: ../computerjanitorapp/gtk/ui.py:49
643 msgid "Package will be <b>removed</b>."
644 msgstr ""
645
646-#: ../computerjanitorapp/gtk/ui.py:49
647+#: ../computerjanitorapp/gtk/ui.py:50
648 msgid "Package will be <b>installed</b>."
649 msgstr ""
650
651-#: ../computerjanitorapp/gtk/ui.py:50
652+#: ../computerjanitorapp/gtk/ui.py:51
653 msgid "File will be <b>removed</b>."
654 msgstr ""
655
656-#: ../computerjanitorapp/gtk/ui.py:264
657+#: ../computerjanitorapp/gtk/ui.py:265
658 msgid "Size: {bytes}"
659 msgstr ""
660
661-#: ../computerjanitorapp/gtk/ui.py:346
662+#: ../computerjanitorapp/gtk/ui.py:347
663 msgid "Processing {cruft}"
664 msgstr ""
665
666-#: ../computerjanitorapp/gtk/ui.py:469
667+#: ../computerjanitorapp/gtk/ui.py:470
668 #: ../data/computer-janitor-gtk.desktop.in.h:2
669 msgid "Computer Janitor"
670 msgstr ""
671
672=== modified file 'po/ja.po'
673--- po/ja.po 2010-04-15 16:09:46 +0000
674+++ po/ja.po 2010-05-20 13:55:46 +0000
675@@ -8,7 +8,7 @@
676 msgstr ""
677 "Project-Id-Version: cruft-remover 1.10\n"
678 "Report-Msgid-Bugs-To: \n"
679-"POT-Creation-Date: 2010-04-15 12:09-0400\n"
680+"POT-Creation-Date: 2010-05-20 09:32-0400\n"
681 "PO-Revision-Date: 2008-10-25 00:08+0900\n"
682 "Last-Translator: Mitsuya Shibata <mty.shibata@gmail.com>\n"
683 "Language-Team: Ubuntu Japanese Team <ubuntu-jp@lists.ubuntu.com>\n"
684@@ -20,56 +20,66 @@
685 #. that would require a richer interface to the dbus service, and
686 #. probably to the cruft plugin architecture underneath that.
687 #.
688-#: ../computerjanitorapp/gtk/areyousure.py:49
689+#: ../computerjanitorapp/gtk/dialogs.py:54
690 msgid "Are you sure you want to clean your system?"
691 msgstr ""
692
693-#: ../computerjanitorapp/gtk/areyousure.py:55
694-#: ../computerjanitorapp/gtk/areyousure.py:69
695+#: ../computerjanitorapp/gtk/dialogs.py:60
696+#: ../computerjanitorapp/gtk/dialogs.py:74
697 #, fuzzy
698 msgid "Clean up"
699 msgstr "整頓する(_C)"
700
701-#: ../computerjanitorapp/gtk/areyousure.py:62
702+#: ../computerjanitorapp/gtk/dialogs.py:67
703 msgid "<b>Software packages to remove: {packages}</b>."
704 msgstr ""
705
706-#: ../computerjanitorapp/gtk/areyousure.py:63
707+#: ../computerjanitorapp/gtk/dialogs.py:68
708 msgid ""
709 "\n"
710 "Removing packages that are still in use can cause errors."
711 msgstr ""
712
713-#: ../computerjanitorapp/gtk/areyousure.py:66
714+#: ../computerjanitorapp/gtk/dialogs.py:71
715 #, fuzzy
716 msgid "Remove packages"
717 msgstr "deb パッケージ"
718
719-#: ../computerjanitorapp/gtk/areyousure.py:68
720+#: ../computerjanitorapp/gtk/dialogs.py:73
721 msgid "Non-package items to remove: {others}."
722 msgstr ""
723
724-#: ../computerjanitorapp/gtk/ui.py:48
725+#: ../computerjanitorapp/gtk/dialogs.py:96
726+msgid ""
727+"System clean up could not complete. Be sure no other package manager such as "
728+"Synaptic or Update Manager is running."
729+msgstr ""
730+
731+#: ../computerjanitorapp/gtk/dialogs.py:104
732+msgid "System clean up failure"
733+msgstr ""
734+
735+#: ../computerjanitorapp/gtk/ui.py:49
736 msgid "Package will be <b>removed</b>."
737 msgstr ""
738
739-#: ../computerjanitorapp/gtk/ui.py:49
740+#: ../computerjanitorapp/gtk/ui.py:50
741 msgid "Package will be <b>installed</b>."
742 msgstr ""
743
744-#: ../computerjanitorapp/gtk/ui.py:50
745+#: ../computerjanitorapp/gtk/ui.py:51
746 msgid "File will be <b>removed</b>."
747 msgstr ""
748
749-#: ../computerjanitorapp/gtk/ui.py:264
750+#: ../computerjanitorapp/gtk/ui.py:265
751 msgid "Size: {bytes}"
752 msgstr ""
753
754-#: ../computerjanitorapp/gtk/ui.py:346
755+#: ../computerjanitorapp/gtk/ui.py:347
756 msgid "Processing {cruft}"
757 msgstr ""
758
759-#: ../computerjanitorapp/gtk/ui.py:469
760+#: ../computerjanitorapp/gtk/ui.py:470
761 #: ../data/computer-janitor-gtk.desktop.in.h:2
762 msgid "Computer Janitor"
763 msgstr ""
764
765=== modified file 'po/pl.po'
766--- po/pl.po 2010-04-15 16:09:46 +0000
767+++ po/pl.po 2010-05-20 13:55:46 +0000
768@@ -3,7 +3,7 @@
769 msgstr ""
770 "Project-Id-Version: Cruft Remover\n"
771 "Report-Msgid-Bugs-To: \n"
772-"POT-Creation-Date: 2010-04-15 12:09-0400\n"
773+"POT-Creation-Date: 2010-05-20 09:32-0400\n"
774 "PO-Revision-Date: 2008-10-28 10:35+0100\n"
775 "Last-Translator: Piotr Makowski <pzaryk@aviary.pl>\n"
776 "Language-Team: Piotr Makowski (Aviary.pl) <pmakowski@aviary.pl>\n"
777@@ -20,56 +20,66 @@
778 #. that would require a richer interface to the dbus service, and
779 #. probably to the cruft plugin architecture underneath that.
780 #.
781-#: ../computerjanitorapp/gtk/areyousure.py:49
782+#: ../computerjanitorapp/gtk/dialogs.py:54
783 msgid "Are you sure you want to clean your system?"
784 msgstr ""
785
786-#: ../computerjanitorapp/gtk/areyousure.py:55
787-#: ../computerjanitorapp/gtk/areyousure.py:69
788+#: ../computerjanitorapp/gtk/dialogs.py:60
789+#: ../computerjanitorapp/gtk/dialogs.py:74
790 #, fuzzy
791 msgid "Clean up"
792 msgstr "_Wyczyść"
793
794-#: ../computerjanitorapp/gtk/areyousure.py:62
795+#: ../computerjanitorapp/gtk/dialogs.py:67
796 msgid "<b>Software packages to remove: {packages}</b>."
797 msgstr ""
798
799-#: ../computerjanitorapp/gtk/areyousure.py:63
800+#: ../computerjanitorapp/gtk/dialogs.py:68
801 msgid ""
802 "\n"
803 "Removing packages that are still in use can cause errors."
804 msgstr ""
805
806-#: ../computerjanitorapp/gtk/areyousure.py:66
807+#: ../computerjanitorapp/gtk/dialogs.py:71
808 #, fuzzy
809 msgid "Remove packages"
810 msgstr "pakiet .deb"
811
812-#: ../computerjanitorapp/gtk/areyousure.py:68
813+#: ../computerjanitorapp/gtk/dialogs.py:73
814 msgid "Non-package items to remove: {others}."
815 msgstr ""
816
817-#: ../computerjanitorapp/gtk/ui.py:48
818+#: ../computerjanitorapp/gtk/dialogs.py:96
819+msgid ""
820+"System clean up could not complete. Be sure no other package manager such as "
821+"Synaptic or Update Manager is running."
822+msgstr ""
823+
824+#: ../computerjanitorapp/gtk/dialogs.py:104
825+msgid "System clean up failure"
826+msgstr ""
827+
828+#: ../computerjanitorapp/gtk/ui.py:49
829 msgid "Package will be <b>removed</b>."
830 msgstr ""
831
832-#: ../computerjanitorapp/gtk/ui.py:49
833+#: ../computerjanitorapp/gtk/ui.py:50
834 msgid "Package will be <b>installed</b>."
835 msgstr ""
836
837-#: ../computerjanitorapp/gtk/ui.py:50
838+#: ../computerjanitorapp/gtk/ui.py:51
839 msgid "File will be <b>removed</b>."
840 msgstr ""
841
842-#: ../computerjanitorapp/gtk/ui.py:264
843+#: ../computerjanitorapp/gtk/ui.py:265
844 msgid "Size: {bytes}"
845 msgstr ""
846
847-#: ../computerjanitorapp/gtk/ui.py:346
848+#: ../computerjanitorapp/gtk/ui.py:347
849 msgid "Processing {cruft}"
850 msgstr ""
851
852-#: ../computerjanitorapp/gtk/ui.py:469
853+#: ../computerjanitorapp/gtk/ui.py:470
854 #: ../data/computer-janitor-gtk.desktop.in.h:2
855 msgid "Computer Janitor"
856 msgstr ""
857
858=== modified file 'setup.py'
859--- setup.py 2010-03-18 13:19:32 +0000
860+++ setup.py 2010-05-20 13:55:46 +0000
861@@ -31,7 +31,7 @@
862
863
864 setup(name='computer-janitor',
865- version="2.0",
866+ version="2.0.1",
867 description="Clean up a system so it's more like a freshly "
868 "installed one",
869 author='Computer Janitor Hackers',

Subscribers

People subscribed via source and target branches