OSDN Git Service

rename database_ids & some variables in order to understand easily
[amulettoolsmh4/main.git] / amulettool.py
index c94bcd2..3f8d6a5 100644 (file)
@@ -16,7 +16,7 @@ import view
 import model
 
 SETTING_FILE = u"settings"
-SETTING_THRESHOLD = u"threshold"
+SETTING_THRESHOLD1 = u"threshold1"
 SETTING_SKILLS = u"skills"
 
 def _get_base_dir():
@@ -139,7 +139,7 @@ class AmuletToolController(wx.App):
             skill_names = [self._skill_id2name_dict[x] for x in skill_ids]
             for combo in combo_dict[amu_key]:
                 combo.Clear()
-                combo.Append(u"なし")
+                combo.Append(view.VAL_NO_SKILL)
                 for name in skill_names:
                     combo.Append(name)
                 combo.SetSelection(0)
@@ -151,26 +151,28 @@ class AmuletToolController(wx.App):
 
     def _set_skill_list_from_amulet(self, amulet_id):
         u""" お守り種類の選択が変わった時の動作 """
-        skill_selected = []
         for i, (combo, skill_dict) in enumerate(zip(
                 [self.frame_view.combo_box_amulet_search_skill1, 
                     self.frame_view.combo_box_amulet_search_skill2], 
                 [self._amulet_id2skill1_id_dict, self._amulet_id2skill2_id_dict]
                 )):
-            combo.Clear()
             skill_ids = skill_dict[amulet_id]
+            combo.Clear()
+            if i == 1:
+                combo.Append(view.VAL_NO_SKILL)
+            else:
+                skill1_selected = skill_ids[0]
             for skill_id in skill_ids:
                 combo.Append(self._skill_id2name_dict[skill_id])
-            skill_selected.append(skill_ids[i])
-            combo.SetSelection(i)
-        self._set_spin_range(amulet_id, skill_selected[0], skill_selected[1])
+            combo.SetSelection(0)   # combo1 = skill1, combo2 = No Skill
+        self._set_spin_range(amulet_id, skill1_selected, None)
 
     def _set_spin_views(self):
         u""" Spin Ctrlの最大最小をセット"""
         min1, max1, min2, max2 = self.db_accessor.get_skill_minmax()
         self.frame_view.spin_ctrl_amulet_search_slot_num.SetRange(view.SLOT_MIN, view.SLOT_MAX)
-        self.frame_view.spin_ctrl_highlight.SetRange(view.THRESHOLD2_MIN, view.THRESHOLD2_MAX)
-        self.frame_view.spin_ctrl_highlight.SetValue(self._highlight_threshold)
+        self.frame_view.spin_ctrl_highlight.SetRange(view.THRESHOLD1_MIN, view.THRESHOLD1_MAX)
+        self.frame_view.spin_ctrl_highlight.SetValue(self._highlight_threshold1)
 
     def _set_check_list_views(self):
         u""" CheckListBoxの値のセット """
@@ -180,9 +182,14 @@ class AmuletToolController(wx.App):
 
     def _set_spin_range(self, amulet_id, skill1_id, skill2_id):
         u""" スキルに応じてSpinCtrlの最大最小をセットする """
-        minmax_dict = self.db_accessor.select_minmax_from_skill_ids(amulet_id, [skill1_id, skill2_id])
-        min1, max1 = minmax_dict[skill1_id][0], minmax_dict[skill1_id][1]
-        min2, max2 = minmax_dict[skill2_id][2], minmax_dict[skill2_id][3]
+        if skill2_id is None:
+            minmax_dict = self.db_accessor.select_minmax_from_skill_ids(amulet_id, [skill1_id])
+            min1, max1 = minmax_dict[skill1_id][0], minmax_dict[skill1_id][1]
+            min2, max2 = 0, 0
+        else:
+            minmax_dict = self.db_accessor.select_minmax_from_skill_ids(amulet_id, [skill1_id, skill2_id])
+            min1, max1 = minmax_dict[skill1_id][0], minmax_dict[skill1_id][1]
+            min2, max2 = minmax_dict[skill2_id][2], minmax_dict[skill2_id][3]
         self.frame_view.spin_ctrl_amulet_search_skill1_val.SetRange(min1, max1)
         self.frame_view.spin_ctrl_amulet_search_skill2_val.SetRange(min2, max2)
 
