Skip to content
This repository was archived by the owner on Mar 31, 2020. It is now read-only.

Commit 6487ed6

Browse files
committed
Splash page fix
1 parent 2152fc1 commit 6487ed6

File tree

4 files changed

+50
-24
lines changed

4 files changed

+50
-24
lines changed

src/main.py

+23-8
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from .view import Window, View
66
from .front import Front
77
from .splash import Splash
8-
from . import SETTINGS, widget
8+
from . import SETTINGS
99

1010

1111
parser = configparser.ConfigParser()
@@ -21,13 +21,10 @@ def __init__(self, *args, **kwds):
2121
for name, val in parser['APP'].items():
2222
getattr(self, name)(val)
2323

24-
# self.frame = widget.PrimaryFrame(self)
2524
self.window = Window(self)
26-
27-
# self.frame.pack(expand=True, fill='both')
2825
self.window.pack(expand=True, fill='both')
29-
3026
self.update()
27+
3128
self.splash = View(
3229
self.window,
3330
window=Splash(self.window),
@@ -40,14 +37,32 @@ def __init__(self, *args, **kwds):
4037
height=self.winfo_height(),
4138
width=self.winfo_width()
4239
)
43-
self.after(0, self.build, self.splash)
40+
self.execution_order = iter((
41+
self.splash,
42+
self.front,
43+
# self.result
44+
))
45+
self.update()
46+
self.current: View = None
47+
self.after(0, self.switch)
48+
49+
def switch(self):
50+
try:
51+
self.update()
52+
if self.current is not None:
53+
self.current.data.cleanup()
54+
self.current = next(self.execution_order)
55+
self.build(self.current)
56+
except StopIteration:
57+
self.cleanup()
4458

4559
def build(self, view):
4660
self.update()
47-
view.master.set_view(view)
61+
view.master.change_view(view, 'up')
62+
self.update()
4863
view.data.build()
4964

5065
def cleanup(self):
5166
with suppress(Exception):
52-
self.front.cleanup()
67+
self.current.cleanup()
5368
self.destroy()

src/splash.py

+25-14
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,42 @@ class Splash(widget.PrimaryFrame):
1111
questions = json.load(fp)
1212

1313
def init(self):
14-
self.intro = Intro(self)
15-
self.intro.pack(fill='both', expand=True)
14+
self.intro = Intro(self, bg='gray')
1615

17-
self.btn_confirm = widget.PrimaryButton(self.intro.window, command=self.next, text='Okay')
16+
self.btn_confirm = widget.PrimaryButton(
17+
self.intro.window, command=self.switch, text='Okay'
18+
)
19+
self.update()
1820

1921
def build(self):
22+
self.update()
23+
self.intro.pack(fill='both', expand=True)
2024
self.intro.build()
21-
bouncer = View(self.intro.window, window=self.btn_confirm)
22-
self.bounce(bouncer)
25+
self.bounce(
26+
View(self.intro.window, window=self.btn_confirm)
27+
)
2328

2429
def bounce(self, view):
30+
self.update()
2531
start = view.master.center + (Direction.LEFT * 175) + (Direction.DOWN * 100)
2632
wid = view.master.set_view(view, start)
2733
motion = BounceBall(view.master, wid, view.master.origin, speed=6)
2834
motion.kick(Direction.UP)
2935
self.after(0, view.master.run, motion)
3036

31-
def next(self):
37+
def switch(self):
3238
self.master.master.switch()
3339

40+
def cleanup(self):
41+
self.intro.cleanup()
42+
3443

3544
class Intro(widget.PrimaryFrame):
3645
intro = (DOCS / 'intro.txt').read_text()
3746

3847
def init(self):
39-
self.window = Window(self, bg='gray')
40-
self.window.pack(fill='both', expand=True)
48+
self.window = Window(self)
49+
self.window.pack(expand=True, fill='both')
4150
self.update()
4251

4352
width = self.winfo_reqwidth()
@@ -53,15 +62,17 @@ def init(self):
5362
width=width,
5463
font=('sys', 12), justify='center'
5564
)
56-
self.update()
5765

5866
def build(self):
59-
self.window.set_view(self.title)
67+
self.update()
6068
adjust = (Direction.LEFT * 175) + (Direction.DOWN * 100)
61-
self.window.set_view(
62-
self.intro,
63-
self.window.center + adjust
64-
)
69+
70+
self.window.set_view(self.title)
71+
self.window.set_view(self.intro, self.window.center + adjust)
72+
self.update()
73+
74+
def cleanup(self):
75+
self.window.animater.clear()
6576

6677

6778
class Question(widget.PrimaryFrame):

src/view.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def move_out(self, view: View, direction: Direction):
4747
del self.views[view]
4848

4949
def change_view(self, view: View, direction: Direction = None):
50-
if direction is None:
50+
if direction is None or self.current is None:
5151
self.set_view(view)
5252
return
5353
if not isinstance(direction, Direction):

src/widget.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def __init__(self, *args, **kwds):
8686

8787
class PrimaryCanvas(tk.Canvas):
8888
DEFAULT = {
89-
'bg': 'black'
89+
'bg': 'gray'
9090
}
9191

9292
def __init__(self, *args, **kwds):

0 commit comments

Comments
 (0)