Merge lp:~elachuni/software-center/pep8-test-part4 into lp:software-center
- pep8-test-part4
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
software-store-developers | Pending | ||
Review via email: mp+96676@code.launchpad.net |
Commit message
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'] |