@@ -203,6 +210,7 @@ class AmuletToolController(wx.App):
         seed_sets = self.db_accessor.select_seeds(amu_id2skill_id_list_dict)
         self.frame_view.text_ctrl_seed_result.SetValue(u"""Seedの候補は{0}個です。""".format(len(seed_sets)))
 
+        self.frame_view.list_box_seed.Clear()
         if len(seed_sets) > 0:
             for seed in seed_sets:
                 self.frame_view.list_box_seed.Append(u"{0}".format(seed))
@@ -231,7 +239,7 @@ class AmuletToolController(wx.App):
         seed = self.frame_view.text_ctrl_seed_select.GetValue()
         if seed.isdigit():
             seed = int(seed)
-            skill_dict, threshold2_dict = self.db_accessor.select_skills_from_seeds([seed])
+            skill_dict, threshold1_dict = self.db_accessor.select_skills_from_seeds([seed])
 
             try:
                 text_ctrl_dict = self.frame_view.text_ctrl_seed_skill_dict
@@ -240,8 +248,8 @@ class AmuletToolController(wx.App):
                     amu_id = self._amulet_name2id_dict[amu_name]
                     for txt_ctr, skill_id in zip(text_ctrl_dict[amu_key], skill_dict[amu_id][seed]):
                         txt_ctr.SetValue(self._skill_id2name_dict[skill_id])
-                for txt_ctr, threshold2 in zip(text_ctrl_dict[view.KEY_THRESHOLD2], threshold2_dict[seed]):
-                    txt_ctr.SetValue(u"{0}".format(threshold2))
+                for txt_ctr, threshold1 in zip(text_ctrl_dict[view.KEY_THRESHOLD1], threshold1_dict[seed]):
+                    txt_ctr.SetValue(u"{0}".format(threshold1))
                 self._update_highlight()
 
             except KeyError, e:
@@ -257,7 +265,7 @@ class AmuletToolController(wx.App):
             amu_id = self._amulet_name2id_dict[amu_name]
             for txt_ctr in text_ctrl_dict[amu_key]:
                 txt_ctr.Clear()
-        for txt_ctr in text_ctrl_dict[view.KEY_THRESHOLD2]:
+        for txt_ctr in text_ctrl_dict[view.KEY_THRESHOLD1]:
             txt_ctr.Clear()
         self.frame_view.list_box_seed_skill_amulet_prospect.Clear() 
 
@@ -279,7 +287,10 @@ class AmuletToolController(wx.App):
         skill1_name = self.frame_view.combo_box_amulet_search_skill1.GetStringSelection()
         skill2_name = self.frame_view.combo_box_amulet_search_skill2.GetStringSelection()
         skill1_id = self._skill_name2id_dict[skill1_name]
-        skill2_id = self._skill_name2id_dict[skill2_name]
+        if skill2_name in self._skill_name2id_dict:
+            skill2_id = self._skill_name2id_dict[skill2_name]
+        else:
+            skill2_id = None
         if self.frame_view.amulet2radio_button_dict[view.NAME_AMULET1].GetValue():
             amu_id = self._amulet_name2id_dict[view.NAME_AMULET1]
         elif self.frame_view.amulet2radio_button_dict[view.NAME_AMULET2].GetValue():
@@ -290,7 +301,6 @@ class AmuletToolController(wx.App):
             raise IndexError(u"amulet id is unknown")
         self._set_spin_range(amu_id, skill1_id, skill2_id)
 
-
     def OnClickAmuletSearch(self, evt):
         u""" search seeds from amulet condition """
         skill1_name = self.frame_view.combo_box_amulet_search_skill1.GetStringSelection()
@@ -310,11 +320,14 @@ class AmuletToolController(wx.App):
         list_box = self.frame_view.list_box_amulet_search_seeds
         if skill1_name == skill2_name:
             self._show_message_dialog(message=u"異なるスキルを選択してください")
