Add Separate base navigation module for NavigationApp

This commit is contained in:
shekhar-cis 2022-08-19 21:24:09 +05:30
parent ea2fdf0dcf
commit c829b44842
Signed by untrusted user: shekhar-cis
GPG Key ID: F4F00AB04E83F9A7

View File

@ -0,0 +1,110 @@
# pylint: disable=unused-argument, no-name-in-module, too-few-public-methods
"""
Base class for Navigation Drawer
"""
from kivy.lang import Observable
from kivy.properties import (
BooleanProperty,
NumericProperty,
StringProperty
)
from kivy.metrics import dp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.spinner import Spinner
from kivy.clock import Clock
from kivy.core.window import Window
from kivymd.uix.list import (
OneLineAvatarIconListItem,
OneLineListItem
)
from pybitmessage.bmconfigparser import config
class BaseLanguage(Observable):
"""UI Language"""
observers = []
lang = None
def __init__(self, defaultlang):
super(BaseLanguage, self).__init__()
self.ugettext = None
self.lang = defaultlang
@staticmethod
def _(text):
return text
class BaseNavigationItem(OneLineAvatarIconListItem):
"""NavigationItem class for kivy Ui"""
badge_text = StringProperty()
icon = StringProperty()
active = BooleanProperty(False)
def currentlyActive(self):
"""Currenly active"""
for nav_obj in self.parent.children:
nav_obj.active = False
self.active = True
class BaseNavigationDrawerDivider(OneLineListItem):
"""
A small full-width divider that can be placed
in the :class:`MDNavigationDrawer`
"""
disabled = True
divider = None
_txt_top_pad = NumericProperty(dp(8))
_txt_bot_pad = NumericProperty(dp(8))
def __init__(self, **kwargs):
super(BaseNavigationDrawerDivider, self).__init__(**kwargs)
self.height = dp(16)
class BaseNavigationDrawerSubheader(OneLineListItem):
"""
A subheader for separating content in :class:`MDNavigationDrawer`
Works well alongside :class:`NavigationDrawerDivider`
"""
disabled = True
divider = None
theme_text_color = 'Secondary'
class BaseContentNavigationDrawer(BoxLayout):
"""ContentNavigationDrawer class for kivy Uir"""
def __init__(self, *args, **kwargs):
"""Method used for contentNavigationDrawer"""
super(BaseContentNavigationDrawer, self).__init__(*args, **kwargs)
Clock.schedule_once(self.init_ui, 0)
def init_ui(self, dt=0):
"""Clock Schdule for class contentNavigationDrawer"""
self.ids.scroll_y.bind(scroll_y=self.check_scroll_y)
def check_scroll_y(self, instance, somethingelse):
"""show data on scroll down"""
if self.ids.identity_dropdown.is_open:
self.ids.identity_dropdown.is_open = False
class BaseIdentitySpinner(Spinner):
"""Base Class for Identity Spinner(Dropdown)"""
def __init__(self, *args, **kwargs):
"""Method used for setting size of spinner"""
super(BaseIdentitySpinner, self).__init__(*args, **kwargs)
self.dropdown_cls.max_height = Window.size[1] / 3
self.values = list(addr for addr in config.addresses()
if config.getboolean(str(addr), 'enabled'))