From c0054df4f79e0fb1b8d99b87b8e2694e6cf53c8a Mon Sep 17 00:00:00 2001 From: janis Date: Mon, 24 Oct 2022 17:36:57 +0200 Subject: [PATCH] added first --- bin/__pycache__/autocomplete.cpython-310.pyc | Bin 0 -> 2110 bytes bin/__pycache__/csv_parsers.cpython-310.pyc | Bin 0 -> 4861 bytes .../filepathanalysis.cpython-310.pyc | Bin 0 -> 1068 bytes bin/__pycache__/info_handler.cpython-310.pyc | Bin 0 -> 1276 bytes bin/__pycache__/player.cpython-310.pyc | Bin 0 -> 3263 bytes bin/gui/gui.kv | 7 ++-- data/config.csv | 2 +- data/settings.ini | 6 +-- data/songtemp.csv | 6 +-- data/temp.csv | 2 +- musicplayer.py | 22 +++++++++- .../__pycache__/server.cpython-310.pyc | Bin 0 -> 1474 bytes .../server_handler.cpython-310.pyc | Bin 0 -> 1273 bytes showcaseScreen/handlers/server.py | 33 +++++++++++++++ showcaseScreen/handlers/server_handler.py | 29 +++++++++++++ showcaseScreen/index.html | 6 +++ showcaseScreen/musicplayer_showcase_screen.py | 39 ++++++++++++++++++ showcaseScreen/ui/mainui.kv | 17 ++++++++ 18 files changed, 155 insertions(+), 14 deletions(-) create mode 100644 bin/__pycache__/autocomplete.cpython-310.pyc create mode 100644 bin/__pycache__/csv_parsers.cpython-310.pyc create mode 100644 bin/__pycache__/filepathanalysis.cpython-310.pyc create mode 100644 bin/__pycache__/info_handler.cpython-310.pyc create mode 100644 bin/__pycache__/player.cpython-310.pyc create mode 100644 showcaseScreen/handlers/__pycache__/server.cpython-310.pyc create mode 100644 showcaseScreen/handlers/__pycache__/server_handler.cpython-310.pyc create mode 100644 showcaseScreen/handlers/server.py create mode 100644 showcaseScreen/handlers/server_handler.py create mode 100644 showcaseScreen/index.html create mode 100644 showcaseScreen/musicplayer_showcase_screen.py create mode 100644 showcaseScreen/ui/mainui.kv diff --git a/bin/__pycache__/autocomplete.cpython-310.pyc b/bin/__pycache__/autocomplete.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3fd72d33a5e25f842f067abd4a6b38dbfc6ee5bb GIT binary patch literal 2110 zcmaJ?&2Jk;6rY)0uh;9f^MUwCh>%qkgb|7_2rj4!3Zg=Y2sKqDEYZL#dP;`5(CRKg^X=?jWRcDDRDJvT@VSYJchUkD_x3q7uVKK1S6b?v3K`?_oh07Rnx7+G}$g8n%p33a7 z9Pl_FkE2ZBj6o)OX5L-WT&SdpF3pW4VUcT{9Hg@9z)eayHZ?^3k~byGiOTpfW~#oy6az(NwD5L6Y?%DBXNlh!-_QEp8iZ2Gz9=!Gh+=6pjk`sE0wWYSgQ2ik-p_)VB3ib}1-p6bM zPUwiKo5&TUDn%LEX2lgd_kX(@*!{d@2hxR|m3W}@ji}og5Z&zSS9q&~=6#e|txsR+ z*9D1d<8&d5%V_E&$42AMvzSZg(Y(e=Ps`ewhhER^J+L>!7r@~SO9#RSx@kG#Ji->t zEgMDar6~TsF)56)Hq-KQ8~`zaCiXU;jLl8xgR@oPpTilf>Vic8aef5W zYj&p^R(I``LL}icW_Jg6a@Z7XXtAkt(`9NErFI4EPqs;^byN_1G%tdac#J-lASJ{AUyRZSb+q+8_secD!+= zgH_|$>(;OtX3hm$CsNz@ydO9$aHD@$Q&3QL9QYupu|_%vLx zyl&mBK>OW}^${;3rKQrw0fxfgt!Y--^<8~*M@F!h@sYB|*R5py&u0PN!b734M7UhQ H)}8+V_)74@ literal 0 HcmV?d00001 diff --git a/bin/__pycache__/csv_parsers.cpython-310.pyc b/bin/__pycache__/csv_parsers.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..244d921504a0a2a33c0116452f9516110a7f1724 GIT binary patch literal 4861 zcmb_gOLODK5yk)@2vU?pX%*W^Hp%2^Gg(tv+j&-!T9+%eaaERH+Z%6%7X*tLiI7Qx zI|GWfEc&Fqx}2Xt9rY{nKX6J_PCn=6gOjfZAPLFjKI{dB#=Owe=>GaKO18J_7Ova9 zkD`AaSk`~2Q@$K@ZsFE9K!nw`1QT|jb=hr8IKq8w3HQwI+UQk;hn|O?BkT{YR(1Nv zTca@gI6RhIB#};4JUp)7>&2SmFXTENjQa6W9EE9|40&?I)1Ks!KIMZ%jQjF)Y-n{N zqUFm*=N4|wL8R4X5Xu&eHWkietLq9^RPcm2Bt%wyN1uKmLoq#BZ5{PPt+8F0a)l{v zc0G#w5^@a%7jh(r0@8BGMMC8QaV`5YN+lK~SSb=N;-e#}l$@W*X=mz~*rxz@9A=%M| zrE1{*#hZt{WFQYu!eOirM=Cji%=+-oSjW-be)veL!w2#35PA+qq0&<6_UKXOW4B?P z1_80q9*D<0R%g>@Ax(R+Afj(sT-0`Pn{WFq8mTp7XY_q6wNIRxb%HMx_NO*R+_Zwe zYi2!~nODy(W}!ufa;6VHkm*^#m2W0!XQS?%kPl_GTvPyI2VG5Lb$g#Rphk~P_ZEs=uIjWr()%zR z$RNn-L6E}??M4th9Ebg4rWyqBpCC|M;HbVugsfB|w3Q-TRB>yP(6?OXvqr^?ZuX(S zVCj>6NL1lVp72Et&#I`4Ej)eE5Zidx#E#g-vo4x2;a=wB8}BP?v_=iNu=xUG1kBICO`7TK20HNx8)bfm^D%*blZ|~jvb8zR~&bxQs{;T>v&H4FU zGRd4iV%ar}wOkXY6f!!vsASTu7vK)l@Cx{{Dy9Os!;i7pWYs)sQRF&cFR|-i?l{ZV z|LSfdPYO98i&rBGmy3(yH#h`pD@)XRmr#4}5~_Ca4xzRJ)c(`(uWsbOi?zE?<^OmS zfBg@<&*n{o+DiU3wTnN!`&87X3D1KO5BX`>A0s=;_HmoXM;Jgpj7O3%ov#t?6++cd zU?ufaB81hB`WfiO-ZP+5y-F`#2g$s6hyo&2uhB@0$PbA8oX9VT5I%E2dMiLGDkTZq zx?3B{Nnqs8>V=H!02=j<380h`G|8C*bO!+4Va;cOX~7_(P`S7WvP+o0_2OWaz zq^4iUi|3!e*oC%&0rK%0fwJKKt zrGAM~b(6@dIx= zD6!ayjS|bo(-DqIRxT9m&MPyUjE~aFy_BSQ**|B_+#^K_7bQ+*`tS9Am@6r-ap-Vs ziUrM&aV8p~1R9OgHeZ4qiz(2)mLIH4U~aYRytwY-(8D8?L=R-CN_voBbZt@8&Qnr; z+^3^do8OQ7edHxN=uvHjgBFS?B&+lh5*7XhV79~y%RPrlicDr+HYqC4V3fByt!j=J zQ$DTi&oP&$ps!Ry6~n$;&vhc!rJ6zm128csxQ2UxBy;`ChGUMxdDT-adZC6!1zoD4 z*BhGtP2hI&)NN`_(!&NdtTORcH7Gi$cWVX+>vWLM5Dre4T0kXOXkmW|7Q=v+by{1B z{;{E6Ch`gqI?Uwf)z_)@1`$f%>NiAwN96ZJR-xLo%t7`$m>^D?3gP@9>(~7~{~G-o mHAV9%aLpFR_H^RZu8u4^=PS3psFT52&Il5~r?^D)q2xWu>tJFWDs6URu!J zpkGl{f@3fJAYXgp7dUk$%Su~{BfreNv1dFpcD16I?PIK)7n%+l{=fhA6uR87ulII=@(t5bQFq}-BoF`KJ&2x34=WQx4%7F_BFR<+Ecp<*? zC)A1vxk&P3ZeKJ~aLmoFYfab%`Djldgkf8T$TWL@z)$`PJ4%*eeAOZLnlbb=>^54P zw3AK;Cvpo7*S%XY)#90kO^*6EA)fj?+#J7oeXyF!dAImSyUd?LijI4h=> xCYD*lSaT<%+hpi?hT2MrSjsepm?d$;VNT04`$HRjygiNghTfee7co2v{sM|H0Hgo_ literal 0 HcmV?d00001 diff --git a/bin/__pycache__/info_handler.cpython-310.pyc b/bin/__pycache__/info_handler.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..83ab4fdf5da01a69a517a00e2218304cb6423760 GIT binary patch literal 1276 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 literal 0 HcmV?d00001 diff --git a/bin/gui/gui.kv b/bin/gui/gui.kv index 640aa97..d4ce3f2 100755 --- a/bin/gui/gui.kv +++ b/bin/gui/gui.kv @@ -99,7 +99,7 @@ RootScreen: TextInput: id: passw multiline: False - input_filter: "string" + on_text_validate: root.returnToFullscreen() Label: id: output text: "" @@ -232,7 +232,7 @@ RootScreen: root.manager.transition.direction = "left" : - on_leave: root.disablefullscreen() + on_pre_enter: root.reset() name: "Showcase" md_bg_color: (0, 0, 0, 1) FloatLayout: @@ -285,8 +285,7 @@ RootScreen: size_hint: 0.05, 0.05 background_color: app.theme_cls.accent_light on_release: - app.root.current = "Main" - root.manager.transition.direction = "right" + root.leave_screen() Label: text: "Designed and developed by Janis Hutz" font_size: 7 diff --git a/data/config.csv b/data/config.csv index cbdad86..4e16fcf 100755 --- a/data/config.csv +++ b/data/config.csv @@ -1 +1 @@ -1,songlist.csv +1,songlist.csv diff --git a/data/settings.ini b/data/settings.ini index 21fa03b..c55cb05 100755 --- a/data/settings.ini +++ b/data/settings.ini @@ -16,9 +16,9 @@ loopPlayback = 1 [Security] # Specifies if a password should be used for exiting the fullscreen mode on the showcase screen -pwdFSExit = False +pwdFSExit = True # Set password here, will not be respected if above is "False" -pwd = +pwd = 1234 [Info] # Software version @@ -26,4 +26,4 @@ version = V1.1 subVersion = [Dev Settings] -verbose = True \ No newline at end of file +verbose = True diff --git a/data/songtemp.csv b/data/songtemp.csv index 147a51a..20a7e01 100755 --- a/data/songtemp.csv +++ b/data/songtemp.csv @@ -1,3 +1,3 @@ -0 -The Day You Went Away.mp3,sha la la.mp3 -221.12362670898438 +0 +The Day You Went Away.mp3,sha la la.mp3 +221.12362670898438 diff --git a/data/temp.csv b/data/temp.csv index 6b71cc6..dd5c1f5 100755 --- a/data/temp.csv +++ b/data/temp.csv @@ -1 +1 @@ -/mnt/DATA/Music/ +/mnt/data/Music/ diff --git a/musicplayer.py b/musicplayer.py index 6e96e8c..14fbe7a 100755 --- a/musicplayer.py +++ b/musicplayer.py @@ -27,6 +27,7 @@ import math import bin.autocomplete +returnOk = False pl = bin.player.Player() pa = bin.filepathanalysis.PathAnalysis() cvr = bin.csv_parsers.CsvRead() @@ -59,13 +60,15 @@ class invalidpathPU(Popup): class LeavePU(Popup): def check_pwd(self): if self.ids.passw.text == config["Security"]["pwd"]: - self.manager.current = "Main" - self.manager.transition.direction = "right" + returnOk = true self.dismiss() else: time.sleep(2) self.ids.output.text = "Password wrong, please try again!" + def returnToFullscreen(self): + Window.fullscreen = True + ########### # SCREENS @@ -278,6 +281,8 @@ class Main(MDScreen): if self.manager.current == "Showcase": if config["Security"]["pwdFSExit"] == "True": self.open_leave_popup() + if returnOk: + Window.fullscreen = False else: self.manager.current = "Main" self.manager.transition.direction = "right" @@ -291,9 +296,22 @@ class Main(MDScreen): class ShowcaseS(MDScreen): + def leave_screen(self): + if config["Security"]["pwdFSExit"] == "True": + self.disablefullscreen() + LeavePU().open() + if returnOk: + self.disablefullscreen() + else: + self.manager.current = "Main" + self.manager.transition.direction = "right" + def disablefullscreen(self): Window.fullscreen = False + def reset(self): + returnOk = False + class RootScreen(ScreenManager): pass diff --git a/showcaseScreen/handlers/__pycache__/server.cpython-310.pyc b/showcaseScreen/handlers/__pycache__/server.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e5f5b669985db4cb68088e00082f7527e7d04e0e GIT binary patch literal 1474 zcmZ`(OOG5i5cZ>AnVB6W5H>;Lu|iy0BHJ7}AQWw~WG~q)nSp~Zt)}hS>7}Q;V|%j9 zXmXmpB5_Bc-3wCw3BSQtF61vDAyL&m3nLQT>T;D`F8ljj<$7nQN1*-k>o@ryoRHtq z*lr#e_u)4WK}aHLNoG{g854}6%}OqK+k3)$L?oBq1(BX&Yc706l`s7Xmw^l~s0bt* zkvMtB@s+g z$u0<-qupJ2(w70)z6^0cckA)o6!}S+EtKx|%PFkBZm1*72k@JZK&;3m0KK9VH3%*F z6@UeuT@eHgLA~Qwzk%m+@Sv`&s_Z?xXw>qCRo~lWYG-B4#g0*xOtmsiT^S|%tvOYh zR9f_Ls?*I&>O7;$$xEUm2>IthGOcGSIm@cTB#o}mRBlbO1tBrh`aB1|M!8n1N~RrG zCNV9S`^~})Qlsqk1|i}KK=kMUzU2p7u{t{Tx7}ak#)qXXHwT~~H^{<@oKZ=?W4c%M zEt3rGpUBT_O)vQs%%&cU_?LkVq4y+TGvsr_-Ex>{Ro0m_c2O49siXT#e{LuDK8qub z`RKeRvs35QjjEidfi%%aUCDG(luG#L*g5}P7Z$p27giaK5L*g6aRcK7vQ8fzjt8I{ z3>?uOWptO_rOUgo)6hBpKLMXYglhsUJwwpEg$GGeP|1G)EA?%F(AWRM6~m{8UwwTz z8mEsB$45^d3h(5}XdH9LCXEX>Y2ZRtJuh@!#bHMQ&rb_6__9!?9NAiDrvO_cZ2dMI zL-e(>b6pt><@`n$m3<=vA%H@k+epE%rNE>31vL6==r7-WBMrFXI1XHtrd2jmY3h1u zI;-WpM17E^&*oX#&9tZ0w;-~Y}%#0B`n_}9SUQ=r;h8vemN+@R|{He8#{0~OQ^}Ko? zw&*ZIo(-Yc^m{N8hoX;5_PaP5-!P33^*bOOt4&Kq>$?@TC9=)p=<|;HFYu{q^Y|um KNN@7ncm4*9Sz@gK literal 0 HcmV?d00001 diff --git a/showcaseScreen/handlers/__pycache__/server_handler.cpython-310.pyc b/showcaseScreen/handlers/__pycache__/server_handler.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aec552c861c1ee73297733663c8a8762e5f84fdf GIT binary patch literal 1273 zcmah|UuzRV5Z~FmTrM$btCZ6AMd@2Wk}n`q@h^g*5U`k+MV`R)8>i)ORVaD2Laom4%>zSCxLppEU~)H^5y z6Oge!xRv+4=S*KDjP*U?2_IKq zR78MlMN~zIYanVEv2L3^sSc%j5$7V4DglfzAEeWKj8pq41naR&=w70*zLwcLMOG(% zzU&+nL)jU`d8#`jRSaZebm!Grr^#LxPo(PTgW@QOwd^HI%Di(>X4D<+07SEWdo;0O z6s37;q9~xubUPoW8%sdjbC)H=63dl+xv3vMcd zU{Dp_H-5|_a6aJ$Ub^)0nW;^l06TFJ3_EtQ{&(^X#y^42NMvuO9l;Tj*PX6v6DyPE z@9&j&?$^{fFVz;eejX2{4bbJiG{{V4q|)5ja5ySmY?$gO&eB6^`EX>bd#XsJ);641 z(grg}55wAuOJ-Ld8Kcs-V$`CcQ=uH$MaHvB7>wFDX zAcS?;gzyXhHQnwl_Dy^7@De4|Ktzk9WCay0GCKz1}Xl5n+#zIJsu h&P + + +

