OSDN Git Service

1af4dd31188e2dc5eea31b795110f9582d506d09
[amulettoolsmh4/main.git] / view / notebookamuletview.py
1 # -*- coding: utf-8 -*-
2
3 # GUIのメインフレームにおけるお守り検索Notebookのview
4 # 2013/12/15 written by kei9
5 import wx
6 from wx import xrc
7 import wx.grid
8
9 import constnumbers
10
11 class NoteBookAmuletView():
12     u""" メインのフレームのお守り検索タブ """
13     def __init__(self, frame):
14         self.frame = frame
15         self._init_view()
16
17     def _init_view(self):
18         # initialize view
19
20         # button
21         self.button_search = xrc.XRCCTRL(self.frame, "ButtonAmuletSearchSearch")
22         self.button_clear = xrc.XRCCTRL(self.frame, "ButtonAmuletSearchClear")
23         self.button_skill = xrc.XRCCTRL(self.frame, "ButtonAmuletSearchSkill")
24         self.ID_BUTTON_SEARCH = xrc.XRCID("ButtonAmuletSearchSearch")
25         self.ID_BUTTON_CLEAR = xrc.XRCID("ButtonAmuletSearchClear")
26         self.ID_BUTTON_SKILL = xrc.XRCID("ButtonAmuletSearchSkill")
27
28         # radio button
29         self.radio_button_amulet1 = xrc.XRCCTRL(self.frame, "RadioButtonAmulet1")
30         self.radio_button_amulet2 = xrc.XRCCTRL(self.frame, "RadioButtonAmulet2")
31         self.radio_button_amulet3 = xrc.XRCCTRL(self.frame, "RadioButtonAmulet3")
32         self.ID_RADIO_BUTTON_AMULET1 = xrc.XRCID("RadioButtonAmulet1")
33         self.ID_RADIO_BUTTON_AMULET2 = xrc.XRCID("RadioButtonAmulet2")
34         self.ID_RADIO_BUTTON_AMULET3 = xrc.XRCID("RadioButtonAmulet3")
35         self.amulet2radio_button_dict = {}
36         self.amulet2radio_button_dict[constnumbers.NAME_AMULET1] = self.radio_button_amulet1
37         self.amulet2radio_button_dict[constnumbers.NAME_AMULET2] = self.radio_button_amulet2
38         self.amulet2radio_button_dict[constnumbers.NAME_AMULET3] = self.radio_button_amulet3
39         self.amulet2radio_id_dict = {}
40         self.amulet2radio_id_dict[constnumbers.NAME_AMULET1] = self.ID_RADIO_BUTTON_AMULET1
41         self.amulet2radio_id_dict[constnumbers.NAME_AMULET2] = self.ID_RADIO_BUTTON_AMULET2
42         self.amulet2radio_id_dict[constnumbers.NAME_AMULET3] = self.ID_RADIO_BUTTON_AMULET3
43
44         # seed list
45         self.list_box_seeds = xrc.XRCCTRL(self.frame, "ListBoxAmuletSearchSeeds")
46         self.ID_LIST_BOX_SEEDS = xrc.XRCID("ListBoxAmuletSearchSeeds")
47
48         # spin ctrl
49         self.spin_ctrl_skill1_val = xrc.XRCCTRL(self.frame, "SpinCtrlAmuletSearchSkill1Value")
50         self.spin_ctrl_skill2_val = xrc.XRCCTRL(self.frame, "SpinCtrlAmuletSearchSkill2Value")
51         self.spin_ctrl_slot_num = xrc.XRCCTRL(self.frame, "SpinCtrlAmuletSearchSlotNumber")
52         self.ID_SPIN_CTRL_SKILL1_VAL = xrc.XRCID("SpinCtrlAmuletSearchSkill1Value")
53         self.ID_SPIN_CTRL_SKILL2_VAL = xrc.XRCID("SpinCtrlAmuletSearchSkill2Value")
54
55         # combobox
56         self.combo_box_skill1 = xrc.XRCCTRL(self.frame, "ComboBoxAmuletSearchSkill1")
57         self.combo_box_skill2 = xrc.XRCCTRL(self.frame, "ComboBoxAmuletSearchSkill2")
58         self.ID_COMBO_BOX_SKILL1 = xrc.XRCID("ComboBoxAmuletSearchSkill1")
59         self.ID_COMBO_BOX_SKILL2 = xrc.XRCID("ComboBoxAmuletSearchSkill2")
60
61         # text ctrl
62         self.text_ctrl_result = xrc.XRCCTRL(self.frame, "TextCtrlAmuletSearchResult")
63
64         # set min & max of slot
65         self.set_slot_minmax(constnumbers.SLOT_MIN, constnumbers.SLOT_MAX)
66
67     def bind_radio_button(self, event_func, evt=wx.EVT_RADIOBUTTON):
68         u""" ラジオボタンが押された時のイベントをセットする """
69         self.radio_button_amulet1.Bind(evt, event_func)
70         self.radio_button_amulet2.Bind(evt, event_func)
71         self.radio_button_amulet3.Bind(evt, event_func)
72
73     def bind_combobox(self, event_func, evt=wx.EVT_COMBOBOX):
74         u""" コンボボタンが押された時のイベントをセットする """
75         self.combo_box_skill1.Bind(evt, event_func)
76         self.combo_box_skill2.Bind(evt, event_func)
77
78     def bind_button_search(self, event_func, evt=wx.EVT_BUTTON):
79         u""" 検索ボタンが押された時のイベントをセットする """
80         self.button_search.Bind(evt, event_func)
81
82     def bind_button_clear(self, event_func, evt=wx.EVT_BUTTON):
83         u""" クリアボタンが押された時のイベントをセットする """
84         self.button_clear.Bind(evt, event_func)
85
86     def bind_button_skill(self, event_func, evt=wx.EVT_BUTTON):
87         u""" スキル検索ボタンが押された時のイベントをセットする """
88         self.button_skill.Bind(evt, event_func)
89
90     def set_skill_minmax(self, min1, max1, min2, max2):
91         u""" 第1,2スキルの最大値と最小値をセットする """
92         self.spin_ctrl_skill1_val.SetRange(min1, max1)
93         self.spin_ctrl_skill2_val.SetRange(min2, max2)
94
95     def set_slot_minmax(self, slot_min, slot_max):
96         u""" スロットの最大値と最小値をセットする """
97         self.spin_ctrl_slot_num.SetRange(slot_min, slot_max)
98
99     def get_skill_values(self):
100         u""" 第1,2スキルの値を得る 
101         return (skill1_val, skill2_val)"""
102         skill1_val = self.spin_ctrl_skill1_val.GetValue()
103         skill2_val = self.spin_ctrl_skill2_val.GetValue()
104         return (skill1_val, skill2_val)
105
106     def get_slot_value(self):
107         u""" スロットの値を得る """
108         return self.spin_ctrl_slot_num.GetValue()
109
110     def set_radio_value(self, value, amulet_name=constnumbers.NAME_AMULET1):
111         u""" ラジオボタンの値をセットする 
112             arg: (value, amulet_name)
113         """
114         self.amulet2radio_button_dict[amulet_name].SetValue(value)
115
116     def get_radio_value(self, amulet_name=constnumbers.NAME_AMULET1):
117         u""" ラジオボタンの値を得る
118             return: (value)
119         """
120         return self.amulet2radio_button_dict[amulet_name].GetValue()
121
122     def get_selected_radio_name(self):
123         u""" 選択されているラジオボタンのお守り名を得る 
124             return: (NAME_OF_AMULET)
125         """
126         if self.amulet2radio_button_dict[constnumbers.NAME_AMULET1].GetValue:
127             return constnumbers.NAME_AMULET1
128         elif self.amulet2radio_button_dict[constnumbers.NAME_AMULET2].GetValue:
129             return constnumbers.NAME_AMULET2
130         elif self.amulet2radio_button_dict[constnumbers.NAME_AMULET3].GetValue:
131             return constnumbers.NAME_AMULET3
132         else:
133             raise NotImplementedError("irregular radio button selected")
134
135     def set_selection_skill1_combobox(self, idx):
136         u""" skill1のコンボボックスの選択されたインデックスをセットする """
137         self.combo_box_skill1.SetSelection(idx)
138
139     def set_selection_skill2_combobox(self, idx):
140         u""" skill2のコンボボックスの選択されたインデックスをセットする """
141         self.combo_box_skill2.SetSelection(idx)
142
143     def get_string_selection_skill1_combobox(self):
144         u""" skill1のコンボボックスの選択された値を得る """
145         return self.combo_box_skill1.GetStringSelection()
146
147     def get_string_selection_skill2_combobox(self):
148         u""" skill2のコンボボックスの選択された値を得る """
149         return self.combo_box_skill2.GetStringSelection()
150
151     def get_string_selection_skill_names(self):
152         u""" skill1, skill2で選択されているスキル名を返す
153             return (skill1_name, skill2_name)"""
154         skill1_name = self.get_string_selection_skill1_combobox()
155         skill2_name = self.get_string_selection_skill2_combobox()
156         return (skill1_name, skill2_name)
157
158     def set_items_skill1_combobox(self, string_list):
159         u""" skill1のコンボボックスの値をセットする """
160         self.combo_box_skill1.SetItems(string_list)
161
162     def set_items_skill2_combobox(self, string_list):
163         u""" skill2のコンボボックスの値をセットする """
164         self.combo_box_skill2.SetItems(string_list)
165
166     def set_items_skill_combobox(self, idx, string_list):
167         u""" 指定されたインデックスのskillのコンボボックスの値をセットする """
168         if idx == 0:
169             self.set_items_skill1_combobox(string_list)
170         elif idx == 1:
171             self.set_items_skill2_combobox(string_list)
172         else:
173             raise NotImplementedError(u"this idx is not implemented")
174
175     def set_skill_button_enable(self, value):
176         u""" 対応スキル検索ボタンの有効・無効の切り替え """
177         if value is True:
178             self.button_skill.Enable()
179         else:
180             self.button_skill.Disable()
181
182     def set_result_text_ctrl_value(self, value):
183         u""" 結果表示用のTextCtrlに値をセットする """
184         self.text_ctrl_result.SetValue(value)
185
186     def set_listbox_items(self, items):
187         u""" Seed一覧のListBoxに値をセットする。
188         Noneが与えられた時はClearする"""
189         if items is not None:
190             self.list_box_seeds.SetItems(items)
191         else:
192             self.list_box_seeds.Clear()
193
194     def get_string_selection_listbox(self):
195         u""" Seed一覧のListBoxの選択された値を得る。"""
196         return self.list_box_seeds.GetStringSelection()
197
198     def set_selection_listbox(self, idx):
199         u""" Seed一覧のListBoxの選択されたインデックスをセットする。"""
200         self.list_box_seeds.SetSelection(idx)
201
202     def clear_listbox_items(self):
203         u""" Seed一覧のListBoxから値をClearする"""
204         self.list_box_seeds.Clear()