From 477f89cc0ba65938edbca93b69ed9afb42c0623d Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 22 Mar 2020 00:19:45 +0100 Subject: [PATCH] Init progress bar on Library panel (close #49) Introduce two new callbacks for this: one when initializing the loading of albums and another one on handling the loading of each album. Use the first one to initialize and the second one to pulse the progress bar on the Library panel. Additionally use the text of the progress as status label instead of a separate label widget. --- data/gtk.glade | 19 ++----- locale/de/LC_MESSAGES/mcg.mo | Bin 4247 -> 4276 bytes locale/de/LC_MESSAGES/mcg.po | 101 +++++++++++++++++++---------------- locale/en/LC_MESSAGES/mcg.mo | Bin 4004 -> 4023 bytes locale/en/LC_MESSAGES/mcg.po | 101 +++++++++++++++++++---------------- mcg/client.py | 7 +++ mcg/widgets.py | 22 ++++++-- 7 files changed, 138 insertions(+), 112 deletions(-) diff --git a/data/gtk.glade b/data/gtk.glade index 3443bee..e31a70c 100644 --- a/data/gtk.glade +++ b/data/gtk.glade @@ -1708,10 +1708,12 @@ - + + 200 True False - {} of {} images loaded + 0.01 + True False @@ -1719,19 +1721,6 @@ 1 - - - 200 - True - False - 0.5 - - - False - True - 2 - - False diff --git a/locale/de/LC_MESSAGES/mcg.mo b/locale/de/LC_MESSAGES/mcg.mo index dbda698640f423c088237be0484a94a430aa7002..db52e43e56b0fdfa3e88d8ab59f299c1be5189b7 100644 GIT binary patch delta 1639 zcmZA0OGs2v9LMqFI6C>2N%z7bYm*2J%`H@%*P}w#uThU{r@PY z8WS@0_77bcPs2rIY;zSgaReK15YurEwa|1%$;1+*${a@Zt3!UK!9F+RGM?K|dpd_& zNEltrZ?18pmES_G^nvv$uHg9<#^DrdfG?;CXHYwwMNRz6wmYd*zc|!HSxA#9LXBUJ zOK~rzF~2#+jRx#Mb?nA$yo_sb7&XB-Y5^0dOua?*n?hycGiITa)vm%ERR1be#_CYx zbffy6#gGOJ+lEWFp&zx<0qYPdLnD}o&rz@DHO6pWCT;sPl`E;AK~3c1&omjgH67JI zn~N4um`MIvv?--RDXGTQco5aG1@o{A^$u^Mc77i8l^%z8bf8|4KBxbs0qKKPX8?G6}dbcOYvseW-~CZ2N8NJ&dAW zMTb;b$t5-sWHMwna--8;K&&N{etqZpgi0BqiM)DPRFnx7Ke3&t(E~+0)+SV{38h+T z-$wjj^!-tka_wHlL-+{2|AmsrO%b7#>R>5_yNN=A4bH!!XjF=K5ge2G*QtywlnvZ$ zA(VC<+EQZYDK0w*rFt{rAc_g4w4C_2=v!9Nx2#e^R1j4}C81LLhridY-0^1lc86mo zqB0M31e#jfn>~Tn#xreQX5q1=Ezlh78tHWot7Q^-_N~s=bZmJ|8vIqg8K!LwT$?C zhSo;p6E(5MT*fo;TxfF%#w6n_+>ML41DCCzF_Gt0OvP{Z^WV6W=S@t*I67ru2I~98 zm~BkNc(~CQ+R%kvNFURKN_-W2F^svmjGE{V+>h~$#;qwt^(#jusIt%Xn9g%EYE5TR z6FHBG5mJ88-#kjQg+`m0$ujft#qx+(vbrMy>n-9>4|Mi=R;aH&7KyW)&Kz4Arj^ zHD0a#ya^+E(ZY>pddhkcRgnOu;0S6fZlG3h7ah*YEb4nJyxfCdQ3ed6|YMqAF3#Yznd4I*!_k zhp5C)QR6>HjT23!{#w~>1y7;7!PWNC+)Mg zRZZKW#{9O=Rx`S6e$%QqG#{a|sDuuo)<~$dD(AnZpPBYmrLQ8i@;X9$s-LnBAwQ7q zcGy~B)qh%@neEoVwUS^vjP7+f)U+jPD!tl4B91spv=F(`)r94k=u%>OY|g}_JKXQ) z8XWQu1V-G0VSitsZ{|xLg$?bEzjULD6@z%M0)lIcdh2wP` z*SStlS70nS^55@yXWXv0alT4#blp`H7xksxip?Y8SU9A-t--;*z;MVt5EvwL$ov6l CZI8qN diff --git a/locale/de/LC_MESSAGES/mcg.po b/locale/de/LC_MESSAGES/mcg.po index f5081ff..2271fa7 100644 --- a/locale/de/LC_MESSAGES/mcg.po +++ b/locale/de/LC_MESSAGES/mcg.po @@ -1,15 +1,15 @@ msgid "" msgstr "" "Project-Id-Version: CoverGrid (mcg)\n" -"POT-Creation-Date: 2019-02-16 23:50+0100\n" -"PO-Revision-Date: 2019-02-16 23:51+0100\n" +"POT-Creation-Date: 2020-03-22 00:15+0100\n" +"PO-Revision-Date: 2020-03-22 00:16+0100\n" "Last-Translator: coderkun \n" "Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" "X-Poedit-Basepath: ../../..\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -42,151 +42,147 @@ msgstr "nach Titel" msgid "sort by year" msgstr "nach Jahr" -#: data/gtk.glade:292 data/gtk.shortcuts.ui:74 +#: data/gtk.glade:293 data/gtk.shortcuts.ui:74 msgid "Connect or disconnect" msgstr "Die Verbindung herstellen oder trennen" -#: data/gtk.glade:314 data/gtk.shortcuts.ui:81 +#: data/gtk.glade:315 data/gtk.shortcuts.ui:81 msgid "Switch between play and pause" msgstr "Zwischen Abspielen und Pause wechseln" -#: data/gtk.glade:334 +#: data/gtk.glade:335 msgid "Adjust the volume" msgstr "Die Lautstärke anpassen" -#: data/gtk.glade:378 +#: data/gtk.glade:379 msgid "Connect to MPD" msgstr "Zu MPD verbinden" -#: data/gtk.glade:420 data/gtk.shortcuts.ui:101 +#: data/gtk.glade:421 data/gtk.shortcuts.ui:101 msgid "Show the cover in fullscreen mode" msgstr "Das Cover im Vollbildmodus anzeigen" -#: data/gtk.glade:469 data/gtk.glade:548 +#: data/gtk.glade:470 data/gtk.glade:549 msgid "Select multiple albums" msgstr "Mehrere Alben auswählen" -#: data/gtk.glade:491 data/gtk.shortcuts.ui:88 +#: data/gtk.glade:492 data/gtk.shortcuts.ui:88 msgid "Clear the playlist" msgstr "Die Wiedergabeliste leeren" -#: data/gtk.glade:525 data/gtk.shortcuts.ui:114 +#: data/gtk.glade:526 data/gtk.shortcuts.ui:114 msgid "Search the library" msgstr "Die Bibliothek durchsuchen" -#: data/gtk.glade:570 +#: data/gtk.glade:571 msgid "Settings and actions" msgstr "Einstellungen und Aktionen" -#: data/gtk.glade:675 +#: data/gtk.glade:676 msgid "Enter hostname or IP address" msgstr "Hostnamen oder IP-Adresse eingeben" -#: data/gtk.glade:687 +#: data/gtk.glade:688 msgid "Enter URL or local path" msgstr "URL oder lokalen Pfad eingeben" -#: data/gtk.glade:700 +#: data/gtk.glade:701 msgid "Enter password or leave blank" msgstr "Passwort eingeben oder leer lassen" -#: data/gtk.glade:728 +#: data/gtk.glade:729 msgid "Host:" msgstr "Host:" -#: data/gtk.glade:740 +#: data/gtk.glade:741 msgid "Port:" msgstr "Port:" -#: data/gtk.glade:752 +#: data/gtk.glade:753 msgid "Password:" msgstr "Passwort:" -#: data/gtk.glade:764 +#: data/gtk.glade:765 msgid "Image Directory:" msgstr "Bildordner:" -#: data/gtk.glade:865 +#: data/gtk.glade:866 msgid "File:" msgstr "Datei:" -#: data/gtk.glade:878 +#: data/gtk.glade:879 msgid "Audio:" msgstr "Audio:" -#: data/gtk.glade:891 +#: data/gtk.glade:892 msgid "Bitrate:" msgstr "Bitrate:" -#: data/gtk.glade:904 +#: data/gtk.glade:905 msgid "Error:" msgstr "Fehler:" -#: data/gtk.glade:916 data/gtk.glade:932 data/gtk.glade:948 data/gtk.glade:964 +#: data/gtk.glade:917 data/gtk.glade:933 data/gtk.glade:949 data/gtk.glade:965 msgid "none" msgstr "nichts" -#: data/gtk.glade:999 +#: data/gtk.glade:1000 msgid "Status" msgstr "Status" -#: data/gtk.glade:1084 +#: data/gtk.glade:1085 msgid "Albums" msgstr "Alben" -#: data/gtk.glade:1096 +#: data/gtk.glade:1097 msgid "Songs" msgstr "Songs" -#: data/gtk.glade:1108 +#: data/gtk.glade:1109 msgid "Artists" msgstr "Künstler" -#: data/gtk.glade:1132 +#: data/gtk.glade:1133 msgid "Seconds" msgstr "Sekunden" -#: data/gtk.glade:1179 +#: data/gtk.glade:1180 msgid "Seconds played" msgstr "Sekunden gespielt" -#: data/gtk.glade:1190 +#: data/gtk.glade:1191 msgid "Seconds running" msgstr "Sekunden laufend" -#: data/gtk.glade:1221 +#: data/gtk.glade:1222 msgid "Statistics" msgstr "Statistiken" -#: data/gtk.glade:1291 +#: data/gtk.glade:1292 msgid "Audio Devices" msgstr "Audiogeräte" -#: data/gtk.glade:1305 +#: data/gtk.glade:1306 msgid "Server" msgstr "Server" -#: data/gtk.glade:1486 data/gtk.menu.ui:30 +#: data/gtk.glade:1487 data/gtk.menu.ui:30 msgid "Cover" msgstr "Cover" -#: data/gtk.glade:1628 data/gtk.menu.ui:36 +#: data/gtk.glade:1629 data/gtk.menu.ui:36 msgid "Playlist" msgstr "Wiedergabeliste" -#: data/gtk.glade:1655 +#: data/gtk.glade:1656 msgid "search library" msgstr "Bibliothek durchsuchen" -#: data/gtk.glade:1713 -msgid "{} of {} images loaded" -msgstr "{} von {} Bildern geladen" - -#: data/gtk.glade:1891 data/gtk.menu.ui:42 +#: data/gtk.glade:1881 data/gtk.menu.ui:42 msgid "Library" msgstr "Bibliothek" -#: data/gtk.glade:1974 +#: data/gtk.glade:1964 msgid "" "CoverGrid is a client for the Music Player Daemon, focusing on albums " "instead of single tracks." @@ -270,22 +266,33 @@ msgstr "Bibliothekspaneel" msgid "{} feat. {}" msgstr "{} mit {}" -#: mcg/widgets.py:1267 mcg/widgets.py:1601 +#: mcg/widgets.py:1281 mcg/widgets.py:1621 msgid "cancel" msgstr "abbrechen" -#: mcg/widgets.py:1284 mcg/widgets.py:1618 +#: mcg/widgets.py:1298 mcg/widgets.py:1638 msgid "play" msgstr "abspielen" -#: mcg/widgets.py:1287 +#: mcg/widgets.py:1301 msgid "remove" msgstr "entfernen" -#: mcg/widgets.py:1604 mcg/widgets.py:1621 +#: mcg/widgets.py:1624 mcg/widgets.py:1641 msgid "queue" msgstr "einreihen" +#: mcg/widgets.py:1873 +msgid "Loading albums" +msgstr "Alben werden geladen" + +#: mcg/widgets.py:1954 +msgid "Loading images" +msgstr "Bilder werden geladen" + +#~ msgid "{} of {} images loaded" +#~ msgstr "{} von {} Bildern geladen" + #~ msgid "Tracklist" #~ msgstr "Titelliste" diff --git a/locale/en/LC_MESSAGES/mcg.mo b/locale/en/LC_MESSAGES/mcg.mo index c4a9f18ee4713ee2d326632a50e5b2286dff41d1..6f34756291428b48b94c094b65d5177108f8717d 100644 GIT binary patch literal 4023 zcmeH}O>7-k6~`}NTIy0tLqnlJxo!AJn!e}f=MvHv+a#%-#v-AQ*g=g1imqp_?WyO@ zJZA3LbxZl`f=Z|e3AGD^U;(?*Mb!lhHqafFXg3uL79=d70*Nk=K&%MA|Garl6qy~U zn_l_MZ_fQV_ndRj+~+^+n|RjH7Lbo3v+p#vGcrSb(oPqn`NvQef;ePm)X1s)x=--BzHqSuq`vZ6p{si6uuR!^E z2Sz>y?}v1mb5QFpK>p0dMqh{TM;}0i^mQmdo`U?D=Xl8PA4B>1^M=2Kx1+xTZ-SSg z*8c@+zc-=c`v=s%|8B-7=+wHKp!T^7GGwNq>^}f+g{R>M;UiG?a;SA%@NW2B_!0O5 zl>Og8?f)87o?eGqcL^#Fe};F#37q{fJOH(R4k}+4pzLfxt@|33y{DS~rmK*j$il%0Pz{Sz3&Wpgvsez!yA z>j2dJBT)4*-;A$7#T`M#kwHwE097B~gsP9rQ1Si?DlhxlRQ}9Bt?NPAKi=r4q3Yuc zQ2DqBHO|R)Q%vEza!4YULQcNZTg1QbVh3TBRymenMKqVM%aB$@kaVbZ8n+D^32apCG+M){Ag7M8#cV% z%F}A#&53li8kFWl5t1@AK&|2=w+ntNiF~8=%*iAaF8H2#F!ipm{nYKGS~OB+bGX}; zXPJ)}8qwy3jgvCEt~ccNY=2=qDakWlw|p^r+P=$tI(mPoNMf6m*4Zdcd=~5)2DRbY zs!XEV6JOW`=LdOqAA=Fy*}Ba$>+0}ql9j=`*yd|iBdNE95^a`kvzP^zo>atCPNlY4TotGxu64C z=A@&Ix;t%LTK1e{TryO%K6D@NszsG$_=uhoq#aagNQNZ5@p;)7I^ty?0<$>MEVeGv zURd17x9hDUl>vul*Qzuvqrwx|Admgk8JpvjmAffh&ar2f3CJu5ye~r%q4QdS?IaM# zst?;Trb4Z^9=fW;>}ZsFR8ciWi%XP(YVi7DIk(qHb7*^xjWga1t|TG#CURMXeR*TP zTKUSGf)d{HrW~bxobr;O>?$6QzS6N8Y9nK9hc)JjC+(Vdp>3ad()5e`QI4Rs6t}+Q zi;{SH#D??r=X7uotsk1~KioRUSFXX&P=P@wVh6H`pDtVbf+_U#+9M9 zQn;*49hKX&5yw$%R+*j6(=<6=Rz<~tPuq{}JU-9#Y`vl=TPxlTdUjXuS)WawT{^pX z)uZWlXOfHuKI_)X&JYiRe=JOqlO#K4qYYP-KFpn8In_FPb)Fnq^F?bh!w>4HXOFHX zVe*mI=yR(*?B_mCg6+0v=pQMqldkmoynD9Yo~r*Q`)S4Z**cXMgR*C{VXc;P-D4Dq zM&=G?_U<`5edyR#Go!DfkD*qlXJZ%K)Oy%#uct2dd(N7^X4b%GRl7>|oY%c(-fm_8 zx5+a-%Nb6Zw=eke?F&Bszg_Te`OR(*h7ErFM?YwXxZ%h5JU_f#LT}Y=UtgvF`@5cN SzWHa2x6#i8FBh)A-2VgN?ax2} delta 1629 zcmZ|POGuPa7{>AArPR^sGMQFZj+XakoEh(O)f+V zsf}O}XbVHKg#_iQMPLgJB5IL@Q9(f)aZ~@tPP;nze!uT_F7NxD@oDD$%;*PK{B1*P zAhr^vvBsRjBk>$)6RV6##>coGpW$kpwZ6dwuHT~*KiT^~F_G(KT!V3Ra-j?LehzLl zCTcvK=!FJ!U=z~Ew4x?HgKZeWbeu&kbP=~k3@QbuB8Vqo{>6 zV*>M=4oE|9F*8sT#L(?h7JbN zcv+ar{3f51EUd*0Y(q`Zhgv{CsxmiF9S2dF594;6!p%63>i->8p=7eqIQgi4UetJH z_I?nfdQiuSR(imC0#%VPreHVfQ(Q-7a0^}RlTmwriig@8GpOu ztkL{Rrv92Zky%u_bX12zWOJAR>iI!b1zJ!Uokqqm=TLj22emimP?>*2RVayBwV*sy zKQC(hQhQzFr2g6*_1sWtno$cmXJJWU5dGYMf{#C+fHxmC=6t;IO^li1alrsLVT1nO;I=as~A%`cVlCU<_^|)OHg) z3BJh6!nR;3Q9Lp`05F3-MDPdMlf`21BKU%=xpcLz#> sWq~4}-{*5Q9`iJXdpo=T|K5<>F%uW?`X?70W3iLt&Xm~ne@|\n" "Language-Team: \n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" "X-Poedit-Basepath: ../../..\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SearchPath-0: data/gtk.glade\n" @@ -41,151 +41,147 @@ msgstr "by Title" msgid "sort by year" msgstr "by Year" -#: data/gtk.glade:292 data/gtk.shortcuts.ui:74 +#: data/gtk.glade:293 data/gtk.shortcuts.ui:74 msgid "Connect or disconnect" msgstr "Connect or disconnect" -#: data/gtk.glade:314 data/gtk.shortcuts.ui:81 +#: data/gtk.glade:315 data/gtk.shortcuts.ui:81 msgid "Switch between play and pause" msgstr "Switch between play and pause" -#: data/gtk.glade:334 +#: data/gtk.glade:335 msgid "Adjust the volume" msgstr "Adjust the volume" -#: data/gtk.glade:378 +#: data/gtk.glade:379 msgid "Connect to MPD" msgstr "Connect to MPD" -#: data/gtk.glade:420 data/gtk.shortcuts.ui:101 +#: data/gtk.glade:421 data/gtk.shortcuts.ui:101 msgid "Show the cover in fullscreen mode" msgstr "Show the cover in fullscreen mode" -#: data/gtk.glade:469 data/gtk.glade:548 +#: data/gtk.glade:470 data/gtk.glade:549 msgid "Select multiple albums" msgstr "Select multiple albums" -#: data/gtk.glade:491 data/gtk.shortcuts.ui:88 +#: data/gtk.glade:492 data/gtk.shortcuts.ui:88 msgid "Clear the playlist" msgstr "Clear the playlist" -#: data/gtk.glade:525 data/gtk.shortcuts.ui:114 +#: data/gtk.glade:526 data/gtk.shortcuts.ui:114 msgid "Search the library" msgstr "Search the library" -#: data/gtk.glade:570 +#: data/gtk.glade:571 msgid "Settings and actions" msgstr "Settings and actions" -#: data/gtk.glade:675 +#: data/gtk.glade:676 msgid "Enter hostname or IP address" msgstr "Enter hostname or IP address" -#: data/gtk.glade:687 +#: data/gtk.glade:688 msgid "Enter URL or local path" msgstr "Enter URL or local path" -#: data/gtk.glade:700 +#: data/gtk.glade:701 msgid "Enter password or leave blank" msgstr "Enter password or leave blank" -#: data/gtk.glade:728 +#: data/gtk.glade:729 msgid "Host:" msgstr "Host:" -#: data/gtk.glade:740 +#: data/gtk.glade:741 msgid "Port:" msgstr "Port:" -#: data/gtk.glade:752 +#: data/gtk.glade:753 msgid "Password:" msgstr "Password:" -#: data/gtk.glade:764 +#: data/gtk.glade:765 msgid "Image Directory:" msgstr "Image Directory:" -#: data/gtk.glade:865 +#: data/gtk.glade:866 msgid "File:" msgstr "File:" -#: data/gtk.glade:878 +#: data/gtk.glade:879 msgid "Audio:" msgstr "Audio:" -#: data/gtk.glade:891 +#: data/gtk.glade:892 msgid "Bitrate:" msgstr "Bitrate:" -#: data/gtk.glade:904 +#: data/gtk.glade:905 msgid "Error:" msgstr "Error:" -#: data/gtk.glade:916 data/gtk.glade:932 data/gtk.glade:948 data/gtk.glade:964 +#: data/gtk.glade:917 data/gtk.glade:933 data/gtk.glade:949 data/gtk.glade:965 msgid "none" msgstr "none" -#: data/gtk.glade:999 +#: data/gtk.glade:1000 msgid "Status" msgstr "Status" -#: data/gtk.glade:1084 +#: data/gtk.glade:1085 msgid "Albums" msgstr "Albums" -#: data/gtk.glade:1096 +#: data/gtk.glade:1097 msgid "Songs" msgstr "Songs" -#: data/gtk.glade:1108 +#: data/gtk.glade:1109 msgid "Artists" msgstr "Artists" -#: data/gtk.glade:1132 +#: data/gtk.glade:1133 msgid "Seconds" msgstr "Seconds" -#: data/gtk.glade:1179 +#: data/gtk.glade:1180 msgid "Seconds played" msgstr "Seconds" -#: data/gtk.glade:1190 +#: data/gtk.glade:1191 msgid "Seconds running" msgstr "Seconds running" -#: data/gtk.glade:1221 +#: data/gtk.glade:1222 msgid "Statistics" msgstr "Statistics" -#: data/gtk.glade:1291 +#: data/gtk.glade:1292 msgid "Audio Devices" msgstr "Audio Devices" -#: data/gtk.glade:1305 +#: data/gtk.glade:1306 msgid "Server" msgstr "Server" -#: data/gtk.glade:1486 data/gtk.menu.ui:30 +#: data/gtk.glade:1487 data/gtk.menu.ui:30 msgid "Cover" msgstr "Cover" -#: data/gtk.glade:1628 data/gtk.menu.ui:36 +#: data/gtk.glade:1629 data/gtk.menu.ui:36 msgid "Playlist" msgstr "Playlist" -#: data/gtk.glade:1655 +#: data/gtk.glade:1656 msgid "search library" msgstr "search library" -#: data/gtk.glade:1713 -msgid "{} of {} images loaded" -msgstr "{} of {} images loaded" - -#: data/gtk.glade:1891 data/gtk.menu.ui:42 +#: data/gtk.glade:1881 data/gtk.menu.ui:42 msgid "Library" msgstr "Library" -#: data/gtk.glade:1974 +#: data/gtk.glade:1964 msgid "" "CoverGrid is a client for the Music Player Daemon, focusing on albums " "instead of single tracks." @@ -269,22 +265,33 @@ msgstr "Library Panel" msgid "{} feat. {}" msgstr "{} feat. {}" -#: mcg/widgets.py:1267 mcg/widgets.py:1601 +#: mcg/widgets.py:1281 mcg/widgets.py:1621 msgid "cancel" msgstr "cancel" -#: mcg/widgets.py:1284 mcg/widgets.py:1618 +#: mcg/widgets.py:1298 mcg/widgets.py:1638 msgid "play" msgstr "play" -#: mcg/widgets.py:1287 +#: mcg/widgets.py:1301 msgid "remove" msgstr "remove" -#: mcg/widgets.py:1604 mcg/widgets.py:1621 +#: mcg/widgets.py:1624 mcg/widgets.py:1641 msgid "queue" msgstr "queue" +#: mcg/widgets.py:1873 +msgid "Loading albums" +msgstr "Loading albums" + +#: mcg/widgets.py:1954 +msgid "Loading images" +msgstr "Loading images" + +#~ msgid "{} of {} images loaded" +#~ msgstr "{} of {} images loaded" + #~ msgid "Tracklist" #~ msgstr "Tracklist" diff --git a/mcg/client.py b/mcg/client.py index 9e60207..b191511 100644 --- a/mcg/client.py +++ b/mcg/client.py @@ -110,6 +110,10 @@ class Client(Base): SIGNAL_STATUS = 'status' # Signal: stats SIGNAL_STATS = 'stats' + # Signal: init loading of albums + SIGNAL_INIT_ALBUMS = 'init-albums' + # Signal: pulse loading of albums + SIGNAL_PULSE_ALBUMS = 'pulse-albums' # Signal: load albums SIGNAL_LOAD_ALBUMS = 'load-albums' # Signal: load playlist @@ -498,9 +502,12 @@ class Client(Base): def _load_albums(self): """Action: Perform the real update.""" + self._callback(Client.SIGNAL_INIT_ALBUMS) self._albums = {} # Albums for album in self._parse_list(self._call('list album'), ['album']): + self._callback(Client.SIGNAL_PULSE_ALBUMS) + # Album album = self._extract_album(album) self._logger.debug("album: %r", album) diff --git a/mcg/widgets.py b/mcg/widgets.py index abf1b34..f964a5d 100644 --- a/mcg/widgets.py +++ b/mcg/widgets.py @@ -179,6 +179,8 @@ class Window(): self._mcg.connect_signal(client.Client.SIGNAL_STATS, self.on_mcg_stats) self._mcg.connect_signal(client.Client.SIGNAL_LOAD_OUTPUT_DEVICES, self.on_mcg_load_output_devices) self._mcg.connect_signal(client.Client.SIGNAL_LOAD_PLAYLIST, self.on_mcg_load_playlist) + self._mcg.connect_signal(client.Client.SIGNAL_PULSE_ALBUMS, self.on_mcg_pulse_albums) + self._mcg.connect_signal(client.Client.SIGNAL_INIT_ALBUMS, self.on_mcg_init_albums) self._mcg.connect_signal(client.Client.SIGNAL_LOAD_ALBUMS, self.on_mcg_load_albums) self._mcg.connect_signal(client.Client.SIGNAL_CUSTOM, self.on_mcg_custom) self._mcg.connect_signal(client.Client.SIGNAL_ERROR, self.on_mcg_error) @@ -430,6 +432,14 @@ class Window(): self._panels[self._PANEL_INDEX_PLAYLIST].set_playlist(self._connection_panel.get_host(), playlist) + def on_mcg_init_albums(self): + GObject.idle_add(self._panels[self._PANEL_INDEX_LIBRARY].init_albums) + + + def on_mcg_pulse_albums(self): + GObject.idle_add(self._panels[self._PANEL_INDEX_LIBRARY].load_albums) + + def on_mcg_load_albums(self, albums): self._panels[self._PANEL_INDEX_LIBRARY].set_albums(self._connection_panel.get_host(), albums) @@ -1578,8 +1588,6 @@ class LibraryPanel(GObject.GObject): self._progress_box = builder.get_object('library-progress-box') self._pgross_image = builder.get_object('library-progress-image') self._pgross_image.set_from_pixbuf(self._get_default_image()) - self._progress_label = builder.get_object('library-progress-label') - self._loading_text = self._progress_label.get_label() self._progress_bar = builder.get_object('library-progress') self._scroll = builder.get_object('library-scroll') # Toolbar menu @@ -1859,6 +1867,14 @@ class LibraryPanel(GObject.GObject): return (self._sort_type != Gtk.SortType.ASCENDING) + def init_albums(self): + self._progress_bar.set_text(gettext.gettext("Loading albums")) + + + def load_albums(self): + self._progress_bar.pulse() + + def set_albums(self, host, albums): self._host = host self._library_stop.set() @@ -1933,7 +1949,7 @@ class LibraryPanel(GObject.GObject): i += 1 GObject.idle_add(self._progress_bar.set_fraction, i/n) - GObject.idle_add(self._progress_label.set_markup, self._loading_text.format(i, n)) + GObject.idle_add(self._progress_bar.set_text, gettext.gettext("Loading images")) if self._library_stop.is_set(): self._library_lock.release() return