added custom avtar add and reset feature
This commit is contained in:
parent
967bd1a4b4
commit
c9c54029a6
|
@ -32,8 +32,8 @@ class Allmails(Screen):
|
||||||
"""Method Parsing the address"""
|
"""Method Parsing the address"""
|
||||||
super(Allmails, self).__init__(*args, **kwargs)
|
super(Allmails, self).__init__(*args, **kwargs)
|
||||||
if state.association == '':
|
if state.association == '':
|
||||||
if BMConfigParser().addresses():
|
if state.kivyapp.variable_1:
|
||||||
state.association = BMConfigParser().addresses()[0]
|
state.association = state.kivyapp.variable_1[0]
|
||||||
Clock.schedule_once(self.init_ui, 0)
|
Clock.schedule_once(self.init_ui, 0)
|
||||||
|
|
||||||
def init_ui(self, dt=0):
|
def init_ui(self, dt=0):
|
||||||
|
|
|
@ -34,8 +34,8 @@ class Draft(Screen):
|
||||||
"""Method used for storing draft messages"""
|
"""Method used for storing draft messages"""
|
||||||
super(Draft, self).__init__(*args, **kwargs)
|
super(Draft, self).__init__(*args, **kwargs)
|
||||||
if state.association == '':
|
if state.association == '':
|
||||||
if BMConfigParser().addresses():
|
if state.kivyapp.variable_1:
|
||||||
state.association = BMConfigParser().addresses()[0]
|
state.association = state.kivyapp.variable_1[0]
|
||||||
Clock.schedule_once(self.init_ui, 0)
|
Clock.schedule_once(self.init_ui, 0)
|
||||||
|
|
||||||
def init_ui(self, dt=0):
|
def init_ui(self, dt=0):
|
||||||
|
|
|
@ -40,8 +40,8 @@ class Inbox(Screen):
|
||||||
def set_defaultAddress():
|
def set_defaultAddress():
|
||||||
"""This method set's default address"""
|
"""This method set's default address"""
|
||||||
if state.association == "":
|
if state.association == "":
|
||||||
if BMConfigParser().addresses():
|
if state.kivyapp.variable_1:
|
||||||
state.association = BMConfigParser().addresses()[0]
|
state.association = state.kivyapp.variable_1[0]
|
||||||
|
|
||||||
def init_ui(self, dt=0):
|
def init_ui(self, dt=0):
|
||||||
"""Clock schdule for method inbox accounts"""
|
"""Clock schdule for method inbox accounts"""
|
||||||
|
|
|
@ -240,6 +240,7 @@ class MyAddress(Screen):
|
||||||
if BMConfigParser().get(str(addr), 'enabled') == 'true']
|
if BMConfigParser().get(str(addr), 'enabled') == 'true']
|
||||||
self.parent.parent.ids.content_drawer.ids.btn.values = addresses
|
self.parent.parent.ids.content_drawer.ids.btn.values = addresses
|
||||||
self.parent.parent.ids.sc3.children[1].ids.btn.values = addresses
|
self.parent.parent.ids.sc3.children[1].ids.btn.values = addresses
|
||||||
|
state.kivyapp.variable_1 = addresses
|
||||||
|
|
||||||
def toggleAction(self, instance):
|
def toggleAction(self, instance):
|
||||||
"""This method is used for enable or disable address"""
|
"""This method is used for enable or disable address"""
|
||||||
|
|
|
@ -30,8 +30,8 @@ class Sent(Screen):
|
||||||
"""Association with the screen"""
|
"""Association with the screen"""
|
||||||
super(Sent, self).__init__(*args, **kwargs)
|
super(Sent, self).__init__(*args, **kwargs)
|
||||||
if state.association == '':
|
if state.association == '':
|
||||||
if BMConfigParser().addresses():
|
if state.kivyapp.variable_1:
|
||||||
state.association = BMConfigParser().addresses()[0]
|
state.association = state.kivyapp.variable_1[0]
|
||||||
Clock.schedule_once(self.init_ui, 0)
|
Clock.schedule_once(self.init_ui, 0)
|
||||||
|
|
||||||
def init_ui(self, dt=0):
|
def init_ui(self, dt=0):
|
||||||
|
|
|
@ -37,8 +37,8 @@ class Trash(Screen):
|
||||||
def init_ui(self, dt=0):
|
def init_ui(self, dt=0):
|
||||||
"""Clock Schdule for method trash screen"""
|
"""Clock Schdule for method trash screen"""
|
||||||
if state.association == '':
|
if state.association == '':
|
||||||
if BMConfigParser().addresses():
|
if state.kivyapp.variable_1:
|
||||||
state.association = BMConfigParser().addresses()[0]
|
state.association = state.kivyapp.variable_1[0]
|
||||||
self.ids.tag_label.text = ''
|
self.ids.tag_label.text = ''
|
||||||
self.trashDataQuery(0, 20)
|
self.trashDataQuery(0, 20)
|
||||||
if len(self.trash_messages):
|
if len(self.trash_messages):
|
||||||
|
|
81
src/bitmessagekivy/identiconGeneration.py
Normal file
81
src/bitmessagekivy/identiconGeneration.py
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
"""
|
||||||
|
Core classes for loading images and converting them to a Texture.
|
||||||
|
The raw image data can be keep in memory for further access
|
||||||
|
"""
|
||||||
|
import hashlib
|
||||||
|
from io import BytesIO
|
||||||
|
|
||||||
|
from PIL import Image
|
||||||
|
from kivy.core.image import Image as CoreImage
|
||||||
|
from kivy.uix.image import Image as kiImage
|
||||||
|
# pylint: disable=import-error
|
||||||
|
|
||||||
|
|
||||||
|
# constants
|
||||||
|
RESOLUTION = 300, 300
|
||||||
|
V_RESOLUTION = 7, 7
|
||||||
|
BACKGROUND_COLOR = 255, 255, 255, 255
|
||||||
|
MODE = "RGB"
|
||||||
|
|
||||||
|
|
||||||
|
def generate(Generate_string=None):
|
||||||
|
"""Generating string"""
|
||||||
|
hash_string = generate_hash(Generate_string)
|
||||||
|
color = random_color(hash_string)
|
||||||
|
image = Image.new(MODE, V_RESOLUTION, BACKGROUND_COLOR)
|
||||||
|
image = generate_image(image, color, hash_string)
|
||||||
|
image = image.resize(RESOLUTION, 0)
|
||||||
|
data = BytesIO()
|
||||||
|
image.save(data, format='png')
|
||||||
|
data.seek(0)
|
||||||
|
# yes you actually need this
|
||||||
|
im = CoreImage(BytesIO(data.read()), ext='png')
|
||||||
|
beeld = kiImage()
|
||||||
|
# only use this line in first code instance
|
||||||
|
beeld.texture = im.texture
|
||||||
|
return beeld
|
||||||
|
# image.show()
|
||||||
|
|
||||||
|
|
||||||
|
def generate_hash(string):
|
||||||
|
"""Generating hash"""
|
||||||
|
try:
|
||||||
|
# make input case insensitive
|
||||||
|
string = str.lower(string)
|
||||||
|
hash_object = hashlib.md5(str.encode(string))
|
||||||
|
print(hash_object.hexdigest())
|
||||||
|
# returned object is a hex string
|
||||||
|
return hash_object.hexdigest()
|
||||||
|
except IndexError:
|
||||||
|
print("Error: Please enter a string as an argument.")
|
||||||
|
|
||||||
|
|
||||||
|
def random_color(hash_string):
|
||||||
|
"""Getting random color"""
|
||||||
|
# remove first three digits from hex string
|
||||||
|
split = 6
|
||||||
|
rgb = hash_string[:split]
|
||||||
|
split = 2
|
||||||
|
r = rgb[:split]
|
||||||
|
g = rgb[split:2 * split]
|
||||||
|
b = rgb[2 * split:3 * split]
|
||||||
|
color = (int(r, 16), int(g, 16), int(b, 16), 0xFF)
|
||||||
|
return color
|
||||||
|
|
||||||
|
|
||||||
|
def generate_image(image, color, hash_string):
|
||||||
|
"""Generating images"""
|
||||||
|
hash_string = hash_string[6:]
|
||||||
|
lower_x = 1
|
||||||
|
lower_y = 1
|
||||||
|
upper_x = int(V_RESOLUTION[0] / 2) + 1
|
||||||
|
upper_y = V_RESOLUTION[1] - 1
|
||||||
|
limit_x = V_RESOLUTION[0] - 1
|
||||||
|
index = 0
|
||||||
|
for x in range(lower_x, upper_x):
|
||||||
|
for y in range(lower_y, upper_y):
|
||||||
|
if int(hash_string[index], 16) % 2 == 0:
|
||||||
|
image.putpixel((x, y), color)
|
||||||
|
image.putpixel((limit_x - x, y), color)
|
||||||
|
index = index + 1
|
||||||
|
return image
|
|
@ -74,8 +74,8 @@
|
||||||
on_release: app.rest_default_avatar_img()
|
on_release: app.rest_default_avatar_img()
|
||||||
theme_text_color: "Custom"
|
theme_text_color: "Custom"
|
||||||
text_color: app.theme_cls.primary_color
|
text_color: app.theme_cls.primary_color
|
||||||
opacity: 1 if app.current_address_label() else 0
|
# opacity: 1 if app.current_address_label() else 0
|
||||||
disabled: False if app.current_address_label() else True
|
# disabled: False if app.current_address_label() else True
|
||||||
opacity: 0
|
opacity: 0
|
||||||
disabled: True
|
disabled: True
|
||||||
|
|
||||||
|
@ -89,8 +89,8 @@
|
||||||
# md_bg_color: app.theme_cls.primary_color
|
# md_bg_color: app.theme_cls.primary_color
|
||||||
theme_text_color: "Custom"
|
theme_text_color: "Custom"
|
||||||
text_color: app.theme_cls.primary_color
|
text_color: app.theme_cls.primary_color
|
||||||
opacity: 0
|
opacity: 1 if app.current_address_label() else 0
|
||||||
disabled: True
|
disabled: False if app.current_address_label() else True
|
||||||
|
|
||||||
BoxLayout:
|
BoxLayout:
|
||||||
id: top_box
|
id: top_box
|
||||||
|
@ -100,8 +100,8 @@
|
||||||
x: root.parent.x
|
x: root.parent.x
|
||||||
pos_hint: {"top": 1}
|
pos_hint: {"top": 1}
|
||||||
Image:
|
Image:
|
||||||
source: './images/drawer_logo1.png'
|
#source: './images/drawer_logo1.png'
|
||||||
# source: app.get_default_logo()
|
source: app.get_default_logo(self)
|
||||||
|
|
||||||
ScrollView:
|
ScrollView:
|
||||||
id: scroll_y
|
id: scroll_y
|
||||||
|
|
|
@ -11,7 +11,7 @@ Bitmessage android(mobile) interface
|
||||||
|
|
||||||
from bitmessagekivy.get_platform import platform
|
from bitmessagekivy.get_platform import platform
|
||||||
import os
|
import os
|
||||||
# from bitmessagekivy import identiconGeneration
|
from bitmessagekivy import identiconGeneration
|
||||||
from bitmessagekivy import kivy_helper_search
|
from bitmessagekivy import kivy_helper_search
|
||||||
from bitmessagekivy.uikivysignaler import UIkivySignaler
|
from bitmessagekivy.uikivysignaler import UIkivySignaler
|
||||||
from bmconfigparser import BMConfigParser
|
from bmconfigparser import BMConfigParser
|
||||||
|
@ -274,7 +274,7 @@ class NavigateApp(MDApp):
|
||||||
if os.path.exists(state.imageDir + '/default_identicon/{}.png'.format(text)):
|
if os.path.exists(state.imageDir + '/default_identicon/{}.png'.format(text)):
|
||||||
self.load_selected_Image(text)
|
self.load_selected_Image(text)
|
||||||
else:
|
else:
|
||||||
# self.set_identicon(text)
|
self.set_identicon(text)
|
||||||
self.root.ids.content_drawer.ids.reset_image.opacity = 0
|
self.root.ids.content_drawer.ids.reset_image.opacity = 0
|
||||||
self.root.ids.content_drawer.ids.reset_image.disabled = True
|
self.root.ids.content_drawer.ids.reset_image.disabled = True
|
||||||
address_label = self.current_address_label(
|
address_label = self.current_address_label(
|
||||||
|
@ -295,8 +295,8 @@ class NavigateApp(MDApp):
|
||||||
"""This method is for file manager setting"""
|
"""This method is for file manager setting"""
|
||||||
if not self.root.ids.content_drawer.ids.file_manager.opacity and \
|
if not self.root.ids.content_drawer.ids.file_manager.opacity and \
|
||||||
self.root.ids.content_drawer.ids.file_manager.disabled:
|
self.root.ids.content_drawer.ids.file_manager.disabled:
|
||||||
self.root.ids.content_drawer.ids.file_manager.opacity = 0
|
self.root.ids.content_drawer.ids.file_manager.opacity = 1
|
||||||
self.root.ids.content_drawer.ids.file_manager.disabled = True
|
self.root.ids.content_drawer.ids.file_manager.disabled = False
|
||||||
|
|
||||||
def setCurrentAccountData(self, dt=0):
|
def setCurrentAccountData(self, dt=0):
|
||||||
"""This method set the current accout data on all the screens"""
|
"""This method set the current accout data on all the screens"""
|
||||||
|
@ -418,10 +418,11 @@ class NavigateApp(MDApp):
|
||||||
|
|
||||||
def getDefaultAccData(self, instance):
|
def getDefaultAccData(self, instance):
|
||||||
"""Getting Default Account Data"""
|
"""Getting Default Account Data"""
|
||||||
if BMConfigParser().addresses():
|
if self.variable_1:
|
||||||
first_addr = BMConfigParser().addresses()[0]
|
state.association = first_addr = self.variable_1[0]
|
||||||
if BMConfigParser().get(str(first_addr), 'enabled') == 'true':
|
# if BMConfigParser().get(str(first_addr), 'enabled') == 'true':
|
||||||
# img = identiconGeneration.generate(first_addr)
|
# img = identiconGeneration.generate(first_addr)
|
||||||
|
# print('line...........................................426')
|
||||||
# self.createFolder(state.imageDir + '/default_identicon/')
|
# self.createFolder(state.imageDir + '/default_identicon/')
|
||||||
# if platform == 'android':
|
# if platform == 'android':
|
||||||
# # android_path = os.path.expanduser
|
# # android_path = os.path.expanduser
|
||||||
|
@ -439,11 +440,24 @@ class NavigateApp(MDApp):
|
||||||
# BMConfigParser().addresses()[0]))
|
# BMConfigParser().addresses()[0]))
|
||||||
# instance.parent.parent.parent.parent.parent.ids.top_box.children[0].texture = (
|
# instance.parent.parent.parent.parent.parent.ids.top_box.children[0].texture = (
|
||||||
# img.texture)
|
# img.texture)
|
||||||
return first_addr
|
return first_addr
|
||||||
# instance.parent.parent.parent.parent.parent.ids.top_box.children[0].source = (
|
|
||||||
# state.imageDir + '/drawer_logo1.png')
|
|
||||||
return 'Select Address'
|
return 'Select Address'
|
||||||
|
|
||||||
|
def get_default_logo(self, instance):
|
||||||
|
"""Getting default logo image"""
|
||||||
|
if self.variable_1:
|
||||||
|
first_addr = self.variable_1[0]
|
||||||
|
if BMConfigParser().get(str(first_addr), 'enabled') == 'true':
|
||||||
|
if os.path.exists(
|
||||||
|
state.imageDir + '/default_identicon/{}.png'.format(first_addr)):
|
||||||
|
return state.imageDir + '/default_identicon/{}.png'.format(
|
||||||
|
first_addr)
|
||||||
|
else:
|
||||||
|
img = identiconGeneration.generate(first_addr)
|
||||||
|
instance.texture = img.texture
|
||||||
|
return
|
||||||
|
return state.imageDir + '/drawer_logo1.png'
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def addressexist():
|
def addressexist():
|
||||||
"""Checking address existence"""
|
"""Checking address existence"""
|
||||||
|
@ -689,12 +703,14 @@ class NavigateApp(MDApp):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def current_address_label(current_add_label=None, current_addr=None):
|
def current_address_label(current_add_label=None, current_addr=None):
|
||||||
"""Getting current address labels"""
|
"""Getting current address labels"""
|
||||||
if BMConfigParser().addresses():
|
addresses = [addr for addr in BMConfigParser().addresses()
|
||||||
|
if BMConfigParser().get(str(addr), 'enabled') == 'true']
|
||||||
|
if addresses:
|
||||||
if current_add_label:
|
if current_add_label:
|
||||||
first_name = current_add_label
|
first_name = current_add_label
|
||||||
addr = current_addr
|
addr = current_addr
|
||||||
else:
|
else:
|
||||||
addr = BMConfigParser().addresses()[0]
|
addr = addresses[0]
|
||||||
first_name = BMConfigParser().get(addr, 'label')
|
first_name = BMConfigParser().get(addr, 'label')
|
||||||
if BMConfigParser().get(addr, 'enabled') != 'true':
|
if BMConfigParser().get(addr, 'enabled') != 'true':
|
||||||
return ''
|
return ''
|
||||||
|
@ -770,10 +786,10 @@ class NavigateApp(MDApp):
|
||||||
|
|
||||||
def set_identicon(self, text):
|
def set_identicon(self, text):
|
||||||
"""Show identicon in address spinner"""
|
"""Show identicon in address spinner"""
|
||||||
# img = identiconGeneration.generate(text)
|
img = identiconGeneration.generate(text)
|
||||||
# self.root.children[0].children[0].ids.btn.children[1].texture = (img.texture)
|
# self.root.children[0].children[0].ids.btn.children[1].texture = (img.texture)
|
||||||
# below line is for displaing logo
|
# below line is for displaing logo
|
||||||
# self.root.ids.content_drawer.ids.top_box.children[0].texture = (img.texture)
|
self.root.ids.content_drawer.ids.top_box.children[0].texture = (img.texture)
|
||||||
|
|
||||||
def set_mail_detail_header(self):
|
def set_mail_detail_header(self):
|
||||||
"""Setting the details of the page"""
|
"""Setting the details of the page"""
|
||||||
|
@ -911,7 +927,7 @@ class NavigateApp(MDApp):
|
||||||
|
|
||||||
def rest_default_avatar_img(self):
|
def rest_default_avatar_img(self):
|
||||||
"""set default avatar generated image"""
|
"""set default avatar generated image"""
|
||||||
# self.set_identicon(state.association)
|
self.set_identicon(state.association)
|
||||||
img_path = state.imageDir + '/default_identicon/{}.png'.format(state.association)
|
img_path = state.imageDir + '/default_identicon/{}.png'.format(state.association)
|
||||||
try:
|
try:
|
||||||
if os.path.exists(img_path):
|
if os.path.exists(img_path):
|
||||||
|
|
Reference in New Issue
Block a user