THIS IS A TEST

+ + \ No newline at end of file diff --git a/showcaseScreen/musicplayer_showcase_screen.py b/showcaseScreen/musicplayer_showcase_screen.py new file mode 100644 index 0000000..3d22118 --- /dev/null +++ b/showcaseScreen/musicplayer_showcase_screen.py @@ -0,0 +1,39 @@ +from kivy.core.window import Window +from kivy.uix.screenmanager import ScreenManager +from kivymd.uix.screen import MDScreen +from kivymd.app import MDApp +from kivy.base import Builder +from kivy.uix.popup import Popup +from kivy.clock import Clock +import handlers.server_handler as shand + +server_manager = shand.ServerHandler() + + +class LoginWindow(MDScreen): + def startserver(self): + self.ids.statusbar.text = "Starting server..." + server_manager.start_server() + Clock.schedule_once(self.getStatus, 4) + + def getStatus(self, dump): + print("status update") + if server_manager.get_server_status(): + self.ids.statusbar.text = "Server running on Port 8080" + else: + self.ids.statusbar.text = "There was an error starting the server or it might take longer than expected to start it." + Clock.schedule_once(self.getStatus, 4) + + +class MusicPlayerShowcaseScreen(MDApp): + global screen_manager + screen_manager = ScreenManager() + + def build(self): + self.title = "MusicPlayer Showcase Screen" + self.theme_cls.primary_palette = "Blue" + self.theme_cls.accent_palette = "Gray" + screen_manager.add_widget(Builder.load_file("./ui/mainui.kv")) + return screen_manager + +MusicPlayerShowcaseScreen().run() \ No newline at end of file diff --git a/showcaseScreen/ui/mainui.kv b/showcaseScreen/ui/mainui.kv new file mode 100644 index 0000000..66f2cf8 --- /dev/null +++ b/showcaseScreen/ui/mainui.kv @@ -0,0 +1,17 @@ +LoginWindow: + name: "Login" + md_bg_color: app.theme_cls.accent_color + GridLayout: + cols: 1 + Label: + text: "Welcome to the MusicPlayer Showcase Screen!" + font_size: 27 + color: (0, 0, 0, 1) + Label: + text: "Server is currently not running! Please start it by clicking start server!" + id: statusbar + color: (0, 0, 0, 1) + Button: + text: "Start Server" + on_release: + root.startserver() \ No newline at end of file