source: src/menuPage.py @ 604

Last change on this file since 604 was 604, checked in by jelinson, 3 years ago

fixed buildmenu overlapping bu

File size: 2.4 KB
Line 
1'''
2    Created on Apr 13, 2012
3
4    @author: TechTrek
5'''
6from window import Window
7from menuArrow import MenuArrow
8from dim import menuPageDim as DIM
9
10
11class MenuPage(Window):
12    def __init__(self, pos, visible, ID, responses):
13        """
14            initializes the components of the MenuPage
15
16            input type: int((x,y)), bool(visible), int(ID),
17                        [(function tuples)]
18        """
19        Window.__init__(self, pos, visible)
20        self.responses = responses
21        self.ID = ID
22        self.stayBack = True
23
24        left = MenuArrow((self.pos[0] + DIM.BUT_W_SHIFT,
25                          self.pos[1] + DIM.BUT_H_SHIFT),
26                         True, False)
27        left.addResponse(responses[0])
28        right = MenuArrow((self.pos[0] + DIM.BUT_SHIFT + DIM.BUT_W_SHIFT,
29                           self.pos[1] + DIM.BUT_H_SHIFT),
30                          True, True)
31        right.addResponse(responses[1])
32
33        self.addWindow(left)
34        self.addWindow(right)
35
36        self.addResponse(responses[3])
37
38    def setBackResponse(self, response):
39        """
40            Sets the back button response
41
42            input type: function pointer
43            return type: none
44        """
45        # not sure what this function
46        #self.subwindows[1].addResponse(response)
47
48    def event(self, e):
49        """
50            custom event handler to close subwindows of
51            penultimate menu entry
52
53            input type: pygame.event
54            output type: boolean
55        """
56        for i, window in enumerate(self.subwindows):
57            if window.isVisible():
58                returnValue = window.event(e)
59                if returnValue is True:
60                    for j in range(len(self.subwindows)):
61                        if i != j:
62                            self.subwindows[j].closeSubwindows()
63                    if not window.stayBack:
64                        self.subwindows.remove(window)
65                        self.subwindows.insert(0, window)
66                    return True
67                if returnValue is not False:
68                    return returnValue
69        return self.response(e)
70
71    def open(self):
72        """
73            Opens the block and all the subwindows
74
75            input type: None
76            return type: None
77        """
78        self.visible = True
79        for window in self.subwindows:
80            window.open()
Note: See TracBrowser for help on using the repository browser.