Skip to content

Commit 72f7809

Browse files
committed
Merge branch 'UiChanges' of https://github.com/surbhicis/PyBitmessage into UiChanges
2 parents a3bbcdd + a1a735a commit 72f7809

21 files changed

Lines changed: 2129 additions & 617 deletions

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@ dist
1818
docs/_*/*
1919
docs/autodoc/
2020
pyan/
21+
.buildozer/
22+
bin/

src/bitmessagekivy/android/python-for-android/recipes/kivymd/__init__.py

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,14 @@
1010
class KivyMDRecipe(PythonRecipe):
1111
# This recipe installs KivyMD into the android dist from source
1212
version = 'master'
13-
# url = 'https://gitlab.com/kivymd/KivyMD/repository/{version}/archive.zip'
14-
url = 'https://github.com/HeaTTheatR/KivyMD/archive/master.zip'
13+
url = 'https://github.com/surbhicis/kivymd/archive/master.zip'
1514
depends = ['kivy']
1615
site_packages_name = 'kivymd'
1716
call_hostpython_via_targetpython = False
18-
# patches = ['kivymd-fix-dev-compatibility.patch']
19-
# Made commented as use different repo for updates
2017

2118
def should_build(self, arch):
2219
return True
2320

24-
# def unpack(self, arch):
25-
# info_main('Unpacking {} for {}'.format(self.name, arch))
26-
#
27-
# build_dir = self.get_build_container_dir(arch)
28-
#
29-
# user_dir = environ.get('P4A_{}_DIR'.format(self.name.lower()))
30-
#
31-
# if user_dir is not None:
32-
# info("Installing KivyMD development version (from modded source)")
33-
# self.clean_build()
34-
# shprint(sh.rm, '-rf', build_dir)
35-
# shprint(sh.mkdir, '-p', build_dir)
36-
# shprint(sh.rmdir, build_dir)
37-
# ensure_dir(build_dir)
38-
# ensure_dir(build_dir + "/kivymd")
39-
# shprint(sh.cp, user_dir + '/setup.py', self.get_build_dir(arch) + "/setup.py")
40-
# shprint(sh.cp, '-a', user_dir + "/kivymd", self.get_build_dir(arch) + "/kivymd")
41-
# return
42-
4321
def get_recipe_env(self, arch):
4422
env = super(KivyMDRecipe, self).get_recipe_env(arch)
4523
env['PYTHON_ROOT'] = self.ctx.get_python_install_dir()
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
"""
2+
src/identiconGeneration.py
3+
=================================
4+
"""
5+
import hashlib
6+
from PIL import Image
7+
from kivy.core.image import Image as CoreImage
8+
from kivy.uix.image import Image as kiImage
9+
from io import BytesIO
10+
""" Core classes for loading images and converting them to a Texture.
11+
The raw image data can be keep in memory for further access """
12+
13+
14+
# constants
15+
RESOLUTION = 128, 128
16+
V_RESOLUTION = 7, 7
17+
BACKGROUND_COLOR = 255, 255, 255, 255
18+
MODE = "RGB"
19+
20+
21+
def generate(Generate_string=None):
22+
"""Generating string"""
23+
hash_string = generate_hash(Generate_string)
24+
color = random_color(hash_string)
25+
image = Image.new(MODE, V_RESOLUTION, BACKGROUND_COLOR)
26+
image = generate_image(image, color, hash_string)
27+
image = image.resize(RESOLUTION, 0)
28+
29+
data = BytesIO()
30+
image.save(data, format='png')
31+
data.seek(0)
32+
# yes you actually need this
33+
im = CoreImage(BytesIO(data.read()), ext='png')
34+
beeld = kiImage()
35+
# only use this line in first code instance
36+
beeld.texture = im.texture
37+
return beeld
38+
# image.show()
39+
40+
41+
def generate_hash(string):
42+
"""Generating hash"""
43+
try:
44+
# make input case insensitive
45+
string = str.lower(string)
46+
hash_object = hashlib.md5(str.encode(string))
47+
print hash_object.hexdigest()
48+
49+
# returned object is a hex string
50+
return hash_object.hexdigest()
51+
52+
except IndexError:
53+
print "Error: Please enter a string as an argument."
54+
55+
56+
def random_color(hash_string):
57+
"""Getting random color"""
58+
# remove first three digits from hex string
59+
split = 6
60+
rgb = hash_string[:split]
61+
62+
split = 2
63+
r = rgb[:split]
64+
g = rgb[split:2 * split]
65+
b = rgb[2 * split:3 * split]
66+
67+
color = (int(r, 16), int(g, 16),
68+
int(b, 16), 0xFF)
69+
70+
return color
71+
72+
73+
def generate_image(image, color, hash_string):
74+
"""Generating images"""
75+
hash_string = hash_string[6:]
76+
77+
lower_x = 1
78+
lower_y = 1
79+
upper_x = int(V_RESOLUTION[0] / 2) + 1
80+
upper_y = V_RESOLUTION[1] - 1
81+
limit_x = V_RESOLUTION[0] - 1
82+
index = 0
83+
84+
for x in range(lower_x, upper_x):
85+
for y in range(lower_y, upper_y):
86+
if int(hash_string[index], 16) % 2 == 0:
87+
image.putpixel((x, y), color)
88+
image.putpixel((limit_x - x, y), color)
89+
90+
index = index + 1
91+
92+
return image

src/bitmessagekivy/kivy_helper_search.py

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@ def search_sql(xAddress="toaddress", account=None, folder="inbox", where=None, w
77
else:
88
what = None
99

10-
if folder == "sent":
10+
if folder == "sent" or folder == "draft":
1111
sqlStatementBase = '''
1212
SELECT toaddress, fromaddress, subject, message, status, ackdata, lastactiontime
1313
FROM sent '''
14+
elif folder == "addressbook":
15+
sqlStatementBase = '''SELECT label, address From addressbook '''
1416
else:
1517
sqlStatementBase = '''SELECT folder, msgid, toaddress, message, fromaddress, subject, received, read
1618
FROM inbox '''
19+
1720
sqlStatementParts = []
1821
sqlArguments = []
1922
if account is not None:
@@ -24,22 +27,33 @@ def search_sql(xAddress="toaddress", account=None, folder="inbox", where=None, w
2427
else:
2528
sqlStatementParts.append(xAddress + " = ? ")
2629
sqlArguments.append(account)
27-
if folder is not None:
28-
if folder == "new":
29-
folder = "inbox"
30-
unreadOnly = True
31-
sqlStatementParts.append("folder = ? ")
32-
sqlArguments.append(folder)
33-
else:
34-
sqlStatementParts.append("folder != ?")
35-
sqlArguments.append("trash")
30+
if folder is not "addressbook":
31+
if folder is not None:
32+
if folder == "new":
33+
folder = "inbox"
34+
unreadOnly = True
35+
sqlStatementParts.append("folder = ? ")
36+
sqlArguments.append(folder)
37+
else:
38+
sqlStatementParts.append("folder != ?")
39+
sqlArguments.append("trash")
3640
if what is not None:
37-
sqlStatementParts.append("%s LIKE ?" % (where))
38-
sqlArguments.append(what)
41+
for colmns in where:
42+
if len(where) > 1:
43+
if where[0] == colmns:
44+
filter_col = "(%s LIKE ?" % (colmns)
45+
else:
46+
filter_col += " or %s LIKE ? )" % (colmns)
47+
else:
48+
filter_col = "%s LIKE ?" % (colmns)
49+
sqlArguments.append(what)
50+
sqlStatementParts.append(filter_col)
3951
if unreadOnly:
4052
sqlStatementParts.append("read = 0")
4153
if len(sqlStatementParts) > 0:
4254
sqlStatementBase += "WHERE " + " AND ".join(sqlStatementParts)
4355
if folder == "sent":
44-
sqlStatementBase += " ORDER BY lastactiontime"
45-
return sqlQuery(sqlStatementBase, sqlArguments)
56+
sqlStatementBase += " ORDER BY lastactiontime DESC"
57+
elif folder == "inbox":
58+
sqlStatementBase += " ORDER BY received DESC"
59+
return sqlQuery(sqlStatementBase, sqlArguments)

0 commit comments

Comments
 (0)