Install mxmake:
$ pip install git+https://github.com/mxstack/mxmake.git@main
Create target folder and initialize project:
| # Rationale: | |
| # | |
| # - Zope nowadays runs behind WSGI | |
| # - Modern (web) applications might want to serve websockets | |
| # - Tools utilizing asyncio are a common thing and some might want to use them | |
| # - Having twisted and/or asyncio opens a new universe of computing next to serving a web application inside one process | |
| # | |
| # Discussion: | |
| # | |
| # - Any discussion about why to use twisted is pointless. |
Install Node package manager (npm). It is the tool required to install JavaScript packages and libraries:
sudo apt install npm
Install Node version manager (nvm). Volto frontend requires a Node.js server for resource delivery and server side rendering. Node version manager is a tool which helps running the version of Node.js required by Volto:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
| --- video_ffpyplayer.py 2021-04-07 11:27:07.000952871 +0200 | |
| +++ video.py 2021-04-07 11:27:09.336960012 +0200 | |
| @@ -58,6 +58,7 @@ | |
| from kivy.clock import Clock, mainthread | |
| from kivy.logger import Logger | |
| from kivy.core.video import VideoBase | |
| +from kivy.core.window import Window | |
| from kivy.graphics import Rectangle, BindTexture | |
| from kivy.graphics.texture import Texture | |
| from kivy.graphics.fbo import Fbo |
| # Requirements | |
| # debian/ubuntu | |
| apt-get -y update && apt-get -y upgrade | |
| apt-get -y install strongswan xl2tpd libstrongswan-standard-plugins libstrongswan-extra-plugins | |
| VPN_SERVER_IP='' | |
| VPN_IPSEC_PSK='y' | |
| VPN_USER='' | |
| VPN_PASSWORD='' |
| # proposal for kivy language extensions | |
| BoxLayout: | |
| ############ | |
| # conditions | |
| if root.foo: | |
| Label: | |
| text: 'Condition true' |
| import io | |
| import urllib | |
| import threading | |
| from kivy.uix.image import Image | |
| from kivy.properties import StringProperty | |
| from kivy.core.image import Image as CoreImage | |
| from kivy.clock import Clock | |
| from coverbehavior import CoverBehavior | |
| from decimal import Decimal | |
| from kivy.lang import Builder | |
| from kivy.properties import ListProperty | |
| Builder.load_string(""" | |
| <-CoverBehavior>: | |
| canvas.before: | |
| StencilPush | |
| Rectangle: |
| from kivy.uix.screenmanager import ScreenManager | |
| from kivy.uix.screenmanager import ScreenManagerException | |
| from kivy.uix.screenmanager import Screen | |
| class ExtScreenManager(ScreenManager): | |
| def __init__(self, **kwargs): | |
| Logger.debug('ExtScreenManager.__init__') | |
| self.register_event_type('on_finish_screen_switch') |