Merge lp:~roignac/software-center/bug-630731-free-software-view into lp:software-center

Proposed by Vadim Rutkovsky
Status: Rejected
Rejected by: dobey
Proposed branch: lp:~roignac/software-center/bug-630731-free-software-view
Merge into: lp:software-center
Diff against target: 541 lines (+150/-46)
8 files modified
data/ui/gtk/SoftwareCenter.ui (+10/-0)
data/ui/gtk3/SoftwareCenter.ui (+12/-0)
po/software-center.pot (+51/-39)
softwarecenter/ui/gtk/app.py (+24/-0)
softwarecenter/ui/gtk/appview.py (+16/-5)
softwarecenter/ui/gtk3/app.py (+24/-0)
softwarecenter/ui/gtk3/views/appview.py (+11/-0)
softwarecenter/version.py (+2/-2)
To merge this branch: bzr merge lp:~roignac/software-center/bug-630731-free-software-view
Reviewer Review Type Date Requested Status
Matthew Paul Thomas Needs Fixing
Michael Vogt Pending
Review via email: mp+68953@code.launchpad.net

Description of the change

This changes adds a Free Software view. The packages, which have non-'Open Source' license (including 'None') are filtered

To post a comment you must log in.
1980. By Vadim Rutkovsky

Updated gtk3 files

1981. By Vadim Rutkovsky

Another fix for gtk3

Revision history for this message
Matthew Paul Thomas (mpt) wrote :

Two typos: "counterd" and "UNRELAED".

There are larger issues with the design, but I'll address those in the bug report.

review: Needs Fixing
Revision history for this message
dobey (dobey) wrote :

Could you please check http://www.canonical.com/contributors and sign the
Canonical's contributor agreement ? That would be great as this is a requirement for branches to get merged into the software-center.

Thanks.

Unmerged revisions

1981. By Vadim Rutkovsky

Another fix for gtk3

1980. By Vadim Rutkovsky

Updated gtk3 files

1979. By Vadim Rutkovsky

