Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/app_main.py
blob: de1d277e1d01e9d4f115c1cb42a00f0d0a200301 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112

# python import
import logging, multiprocessing, os
# ..
from gettext import gettext as _

# atoidejouer import
from atoideweb.tools import config
# init debug
config.Config(debug=True)
# ...
from atoideweb.tools import keys

# bewype import
from bewype.flask import app, controllers, run_app

# get application logger
logger = logging.getLogger('atoidejouer')
logger.setLevel(logging.DEBUG)


# ...
from werkzeug import SharedDataMiddleware
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {
  '/static': os.path.join(os.path.dirname(__file__), 'static')
})


class AToiDeWeb(object):

    def __init__(self):
        # start web server
        controllers.init_controllers(namespace='atoideweb.controllers')
        self._server = multiprocessing.Process(target=run_app)
        self._server.start()
        # sequence dict and list
        self.graphic_keys = keys.StoryKeys('graphics', self)
        self.sound_keys = keys.StoryKeys('sounds', self)
        # keep thread & screen
        self._current = None
        self._number_of_keys = 1

    def update_number_of_keys(self):
        # set max
        _graphic_max = self.graphic_keys.get_max_frame()
        _sound_max = self.sound_keys.get_max_frame()
        _max = _graphic_max if _graphic_max > _sound_max else _sound_max
        # update value
        self._number_of_keys = _max + 1

    def get_current_screen(self):
        pass

    def set_current_screen(self, name, screen):
        self._current = name

    def read_file(self, file_path):
        """Read saved data from datastore and resume activity based on a
        previous state.
        """
        # init content
        _data = None
        # read file
        _file = open(file_path, 'r')
        try:
            _data = _file.read()
        finally:
            _file.close()
        # parse json data
        self.graphic_keys.loads(_data)
        self.sound_keys.loads(_data)
        # set activity new number of keys
        self.update_number_of_keys()
        # clear
        self.graphic_keys.ask_clear()
        # refresh default
        # _current = self.get_current_screen()
        # _current.refresh()

    def write_file(self, file_path):
        """Dummy overiding ...
        """
        # content dict
        _data_dict = {
                'graphic_names': self.graphic_keys._names,
                'graphic_keys': self.graphic_keys._keys,
                'sound_names': self.sound_keys._names,
                'sound_keys': self.sound_keys._keys,
                }
        # prepare content
        _data = json.dumps(_data_dict)
        # save content
        _f = open(file_path, 'wb')
        try:
            _f.write(_data)
        finally:
            _f.close()

    def close(self):
        # stop web thread
        self._server.terminate()
        self._server.join()


if __name__ == "__main__":
    # ...
    _web_debug = AToiDeWeb()
    # ...
    import atexit
    atexit.register(_web_debug.close)
    while True:
        continue