-        elif skill1_val == 0 or skill2_val == 0:
-            self._show_message_dialog(message=u"スキルの値には0以外を指定してください")
+        elif skill1_val == 0:
+            self._show_message_dialog(message=u"第1スキルの値には0以外を指定してください")
         else:
             skill1_id = self._skill_name2id_dict[skill1_name]
-            skill2_id = self._skill_name2id_dict[skill2_name]
+            if skill2_name in self._skill_name2id_dict:
+                skill2_id = self._skill_name2id_dict[skill2_name]
+            else:
+                skill2_id = None # for skill2 is 0
             suff_dict = {}
             tup = self.db_accessor.get_sufficient_value(
                 amu_id, skill1_id, skill2_id, skill1_val, skill2_val)
@@ -359,7 +372,7 @@ class AmuletToolController(wx.App):
 
     def OnClickSettingOK(self, evt):
         u""" get settings of setting tab """
-        self._highlight_threshold = self.frame_view.spin_ctrl_highlight.GetValue()
+        self._highlight_threshold1 = self.frame_view.spin_ctrl_highlight.GetValue()
         self._highlight_skills = set([self._skill_name2id_dict[x] for x in 
                 self.frame_view.check_list_box_highlight_skill.GetCheckedStrings()
                 if x in self._skill_name2id_dict])
@@ -367,8 +380,8 @@ class AmuletToolController(wx.App):
 
     def OnClickSettingClear(self, evt):
         u""" reset settings of setting tab """
-        self._highlight_threshold = view.HIGHLIGHT_THRESHOLD
-        self.frame_view.spin_ctrl_highlight.SetValue(view.HIGHLIGHT_THRESHOLD)
+        self._highlight_threshold1 = view.HIGHLIGHT_THRESHOLD1
+        self.frame_view.spin_ctrl_highlight.SetValue(view.HIGHLIGHT_THRESHOLD1)
         self._highlight_skills = set()
         for idx in self.frame_view.check_list_box_highlight_skill.GetChecked():
             self.frame_view.check_list_box_highlight_skill.Check(idx, False)
@@ -385,9 +398,9 @@ class AmuletToolController(wx.App):
                     text_ctrl.SetBackgroundColour("Yellow")
                 else:
                     text_ctrl.SetBackgroundColour(wx.NullColor)
-        for text_ctrl in text_dict[view.KEY_THRESHOLD2]:
+        for text_ctrl in text_dict[view.KEY_THRESHOLD1]:
             val = text_ctrl.GetValue()
-            if val.isdigit() and int(val) >= self._highlight_threshold:
+            if val.isdigit() and int(val) >= self._highlight_threshold1:
                 text_ctrl.SetBackgroundColour("Yellow")
             else:
                 text_ctrl.SetBackgroundColour(wx.NullColor)
@@ -433,7 +446,7 @@ class AmuletToolController(wx.App):
 
     def _write_settings(self):
         with open(SETTING_FILE, mode="w") as f:
-            data = {SETTING_THRESHOLD:self._highlight_threshold
+            data = {SETTING_THRESHOLD1:self._highlight_threshold1
                     SETTING_SKILLS:self._highlight_skills}
             pickle.dump(data, f)
 
@@ -442,13 +455,13 @@ class AmuletToolController(wx.App):
             with open(SETTING_FILE, mode="r") as f:
                 try:
                     data = pickle.load(f)
-                    self._highlight_threshold = data[SETTING_THRESHOLD
+                    self._highlight_threshold1 = data[SETTING_THRESHOLD1
                     self._highlight_skills = data[SETTING_SKILLS]
                 except EOFError, e:
-                    self._highlight_threshold = view.HIGHLIGHT_THRESHOLD
+                    self._highlight_threshold1 = view.HIGHLIGHT_THRESHOLD1
                     self._highlight_skills = set()
         else:
-            self._highlight_threshold = view.HIGHLIGHT_THRESHOLD
+            self._highlight_threshold1 = view.HIGHLIGHT_THRESHOLD1
             self._highlight_skills = set()
 
 if __name__ == "__main__":