OSDN Git Service

add seed1 gui xrc & revise other view xrc
[amulettoolsmh4/main.git] / view / notebookseed1view.py
1 # -*- coding: utf-8 -*-
2
3 # GUIのメインフレームにおけるSeed1特定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 NoteBookSeed1View():
12     u""" メインのフレームのSeed1特定タブ """
13     def __init__(self, frame):
14         self.frame = frame
15         self._init_view()
16         self._init_event()
17
18     def _init_view(self):
19         # initialize view
20
21         # buttons
22         self.radio_button_usage1 = xrc.XRCCTRL(self.frame, "RadioButtonRenkinUsage1")
23         self.radio_button_usage2 = xrc.XRCCTRL(self.frame, "RadioButtonRenkinUsage2")
24         self.button_search = xrc.XRCCTRL(self.frame, "ButtonSeed1Search")
25         self.button_clear = xrc.XRCCTRL(self.frame, "ButtonSeed1Clear")
26
27         self.spin_ctrl_amulet_num = xrc.XRCCTRL(self.frame, "SpinCtrlSeed1AmuletNum")
28
29         # load combo boxes
30         self.combobox_amulet_list = [xrc.XRCCTRL(self.frame, "ComboBoxSeed1Amulet1"),
31                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Amulet2"),
32                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Amulet3"),
33                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Amulet4"),
34                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Amulet5"),
35                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Amulet6"),
36                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Amulet7")]
37         self.combobox_skill_list = [xrc.XRCCTRL(self.frame, "ComboBoxSeed1Skill1"),
38                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Skill2"),
39                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Skill3"),
40                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Skill4"),
41                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Skill5"),
42                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Skill6"),
43                 xrc.XRCCTRL(self.frame, "ComboBoxSeed1Skill7")]
44
45         # text ctrl
46         self.text_ctrl_result = xrc.XRCCTRL(self.frame, "TextCtrl1Seed1Result")
47
48         # grid
49         self.grid_seed1 = xrc.XRCCTRL(self.frame, "GridSeed1Table")
50         u"""Tableを結果TextCtrlで示し、No.をrowラベル、行には天運個数、
51         1-7枠目の値を表示する。1-7枠目をお守りの種類とスキル名で分けると面倒なので
52         合体させて1つの行で表示した方がいいかもしれない。この場合は行数は8となる"""
53         self.grid_seed1.CreateGrid(constnumbers.NUM_SEED1_GRID_ROW, constnumbers.NUM_SEED1_GRID_COL)
54         self.grid_seed1.SetColLabelValue(0, constnumbers.LABEL_FORMAT_SEED1_GRID_COL1)
55         for i in range(1, constnumbers.NUM_SEED1_GRID_COL):
56             self.grid_seed1.SetColLabelValue(i, 
57                     constnumbers.LABEL_FORMAT_SEED1_GRID_COL_AFTER1.format(i))
58         self.grid_seed1.DisableDragGridSize()
59         self.grid_seed1.EnableEditing(False)
60
61     def _init_event(self):
62         u""" イベントの登録 """
63         self.spin_ctrl_amulet_num.Bind(wx.EVT_SPINCTRL, self.OnSpinCtrlChanged)
64         self.grid_seed1.Bind(wx.EVT_SIZE, self.OnGridSizeChanged)
65
66     def OnSpinCtrlChanged(self, event):
67         u""" SpinCtrlの値が変わった時のイベント。
68         設定できるコンボボックスの数を調節する """
69         val = self.spin_ctrl_amulet_num.GetValue()
70         for combo1, combo2 in zip(self.combobox_amulet_list[:val], self.combobox_skill_list[:val]):
71             combo1.Enable()
72             combo2.Enable()
73         for combo1, combo2 in zip(self.combobox_amulet_list[val:], self.combobox_skill_list[val:]):
74             combo1.Disable()
75             combo2.Disable()
76
77     def OnGridSizeChanged(self, event):
78         u""" Gridサイズの変更時 """
79         width, height = self.grid_seed1.GetParent().GetSize()
80         each_width = (width - 55) / (constnumbers.NUM_SEED1_GRID_COL) # consider margin size
81         self.grid_seed1.SetRowLabelSize(45)
82         for col in range(constnumbers.NUM_SEED1_GRID_COL):
83             self.grid_seed1.SetColSize(col, each_width) 
84
85     def bind_button_search(self, event_func, evt=wx.EVT_BUTTON):
86         u""" 検索ボタンへのイベント登録 """
87         self.button_search.Bind(evt, event_func)
88
89     def bind_button_clear(self, event_func, evt=wx.EVT_BUTTON):
90         u""" クリアボタンへのイベント登録 """
91         self.button_clear.Bind(evt, event_func)
92
93     def bind_radio_button(self, event_func, evt=wx.EVT_RADIOBUTTON):
94         u""" ラジオボタンが押された時のイベントをセットする """
95         self.radio_button_usage1.Bind(evt, event_func)
96         self.radio_button_usage2.Bind(evt, event_func)