Commit 1375b343 authored by Shashank Kumar's avatar Shashank Kumar

Adds Encryption tools UI

Adding Encryption tools UI
Integrating UI with json to populate tools menu
Importing modules from the json data
parent 26413bd3
# Python
*.pyc
# For Tests
.pytest_cache
.coverage
# Database File
new_contributor_wizard.db
......@@ -12,11 +12,12 @@ before_script:
pylint:
type: test
script:
- pipenv run pylint main.py
- pipenv run pylint main
- pipenv run pylint settings
- pipenv run pylint modules
pytest:
type: test
script:
- pipenv run pytest tests/
- pipenv run pytest tests
- pipenv run pytest --cov=modules
......@@ -9,8 +9,8 @@ pytest = "==3.6.0"
pytest-cov = "==2.5.1"
[packages]
cython = "==0.23"
kivy = "==1.9.1"
cython = "==0.28"
"kivy-1.10.1" = {path = "git+http://github.com/kivy/kivy.git"}
[requires]
python_version = "3.5"
{
"_meta": {
"hash": {
"sha256": "a1e80dc14c1f573c04eee5ed859d7a30c794411341211678052a33fb75fbbf4a"
"sha256": "be7a68baefde5ad055728aa020a19d72aa1668836334ad398492e2b87f75879a"
},
"pipfile-spec": 6,
"requires": {
......@@ -16,6 +16,51 @@
]
},
"default": {
"cython": {
"hashes": [
"sha256:02414e1cae1882d48e8fa9cdefb6e7bd3dd200a5dc5120a3905df164d23e7894",
"sha256:02540b24230fa8111ac5b2602ee61d4341adbe25d8b5a4ba8becf675c2253a36",
"sha256:047acc6712ee6fd97d661e9a804befe1307156d7595501bd1aeaaa882c01e8a9",
"sha256:086c082b77565382e1c67e864c0c4832d49dc38bdf551f69c789cbcec9b1d190",
"sha256:20c73f0af4df69948aff13183163613855a12973c66ddbeed83b079b73d83ea1",
"sha256:24078813387ce0613f8e1cb9f44e07a2abacb0ca2ec697886cb020c7628f6107",
"sha256:35696be120cf3c8505a461cf9ac7792fc92c938f9e92526a8b1bb581f802c920",
"sha256:44b94943552074b1644b9727395c06b6efbaf562083a9e2bd89c6a41d0df8159",
"sha256:518f7e22da54109661e483a91a63045203caf9fd78da4a69185a7622f759965f",
"sha256:5b9f283ca14b4d572d87f741b3c67a2d922d28e03d8bc692d700cfe4c7b94270",
"sha256:5c0bdd626e3e30656059383a0c2ee4150985ffe888c5951f2381f1120e281cd6",
"sha256:667f7f6da9951d3ab2ac5c50ee686bec42307f0d004483a981efc813caf76481",
"sha256:678f18c41248510e0ea924bc467b9586ec19726c01dd44f69086ab61c3406191",
"sha256:732f04055108a70571a2f5336dc2d07cd7ee8c63cc18777200604e7a0a9bb223",
"sha256:7abe6b8c7435f26ce022419d4a5bd5e81a9a31cc32d984939bb808709ecad528",
"sha256:96392fb9c6d69efd689fc62df5eb06a7efe8ef6c432b316d2cec4054710c13b5",
"sha256:995409aa518e87fd63098a6c2f437fa8483bd1be1485bb76446622663b071a3b",
"sha256:a1370f5c245980c61e815a073d5117ae56b1f56a83c473e2d49cdafec569581f",
"sha256:ac0b06430117241e59d07a3b965cbbdc62ac7315f5f6c3b9826740f80cf6ecd6",
"sha256:b654751d6e87de3dcea998a2afb438402a8e1bf4d60df91f163e2c086096b388",
"sha256:bb3f13351f13ee0fd920319589c14e3e1b8a8188c1ceeec780f9b77f6f627e7b",
"sha256:bbce622d2d0cacd810ee275db149950b7c4530eec0c4acfa8cf211079138b92d",
"sha256:c0fa07a0e1b33eb0d7ad4df5e9658367a40a4af0915ad652a7c7774368fbcca1",
"sha256:cad1cef5ea2bcd43d0391af921715150e84fb6122f322dde2f5faea68f6fdb13",
"sha256:d622bade45e1807f6149fee559e65a24b2ae54ab9d8ebfba2b546eec78a771de",
"sha256:d8de4ccc93a660adbeaacaa10a544072bc840a48a16680ece472c3d9c70989ce",
"sha256:dd889b21a275a516383c3bc4d65c7ba2bacee592a5478bd1b20421f2ec9702eb",
"sha256:ee7ccfcb3f46d6f8cea1eb6819c7d82c34e0f5bd8dda7c4413ccbbbb575565bb",
"sha256:fb0ea686f6e39bac3b070e43b2fda4cd47b08e6539390f3953b2c40117c40766",
"sha256:fee8d2fefbccd2029812a344e03fdd028bdf9147e4a0cb117ad2d1db14e46e11"
],
"index": "pypi",
"version": "==0.28"
}
},
"develop": {
"astroid": {
"hashes": [
"sha256:0ef2bf9f07c3150929b25e8e61b5198c27b0dca195e156f0e4d5bdd89185ca1a",
"sha256:fc9b582dba0366e63540982c3944a9230cbc6f303641c51483fa547dcc22393a"
],
"version": "==1.6.5"
},
"atomicwrites": {
"hashes": [
"sha256:240831ea22da9ab882b551b31d4225591e5e447a68c5e188db5b89ca1d487585",
......@@ -30,20 +75,6 @@
],
"version": "==18.1.0"
},
"certifi": {
"hashes": [
"sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
"sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
],
"version": "==2018.4.16"
},
"chardet": {
"hashes": [
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
],
"version": "==3.0.4"
},
"coverage": {
"hashes": [
"sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba",
......@@ -85,131 +116,6 @@
],
"version": "==4.5.1"
},
"cython": {
"hashes": [
"sha256:0577d09011142d37c7a3f36009ace67dcab44b5bcea429a0b5b6321c64f5c6d3",
"sha256:084eef2602ee033138d670e43b0cba7be109de098439ed61bc6a9df6c3992e39",
"sha256:17442942e6fd0e120aac1b3a3b355fe4d420e5642b46e9d48185b8bf676ff776",
"sha256:4e4541bfe1e13ea4d77c1022bf55db6d7f6aa9d9ebf13bf0fbf339b96c943dbd",
"sha256:67c05d719f7e8b9989ee6e3ed8937897a95b9b0bb1d77845446feac6cd8045f9",
"sha256:753d107b1c439b6491182dd2a31bc46e81b96c8d9b270fd76543310c76a4363c",
"sha256:7e23a6b242880ff95f5835c72e4e2a5bec42f801b0c18176d4379c05894007a6",
"sha256:7f1e91b6cc537bc2dac5cdb3b9e2e6c1d84c08c2abdb1e3c4ec9cb5cbb824070",
"sha256:9fd01e8301c24fb3ba0411ad8eb16f5d9f9f8e66b1281fbe7aba2a9bd9d343dc",
"sha256:ab8474ef98c43cbc28fb9271f32b4475882ab366b081b0fa0dc03fd4394f1225",
"sha256:b544bcf1c67bb506528804dbe41a647b3fd37daafbef76432be6de16e25be1f7",
"sha256:c58496e09c819c700a2a5ec94b5f1cc2933fdebe9072cdefad482e666891615c"
],
"index": "pypi",
"version": "==0.23"
},
"idna": {
"hashes": [
"sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f",
"sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4"
],
"version": "==2.6"
},
"kivy": {
"hashes": [
"sha256:04212ba9dbae211be3da48f995230cb47cba996dbf4d87592054ca2223736966",
"sha256:1d624855206c77752c8d84805c2a9e5f23693a607e020cbac114e83f9e9f2b9a",
"sha256:29bc45be34c26a8acb1dafdd329145f997a473be344cd052659f821f6478637e",
"sha256:3b47df0771073831d19d652e6089c73cea46a33b21c92168483c23708f382779",
"sha256:e173b9be49ca3b124a24150dc76d70e933b3305579a7c4fc0a68924ec19b121a"
],
"index": "pypi",
"version": "==1.9.1"
},
"kivy-garden": {
"hashes": [
"sha256:9b7d9de5efacbcd0c4b3dd873b30622a86093c9965aa47b523c7a32f3eb34610",
"sha256:c256f42788421273a08fbb0a228f0fb0e80dd86b629fb8c0920507f645be6c72"
],
"version": "==0.1.4"
},
"more-itertools": {
"hashes": [
"sha256:2b6b9893337bfd9166bee6a62c2b0c9fe7735dcf85948b387ec8cba30e85d8e8",
"sha256:6703844a52d3588f951883005efcf555e49566a48afd4db4e965d69b883980d3",
"sha256:a18d870ef2ffca2b8463c0070ad17b5978056f403fb64e3f15fe62a52db21cc0"
],
"version": "==4.2.0"
},
"pluggy": {
"hashes": [
"sha256:7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff",
"sha256:d345c8fe681115900d6da8d048ba67c25df42973bda370783cd58826442dcd7c",
"sha256:e160a7fcf25762bb60efc7e171d4497ff1d8d2d75a3d0df7a21b76821ecbf5c5"
],
"version": "==0.6.0"
},
"py": {
"hashes": [
"sha256:29c9fab495d7528e80ba1e343b958684f4ace687327e6f789a94bf3d1915f881",
"sha256:983f77f3331356039fdd792e9220b7b8ee1aa6bd2b25f567a963ff1de5a64f6a"
],
"version": "==1.5.3"
},
"pytest": {
"hashes": [
"sha256:39555d023af3200d004d09e51b4dd9fdd828baa863cded3fd6ba2f29f757ae2d",
"sha256:c76e93f3145a44812955e8d46cdd302d8a45fbfc7bf22be24fe231f9d8d8853a"
],
"version": "==3.6.0"
},
"pytest-cov": {
"hashes": [
"sha256:03aa752cf11db41d281ea1d807d954c4eda35cfa1b21d6971966cc041bbf6e2d",
"sha256:890fe5565400902b0c78b5357004aab1c814115894f4f21370e2433256a3eeec"
],
"index": "pypi",
"version": "==2.5.1"
},
"requests": {
"hashes": [
"sha256:6a1b267aa90cac58ac3a765d067950e7dbbf75b1da07e895d1f594193a40a38b",
"sha256:9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e"
],
"version": "==2.18.4"
},
"six": {
"hashes": [
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
],
"version": "==1.11.0"
},
"urllib3": {
"hashes": [
"sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
"sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
],
"version": "==1.22"
}
},
"develop": {
"astroid": {
"hashes": [
"sha256:032f6e09161e96f417ea7fad46d3fac7a9019c775f202182c22df0e4f714cb1c",
"sha256:dea42ae6e0b789b543f728ddae7ddb6740ba33a49fb52c4a4d9cb7bb4aa6ec09"
],
"version": "==1.6.4"
},
"atomicwrites": {
"hashes": [
"sha256:240831ea22da9ab882b551b31d4225591e5e447a68c5e188db5b89ca1d487585",
"sha256:a24da68318b08ac9c9c45029f4a10371ab5b20e4226738e150e6e7c571630ae6"
],
"version": "==1.1.5"
},
"attrs": {
"hashes": [
"sha256:4b90b09eeeb9b88c35bc642cbac057e45a5fd85367b985bd2809c62b7b939265",
"sha256:e0d0eb91441a3b53dab4d9b743eafc1ac44476296a2053b6ca3af0b139faf87b"
],
"version": "==18.1.0"
},
"isort": {
"hashes": [
"sha256:1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af",
......@@ -295,8 +201,17 @@
"sha256:39555d023af3200d004d09e51b4dd9fdd828baa863cded3fd6ba2f29f757ae2d",
"sha256:c76e93f3145a44812955e8d46cdd302d8a45fbfc7bf22be24fe231f9d8d8853a"
],
"index": "pypi",
"version": "==3.6.0"
},
"pytest-cov": {
"hashes": [
"sha256:03aa752cf11db41d281ea1d807d954c4eda35cfa1b21d6971966cc041bbf6e2d",
"sha256:890fe5565400902b0c78b5357004aab1c814115894f4f21370e2433256a3eeec"
],
"index": "pypi",
"version": "==2.5.1"
},
"six": {
"hashes": [
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
......
v0.0.1
## June 7 2018
- Sign Up feature added.
## June 11 2018
- Adding Dashboard feature
- Adding blog, cli, communication, encryption, how_to_use, vcs and way_ahead modules for courseware
- Adding application, profile and theme modules for settings
## June 11 2018
- Adding Dashboard feature
- Adding blog, cli, communication, encryption, how_to_use, vcs and way_ahead modules for courseware
- Adding application, profile and theme modules for settings
## June 3 2018
......
[
{"application_settings": 1},
{"blog": 1},
{"cli": 1},
{"communication": 1},
{"encryption":[
{
"tutorials": 0
},
{
"tools": [
{
"Create and manage key pair": {
"difficulty": "Beginner"
},
"Encrypt a message": {
"difficulty": "Intermediate"
},
"Decrypt a message": {
"difficulty": "Intermediate"
},
"Sign other keys": {
"difficulty": "Advance"
}
}
]
}
]
},
{"how_to_use": 1},
{"profile_settings": 1},
{"theme_settings": 1},
{"vcs": 1},
{"way_ahead": 1}
]
\ No newline at end of file
......@@ -78,6 +78,8 @@ There are two type of testing being done for this application.
- `main.py` - It contains the Root Kivy Application which is to run in order to start the GUI.
- `settings.py` - This modules sets up the database which is later integrated with the entire application.
- `data` - It contains static application data which can be used by application at anytime. It helps when the machine is offine.
- `docs` - This directory should and only contain the documentations for developers, contributors and end users.
......@@ -86,4 +88,54 @@ There are two type of testing being done for this application.
- `tests` - This directory should and only contain the Test written for the application, both for application logic and GUI.
- `ui` - This directory should and only contain the `.kv` files which uses Kivy Language in order to create the widget tree. Hence, making the UI designing easier.
- `ui` - This directory should and only contain the `.kv` files which uses Kivy Language in order to create the widget tree.
### Sign Up Module
- `modules/signup/` contains the Python logic for Sign Up. They can be described as below.
- `exceptions.py` contains SignUp module specific custom exception classes
- `services.py` contains service functions for SignUp module
- `signup.py` contains KIVY UI and other integrations for SignUp module
- `validations.py` contains user information validation functions
- `utils.py` contains utility functions to help out with SignUp operations
- `ui/signup.kv` file contains KIVY widget tree which in turn renders the UI for the Sign Up module.
- `tests/signup/` contains written tests for the Sign Up module. They can be described as below.
- `test_services.py` - contains tests for `modules/signup/services.py`
- `test_utils.py` - contains tests for `modules/signup/utils.py`
- `test_validation.py` - contains tests for `modules/signup/validations.py`
### The Dashboard
- `modules/dashboard/` contains modules for Dashboard features. They can be described as below.
- `dashboard.py` contains Dashboard class for integration with courseware modules (blog, cli, communication, encryption, how_to_use, vcs and way_ahead), settings (application, profile and theme), and the UI
- `ui/dashboard.py` contains KIVY widget tree which in turn renders the UI for the Dashboard module.
### The Courseware
- How To Use - This module helps user getting started with New Contributor Wizard application and is placed in `how_to_use/`
- Communication - This module helps user understand importance of communication and the tools involved like IRC and mailing lists and is places in `communication/`
- CLI - This module helps user learn about Command Line Interface and is places in `cli/`
- Blog - This module helps user create and deploy blogs and is placed in `blog/`
- Version Control - This module helps user get started with managing projects using Version Control System like git and is places in `vcs/`
- Encryption - This module helps user understand the importance of encryption with the help of tools used for the same and is places in `encryption/`
- Way Ahead - This module helps user reach out to differnt communities and explore open source projects and events like Google Summer of Code and is placed in `way_ahead`
### The Settings
- The settings for the entire New Contributor Wizard in places in `settings/`. They can be described as below.
- `application.py` module contains application specific settings like language
- `profile.py` module contains user related settings like name, email etc
- `theme.py` module contains application theme related settings like color
......@@ -4,7 +4,9 @@ Root Kivy Application
from kivy.app import App
from kivy.config import Config
from modules.welcome import WelcomeScreen
from settings import initializing_database
from modules.signup.signup import SignUp
from modules.dashboard.dashboard import Dashboard
class NewContributorWizard(App):
......@@ -13,15 +15,18 @@ class NewContributorWizard(App):
'''
def build(self):
return WelcomeScreen()
self.load_kv('./ui/main.kv')
if __name__ == '__main__':
'''
Setting window width to 720px and height to 480px
Setting up things
'''
initializing_database()
'''
Fixing touch issue with some platforms
'''
Config.set('graphics', 'width', '720')
Config.set('graphics', 'height', '480')
Config.set('input', 'mouse', 'mouse')
'''
Running Kivy application and building root Widget
......
'''
Modules containing Blog classes
'''
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_file('./ui/blog.kv')
class Blog(BoxLayout):
'''
Blog class for tutorials and tools
'''
pass
'''
Modules containing CLI classes
'''
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_file('./ui/cli.kv')
class CLI(BoxLayout):
'''
Command Line Interface class for tutorials and tools
'''
pass
'''
Modules containing Communication classes
'''
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_file('./ui/communication.kv')
class Communication(BoxLayout):
'''
Communication class for tutorials and tools
'''
pass
'''
Sample module just to showcase how pytest should be used
'''
from datetime import datetime as dt
import calendar
class SampleCommunicationModule():
'''
Sample class to showcase testing
'''
@staticmethod
def return_datetime_object(date_time, given_format):
'''
Sample method to change given date time to unix timestamp
'''
given_datetime_object = dt.strptime(date_time, given_format)
return given_datetime_object
@staticmethod
def unix_time_of_communication(date_time, given_format):
'''
Sample method to change given date time to unix timestamp
'''
given_date_time = dt.strptime(date_time, given_format)
unix_time = calendar.timegm(given_date_time.utctimetuple())
return unix_time
'''
Dashboard module includes classes to showcase Dashboard with different courseware and settings
'''
from copy import copy as cp
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from modules.blog.blog import Blog
from modules.cli.cli import CLI
from modules.communication.communication import Communication
from modules.encryption.encryption import Encryption
from modules.how_to_use.how_to_use import HowToUse
from modules.vcs.vcs import VCS
from modules.way_ahead.way_ahead import WayAhead
from modules.settings.application import ApplicationSettings
from modules.settings.profile import ProfileSettings
from modules.settings.theme import ThemeSettings
Builder.load_file('./ui/dashboard.kv')
class Dashboard(BoxLayout, Screen):
'''
Dashboard class to integrate courseware and settings
'''
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.all_menu_screens = {
'application_settings': ApplicationSettings(),
'blog': Blog(),
'cli': CLI(),
'communication': Communication(),
'encryption': Encryption(),
'how_to_use': HowToUse(),
'profile_settings': ProfileSettings(),
'theme_settings': ThemeSettings(),
'vcs': VCS(),
'way_ahead': WayAhead(),
}
self.all_menu_items = list(self.all_menu_screens.keys())
self.enable_menu('cli')
def enable_menu(self, menu_item_to_enable):
'''
enable_menu function focuses on concerned menu items or settings which is clicked and
removes focus from all other menu items and settings
'''
menu_item_to_enable_widget = self.ids[menu_item_to_enable+'_box']
menu_item_to_enable_color = menu_item_to_enable_widget.canvas.before.children[0].rgba
if menu_item_to_enable_color != [1, 1, 1, 1] or 'settings' in menu_item_to_enable:
self.ids['module_screen'].add_widget(self.all_menu_screens[menu_item_to_enable])
if 'settings' not in menu_item_to_enable:
self.ids[menu_item_to_enable+'_box'].canvas.before.children[0].rgba = [1, 1, 1, 1]
self.ids[menu_item_to_enable+'_label'].color = (0, 0, 0, 1)
all_menu_items_copy = cp(self.all_menu_items)
all_menu_items_copy.remove(menu_item_to_enable)
for menu_item in all_menu_items_copy:
if 'settings' not in menu_item:
self.ids[menu_item+'_box'].canvas.before.children[0].rgba = [0, 0, 0, 1]
self.ids[menu_item+'_label'].color = (1, 1, 1, 1)
self.ids['module_screen'].remove_widget(self.all_menu_screens[menu_item])
'''
Modules containing Encryption classes
'''
from copy import copy as cp
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from modules.encryption.tutorials import tutorials
from modules.encryption.tools import tools
Builder.load_file('./ui/encryption/encryption.kv')
class Encryption(BoxLayout):
'''
Encryption class for tutorials and tools
'''
def __init__(self, **kwargs):
super(Encryption, self).__init__(**kwargs)
self.all_options = {
'tutorials': tutorials.Tutorials(),
'tools': tools.Tools(),
}
self.all_options_items = list(self.all_options.keys())
self.enable_option('tools')
def enable_option(self, option_to_enable):
'''
enable_menu function focuses on concerned menu items or settings which is clicked and
removes focus from all other menu items and settings
'''
option_to_enable_widget = self.ids[option_to_enable+'_box']
option_to_enable_color = option_to_enable_widget.canvas.before.children[0].rgba
if option_to_enable_color != [1, 1, 1, 1]:
self.ids[option_to_enable+'_box'].canvas.before.children[0].rgba = [1, 1, 1, 1]
self.ids[option_to_enable].color = (0, 0, 0, 1)
all_options_items_copy = cp(self.all_options_items)
all_options_items_copy.remove(option_to_enable)
for option in all_options_items_copy:
self.ids[option+'_box'].canvas.before.children[0].rgba = [0, 0, 0, 1]
self.ids[option].color = (1, 1, 1, 1)
self.ids['encryption_content_box'].remove_widget(self.all_options[option])
self.ids['encryption_content_box'].add_widget(self.all_options[option_to_enable])
'''
This modules helps create and manage key pairs
'''
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_file('./ui/encryption/all_tools/create_and_manage_key_pair.kv')
class CreateAndManageKeyPair(BoxLayout):
'''
CreateAndManageKeyPair helps integrate UI with helper functions
'''
pass
'''
This modules helps decrypt a message using private key
'''
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_file('./ui/encryption/all_tools/decrypt_a_message.kv')
class DecryptAMessage(BoxLayout):
'''
DecryptAMessage integrated UI with helper functions
'''
pass
'''
This module helps encrypt a message using public key
'''
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_file('./ui/encryption/all_tools/encrypt_a_message.kv')
class EncryptAMessage(BoxLayout):
'''
DEncryptAMessage integrated UI with helper functions
'''
pass
'''
This module helps user sign other keys with existing key pair
'''
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_file('./ui/encryption/all_tools/sign_other_keys.kv')
class SignOtherKeys(BoxLayout):
'''
SignOtherKeys integrated UI with helper functions
'''
pass
'''
Modules containing Tools classes for Encryption
'''
import json
from importlib import import_module
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_file('./ui/encryption/tools.kv')
class ToolBox(BoxLayout):
'''
ToolBox class to present available tools
'''
pass