fixed CQ for bitmessagekivy.mpybit module part8 along with platform separation for linux and android
This commit is contained in:
parent
2ce6196f75
commit
3a04b67355
49
src/bitmessagekivy/get_platform.py
Normal file
49
src/bitmessagekivy/get_platform.py
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
from sys import platform as _sys_platform
|
||||||
|
from os import environ
|
||||||
|
|
||||||
|
"""
|
||||||
|
We need to check platform and set environ for KIVY_CAMERA, if requires, before importing kivy.
|
||||||
|
|
||||||
|
We cannot use sys.platform directly because it returns 'linux' on android devices as well.
|
||||||
|
We cannot use kivy.util.platform beacuse it imports kivy beforehand and thus setting environ
|
||||||
|
after that doesn't make any sense.
|
||||||
|
|
||||||
|
So we needed to copy the `_get_platform` function from kivy.utils
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def _get_platform():
|
||||||
|
# On Android sys.platform returns 'linux2', so prefer to check the
|
||||||
|
# existence of environ variables set during Python initialization
|
||||||
|
kivy_build = environ.get("KIVY_BUILD", "")
|
||||||
|
if kivy_build in {"android", "ios"}:
|
||||||
|
return kivy_build
|
||||||
|
elif "P4A_BOOTSTRAP" in environ:
|
||||||
|
return "android"
|
||||||
|
elif "ANDROID_ARGUMENT" in environ:
|
||||||
|
# We used to use this method to detect android platform,
|
||||||
|
# leaving it here to be backwards compatible with `pydroid3`
|
||||||
|
# and similar tools outside kivy's ecosystem
|
||||||
|
return "android"
|
||||||
|
elif _sys_platform in ("win32", "cygwin"):
|
||||||
|
return "win"
|
||||||
|
elif _sys_platform == "darwin":
|
||||||
|
return "macosx"
|
||||||
|
elif _sys_platform.startswith("linux"):
|
||||||
|
return "linux"
|
||||||
|
elif _sys_platform.startswith("freebsd"):
|
||||||
|
return "linux"
|
||||||
|
return "unknown"
|
||||||
|
|
||||||
|
|
||||||
|
platform = _get_platform()
|
||||||
|
|
||||||
|
if platform not in ("android", "unknown"):
|
||||||
|
"""
|
||||||
|
After tweaking a little bit with opencv camera, it's possible to make camera
|
||||||
|
go on and off as required while the app is still running.
|
||||||
|
|
||||||
|
Other camera provider such as `gi` has some issue upon closing the camera.
|
||||||
|
by setting KIVY_CAMERA environment variable before importing kivy, we are forcing it to use opencv camera provider.
|
||||||
|
"""
|
||||||
|
environ["KIVY_CAMERA"] = "opencv"
|
|
@ -1,76 +1,16 @@
|
||||||
"""
|
|
||||||
Bitmessage android(mobile) interface
|
|
||||||
"""
|
|
||||||
# pylint: disable=too-many-lines,import-error,no-name-in-module,unused-argument
|
# pylint: disable=too-many-lines,import-error,no-name-in-module,unused-argument
|
||||||
# pylint: disable=too-many-ancestors,too-many-locals,useless-super-delegation
|
# pylint: disable=too-many-ancestors,too-many-locals,useless-super-delegation
|
||||||
# pylint: disable=protected-access
|
# pylint: disable=protected-access
|
||||||
|
|
||||||
from sys import platform as _sys_platform
|
# pylint: disable=too-many-return-statements
|
||||||
from os import environ
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
We need to check platform and set environ for KIVY_CAMERA, if requires, before importing kivy.
|
Bitmessage android(mobile) interface
|
||||||
|
|
||||||
We cannot use sys.platform directly because it returns 'linux' on android devices as well.
|
|
||||||
We cannot use kivy.util.platform beacuse it imports kivy beforehand and thus setting environ
|
|
||||||
after that doesn't make any sense.
|
|
||||||
|
|
||||||
So we needed to copy the `_get_platform` function from kivy.utils
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def _get_platform():
|
from bitmessagekivy.get_platform import platform
|
||||||
# On Android sys.platform returns 'linux2', so prefer to check the
|
|
||||||
# existence of environ variables set during Python initialization
|
|
||||||
kivy_build = environ.get("KIVY_BUILD", "")
|
|
||||||
if kivy_build in {"android", "ios"}:
|
|
||||||
return kivy_build
|
|
||||||
elif "P4A_BOOTSTRAP" in environ:
|
|
||||||
return "android"
|
|
||||||
elif "ANDROID_ARGUMENT" in environ:
|
|
||||||
# We used to use this method to detect android platform,
|
|
||||||
# leaving it here to be backwards compatible with `pydroid3`
|
|
||||||
# and similar tools outside kivy's ecosystem
|
|
||||||
return "android"
|
|
||||||
elif _sys_platform in ("win32", "cygwin"):
|
|
||||||
return "win"
|
|
||||||
elif _sys_platform == "darwin":
|
|
||||||
return "macosx"
|
|
||||||
elif _sys_platform.startswith("linux"):
|
|
||||||
return "linux"
|
|
||||||
elif _sys_platform.startswith("freebsd"):
|
|
||||||
return "linux"
|
|
||||||
return "unknown"
|
|
||||||
|
|
||||||
|
|
||||||
platform = _get_platform()
|
|
||||||
|
|
||||||
if platform == "android":
|
|
||||||
from jnius import autoclass, cast
|
|
||||||
from android.runnable import run_on_ui_thread
|
|
||||||
from android import python_act as PythonActivity
|
|
||||||
|
|
||||||
Toast = autoclass("android.widget.Toast")
|
|
||||||
String = autoclass("java.lang.String")
|
|
||||||
CharSequence = autoclass("java.lang.CharSequence")
|
|
||||||
context = PythonActivity.mActivity
|
|
||||||
|
|
||||||
@run_on_ui_thread
|
|
||||||
def show_toast(text, length):
|
|
||||||
t = Toast.makeText(context, text, length)
|
|
||||||
t.show()
|
|
||||||
|
|
||||||
|
|
||||||
else:
|
|
||||||
"""
|
|
||||||
After tweaking a little bit with opencv camera, it's possible to make camera
|
|
||||||
go on and off as required while the app is still running.
|
|
||||||
|
|
||||||
Other camera provider such as `gi` has some issue upon closing the camera.
|
|
||||||
by setting KIVY_CAMERA environment variable before importing kivy, we are forcing it to use opencv camera provider.
|
|
||||||
"""
|
|
||||||
environ["KIVY_CAMERA"] = "opencv"
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
from bitmessagekivy import identiconGeneration
|
from bitmessagekivy import identiconGeneration
|
||||||
|
@ -106,7 +46,6 @@ from kivy.uix.recycleview.views import RecycleDataViewBehavior
|
||||||
from kivy.uix.screenmanager import Screen
|
from kivy.uix.screenmanager import Screen
|
||||||
from kivy.uix.spinner import Spinner
|
from kivy.uix.spinner import Spinner
|
||||||
from kivy.uix.textinput import TextInput
|
from kivy.uix.textinput import TextInput
|
||||||
from kivy.utils import platform
|
|
||||||
from kivymd.uix.button import MDIconButton
|
from kivymd.uix.button import MDIconButton
|
||||||
from kivymd.uix.dialog import MDDialog
|
from kivymd.uix.dialog import MDDialog
|
||||||
from kivymd.uix.label import MDLabel
|
from kivymd.uix.label import MDLabel
|
||||||
|
@ -145,6 +84,21 @@ if platform != "android":
|
||||||
from kivy.config import Config
|
from kivy.config import Config
|
||||||
|
|
||||||
Config.set("input", "mouse", "mouse, multitouch_on_demand")
|
Config.set("input", "mouse", "mouse, multitouch_on_demand")
|
||||||
|
elif platform == "android":
|
||||||
|
from jnius import autoclass, cast
|
||||||
|
from android.runnable import run_on_ui_thread
|
||||||
|
from android import python_act as PythonActivity
|
||||||
|
|
||||||
|
Toast = autoclass("android.widget.Toast")
|
||||||
|
String = autoclass("java.lang.String")
|
||||||
|
CharSequence = autoclass("java.lang.CharSequence")
|
||||||
|
context = PythonActivity.mActivity
|
||||||
|
|
||||||
|
@run_on_ui_thread
|
||||||
|
def show_toast(text, length):
|
||||||
|
t = Toast.makeText(context, text, length)
|
||||||
|
t.show()
|
||||||
|
|
||||||
# pylint: disable=too-few-public-methods,too-many-arguments,attribute-defined-outside-init
|
# pylint: disable=too-few-public-methods,too-many-arguments,attribute-defined-outside-init
|
||||||
|
|
||||||
KVFILES = [
|
KVFILES = [
|
||||||
|
|
Reference in New Issue
Block a user