Adding a new view - Free Software Only

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'data/ui/gtk/SoftwareCenter.ui'
2--- data/ui/gtk/SoftwareCenter.ui 2011-07-05 07:59:13 +0000
3+++ data/ui/gtk/SoftwareCenter.ui 2011-07-23 14:41:45 +0000
4@@ -242,6 +242,16 @@
5 </object>
6 </child>
7 <child>
8+ <object class="GtkRadioMenuItem" id="menuitem_view_free_software_only">
9+ <property name="visible">True</property>
10+ <property name="label" translatable="yes">_Free Software</property>
11+ <property name="use_underline">True</property>
12+ <property name="draw_as_radio">True</property>
13+ <property name="group">menuitem_view_supported_only</property>
14+ <signal name="activate" handler="on_menuitem_view_free_software_only_activate"/>
15+ </object>
16+ </child>
17+ <child>
18 <object class="GtkRadioMenuItem" id="menuitem_view_supported_only">
19 <property name="visible">True</property>
20 <property name="label" translatable="yes">_Canonical-Maintained Software</property>
21
22=== modified file 'data/ui/gtk3/SoftwareCenter.ui'
23--- data/ui/gtk3/SoftwareCenter.ui 2011-07-05 09:53:26 +0000
24+++ data/ui/gtk3/SoftwareCenter.ui 2011-07-23 14:41:45 +0000
25@@ -394,6 +394,18 @@
26 </object>
27 </child>
28 <child>
29+ <object class="GtkRadioMenuItem" id="menuitem_view_free_software_only">
30+ <property name="visible">True</property>
31+ <property name="can_focus">False</property>
32+ <property name="use_action_appearance">False</property>
33+ <property name="label" translatable="yes">_Free Software</property>
34+ <property name="use_underline">True</property>
35+ <property name="draw_as_radio">True</property>
36+ <property name="group">menuitem_view_supported_only</property>
37+ <signal name="activate" handler="on_menuitem_view_free_software_only_activate" swapped="no"/>
38+ </object>
39+ </child>
40+ <child>
41 <object class="GtkRadioMenuItem" id="menuitem_view_supported_only">
42 <property name="visible">True</property>
43 <property name="can_focus">False</property>
44
45=== modified file 'po/software-center.pot'
46--- po/software-center.pot 2011-07-21 15:28:53 +0000
47+++ po/software-center.pot 2011-07-23 14:41:45 +0000
48@@ -8,7 +8,7 @@
49 msgstr ""
50 "Project-Id-Version: PACKAGE VERSION\n"
51 "Report-Msgid-Bugs-To: \n"
52-"POT-Creation-Date: 2011-07-21 17:04+0200\n"
53+"POT-Creation-Date: 2011-07-23 15:23+0300\n"
54 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
55 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
56 "Language-Team: LANGUAGE <LL@li.org>\n"
57@@ -199,7 +199,7 @@
58 #. located directly beneath a label asking 'Why is this review inappropriate?'.
59 #. This text refers to a possible reason for why the corresponding
60 #. review is being flagged as inappropriate.
61-#: ../utils/submit_review.py:1201 ../softwarecenter/backend/channel.py:424
62+#: ../utils/submit_review.py:1201 ../softwarecenter/backend/channel.py:431
63 msgid "Other"
64 msgstr ""
65
66@@ -278,34 +278,38 @@
67 msgstr ""
68
69 #: ../data/ui/gtk/SoftwareCenter.ui.h:12
70+msgid "_Free Software"
71+msgstr ""
72+
73+#: ../data/ui/gtk/SoftwareCenter.ui.h:13
74 msgid "_Go Back"
75 msgstr ""
76
77-#: ../data/ui/gtk/SoftwareCenter.ui.h:13
78+#: ../data/ui/gtk/SoftwareCenter.ui.h:14
79 msgid "_Go Forward"
80 msgstr ""
81
82-#: ../data/ui/gtk/SoftwareCenter.ui.h:14
83+#: ../data/ui/gtk/SoftwareCenter.ui.h:15
84 msgid "_Help"
85 msgstr ""
86
87-#: ../data/ui/gtk/SoftwareCenter.ui.h:15
88+#: ../data/ui/gtk/SoftwareCenter.ui.h:16
89 msgid "_Install"
90 msgstr ""
91
92-#: ../data/ui/gtk/SoftwareCenter.ui.h:16
93+#: ../data/ui/gtk/SoftwareCenter.ui.h:17
94 msgid "_Software Sources…"
95 msgstr ""
96
97-#: ../data/ui/gtk/SoftwareCenter.ui.h:17
98+#: ../data/ui/gtk/SoftwareCenter.ui.h:18
99 msgid "_View"
100 msgstr ""
101
102-#: ../data/ui/gtk/SoftwareCenter.ui.h:18
103+#: ../data/ui/gtk/SoftwareCenter.ui.h:19
104 msgid "translator-credits"
105 msgstr ""
106
107-#: ../data/ui/gtk/SoftwareCenter.ui.h:19
108+#: ../data/ui/gtk/SoftwareCenter.ui.h:20
109 msgid "©2009-2011 Canonical"
110 msgstr ""
111
112@@ -447,7 +451,7 @@
113 #. aquired for purchase in utils/submit_review.py
114 #. the other one in softwarecenter/app.py
115 #: ../data/ubuntu-software-center.desktop.in.h:3
116-#: ../softwarecenter/ui/gtk/app.py:756 ../softwarecenter/distro/Ubuntu.py:58
117+#: ../softwarecenter/ui/gtk/app.py:760 ../softwarecenter/distro/Ubuntu.py:58
118 msgid "Ubuntu Software Center"
119 msgstr ""
120
121@@ -456,11 +460,11 @@
122 "Lets you choose from thousands of applications available for your system "
123 msgstr ""
124
125-#: ../data/featured.menu.in.h:1 ../softwarecenter/ui/gtk/catview_gtk.py:426
126+#: ../data/featured.menu.in.h:1 ../softwarecenter/ui/gtk/catview_gtk.py:450
127 msgid "Featured"
128 msgstr ""
129
130-#: ../data/new.menu.in.h:1 ../softwarecenter/ui/gtk/catview_gtk.py:462
131+#: ../data/new.menu.in.h:1 ../softwarecenter/ui/gtk/catview_gtk.py:486
132 msgid "What’s New"
133 msgstr ""
134
135@@ -704,13 +708,13 @@
136 msgid "Please re-install the 'software-center' package."
137 msgstr ""
138
139-#: ../softwarecenter/ui/gtk/app.py:757
140+#: ../softwarecenter/ui/gtk/app.py:761
141 msgid "Ubuntu Software Center Store"
142 msgstr ""
143
144 #. display a "Loading" spinner until we actually display the
145 #. details view for the deb file
146-#: ../softwarecenter/ui/gtk/app.py:1159
147+#: ../softwarecenter/ui/gtk/app.py:1183
148 #: ../softwarecenter/ui/gtk/availablepane.py:116
149 msgid "Loading"
150 msgstr ""
151@@ -724,26 +728,34 @@
152 msgid "_Ignore and install"
153 msgstr ""
154
155-#: ../softwarecenter/backend/channel.py:414
156+#: ../softwarecenter/backend/channel.py:421
157 msgid "Canonical Partners"
158 msgstr ""
159
160-#: ../softwarecenter/backend/channel.py:416
161-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1320
162-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1326
163-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1330
164-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1748
165+#: ../softwarecenter/backend/channel.py:423
166+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1322
167+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1328
168+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1332
169+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1750
170 msgid "Unknown"
171 msgstr ""
172
173-#: ../softwarecenter/backend/channel.py:420
174+#: ../softwarecenter/backend/channel.py:427
175 msgid "For Purchase"
176 msgstr ""
177
178-#: ../softwarecenter/backend/channel.py:422
179+#: ../softwarecenter/backend/channel.py:429
180 msgid "Independent"
181 msgstr ""
182
183+#: ../softwarecenter/backend/channel.py:508
184+msgid "All Software"
185+msgstr ""
186+
187+#: ../softwarecenter/backend/channel.py:514
188+msgid "All Installed"
189+msgstr ""
190+
191 #: ../softwarecenter/db/application.py:198
192 #: ../softwarecenter/db/application.py:298
193 #: ../softwarecenter/db/application.py:425
194@@ -792,7 +804,7 @@
195 #. provide a list of words in your language that people are likely
196 #. to include in a search but that should normally be ignored in
197 #. the search.
198-#: ../softwarecenter/db/database.py:104
199+#: ../softwarecenter/db/database.py:118
200 msgid "app;application;package;program;programme;suite;tool"
201 msgstr ""
202
203@@ -1197,52 +1209,52 @@
204 msgstr ""
205
206 #. Update total size label
207-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1347
208+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1349
209 msgid "Calculating..."
210 msgstr ""
211
212-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1419
213+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1421
214 msgid "This program is run from a terminal: "
215 msgstr ""
216
217-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1420
218+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1422
219 msgid "These programs are run from a terminal: "
220 msgstr ""
221
222 #. display launcher location
223-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1442
224+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1444
225 msgid "Find it in the menu: "
226 msgstr ""
227
228-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1731
229+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1733
230 #, python-format
231 msgid "%sB to download, "
232 msgstr ""
233
234-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1734
235+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1736
236 #, python-format
237 msgid "%sB when installed"
238 msgstr ""
239
240 #. FIXME: this is not really a good indication of the size on disk
241-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1742
242+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1744
243 #, python-format
244 msgid "%sB on disk"
245 msgstr ""
246
247-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1745
248+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1747
249 #, python-format
250 msgid "%sB to be freed"
251 msgstr ""
252
253-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1770
254+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1772
255 #, python-format
256 msgid "Used: one time"
257 msgid_plural "Used: %(amount)s times"
258 msgstr[0] ""
259 msgstr[1] ""
260
261-#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1774
262+#: ../softwarecenter/ui/gtk/appdetailsview_gtk.py:1776
263 msgid "Used: over 100 times"
264 msgstr ""
265
266@@ -1385,13 +1397,13 @@
267 msgstr ""
268
269 #: ../softwarecenter/ui/gtk/catview_gtk.py:100
270-#: ../softwarecenter/ui/gtk/catview_gtk.py:524
271+#: ../softwarecenter/ui/gtk/catview_gtk.py:552
272 #: ../softwarecenter/ui/gtk/catview_webkit.py:62
273 #: ../softwarecenter/ui/gtk/catview_webkit.py:72
274 msgid "Departments"
275 msgstr ""
276
277-#: ../softwarecenter/ui/gtk/catview_gtk.py:305
278+#: ../softwarecenter/ui/gtk/catview_gtk.py:329
279 #, python-format
280 msgid "Welcome back! There is <a href=\"\">%i new recommendation</a> for you."
281 msgid_plural ""
282@@ -1399,18 +1411,18 @@
283 msgstr[0] ""
284 msgstr[1] ""
285
286-#: ../softwarecenter/ui/gtk/catview_gtk.py:316
287+#: ../softwarecenter/ui/gtk/catview_gtk.py:340
288 msgid "Recommendations"
289 msgstr ""
290
291-#: ../softwarecenter/ui/gtk/catview_gtk.py:385
292+#: ../softwarecenter/ui/gtk/catview_gtk.py:409
293 msgid "Top Rated"
294 msgstr ""
295
296 #. append an additional button to show all of the items in the category
297 #. an AppStore
298-#: ../softwarecenter/ui/gtk/catview_gtk.py:614
299-#: ../softwarecenter/ui/gtk/catview_gtk.py:616
300+#: ../softwarecenter/ui/gtk/catview_gtk.py:642
301+#: ../softwarecenter/ui/gtk/catview_gtk.py:644
302 #: ../softwarecenter/ui/gtk/widgets/carousel.py:72
303 msgid "All"
304 msgstr ""
305
306=== modified file 'softwarecenter/ui/gtk/app.py'
307--- softwarecenter/ui/gtk/app.py 2011-07-20 21:31:07 +0000
308+++ softwarecenter/ui/gtk/app.py 2011-07-23 14:41:45 +0000
309@@ -522,14 +522,18 @@
310 # set menu sensitve
311 self.menuitem_view_supported_only.set_sensitive(self.active_pane != None)
312 self.menuitem_view_all.set_sensitive(self.active_pane != None)
313+ self.menuitem_view_free_software_only.set_sensitive(self.active_pane != None)
314 # set menu state
315 if self.active_pane:
316 self._block_menuitem_view = True
317 if not self.active_pane.apps_filter:
318 self.menuitem_view_all.set_sensitive(False)
319+ self.menuitem_view_free_software_only.set_sensitive(False)
320 self.menuitem_view_supported_only.set_sensitive(False)
321 elif self.active_pane.apps_filter.get_supported_only():
322 self.menuitem_view_supported_only.activate()
323+ elif self.active_pane.apps_filter.get_free_software_only():
324+ self.menuitem_view_free_software_only.activate()
325 else:
326 self.menuitem_view_all.activate()
327 self._block_menuitem_view = False
328@@ -938,6 +942,26 @@
329 self.available_pane.subcategories_view.current_category,
330 len(self.available_pane.app_view.get_model()))
331
332+ def on_menuitem_view_free_software_only_activate(self, widget):
333+ if (not self._block_menuitem_view and
334+ self.active_pane.apps_filter and
335+ not self.active_pane.apps_filter.get_free_software_only()):
336+ self.active_pane.apps_filter.set_free_software_only(True)
337+ self.active_pane.refresh_apps()
338+
339+ # update recommended widget counterd
340+ if self.available_pane and self.available_pane.cat_view:
341+ self.available_pane.cat_view._append_recommendations()
342+
343+ # update subcategory view
344+ if (self.available_pane and
345+ self.available_pane == self.active_pane and
346+ self.available_pane.subcategories_view and
347+ self.available_pane.subcategories_view.current_category):
348+ self.available_pane.subcategories_view._append_subcat_departments(
349+ self.available_pane.subcategories_view.current_category,
350+ len(self.available_pane.app_view.get_model()))
351+
352 def on_menuitem_view_supported_only_activate(self, widget):
353 if (not self._block_menuitem_view and
354 self.active_pane.apps_filter and
355
356=== modified file 'softwarecenter/ui/gtk/appview.py'
357--- softwarecenter/ui/gtk/appview.py 2011-07-15 14:24:08 +0000
358+++ softwarecenter/ui/gtk/appview.py 2011-07-23 14:41:45 +0000
359@@ -1113,6 +1113,7 @@
360 self.lowlevel_cache = None
361 self.available_only = False
362 self.supported_only = False
363+ self.free_software_only = False
364 self.installed_only = False
365 self.not_installed_only = False
366 @property
367@@ -1120,18 +1121,23 @@
368 """ True if the filter is in a state that it should be part of a query """
369 return (self.available_only or
370 self.supported_only or
371- self.installed_only or
372+ self.installed_only or
373+ self.free_software_only or
374 self.not_installed_only)
375 def set_available_only(self, v):
376 self.available_only = v
377 def set_supported_only(self, v):
378 self.supported_only = v
379+ def set_free_software_only(self, v):
380+ self.free_software_only = v
381 def set_installed_only(self, v):
382 self.installed_only = v
383 def set_not_installed_only(self, v):
384 self.not_installed_only = v
385 def get_supported_only(self):
386 return self.supported_only
387+ def get_free_software_only(self):
388+ return self.free_software_only
389 def __eq__(self, other):
390 if self is None and other is not None:
391 return True
392@@ -1139,16 +1145,17 @@
393 return False
394 return (self.installed_only == other.installed_only and
395 self.not_installed_only == other.not_installed_only and
396- self.supported_only == other.supported_only)
397+ self.supported_only == other.supported_only and
398+ self.free_software_only == other.free_software_only)
399 def __ne__(self, other):
400 return not self.__eq__(other)
401 def __call__(self, doc):
402 """return True if the package should be displayed"""
403 # get pkgname from document
404 pkgname = self.db.get_pkgname(doc)
405- #LOG.debug(
406- # "filter: supported_only: %s installed_only: %s '%s'" % (
407- # self.supported_only, self.installed_only, pkgname))
408+ #LOG.warn(
409+ # "filter: supported_only: %s installed_only: %s free only %s '%s'" % (
410+ # self.supported_only, self.installed_only, self.free_software_only, pkgname))
411 if self.available_only:
412 # an item is considered available if it is either found
413 # in the cache or is available for purchase
414@@ -1169,6 +1176,10 @@
415 if (pkgname in self.cache and
416 self.cache[pkgname].is_installed):
417 return False
418+ if self.free_software_only:
419+ component = doc.get_value(XapianValues.ARCHIVE_SECTION)
420+ if self.distro.get_license_text(component) != "Open source":
421+ return False
422 if self.supported_only:
423 if not self.distro.is_supported(self.cache, doc, pkgname):
424 return False
425
426=== modified file 'softwarecenter/ui/gtk3/app.py'
427--- softwarecenter/ui/gtk3/app.py 2011-07-20 12:05:57 +0000
428+++ softwarecenter/ui/gtk3/app.py 2011-07-23 14:41:45 +0000
429@@ -579,14 +579,18 @@
430 # set menu sensitve
431 self.menuitem_view_supported_only.set_sensitive(self.active_pane != None)
432 self.menuitem_view_all.set_sensitive(self.active_pane != None)
433+ self.menuitem_view_free_software_only.set_sensitive(self.active_pane != None)
434 # set menu state
435 if self.active_pane:
436 self._block_menuitem_view = True
437 if not self.active_pane.apps_filter:
438 self.menuitem_view_all.set_sensitive(False)
439+ self.menuitem_view_free_software_only.set_sensitive(False)
440 self.menuitem_view_supported_only.set_sensitive(False)
441 elif self.active_pane.apps_filter.get_supported_only():
442 self.menuitem_view_supported_only.activate()
443+ elif self.active_pane.apps_filter.get_free_software_only():
444+ self.menuitem_view_free_software_only.activate()
445 else:
446 self.menuitem_view_all.activate()
447 self._block_menuitem_view = False
448@@ -1000,6 +1004,26 @@
449 self.available_pane.subcategories_view.current_category,
450 len(self.available_pane.app_view.get_model()))
451
452+ def on_menuitem_view_free_software_only_activate(self, widget):
453+ if (not self._block_menuitem_view and
454+ self.active_pane.state and
455+ not self.active_pane.state.filter.get_free_software_only()):
456+ self.active_pane.state.filter.set_free_software_only(True)
457+ self.active_pane.refresh_apps()
458+
459+ # update recommended widget counter
460+ if self.available_pane and self.available_pane.cat_view:
461+ self.available_pane.cat_view._append_recommendations()
462+
463+ # update subcategory view
464+ if (self.available_pane and
465+ self.available_pane == self.active_pane and
466+ self.available_pane.subcategories_view and
467+ self.available_pane.subcategories_view.current_category):
468+ self.available_pane.subcategories_view._append_subcat_departments(
469+ self.available_pane.subcategories_view.current_category,
470+ len(self.available_pane.app_view.get_model()))
471+
472 def on_menuitem_view_supported_only_activate(self, widget):
473 if (not self._block_menuitem_view and
474 self.active_pane.state and
475
476=== modified file 'softwarecenter/ui/gtk3/views/appview.py'
477--- softwarecenter/ui/gtk3/views/appview.py 2011-07-20 12:05:57 +0000
478+++ softwarecenter/ui/gtk3/views/appview.py 2011-07-23 14:41:45 +0000
479@@ -563,6 +563,7 @@
480 self.db = db
481 self.cache = cache
482 self.available_only = False
483+ self.free_software_only = False
484 self.supported_only = False
485 self.installed_only = False
486 self.not_installed_only = False
487@@ -571,18 +572,23 @@
488 """ True if the filter is in a state that it should be part of a query """
489 return (self.available_only or
490 self.supported_only or
491+ self.free_software_only or
492 self.installed_only or
493 self.not_installed_only)
494 def set_available_only(self, v):
495 self.available_only = v
496 def set_supported_only(self, v):
497 self.supported_only = v
498+ def set_free_software_only(self, v):
499+ self.free_software_only = v
500 def set_installed_only(self, v):
501 self.installed_only = v
502 def set_not_installed_only(self, v):
503 self.not_installed_only = v
504 def get_supported_only(self):
505 return self.supported_only
506+ def get_free_software_only(self):
507+ return self.free_software_only
508 def __eq__(self, other):
509 if self is None and other is not None:
510 return True
511@@ -590,6 +596,7 @@
512 return False
513 return (self.installed_only == other.installed_only and
514 self.not_installed_only == other.not_installed_only and
515+ self.free_software_only == other.free_software_only and
516 self.supported_only == other.supported_only)
517 def __ne__(self, other):
518 return not self.__eq__(other)
519@@ -616,6 +623,10 @@
520 if (pkgname in self.cache and
521 self.cache[pkgname].is_installed):
522 return False
523+ if self.free_software_only:
524+ component = doc.get_value(XapianValues.ARCHIVE_SECTION)
525+ if self.distro.get_license_text(component) != "Open source":
526+ return False
527 if self.supported_only:
528 if not self.distro.is_supported(self.cache, doc, pkgname):
529 return False
530
531=== modified file 'softwarecenter/version.py'
532--- softwarecenter/version.py 2011-07-21 15:28:53 +0000
533+++ softwarecenter/version.py 2011-07-23 14:41:45 +0000
534@@ -1,5 +1,5 @@
535
536-VERSION='4.1.10'
537-CODENAME='UNRELEASED'
538+VERSION='4.1.11'
539+CODENAME='UNRELAED'
540 DISTRO='Ubuntu'
541 RELEASE='11.10'