Add Separate base navigation module for NavigationApp
This commit is contained in:
parent
ea2fdf0dcf
commit
c829b44842
110
src/bitmessagekivy/base_navigation.py
Normal file
110
src/bitmessagekivy/base_navigation.py
Normal 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'))
|
Reference in New Issue
Block a user