-
Notifications
You must be signed in to change notification settings - Fork 2
/
splash.py
86 lines (73 loc) · 2.89 KB
/
splash.py
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
import wx, sys, os
import Resources.variables as vars
def GetRoundBitmap(w, h, r=10):
maskColour = wx.Colour(0,0,0)
shownColour = wx.Colour(5,5,5)
b = wx.EmptyBitmap(w,h)
dc = wx.MemoryDC(b)
dc.SetBrush(wx.Brush(maskColour))
dc.DrawRectangle(0,0,w,h)
dc.SetBrush(wx.Brush(shownColour))
dc.SetPen(wx.Pen(shownColour))
dc.DrawCircle(w/2,h/2,w/2)
dc.SelectObject(wx.NullBitmap)
b.SetMaskColour(maskColour)
return b
def GetRoundShape(w, h, r=10):
if sys.version_info[0] < 3:
return wx.RegionFromBitmap(GetRoundBitmap(w,h,r))
else:
return wx.Region(GetRoundBitmap(w,h,r))
class ZyneSplashScreen(wx.Frame):
def __init__(self, parent, img, mainframe):
display = wx.Display(0)
size = display.GetGeometry()[2:]
wx.Frame.__init__(self, parent, -1, "", pos=(-1, size[1]/6),
style = wx.FRAME_SHAPED | wx.SIMPLE_BORDER | wx.FRAME_NO_TASKBAR | wx.STAY_ON_TOP)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.mainframe = mainframe
self.bmp = wx.Bitmap(os.path.join(img), wx.BITMAP_TYPE_PNG)
self.w, self.h = self.bmp.GetWidth(), self.bmp.GetHeight()
self.SetClientSize((self.w, self.h))
if wx.Platform == "__WXGTK__":
self.Bind(wx.EVT_WINDOW_CREATE, self.SetWindowShape)
else:
self.SetWindowShape()
dc = wx.ClientDC(self)
dc.DrawBitmap(self.bmp, 0, 0, True)
self.fc = wx.CallLater(3500, self.OnClose)
self.Center(wx.HORIZONTAL)
if sys.platform == 'win32':
self.Center(wx.VERTICAL)
wx.CallAfter(self.Show)
def SetWindowShape(self, *evt):
r = GetRoundShape(self.w, self.h)
self.hasShape = self.SetShape(r)
def OnPaint(self, evt):
w,h = self.GetSize()
dc = wx.PaintDC(self)
dc.SetPen(wx.Pen("#000000"))
dc.SetBrush(wx.Brush("#000000"))
dc.DrawRectangle(0,0,w,h)
dc.DrawBitmap(self.bmp, 0,0,True)
dc.SetTextForeground("#000000")
font = dc.GetFont()
ptsize = font.GetPointSize()
if vars.constants["PLATFORM"] == "win32":
pass
else:
font.SetFaceName("Monaco")
font.SetPointSize(ptsize+3)
dc.SetFont(font)
dc.DrawLabel("Modular Soft Synthesizer", wx.Rect(20, 230, 400, 18), wx.ALIGN_LEFT)
if vars.constants["PLATFORM"] == "win32":
pass
else:
font.SetPointSize(ptsize+1)
dc.SetFont(font)
dc.DrawLabel("Olivier Bélanger", wx.Rect(0, 305, 400, 15), wx.ALIGN_CENTER)
dc.DrawLabel("ajaxsoundstudio, %s" % vars.constants["YEAR"], wx.Rect(0, 340, 400, 15), wx.ALIGN_CENTER)
dc.DrawLabel("v. %s" % vars.constants["VERSION"], wx.Rect(0, 360, 400, 15), wx.ALIGN_CENTER)
def OnClose(self):
self.mainframe.Show()
self.Destroy()