Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from kivy.app import App
- from kivy.lang import Builder
- from kivy.uix.screenmanager import ScreenManager, Screen
- from kivy.uix.textinput import TextInput, NumericProperty
- from kivy.uix.button import Button
- from kivy.uix.recycleview.views import RecycleDataViewBehavior
- from kivy.uix.recyclegridlayout import RecycleGridLayout
- from kivy.uix.behaviors import FocusBehavior
- from kivy.uix.recycleview.layout import LayoutSelectionBehavior
- from kivy.uix.scrollview import ScrollView
- from kivy.properties import StringProperty, ListProperty, ObjectProperty
- from kivy.config import Config
- from bidi.algorithm import get_display
- import json
- import requests
- from datetime import datetime
- Config.set('graphics', 'width', '300')
- Config.set('graphics', 'height', '500')
- class Scroll(ScrollView):
- pass
- class SelectableRecycleGridLayout(FocusBehavior, LayoutSelectionBehavior,
- RecycleGridLayout):
- pass
- class SelectableButtonMain(RecycleDataViewBehavior, Button):
- index = None
- def refresh_view_attrs(self, rv, index, data):
- self.index = index
- return super(SelectableButtonMain, self).refresh_view_attrs(rv, index, data)
- def on_release(self):
- num = mainMissions.data_cat[self.index][1]
- ms.screen(num,'mainm')
- class SelectableButtonImportant(RecycleDataViewBehavior, Button):
- index = None
- def refresh_view_attrs(self, rv, index, data):
- self.index = index
- return super(SelectableButtonImportant, self).refresh_view_attrs(rv, index, data)
- def on_release(self):
- num = importantMissions.data_cat[self.index][1]
- ms.screen(num,'important')
- class SelectableButtonFinished(RecycleDataViewBehavior, Button):
- index = None
- def refresh_view_attrs(self, rv, index, data):
- self.index = index
- return super(SelectableButtonFinished, self).refresh_view_attrs(rv, index, data)
- def on_release(self):
- num = finishedMissions.data_cat[self.index][1]
- ms.screen(num,'finished')
- def deleteMission(what):
- url = "#.firebaseio.com/.json"
- if what == 'all' or what == '*':
- results = requests.get("#.firebaseio.com/.json")
- content = results.content.decode()
- fin1 = ''
- fin2 = ''
- fin3 = ''
- for x in range(1, 1000):
- if 'important{}'.format(x) not in content:
- for z in range(1,x):
- if fin1 == 'y': continue
- else: requests.delete(url=url[:-5] + 'important'+ str(z) + '.json')
- fin1 = 'y'
- if 'main{}'.format(x) not in content:
- for z in range(1,x):
- if fin2 == 'y': continue
- else: requests.delete(url=url[:-5] + 'main'+ str(z) + '.json')
- fin2 = 'y'
- if 'finished{}'.format(x) not in content:
- for z in range(1,x):
- if fin3 == 'y': continue
- else: requests.delete(url=url[:-5] + 'finished'+ str(z) + '.json')
- fin3 = 'y'
- if fin1 + fin2 + fin3 == 'yyy':
- break
- else:
- requests.delete(url=url[:-5] + what + '.json')
- #deleteMission('*')
- def Must():
- url = "#.firebaseio.com/.json"
- def addimp(shem, teur, safa):
- date = str(datetime.now())
- JSON = '{"important' + str(
- 1) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
- to_database = json.loads(JSON)
- requests.patch(url=url, json=to_database)
- def addma(shem, teur, safa):
- date = str(datetime.now())
- JSON = '{"main' + str(
- 1) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
- to_database = json.loads(JSON)
- requests.patch(url=url, json=to_database)
- def addfin(shem, teur, safa):
- date = str(datetime.now())
- JSON = '{"finished' + str(
- 1) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
- to_database = json.loads(JSON)
- requests.patch(url=url, json=to_database)
- addimp('X', 'X', 'X')
- addma('X', 'X', 'X')
- addfin('X', 'X', 'X')
- Must()
- class BackButton(Button):
- pass
- class HeTextInput(TextInput):
- max_chars = NumericProperty(17) # maximum character allowed
- str = StringProperty()
- def __init__(self, **kwargs):
- super(HeTextInput, self).__init__(**kwargs)
- self.text = get_display("טקסט")
- def insert_text(self, substring, from_undo=False):
- if not from_undo and (len(self.text) + len(substring) > self.max_chars):
- return
- self.str = self.str+substring
- self.text = get_display(self.str)
- substring = ""
- super(HeTextInput, self).insert_text(substring, from_undo)
- def do_backspace(self, from_undo=False, mode='bkspc'):
- self.str = self.str[0:len(self.str)-1]
- self.text = get_display(self.str)
- def clean(self):
- self.text = ''
- self.str = ''
- #מנהל החלנות
- class WindowManager(ScreenManager):
- pass
- #חלון העמוד הראשי
- class mainWindow(Screen):
- def new(self):
- sm.current = "new"
- def mainm(self):
- sm.current = "mainm"
- def important(self):
- sm.current = "important"
- def finished(self):
- sm.current = "finished"
- #החלונות שמופיעים בעמוד הראשי
- class importantMissions(Screen):
- data_items = ListProperty([])
- data_cat = []
- def __init__(self, **kwargs):
- super(importantMissions, self).__init__(**kwargs)
- self.get_important()
- def back(self):
- sm.current = "main"
- def get_important(self):
- results = requests.get("#.firebaseio.com/.json")
- content = results.content.decode()
- globals().update(eval(content))
- content = eval(content)
- category = 'important'
- for num in range(1, 1000):
- if '{}{}'.format(category, num) not in content:
- zz = num
- break
- for num in range(1, zz):
- date = eval("{}{}['date'][:10]".format(category, num))
- name = eval("{}{}['name'][::-1]".format(category, num))
- lang = eval("{}{}['lang']".format(category, num))
- self.data_items.append(date)
- self.data_items.append(lang)
- self.data_items.append(name)
- self.data_cat.append([date, category + str(num)])
- self.data_cat.append([lang, category + str(num)])
- self.data_cat.append([name, category + str(num)])
- def clean(self):
- self.data_cat.clear()
- self.data_items.clear()
- class mainMissions(Screen):
- data_items = ListProperty([])
- data_cat = []
- def __init__(self, **kwargs):
- super(mainMissions, self).__init__(**kwargs)
- self.get_main()
- def back(self):
- sm.current = "main"
- def get_main(self):
- results = requests.get("#.firebaseio.com/.json")
- content = results.content.decode()
- globals().update(eval(content))
- content = eval(content)
- category = 'main'
- for num in range(1, 1000):
- if '{}{}'.format(category, num) not in content:
- zz = num
- break
- for num in range(1, zz):
- date = eval("{}{}['date'][:10]".format(category, num))
- name = eval("{}{}['name'][::-1]".format(category, num))
- lang = eval("{}{}['lang']".format(category, num))
- self.data_items.append(date)
- self.data_items.append(lang)
- self.data_items.append(name)
- self.data_cat.append([date, category + str(num)])
- self.data_cat.append([lang, category + str(num)])
- self.data_cat.append([name, category + str(num)])
- def clean(self):
- self.data_cat.clear()
- self.data_items.clear()
- class finishedMissions(Screen):
- data_items = ListProperty([])
- data_cat = []
- def __init__(self, **kwargs):
- super(finishedMissions, self).__init__(**kwargs)
- self.get_finished()
- def back(self):
- sm.current = "main"
- def get_finished(self):
- url = "#.firebaseio.com/.json"
- results = requests.get("#.firebaseio.com/.json")
- content = results.content.decode()
- globals().update(eval(content))
- content = eval(content)
- category = 'finished'
- for num in range(1, 1000):
- if '{}{}'.format(category, num) not in content:
- zz = num
- break
- for num in range(1, zz):
- date = eval("{}{}['date'][:10]".format(category, num))
- name = eval("{}{}['name'][::-1]".format(category, num))
- lang = eval("{}{}['lang']".format(category, num))
- self.data_items.append(date)
- self.data_items.append(lang)
- self.data_items.append(name)
- self.data_cat.append([date, category + str(num)])
- self.data_cat.append([lang, category + str(num)])
- self.data_cat.append([name, category + str(num)])
- def clean(self):
- self.data_cat.clear()
- self.data_items.clear()
- class newMission(Screen):
- url = "#.firebaseio.com/.json"
- def addImportant(self, shem, teur, safa):
- results = requests.get("#.firebaseio.com/.json")
- content = results.content.decode()
- for x in range(1,1000):
- if 'important{}'.format(x) not in content:
- shem = shem[::-1]
- teur = teur[::-1]
- date = str(datetime.now())
- JSON = '{"important' + str(x) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
- to_database = json.loads(JSON)
- requests.patch(url=self.url, json=to_database)
- break
- def addMain(self, shem, teur, safa):
- results = requests.get("#.firebaseio.com/.json")
- content = results.content.decode()
- for x in range(1,1000):
- if 'main{}'.format(x) not in content:
- shem = shem[::-1]
- teur = teur[::-1]
- date = str(datetime.now())
- JSON = '{"main' + str(x) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
- to_database = json.loads(JSON)
- requests.patch(url=self.url, json=to_database)
- break
- def back(self):
- sm.current = "main"
- #חלון משימה
- class Mission(Screen):
- namee = ObjectProperty(None)
- date = ObjectProperty(None)
- desc = ObjectProperty(None)
- lang = ObjectProperty(None)
- url = "#.firebaseio.com/.json"
- def addFinished(self):
- results = requests.get(f"#.firebaseio.com/{num}.json")
- content = results.content.decode()
- content = eval(content)
- shem = content['name']
- teur = content['desc']
- safa = content['lang']
- results = requests.get("#.firebaseio.com/.json")
- content = results.content.decode()
- for x in range(1, 1000):
- if 'finished{}'.format(x) not in content:
- shem = shem
- teur = teur
- date = str(datetime.now())
- JSON = '{"finished' + str(
- x) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
- to_database = json.loads(JSON)
- requests.patch(url=self.url, json=to_database)
- break
- def back(self):
- sm.current = which
- def finished(self):
- self.addFinished()
- deleteMission(num)
- def screen(self,numi, zwhich):
- global which
- global num
- which = zwhich
- num = numi
- sm.transition.direction = "up"
- sm.current = "mission"
- def on_enter(self, *args):
- url = '#.firebaseio.com/{}.json'.format(num)
- results = requests.get(url)
- content = results.content.decode()
- content = eval(content)
- self.date.text = content['date'][:16]
- self.desc.text = content['desc'][::-1]
- self.lang.text = content['lang']
- self.namee.text = content['name'][::-1]
- mainmi = mainMissions()
- imortantmi = importantMissions()
- finishedmi = finishedMissions()
- simp = SelectableButtonImportant()
- smai = SelectableButtonMain()
- sfin = SelectableButtonFinished
- ms = Mission()
- with open('app.kv', encoding='utf-8') as f:
- Builder.load_string(f.read())
- sm = WindowManager()
- screens = [mainWindow(name="main"), importantMissions(name="important"), mainMissions(name="mainm"), finishedMissions(name="finished"), newMission(name="new"), Mission(name="mission")]
- for screen in screens:
- sm.add_widget(screen)
- sm.current = "main"
- class MyMainApp(App):
- title = "משימות למתכנת"
- def build(self):
- return sm
- if __name__ == "__main__":
- MyMainApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement