from rubicon.java import JavaClass, JavaInterface Button = JavaClass("android/widget/Button") OnClickListener = JavaInterface("android/view/View$OnClickListener") RelativeLayout = JavaClass("android/widget/RelativeLayout")
""" Just a guy with dots and lines """ from rubicon.java import JavaClass, JavaInterface import toga import toga_android.widgets.base CustomView = JavaClass('org/beeware/android/CustomView') IView = JavaInterface('org/beeware/android/IView') Color = JavaClass("android/graphics/Color") Paint = JavaClass("android/graphics/Paint") class PlatformIndependentCanvasWidget: @property def _impl(self): impl = getattr(self, '__impl', None) if impl is None: self.__impl = CanvasWidget() return self.__impl class CanvasWidget: def __init__(self): super().__init__() self.custom_view = CustomView( toga_android.widgets.base._get_activity().getApplicationContext()) self.custom_view.setView(MicroCustomCanvasView()) @property def native(self):
from rubicon.java import JavaClass, JavaInterface ArrayAdapter = JavaClass("android/widget/ArrayAdapter") # `ArrayAdapter` can also be typecast into a `SpinnerAdapter`. # This is required until `rubicon-java` explores the interfaces # implemented by a class's subclasses. ArrayAdapter._alternates.append(b'Landroid/widget/SpinnerAdapter;') Button = JavaClass("android/widget/Button") CompoundButton__OnCheckedChangeListener = JavaInterface( "android/widget/CompoundButton$OnCheckedChangeListener") EditText = JavaClass("android/widget/EditText") HorizontalScrollView = JavaClass("android/widget/HorizontalScrollView") ImageView = JavaClass("android/widget/ImageView") ImageView__ScaleType = JavaClass("android/widget/ImageView$ScaleType") LinearLayout = JavaClass("android/widget/LinearLayout") LinearLayout__LayoutParams = JavaClass( "android/widget/LinearLayout$LayoutParams") NumberPicker = JavaClass("android/widget/NumberPicker") OnItemSelectedListener = JavaInterface( "android/widget/AdapterView$OnItemSelectedListener") RelativeLayout = JavaClass("android/widget/RelativeLayout") RelativeLayout__LayoutParams = JavaClass( "android/widget/RelativeLayout$LayoutParams") ScrollView = JavaClass("android/widget/ScrollView") SeekBar = JavaClass("android/widget/SeekBar") SeekBar__OnSeekBarChangeListener = JavaInterface( "android/widget/SeekBar$OnSeekBarChangeListener") Switch = JavaClass("android/widget/Switch") Spinner = JavaClass("android/widget/Spinner") TableLayout = JavaClass("android/widget/TableLayout")
print("Current time in current time zone") print(">>> datetime.datetime.now().isoformat()") print(now.isoformat()) utcnow = datetime.datetime.utcnow() print("Current time in UTC") print(">>> datetime.datetime.utcnow().isoformat()") print(utcnow.isoformat()) def run_demo_code(): print_now() print_int_list() print_beeware_members() OnClickListener = JavaInterface("android/view/View$OnClickListener") IPythonApp = JavaInterface("org/asheesh/beeware/pythonstubsapp/IPythonApp") Button = JavaClass("android/widget/Button") RelativeLayout = JavaClass("android/widget/RelativeLayout") RelativeLayout__LayoutParams = JavaClass( "android/widget/RelativeLayout$LayoutParams") ScrollView = JavaClass("android/widget/ScrollView") View__MeasureSpec = JavaClass("android/view/View$MeasureSpec") class OnClickRunDemoCode(OnClickListener): def onClick(self, _view): run_demo_code() class Application(IPythonApp):
class SelectorMinusSelect(selectors.PollSelector): # This class removes the `select()` method from PollSelector. On Android, # this would be an error -- it would result in the app freezing, triggering # an App Not Responding pop-up from the platform, and the user killing # the app. # # Instead, the AndroidEventLoop cooperates with the native Android event # loop to be woken up to get work done as needed. def select(self, *args, **kwargs): raise NotImplementedError( "SelectorMinusSelect refuses to select(); see comments.") Runnable = JavaInterface("java/lang/Runnable") class AndroidEventLoop(asyncio.SelectorEventLoop): def _android_call_later(self, runnable, timeout_millis): print("Doing call_later on", self, runnable, timeout_millis) self._handler.postDelayed(runnable, timeout_millis) def _add_callback(self, handle): # Do the work that `SelectorEventLoop` would do, but also ask the event loop to run. ret = super()._add_callback(handle) self._android_call_later( self._runnables["_run_event_loop_once_cooperatively"], 0) return ret def _call_soon(self, callback, args, context):
from rubicon.java import JavaClass, JavaInterface ArrayAdapter = JavaClass("android/widget/ArrayAdapter") Button = JavaClass("android/widget/Button") AlertDialog__Builder = JavaClass("android/app/AlertDialog$Builder") BitmapFactory = JavaClass("android/graphics/BitmapFactory") CompoundButton__OnCheckedChangeListener = JavaInterface( "android/widget/CompoundButton$OnCheckedChangeListener") DialogInterface__OnClickListener = JavaInterface( "android/content/DialogInterface$OnClickListener") EditText = JavaClass("android/widget/EditText") Gravity = JavaClass("android/view/Gravity") ImageView = JavaClass("android/widget/ImageView") ImageView__ScaleType = JavaClass("android/widget/ImageView$ScaleType") InputType = JavaClass("android/text/InputType") LinearLayout = JavaClass("android/widget/LinearLayout") LinearLayout__LayoutParams = JavaClass( "android/widget/LinearLayout$LayoutParams") NumberPicker = JavaClass("android/widget/NumberPicker") OnClickListener = JavaInterface("android/view/View$OnClickListener") OnItemSelectedListener = JavaInterface( "android/widget/AdapterView$OnItemSelectedListener") R__attr = JavaClass("android/R$attr") R__color = JavaClass("android/R$color") R__drawable = JavaClass("android/R$drawable") R__layout = JavaClass("android/R$layout") RelativeLayout = JavaClass("android/widget/RelativeLayout") RelativeLayout__LayoutParams = JavaClass( "android/widget/RelativeLayout$LayoutParams") ScrollView = JavaClass("android/widget/ScrollView") SeekBar = JavaClass("android/widget/SeekBar")
from rubicon.java import JavaClass, JavaInterface # The Android cookiecutter template creates an app whose main Activity is # called `MainActivity`. The activity assumes that we will store a reference # to an implementation/subclass of `IPythonApp` in it. MainActivity = JavaClass('org/beeware/android/MainActivity') # The `IPythonApp` interface in Java allows Python code to # run on Android activity lifecycle hooks such as `onCreate()`. IPythonApp = JavaInterface('org/beeware/android/IPythonApp')
from rubicon.java import JavaClass, JavaInterface Identifier = JavaClass("io/github/nylonmc/content/wrapper/IdentifierWrapper") _ItemWrapper = JavaClass("io/github/nylonmc/content/wrapper/ItemWrapper") _IItem = JavaInterface("io/github/nylonmc/content/interfaces/IItem") class Item(_IItem): _settings = None def __init__(self, settings): super().__init__() self._settings = settings def onUse(self, world, user, hand, return_value): #Equivelent To Item.use pass def getSettings(self, return_value): return_value.set(self._settings) ItemSettings = JavaClass("io/github/nylonmc/content/proxy/ItemSettingsProxy") _ItemGroupsClass = JavaClass("io/github/nylonmc/content/proxy/ItemGroupProxy") ItemGroups = _ItemGroupsClass() _JRegistryClass = JavaClass("io/github/nylonmc/content/proxy/RegistryProxy") _JRegistry = _JRegistryClass() _id_to_iitem = dict() _id_to_item_wrapper = dict()
from rubicon.java import JavaClass, JavaInterface MotionEvent = JavaClass("android/view/MotionEvent") View__OnTouchListener = JavaInterface("android/view/View$OnTouchListener")
print("Current time in current time zone") print(">>> datetime.datetime.now().isoformat()") print(now.isoformat()) utcnow = datetime.datetime.utcnow() print("Current time in UTC") print(">>> datetime.datetime.utcnow().isoformat()") print(utcnow.isoformat()) def run_demo_code(): print_now() print_int_list() print_beeware_members() OnClickListener = JavaInterface("android/view/View$OnClickListener") IPythonApp = JavaInterface("org/beeware/android/IPythonApp") Button = JavaClass("android/widget/Button") LinearLayout = JavaClass("android/widget/LinearLayout") class OnClickRunDemoCode(OnClickListener): def onClick(self, _view): run_demo_code() class Application(IPythonApp): def onCreate(self): print("called Python onCreate method")
from rubicon.java import JavaClass, JavaInterface ArrayAdapter = JavaClass("android/widget/ArrayAdapter") Button = JavaClass("android/widget/Button") AlertDialog__Builder = JavaClass("android/app/AlertDialog$Builder") BitmapFactory = JavaClass("android/graphics/BitmapFactory") DialogInterface__OnClickListener = JavaInterface( "android/content/DialogInterface$OnClickListener") EditText = JavaClass("android/widget/EditText") Gravity = JavaClass("android/view/Gravity") ImageView = JavaClass("android/widget/ImageView") InputType = JavaClass("android/text/InputType") NumberPicker = JavaClass("android/widget/NumberPicker") OnClickListener = JavaInterface("android/view/View$OnClickListener") OnItemSelectedListener = JavaInterface( "android/widget/AdapterView$OnItemSelectedListener") R__layout = JavaClass("android/R$layout") RelativeLayout = JavaClass("android/widget/RelativeLayout") RelativeLayout__LayoutParams = JavaClass( "android/widget/RelativeLayout$LayoutParams") ScrollView = JavaClass("android/widget/ScrollView") Spinner = JavaClass("android/widget/Spinner") TextView = JavaClass("android/widget/TextView") TextWatcher = JavaInterface("android/text/TextWatcher") ViewGroup__LayoutParams = JavaClass("android/view/ViewGroup$LayoutParams") View__MeasureSpec = JavaClass("android/view/View$MeasureSpec") # Indicate to `rubicon-java` that `ArrayAdapter` can also be typecast into a # `SpinnerAdapter`. This is required until `rubicon-java` explores the interfaces # implemented by a class's subclasses. ArrayAdapter._alternates.append(b'Landroid/widget/SpinnerAdapter;')
from rubicon.java import JavaClass, JavaInterface ValueCallback = JavaInterface("android/webkit/ValueCallback") WebView = JavaClass("android/webkit/WebView") WebViewClient = JavaClass("android/webkit/WebViewClient")
from rubicon.java import JavaClass, JavaInterface _NylonClientCommands = JavaClass( "io/github/nylonmc/content/NylonClientCommands") def register(builder): _NylonClientCommands.register(builder) ArgumentBuilders = JavaClass( "io/github/cottonmc/clientcommands/ArgumentBuilders") Command = JavaInterface("com/mojang/brigadier/Command")
from rubicon.java import JavaClass, JavaInterface SwipeRefreshLayout = JavaClass( "androidx/swiperefreshlayout/widget/SwipeRefreshLayout") SwipeRefreshLayout__OnRefreshListener = JavaInterface( "androidx/swiperefreshlayout/widget/SwipeRefreshLayout$OnRefreshListener")
from rubicon.java import JavaClass, JavaInterface InputType = JavaClass("android/text/InputType") TextWatcher = JavaInterface("android/text/TextWatcher")