OSDN Git Service

revise database generator for seed1 decision & threshold2 & inishie
[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.radiobox_amulet = xrc.XRCCTRL(self.frame, "RadioBoxAmulet")
30         self.radiobox_threshold_type = xrc.XRCCTRL(self.frame, "RadioBoxThresholdType")
31
32         # seed list
33         self.list_box_seeds = xrc.XRCCTRL(self.frame, "ListBoxAmuletSearchSeeds")
34         self.ID_LIST_BOX_SEEDS = xrc.XRCID("ListBoxAmuletSearchSeeds")
35
36         # spin ctrl
37         self.spin_ctrl_skill1_val = xrc.XRCCTRL(self.frame, "SpinCtrlAmuletSearchSkill1Value")
38         self.spin_ctrl_skill2_val = xrc.XRCCTRL(self.frame, "SpinCtrlAmuletSearchSkill2Value")
39         self.spin_ctrl_slot_num = xrc.XRCCTRL(self.frame, "SpinCtrlAmuletSearchSlotNumber")
40         self.ID_SPIN_CTRL_SKILL1_VAL = xrc.XRCID("SpinCtrlAmuletSearchSkill1Value")
41         self.ID_SPIN_CTRL_SKILL2_VAL = xrc.XRCID("SpinCtrlAmuletSearchSkill2Value")
42
43         # combobox
44         self.combo_box_skill1 = xrc.XRCCTRL(self.frame, "ComboBoxAmuletSearchSkill1")
45         self.combo_box_skill2 = xrc.XRCCTRL(self.frame, "ComboBoxAmuletSearchSkill2")
46         self.ID_COMBO_BOX_SKILL1 = xrc.XRCID("ComboBoxAmuletSearchSkill1")
47         self.ID_COMBO_BOX_SKILL2 = xrc.XRCID("ComboBoxAmuletSearchSkill2")
48
49         # text ctrl
50         self.text_ctrl_result = xrc.XRCCTRL(self.frame, "TextCtrlAmuletSearchResult")
51
52         # set min & max of slot
53         self.set_slot_minmax(constnumbers.SLOT_MIN, constnumbers.SLOT_MAX)
54
55     def bind_radiobox_amulet(self, event_func, evt=wx.EVT_RADIOBOX):
56         u""" お守り種類のラジオボタンが押された時のイベントをセットする """
57         self.radiobox_amulet.Bind(evt, event_func)
58
59     def bind_radiobox_threshold_type(self, event_func, evt=wx.EVT_RADIOBOX):
60         u""" 判定値の種類のラジオボタンが押された時のイベントをセットする """
61         self.radiobox_threshold_type.Bind(evt, event_func)
62
63     def bind_combobox(self, event_func, evt=wx.EVT_COMBOBOX):
64         u""" コンボボタンが押された時のイベントをセットする """
65         self.combo_box_skill1.Bind(evt, event_func)
66         self.combo_box_skill2.Bind(evt, event_func)
67
68     def bind_button_search(self, event_func, evt=wx.EVT_BUTTON):
69         u""" 検索ボタンが押された時のイベントをセットする """
70         self.button_search.Bind(evt, event_func)
71
72     def bind_button_clear(self, event_func, evt=wx.EVT_BUTTON):
73         u""" クリアボタンが押された時のイベントをセットする """
74         self.button_clear.Bind(evt, event_func)
75
76     def bind_button_skill(self, event_func, evt=wx.EVT_BUTTON):
77         u""" スキル検索ボタンが押された時のイベントをセットする """
78         self.button_skill.Bind(evt, event_func)
79
80     def set_skill_minmax(self, min1, max1, min2, max2):
81         u""" 第1,2スキルの最大値と最小値をセットする """
82         self.spin_ctrl_skill1_val.SetRange(min1, max1)
83         self.spin_ctrl_skill2_val.SetRange(min2, max2)
84
85     def set_slot_minmax(self, slot_min, slot_max):
86         u""" スロットの最大値と最小値をセットする """
87         self.spin_ctrl_slot_num.SetRange(slot_min, slot_max)
88
89     def get_skill_values(self):
90         u""" 第1,2スキルの値を得る 
91         return (skill1_val, skill2_val)"""
92         skill1_val = self.spin_ctrl_skill1_val.GetValue()
93         skill2_val = self.spin_ctrl_skill2_val.GetValue()
94         return (skill1_val, skill2_val)
95
96     def get_slot_value(self):
97         u""" スロットの値を得る """
98         return self.spin_ctrl_slot_num.GetValue()
99
100     def set_radio_value(self, value, amulet_name=constnumbers.NAME_AMULET1):
101         u""" ラジオボタンの値をセットする 
102             arg: (value, amulet_name)
103         """
104         if amulet_name == constnumbers.NAME_AMULET1:
105             idx = 0
106         elif amulet_name == constnumbers.NAME_AMULET2:
107             idx = 1
108         elif amulet_name == constnumbers.NAME_AMULET3:
109             idx = 2
110         self.radiobox_amulet.SetSelection(idx)
111
112     def get_radio_value(self, amulet_name=constnumbers.NAME_AMULET1):
113         u""" ラジオボタンの値を得る
114             return: (value)
115         """
116         if amulet_name == constnumbers.NAME_AMULET1:
117             idx = 0
118         elif amulet_name == constnumbers.NAME_AMULET2:
119             idx = 1
120         elif amulet_name == constnumbers.NAME_AMULET3:
121             idx = 2
122         return self.radiobox_amulet.GetSelection() == idx
123
124     def get_selected_amulet(self):
125         u""" 選択されているお守り名を得る 
126             return: (NAME_OF_AMULET)
127         """
128         idx = self.radiobox_amulet.GetSelection()
129         if idx == 0:
130             return constnumbers.NAME_AMULET1
131         elif idx == 1:
132             return constnumbers.NAME_AMULET2
133         elif idx == 2:
134             return constnumbers.NAME_AMULET3
135         else:
136             raise NotImplementedError("irregular radio button selected")
137
138     def get_selected_threshold_type(self):
139         u""" 選択されているラジオボタンの検索種類IDを得る
140             return: (THRESHOLD_TYPE_ID)
141         """
142         idx = self.radiobox_threshold_type.GetSelection()
143         if idx == 0:
144             return constnumbers.THRESHOLD_TYPE_ALL
145         elif idx == 1:
146             return constnumbers.THRESHOLD_TYPE_THRESHOLD1
147         elif idx == 2:
148             return constnumbers.THRESHOLD_TYPE_THRESHOLD2
149         elif idx == 3:
150             return constnumbers.THRESHOLD_TYPE_INISHIE
151         else:
152             raise NotImplementedError("irregular radio button selected")
153
154     def set_selection_skill1_combobox(self, idx):
155         u""" skill1のコンボボックスの選択されたインデックスをセットする """
156         self.combo_box_skill1.SetSelection(idx)
157
158     def set_selection_skill2_combobox(self, idx):
159         u""" skill2のコンボボックスの選択されたインデックスをセットする """
160         self.combo_box_skill2.SetSelection(idx)
161
162     def get_string_selection_skill1_combobox(self):
163         u""" skill1のコンボボックスの選択された値を得る """
164         return self.combo_box_skill1.GetStringSelection()
165
166     def get_string_selection_skill2_combobox(self):
167         u""" skill2のコンボボックスの選択された値を得る """
168         return self.combo_box_skill2.GetStringSelection()
169
170     def get_string_selection_skill_names(self):
171         u""" skill1, skill2で選択されているスキル名を返す
172             return (skill1_name, skill2_name)"""
173         skill1_name = self.get_string_selection_skill1_combobox()
174         skill2_name = self.get_string_selection_skill2_combobox()
175         return (skill1_name, skill2_name)
176
177     def set_items_skill1_combobox(self, string_list):
178         u""" skill1のコンボボックスの値をセットする """
179         self.combo_box_skill1.SetItems(string_list)
180
181     def set_items_skill2_combobox(self, string_list):
182         u""" skill2のコンボボックスの値をセットする """
183         self.combo_box_skill2.SetItems(string_list)
184
185     def set_items_skill_combobox(self, idx, string_list):
186         u""" 指定されたインデックスのskillのコンボボックスの値をセットする """
187         if idx == 0:
188             self.set_items_skill1_combobox(string_list)
189         elif idx == 1:
190             self.set_items_skill2_combobox(string_list)
191         else:
192             raise NotImplementedError(u"this idx is not implemented")
193
194     def set_skill_button_enable(self, value):
195         u""" 対応スキル検索ボタンの有効・無効の切り替え """
196         if value is True:
197             self.button_skill.Enable()
198         else:
199             self.button_skill.Disable()
200
201     def set_result_text_ctrl_value(self, value):
202         u""" 結果表示用のTextCtrlに値をセットする """
203         self.text_ctrl_result.SetValue(value)
204
205     def set_listbox_items(self, items):
206         u""" Seed一覧のListBoxに値をセットする。
207         Noneが与えられた時はClearする"""
208         if items is not None:
209             self.list_box_seeds.SetItems(items)
210         else:
211             self.list_box_seeds.Clear()
212
213     def get_string_selection_listbox(self):
214         u""" Seed一覧のListBoxの選択された値を得る。"""
215         return self.list_box_seeds.GetStringSelection()
216
217     def set_selection_listbox(self, idx):
218         u""" Seed一覧のListBoxの選択されたインデックスをセットする。"""
219         self.list_box_seeds.SetSelection(idx)
220
221     def clear_listbox_items(self):
222         u""" Seed一覧のListBoxから値をClearする"""
223         self.list_box_seeds.Clear()