Commit 3ba3924b authored by Shashank Kumar's avatar Shashank Kumar

Added description to all the modules

- Adding description to all the course ware modules by updating
`module_data.json`
- Refactored `module_box` module to support description on the UI
parent 6402a0a3
v0.0.1
## August 13 2018
- Adding description to all the course ware modules by updating `module_data.json` (Shashank Kumar - realslimshanky)
- Refactored `module_box` module to support description on the UI (Shashank Kumar - realslimshanky)
## August 7 2018
......
[
{
"application_settings": {
"description": "",
"tutorials": [],
"tools": []
}
},
{
"blog": {
"description": "A blog can be seen as a perspective of the author about a particular topic they want the world to know. It also serves as a reminder to self which helps remember past concepts and accomplishments. And, it can also be seen as a place to show off your cool projects to the world. In Blog section, you'll learn about what are the various ways to setup a blog, you'll learn about how to put the blog out for the world to see and much more.",
"tutorials": [],
"tools": []
}
},
{
"cli": {
"command_line_inteface": {
"description": "Command Line Interfaces are one of the essential tool used by a developer on a daily basis irrespective of their domain of work. This makes it the first thing to learn before even starting a programming language. In Command Line Interface section, you'll learn about the basics and few hacks to improve productivity.",
"tutorials": [],
"tools": []
}
},
{
"communication": {
"description": "When in an organization, communication plays a vital role in deciding how smooth the team will function. Whether team is comprised of just 2 contributors or more than that. Improving communication can bring a surprising change in time taken while querying peers for doubt, reviews and feedbacks. In this communication section, you'll learn about different forms of communication channel an organization uses and guidelines for communication.",
"tutorials": [],
"tools": []
}
},
{
"encryption": {
"description": "You might have heard about data being the key to today's world. More so, within an organization and in your own life you might have to store and share sensetive information with your peers. Hence, it becomes important that you use best practices in order to better encrypt/decrypt the data in consideration. This Encryption section, you'll learn more about cryptography and encryption. You'll even get to create and manage your own key pair, encrypt and decrypt messages.",
"tutorials": [
{
"title": "Encryption 101",
......@@ -53,30 +58,35 @@
},
{
"how_to_use": {
"description": "How To Use section contains a simple description about the application and different sections in it.",
"tutorials": [],
"tools": []
}
},
{
"profile_settings": {
"description": "",
"tutorials": [],
"tools": []
}
},
{
"theme_settings": {
"description": "",
"tutorials": [],
"tools": []
}
},
{
"vcs": {
"version_control_system": {
"description": "While collaborating, a Version Control System helps in managing the codebase shared across contributors for a project, smooth out the development process varying different versions and gives enough freedom for a person to experiment with a new feature without much hassle. In Version Control System, you'll learn about how it works, what are the various ways of using VCS and get to work on a sample repository as well.",
"tutorials": [],
"tools": []
}
},
{
"way_ahead": {
"description": "If you have a general idea about all the course ware sections above this, then mark yourself ready for the real world projects and collaborating with different organizations. This section will help you understand how open source organizations like Debian work, how to contribute to such organizations, what are the various programs like Google Summer of Code or Outreachy and much more.",
"tutorials": [],
"tools": []
}
......
'''
Modules containing CLI classes
Modules containing CommandLineInterface classes
'''
from kivy.uix.boxlayout import BoxLayout
from modules.module_box.module_box import ModuleBox
class CLI(BoxLayout):
class CommandLineInterface(BoxLayout):
'''
CLI class for tutorials and tools
CommandLineInterface class for tutorials and tools
'''
def __init__(self, **kwargs):
super(CLI, self).__init__(**kwargs)
self.module_box = ModuleBox("cli")
super(CommandLineInterface, self).__init__(**kwargs)
self.module_box = ModuleBox("command_line_inteface")
self.add_widget(self.module_box)
......@@ -6,12 +6,12 @@ from kivy.uix.boxlayout import BoxLayout
from modules.module_box.module_box import ModuleBox
class VCS(BoxLayout):
class VersionControlSystem(BoxLayout):
'''
VCS class for tutorials and tools
VersionControlSystem class for tutorials and tools
'''
def __init__(self, **kwargs):
super(VCS, self).__init__(**kwargs)
self.module_box = ModuleBox("vcs")
super(VersionControlSystem, self).__init__(**kwargs)
self.module_box = ModuleBox("version_control_system")
self.add_widget(self.module_box)
......@@ -12,11 +12,13 @@ except ImportError:
logging.info('Dashboard: Install navigationdrawer from garden')
from modules.course_modules.blog.blog import Blog
from modules.course_modules.cli.cli import CLI
from modules.course_modules.command_line_inteface.command_line_inteface import\
CommandLineInterface
from modules.course_modules.communication.communication import Communication
from modules.course_modules.encryption.encryption import Encryption
from modules.course_modules.how_to_use.how_to_use import HowToUse
from modules.course_modules.vcs.vcs import VCS
from modules.course_modules.version_control_system.version_control_system\
import VersionControlSystem
from modules.course_modules.way_ahead.way_ahead import WayAhead
......
'''
Modules containing ModuleBox classes
'''
import json
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
......@@ -18,9 +20,26 @@ class ModuleBox(BoxLayout):
def __init__(self, root_module_name, **kwargs):
super(ModuleBox, self).__init__(**kwargs)
with open('data/module_data.json') as data:
json_data = json.loads(data.read())
for data in json_data:
if root_module_name in data.keys():
self.module_data = data[root_module_name]
break
module_title = ' '.join(
[name.capitalize() for name in root_module_name.split('_')])
self.ids['module_title'].text = module_title
self.ids['module_description'].text = self.module_data['description']
self.all_options = {
'tutorials': ModuleTutorialsMenu(root_module_name),
'tools': ModuleToolsMenu(root_module_name),
'tutorials': ModuleTutorialsMenu(
root_module_name=root_module_name,
tutorials=self.module_data["tutorials"]),
'tools': ModuleToolsMenu(
root_module_name=root_module_name,
tools=self.module_data["tools"]),
}
self.all_options_items = list(self.all_options.keys())
......@@ -29,6 +48,11 @@ class ModuleBox(BoxLayout):
enable_menu function focuses on concerned menu items or settings which
is clicked and removes focus from all other menu items and settings
'''
if 'module_details_box' in self.ids:
self.ids['module_content_box'].remove_widget(
self.ids['module_content_box'].children[0])
del(self.ids['module_details_box'])
option_to_enable_widget = self.ids[option_to_enable + '_box']
widget_canvas = option_to_enable_widget.canvas
option_to_enable_color = widget_canvas.before.children[0].rgba
......
'''
Modules containing Tools classes for Abstraction
'''
import json
from importlib import import_module
from kivy.lang import Builder
......@@ -29,22 +28,15 @@ class ModuleToolsMenu(BoxLayout):
ModuleToolsMenu class to present Tools Menu
'''
def __init__(self, root_module_name, **kwargs):
def __init__(self, root_module_name, tools, **kwargs):
super(ModuleToolsMenu, self).__init__(**kwargs)
self.all_tools = {}
self.removed_tools_menu = None
self.root_module_name = root_module_name
with open('data/module_data.json') as data:
json_data = json.loads(data.read())
for data in json_data:
if self.root_module_name in data.keys():
self.module_data = data[self.root_module_name]
break
if self.module_data["tools"]:
for tool in self.module_data["tools"]:
if tools:
for tool in tools:
tool_key = '_'.join(tool['title'].lower().split())
self.all_tools[tool_key] = tool
self.populate_tools_menu()
......
......@@ -2,7 +2,6 @@
Modules containing Tutorials classes for Abstraction
'''
import os
import json
from kivy.lang import Builder
from kivy.factory import Factory
......@@ -31,22 +30,15 @@ class ModuleTutorialsMenu(BoxLayout):
ModuleTutorialsMenu class to present Tutorials Menu
'''
def __init__(self, root_module_name, **kwargs):
def __init__(self, root_module_name, tutorials, **kwargs):
super(ModuleTutorialsMenu, self).__init__(**kwargs)
self.all_tutorials = {}
self.removed_tutorials_menu = None
self.root_module_name = root_module_name
with open('data/module_data.json') as data:
json_data = json.loads(data.read())
for data in json_data:
if self.root_module_name in data.keys():
self.module_data = data[self.root_module_name]
break
if self.module_data["tutorials"]:
for tutorial in self.module_data["tutorials"]:
if tutorials:
for tutorial in tutorials:
tutorial_key = '_'.join(tutorial['title'].lower().split())
self.all_tutorials[tutorial_key] = tutorial
self.populate_tutorials_menu()
......
......@@ -19,10 +19,10 @@
id: communication_label
text: 'Communication'
MenuButton
id: cli_box
on_press: nav_screen.current = 'cli_screen'
id: command_line_interface_box
on_press: nav_screen.current = 'command_line_interface_screen'
MenuLabel
id: cli_label
id: command_line_interface_label
text: 'CLI'
MenuButton
id: blog_box
......@@ -31,10 +31,10 @@
id: blog_label
text: 'Blog'
MenuButton
id: vcs_box
on_press: nav_screen.current = 'vcs_screen'
id: version_control_system_box
on_press: nav_screen.current = 'version_control_system_screen'
MenuLabel
id: vcs_label
id: version_control_system_label
text: 'VCS'
MenuButton
id: encryption_box
......@@ -86,8 +86,8 @@
name: 'blog_screen'
Blog
Screen
name: 'cli_screen'
CLI
name: 'command_line_interface_screen'
CommandLineInterface
Screen
name: 'communication_screen'
Communication
......@@ -98,8 +98,8 @@
name: 'how_to_use_screen'
HowToUse
Screen
name: 'vcs_screen'
VCS
name: 'version_control_system_screen'
VersionControlSystem
Screen
name: 'way_ahead_screen'
WayAhead
......
......@@ -9,6 +9,25 @@
Rectangle
pos: self.pos
size: self.size
BoxLayout
orientation: 'vertical'
id: module_details_box
BoxLayout
size_hint: 1, 0.2
ModuleLabel
id: module_title
font_size: dp(30)
valign: 'center'
halign: 'center'
BoxLayout
size_hint: 1, 0.8
orientation: 'vertical'
ModuleLabel
id: module_description
font_size: dp(20)
padding: 20, 20
valign: 'top'
halign: 'justify'
BoxLayout
size_hint: 1, 0.1175
RadioNavButton
......@@ -24,6 +43,13 @@
text: 'Tools'
id: tools
<ModuleLabel@Label>
font_name: 'ui/assets/fonts/VarelaRound-Regular.ttf'
color: 0, 0, 0, 1
markup: True
text_size: self.size
size: self.texture_size
<RadioNavButton@ButtonBehavior+BoxLayout>
canvas.before:
Color
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment