class NoteBookSeed1View():
u""" メインのフレームのSeed1特定タブ """
- SEPARATER = u"/"
def __init__(self, frame):
self.frame = frame
self._init_view()
self._init_event()
+ self._seed1, self._table_no, self._no = None, None, None
def _init_view(self):
# initialize view
self.radiobox_tenun = xrc.XRCCTRL(self.frame, "RadioBoxTenun")
self.button_search = xrc.XRCCTRL(self.frame, "ButtonSeed1Search")
self.button_clear = xrc.XRCCTRL(self.frame, "ButtonSeed1Clear")
+ self.button_skill1 = xrc.XRCCTRL(self.frame, "ButtonSkill1SearchFromSeed1")
self.spin_ctrl_amulet_num = xrc.XRCCTRL(self.frame, "SpinCtrlSeed1AmuletNum")
xrc.XRCCTRL(self.frame, "ComboBoxSeed1Skill7")]
# text ctrl
+ u"""TableNoを結果TextCtrlで示す"""
self.text_ctrl_result = xrc.XRCCTRL(self.frame, "TextCtrl1Seed1Result")
# grid
self.grid_seed1 = xrc.XRCCTRL(self.frame, "GridSeed1Table")
- u"""Tableを結果TextCtrlで示し、No.をrowラベル、行にはseed1, 天運個数、
- 1-7枠目の値を表示する。1-7枠目をお守りの種類とスキル名で分けると面倒なので
- 合体させて1つの行で表示した方がいいかもしれない。この場合は行数は9となる"""
- self.grid_seed1.CreateGrid(constnumbers.NUM_SEED1_GRID_ROW, constnumbers.NUM_SEED1_GRID_COL)
- self.grid_seed1.SetColLabelValue(0, constnumbers.LABEL_FORMAT_SEED1_GRID_COL1)
- self.grid_seed1.SetColLabelValue(1, constnumbers.LABEL_FORMAT_SEED1_GRID_COL2)
- for i in range(2, constnumbers.NUM_SEED1_GRID_COL):
- self.grid_seed1.SetColLabelValue(i,
- constnumbers.LABEL_FORMAT_SEED1_GRID_COL_AFTER2.format(i-1))
- self.grid_seed1.DisableDragGridSize()
- self.grid_seed1.EnableEditing(False)
+
self._amulet_names = []
self._amuletname2skillnames_dict = {}
def _init_event(self):
u""" イベントの登録 """
self.spin_ctrl_amulet_num.Bind(wx.EVT_SPINCTRL, self.OnSpinCtrlChanged)
- self.grid_seed1.Bind(wx.EVT_SIZE, self.OnGridSizeChanged)
for amu_combo in self.combobox_amulet_list:
amu_combo.Bind(wx.EVT_COMBOBOX, self.OnAmuletComboChanged)
combo1.Disable()
combo2.Disable()
- def OnGridSizeChanged(self, event):
- u""" Gridサイズの変更時 """
- width, height = self.grid_seed1.GetParent().GetSize()
- each_width = (width - 60) / (constnumbers.NUM_SEED1_GRID_COL) # consider margin size
- self.grid_seed1.SetRowLabelSize(45)
- for col in range(constnumbers.NUM_SEED1_GRID_COL):
- self.grid_seed1.SetColSize(col, each_width)
-
def OnAmuletComboChanged(self, event):
u""" お守りの種類を選択するコンボボックス変更時 """
obj = event.GetEventObject()
u""" クリアボタンへのイベント登録 """
self.button_clear.Bind(evt, event_func)
+ def bind_button_skill1(self, event_func, evt=wx.EVT_BUTTON):
+ u""" 対応第1スキルボタンへのイベント登録 """
+ self.button_skill1.Bind(evt, event_func)
+
def get_tenun_radio_key(self):
u""" 天運の錬金で使用したお守りの種類を示すkeyを返す """
idx = self.radiobox_tenun.GetSelection()
result_list.append((amulet_name, skill_name))
return result_list
- def clear_highlight(self):
- u""" セルの強調表示をクリアする """
- for row in range(self.grid_seed1.GetNumberRows()):
- for col in range(self.grid_seed1.GetNumberCols()):
- self.grid_seed1.SetCellBackgroundColour(row, col, wx.NullColor)
-
- def update_highlight(self, skill_names, color=u"Yellow"):
- u""" 指定されたスキル名に一致するセルを強調表示する """
- for row in range(self.grid_seed1.GetNumberRows()):
- for col in range(2, self.grid_seed1.GetNumberCols()):
- val = self.grid_seed1.GetCellValue(row, col)
- try:
- amu_name, skill_name = val.split(self.SEPARATER)
- if skill_name in skill_names:
- self.grid_seed1.SetCellBackgroundColour(row, col, color)
- else:
- self.grid_seed1.SetCellBackgroundColour(row, col, wx.NullColor)
- except ValueError as e:
- #cannot unpack
- self.grid_seed1.SetCellBackgroundColour(row, col, wx.NullColor)
-
- def set_seed1_dict(self, seed1_dict, select_seed1=None):
- u""" seed1から(no, table_no, result_num, amulet_names, skill_names)への辞書を元に、
- noを列ラベルとする表を作成する
- select_seed1がNoneでなければ、対応する行を選択状態とする"""
- row_num = len(seed1_dict)
- diff = row_num - self.grid_seed1.GetNumberRows()
- if diff > 0:
- self.grid_seed1.AppendRows(diff, False)
- elif diff < 0:
- self.grid_seed1.DeleteRows(0, -diff, False)
-
- for row, seed1 in enumerate(
- sorted(seed1_dict.keys(), key=lambda x: seed1_dict[x][0])): # order by no
- no, table_no, result_num, amu_names, skill_names = seed1_dict[seed1]
- self.grid_seed1.SetRowLabelValue(row, u"{0}".format(no))
- self.grid_seed1.SetCellValue(row, 0, "{0}".format(seed1))
- self.grid_seed1.SetCellValue(row, 1, "{0}".format(result_num))
- for col, amu_name, skill_name in zip(
- range(2, constnumbers.NUM_SEED1_GRID_COL), amu_names, skill_names):
- if amu_name is not None and skill_name is not None:
- val = u"{0}{1}{2}".format(
- constnumbers.AMULET_NAME_TO_SHORT_NAME_DICT[amu_name], self.SEPARATER, skill_name)
- self.grid_seed1.SetCellValue(row, col, val)
- else:
- self.grid_seed1.SetCellValue(row, col, u"")
- if seed1 == select_seed1:
- self.grid_seed1.MakeCellVisible(row, 0)
- self.grid_seed1.SelectRow(row)
-
def clear_combobox(self):
u""" comboboxの選択されたインデックスを0にする """
for amu_combo, skill_combo in zip(self.combobox_amulet_list, self.combobox_skill_list):
amu_combo.SetSelection(0)
skill_combo.SetSelection(0)
- def clear_seed1_grid(self):
- u""" 表の値をクリアする """
- for row in range(self.grid_seed1.GetNumberRows()):
- self.grid_seed1.SetRowLabelValue(row, u"")
- for col in range(self.grid_seed1.GetNumberCols()):
- self.grid_seed1.SetCellValue(row, col, u"")
- self.clear_highlight()
-
def clear_text_result(self):
u""" 結果を示すTextCtrlから値のクリア """
self.text_ctrl_result.SetValue(u"")
+ self._seed1, self._table_no, self._no = None, None, None
def set_text_result(self, value):
- u""" 結果を示すTextCtrlへの値のセット """
+ u""" 結果を示すTextCtrlへ値のセット """
self.text_ctrl_result.SetValue(value)
+ self._seed1, self._table_no, self._no = None, None, None
+ def set_text_result_by_seed1(self, seed1, table_no, no):
+ u""" 結果を示すTextCtrlへの値のセット """
+ if seed1 is not None and table_no is not None and no is not None:
+ self.text_ctrl_result.SetValue(
+ u"Seed1: {0}, テーブルNo: {1}, 通し番号: {2}".format(seed1, table_no, no))
+ self._seed1, self._table_no, self._no = seed1, table_no, no
+ else:
+ self.clear_text_result()
+
+ def get_result_seed1(self):
+ u""" 現在の検索結果のSeed1を返す """
+ return self._seed1
+
+ def set_skill1_button_enable(self, value):
+ u""" 対応スキル検索ボタンの有効・無効の切り替え """
+ if value is True:
+ self.button_skill1.Enable()
+ else:
+ self.button_skill1.Disable()