vdmAPI/VDMAPI/Display/kivyDisplay.py

108 lines
2.6 KiB
Python
Executable File

#!/usr/bin/env python
from ..VDM import VDM
import os
# get screen resolution
import tkinter
root = tkinter.Tk()
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
from kivy.config import Config
Config.set('graphics','fullscreen', 0)
Config.set('graphics','resizable',0)
Config.set('graphics','position', 'custom')
Config.set('graphics','width', 600)
Config.set('graphics','height', 150)
# align bottom and 50 px from right
Config.set('graphics','left', width-Config.getint('graphics', 'width')-45)
Config.set('graphics','top', height-Config.getint('graphics', 'height')-17)
from kivy.core.window import Window
import kivy
from kivy.app import App
from kivy.properties import *
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
Builder.load_string('''
<guiApp>:
Button:
id: prev
size_hint_x: None
width: 100
text: '<<'
on_press: root._prevAction()
Label:
id: content
text_size: 300, None
text: root.currentVdm
Button:
id: next
size_hint_x: None
width: 100
text: '>>'
on_press: root._nextAction()
''')
class guiApp(GridLayout):
""" display all vdm into kivy interface """
# https://kivy.org/docs/api-kivy.properties.html#kivy.properties.ListProperty
# NumericProperty, StringProperty, ListProperty, ObjectProperty,
# BooleanProperty, BoundedNumericProperty, OptionProperty, ReferenceListProperty, AliasProperty, DictProperty
indice = NumericProperty(0)
vdm = ListProperty([])
currentVdm = StringProperty('no VDM load for the moment')
def __init__(self, **kwargs):
super(guiApp, self).__init__(**kwargs)
self._keyboard = Window.request_keyboard(self._keyboard_closed, self)
self._keyboard.bind(on_key_down = self._on_keyboard_down)
self.v = VDM()
self.vdm = ['toto', 'titi', 'tutu']#self.v.get()
self.render()
def _nextAction(self):
if self.indice == len(self.vdm)-1:
self.vdm = self.v.get()
self.indice = 0
else:
self.indice += 1
self.render()
def _prevAction(self):
if self.indice > 0:
self.indice -= 1
self.render()
def _keyboard_closed(self):
self._keyboard.unbind(on_key_down = self._on_keyboard_down)
self._keyboard = None
def _on_keyboard_down(self, *args):
if args[1][1] == 'right':
self._nextAction()
elif args[1][1] == 'left':
self._prevAction()
def render(self):
#print(self.indice)
#print(self.vdm[self.indice])
self.currentVdm = self.vdm[self.indice]
#self.ids.content.text = self.vdm[self.indice]
class kivyApp(App):
def build(self):
return guiApp(cols=3, pos=(0,0))