Advertisement
Guest User

Untitled

a guest
Nov 6th, 2019
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.12 KB | None | 0 0
  1. from kivy.app import App
  2. from kivy.lang import Builder
  3. from kivy.uix.screenmanager import ScreenManager, Screen
  4. from kivy.uix.textinput import TextInput, NumericProperty
  5. from kivy.uix.button import Button
  6. from kivy.uix.recycleview.views import RecycleDataViewBehavior
  7. from kivy.uix.recyclegridlayout import RecycleGridLayout
  8. from kivy.uix.behaviors import FocusBehavior
  9. from kivy.uix.recycleview.layout import LayoutSelectionBehavior
  10. from kivy.uix.scrollview import ScrollView
  11. from kivy.properties import StringProperty, ListProperty, ObjectProperty
  12. from kivy.config import Config
  13. from bidi.algorithm import get_display
  14. import json
  15. import requests
  16. from datetime import datetime
  17.  
  18.  
  19.  
  20. Config.set('graphics', 'width', '300')
  21. Config.set('graphics', 'height', '500')
  22.  
  23.  
  24.  
  25. class Scroll(ScrollView):
  26. pass
  27.  
  28. class SelectableRecycleGridLayout(FocusBehavior, LayoutSelectionBehavior,
  29. RecycleGridLayout):
  30. pass
  31.  
  32. class SelectableButtonMain(RecycleDataViewBehavior, Button):
  33. index = None
  34.  
  35. def refresh_view_attrs(self, rv, index, data):
  36. self.index = index
  37. return super(SelectableButtonMain, self).refresh_view_attrs(rv, index, data)
  38.  
  39. def on_release(self):
  40. num = mainMissions.data_cat[self.index][1]
  41. ms.screen(num,'mainm')
  42.  
  43. class SelectableButtonImportant(RecycleDataViewBehavior, Button):
  44. index = None
  45.  
  46. def refresh_view_attrs(self, rv, index, data):
  47. self.index = index
  48. return super(SelectableButtonImportant, self).refresh_view_attrs(rv, index, data)
  49.  
  50. def on_release(self):
  51. num = importantMissions.data_cat[self.index][1]
  52. ms.screen(num,'important')
  53.  
  54. class SelectableButtonFinished(RecycleDataViewBehavior, Button):
  55. index = None
  56.  
  57. def refresh_view_attrs(self, rv, index, data):
  58. self.index = index
  59. return super(SelectableButtonFinished, self).refresh_view_attrs(rv, index, data)
  60.  
  61. def on_release(self):
  62. num = finishedMissions.data_cat[self.index][1]
  63. ms.screen(num,'finished')
  64.  
  65.  
  66.  
  67. def deleteMission(what):
  68. url = "#.firebaseio.com/.json"
  69. if what == 'all' or what == '*':
  70. results = requests.get("#.firebaseio.com/.json")
  71. content = results.content.decode()
  72. fin1 = ''
  73. fin2 = ''
  74. fin3 = ''
  75. for x in range(1, 1000):
  76. if 'important{}'.format(x) not in content:
  77. for z in range(1,x):
  78. if fin1 == 'y': continue
  79. else: requests.delete(url=url[:-5] + 'important'+ str(z) + '.json')
  80. fin1 = 'y'
  81. if 'main{}'.format(x) not in content:
  82. for z in range(1,x):
  83. if fin2 == 'y': continue
  84. else: requests.delete(url=url[:-5] + 'main'+ str(z) + '.json')
  85. fin2 = 'y'
  86. if 'finished{}'.format(x) not in content:
  87. for z in range(1,x):
  88. if fin3 == 'y': continue
  89. else: requests.delete(url=url[:-5] + 'finished'+ str(z) + '.json')
  90. fin3 = 'y'
  91. if fin1 + fin2 + fin3 == 'yyy':
  92. break
  93. else:
  94. requests.delete(url=url[:-5] + what + '.json')
  95.  
  96. #deleteMission('*')
  97.  
  98. def Must():
  99. url = "#.firebaseio.com/.json"
  100. def addimp(shem, teur, safa):
  101. date = str(datetime.now())
  102. JSON = '{"important' + str(
  103. 1) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
  104. to_database = json.loads(JSON)
  105. requests.patch(url=url, json=to_database)
  106. def addma(shem, teur, safa):
  107. date = str(datetime.now())
  108. JSON = '{"main' + str(
  109. 1) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
  110. to_database = json.loads(JSON)
  111. requests.patch(url=url, json=to_database)
  112. def addfin(shem, teur, safa):
  113. date = str(datetime.now())
  114. JSON = '{"finished' + str(
  115. 1) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
  116. to_database = json.loads(JSON)
  117. requests.patch(url=url, json=to_database)
  118. addimp('X', 'X', 'X')
  119. addma('X', 'X', 'X')
  120. addfin('X', 'X', 'X')
  121. Must()
  122.  
  123. class BackButton(Button):
  124. pass
  125.  
  126. class HeTextInput(TextInput):
  127. max_chars = NumericProperty(17) # maximum character allowed
  128. str = StringProperty()
  129.  
  130. def __init__(self, **kwargs):
  131. super(HeTextInput, self).__init__(**kwargs)
  132. self.text = get_display("טקסט")
  133.  
  134.  
  135. def insert_text(self, substring, from_undo=False):
  136. if not from_undo and (len(self.text) + len(substring) > self.max_chars):
  137. return
  138. self.str = self.str+substring
  139. self.text = get_display(self.str)
  140. substring = ""
  141. super(HeTextInput, self).insert_text(substring, from_undo)
  142.  
  143. def do_backspace(self, from_undo=False, mode='bkspc'):
  144. self.str = self.str[0:len(self.str)-1]
  145. self.text = get_display(self.str)
  146.  
  147. def clean(self):
  148. self.text = ''
  149. self.str = ''
  150.  
  151. #מנהל החלנות
  152. class WindowManager(ScreenManager):
  153. pass
  154.  
  155. #חלון העמוד הראשי
  156. class mainWindow(Screen):
  157. def new(self):
  158. sm.current = "new"
  159. def mainm(self):
  160. sm.current = "mainm"
  161. def important(self):
  162. sm.current = "important"
  163. def finished(self):
  164. sm.current = "finished"
  165.  
  166.  
  167. #החלונות שמופיעים בעמוד הראשי
  168. class importantMissions(Screen):
  169. data_items = ListProperty([])
  170. data_cat = []
  171.  
  172. def __init__(self, **kwargs):
  173. super(importantMissions, self).__init__(**kwargs)
  174. self.get_important()
  175.  
  176. def back(self):
  177. sm.current = "main"
  178.  
  179. def get_important(self):
  180. results = requests.get("#.firebaseio.com/.json")
  181. content = results.content.decode()
  182. globals().update(eval(content))
  183. content = eval(content)
  184. category = 'important'
  185. for num in range(1, 1000):
  186. if '{}{}'.format(category, num) not in content:
  187. zz = num
  188. break
  189. for num in range(1, zz):
  190. date = eval("{}{}['date'][:10]".format(category, num))
  191. name = eval("{}{}['name'][::-1]".format(category, num))
  192. lang = eval("{}{}['lang']".format(category, num))
  193. self.data_items.append(date)
  194. self.data_items.append(lang)
  195. self.data_items.append(name)
  196. self.data_cat.append([date, category + str(num)])
  197. self.data_cat.append([lang, category + str(num)])
  198. self.data_cat.append([name, category + str(num)])
  199. def clean(self):
  200. self.data_cat.clear()
  201. self.data_items.clear()
  202. class mainMissions(Screen):
  203. data_items = ListProperty([])
  204. data_cat = []
  205.  
  206. def __init__(self, **kwargs):
  207. super(mainMissions, self).__init__(**kwargs)
  208. self.get_main()
  209.  
  210. def back(self):
  211. sm.current = "main"
  212.  
  213. def get_main(self):
  214. results = requests.get("#.firebaseio.com/.json")
  215. content = results.content.decode()
  216. globals().update(eval(content))
  217. content = eval(content)
  218. category = 'main'
  219. for num in range(1, 1000):
  220. if '{}{}'.format(category, num) not in content:
  221. zz = num
  222. break
  223. for num in range(1, zz):
  224. date = eval("{}{}['date'][:10]".format(category, num))
  225. name = eval("{}{}['name'][::-1]".format(category, num))
  226. lang = eval("{}{}['lang']".format(category, num))
  227. self.data_items.append(date)
  228. self.data_items.append(lang)
  229. self.data_items.append(name)
  230. self.data_cat.append([date, category + str(num)])
  231. self.data_cat.append([lang, category + str(num)])
  232. self.data_cat.append([name, category + str(num)])
  233. def clean(self):
  234. self.data_cat.clear()
  235. self.data_items.clear()
  236.  
  237. class finishedMissions(Screen):
  238. data_items = ListProperty([])
  239. data_cat = []
  240.  
  241. def __init__(self, **kwargs):
  242. super(finishedMissions, self).__init__(**kwargs)
  243. self.get_finished()
  244.  
  245. def back(self):
  246. sm.current = "main"
  247.  
  248. def get_finished(self):
  249. url = "#.firebaseio.com/.json"
  250. results = requests.get("#.firebaseio.com/.json")
  251. content = results.content.decode()
  252. globals().update(eval(content))
  253. content = eval(content)
  254. category = 'finished'
  255. for num in range(1, 1000):
  256. if '{}{}'.format(category, num) not in content:
  257. zz = num
  258. break
  259. for num in range(1, zz):
  260. date = eval("{}{}['date'][:10]".format(category, num))
  261. name = eval("{}{}['name'][::-1]".format(category, num))
  262. lang = eval("{}{}['lang']".format(category, num))
  263. self.data_items.append(date)
  264. self.data_items.append(lang)
  265. self.data_items.append(name)
  266. self.data_cat.append([date, category + str(num)])
  267. self.data_cat.append([lang, category + str(num)])
  268. self.data_cat.append([name, category + str(num)])
  269. def clean(self):
  270. self.data_cat.clear()
  271. self.data_items.clear()
  272. class newMission(Screen):
  273. url = "#.firebaseio.com/.json"
  274. def addImportant(self, shem, teur, safa):
  275. results = requests.get("#.firebaseio.com/.json")
  276. content = results.content.decode()
  277. for x in range(1,1000):
  278. if 'important{}'.format(x) not in content:
  279. shem = shem[::-1]
  280. teur = teur[::-1]
  281. date = str(datetime.now())
  282. JSON = '{"important' + str(x) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
  283. to_database = json.loads(JSON)
  284. requests.patch(url=self.url, json=to_database)
  285. break
  286. def addMain(self, shem, teur, safa):
  287. results = requests.get("#.firebaseio.com/.json")
  288. content = results.content.decode()
  289. for x in range(1,1000):
  290. if 'main{}'.format(x) not in content:
  291. shem = shem[::-1]
  292. teur = teur[::-1]
  293. date = str(datetime.now())
  294. JSON = '{"main' + str(x) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
  295. to_database = json.loads(JSON)
  296. requests.patch(url=self.url, json=to_database)
  297. break
  298. def back(self):
  299. sm.current = "main"
  300.  
  301. #חלון משימה
  302. class Mission(Screen):
  303. namee = ObjectProperty(None)
  304. date = ObjectProperty(None)
  305. desc = ObjectProperty(None)
  306. lang = ObjectProperty(None)
  307.  
  308. url = "#.firebaseio.com/.json"
  309. def addFinished(self):
  310. results = requests.get(f"#.firebaseio.com/{num}.json")
  311. content = results.content.decode()
  312. content = eval(content)
  313. shem = content['name']
  314. teur = content['desc']
  315. safa = content['lang']
  316. results = requests.get("#.firebaseio.com/.json")
  317. content = results.content.decode()
  318. for x in range(1, 1000):
  319. if 'finished{}'.format(x) not in content:
  320. shem = shem
  321. teur = teur
  322. date = str(datetime.now())
  323. JSON = '{"finished' + str(
  324. x) + '":{"name":"' + shem + '", "desc":"' + teur + '", "lang":"' + safa + '", "date":"' + date + '"}}'
  325. to_database = json.loads(JSON)
  326. requests.patch(url=self.url, json=to_database)
  327. break
  328. def back(self):
  329. sm.current = which
  330. def finished(self):
  331.  
  332. self.addFinished()
  333. deleteMission(num)
  334. def screen(self,numi, zwhich):
  335. global which
  336. global num
  337. which = zwhich
  338. num = numi
  339. sm.transition.direction = "up"
  340. sm.current = "mission"
  341.  
  342. def on_enter(self, *args):
  343. url = '#.firebaseio.com/{}.json'.format(num)
  344. results = requests.get(url)
  345. content = results.content.decode()
  346. content = eval(content)
  347.  
  348. self.date.text = content['date'][:16]
  349. self.desc.text = content['desc'][::-1]
  350. self.lang.text = content['lang']
  351. self.namee.text = content['name'][::-1]
  352.  
  353.  
  354.  
  355. mainmi = mainMissions()
  356. imortantmi = importantMissions()
  357. finishedmi = finishedMissions()
  358. simp = SelectableButtonImportant()
  359. smai = SelectableButtonMain()
  360. sfin = SelectableButtonFinished
  361. ms = Mission()
  362.  
  363. with open('app.kv', encoding='utf-8') as f:
  364. Builder.load_string(f.read())
  365.  
  366. sm = WindowManager()
  367.  
  368. screens = [mainWindow(name="main"), importantMissions(name="important"), mainMissions(name="mainm"), finishedMissions(name="finished"), newMission(name="new"), Mission(name="mission")]
  369. for screen in screens:
  370. sm.add_widget(screen)
  371.  
  372. sm.current = "main"
  373.  
  374. class MyMainApp(App):
  375. title = "משימות למתכנת"
  376.  
  377. def build(self):
  378. return sm
  379.  
  380.  
  381.  
  382. if __name__ == "__main__":
  383. MyMainApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement