Merge lp:~elachuni/software-center/pep8-test-part4 into lp:software-center

Proposed by Anthony Lenton
Status: Merged
Merged at revision: 2838
Proposed branch: lp:~elachuni/software-center/pep8-test-part4
Merge into: lp:software-center
Diff against target: 1180 lines (+218/-210)
6 files modified
softwarecenter/ui/gtk3/widgets/reviews.py (+148/-130)
softwarecenter/ui/gtk3/widgets/searchaid.py (+22/-38)
softwarecenter/ui/gtk3/widgets/searchentry.py (+14/-12)
softwarecenter/ui/gtk3/widgets/sections.py (+15/-13)
softwarecenter/ui/gtk3/widgets/spinner.py (+18/-15)
test/test_pep8.py (+1/-2)
To merge this branch: bzr merge lp:~elachuni/software-center/pep8-test-part4
Reviewer Review Type Date Requested Status
software-store-developers Pending
Review via email: mp+96676@code.launchpad.net

Description of the change

More pep8 goodness.

I'm not sure about the specific format for comments to Translators, please check that I didn't break anything on lines 635 and 780 of the diff.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'softwarecenter/ui/gtk3/widgets/reviews.py'
2--- softwarecenter/ui/gtk3/widgets/reviews.py 2012-01-18 18:21:04 +0000
3+++ softwarecenter/ui/gtk3/widgets/reviews.py 2012-03-08 22:37:21 +0000
4@@ -32,21 +32,27 @@
5 from stars import Star
6 from softwarecenter.utils import (
7 get_person_from_config,
8- get_nice_date_string,
9- upstream_version_compare,
10+ get_nice_date_string,
11+ upstream_version_compare,
12 upstream_version,
13 utf8,
14 )
15
16
17-from softwarecenter.i18n import get_languages, langcode_to_name
18+from softwarecenter.i18n import (
19+ get_languages,
20+ langcode_to_name,
21+ )
22
23-from softwarecenter.netstatus import network_state_is_connected, get_network_watcher
24+from softwarecenter.netstatus import (
25+ network_state_is_connected,
26+ get_network_watcher,
27+ )
28 from softwarecenter.enums import (
29- PkgStates,
30+ PkgStates,
31 ReviewSortMethods,
32 )
33-
34+
35 from softwarecenter.backend.reviews import UsefulnessCache
36
37 from softwarecenter.ui.gtk3.em import StockEms
38@@ -58,33 +64,34 @@
39 (COL_LANGNAME,
40 COL_LANGCODE) = range(2)
41
42+
43 class UIReviewsList(Gtk.VBox):
44
45 __gsignals__ = {
46- 'new-review':(GObject.SignalFlags.RUN_FIRST,
47+ 'new-review': (GObject.SignalFlags.RUN_FIRST,
48 None,
49 ()),
50- 'report-abuse':(GObject.SignalFlags.RUN_FIRST,
51+ 'report-abuse': (GObject.SignalFlags.RUN_FIRST,
52 None,
53 (GObject.TYPE_PYOBJECT,)),
54- 'submit-usefulness':(GObject.SignalFlags.RUN_FIRST,
55+ 'submit-usefulness': (GObject.SignalFlags.RUN_FIRST,
56 None,
57 (GObject.TYPE_PYOBJECT, bool)),
58- 'modify-review':(GObject.SignalFlags.RUN_FIRST,
59- None,
60- (GObject.TYPE_PYOBJECT,)),
61- 'delete-review':(GObject.SignalFlags.RUN_FIRST,
62- None,
63- (GObject.TYPE_PYOBJECT,)),
64- 'more-reviews-clicked':(GObject.SignalFlags.RUN_FIRST,
65+ 'modify-review': (GObject.SignalFlags.RUN_FIRST,
66+ None,
67+ (GObject.TYPE_PYOBJECT,)),
68+ 'delete-review': (GObject.SignalFlags.RUN_FIRST,
69+ None,
70+ (GObject.TYPE_PYOBJECT,)),
71+ 'more-reviews-clicked': (GObject.SignalFlags.RUN_FIRST,
72 None,
73- () ),
74- 'different-review-language-clicked':(GObject.SignalFlags.RUN_FIRST,
75+ ()),
76+ 'different-review-language-clicked': (GObject.SignalFlags.RUN_FIRST,
77 None,
78- (GObject.TYPE_STRING,) ),
79- 'review-sort-changed':(GObject.SignalFlags.RUN_FIRST,
80+ (GObject.TYPE_STRING,)),
81+ 'review-sort-changed': (GObject.SignalFlags.RUN_FIRST,
82 None,
83- (GObject.TYPE_INT,) ),
84+ (GObject.TYPE_INT,)),
85 }
86
87 def __init__(self, parent):
88@@ -109,7 +116,7 @@
89 label.set_alignment(0, 0.5)
90 self.pack_start(label, False, False, 0)
91
92- # header
93+ # header
94 self.header = Gtk.HBox()
95 self.header.set_spacing(StockEms.MEDIUM)
96
97@@ -136,8 +143,8 @@
98 self.review_language.add_attribute(cell, "text", COL_LANGNAME)
99 self.review_language_model = Gtk.ListStore(str, str)
100 for lang in get_languages():
101- self.review_language_model.append( (langcode_to_name(lang), lang) )
102- self.review_language_model.append( (_('Any language'), 'any') )
103+ self.review_language_model.append((langcode_to_name(lang), lang))
104+ self.review_language_model.append((_('Any language'), 'any'))
105 self.review_language.set_model(self.review_language_model)
106 self.review_language.set_active(0)
107 self.review_language.connect(
108@@ -153,10 +160,9 @@
109 self.no_network_msg = None
110 watcher = get_network_watcher()
111 watcher.connect(
112- "changed", lambda w,s: self._on_network_state_change())
113+ "changed", lambda w, s: self._on_network_state_change())
114
115 self.show_all()
116- return
117
118 def _on_network_state_change(self):
119 is_connected = network_state_is_connected()
120@@ -171,7 +177,7 @@
121
122 def _on_button_new_clicked(self, button):
123 self.emit("new-review")
124-
125+
126 def _on_sort_method_changed(self, cb):
127 selection = self.sort_combo.get_active()
128 if selection == self._current_sort:
129@@ -179,7 +185,7 @@
130 else:
131 self._current_sort = selection
132 self.emit("review-sort-changed", selection)
133-
134+
135 def update_useful_votes(self, my_votes):
136 self.useful_votes = my_votes
137
138@@ -191,26 +197,25 @@
139 if self.reviews:
140 for r in self.reviews:
141 pkgversion = self._parent.app_details.version
142- review = UIReview(r, pkgversion, self.logged_in_person, self.useful_votes)
143+ review = UIReview(r, pkgversion, self.logged_in_person,
144+ self.useful_votes)
145 self.vbox.pack_start(review, True, True, 0)
146- return
147
148 def _be_the_first_to_review(self):
149 s = _('Be the first to review it')
150 self.new_review.set_label(s)
151 self.vbox.pack_start(NoReviewYetWriteOne(), True, True, 0)
152 self.vbox.show_all()
153- return
154
155 def _install_to_review(self):
156- s = '<small>%s</small>' % _("You need to install this before you can review it")
157+ s = ('<small>%s</small>' %
158+ _("You need to install this before you can review it"))
159 self.install_first_label = Gtk.Label(label=s)
160 self.install_first_label.set_use_markup(True)
161 self.install_first_label.set_alignment(1.0, 0.5)
162 self.header.pack_start(self.install_first_label, False, False, 0)
163 self.install_first_label.show()
164- return
165-
166+
167 # FIXME: this needs to be smarter in the future as we will
168 # not allow multiple reviews for the same software version
169 def _any_reviews_current_user(self):
170@@ -225,14 +230,14 @@
171 m = EmbeddedMessage(title, msg, 'network-offline')
172 self.vbox.pack_start(m, True, True, 0)
173 return m
174-
175+
176 def _clear_vbox(self, vbox):
177 children = vbox.get_children()
178 for child in children:
179 child.destroy()
180
181- # FIXME: instead of clear/add_reviews/configure_reviews_ui we should provide
182- # a single show_reviews(reviews_data_list)
183+ # FIXME: instead of clear/add_reviews/configure_reviews_ui we should
184+ # provide a single show_reviews(reviews_data_list)
185 def configure_reviews_ui(self):
186 """ this needs to be called after add_reviews, it will actually
187 show the reviews
188@@ -243,7 +248,7 @@
189 self.install_first_label.hide()
190 except AttributeError:
191 pass
192-
193+
194 self._clear_vbox(self.vbox)
195
196 # network sensitive stuff, only show write_review if connected,
197@@ -253,14 +258,14 @@
198
199 # only show new_review for installed stuff
200 is_installed = (self._parent.app_details and
201- self._parent.app_details.pkg_state == PkgStates.INSTALLED)
202+ self._parent.app_details.pkg_state == PkgStates.INSTALLED)
203
204 # show/hide new review button
205 if is_installed:
206 self.new_review.show()
207 else:
208 self.new_review.hide()
209- # if there are no reviews, the install to review text appears
210+ # if there are no reviews, the install to review text appears
211 # where the reviews usually are (LP #823255)
212 if self.reviews:
213 self._install_to_review()
214@@ -301,7 +306,6 @@
215 # always run this here to make update the current ui based on the
216 # network state
217 self._on_network_state_change()
218- return
219
220 def _on_more_reviews_clicked(self, button):
221 # remove buttn and emit signal
222@@ -323,11 +327,10 @@
223 ids = []
224 for review in self.reviews:
225 ids.append(review.id)
226- return ids
227+ return ids
228
229 def add_review(self, review):
230 self.reviews.append(review)
231- return
232
233 def replace_review(self, review):
234 for r in self.reviews:
235@@ -336,14 +339,12 @@
236 self.reviews.remove(r)
237 self.reviews.insert(pos, review)
238 break
239- return
240
241 def remove_review(self, review):
242 for r in self.reviews:
243 if r.id == review.id:
244 self.reviews.remove(r)
245 break
246- return
247
248 def clear(self):
249 self.reviews = []
250@@ -358,7 +359,7 @@
251 self.install_first_label.hide()
252 except AttributeError:
253 pass
254-
255+
256 a = Gtk.Alignment.new(0.5, 0.5, 1.0, 1.0)
257 hb = Gtk.HBox(spacing=12)
258 hb.show()
259@@ -380,26 +381,23 @@
260
261 self.vbox.pack_start(a, False, False, 0)
262 self.vbox.show()
263- return
264
265 def hide_spinner(self):
266 for child in self.vbox.get_children():
267 if isinstance(child, Gtk.Alignment):
268 child.destroy()
269- return
270
271 def draw(self, cr, a):
272 for r in self.vbox:
273 if isinstance(r, (UIReview)):
274 r.draw(cr, r.get_allocation())
275- return
276
277
278 class UIReview(Gtk.VBox):
279 """ the UI for a individual review including all button to mark
280 useful/inappropriate etc
281 """
282- def __init__(self, review_data=None, app_version=None,
283+ def __init__(self, review_data=None, app_version=None,
284 logged_in_person=None, useful_votes=None):
285 GObject.GObject.__init__(self)
286 self.set_spacing(StockEms.SMALL)
287@@ -420,15 +418,15 @@
288 self.delete_error_img = Gtk.Image()
289 self.delete_error_img.set_from_stock(
290 Gtk.STOCK_DIALOG_ERROR,
291- Gtk.IconSize.SMALL_TOOLBAR)
292+ Gtk.IconSize.SMALL_TOOLBAR)
293 self.submit_error_img = Gtk.Image()
294 self.submit_error_img.set_from_stock(
295 Gtk.STOCK_DIALOG_ERROR,
296 Gtk.IconSize.SMALL_TOOLBAR)
297 self.submit_status_spinner = Gtk.Spinner()
298- self.submit_status_spinner.set_size_request(12,12)
299+ self.submit_status_spinner.set_size_request(12, 12)
300 self.delete_status_spinner = Gtk.Spinner()
301- self.delete_status_spinner.set_size_request(12,12)
302+ self.delete_status_spinner.set_size_request(12, 12)
303 self.acknowledge_error = Gtk.Button()
304 label = Gtk.Label()
305 label.set_markup('<small>%s</small>' % _("OK"))
306@@ -465,7 +463,6 @@
307
308 def _on_realize(self, widget, *content):
309 self._build(*content)
310- return
311
312 def _on_report_abuse_clicked(self, button):
313 reviews = self.get_ancestor(UIReviewsList)
314@@ -476,46 +473,54 @@
315 reviews = self.get_ancestor(UIReviewsList)
316 if reviews:
317 reviews.emit("modify-review", self.id)
318-
319+
320 def _on_useful_clicked(self, btn, is_useful):
321 reviews = self.get_ancestor(UIReviewsList)
322 if reviews:
323 self._usefulness_ui_update('progress')
324 reviews.emit("submit-usefulness", self.id, is_useful)
325-
326- def _on_error_acknowledged(self, button, current_user_reviewer, useful_total, useful_favorable):
327+
328+ def _on_error_acknowledged(self, button, current_user_reviewer,
329+ useful_total, useful_favorable):
330 self.usefulness_error = False
331- self._usefulness_ui_update('renew', current_user_reviewer, useful_total, useful_favorable)
332-
333- def _usefulness_ui_update(self, type, current_user_reviewer=False, useful_total=0, useful_favorable=0):
334+ self._usefulness_ui_update('renew', current_user_reviewer,
335+ useful_total, useful_favorable)
336+
337+ def _usefulness_ui_update(self, type, current_user_reviewer=False,
338+ useful_total=0, useful_favorable=0):
339 self._hide_usefulness_elements()
340 #print "_usefulness_ui_update: %s" % type
341 if type == 'renew':
342- self._build_usefulness_ui(current_user_reviewer, useful_total, useful_favorable, self.useful_votes)
343+ self._build_usefulness_ui(current_user_reviewer, useful_total,
344+ useful_favorable, self.useful_votes)
345 return
346 if type == 'progress':
347- self.status_label = Gtk.Label.new("<small>%s</small>" % _(u"Submitting now\u2026"))
348+ self.status_label = Gtk.Label.new(
349+ "<small>%s</small>" % _(u"Submitting now\u2026"))
350 self.status_label.set_use_markup(True)
351- self.status_box.pack_start(self.submit_status_spinner, False, False, 0)
352+ self.status_box.pack_start(self.submit_status_spinner, False,
353+ False, 0)
354 self.submit_status_spinner.show()
355 self.submit_status_spinner.start()
356- self.status_label.set_padding(2,0)
357+ self.status_label.set_padding(2, 0)
358 self.status_box.pack_start(self.status_label, False, False, 0)
359 self.status_label.show()
360 if type == 'error':
361 self.submit_error_img.show()
362- self.status_label = Gtk.Label.new("<small>%s</small>" % _("Error submitting usefulness"))
363+ self.status_label = Gtk.Label.new(
364+ "<small>%s</small>" % _("Error submitting usefulness"))
365 self.status_label.set_use_markup(True)
366 self.status_box.pack_start(self.submit_error_img, False, False, 0)
367- self.status_label.set_padding(2,0)
368+ self.status_label.set_padding(2, 0)
369 self.status_box.pack_start(self.status_label, False, False, 0)
370 self.status_label.show()
371 self.acknowledge_error.show()
372 self.status_box.pack_start(self.acknowledge_error, False, False, 0)
373- self.acknowledge_error.connect('clicked', self._on_error_acknowledged, current_user_reviewer, useful_total, useful_favorable)
374+ self.acknowledge_error.connect('clicked',
375+ self._on_error_acknowledged, current_user_reviewer,
376+ useful_total, useful_favorable)
377 self.status_box.show()
378 self.footer.pack_start(self.status_box, False, False, 0)
379- return
380
381 def _hide_usefulness_elements(self):
382 """ hide all usefulness elements """
383@@ -526,13 +531,13 @@
384 widget = getattr(self, attr, None)
385 if widget:
386 widget.hide()
387- return
388
389 def _get_datetime_from_review_date(self, raw_date_str):
390 # example raw_date str format: 2011-01-28 19:15:21
391 return datetime.datetime.strptime(raw_date_str, '%Y-%m-%d %H:%M:%S')
392
393- def _delete_ui_update(self, type, current_user_reviewer=False, action=None):
394+ def _delete_ui_update(self, type, current_user_reviewer=False,
395+ action=None):
396 self._hide_delete_elements()
397 if type == 'renew':
398 self._build_delete_flag_ui(current_user_reviewer)
399@@ -540,35 +545,42 @@
400 if type == 'progress':
401 self.delete_status_spinner.start()
402 self.delete_status_spinner.show()
403- self.delete_status_label = Gtk.Label("<small><b>%s</b></small>" % _(u"Deleting now\u2026"))
404- self.delete_status_box.pack_start(self.delete_status_spinner, False, False, 0)
405+ self.delete_status_label = Gtk.Label(
406+ "<small><b>%s</b></small>" % _(u"Deleting now\u2026"))
407+ self.delete_status_box.pack_start(self.delete_status_spinner,
408+ False, False, 0)
409 self.delete_status_label.set_use_markup(True)
410- self.delete_status_label.set_padding(2,0)
411- self.delete_status_box.pack_start(self.delete_status_label, False, False, 0)
412+ self.delete_status_label.set_padding(2, 0)
413+ self.delete_status_box.pack_start(self.delete_status_label, False,
414+ False, 0)
415 self.delete_status_label.show()
416 if type == 'error':
417 self.delete_error_img.show()
418- # build full strings for easier i18n
419+ # build full strings for easier i18n
420 if action == 'deleting':
421 s = _("Error deleting review")
422 elif action == 'modifying':
423 s = _("Error modifying review")
424 else:
425- # or unknown error, but we are in string freeze,
426+ # or unknown error, but we are in string freeze,
427 # should never happen anyway
428 s = _("Internal Error")
429- self.delete_status_label = Gtk.Label("<small><b>%s</b></small>" % s)
430- self.delete_status_box.pack_start(self.delete_error_img, False, False, 0)
431+ self.delete_status_label = Gtk.Label(
432+ "<small><b>%s</b></small>" % s)
433+ self.delete_status_box.pack_start(self.delete_error_img,
434+ False, False, 0)
435 self.delete_status_label.set_use_markup(True)
436- self.delete_status_label.set_padding(2,0)
437- self.delete_status_box.pack_start(self.delete_status_label, False, False, 0)
438+ self.delete_status_label.set_padding(2, 0)
439+ self.delete_status_box.pack_start(self.delete_status_label,
440+ False, False, 0)
441 self.delete_status_label.show()
442 self.delete_acknowledge_error.show()
443- self.delete_status_box.pack_start(self.delete_acknowledge_error, False, False, 0)
444- self.delete_acknowledge_error.connect('clicked', self._on_delete_error_acknowledged, current_user_reviewer)
445+ self.delete_status_box.pack_start(self.delete_acknowledge_error,
446+ False, False, 0)
447+ self.delete_acknowledge_error.connect('clicked',
448+ self._on_delete_error_acknowledged, current_user_reviewer)
449 self.delete_status_box.show()
450 self.footer.pack_end(self.delete_status_box, False, False, 0)
451- return
452
453 def _on_delete_clicked(self, btn):
454 reviews = self.get_ancestor(UIReviewsList)
455@@ -583,16 +595,16 @@
456 def _hide_delete_elements(self):
457 """ hide all delete elements """
458 for attr in ["complain", "edit", "delete", "delete_status_spinner",
459- "delete_error_img", "delete_status_box", "delete_status_label",
460- "delete_acknowledge_error", "flagbox"
461+ "delete_error_img", "delete_status_box",
462+ "delete_status_label", "delete_acknowledge_error",
463+ "flagbox"
464 ]:
465 o = getattr(self, attr, None)
466 if o:
467 o.hide()
468- return
469
470 def _build(self, review_data, app_version, logged_in_person, useful_votes):
471- # all the attributes of review_data may need markup escape,
472+ # all the attributes of review_data may need markup escape,
473 # depening on if they are used as text or markup
474 self.id = review_data.id
475 self.person = review_data.reviewer_username
476@@ -610,15 +622,15 @@
477 # upstream version
478 version = GObject.markup_escape_text(upstream_version(review_version))
479 # default string
480- version_string = _("For version %(version)s") % {
481- 'version' : version,
482+ version_string = _("For version %(version)s") % {
483+ 'version': version,
484 }
485 # If its for the same version, show it as such
486 if (review_version and
487 app_version and
488 upstream_version_compare(review_version, app_version) == 0):
489- version_string = _("For this version (%(version)s)") % {
490- 'version' : version,
491+ version_string = _("For this version (%(version)s)") % {
492+ 'version': version,
493 }
494
495 m = '<small>%s</small>'
496@@ -663,31 +675,34 @@
497 current_user_reviewer = True
498
499 self._build_usefulness_ui(current_user_reviewer, useful_total,
500- useful_favorable, useful_votes, useful_submit_error)
501+ useful_favorable, useful_votes,
502+ useful_submit_error)
503
504 self.flagbox = Gtk.HBox()
505 self.flagbox.set_spacing(4)
506- self._build_delete_flag_ui(current_user_reviewer, delete_error, modify_error)
507+ self._build_delete_flag_ui(current_user_reviewer, delete_error,
508+ modify_error)
509 self.footer.pack_end(self.flagbox, False, False, 0)
510
511 # connect network signals
512 self.connect("realize", lambda w: self._on_network_state_change())
513 watcher = get_network_watcher()
514 watcher.connect(
515- "changed", lambda w,s: self._on_network_state_change())
516- return
517-
518- def _build_usefulness_ui(self, current_user_reviewer, useful_total,
519- useful_favorable, useful_votes, usefulness_submit_error=False):
520+ "changed", lambda w, s: self._on_network_state_change())
521+
522+ def _build_usefulness_ui(self, current_user_reviewer, useful_total,
523+ useful_favorable, useful_votes,
524+ usefulness_submit_error=False):
525 if usefulness_submit_error:
526- self._usefulness_ui_update('error', current_user_reviewer,
527+ self._usefulness_ui_update('error', current_user_reviewer,
528 useful_total, useful_favorable)
529 else:
530 already_voted = useful_votes.check_for_usefulness(self.id)
531- #get correct label based on retrieved usefulness totals and
532+ #get correct label based on retrieved usefulness totals and
533 # if user is reviewer
534 self.useful = self._get_usefulness_label(
535- current_user_reviewer, useful_total, useful_favorable, already_voted)
536+ current_user_reviewer, useful_total, useful_favorable,
537+ already_voted)
538 self.useful.set_use_markup(True)
539 #vertically centre so it lines up with the Yes and No buttons
540 self.useful.set_alignment(0, 0.5)
541@@ -714,7 +729,6 @@
542 self.likebox.pack_start(self.yes_no_separator, False, False, 0)
543 self.likebox.pack_start(self.no_like, False, False, 0)
544 self.footer.pack_start(self.likebox, False, False, 0)
545- return
546
547 def _on_network_state_change(self):
548 """ show/hide widgets based on network connection state """
549@@ -732,10 +746,10 @@
550 # actually submit anything without network
551 self.useful.hide()
552 self.complain.hide()
553-
554- def _get_usefulness_label(self, current_user_reviewer,
555- useful_total, useful_favorable, already_voted):
556- '''returns Gtk.Label() to be used as usefulness label depending
557+
558+ def _get_usefulness_label(self, current_user_reviewer,
559+ useful_total, useful_favorable, already_voted):
560+ '''returns Gtk.Label() to be used as usefulness label depending
561 on passed in parameters
562 '''
563 if already_voted == None:
564@@ -751,9 +765,10 @@
565 "found this review helpful.",
566 "%(useful_favorable)s of %(useful_total)s people "
567 "found this review helpful.",
568- useful_total) % { 'useful_total' : useful_total,
569- 'useful_favorable' : useful_favorable,
570- }
571+ useful_total) % {
572+ 'useful_total': useful_total,
573+ 'useful_favorable': useful_favorable,
574+ }
575 else:
576 # user has not already voted for the review
577 s = gettext.ngettext(
578@@ -761,9 +776,10 @@
579 "found this review helpful. Did you?",
580 "%(useful_favorable)s of %(useful_total)s people "
581 "found this review helpful. Did you?",
582- useful_total) % { 'useful_total' : useful_total,
583- 'useful_favorable' : useful_favorable,
584- }
585+ useful_total) % {
586+ 'useful_total': useful_total,
587+ 'useful_favorable': useful_favorable,
588+ }
589 else:
590 #only display these special strings if the user voted either way
591 if already_voted:
592@@ -775,9 +791,10 @@
593 "found this review helpful, including you",
594 "%(useful_favorable)s of %(useful_total)s people "
595 "found this review helpful, including you.",
596- useful_total) % { 'useful_total' : useful_total,
597- 'useful_favorable' : useful_favorable,
598- }
599+ useful_total) % {
600+ 'useful_total': useful_total,
601+ 'useful_favorable': useful_favorable,
602+ }
603 else:
604 if useful_total == 1:
605 s = _("You found this review unhelpful.")
606@@ -787,17 +804,19 @@
607 "found this review helpful; you did not.",
608 "%(useful_favorable)s of %(useful_total)s people "
609 "found this review helpful; you did not.",
610- useful_total) % { 'useful_total' : useful_total,
611- 'useful_favorable' : useful_favorable,
612- }
613+ useful_total) % {
614+ 'useful_total': useful_total,
615+ 'useful_favorable': useful_favorable,
616+ }
617
618 m = '<small>%s</small>'
619 label = Gtk.Label()
620 label.set_name("subtle-label")
621 label.set_markup(m % s)
622 return label
623-
624- def _build_delete_flag_ui(self, current_user_reviewer, delete_error=False, modify_error=False):
625+
626+ def _build_delete_flag_ui(self, current_user_reviewer, delete_error=False,
627+ modify_error=False):
628 if delete_error:
629 self._delete_ui_update('error', current_user_reviewer, 'deleting')
630 elif modify_error:
631@@ -814,16 +833,16 @@
632 self.edit.connect('clicked', self._on_modify_clicked)
633 self.delete.connect('clicked', self._on_delete_clicked)
634 else:
635- # Translators: This link is for flagging a review as inappropriate.
636- # To minimize repetition, if at all possible, keep it to a single word.
637- # If your language has an obvious verb, it won't need a question mark.
638+ # Translators: This link is for flagging a review as
639+ # inappropriate. To minimize repetition, if at all possible,
640+ # keep it to a single word. If your language has an obvious
641+ # verb, it won't need a question mark.
642 self.complain = Link(m % _('Inappropriate?'))
643 self.complain.set_name("subtle-label")
644 self.complain.set_sensitive(network_state_is_connected())
645 self.flagbox.pack_start(self.complain, False, False, 0)
646 self.complain.connect('clicked', self._on_report_abuse_clicked)
647 self.flagbox.show_all()
648- return
649
650 def _whom_when_markup(self, person, displayname, cur_t):
651 nice_date = get_nice_date_string(cur_t)
652@@ -851,7 +870,7 @@
653 return m
654
655 def draw(self, widget, cr):
656- return
657+ pass
658
659
660 class EmbeddedMessage(UIReview):
661@@ -860,7 +879,7 @@
662 UIReview.__init__(self)
663 self.label = None
664 self.image = None
665-
666+
667 a = Gtk.Alignment.new(0.5, 0.5, 1.0, 1.0)
668 self.body.pack_start(a, False, False, 0)
669
670@@ -878,16 +897,16 @@
671 self.label.set_alignment(0, 0.5)
672
673 if title:
674- self.label.set_markup('<b><big>%s</big></b>\n%s' % (title, message))
675+ self.label.set_markup('<b><big>%s</big></b>\n%s' %
676+ (title, message))
677 else:
678 self.label.set_markup(message)
679
680 hb.pack_start(self.label, True, True, 0)
681 self.show_all()
682- return
683
684 def draw(self, cr, a):
685- return
686+ pass
687
688
689 class NoReviewRelaxLanguage(EmbeddedMessage):
690@@ -922,7 +941,6 @@
691 msg = _('Be the first to contribute a review for this application')
692
693 EmbeddedMessage.__init__(self, title, msg, 'text-editor')
694- return
695
696
697 def get_test_reviews_window():
698
699=== modified file 'softwarecenter/ui/gtk3/widgets/searchaid.py'
700--- softwarecenter/ui/gtk3/widgets/searchaid.py 2011-10-08 17:22:54 +0000
701+++ softwarecenter/ui/gtk3/widgets/searchaid.py 2012-03-08 22:37:21 +0000
702@@ -10,10 +10,10 @@
703 class Suggestions(Gtk.VBox):
704
705 __gsignals__ = {
706- "activate-link" : (GObject.SignalFlags.RUN_LAST,
707- None,
708- (GObject.TYPE_PYOBJECT, str),
709- ),
710+ "activate-link": (GObject.SignalFlags.RUN_LAST,
711+ None,
712+ (GObject.TYPE_PYOBJECT, str),
713+ ),
714 }
715
716 def __init__(self):
717@@ -29,28 +29,24 @@
718
719 self._labels = []
720 self._handlers = []
721- return
722
723 def on_link_activate(self, widget, uri):
724 self.reset_all()
725 self.emit("activate-link", widget, uri)
726- return True #silences the gtk-warning
727+ return True # silences the gtk-warning
728
729 def foreach(self, label_func, *args):
730- for label in [self.title,] + self._labels:
731+ for label in [self.title] + self._labels:
732 label_func(label, *args)
733- return
734
735 def set_alignment(self, xalign, yalign):
736 self.xalign = xalign
737 self.yalign = yalign
738
739 self.foreach(Gtk.Label.set_alignment, xalign, yalign)
740- return
741
742 def set_title(self, title_markup):
743 self.title.set_markup(title_markup)
744- return
745
746 def append_suggestion(self, suggestion_markup):
747 label = Gtk.Label()
748@@ -62,13 +58,12 @@
749 self._handlers.append(
750 label.connect("activate-link", self.on_link_activate))
751 self._labels.append(label)
752- return
753
754 def set_suggestions(self, suggestions):
755- if self._labels: self.reset()
756+ if self._labels:
757+ self.reset()
758 for s in suggestions:
759 self.append_suggestion(s)
760- return
761
762 def reset(self):
763 for label, handler in zip(self._labels, self._handlers):
764@@ -77,26 +72,24 @@
765
766 self._labels = []
767 self._handlers = []
768- return
769
770 def reset_all(self):
771 self.title.set_text('')
772 self.reset()
773- return
774
775
776 class SearchAidLogic(object):
777
778 HEADER_ICON_NAME = "face-sad"
779 HEADER_MARKUP = '<b><big>%s</big></b>'
780- #TRANSLATORS: this is the layout of an indented line starting with a bullet point
781+ #TRANSLATORS: this is the layout of an indented
782+ # line starting with a bullet point
783 BULLET = unicode(_("\t• %s"), 'utf8').encode('utf8')
784
785 def __init__(self, pane):
786 self.pane = pane
787 self.db = pane.db
788 self.enquirer = pane.enquirer
789- return
790
791 def is_search_aid_required(self, state):
792 return (state.search_term and
793@@ -115,7 +108,7 @@
794 return category.name
795 plain_text = _("%(category_name)s → %(subcategory_name)s")
796 usable_text = unicode(plain_text, 'utf8').encode('utf8')
797- return usable_text % {'category_name': category.name,
798+ return usable_text % {'category_name': category.name,
799 'subcategory_name': state.subcategory.name}
800
801 if not category:
802@@ -172,7 +165,8 @@
803 "suggestions that may aid you in your search")
804
805 def get_include_parent_suggestion_text(self, term, category, state):
806- if not state.subcategory: return None
807+ if not state.subcategory:
808+ return
809
810 enq = self.enquirer
811 query = self.db.get_query_list_from_search_entry(
812@@ -195,14 +189,13 @@
813 n=enq.nr_apps) % \
814 {'category': category.name, 'n': enq.nr_apps}
815 return text
816- return None
817
818 def get_unsupported_suggestion_text(self, term, category, state):
819 if state.filter is None:
820- return None
821+ return
822 supported_only = state.filter.get_supported_only()
823 if not supported_only:
824- return None
825+ return
826
827 state.filter.set_supported_only(False)
828
829@@ -224,12 +217,11 @@
830 if enq.nr_apps > 0:
831 text = self.BULLET % gettext.ngettext("Try "
832 "<a href=\"search-unsupported:\">the %(amount)d item "
833- "that matches</a> in software not maintained by Canonical",
834+ "that matches</a> in software not maintained by Canonical",
835 "Try <a href=\"search-unsupported:\">the %(amount)d items "
836 "that match</a> in software not maintained by Canonical",
837 enq.nr_apps) % {'amount': enq.nr_apps}
838 return text
839- return None
840
841 def update_search_help(self, state):
842 # do any non toolkit logic here
843@@ -238,12 +230,10 @@
844 # do toolkit stuff here
845 if hasattr(self, 'on_update_search_help'):
846 self.on_update_search_help(state)
847- return
848
849 def reset(self):
850 if hasattr(self, 'on_reset'):
851 self.on_reset()
852- return
853
854
855 class SearchAid(Gtk.Table, SearchAidLogic):
856@@ -259,8 +249,8 @@
857 image = Gtk.Image.new_from_icon_name(self.HEADER_ICON_NAME,
858 Gtk.IconSize.DIALOG)
859 self.attach(image,
860- 0, 1, # left_attach, right_attach
861- 0, 1, # top_attach, bottom_attach
862+ 0, 1, # left_attach, right_attach
863+ 0, 1, # top_attach, bottom_attach
864 Gtk.AttachOptions.SHRINK,
865 Gtk.AttachOptions.SHRINK,
866 StockEms.LARGE, 0)
867@@ -270,8 +260,8 @@
868 self.title.set_use_markup(True)
869 self.title.set_alignment(0.0, 0.5)
870 self.attach(self.title,
871- 1, 2, # left_attach, right_attach
872- 0, 1, # top_attach, bottom_attach
873+ 1, 2, # left_attach, right_attach
874+ 0, 1, # top_attach, bottom_attach
875 Gtk.AttachOptions.FILL,
876 Gtk.AttachOptions.FILL,
877 StockEms.MEDIUM, 0)
878@@ -280,17 +270,15 @@
879 self.suggestion = Suggestions()
880 self.suggestion.set_alignment(0.0, 0.5)
881 self.attach(self.suggestion,
882- 1, 2, # left_attach, right_attach
883- 1, 2, # top_attach, bottom_attach
884+ 1, 2, # left_attach, right_attach
885+ 1, 2, # top_attach, bottom_attach
886 Gtk.AttachOptions.FILL | Gtk.AttachOptions.EXPAND,
887 Gtk.AttachOptions.FILL,
888 StockEms.MEDIUM, StockEms.MEDIUM)
889
890 self.suggestion.connect("activate-link", self.on_link_activate)
891- return
892
893 def on_update_search_help(self, state):
894-
895 if not self.is_search_aid_required(state):
896 # catchall
897 self.pane.app_view.set_visible(True)
898@@ -311,17 +299,14 @@
899 suggestions_title = self.get_suggestion_title_text(suggestions)
900 self.suggestion.set_title(suggestions_title)
901 self.suggestion.set_suggestions(suggestions)
902- return
903
904 def on_reset(self):
905 self.suggestion.reset_all()
906- return
907
908 def on_link_activate(self, suggestions, link, uri):
909 markup = self.HEADER_MARKUP % _('Trying suggestion ...')
910 self.title.set_markup(markup)
911 GObject.timeout_add(750, self._handle_suggestion_action, uri)
912- return
913
914 def _handle_suggestion_action(self, uri):
915 self = self.pane
916@@ -339,4 +324,3 @@
917 # FIXME: add ability to remove categories restriction here
918 # True stops event propergation
919 return False
920-
921
922=== modified file 'softwarecenter/ui/gtk3/widgets/searchentry.py'
923--- softwarecenter/ui/gtk3/widgets/searchentry.py 2011-09-27 11:35:12 +0000
924+++ softwarecenter/ui/gtk3/widgets/searchentry.py 2012-03-08 22:37:21 +0000
925@@ -30,13 +30,12 @@
926 class SearchEntry(Gtk.Entry):
927
928 # FIMXE: we need "can-undo", "can-redo" signals
929- __gsignals__ = {'terms-changed':(GObject.SignalFlags.RUN_FIRST,
930- None,
931- (GObject.TYPE_STRING,))}
932+ __gsignals__ = {'terms-changed': (GObject.SignalFlags.RUN_FIRST,
933+ None,
934+ (GObject.TYPE_STRING,))}
935
936 SEARCH_TIMEOUT = 600
937
938-
939 def __init__(self, icon_theme=None):
940 """
941 Creates an enhanced IconEntry that triggers a timeout when typing
942@@ -52,7 +51,8 @@
943
944 self.connect("icon-press", self._on_icon_pressed)
945
946- self.set_icon_from_icon_name(Gtk.EntryIconPosition.PRIMARY, 'edit-find-symbolic')
947+ self.set_icon_from_icon_name(Gtk.EntryIconPosition.PRIMARY,
948+ 'edit-find-symbolic')
949 self.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, None)
950
951 # set sensible atk name
952@@ -90,7 +90,7 @@
953 text = self._undo_stack.pop()
954 self.set_text(text)
955 self.set_position(-1)
956-
957+
958 def redo(self):
959 if not self._redo_stack:
960 return
961@@ -106,7 +106,6 @@
962 def set_text(self, text, cursor_to_end=True):
963 Gtk.Entry.set_text(self, text)
964 self.emit("move-cursor", Gtk.MovementStep.BUFFER_ENDS, 1, False)
965- return
966
967 def set_text_with_no_signal(self, text):
968 """Clear and do not send a term-changed signal"""
969@@ -143,17 +142,21 @@
970 Show the clear icon whenever the field is not empty
971 """
972 if self.get_text() != "":
973- self.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, Gtk.STOCK_CLEAR)
974+ self.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY,
975+ Gtk.STOCK_CLEAR)
976 # reverse the icon if we are in an rtl environment
977 if self.get_direction() == Gtk.TextDirection.RTL:
978- pb = self.get_icon_pixbuf(Gtk.EntryIconPosition.SECONDARY).flip(True)
979+ pb = self.get_icon_pixbuf(
980+ Gtk.EntryIconPosition.SECONDARY).flip(True)
981 self.set_icon_from_pixbuf(Gtk.EntryIconPosition.SECONDARY, pb)
982 else:
983 self.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, None)
984
985+
986 def on_entry_changed(self, terms):
987 print(terms)
988
989+
990 def get_test_searchentry_window():
991 icons = Gtk.IconTheme.get_default()
992 entry = SearchEntry(icons)
993@@ -162,12 +165,11 @@
994 win = Gtk.Window()
995 win.connect("destroy", Gtk.main_quit)
996 win.add(entry)
997- win.set_size_request(400,400)
998+ win.set_size_request(400, 400)
999 win.show_all()
1000 win.entry = entry
1001 return win
1002-
1003+
1004 if __name__ == "__main__":
1005 win = get_test_searchentry_window()
1006 Gtk.main()
1007-
1008
1009=== modified file 'softwarecenter/ui/gtk3/widgets/sections.py'
1010--- softwarecenter/ui/gtk3/widgets/sections.py 2011-08-09 08:47:43 +0000
1011+++ softwarecenter/ui/gtk3/widgets/sections.py 2012-03-08 22:37:21 +0000
1012@@ -1,30 +1,32 @@
1013 #from gi.repository import Gtk
1014
1015-import cairo, os
1016+import cairo
1017+import os
1018
1019 from softwarecenter.enums import ViewPages
1020 from softwarecenter.paths import datadir
1021 from mkit import floats_from_string
1022
1023+
1024 class SectionPainter(object):
1025-
1026- # specify background overlay image and color mappings for available and installed view ids
1027- BACKGROUND_IMAGES = {ViewPages.AVAILABLE : cairo.ImageSurface.create_from_png(
1028- os.path.join(datadir, 'images/clouds.png')),
1029- ViewPages.INSTALLED : cairo.ImageSurface.create_from_png(
1030- os.path.join(datadir, 'images/arrows.png')),
1031+
1032+ # specify background overlay image and color mappings for available and
1033+ # installed view ids
1034+ BACKGROUND_IMAGES = {
1035+ ViewPages.AVAILABLE: cairo.ImageSurface.create_from_png(
1036+ os.path.join(datadir, 'images/clouds.png')),
1037+ ViewPages.INSTALLED: cairo.ImageSurface.create_from_png(
1038+ os.path.join(datadir, 'images/arrows.png')),
1039 }
1040- BACKGROUND_COLORS = {ViewPages.AVAILABLE : floats_from_string('#0769BC'),
1041- ViewPages.INSTALLED : floats_from_string('#aea79f'),
1042+ BACKGROUND_COLORS = {ViewPages.AVAILABLE: floats_from_string('#0769BC'),
1043+ ViewPages.INSTALLED: floats_from_string('#aea79f'),
1044 }
1045
1046 def __init__(self):
1047 self._view_id = None
1048- return
1049-
1050+
1051 def set_view_id(self, id):
1052 self._view_id = id
1053- return
1054
1055 def draw(self, widget, cr):
1056 # sky
1057@@ -43,7 +45,7 @@
1058 # cr.set_source_surface(s, a.x, 0)
1059
1060 #cr.paint()
1061- return
1062+ pass
1063
1064 def get_background_color(self):
1065 return self.BACKGROUND_COLORS[self._view_id]
1066
1067=== modified file 'softwarecenter/ui/gtk3/widgets/spinner.py'
1068--- softwarecenter/ui/gtk3/widgets/spinner.py 2012-03-01 11:32:37 +0000
1069+++ softwarecenter/ui/gtk3/widgets/spinner.py 2012-03-08 22:37:21 +0000
1070@@ -22,6 +22,7 @@
1071
1072 from gi.repository import Gtk, GObject
1073
1074+
1075 class SpinnerView(Gtk.Viewport):
1076 """
1077 a panel that contains a spinner preset to a standard size and centered
1078@@ -31,7 +32,7 @@
1079 Gtk.Viewport.__init__(self)
1080 self.spinner = Gtk.Spinner()
1081 self.spinner.set_size_request(48, 48)
1082-
1083+
1084 # use a table for the spinner (otherwise the spinner is massive!)
1085 spinner_table = Gtk.Table(3, 3, False)
1086 self.spinner_label = Gtk.Label()
1087@@ -39,39 +40,40 @@
1088 spinner_vbox = Gtk.VBox()
1089 spinner_vbox.pack_start(self.spinner, True, True, 0)
1090 spinner_vbox.pack_start(self.spinner_label, True, True, 10)
1091- spinner_table.attach(spinner_vbox, 1, 2, 1, 2, Gtk.AttachOptions.EXPAND, Gtk.AttachOptions.EXPAND)
1092-
1093+ spinner_table.attach(spinner_vbox, 1, 2, 1, 2,
1094+ Gtk.AttachOptions.EXPAND, Gtk.AttachOptions.EXPAND)
1095+
1096 #~ self.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(1.0, 1.0, 1.0))
1097 self.add(spinner_table)
1098 self.set_shadow_type(Gtk.ShadowType.NONE)
1099-
1100+
1101 def start_and_show(self):
1102 """
1103 start the spinner and show it
1104 """
1105 self.spinner.start()
1106 self.spinner.show()
1107-
1108+
1109 def stop_and_hide(self):
1110 """
1111 stop the spinner and hide it
1112 """
1113 self.spinner.stop()
1114 self.spinner.hide()
1115-
1116- def set_text(self, spinner_text = ""):
1117+
1118+ def set_text(self, spinner_text=""):
1119 """
1120- useful for adding/removing/changing the label text after the spinner instance has been created
1121+ useful for adding/removing/changing the label text after the spinner
1122+ instance has been created
1123 """
1124 self.spinner_label.set_markup('<big>%s</big>' % spinner_text)
1125
1126+
1127 class SpinnerNotebook(Gtk.Notebook):
1128 """ this provides a Gtk.Notebook that contains a content page
1129 and a spinner page.
1130 """
1131-
1132-
1133- (CONTENT_PAGE,
1134+ (CONTENT_PAGE,
1135 SPINNER_PAGE) = range(2)
1136
1137 def __init__(self, content, msg=""):
1138@@ -79,7 +81,7 @@
1139 self.spinner_view = SpinnerView(msg)
1140 # its critical to show() the spinner early as otherwise
1141 # gtk_notebook_set_active_page() will not switch to it
1142- self.spinner_view.show()
1143+ self.spinner_view.show()
1144 if not "SOFTWARE_CENTER_DEBUG_TABS" in os.environ:
1145 self.set_show_tabs(False)
1146 self.set_show_border(False)
1147@@ -106,15 +108,16 @@
1148 self.spinner_view.stop_and_hide()
1149 self.set_current_page(self.CONTENT_PAGE)
1150
1151-def get_test_spinner_window():
1152+
1153+def get_test_spinner_window():
1154 label = Gtk.Label("foo")
1155 spinner_notebook = SpinnerNotebook(label, "random msg")
1156-
1157+
1158 window = Gtk.Window()
1159 window.add(spinner_notebook)
1160 window.set_size_request(600, 500)
1161 window.set_position(Gtk.WindowPosition.CENTER)
1162- window.show_all()
1163+ window.show_all()
1164 window.connect('destroy', Gtk.main_quit)
1165 spinner_notebook.show_spinner("Loading for 1s ...")
1166 GObject.timeout_add_seconds(1, lambda: spinner_notebook.hide_spinner())
1167
1168=== modified file 'test/test_pep8.py'
1169--- test/test_pep8.py 2012-03-08 17:42:36 +0000
1170+++ test/test_pep8.py 2012-03-08 22:37:21 +0000
1171@@ -16,8 +16,7 @@
1172 packages = [softwarecenter.ui.qml,
1173 softwarecenter.ui.gtk3.widgets,
1174 softwarecenter.db.pkginfo_impl]
1175- exclude = ['spinner.py', 'sections.py', 'searchentry.py', 'searchaid.py',
1176- 'reviews.py', 'recommendations.py', 'oneconfviews.py', 'menubutton.py',
1177+ exclude = ['recommendations.py', 'oneconfviews.py', 'menubutton.py',
1178 'labels.py', 'imagedialog.py', 'exhibits.py', 'description.py',
1179 'containers.py', 'cellrenderers.py', 'buttons.py', 'backforward.py',
1180 'apptreeview.py', 'animatedimage.py', 'actionbar.py']