~arky/software-center/A11yFixes-AppDetailsView

« back to all changes in this revision

Viewing changes to softwarecenter/view/catview_gtk.py

  • Committer: Michael Vogt
  • Date: 2010-06-22 10:39:14 UTC
  • mfrom: (854.1.4 new-apps-test1)
  • Revision ID: michael.vogt@ubuntu.com-20100622103914-ejpxvbohnznnfmwc
merged lp:~mvo/software-center/new-apps-test1 and
lp:~mmcg069/software-center/catview-conform-w-spec, thanks
to Matthew McGowan

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
import glob
11
11
import locale
12
12
import logging
 
13
import random
13
14
import os
14
15
import xapian
15
16
 
104
105
 
105
106
        # append sections
106
107
        self.carousel = None
 
108
        self.carousel_new = None
107
109
        self.departments = None
108
110
        self.welcome = None
109
111
 
149
151
    def _append_featured_and_new(self):
150
152
        featured_cat = get_category_by_name(self.categories,
151
153
                                            'Featured Applications')    # untranslated name
152
 
        query = self.db.get_query_list_from_search_entry('', featured_cat.query)
153
 
 
154
154
        featured_apps = AppStore(self.cache,
155
155
                                 self.db,
156
156
                                 self.icons,
157
 
                                 query,
 
157
                                 featured_cat.query,
158
158
                                 self.apps_limit,
159
159
                                 True,
160
160
                                 self.apps_filter)
161
161
 
162
 
        carousel = FeaturedView(featured_apps)
 
162
        carousel = FeaturedView(featured_apps, _("Featured Applications"))
163
163
        carousel.more_btn.connect('clicked',
164
164
                                 self._on_category_clicked,
165
165
                                 featured_cat)
167
167
        self.carousel = carousel
168
168
 
169
169
        # create new-apps widget
170
 
        self.new = mkit.LayoutView()
171
 
        # set the departments section to use the label markup we have just defined
172
 
        self.new.set_label(H2 % _("What's New"))
173
 
 
 
170
        new_cat = get_category_by_name(self.categories, 'New Applications')
 
171
        new_apps = AppStore(self.cache,
 
172
                            self.db,
 
173
                            self.icons,
 
174
                            new_cat.query,
 
175
                            self.apps_limit,
 
176
                            True,
 
177
                            self.apps_filter)
 
178
        self.carousel_new = FeaturedView(new_apps, _("What's New"))
 
179
        self.carousel_new.more_btn.connect('clicked',
 
180
                                           self._on_category_clicked,
 
181
                                           new_cat)
 
182
 
 
183
        # put in the box
174
184
        self.hbox_inner = gtk.HBox(spacing=mkit.HSPACING_SMALL)
175
185
        self.hbox_inner.set_homogeneous(True)
176
186
        self.hbox_inner.pack_start(self.carousel, False)
177
 
        self.hbox_inner.pack_start(self.new, False)
178
 
 
179
 
 
 
187
        self.hbox_inner.pack_start(self.carousel_new, False)
180
188
        self.vbox.pack_start(self.hbox_inner, False)
181
189
        return
182
190
 
287
295
 
288
296
            if self.carousel:
289
297
                self.carousel.set_width(best_fit/2)
290
 
                self._cleanup_poster_sigs()
 
298
            if self.carousel_new:
 
299
                self.carousel_new.set_width(best_fit/2)
291
300
            if self.departments:
292
301
                self.departments.clear_rows()
293
302
                self.departments.set_width(best_fit)
 
303
            # cleanup any signals, its ok if there are none
 
304
            self._cleanup_poster_sigs()
294
305
 
295
306
        self._full_redraw()   #  ewww
296
307
        return
311
322
        if not self.in_subsection:
312
323
            # draw featured carousel
313
324
            self.carousel.draw(cr, self.carousel.allocation, expose_area)
314
 
            self.new.draw(cr, self.new.allocation, expose_area)
 
325
            self.carousel_new.draw(cr, self.carousel_new.allocation, expose_area)
315
326
 
316
327
        del cr
317
328
        return
321
332
        for sig_id in self._poster_sigs:
322
333
            gobject.source_remove(sig_id)
323
334
        self._poster_sigs = []
324
 
        for poster in self.carousel.posters:
325
 
            self._poster_sigs.append(poster.connect('clicked', self._on_app_clicked))
 
335
        if self.carousel:
 
336
            for poster in self.carousel.posters:
 
337
                self._poster_sigs.append(poster.connect('clicked', self._on_app_clicked))
 
338
        if self.carousel_new:
 
339
            for poster in self.carousel_new.posters:
 
340
                self._poster_sigs.append(poster.connect('clicked', self._on_app_clicked))
326
341
        return
327
342
 
328
343
    def _image_path(self,name):
340
355
 
341
356
class FeaturedView(mkit.FramedSection):
342
357
 
343
 
    def __init__(self, featured_apps):
 
358
    def __init__(self, featured_apps, title):
344
359
        mkit.FramedSection.__init__(self)
 
360
        self.title = title
 
361
 
345
362
        self.hbox = gtk.HBox(spacing=mkit.HSPACING_SMALL)
346
363
        self.hbox.set_homogeneous(True)
347
364
        self.body.pack_start(self.hbox, False)
358
375
        self.set_redraw_on_allocate(False)
359
376
        self.featured_apps = featured_apps
360
377
 
361
 
        self.set_label(H2 % _('Featured Applications'))
 
378
        self.set_label(H2 % title)
362
379
 
363
380
        # \xbb == U+00BB == RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
364
381
        label = _(u'View all \xbb')
368
385
 
369
386
        self._width = 0
370
387
        self._icon_size = self.featured_apps.icon_size
371
 
        self._offset = -3
 
388
        if len(featured_apps):
 
389
            self._offset = random.randrange(len(featured_apps))
 
390
        else:
 
391
            self._offset = 0
372
392
        self._alpha = 1.0
373
393
        self._fader = 0
374
394
        self._layout = None
432
452
        n = min(CAROUSEL_MAX_POSTER_COUNT, n)
433
453
        self.n_posters = n    
434
454
 
435
 
        # repack appropriate number of new posters
436
 
        for i in range(n):
 
455
        # repack appropriate number of new posters (and make sure
 
456
        # we do not try to show more than we have)
 
457
        for i in range(min(n, len(self.featured_apps))):
437
458
            poster = FeaturedPoster(32)
438
459
            self.posters.append(poster)
439
460
            self.hbox.pack_start(poster)
571
592
        layout = self._layout
572
593
 
573
594
        if not self.posters:
574
 
            cr.restore()
 
595
            #cr.restore()
575
596
            return
576
597
 
577
598
        overlay = self._overlay