OSDN Git Service

implemented gui
[amulettoolsmh4/main.git] / amulettool.py
index ae047f4..d145fa3 100644 (file)
@@ -1,4 +1,77 @@
 # -*- coding: utf-8 -*-
 
-# \82¨\8eç\82è\83X\83L\83\8b\82ÌSeed\93Á\92è\83N\83\89\83X
+# お守りスキルのSeed特定ツールのコントロールクラス
 # 2013/12/04 written by kei9
+
+import threading
+import time
+import os.path
+
+import wx
+
+import view
+import model
+
+
+class AmuletToolController(wx.App):
+    u""" アプリケーションの制御クラス """
+    def OnInit(self):
+        self.frame_view = view.MainFrameView("view")
+        
+        self._init_events()
+
+        self.frame_view.Show()
+
+        self._init_database()
+        return True
+
+    def _init_events(self):
+        u"""イベント登録"""
+        frame = self.frame_view.frame
+
+        # menu event
+        frame.Bind(wx.EVT_MENU, self.OnClose, id=self.frame_view.ID_MENU_ITEM_EXIT)
+        frame.Bind(wx.EVT_MENU, self.OnAboutBox, id=self.frame_view.ID_MENU_ITEM_ABOUT)
+
+    def _init_database(self):
+        u""" DBの初期設定 """
+
+        if not os.path.exists(model.DB_FILE_NAME):
+            u""" DBが存在しない時は再生成する """
+            frame = self.frame_view.frame
+            generator = model.DataBaseGenerator(model.DB_FILE_NAME)
+            #generator = model.DataBaseGenerator()
+
+            dlg_view = view.GaugeDialogView("view")
+            def _loop():
+                while t1.is_alive():
+                    dlg_view.gauge.Pulse()
+                    time.sleep(0.2)
+                dlg_view.finish_generation()
+
+            t1 = threading.Thread(target=generator.generate_db)
+            t2 = threading.Thread(target=_loop)
+            t1.start()
+            t2.start()
+
+            dlg_view.ShowModal()
+            t1.join()
+            t2.join()
+            dlg_view.Destroy()
+
+        # access to db
+        db_accessor = model.DataBaseAccessor(model.DB_FILE_NAME)
+
+
+
+
+    def OnClose(self, evt):
+        self.frame_view.Close()
+
+    def OnAboutBox(self, evt):
+        info = self.frame_view.GetAboutInfo()
+        wx.AboutBox(info)
+
+if __name__ == "__main__":
+    app = AmuletToolController(False)
+    app.MainLoop()