Updated all popup's with new UI and made all static path dynamic

This commit is contained in:
navjot 2020-07-14 17:30:01 +05:30
parent 0d0c86b2b6
commit efc35c5f69
No known key found for this signature in database
GPG Key ID: 9EE70AFD71357F1C
16 changed files with 536 additions and 554 deletions

2
.gitignore vendored
View File

@ -21,4 +21,4 @@ build
pyan/
.buildozer/
bin/
src/images/kivy/default_identicon/*png
src/images/kivy/default_identicon/*.png

View File

@ -4,6 +4,7 @@
orientation: 'vertical'
spacing: dp(5)
SearchBar:
id: address_search
GridLayout:
id: identi_tag
padding: [20, 0, 0, 5]
@ -11,6 +12,7 @@
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:

View File

@ -11,6 +11,7 @@
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:

View File

@ -5,7 +5,7 @@
y: self.parent.y + self.parent.height/2 - self.height + 5
<SearchBar@BoxLayout>:
id: search_bar
# id: search_bar
size_hint_y: None
height: self.minimum_height

View File

@ -10,6 +10,7 @@
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:

View File

@ -5,6 +5,7 @@
orientation: 'vertical'
spacing: dp(5)
SearchBar:
id:inbox_search
GridLayout:
id: identi_tag
padding: [20, 0, 0, 5]
@ -12,6 +13,7 @@
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
#FloatLayout:

View File

@ -137,9 +137,11 @@
<Random>:
name:"random"
BoxLayout:
orientation: "vertical"
ScrollView:
id:add_random_bx
<RandomBoxlayout>:
orientation: "vertical"
#buttons-area-outer
BoxLayout:
orientation: "vertical"
@ -174,7 +176,11 @@
size_hint_x: None
width: dp(190)
helper_text_mode: "on_error"
helper_text: "Please enter your label name"
# helper_text: "Please enter your label name"
on_text: app.root.ids.sc7.add_validation(self)
canvas.before:
Color:
rgba: (0,0,0,1)
AnchorLayout:
MDFillRoundFlatIconButton:

View File

@ -1,9 +1,11 @@
<MyAddress>:
name: 'myaddress'
BoxLayout:
id: main_box
orientation: 'vertical'
spacing: dp(5)
SearchBar:
id: search_bar
GridLayout:
id: identi_tag
padding: [20, 0, 0, 5]
@ -11,6 +13,7 @@
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: 'My Addresses'
font_style: 'Subtitle2'
FloatLayout:

View File

@ -13,21 +13,13 @@
<GrashofPopup>:
id: popup
size_hint : (None,None)
height: 2*(label.height + address.height) + 10
width :app.window_size[0] - (app.window_size[0]/10 if app.app_platform == 'android' else app.window_size[0]/4)
title: 'add contact\'s'
background: app.image_path + '/popup.jpeg'
title_size: sp(20)
title_color: 0.4, 0.3765, 0.3451, 1
auto_dismiss: False
separator_color: 0.3529, 0.3922, 0.102, 0.7
BoxLayout:
size_hint_y: 0.5
orientation: 'vertical'
spacing:dp(20)
id: popup_box
orientation: 'vertical'
# spacing:dp(20)
# spacing: "12dp"
size_hint_y: None
# height: "120dp"
height: 1.5*label.height+address.height
BoxLayout:
orientation: 'vertical'
MDTextField:
@ -50,63 +42,14 @@
canvas.before:
Color:
rgba: (0,0,0,1)
BoxLayout:
spacing:5
orientation: 'horizontal'
MDRaisedButton:
id: save_addr
size_hint: 1.5, None
height: dp(40)
on_release:
root.savecontact()
MDLabel:
font_style: 'H6'
text: 'Save'
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
on_press: root.dismiss()
on_press: root.close_pop()
MDLabel:
font_style: 'H6'
text: 'Cancel'
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
MDRaisedButton:
size_hint: 2, None
height: dp(40)
on_press: root.dismiss()
on_release:
app.root.ids.scr_mngr.current = 'scanscreen'
MDLabel:
font_style: 'H6'
text: 'Scan QR code'
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
<AddbookDetailPopup>:
id: addbook_popup
size_hint : (None,None)
height: 4*(add_label.height)
width :app.window_size[0] - (app.window_size[0]/10 if app.app_platform == 'android' else app.window_size[0]/4)
background: app.image_path + '/popup.jpeg'
separator_height: 0
auto_dismiss: False
BoxLayout:
size_hint_y: None
spacing:dp(70)
id: addbook_popup_box
orientation: 'vertical'
BoxLayout:
size_hint_y: None
height: 2.5*(add_label.height)
orientation: 'vertical'
spacing:dp(15)
MDLabel:
spacing:dp(5)
MDLabel
font_style: 'Subtitle2'
theme_text_color: 'Primary'
text: "Label"
@ -147,61 +90,14 @@
pos_hint: {'center_x': 0, 'center_y': 1}
icon: 'content-copy'
on_press: app.copy_composer_text(root.address)
BoxLayout:
id: addbook_btn
spacing:5
orientation: 'horizontal'
MDRaisedButton:
size_hint: 2, None
height: dp(40)
on_press: root.send_message_to()
MDLabel:
font_style: 'H6'
text: 'Send message to'
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
font_size: '10sp'
on_press: root.update_addbook_label(root.address)
MDLabel:
font_style: 'H6'
text: 'Save'
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
on_press: root.dismiss()
on_press: root.close_pop()
MDLabel:
font_style: 'H6'
text: 'Cancel'
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
<MyaddDetailPopup>:
id: myadd_popup
size_hint : (None,None)
height: 4.5*(myaddr_label.height+ my_add_btn.children[0].height)
width :app.window_size[0] - (app.window_size[0]/10 if app.app_platform == 'android' else app.window_size[0]/4)
background: app.image_path + '/popup.jpeg'
auto_dismiss: False
separator_height: 0
BoxLayout:
id: myadd_popup_box
size_hint_y: None
spacing:dp(70)
orientation: 'vertical'
BoxLayout:
size_hint_y: None
orientation: 'vertical'
spacing:dp(25)
height: dp(1.2*(myaddr_label.height))
orientation: 'vertical'
MDLabel:
id: myaddr_label
font_style: 'Subtitle2'
@ -224,6 +120,7 @@
BoxLayout:
orientation: 'horizontal'
MDLabel:
id: label_address
font_style: 'Body1'
theme_text_color: 'Primary'
text: root.address
@ -237,6 +134,8 @@
id: my_add_btn
spacing:5
orientation: 'horizontal'
size_hint_y: None
height: self.minimum_height
MDRaisedButton:
size_hint: 2, None
height: dp(40)
@ -250,9 +149,8 @@
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
on_press: root.dismiss()
on_press: app.root.ids.scr_mngr.current = 'showqrcode'
on_press: app.root.ids.sc15.qrdisplay()
on_press: app.root.ids.sc15.qrdisplay(root, root.address)
MDLabel:
font_style: 'H6'
text: 'Show QR code'
@ -262,7 +160,6 @@
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
on_press: root.dismiss()
on_press: root.close_pop()
MDLabel:
font_style: 'H6'
@ -398,6 +295,7 @@
id: sd_btn
orientation: 'vertical'
MDRaisedButton:
id: dismiss_btn
on_press: root.dismiss()
size_hint: .2, 0
pos_hint: {'x': 0.8, 'y': 0}

View File

@ -4,6 +4,7 @@
orientation: 'vertical'
spacing: dp(5)
SearchBar:
id: sent_search
GridLayout:
id: identi_tag
padding: [20, 0, 0, 5]
@ -11,6 +12,7 @@
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:

View File

@ -204,12 +204,18 @@
# halign: 'right'
bold: True
MDDropDownItem:
id: dropdown_item
id: drop_item
# pos_hint: {'center_x': .5, 'center_y': .5}
text: 'italiano'
dropdown_max_height: 150
dropdown_bg: [1, 1, 1, 1]
# pos_hint: {'center_x': 0.5, 'center_y': 0}
items: [f"{i}" for i in ['System Setting','U.S. English','italiano','Esperanto','dansk','Deutsch','Pirate English','francais','Nederlands','norsk bokmal','polski','portugues europeu']]
on_release: root.menu.open()
on_press: root.set_caller()
# MDDropDownItem:
# id: dropdown_item
# text: 'italiano'
# dropdown_max_height: 150
# dropdown_bg: [1, 1, 1, 1]
# # pos_hint: {'center_x': 0.5, 'center_y': 0}
# items: [f"{i}" for i in ['System Setting','U.S. English','italiano','Esperanto','dansk','Deutsch','Pirate English','francais','Nederlands','norsk bokmal','polski','portugues europeu']]
BoxLayout:
spacing:5
orientation: 'horizontal'
@ -292,7 +298,7 @@
text: "Type:"
halign: 'left'
MDDropDownItem:
id: dropdown_item
id: dropdown_item2
dropdown_bg: [1, 1, 1, 1]
text: 'none'
pos_hint: {'x': 0.9, 'y': 0}

View File

@ -11,6 +11,7 @@
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:

View File

@ -43,6 +43,7 @@
text_color: root.active_color
BadgeText:
id: badge_txt
text: f"{root.badge_text}"
theme_text_color: "Custom"
#text_color: root.active_color

View File

@ -110,7 +110,7 @@ from kivy.utils import platform
from kivymd.uix.button import MDIconButton
from kivymd.uix.dialog import MDDialog
from kivymd.uix.label import MDLabel
from kivymd.uix.button import MDFlatButton
from kivymd.uix.button import MDFlatButton, MDRaisedButton
from kivymd.uix.list import (
ILeftBody,
ILeftBodyTouch,
@ -138,6 +138,7 @@ from datetime import datetime
from kivymd.uix.behaviors.elevation import RectangularElevationBehavior
from kivymd.uix.bottomsheet import MDCustomBottomSheet
from kivy.effects.dampedscroll import DampedScrollEffect
from kivymd.uix.menu import MDDropdownMenu
if platform != "android":
@ -254,16 +255,17 @@ class Inbox(Screen):
self.set_defaultAddress()
self.account = state.association
if state.searcing_text:
self.children[2].children[0].children[0].scroll_y = 1.0
# self.children[2].children[0].children[0].scroll_y = 1.0
self.ids.scroll_y.scroll_y = 1.0
where = ["subject", "message"]
what = state.searcing_text
xAddress = "toaddress"
data = []
self.ids.identi_tag.children[0].text = ""
self.ids.tag_label.text = ""
self.inboxDataQuery(xAddress, where, what)
self.ids.identi_tag.children[0].text = ""
self.ids.tag_label.text = ""
if self.queryreturn:
self.ids.identi_tag.children[0].text = "Inbox"
self.ids.tag_label.text = "Inbox"
state.kivyapp.get_inbox_count()
self.set_inboxCount(state.inbox_count)
for mail in self.queryreturn:
@ -287,7 +289,7 @@ class Inbox(Screen):
self.has_refreshed = True
self.set_mdList(data)
self.children[2].children[0].children[0].bind(scroll_y=self.check_scroll_y)
self.ids.scroll_y.bind(scroll_y=self.check_scroll_y)
else:
self.set_inboxCount("0")
content = MDLabel(
@ -305,7 +307,7 @@ class Inbox(Screen):
def set_inboxCount(self, msgCnt): # pylint: disable=no-self-use
"""This method is used to sent inbox message count"""
src_mng_obj = state.kivyapp.root.ids.content_drawer.ids.inbox_cnt
src_mng_obj.children[0].children[0].text = showLimitedCnt(int(msgCnt))
src_mng_obj.ids.badge_txt.text = showLimitedCnt(int(msgCnt))
def inboxDataQuery(self, xAddress, where, what, start_indx=0, end_indx=20):
"""This method is used for retrieving inbox data"""
@ -326,7 +328,7 @@ class Inbox(Screen):
meny._txt_right_pad = dp(70)
meny.add_widget(
AvatarSampleWidget(
source="./images/text_images/{}.png".format(
source=state.imageDir + "/text_images/{}.png".format(
avatarImageFirstLetter(item["secondary_text"].strip())
)
)
@ -356,10 +358,8 @@ class Inbox(Screen):
def check_scroll_y(self, instance, somethingelse):
"""Loads data on scroll"""
if (
self.children[2].children[0].children[0].scroll_y <= -0.0 and self.has_refreshed
):
self.children[2].children[0].children[0].scroll_y = 0.06
if self.ids.scroll_y.scroll_y <= -0.0 and self.has_refreshed:
self.ids.scroll_y.scroll_y = 0.06
total_message = len(self.ids.ml.children)
self.update_inbox_screen_on_scroll(total_message)
else:
@ -382,7 +382,8 @@ class Inbox(Screen):
"secondary_text": body[:50] + "........"
if len(body) >= 50
else (body + "," + subject.replace("\n", ""))[0:50] + "........",
"msgid": mail[1]
"msgid": mail[1],
"received": mail[6]
}
)
self.set_mdList(data)
@ -404,22 +405,24 @@ class Inbox(Screen):
sqlExecute("UPDATE inbox SET folder = 'trash' WHERE msgid = ?;", data_index)
msg_count_objs = self.parent.parent.ids.content_drawer.ids
if int(state.inbox_count) > 0:
msg_count_objs.inbox_cnt.children[0].children[0].text = showLimitedCnt(
msg_count_objs.inbox_cnt.ids.badge_txt.text = showLimitedCnt(
int(state.inbox_count) - 1
)
msg_count_objs.trash_cnt.children[0].children[0].text = showLimitedCnt(
msg_count_objs.trash_cnt.ids.badge_txt.text = showLimitedCnt(
int(state.trash_count) + 1
)
msg_count_objs.allmail_cnt.children[0].children[0].text = showLimitedCnt(
msg_count_objs.allmail_cnt.ids.badge_txt.text = showLimitedCnt(
int(state.all_count) - 1
)
state.inbox_count = str(int(state.inbox_count) - 1)
state.trash_count = str(int(state.trash_count) + 1)
state.all_count = str(int(state.all_count) - 1)
if int(state.inbox_count) <= 0:
self.ids.identi_tag.children[0].text = ""
self.ids.ml.remove_widget(instance.parent.parent)
toast("Deleted")
# self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
self.ids.ml.remove_widget(
instance.parent.parent)
toast('Deleted')
self.update_trash()
def archive(self, data_index, instance, *args):
@ -463,6 +466,8 @@ class CustomTwoLineAvatarIconListItem(TwoLineAvatarIconListItem):
class MyAddress(Screen):
"""MyAddress screen uses screen to show widgets of screens"""
address_label = StringProperty()
text_address = StringProperty()
addresses_list = ListProperty()
has_refreshed = True
is_add_created = False
@ -485,9 +490,9 @@ class MyAddress(Screen):
]
self.addresses_list = filtered_list
self.addresses_list = [obj for obj in reversed(self.addresses_list)]
self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
if self.addresses_list:
self.ids.identi_tag.children[0].text = 'My Addresses'
self.ids.tag_label.text = 'My Addresses'
self.has_refreshed = True
self.set_mdList(0, 15)
self.ids.refresh_layout.bind(scroll_y=self.check_scroll_y)
@ -564,10 +569,20 @@ class MyAddress(Screen):
# @staticmethod
def myadd_detail(self, fromaddress, label, *args):
"""Load myaddresses details"""
if BMConfigParser().get(fromaddress, "enabled") == "true":
p = MyaddDetailPopup()
p.open()
p.set_address(fromaddress, label)
if BMConfigParser().get(fromaddress, 'enabled') == 'true':
obj = MyaddDetailPopup()
self.address_label = obj.address_label = label
self.text_address = obj.address =fromaddress
width = .9 if platform == 'android' else .8
self.myadddetail_popup = MDDialog(
type="custom",
size_hint=(width, .25),
content_cls=obj,
)
self.myadddetail_popup.set_normal_height()
self.myadddetail_popup.auto_dismiss = False
self.myadddetail_popup.open()
# p.set_address(fromaddress, label)
else:
width = .8 if platform == 'android' else .55
dialog_box=MDDialog(
@ -597,7 +612,7 @@ class MyAddress(Screen):
"""Method used for loading the myaddress screen data"""
state.searcing_text = ''
# state.kivyapp.root.ids.sc10.children[2].active = False
self.children[2].children[2].ids.search_field.text = ''
self.ids.search_bar.ids.search_field.text = ''
self.has_refreshed = True
self.ids.ml.clear_widgets()
self.init_ui()
@ -663,6 +678,8 @@ class AddressBook(Screen):
queryreturn = ListProperty()
has_refreshed = True
address_label = StringProperty()
address = StringProperty()
def __init__(self, *args, **kwargs):
"""Getting AddressBook Details"""
@ -681,12 +698,12 @@ class AddressBook(Screen):
where = ['label', 'address']
what = state.searcing_text
xAddress = ''
self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
self.queryreturn = kivy_helper_search.search_sql(
xAddress, account, "addressbook", where, what, False)
self.queryreturn = [obj for obj in reversed(self.queryreturn)]
if self.queryreturn:
self.ids.identi_tag.children[0].text = 'Address Book'
self.ids.tag_label.text = 'Address Book'
self.has_refreshed = True
self.set_mdList(0, 20)
self.ids.scroll_y.bind(scroll_y=self.check_scroll_y)
@ -751,20 +768,80 @@ class AddressBook(Screen):
# state.navinstance.ids.sc11.loadAddresslist(None, 'All', '')
pass
@staticmethod
def addBook_detail(address, label, *args):
# @staticmethod
def addBook_detail(self, address, label, *args):
"""Addressbook details"""
p = AddbookDetailPopup()
p.open()
p.set_addbook_data(address, label)
obj = AddbookDetailPopup()
self.address_label = obj.address_label = label
self.address = obj.address = address
width = .9 if platform == 'android' else .8
self.addbook_popup = MDDialog(
type="custom",
size_hint=(width, .25),
content_cls=obj,
buttons=[
MDRaisedButton(
text="Send message to",
text_color=state.kivyapp.theme_cls.primary_color,
on_release=self.send_message_to,
),
MDRaisedButton(
text="Save", text_color=state.kivyapp.theme_cls.primary_color,
on_release=self.update_addbook_label,
),
MDRaisedButton(
text="Cancel", text_color=state.kivyapp.theme_cls.primary_color,
on_release=self.close_pop,
),
],
)
self.addbook_popup.set_normal_height()
self.addbook_popup.auto_dismiss = False
self.addbook_popup.open()
def delete_address(self, address, instance, *args):
"""Delete inbox mail from inbox listing"""
self.ids.ml.remove_widget(instance.parent.parent)
# if len(self.ids.ml.children) == 0:
if self.ids.ml.children is not None:
self.ids.identi_tag.children[0].text = ""
sqlExecute("DELETE FROM addressbook WHERE address = '{}';".format(address))
self.ids.tag_label.text = ''
sqlExecute(
"DELETE FROM addressbook WHERE address = '{}';".format(address))
def close_pop(self, instance):
"""Pop is Canceled"""
self.addbook_popup.dismiss()
toast('Canceled')
def update_addbook_label(self, instance):
"""Updating the label of address book address"""
address_list = kivy_helper_search.search_sql(folder="addressbook")
stored_labels = [labels[0] for labels in address_list]
add_dict = dict(address_list)
label = str(self.addbook_popup.content_cls.ids.add_label.text)
if label in stored_labels and self.address == add_dict[label]:
stored_labels.remove(label)
if label and label not in stored_labels:
sqlExecute(
"UPDATE addressbook SET label = '{}' WHERE"
" address = '{}';".format(
label, self.addbook_popup.content_cls.address))
state.kivyapp.root.ids.sc11.ids.ml.clear_widgets()
state.kivyapp.root.ids.sc11.loadAddresslist(None, 'All', '')
self.addbook_popup.dismiss()
toast('Saved')
def send_message_to(self, instance):
"""Method used to fill to_address of composer autofield"""
state.kivyapp.set_navbar_for_composer()
window_obj = state.kivyapp.root.ids
window_obj.sc3.children[1].ids.txt_input.text = self.address
window_obj.sc3.children[1].ids.ti.text = ''
window_obj.sc3.children[1].ids.btn.text = 'Select'
window_obj.sc3.children[1].ids.subject.text = ''
window_obj.sc3.children[1].ids.body.text = ''
window_obj.scr_mngr.current = 'create'
self.addbook_popup.dismiss()
class SelectableRecycleBoxLayout(
@ -1200,9 +1277,10 @@ class Random(Screen):
def generateaddress(self, navApp):
"""Method for Address Generator"""
entered_label = str(self.ids.lab.text).strip()
# entered_label = str(self.ids.lab.text).strip()
entered_label = str(self.ids.add_random_bx.children[0].ids.lab.text).strip()
if not entered_label:
self.ids.lab.focus = True
self.ids.add_random_bx.children[0].ids.lab.focus = True
#self.ids.lab.error = True
#self.ids.lab.helper_text = 'This field is required'
streamNumberForAddress = 1
@ -1249,7 +1327,7 @@ class Random(Screen):
for obj in BMConfigParser().addresses()]
if entered_label in lables:
instance.error = True
instance.helper_text = 'Label name is already exist you'\
instance.helper_text = 'it is already exist you'\
' can try this Ex. ( {0}_1, {0}_2 )'.format(
entered_label)
elif entered_label:
@ -1293,10 +1371,10 @@ class Sent(Screen):
what = state.searcing_text
xAddress = 'fromaddress'
data = []
self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
self.sentDataQuery(xAddress, where, what)
if self.queryreturn:
self.ids.identi_tag.children[0].text = 'Sent'
self.ids.tag_label.text = 'Sent'
self.set_sentCount(state.sent_count)
for mail in self.queryreturn:
data.append({
@ -1424,18 +1502,18 @@ class Sent(Screen):
'secondary_text': mail[2][:50] + '........' if len(
mail[2]) >= 50 else (mail[2] + ',' + mail[3].replace(
'\n', ''))[0:50] + '........',
'ackdata': mail[5]})
'ackdata': mail[5], 'senttime': mail[6]})
self.set_mdlist(data, 0)
@staticmethod
def set_sentCount(total_sent):
"""Set the total no. of sent message count"""
src_mng_obj = state.kivyapp.root.ids.content_drawer.ids.send_cnt
state.kivyapp.root.ids.content_drawer.ids.send_cnt.ids.badge_txt.text
if state.association:
src_mng_obj.children[0].children[0].text = showLimitedCnt(int(total_sent))
# state.kivyapp.get_sent_count()
src_mng_obj.ids.badge_txt.text = showLimitedCnt(int(total_sent))
else:
src_mng_obj.children[0].children[0].text = '0'
src_mng_obj.ids.badge_txt.text = '0'
def sent_detail(self, ackdata, *args):
"""Load sent mail details"""
@ -1453,14 +1531,14 @@ class Sent(Screen):
"""Delete sent mail from sent mail listing"""
msg_count_objs = self.parent.parent.ids.content_drawer.ids
if int(state.sent_count) > 0:
msg_count_objs.send_cnt.children[0].children[0].text = showLimitedCnt(int(state.sent_count) - 1)
msg_count_objs.trash_cnt.children[0].children[0].text = showLimitedCnt(int(state.trash_count) + 1)
msg_count_objs.allmail_cnt.children[0].children[0].text = showLimitedCnt(int(state.all_count) - 1)
msg_count_objs.send_cnt.ids.badge_txt.text = showLimitedCnt(int(state.sent_count) - 1)
msg_count_objs.trash_cnt.ids.badge_txt.text = showLimitedCnt(int(state.trash_count) + 1)
msg_count_objs.allmail_cnt.ids.badge_txt.text = showLimitedCnt(int(state.all_count) - 1)
state.sent_count = str(int(state.sent_count) - 1)
state.trash_count = str(int(state.trash_count) + 1)
state.all_count = str(int(state.all_count) - 1)
if int(state.sent_count) <= 0:
self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
sqlExecute(
"UPDATE sent SET folder = 'trash'"
" WHERE ackdata = ?;", data_index)
@ -1508,10 +1586,10 @@ class Trash(Screen):
if state.association == '':
if BMConfigParser().addresses():
state.association = BMConfigParser().addresses()[0]
self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
self.trashDataQuery(0, 20)
if self.trash_messages:
self.ids.identi_tag.children[0].text = 'Trash'
self.ids.tag_label.text = 'Trash'
# src_mng_obj = state.kivyapp.root.children[2].children[0].ids
# src_mng_obj.trash_cnt.badge_text = state.trash_count
self.set_TrashCnt(state.trash_count)
@ -1545,7 +1623,7 @@ class Trash(Screen):
def set_TrashCnt(self, Count): # pylint: disable=no-self-use
"""This method is used to set trash message count"""
trashCnt_obj = state.kivyapp.root.ids.content_drawer.ids.trash_cnt
trashCnt_obj.children[0].children[0].text = showLimitedCnt(int(Count))
trashCnt_obj.ids.badge_txt.text = showLimitedCnt(int(Count))
def set_mdList(self):
"""This method is used to create the mdlist"""
@ -1693,6 +1771,33 @@ class Setting(Screen):
Here you may change that behavior by having Bitmessage give up after a certain number of days \
or months."
def __init__(self, *args, **kwargs):
"""Trash method, delete sent message and add in Trash"""
super(Setting, self).__init__(*args, **kwargs)
Clock.schedule_once(self.init_ui, 0)
def init_ui(self, dt=0):
menu_items = [{"text": f"{i}"} for i in ['System Setting','U.S. English','italiano',
'Esperanto','dansk','Deutsch','Pirate English','francais',
'Nederlands','norsk bokmal','polski','portugues europeu']]
self.menu = MDDropdownMenu(
caller=self,
items=menu_items,
position="auto",
callback=self.set_item,
width_mult=3,
use_icon_item=False,
)
def set_caller(self):
self.menu.caller= self.ids.drop_item
# self.menu.use_icon_item = False
self.menu.target_height = 150
def set_item(self, instance):
self.ids.drop_item.set_item(instance.text)
self.menu.dismiss()
class NavigateApp(MDApp):
"""Navigation Layout of class"""
@ -1712,7 +1817,7 @@ class NavigateApp(MDApp):
count = 0
manager_open = False
file_manager = None
# state.imageDir = os.path.join(os.path.abspath(os.path.join(__file__ ,"../../..")),'images', 'kivy')
#state.imageDir = os.path.join(os.path.abspath(os.path.join(__file__ ,"../../..")),'images', 'kivy')
state.imageDir = os.path.join('./images', 'kivy')
image_path = state.imageDir
@ -1802,11 +1907,68 @@ class NavigateApp(MDApp):
return state.association
return "Bitmessage Login"
@staticmethod
def addingtoaddressbook():
# @staticmethod
def addingtoaddressbook(self):
"""Adding to address Book"""
p = GrashofPopup()
p.open()
width = .85 if platform == 'android' else .8
self.add_popup = MDDialog(
title='add contact\'s',
type="custom",
size_hint=(width, .25),
content_cls=GrashofPopup(),
buttons=[
MDRaisedButton(
text="Save",
text_color=self.theme_cls.primary_color,
on_release=self.savecontact,
),
MDRaisedButton(
text="Cancel", text_color=self.theme_cls.primary_color,
on_release=self.close_pop,
),
MDRaisedButton(
text="Scan QR code", text_color=self.theme_cls.primary_color
),
],
)
self.add_popup.set_normal_height()
self.add_popup.auto_dismiss = False
self.add_popup.open()
# p = GrashofPopup()
# p.open()
def savecontact(self, instance):
"""Method is used for saving contacts"""
pupup_obj = self.add_popup.content_cls
label = pupup_obj.ids.label.text.strip()
address = pupup_obj.ids.address.text.strip()
if label == '' and address == '':
pupup_obj.ids.label.focus = True
pupup_obj.ids.address.focus = True
elif address == '':
pupup_obj.ids.address.focus = True
elif label == '':
pupup_obj.ids.label.focus = True
stored_address = [addr[1] for addr in kivy_helper_search.search_sql(
folder="addressbook")]
stored_labels = [labels[0] for labels in kivy_helper_search.search_sql(
folder="addressbook")]
if label and address and address not in stored_address \
and label not in stored_labels and pupup_obj.valid:
# state.navinstance = self.parent.children[1]
queues.UISignalQueue.put(('rerenderAddressBook', ''))
self.add_popup.dismiss()
sqlExecute("INSERT INTO addressbook VALUES(?,?)", label, address)
self.root.ids.sc11.ids.ml.clear_widgets()
self.root.ids.sc11.loadAddresslist(None, 'All', '')
self.root.ids.scr_mngr.current = 'addressbook'
toast('Saved')
def close_pop(self, instance):
"""Pop is Canceled"""
self.add_popup.dismiss()
toast('Canceled')
def getDefaultAccData(self):
"""Getting Default Account Data"""
@ -2142,32 +2304,36 @@ class NavigateApp(MDApp):
# pylint: disable=unused-variable
state.searcing_text = ''
if state.search_screen == 'inbox':
try:
self.root.ids.sc1.children[
3].children[2].ids.search_field.text = ''
except Exception:
self.root.ids.sc1.children[
2].children[2].ids.search_field.text = ''
self.root.ids.sc1.ids.inbox_search.ids.search_field.text = ''
# try:
# self.root.ids.sc1.children[
# 3].children[2].ids.search_field.text = ''
# except Exception:
# self.root.ids.sc1.children[
# 2].children[2].ids.search_field.text = ''
self.root.ids.sc1.children[1].active = True
Clock.schedule_once(self.search_callback, 0.5)
elif state.search_screen == 'addressbook':
self.root.ids.sc11.children[
2].children[2].ids.search_field.text = ''
self.root.ids.sc11.ids.address_search.ids.search_field.text = ''
# self.root.ids.sc11.children[
# 2].children[2].ids.search_field.text = ''
self.root.ids.sc11.children[
1].active = True
Clock.schedule_once(self.search_callback, 0.5)
elif state.search_screen == 'myaddress':
try:
self.root.ids.sc10.children[
1].children[2].ids.search_field.text = ''
except Exception:
self.root.ids.sc10.children[
2].children[2].ids.search_field.text = ''
self.root.ids.sc10.ids.search_bar.ids.search_field.text = ''
# try:
# self.root.ids.sc10.children[
# 1].children[2].ids.search_field.text = ''
# except Exception:
# self.root.ids.sc10.children[
# 2].children[2].ids.search_field.text = ''
self.loadMyAddressScreen(True)
Clock.schedule_once(self.search_callback, 0.5)
else:
self.root.ids.sc4.children[
2].children[2].ids.search_field.text = ''
self.root.ids.sc4.ids.sent_search.ids.search_field.text = ''
# self.root.ids.sc4.children[
# 2].children[2].ids.search_field.text = ''
self.root.ids.sc4.children[1].active = True
Clock.schedule_once(self.search_callback, 0.5)
return
@ -2307,8 +2473,8 @@ class NavigateApp(MDApp):
def reset_login_screen(self):
"""This method is used for clearing random screen"""
# if self.root.ids.sc7.ids.add_random_bx.children:
# self.root.ids.sc7.ids.add_random_bx.clear_widgets()
if self.root.ids.sc7.ids.add_random_bx.children:
self.root.ids.sc7.ids.add_random_bx.clear_widgets()
def open_payment_layout(self, sku):
pml = PaymentMethodLayout()
@ -2329,7 +2495,7 @@ class NavigateApp(MDApp):
self.root.ids.scr_mngr.current = 'create'
class GrashofPopup(Popup):
class GrashofPopup(BoxLayout):
"""Moule for save contacts and error messages"""
valid = False
@ -2338,44 +2504,10 @@ class GrashofPopup(Popup):
"""Grash of pop screen settings"""
super(GrashofPopup, self).__init__(**kwargs)
def savecontact(self):
"""Method is used for saving contacts"""
label = self.ids.label.text.strip()
address = self.ids.address.text.strip()
if label == '' and address == '':
self.ids.label.focus = True
self.ids.address.focus = True
elif address == '':
self.ids.address.focus = True
elif label == '':
self.ids.label.focus = True
stored_address = [addr[1] for addr in kivy_helper_search.search_sql(
folder="addressbook")]
stored_labels = [labels[0] for labels in kivy_helper_search.search_sql(
folder="addressbook")]
if label and address and address not in stored_address \
and label not in stored_labels and self.valid:
# state.navinstance = self.parent.children[1]
queues.UISignalQueue.put(('rerenderAddressBook', ''))
self.dismiss()
sqlExecute("INSERT INTO addressbook VALUES(?,?)", label, address)
self.parent.children[1].ids.sc11.ids.ml.clear_widgets()
self.parent.children[1].ids.sc11.loadAddresslist(None, 'All', '')
self.parent.children[1].ids.scr_mngr.current = 'addressbook'
toast('Saved')
@staticmethod
def close_pop():
"""Pop is Canceled"""
toast('Canceled')
def checkAddress_valid(self, instance):
"""Checking address is valid or not"""
# my_addresses = (
# self.parent.children[1].children[0].children[0].ids.btn.values)
my_addresses = (
state.kivyapp.root.children[0].children[0].ids.btn.values)
state.kivyapp.root.ids.content_drawer.ids.btn.values)
add_book = [addr[1] for addr in kivy_helper_search.search_sql(
folder="addressbook")]
entered_text = str(instance.text).strip()
@ -2428,7 +2560,8 @@ class GrashofPopup(Popup):
elif status == 'checksumfailed':
text = (
"The address is not typed or copied correctly"
" (the checksum failed).")
# " (the checksum failed)."
)
elif status == 'versiontoohigh':
text = (
"The version number of this address is higher than this"
@ -2541,24 +2674,20 @@ class MailDetail(Screen): # pylint: disable=too-many-instance-attributes
state.searcing_text = ''
self.children[0].children[0].active = True
if state.detailPageType == 'sent':
state.kivyapp.root.ids.sc4.children[
2].children[2].ids.search_field.text = ''
state.kivyapp.root.ids.sc4.ids.sent_search.ids.search_field.text = ''
sqlExecute(
"UPDATE sent SET folder = 'trash' WHERE"
" ackdata = ?;", state.mail_id)
msg_count_objs.send_cnt.children[0].children[0].text = str(int(state.sent_count) - 1)
msg_count_objs.send_cnt.ids.badge_txt.text = str(int(state.sent_count) - 1)
state.sent_count = str(int(state.sent_count) - 1)
self.parent.screens[3].ids.ml.clear_widgets()
self.parent.screens[3].loadSent(state.association)
elif state.detailPageType == 'inbox':
state.kivyapp.root.ids.sc1.children[
2].children[2].ids.search_field.text = ''
self.parent.screens[0].children[2].children[
2].ids.search_field.text = ''
state.kivyapp.root.ids.sc1.ids.inbox_search.ids.search_field.text = ''
sqlExecute(
"UPDATE inbox SET folder = 'trash' WHERE"
" msgid = ?;", state.mail_id)
msg_count_objs.inbox_cnt.children[0].children[0].text = str(
msg_count_objs.inbox_cnt.ids.badge_txt.text = str(
int(state.inbox_count) - 1)
state.inbox_count = str(int(state.inbox_count) - 1)
self.parent.screens[0].ids.ml.clear_widgets()
@ -2566,16 +2695,16 @@ class MailDetail(Screen): # pylint: disable=too-many-instance-attributes
elif state.detailPageType == 'draft':
sqlExecute("DELETE FROM sent WHERE ackdata = ?;", state.mail_id)
msg_count_objs.draft_cnt.children[0].children[0].text = str(
msg_count_objs.draft_cnt.ids.badge_txt.text = str(
int(state.draft_count) - 1)
state.draft_count = str(int(state.draft_count) - 1)
self.parent.screens[15].clear_widgets()
self.parent.screens[15].add_widget(Draft())
if state.detailPageType != 'draft':
msg_count_objs.trash_cnt.children[0].children[0].text = str(
msg_count_objs.trash_cnt.ids.badge_txt.text = str(
int(state.trash_count) + 1)
msg_count_objs.allmail_cnt.children[0].children[0].text = str(
msg_count_objs.allmail_cnt.ids.badge_txt.text = str(
int(state.all_count) - 1)
state.trash_count = str(int(state.trash_count) + 1)
state.all_count = str(int(state.all_count) - 1) if int(state.all_count) else '0'
@ -2648,7 +2777,7 @@ class MailDetail(Screen): # pylint: disable=too-many-instance-attributes
toast(text_item)
class MyaddDetailPopup(Popup):
class MyaddDetailPopup(BoxLayout):
"""MyaddDetailPopup pop is used for showing my address detail"""
address_label = StringProperty()
@ -2658,33 +2787,26 @@ class MyaddDetailPopup(Popup):
"""My Address Details screen setting"""
super(MyaddDetailPopup, self).__init__(**kwargs)
def set_address(self, address, label):
"""Getting address for displaying details on popup"""
self.address_label = label
self.address = address
def send_message_from(self):
"""Method used to fill from address of composer autofield"""
state.kivyapp.set_navbar_for_composer()
try:
window_obj = self.parent.children[2].ids
except Exception:
window_obj = self.parent.children[1].ids
window_obj = state.kivyapp.root.ids
window_obj.sc3.children[1].ids.ti.text = self.address
window_obj.sc3.children[1].ids.btn.text = self.address
window_obj.sc3.children[1].ids.txt_input.text = ''
window_obj.sc3.children[1].ids.subject.text = ''
window_obj.sc3.children[1].ids.body.text = ''
window_obj.scr_mngr.current = 'create'
self.dismiss()
self.parent.parent.parent.dismiss()
@staticmethod
def close_pop():
# @staticmethod
def close_pop(self):
"""Pop is Canceled"""
self.parent.parent.parent.dismiss()
toast('Canceled')
class AddbookDetailPopup(Popup):
class AddbookDetailPopup(BoxLayout):
"""AddbookDetailPopup pop is used for showing my address detail"""
address_label = StringProperty()
@ -2694,49 +2816,6 @@ class AddbookDetailPopup(Popup):
"""Set screen of address detail page"""
super(AddbookDetailPopup, self).__init__(**kwargs)
def set_addbook_data(self, address, label):
"""Getting address book data for detial dipaly"""
self.address_label = label
self.address = address
def update_addbook_label(self, address):
"""Updating the label of address book address"""
address_list = kivy_helper_search.search_sql(folder="addressbook")
stored_labels = [labels[0] for labels in address_list]
add_dict = dict(address_list)
label = str(self.ids.add_label.text)
if label in stored_labels and self.address == add_dict[label]:
stored_labels.remove(label)
if label and label not in stored_labels:
sqlExecute(
"UPDATE addressbook SET label = '{}' WHERE"
" address = '{}';".format(
str(self.ids.add_label.text), address))
state.kivyapp.root.ids.sc11.ids.ml.clear_widgets()
state.kivyapp.root.ids.sc11.loadAddresslist(None, 'All', '')
self.dismiss()
toast('Saved')
def send_message_to(self):
"""Method used to fill to_address of composer autofield"""
state.kivyapp.set_navbar_for_composer()
try:
window_obj = self.parent.children[2].ids
except Exception:
window_obj = self.parent.children[1].ids
window_obj.sc3.children[1].ids.txt_input.text = self.address
window_obj.sc3.children[1].ids.ti.text = ''
window_obj.sc3.children[1].ids.btn.text = 'Select'
window_obj.sc3.children[1].ids.subject.text = ''
window_obj.sc3.children[1].ids.body.text = ''
window_obj.scr_mngr.current = 'create'
self.dismiss()
@staticmethod
def close_pop():
"""Pop is Canceled"""
toast('Canceled')
def checkLabel_valid(self, instance):
"""Checking address label is unique of not"""
entered_label = str(instance.text.strip())
@ -2758,7 +2837,7 @@ class ShowQRCode(Screen):
"""ShowQRCode Screen uses to show the detail of mails"""
address = StringProperty()
def qrdisplay(self):
def qrdisplay(self, instasnce, address):
"""Method used for showing QR Code"""
self.ids.qr.clear_widgets()
state.kivyapp.set_toolbar_for_QrCode()
@ -2766,13 +2845,10 @@ class ShowQRCode(Screen):
from kivy.garden.qrcode import QRCodeWidget
except Exception as e:
from kivy_garden.qrcode import QRCodeWidget
try:
address = self.manager.get_parent_window().children[0].address
except Exception:
address = self.manager.get_parent_window().children[1].address
self.address = address
self.ids.qr.add_widget(QRCodeWidget(data=address))
self.ids.qr.children[0].show_border = False
instasnce.parent.parent.parent.dismiss()
toast('Show QR code')
@ -2805,12 +2881,12 @@ class Draft(Screen):
def loadDraft(self, where="", what=""):
"""Load draft list for Draft messages"""
xAddress = 'fromaddress'
self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
self.draftDataQuery(xAddress, where, what)
# if state.msg_counter_objs:
# state.msg_counter_objs.draft_cnt.children[0].children[0].text = showLimitedCnt(len(self.queryreturn))
if self.queryreturn:
self.ids.identi_tag.children[0].text = 'Draft'
self.ids.tag_label.text = 'Draft'
self.set_draftCnt(state.draft_count)
self.set_mdList()
self.ids.scroll_y.bind(scroll_y=self.check_scroll_y)
@ -2834,7 +2910,7 @@ class Draft(Screen):
def set_draftCnt(self, Count): # pylint: disable=no-self-use
"""This method set the count of draft mails"""
draftCnt_obj = state.kivyapp.root.ids.content_drawer.ids.draft_cnt
draftCnt_obj.children[0].children[0].text = showLimitedCnt(int(Count))
draftCnt_obj.ids.badge_txt.text = showLimitedCnt(int(Count))
def set_mdList(self):
"""This method is used to create mdlist"""
@ -2906,23 +2982,12 @@ class Draft(Screen):
def delete_draft(self, data_index, instance, *args):
"""Delete draft message permanently"""
sqlExecute("DELETE FROM sent WHERE ackdata = ?;", data_index)
# try:
# msg_count_objs = (
# self.parent.parent.parent.parent.parent.children[
# 2].children[0].ids)
# except Exception:
# msg_count_objs = (
# self.parent.parent.parent.parent.parent.parent.children[
# 2].children[0].ids)
# msg_count_objs = self.parent.parent.parent.parent.parent.children[
# 2].children[0].ids
if int(state.draft_count) > 0:
# msg_count_objs.draft_cnt.badge_text = str(
# int(state.draft_count) - 1)
state.draft_count = str(int(state.draft_count) - 1)
self.set_draftCnt(state.draft_count)
if int(state.draft_count) <= 0:
self.ids.identi_tag.children[0].text = ''
# self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
self.ids.ml.remove_widget(instance.parent.parent)
toast('Deleted')
@ -3004,10 +3069,10 @@ class Allmails(Screen):
def loadMessagelist(self):
"""Load Inbox, Sent anf Draft list of messages"""
self.account = state.association
self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
self.allMessageQuery(0, 20)
if self.all_mails:
self.ids.identi_tag.children[0].text = 'All Mails'
self.ids.tag_label.text = 'All Mails'
state.kivyapp.get_inbox_count()
state.kivyapp.get_sent_count()
state.all_count = str(
@ -3042,7 +3107,7 @@ class Allmails(Screen):
def set_AllmailCnt(self, Count): # pylint: disable=no-self-use
"""This method is used to set allmails message count"""
allmailCnt_obj = state.kivyapp.root.ids.content_drawer.ids.allmail_cnt
allmailCnt_obj.children[0].children[0].text = showLimitedCnt(int(Count))
allmailCnt_obj.ids.badge_txt.text = showLimitedCnt(int(Count))
def set_mdlist(self):
"""This method is used to create mdList for allmaills"""
@ -3129,21 +3194,21 @@ class Allmails(Screen):
msg_count_objs = self.parent.parent.parent.ids.content_drawer.ids
nav_lay_obj = self.parent.parent.parent.ids
if folder == 'inbox':
msg_count_objs.inbox_cnt.children[0].children[0].text = showLimitedCnt(int(state.inbox_count) - 1)
msg_count_objs.inbox_cnt.ids.badge_txt.text = showLimitedCnt(int(state.inbox_count) - 1)
state.inbox_count = str(int(state.inbox_count) - 1)
nav_lay_obj.sc1.ids.ml.clear_widgets()
nav_lay_obj.sc1.loadMessagelist(state.association)
else:
msg_count_objs.send_cnt.children[0].children[0].text = showLimitedCnt(int(state.sent_count) - 1)
msg_count_objs.send_cnt.ids.badge_txt.text = showLimitedCnt(int(state.sent_count) - 1)
state.sent_count = str(int(state.sent_count) - 1)
nav_lay_obj.sc4.ids.ml.clear_widgets()
nav_lay_obj.sc4.loadSent(state.association)
msg_count_objs.trash_cnt.children[0].children[0].text = showLimitedCnt(int(state.trash_count) + 1)
msg_count_objs.allmail_cnt.children[0].children[0].text = showLimitedCnt(int(state.all_count) - 1)
msg_count_objs.trash_cnt.ids.badge_txt.text = showLimitedCnt(int(state.trash_count) + 1)
msg_count_objs.allmail_cnt.ids.badge_txt.text = showLimitedCnt(int(state.all_count) - 1)
state.trash_count = str(int(state.trash_count) + 1)
state.all_count = str(int(state.all_count) - 1)
if int(state.all_count) <= 0:
self.ids.identi_tag.children[0].text = ''
self.ids.tag_label.text = ''
nav_lay_obj.sc5.clear_widgets()
nav_lay_obj.sc5.add_widget(Trash())
nav_lay_obj.sc17.remove_widget(instance.parent.parent)
@ -3296,7 +3361,7 @@ class SenderDetailPopup(Popup):
time_obj = datetime.fromtimestamp(int(timeinseconds))
self.time_tag = time_obj.strftime("%d %b %Y, %I:%M %p")
device_type = 2 if platform == 'android' else 1.5
pop_height = device_type * (self.ids.sd_label.height + self.ids.sd_btn.children[0].height)
pop_height = device_type * (self.ids.sd_label.height + self.ids.dismiss_btn.height)
if len(to_addr) > 3:
self.height = 0
self.height = pop_height
@ -3335,35 +3400,29 @@ class OneLineListTitle(OneLineListItem):
"""On long press"""
self.copymessageTitle(self.text)
def copymessageTitle(self, text):
def copymessageTitle(self, title_text):
"""this method is for displaying dialog box"""
self.title_text = title_text
width = .8 if platform == 'android' else .55
dialog_box=MDDialog(
text=text,
self.dialog_box=MDDialog(
text=title_text,
size_hint=(width, .25),
buttons=[
MDFlatButton(
text="Copy", on_release=lambda x: callback_for_copy_title(text)
text="Copy", on_release=self.callback_for_copy_title
),
MDFlatButton(
text="Cancel",on_release=lambda x: callback_for_copy_title(text),
text="Cancel",on_release=self.callback_for_copy_title,
),
],)
dialog_box.open()
self.dialog_box.open()
def callback_for_copy_title(text_item, *arg):
def callback_for_copy_title(self, instance):
"""Callback of alert box"""
if text_item == 'Copy':
Clipboard.copy()
dialog_box.dismiss()
toast(text_item)
# @staticmethod
# def callback_for_copy_title(text_item, *arg):
# """Callback of alert box"""
# if text_item == 'Copy':
# Clipboard.copy(str(arg[0].text))
# toast(text_item)
if instance.text == 'Copy':
Clipboard.copy(self.title_text)
self.dialog_box.dismiss()
toast(instance.text)
class ToAddrBoxlayout(BoxLayout):

View File

@ -16,7 +16,7 @@ source.dir = .
source.include_exts = py,png,jpg,kv,atlas,gif,zip, json, css, ttf,java
# (list) List of inclusions using pattern matching
#source.include_patterns = assets/*,images/*.png
#source.include_patterns = assets/*,images/*.png, ../images1/*/*.png
# (list) Source files to exclude (let empty to not exclude anything)
#source.exclude_exts = spec

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 26 KiB