OSDN Git Service

add alchemy simulator
[amulettoolsmh4/main.git] / view / notebookseed1view.py
index 0105ce4..8234daf 100644 (file)
@@ -11,11 +11,11 @@ import constnumbers
 
 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
@@ -24,6 +24,7 @@ class NoteBookSeed1View():
         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")
 
@@ -44,21 +45,12 @@ class NoteBookSeed1View():
                 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 = {}
@@ -76,7 +68,6 @@ class NoteBookSeed1View():
     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)
 
@@ -91,14 +82,6 @@ class NoteBookSeed1View():
             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()
@@ -118,6 +101,10 @@ class NoteBookSeed1View():
         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()
@@ -139,75 +126,38 @@ class NoteBookSeed1View():
             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()