33
from softwarecenter.netstatus import NetState, get_network_state, get_network_watcher
33
from softwarecenter.netstatus import NetState, get_network_state, network_state_is_connected, get_network_watcher
35
35
from PIL import Image
36
36
from gettext import gettext as _
1114
1114
r.body.set_size_request(w, -1)
1117
def add_embedded_message(self, m):
1118
self.vbox.pack_start(m)
1117
1120
def add_review(self, review):
1118
1121
self.reviews.append(review)
1119
1122
self._update = True
1304
1307
self.complain = mkit.VLinkButton('<small>%s</small>' % _('Inappropriate?'))
1305
1308
self.complain.set_subdued(True)
1306
1309
self.complain.set_underline(True)
1310
self.complain.set_sensitive(network_state_is_connected())
1307
1311
self.footer.pack_end(self.complain, False)
1308
1312
self.complain.connect('clicked', self._on_report_abuse_clicked)
1532
1536
self.loaded = True
1539
# review display releated stuff
1535
1540
def _on_net_state_changed(self, watcher, state):
1536
1541
if state == NetState.NM_STATE_DISCONNECTED:
1537
self._update_reviews_inactive_network()
1542
self._check_for_reviews()
1538
1543
elif state == NetState.NM_STATE_CONNECTED:
1539
gobject.timeout_add(500, self._update_reviews_active_network)
1544
gobject.timeout_add(500, self._check_for_reviews)
1542
1547
def _check_for_reviews(self):
1569
1574
# clear out the old ones ...
1570
1575
self.reviews.clear()
1577
# add network message if needed
1578
if not network_state_is_connected():
1579
s = '<big><b>%s</b></big>\n%s' % (
1580
_('No Network Connection'),
1581
_('Only cached reviews can be displayed'))
1582
m = EmbeddedMessage(s, 'network-offline')
1583
self.reviews.add_embedded_message(m)
1571
1585
# then add the new ones ...
1572
1586
for review in reviews:
1573
1587
self.reviews.add_review(review)
2002
2016
def _update_reviews(self, app_details):
2003
2017
self.reviews.clear()
2005
def _update_reviews_inactive_network(self):
2006
if self.reviews.get_reviews():
2008
for r in self.reviews.vbox:
2009
if isinstance(r, EmbeddedMessage):
2011
elif hasattr(r, 'complain'):
2012
r.complain.set_sensitive(False)
2014
s = '<big><b>%s</b></big>\n%s' % ('No Network Connection',
2015
'Only cached reviews can be displayed')
2016
m = EmbeddedMessage(s, 'network-offline')
2018
self.reviews.vbox.pack_start(m)
2019
self.reviews.vbox.reorder_child(m, 0)
2021
self.reviews.clear()
2022
s = '<big><b>%s</b></big>\n%s' % ('No Network Connection',
2023
'Unable to download application reviews')
2024
m = EmbeddedMessage(s, 'network-offline')
2025
self.reviews.vbox.pack_start(m)
2027
self.reviews.new_review.set_sensitive(False)
2030
def _update_reviews_active_network(self):
2031
for r in self.reviews.vbox:
2032
if isinstance(r, (EmbeddedMessage, NoReviewYet)):
2034
if hasattr(r, 'complain'):
2035
r.complain.set_sensitive(True)
2037
if not self.reviews.get_reviews():
2038
self._check_for_reviews()
2040
self.reviews.new_review.set_sensitive(True)
2018
self._check_for_reviews()
2043
2021
def _update_all(self, app_details):
2060
2038
self._update_app_screenshot(app_details)
2061
2039
self._update_pkg_info_table(app_details)
2062
2040
self._update_addons(app_details)
2063
# self._update_reviews(app_details)
2041
self._update_reviews(app_details)
2065
2043
# depending on pkg install state set action labels
2066
2044
self.pkg_statusbar.configure(app_details, app_details.pkg_state)
2071
2049
# async query zeitgeist and rnr
2072
2050
self.get_usage_counter()
2074
self.reviews.clear()
2075
if get_network_state() == NetState.NM_STATE_DISCONNECTED:
2076
self._update_reviews_inactive_network()
2078
self._update_reviews_active_network()
2081
2052
def _update_minimal(self, app_details):
2082
2053
pkg_ambiguous_error = app_details.pkg_state in (PKG_STATE_NOT_FOUND, PKG_STATE_NEEDS_SOURCE)