Commit | Line | Data |
---|---|---|
cb700bcc FC |
1 | # from panda3d.core import LVecBase4f |
2 | # from direct.gui.DirectGuiGlobals import NORMAL, DISABLED | |
3 | # from ya2.engine.vec import Vec2 | |
8ee66edd FC |
4 | |
5 | ||
cb700bcc | 6 | # class WidgetMixin: |
8ee66edd | 7 | |
cb700bcc FC |
8 | # highlight_color_offset = [ |
9 | # LVecBase4f(.4, .4, 0, .4), | |
10 | # LVecBase4f(0, 0, .4, .4), | |
11 | # LVecBase4f(0, .4, 0, .4), | |
12 | # LVecBase4f(.4, 0, 0, .4)] | |
8ee66edd | 13 | |
cb700bcc FC |
14 | # def __init__(self): |
15 | # self.start_txt_color = self.start_frame_color = None | |
16 | # self.was_visible = True | |
17 | # self.curr_offset = LVecBase4f(0, 0, 0, 0) | |
8ee66edd | 18 | |
cb700bcc | 19 | # def get_np(self): return self.img |
8ee66edd | 20 | |
cb700bcc | 21 | # def enable(self): pass |
8ee66edd | 22 | |
cb700bcc | 23 | # def disable(self): pass |
8ee66edd | 24 | |
cb700bcc FC |
25 | # @property |
26 | # def pos(self): | |
27 | # try: pos = self.get_pos(self.wdg.get_parent()) | |
28 | # except AttributeError: pos = self.get_pos(self.img.get_parent()) | |
29 | # return Vec2(pos[0], pos[2]) | |
8ee66edd | 30 | |
cb700bcc FC |
31 | # @property |
32 | # def global_pos(self): | |
33 | # pos = self.get_pos(render2d) | |
34 | # return Vec2(pos[0], pos[2]) | |
8ee66edd FC |
35 | |
36 | ||
cb700bcc | 37 | # class ImgMixin(WidgetMixin): |
8ee66edd | 38 | |
cb700bcc | 39 | # def init(self, wdg): pass |
8ee66edd FC |
40 | |
41 | ||
cb700bcc | 42 | # class FrameMixin(WidgetMixin): |
8ee66edd | 43 | |
cb700bcc FC |
44 | # def init(self, wdg): |
45 | # self.curr_offset = LVecBase4f(0, 0, 0, 0) | |
46 | # self.start_frame_color = wdg.get_np()['frameColor'] | |
8ee66edd | 47 | |
cb700bcc FC |
48 | # def enable(self): |
49 | # self['state'] = NORMAL | |
50 | # if hasattr(self, 'set_alpha_scale'): self.set_alpha_scale(1) | |
51 | # self.get_np()['frameColor'] = self.start_frame_color | |
8ee66edd | 52 | |
cb700bcc FC |
53 | # def disable(self): |
54 | # self['state'] = DISABLED | |
55 | # if hasattr(self, 'set_alpha_scale'): self.set_alpha_scale(.25) | |
56 | # col = self.start_frame_color | |
57 | # self.get_np()['frameColor'] = (col[0], col[1], col[2], col[3] * .4) | |
8ee66edd | 58 | |
cb700bcc | 59 | # def on_wdg_enter(self, pos=None, player=0): pass |
8ee66edd | 60 | |
cb700bcc | 61 | # def on_wdg_exit(self, pos=None, player=0): pass |
8ee66edd FC |
62 | |
63 | ||
cb700bcc | 64 | # class ScrolledFrameMixin(WidgetMixin): |
8ee66edd | 65 | |
cb700bcc | 66 | # def init(self, wdg): pass |
8ee66edd | 67 | |
cb700bcc | 68 | # def enable(self): self['state'] = NORMAL |
8ee66edd | 69 | |
cb700bcc | 70 | # def disable(self): self['state'] = DISABLED |
8ee66edd | 71 | |
cb700bcc | 72 | # def on_wdg_enter(self, pos=None, player=0): pass |
8ee66edd | 73 | |
cb700bcc | 74 | # def on_wdg_exit(self, pos=None, player=0): pass |
8ee66edd FC |
75 | |
76 | ||
cb700bcc | 77 | # class BtnMixin(FrameMixin): |
8ee66edd | 78 | |
cb700bcc FC |
79 | # def init(self, wdg): |
80 | # FrameMixin.init(self, wdg) | |
81 | # wdg = wdg.get_np() | |
82 | # self.start_txt_color = wdg.component('text0').textNode.get_text_color() | |
83 | # self.start_txt_scale = wdg.component('text0').textNode.get_text_scale() | |
8ee66edd | 84 | |
cb700bcc | 85 | # def on_arrow(self, direction): pass |
8ee66edd | 86 | |
cb700bcc FC |
87 | # def on_wdg_enter(self, pos=None, player=0): # pos: mouse's position |
88 | # self.curr_offset += WidgetMixin.highlight_color_offset[player] | |
89 | # col = LVecBase4f(self.start_frame_color) | |
90 | # self.get_np()['frameColor'] = col + self.curr_offset | |
91 | # self.get_np()['text_fg'] = self.start_txt_color + self.curr_offset | |
92 | # self.get_np()['text_scale'] = self.start_txt_scale * 1.04 | |
93 | # self.get_np().set_shader_input('col_offset', self.curr_offset) | |
94 | # self.get_np().component('text0').textNode.set_shadow(.064, .064) | |
95 | # self.get_np().component('text0').textNode.set_shadow_color(.2, .2, 0, .8) | |
8ee66edd | 96 | |
cb700bcc FC |
97 | # def on_wdg_exit(self, pos=None, player=0): # pos: mouse's position |
98 | # self.curr_offset -= WidgetMixin.highlight_color_offset[player] | |
99 | # col = LVecBase4f(self.start_frame_color) | |
100 | # self.get_np()['frameColor'] = col + self.curr_offset | |
101 | # self.get_np()['text_fg'] = self.start_txt_color | |
102 | # self.get_np()['text_scale'] = self.start_txt_scale | |
103 | # self.get_np()['frameColor'] = self.start_frame_color | |
104 | # self.get_np().set_shader_input('col_offset', self.curr_offset) | |
105 | # self.get_np().component('text0').textNode.set_shadow(0, 0) | |
106 | # self.get_np().component('text0').textNode.set_shadow_color(1, 1, 1, 1) | |
8ee66edd | 107 | |
cb700bcc FC |
108 | # def on_enter(self, player): |
109 | # if self['command'] and self['state'] == NORMAL: | |
110 | # lst_arg = [player] if player is not None else [] | |
111 | # self['command'](*self['extraArgs'] + lst_arg) | |
8ee66edd | 112 | |
cb700bcc FC |
113 | # def enable(self): |
114 | # FrameMixin.enable(self) | |
115 | # t0n = self.get_np().component('text0').textNode | |
116 | # t0n.set_text_color(self.start_txt_color) | |
117 | # t0n.set_text_scale(self.start_txt_scale) | |
8ee66edd | 118 | |
cb700bcc FC |
119 | # def disable(self): |
120 | # FrameMixin.disable(self) | |
121 | # col = self.start_txt_color | |
122 | # self.get_np()['text_fg'] = (col[0], col[1], col[2], col[3] * .4) | |
123 | # t0n = self.get_np().component('text0').textNode | |
124 | # t0n.set_text_scale(self.start_txt_scale) | |
125 | ||
126 | ||
127 | # class EntryMixin(FrameMixin): | |
8ee66edd | 128 | |
cb700bcc | 129 | # def on_arrow(self, direction): pass |
8ee66edd | 130 | |
cb700bcc FC |
131 | # def on_wdg_enter(self, pos=None, player=0): # pos: mouse's position |
132 | # FrameMixin.on_wdg_enter(self, pos, player) | |
133 | # self.curr_offset += WidgetMixin.highlight_color_offset[player] | |
134 | # col = LVecBase4f(self.start_frame_color) | |
135 | # self.get_np()['frameColor'] = col + self.curr_offset | |
136 | # # self.get_np()['focus'] = 1 # it focuses it if mouse over | |
137 | # # self.get_np().setFocus() | |
138 | ||
139 | # def on_wdg_exit(self, pos=None, player=0): # pos: mouse's position | |
140 | # FrameMixin.on_wdg_exit(self, pos, player) | |
141 | # self.curr_offset -= WidgetMixin.highlight_color_offset[player] | |
142 | # col = LVecBase4f(self.start_frame_color) | |
143 | # self.get_np()['frameColor'] = col + self.curr_offset | |
144 | # # self.get_np()['focus'] = 0 | |
145 | # # self.get_np().setFocus() | |
146 | ||
147 | # def on_enter(self, player=0): | |
148 | # self['focus'] = 1 | |
149 | # if self['command'] and self['state'] == NORMAL: | |
150 | # self['command'](*self['extraArgs']) | |
151 | ||
152 | ||
153 | # class CheckBtnMixin(BtnMixin): | |
154 | ||
155 | # def on_enter(self, player=0): | |
156 | # self['indicatorValue'] = not self['indicatorValue'] | |
157 | # BtnMixin.on_enter(self, player) | |
158 | ||
159 | ||
160 | # class SliderMixin(FrameMixin): | |
161 | ||
162 | # def on_arrow(self, direction): | |
163 | # if direction in [(-1, 0), (1, 0)]: | |
164 | # n_p = self.get_np() | |
165 | # delta = (n_p['range'][1] - n_p['range'][0]) / 10.0 | |
166 | # n_p['value'] += -delta if direction == (-1, 0) else delta | |
167 | # return direction in [(-1, 0), (1, 0)] | |
168 | ||
169 | # def on_enter(self, player=0): pass | |
170 | ||
171 | ||
172 | # class OptionMenuMixin(BtnMixin): | |
173 | ||
174 | # def on_arrow(self, direction): | |
175 | # is_hor = direction in [(-1, 0), (1, 0)] | |
176 | # nodepath = self.get_np() | |
177 | # if is_hor or nodepath.popupMenu.is_hidden(): return False | |
178 | # old_idx = nodepath.highlightedIndex | |
179 | # dir2offset = {(0, -1): 1, (0, 1): -1} | |
180 | # idx = nodepath.highlightedIndex + dir2offset[direction] | |
181 | # idx = min(len(nodepath['items']) - 1, max(0, idx)) | |
182 | # if old_idx == idx: return True | |
183 | # fcol = nodepath.component('item%s' % idx)['frameColor'] | |
184 | # old_cmp = nodepath.component('item%s' % old_idx) | |
185 | # nodepath._unhighlightItem(old_cmp, fcol) | |
186 | # nodepath._highlightItem(nodepath.component('item%s' % idx), idx) | |
187 | # return True | |
188 | ||
189 | # def on_enter(self, player=0): | |
190 | # nodepath = self.get_np() | |
191 | # if nodepath.popupMenu.is_hidden(): | |
192 | # nodepath.showPopupMenu() | |
193 | # nodepath._highlightItem(nodepath.component('item0'), 0) | |
194 | # else: | |
195 | # nodepath.selectHighlightedIndex() | |
196 | # idx = nodepath.selectedIndex | |
197 | # if nodepath['command']: nodepath['command'](nodepath['items'][idx]) | |
198 | # nodepath.hidePopupMenu() | |
199 | # idx += -1 if idx else 1 | |
200 | # try: | |
201 | # fcol = nodepath.component('item%s' % idx)['frameColor'] | |
202 | # curr_name = 'item%s' % nodepath.selectedIndex | |
203 | # nodepath._unhighlightItem(nodepath.component(curr_name), fcol) | |
204 | # except KeyError: # when there is only one element | |
205 | # pass | |
206 | # return not nodepath.popupMenu.is_hidden() |