class RecommendationsPanelCategory(RecommendationsPanel): """ Panel for use in the category view that displays recommended apps for the given category """ __gsignals__ = {"more-button-clicked": (GObject.SignalFlags.RUN_LAST, None, (GObject.TYPE_PYOBJECT,))} def __init__(self, db, properties_helper, subcategory): RecommendationsPanel.__init__(self) self.db = db self.properties_helper = properties_helper self.subcategory = subcategory if self.subcategory: self.set_header_label( GLib.markup_escape_text(utf8(_("Recommended For You in %s")) % utf8(self.subcategory.name)) ) self.recommended_for_you_content = None if self.recommender_agent.is_opted_in(): self._update_recommended_for_you_content() else: self.hide() def _update_recommended_for_you_content(self): # destroy the old content to ensure we don't see it twice if self.recommended_for_you_content: self.recommended_for_you_content.destroy() # add the new stuff self.recommended_for_you_content = TileGrid() self.recommended_for_you_content.connect("application-activated", self._on_application_activated) self.add(self.recommended_for_you_content) self.spinner_notebook.show_spinner(_(u"Receiving recommendations…")) # get the recommendations from the recommender agent self.recommended_for_you_cat = RecommendedForYouCategory(self.db, subcategory=self.subcategory) self.recommended_for_you_cat.connect("needs-refresh", self._on_recommended_for_you_agent_refresh) self.recommended_for_you_cat.connect("recommender-agent-error", self._on_recommender_agent_error) def _on_recommended_for_you_agent_refresh(self, cat): self.header_implements_more_button() self.more.connect("clicked", self._on_more_button_clicked, self.recommended_for_you_cat) docs = cat.get_documents(self.db) # display the recommendations if len(docs) > 0: self.recommended_for_you_content.add_tiles( self.properties_helper, docs, LOBBY_RECOMMENDATIONS_CAROUSEL_LIMIT ) self.recommended_for_you_content.show_all() self.spinner_notebook.hide_spinner() self.header.queue_draw() self.show_all() else: # hide the panel if we have no recommendations to show self.hide() def _on_more_button_clicked(self, btn, category): self.emit("more-button-clicked", category)
class RecommendationsPanelDetails(RecommendationsPanel): """ Panel for use in the details view to display recommendations for a given application """ def __init__(self, db, properties_helper): RecommendationsPanel.__init__(self) self.db = db self.properties_helper = properties_helper self.set_header_label(_(u"People Also Installed")) self.app_recommendations_content = TileGrid() self.app_recommendations_content.connect( "application-activated", self._on_application_activated) self.add(self.app_recommendations_content) def set_pkgname(self, pkgname): self.pkgname = pkgname self._update_app_recommendations_content() def _update_app_recommendations_content(self): if self.app_recommendations_content: self.app_recommendations_content.remove_all() self.spinner_notebook.show_spinner(_(u"Receiving recommendations…")) # get the recommendations from the recommender agent self.app_recommendations_cat = AppRecommendationsCategory( self.db, self.pkgname) self.app_recommendations_cat.connect( 'needs-refresh', self._on_app_recommendations_agent_refresh) self.app_recommendations_cat.connect('recommender-agent-error', self._on_recommender_agent_error) def _on_app_recommendations_agent_refresh(self, cat): docs = cat.get_documents(self.db) # display the recommendations if len(docs) > 0: self.app_recommendations_content.add_tiles( self.properties_helper, docs, DETAILS_RECOMMENDATIONS_CAROUSEL_LIMIT) self.show_all() self.spinner_notebook.hide_spinner() else: self.hide()
class RecommendationsPanelDetails(RecommendationsPanel): """ Panel for use in the details view to display recommendations for a given application """ def __init__(self, db, properties_helper): RecommendationsPanel.__init__(self) self.db = db self.properties_helper = properties_helper self.set_header_label(_(u"People Also Installed")) self.app_recommendations_content = TileGrid() self.app_recommendations_content.connect( "application-activated", self._on_application_activated) self.add(self.app_recommendations_content) def set_pkgname(self, pkgname): self.pkgname = pkgname self._update_app_recommendations_content() def _update_app_recommendations_content(self): if self.app_recommendations_content: self.app_recommendations_content.remove_all() self.spinner_notebook.show_spinner(_(u"Receiving recommendations…")) # get the recommendations from the recommender agent self.app_recommendations_cat = AppRecommendationsCategory( self.db, self.pkgname) self.app_recommendations_cat.connect( 'needs-refresh', self._on_app_recommendations_agent_refresh) self.app_recommendations_cat.connect('recommender-agent-error', self._on_recommender_agent_error) def _on_app_recommendations_agent_refresh(self, cat): docs = cat.get_documents(self.db) # display the recommendations if len(docs) > 0: self.app_recommendations_content.add_tiles( self.properties_helper, docs, DETAILS_RECOMMENDATIONS_CAROUSEL_LIMIT) self.show_all() self.spinner_notebook.hide_spinner() else: self.hide()
class RecommendationsPanelCategory(RecommendationsPanel): """ Panel for use in the category view that displays recommended apps for the given category """ __gsignals__ = { "more-button-clicked": (GObject.SignalFlags.RUN_LAST, None, (GObject.TYPE_PYOBJECT, ), ), } def __init__(self, db, properties_helper, subcategory): RecommendationsPanel.__init__(self) self.db = db self.properties_helper = properties_helper self.subcategory = subcategory if self.subcategory: self.set_header_label(GLib.markup_escape_text(utf8( _("Recommended For You in %s")) % utf8(self.subcategory.name))) self.recommended_for_you_content = None if self.recommender_agent.is_opted_in(): self._update_recommended_for_you_content() else: self.hide() def _update_recommended_for_you_content(self): # destroy the old content to ensure we don't see it twice if self.recommended_for_you_content: self.recommended_for_you_content.destroy() # add the new stuff self.recommended_for_you_content = TileGrid() self.recommended_for_you_content.connect( "application-activated", self._on_application_activated) self.add(self.recommended_for_you_content) self.spinner_notebook.show_spinner(_(u"Receiving recommendations…")) # get the recommendations from the recommender agent self.recommended_for_you_cat = RecommendedForYouCategory( self.db, subcategory=self.subcategory) self.recommended_for_you_cat.connect( 'needs-refresh', self._on_recommended_for_you_agent_refresh) self.recommended_for_you_cat.connect('recommender-agent-error', self._on_recommender_agent_error) def _on_recommended_for_you_agent_refresh(self, cat): self.header_implements_more_button() self.more.connect("clicked", self._on_more_button_clicked, self.recommended_for_you_cat) docs = cat.get_documents(self.db) # display the recommendations if len(docs) > 0: self.recommended_for_you_content.add_tiles( self.properties_helper, docs, LOBBY_RECOMMENDATIONS_CAROUSEL_LIMIT) self.recommended_for_you_content.show_all() self.spinner_notebook.hide_spinner() self.header.queue_draw() self.show_all() else: # hide the panel if we have no recommendations to show self.hide() def _on_more_button_clicked(self, btn, category): self.emit("more-button-clicked", category)