1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 from elisa.core import common
18 from raval_widgets.finite_circular_list import FiniteCircularList
19
20 import pgm
21 from pgm.graph.group import Group
22 from pgm.graph.image import Image
23 from pgm.utils.image import cairo_gradient
24
26
28 Group.__init__(self)
29
30
31 self.image = Image()
32 self.add(self.image, True)
33 self.image.bg_a = 0
34 self.image.layout = pgm.IMAGE_SCALED
35 self.image.alignment = pgm.IMAGE_BOTTOM
36 self.image.visible = True
37
38
39 self.reflection = Image()
40 self.add(self.reflection)
41 flip_matrix = pgm.mat4x4_new_predefined(pgm.MAT4X4_FLIP_VERTICAL)
42 self.reflection.mapping_matrix = flip_matrix
43 self.reflection.bg_a = 0
44 self.reflection.layout = pgm.IMAGE_SCALED
45 self.reflection.opacity = 150
46 self.reflection.y += self.image.height*0.9
47 self.reflection.alignment = pgm.IMAGE_TOP
48 self.reflection.visible = True
49
50
51 plugin_registry = common.application.plugin_registry
52 BaseListView = plugin_registry.get_component_class('raval:list_view')
53
54 -class MainMenuView(BaseListView, FiniteCircularList):
55
57 super(MainMenuView, self).clean()
58 self.canvas = None
59
68
69 - def create_item(self, model):
70 list_item = ListItem()
71 self.load_from_theme(model.theme_icon, list_item.image)
72 icon = self.frontend.theme.get_media(model.theme_icon)
73 cairo_gradient(icon, list_item.reflection, 0.4)
74
75 return list_item
76
79
80 - def do_child_clicked(self, index):
81 old_selected = self.selected_item
82 super(FiniteCircularList, self).do_child_clicked(index)
83
84 if old_selected == self.selected_item:
85 return self.controller.activate_item(self.frontend)
86