from kivy.config import Config
Config.set('graphics','shaped',1)
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window
from kivy.clock import Clock
from kivy.uix.image import Image

# get screen size
import ctypes
user32 = ctypes.windll.user32
screensize = user32.GetSystemMetrics(0), user32.GetSystemMetrics(1)

class MainScreen(FloatLayout):
    pass
    
class SplashScreen(FloatLayout):
    pass

class TestApp(App):

    def build(self):
    
        Window.fullscreen = False
        Window.borderless = False # doesn't work
        Window.size = (800, 600)
        Window.left = 0
        Window.top = 30
        
        Clock.schedule_once(self.set)
        
        return MainScreen()
        
    def set(self,dt):
    
        Window.shape_image = 'defaultshape.png' # doesn't work
        Window.shape_mode = 'default'

class IconApp(App):

    def build(self):
    
        Window.fullscreen = False
        Window.borderless = True
        Window.size = (256, 256)
        Window.left = int((screensize[0]-Window.size[0])/2)
        Window.top = int((screensize[1]-Window.size[1])/2)
        
        Clock.schedule_once(self.set)
        
        icon = BoxLayout()
        icon.add_widget(Image(source='kivy-icon-256.png'))
        return icon
        
    def set(self,dt):
    
        Window.shape_image = 'kivy-icon-256.png'
        Window.shape_mode = 'binalpha'

def switchToMain():

    IconApp().stop()
    TestApp().run()
    
def switchToLogo():

    TestApp().stop()
    IconApp().run()
    

if __name__ == '__main__':

    # desired order:
    # both logo and main are shaped
    
    Clock.schedule_once(lambda dt: switchToMain(), 2)
    IconApp().run()
    
    # reverse order:
    # only logo is shaped, but main screen is borderless
    
    #Clock.schedule_once(lambda dt: switchToLogo(), 2)
    #TestApp().run()
    