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 = AToiDeWebDebug()
# ...
import atexit
atexit.register(_web_debug.close)
while True:
continue
|