From 0299b9efa4a5d267d4f39bf5c380df277f5f6348 Mon Sep 17 00:00:00 2001 From: Djalim Simaila Date: Tue, 30 Apr 2024 10:00:21 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A6=20feat(app.py,=20requirements.txt)?= =?UTF-8?q?:=20add=20new=20app.py=20file=20and=20requirements.txt=20for=20?= =?UTF-8?q?Kivy=20app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 👍 app.py: Implement Kivy app with word pair generation and liking functionality 📝 requirements.txt: Add dependencies required for the Kivy app --- app.py | 161 +++++++++++++++++++ requirements.txt | 395 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 556 insertions(+) create mode 100644 app.py create mode 100644 requirements.txt diff --git a/app.py b/app.py new file mode 100644 index 0000000..5f3f615 --- /dev/null +++ b/app.py @@ -0,0 +1,161 @@ +from kivy.lang import Builder +from kivy.properties import StringProperty, ListProperty +from kivymd.app import MDApp +from kivymd.uix.label import MDLabel +from kivymd.uix.navigationbar import MDNavigationBar, MDNavigationItem +from kivymd.uix.navigationbar.navigationbar import MDBoxLayout +from kivymd.uix.screen import MDScreen +from wonderwords import RandomWord +from kivymd.uix.card import MDCard +from kivy.event import EventDispatcher +from kivy.uix.scrollview import ScrollView + +KV = ''' + + + MDNavigationItemIcon: + icon: root.icon + + MDNavigationItemLabel: + text: root.text + + + name: "main_screen" + MDBoxLayout: + orientation: "vertical" + pos_hint: {"center_x": .5, "center_y": .5} + + MDCard: + padding: "4dp" + size_hint: None, None + size: "240dp", "100dp" + + MDRelativeLayout: + + MDLabel: + text : root.currentWordPair + adaptive_size: True + color: "black" + pos: "12dp", "12dp" + bold: True + + MDBoxLayout: + + MDButton: + style: "elevated" + pos_hint: {"center_x": .5, "center_y": .5} + on_press: root.new_word_pair(*args) + + MDButtonIcon: + icon: "plus" + + MDButtonText: + text: "Suivant" + + MDButton: + style: "elevated" + pos_hint: {"center_x": .5, "center_y": .5} + on_press: root.like_word_pair(*args) + + MDButtonIcon: + icon: "plus" + + MDButtonText: + text: "Like" + + + ScrollView: + MDBoxLayout: + id: favorite_layout + orientation: "vertical" + +MDBoxLayout: + orientation: "vertical" + md_bg_color: self.theme_cls.backgroundColor + + MDScreenManager: + id: screen_manager + + MainScreen: + name: "Word Pair" + image_size: "1024" + + FavoriteScreen: + name: "Favorites" + image_size: "800" + + MDNavigationBar: + on_switch_tabs: app.on_switch_tabs(*args) + + BaseMDNavigationItem + icon: "gmail" + text: "Word Pair" + active: True + + BaseMDNavigationItem + icon: "twitter" + text: "Favorites" +''' + +r = RandomWord() + +class WordList(): + words = [] + +class BaseMDNavigationItem(MDNavigationItem): + icon = StringProperty() + text = StringProperty() + +class LikedEventDispatcher(EventDispatcher): + def __init__(self, **kwargs): + self.register_event_type('on_like') + super(LikedEventDispatcher, self).__init__(**kwargs) + + def on_like(self, *args): + print("a word pair has been liked", args) + +class MainScreen(MDScreen): + currentWordPair = StringProperty("TidalWave") + + def new_word_pair(self,instance): + print(MDApp.get_running_app().liked) + self.currentWordPair = r.word().capitalize() + r.word().capitalize() + + def like_word_pair(self,instance): + MDApp.get_running_app().liked.append(self.currentWordPair) + layout = self.manager.get_screen("Favorites").ids.favorite_layout + layout.clear_widgets() + for word in MDApp.get_running_app().liked: + print(word) + card = MDCard() + label = MDLabel( + text=word, + color="black", + ) + card.add_widget(label) + layout.add_widget(card) + +class FavoriteScreen(MDScreen): + image_size = StringProperty() + +class Example(MDApp): + + liked = ListProperty([]) + + def add_to_liked(self): + self.liked.append() + pass + + def on_switch_tabs( + self, + bar: MDNavigationBar, + item: MDNavigationItem, + item_icon: str, + item_text: str, + ): + self.root.ids.screen_manager.current = item_text + + def build(self): + return Builder.load_string(KV) + +Example().run() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..688e688 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,395 @@ +absolutely-proprietary==1.0.0 +aiohttp==3.9.3 +aiosignal==1.3.1 +altgraph==0.17.3 +annotated-types==0.6.0 +anyascii==0.3.2 +anyio==4.3.0 +appdirs==1.4.4 +arandr==0.1.11 +argcomplete==3.1.1 +argon2-cffi==23.1.0 +argon2-cffi-bindings==21.2.0 +arrow==1.3.0 +asttokens==2.4.1 +async-lru==2.0.4 +async-timeout==4.0.3 +asyncio-dgram==1.2.0 +attrs==23.2.0 +auto-cpufreq==1 +auto-py-to-exe==2.36.0 +autobahn==23.6.2 +autocommand==2.2.2 +Automat==22.10.0 +avalon_framework==1.8.2 +Babel==2.14.0 +beautifulsoup4==4.12.3 +bidict==0.23.1 +binaryornot==0.4.4 +bleach==6.1.0 +blinker==1.6.3 +borgbackup==1.2.8 +bottle==0.12.25 +bottle-websocket==0.2.9 +Brotli==1.1.0 +bt-dualboot==1.0.1 +btrfs==13 +btrfsutil==6.8 +build==1.2.1 +CacheControl==0.14.0 +cached-property==1.5.2 +cachy==0.3.0 +cairocffi==1.6.1 +CairoSVG==2.7.1 +cattrs==23.2.3 +certifi==2024.2.2 +cffi==1.16.0 +chardet==5.2.0 +charset-normalizer==3.3.2 +cleo==2.1.0 +click==8.1.7 +clickable-ut==8.0.1 +cloudscraper==1.2.71 +colorama==0.4.6 +coloredlogs==15.0.1 +comm==0.2.2 +constantly==23.10.0 +construct==2.10.70 +contourpy==1.1.0 +cookiecutter==2.6.0 +coverage==7.4.1 +crashtest==0.4.1 +cryptography==42.0.5 +cssselect==1.2.0 +cssselect2==0.7.0 +cssutils==2.9.0 +cycler==0.11.0 +dbus-python==1.3.2 +debugpy==1.8.1 +decorator==5.1.1 +defusedxml==0.7.1 +DisplayCAL==3.9.12 +distlib==0.3.8 +distro==1.9.0 +dnspython==2.5.0 +docopt==0.6.2 +docstring-to-markdown==0.15 +docutils==0.20.1 +dulwich==0.21.7 +dunamai==1.18.0 +Eel==0.16.0 +et-xmlfile==1.1.0 +evdev==1.7.0 +eventlet==0.35.1 +exceptiongroup==1.2.0 +executing==2.0.0 +fastjsonschema==2.19.1 +filelock==3.13.3 +Flask==2.3.3 +Flask-Cors==4.0.0 +Flask-SocketIO==5.3.6 +fonttools==4.40.0 +fqdn==1.5.1 +freetype-py==2.4.0 +frozenlist==1.4.1 +fsspec==2023.9.2 +gallery_dl==1.26.8 +gbinder-python==1.1.2 +gevent==22.10.2 +gevent-websocket==0.10.1 +googletrans-py==4.0.0 +greenlet==3.0.3 +guiscrcpy==2023.1.1 +h11==0.14.0 +h2==4.1.0 +hkdf==0.0.3 +hpack==4.0.0 +hsluv==5.0.3 +html5lib==1.1 +httpcore==1.0.2 +httpx==0.26.0 +humanfriendly==10.0 +humanize==4.9.0 +hyperframe==6.0.1 +hyperlink==21.0.0 +hypothesis==6.100.0 +idna==3.6 +ifaddr==0.2.0 +importlib_metadata==5.1.0 +incremental==22.10.0 +inflect==7.2.0 +iniconfig==2.0.0 +InquirerPy==0.3.4 +installer==0.7.0 +ipykernel==6.29.4 +ipython==8.22.2 +ipython-genutils==0.2.0 +isoduration==20.11.0 +iterable-io==1.0.0 +itsdangerous==2.1.2 +jaraco.classes==3.3.1 +jaraco.context==4.3.0 +jaraco.functools==4.0.0 +jaraco.text==3.12.0 +jedi==0.19.1 +jedi-language-server==0.41.3 +jeepney==0.8.0 +Jinja2==3.1.3 +joblib==1.3.2 +Js2Py==0.72 +json5==0.9.24 +jsonpointer==2.4 +jsonschema==4.21.1 +jsonschema-specifications==2023.12.1 +jupyter-console==6.6.3 +jupyter-events==0.10.0 +jupyter-lsp==2.2.5 +jupyter_client==8.6.1 +jupyter_core==5.7.2 +jupyter_server==2.13.0 +jupyter_server_terminals==0.5.3 +jupyterlab==4.1.6 +jupyterlab_pygments==0.3.0 +jupyterlab_server==2.26.0 +keyring==25.0.0 +KindleComicConverter==5.6.5 +kiwisolver==1.4.4 +lark==1.1.9 +libfdt==1.7.0 +libvirt-python==10.2.0 +lit==17.0.6.dev0 +lockfile==0.12.2 +lsplug==4 +lsprotocol==2023.0.1 +lxml==5.1.0 +magic-wormhole==0.14.0 +Mako==1.3.2 +mariadb==1.1.10 +Markdown==3.6 +markdown-it-py==3.0.0 +MarkupSafe==2.1.5 +material-color-utilities-python==0.1.5 +matplotlib==3.7.1 +matplotlib-inline==0.1.6 +mdurl==0.1.2 +meson==1.4.0 +mistune==3.0.2 +more-itertools==10.2.0 +mouse==0.7.1 +MouseInfo==0.1.3 +mozjpeg-lossless-optimization==1.1.3 +msgpack==1.0.5 +multidict==6.0.5 +natsort==8.4.0 +nbclassic==1.0.0 +nbclient==0.10.0 +nbconvert==7.16.3 +nbformat==5.10.4 +nest_asyncio==1.6.0 +netaddr==0.8.0 +netifaces==0.11.0 +netsnmp-python==1.0a1 +nftables==0.1 +noiseprotocol==0.3.1 +normcap==0.5.4 +nose==1.3.7 +notebook==7.1.2 +notebook_shim==0.2.4 +npyscreen==4.10.5 +numpy==1.24.2 +openai==1.16.2 +openpyxl==3.1.2 +ordered-set==4.1.0 +outcome==1.3.0.post0 +overrides==7.7.0 +packaging==23.2 +pandas==1.5.3 +pandocfilters==1.5.1 +parso==0.8.4 +patool==2.2.0 +patsy==0.5.4 +pexpect==4.9.0 +pfzy==0.3.4 +pickleshare==0.7.5 +pillow==10.2.0 +pipreqs==0.4.13 +pipx==1.5.0 +pkginfo==1.9.6 +platformdirs==4.2.0 +pluggy==1.4.0 +ply==3.11 +poetry==1.8.2 +poetry-core==1.9.0 +poetry-dynamic-versioning==1.2.0 +poetry-plugin-export==1.5.0 +pooch==1.8.1 +prometheus_client==0.20.0 +prompt-toolkit==3.0.43 +protontricks==1.11.1 +psutil==5.9.8 +ptyprocess==0.7.0 +pure-eval==0.2.2 +pwquality==1.4.5 +py-cord==0.0.0 +pyaml==23.12.0 +pyasn1==0.5.0 +pyasn1_modules==0.3.0 +PyAutoGUI==0.9.54 +pybind11==2.12.0 +pycairo==1.26.0 +pyclip==0.7.0 +pycparser==2.22 +pycryptodomex==3.12.0 +pydantic==2.6.4 +pydantic_core==2.16.3 +pyfuse3==3.3.0 +pygls==1.3.1 +Pygments==2.17.2 +PyGObject==3.48.1 +pyinotify==0.9.6 +pyinstaller==5.12.0 +pyinstaller-hooks-contrib==2023.3 +pyjsparser==2.7.1 +pykeepass==4.0.7 +pymongo==4.6.1 +PyMsgBox==1.0.9 +PyNaCl==1.4.0 +PyOpenGL==3.1.6 +pyOpenSSL==24.0.0 +pyotp==2.9.0 +pyparsing==3.1.0 +pyperclip==1.8.2 +pypng==0.20231004.0 +pyproject_hooks==1.0.0 +PyQt5==5.15.9 +PyQt5-Qt5==5.15.2 +PyQt5-sip==12.12.1 +PyQtWebEngine==5.15.6 +pyrsistent==0.19.3 +PyScreeze==0.1.30 +pyserial==3.5 +PySide2==5.15.13 +PySide6==6.6.2 +PySocks==1.7.1 +pyte==0.8.2 +pytesseract==0.3.13 +pytest==8.1.1 +python-dateutil==2.9.0 +python-engineio==4.8.2 +python-json-logger==2.0.7 +python-magic==0.4.27 +python-slugify==8.0.4 +python-socketio==5.8.0 +python-xlib==0.33 +pytweening==1.2.0 +pytz==2024.1 +PyYAML==6.0 +pyzfs==2.2.99 +pyzmq==25.1.2 +qrcode==7.4.2 +QtPy==2.4.1 +ranger-fm==1.9.3 +rapidfuzz==3.6.2 +raven==6.10.0 +redis==5.0.1 +referencing==0.33.0 +regex==2023.12.25 +reportlab==4.1.0 +requests==2.31.0 +requests-futures==1.0.1 +requests-toolbelt==1.0.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rich==13.7.1 +rich-cli @ file:///home/djalim/.cache/yay/python-rich-cli-git/src/python-rich-cli/dist/rich_cli-1.8.0-py3-none-any.whl#sha256=aa8a908a3ad288d1eeb9de7373387c0d726e77b2302ef71d48b94064a37483ae +rich-rst==1.1.7 +rpds-py==0.17.1 +ruamel.yaml==0.18.6 +ruamel.yaml.clib==0.2.8 +s-tui==1.1.6 +scikit-learn==1.4.1.post1 +scipy==1.13.0 +scour==0.38.2 +screenkey==1.5 +SecretStorage==3.3.3 +Send2Trash==1.8.2 +service-identity==23.1.0 +setproctitle==1.3.3 +shellingham==1.5.4 +shiboken2==5.15.13 +shiboken6==6.6.2 +shiboken6-generator==6.6.2 +shtab==1.6.5 +six==1.16.0 +smbus==1.1 +sniffio==1.3.1 +sortedcontainers==2.4.0 +soupsieve==2.5 +spake2==0.8 +SQLAlchemy==2.1.0b1.dev0 +srt==3.5.3 +stack-data==0.6.3 +statsmodels==0.14.1 +stem==1.8.3 +stopit==1.1.2 +svglib==1.5.1 +TBB==0.2 +termcolor==2.4.0 +terminado==0.18.1 +text-unidecode==1.3 +textual==0.56.3 +thefuck==3.32 +threadpoolctl==3.4.0 +tinycss2==1.2.1 +tldr==3.2.0 +toml==0.10.2 +tomli==2.0.1 +tomli_w==1.0.0 +tomlkit==0.12.4 +tornado==6.3.2 +torrequest==0.1.0 +tqdm==4.66.2 +traitlets==5.14.2 +tree-sitter==0.21.0 +tree-sitter-languages==1.10.2 +trio==0.25.0 +trove-classifiers==2024.3.29 +Twisted==24.3.0 +txaio==23.1.1 +txtorcon==23.11.0 +typeguard==4.2.1 +types-python-dateutil==2.9.0.20240316 +typing_extensions==4.10.0 +uc-micro-py==1.0.3 +ueberzug==18.2.1 +uri-template==1.3.0 +urllib3==1.26.18 +urwid==2.6.10 +userpath==1.9.2 +validate-pyproject==0.13.post1.dev0+gb752273.d20230520 +validators==0.20.0 +vdf==3.4 +virtualenv==20.25.0 +vispy==0.12.2 +wcwidth==0.2.13 +webcolors==1.13 +webencodings==0.5.1 +websocket-client==1.7.0 +websockets==12.0 +Werkzeug==2.3.8 +wg_tool==6.6.0 +whichcraft==0.6.1 +wsaccel==0.6.6 +wxPython==4.2.1 +xcffib==1.4.0 +Yapsy==1.12.2 +yarg==0.1.9 +yarl==1.9.4 +yt-dlp==2024.4.9 +zeroconf==0.63.0 +zipp==3.17.0 +zipstream-ng==1.7.1 +zope.event==5.0 +zope.interface==6.2 +zstandard==0.22.0 +zxcvbn==4.4.28