~kiwinote/+junk/action_bar

« back to all changes in this revision

Viewing changes to softwarecenter/view/appdetailsview_gtk.py

  • Committer: Kiwinote
  • Date: 2011-02-14 19:28:31 UTC
  • mfrom: (1422.2.79 software-center)
  • Revision ID: kiwinote@gmail.com-20110214192831-5yvy6tekkqqht48v
mergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
import sys
31
31
import cairo
32
32
 
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
34
34
 
35
35
from PIL import Image
36
36
from gettext import gettext as _
1114
1114
            r.body.set_size_request(w, -1)
1115
1115
        return
1116
1116
 
 
1117
    def add_embedded_message(self, m):
 
1118
        self.vbox.pack_start(m)
 
1119
 
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)
1309
1313
 
1532
1536
        self.loaded = True
1533
1537
        return
1534
1538
 
 
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)
1540
1545
        return
1541
1546
 
1542
1547
    def _check_for_reviews(self):
1568
1573
            return
1569
1574
        # clear out the old ones ...
1570
1575
        self.reviews.clear()
 
1576
 
 
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)
 
1584
            
1571
1585
        # then add the new ones ...
1572
1586
        for review in reviews:
1573
1587
            self.reviews.add_review(review)
2001
2015
 
2002
2016
    def _update_reviews(self, app_details):
2003
2017
        self.reviews.clear()
2004
 
 
2005
 
    def _update_reviews_inactive_network(self):
2006
 
        if self.reviews.get_reviews():
2007
 
            msg_exists = False
2008
 
            for r in self.reviews.vbox:
2009
 
                if isinstance(r, EmbeddedMessage):
2010
 
                    msg_exists = True
2011
 
                elif hasattr(r, 'complain'):
2012
 
                    r.complain.set_sensitive(False)
2013
 
            if not msg_exists:
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')
2017
 
 
2018
 
                self.reviews.vbox.pack_start(m)
2019
 
                self.reviews.vbox.reorder_child(m, 0)
2020
 
        else:
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)
2026
 
 
2027
 
        self.reviews.new_review.set_sensitive(False)
2028
 
        return
2029
 
 
2030
 
    def _update_reviews_active_network(self):
2031
 
        for r in self.reviews.vbox:
2032
 
            if isinstance(r, (EmbeddedMessage, NoReviewYet)):
2033
 
                r.destroy()
2034
 
            if hasattr(r, 'complain'):
2035
 
                r.complain.set_sensitive(True)
2036
 
 
2037
 
        if not self.reviews.get_reviews():
2038
 
            self._check_for_reviews()
2039
 
 
2040
 
        self.reviews.new_review.set_sensitive(True)
 
2018
        self._check_for_reviews()
2041
2019
        return
2042
2020
 
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)
2064
2042
 
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()
2073
2051
 
2074
 
        self.reviews.clear()
2075
 
        if get_network_state() == NetState.NM_STATE_DISCONNECTED:
2076
 
            self._update_reviews_inactive_network()
2077
 
        else:
2078
 
            self._update_reviews_active_network()
2079
 
        return
2080
 
 
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)
2083
2054