From 6883f9ef6da9263db3295f9c92e3a1c8a3903d55 Mon Sep 17 00:00:00 2001 From: Travis Abendshien Date: Thu, 25 Jul 2024 16:00:33 -0700 Subject: [PATCH] feat(ui): add media types and icon resources --- .../images/file_icons/adobe_illustrator.png | Bin 0 -> 10553 bytes .../qt/images/file_icons/adobe_photoshop.png | Bin 0 -> 12552 bytes .../qt/images/file_icons/affinity_photo.png | Bin 0 -> 11147 bytes .../qt/images/file_icons/document.png | Bin 0 -> 8832 bytes .../{generic.png => file_generic.png} | Bin .../resources/qt/images/file_icons/font.png | Bin 0 -> 9027 bytes .../resources/qt/images/file_icons/image.png | Bin 0 -> 8998 bytes .../qt/images/file_icons/material.png | Bin 0 -> 16977 bytes .../resources/qt/images/file_icons/model.png | Bin 0 -> 13247 bytes .../resources/qt/images/file_icons/text.png | Bin 0 -> 7126 bytes .../resources/qt/images/file_icons/video.png | Bin 0 -> 8448 bytes tagstudio/src/core/media_types.py | 46 +++++++++++++----- tagstudio/src/qt/resources.json | 42 +++++++++++++++- tagstudio/src/qt/widgets/item_thumb.py | 5 +- tagstudio/src/qt/widgets/thumb_renderer.py | 33 +++++++++++-- 15 files changed, 107 insertions(+), 19 deletions(-) create mode 100644 tagstudio/resources/qt/images/file_icons/adobe_illustrator.png create mode 100644 tagstudio/resources/qt/images/file_icons/adobe_photoshop.png create mode 100644 tagstudio/resources/qt/images/file_icons/affinity_photo.png create mode 100644 tagstudio/resources/qt/images/file_icons/document.png rename tagstudio/resources/qt/images/file_icons/{generic.png => file_generic.png} (100%) create mode 100644 tagstudio/resources/qt/images/file_icons/font.png create mode 100644 tagstudio/resources/qt/images/file_icons/image.png create mode 100644 tagstudio/resources/qt/images/file_icons/material.png create mode 100644 tagstudio/resources/qt/images/file_icons/model.png create mode 100644 tagstudio/resources/qt/images/file_icons/text.png create mode 100644 tagstudio/resources/qt/images/file_icons/video.png diff --git a/tagstudio/resources/qt/images/file_icons/adobe_illustrator.png b/tagstudio/resources/qt/images/file_icons/adobe_illustrator.png new file mode 100644 index 0000000000000000000000000000000000000000..141ae6203951666eecbc4b120b03a5fea50ba389 GIT binary patch literal 10553 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 literal 0 HcmV?d00001 diff --git a/tagstudio/resources/qt/images/file_icons/affinity_photo.png b/tagstudio/resources/qt/images/file_icons/affinity_photo.png new file mode 100644 index 0000000000000000000000000000000000000000..f4305fb8c67c14e876d11bdd57ccf1eb28481cda GIT binary patch literal 11147 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 D#e&zb literal 0 HcmV?d00001 diff --git a/tagstudio/resources/qt/images/file_icons/generic.png b/tagstudio/resources/qt/images/file_icons/file_generic.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/generic.png rename to tagstudio/resources/qt/images/file_icons/file_generic.png diff --git a/tagstudio/resources/qt/images/file_icons/font.png b/tagstudio/resources/qt/images/file_icons/font.png new file mode 100644 index 0000000000000000000000000000000000000000..174750dbb2533b94b7d3e0802937ad60f3e529b5 GIT binary patch literal 9027 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 D6%`Z0 literal 0 HcmV?d00001 diff --git a/tagstudio/resources/qt/images/file_icons/image.png b/tagstudio/resources/qt/images/file_icons/image.png new file mode 100644 index 0000000000000000000000000000000000000000..94264aec02eec677d074ad7d623eb54b15429c98 GIT binary patch literal 8998 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 literal 0 HcmV?d00001 diff --git a/tagstudio/resources/qt/images/file_icons/material.png b/tagstudio/resources/qt/images/file_icons/material.png new file mode 100644 index 0000000000000000000000000000000000000000..0c0c10afd37a0f970cddb20a02cc4b9530788d94 GIT binary patch literal 16977 zcmb8W2UJsAw=lYs5F)+zUIe8hy@OH`5s==S2pFUU2pu7jqx2S3lzt$hfCx$#geVAD z04WNBKm?VdG-;8RxAAz44DB!|c80oNM+q_grhGUbHl0qUWav0DuXFG`0Z% zDEJc!oS+5&+ln6B0|2-O+Rh24ha@Lrs;htBm%1^E)I^1{)_l!pZ}zdi3kh)L;13gqHmyYkZ&+HTv1s; zS@FNa`$nVxi<{u^f2j*poZ|5a2(I*R;8?WZ{{j4XL|HsHNcYzVd?qDB`2IcvOg+EA6|23v3u5m{3zfI)) zzYhJUEwumeXAyE4WKZP}d;c|rI(P13Sco4w5F87)F*_@YGC8NNtfj6le@5Y-89>8n zgScqF7-MfN2z5s3jHi>=rb;TE?_J7u@;(r(AKUmXM{2$E!Bl&+zC?MWH@4!R_W<16JOnKnLet&~|JGshEUeR1&7Zdlp^Xd0ai%$2d z+(d=5n!oCvSia(7F6QDrPbWJ;MNP~+k>g|~|K!%s=v&WrLbC_bTJ&oi4#TM~=Hlpw zUg7lF)de1`C9EYbvRAm*PDDMt=X92GVWQ?O{KlG`p2s(y^ilhxr%u_XXT3sr97eh{ zkJ3M6lyKb1pMUL}zC3j8QGTP;W_Sa8Tu-}l3aeDgOG%%{9F_akZ2w+tbl{H=5y? zS;I}6CVzwdB3(nQd*?F$&d%RfgY9>^AdWx%XLYWe4g}XWItyl%r`n8s-oYWxByPb%x;V^}=#&`0R)yABLLBXO|4T*6Cm~QZS?2#rv-L2a^E*zy^trVkwzZ& z5S#0PoHR9|3E_z#yPxOxZqyA<)4I{QsU7T|C)55^%c1vyh;9c9*Xv}5{EWIZ&=A3O z6^@b5R-{)ztY%#}Uo8vHqLM_)BF%I^VW|(gV#*)Nfth*ODvS_2Z~GL;>D6GE$WzNa zY(Nfe-0s@PZ93bsy3xq73?Sd+z;U%3qwF6aYj z7hE{Y!mRox99Iw=N4`O%P4pD}yY96feUXI>Z33zw_LLd{9J}I5_9eZ=KcHDCk8Ou) zLMURGaEyY@-*Uhhr)xvyaH0!FA)wOS$(Hdme^L6F1_SWn6F2E^qA8W{McYGn1xYTb z0W_Fp&}2Ckj$8JVAS;o%h+2C#jp6t;mgG2Iqz#@HcY_p#+H6T?l<0P%jYmYQAGO*r zMd!)*hvOY#b%@9lAa?H>-UlC&*KB-8(!!fHT6pRAGW}fQ2R>7SC)crx2H877zaPE( z1S@mXWs82g;f}DEb!Jb@_v)kVa{ToYmj%xx_nsK#93ako?}; z2_^A)yAl5vGft>Xby)OCbVSplqDOcCX$3?UN$8ZlSdFE<_c?MVX$m)x6rLLviCEVn z^OEsow=oPiAT#=%q=VA{ejpaaKfF#Nij!4H#V^{BHht>wEUA@t;pwIT-iWMkB!7Gi z65fC?G@0a$)>t1RX@fu(zfP>1kWYD`Kqa1F0Jyx>t7@n#q}b!39Z_@!h_s&+Zav@( zJQVqnN4xVp&yEIJ-FryffRsve!EMGtGo(l0TL{ngHJArY0vb+|9^e!qEFdpcFKAJl zlr_-=%q?%;t8>gF{-cMqW6E*BSk-gnbY>z)aSD;{kXe(xRY{xe+fabD?I)-vb1NW_ zcsgoG^qNCgdU`OLezct9VzVD)4Q2_Ha2KT$SAWuWq;3f%vaLG>YQM?N22?)+>t{wt z<+aztbH}<|QLxBFV}3j;n)AnSwZHH1Z-BbtSafUWIZS#s$&D3uy`oBvu7A zpS-ryWx1ztk>L~Uy*`X2M$9x(XBsrI>1am^L?7}Z=$g~uhV6kyE@!sZ$~kgx6_@7T zp>%?T?7NL{D@w=$j(B!-LcL^WlLR`4d`P-KA@DwW2T+~;PHMr!Kny#92e7){8JuZ2 zt5?HwnpSp!MAWnvZfkmDZqe9Im;vYK!lHRc^`XBdMuD)5W?ttY^NvKN@%Nem1DjZK zG#NFViVVmQz<1-)D>$q}1!*P(M{&D^$kjptP=$VhavhT#uY2Rob3ZFuU#b52OgZX_wgJ7UYr97CC1ZS^c=+xG4{P9yGb^^yw9sZVRX^o5yJ=-dGPWbe&~S|0Nw zeIgD$PI`OwCA3V~4>Btr^i@Sq{q{>HhygSba>VAO`kfjA5&h7OCBG$Upk|#3dyPPA z#@I!5`2@&M{Z~H{J!oV2Zw|Y=o!?s}j8(w!`zcf<9-*$kHy3VL^^1CTD?Q6TNnBGx zxyLdrwMB0wxAtqYOw=V`4Yi_e6Sz5i?UDGkeAF^YbR9is&}!0qlJw%5Tb|09Xr`Oq zTf$~v?y8_|e&j^1rytdGbB#k4?^CT`l)fc5@!lNvEJ{g&HC!^elO03!e5ROcNd(^F zcVSlE7Dl5i{!rxhuFXi)=Z;0=TTZ}NZ!_{)GT(42Cz;X9k=%t$-{X7%H4M1<9NA8{ z%37Qv2ZYtLYL@O<-D}HkbYFy!EZ`#h{CjIAIk%F7kS2z}_()>N?ED}YQ3=UvhXUs*IR7=)I&{QwLQNBY{i!frG_A@Q=B*~4zE$be)Xh=Ihl zU|jevG%HxR9c>wW7pPzPeQ`* z_N;M0T9f*^?eaK26F}~PzpNhA$Pdp9s=-&37=Ts=XJ*aIXXP&KQN_2_7ffBA()u$$8A2?5yQ{bb&^|PG66w zWA~M?0}k}*nMGagOzq4UHkm67y5|p=W>N8YKYfXPmbtoGZ&fW}Xe6zEzL7$4PX*E0 z!Ui1)tV$gDtx4)%98v3kVV>I6d2@KHmHsaLfMMN<_V)#@-Q3QK`!5Gz!BR(3r7{kX z5SbKeQo#X2p2QIXG~!yudnEIgN9m7z6e8gv`nQ!H&$#X@ zwt{c@1%L&=oKd?CKccW8@uMk2gZ-ipUSHx`YIj?n zfc`37jnZH7UMMfTZuh_lxZ4e(J3KB<^#d4N>gAFUI;z!Sw zGMZoA)=ju|$Visv`>N*bmZkzzy#XOl^~^rXGvUbJS@{r>l4!tKk*OT33y@q$yJz~Z zKBaIExbfM;UtfDao4-LT{6qmGwXv4!-KfU=ZG#rYfG}B5bJjd{aXwb6{yIefTdpZA zKxNy9wXjl4cufoEvq?8~!3=SqF|6>ELr&+9`(4pc3}QoL!8nvYav%1HB_8f%aS(Tj z*K|)e>-K)dm=4aO@3pJEYH=eqV#`9y+6@Og0!qwWHbwUil^A_29{C-3j$MUF`{v9V zhe{niWXGs(Xv`ajGOd&>BhW8$eNqw?8M}E69$z}>#RieL7=IO>($}#Z49Go~+C?Xw z=89euH;^b{IlxnPUn*t1p1+n6qDPM6`>J7`A=Lly&IG*^=!2RbpU>&!?+PgkjPGe= zXupymsb_>Rqd$x+3ihSnCo*M?iI4X0wo#KBLwrhyOPD^J9_)MZnnrDOT?kb9RooUX zRb_F}yd#@Z7~BzkD>7(FXA)RXAS=(!BD$4g)4T6YsFRBMzG`}OL=ieZh*}{W*b}=m zGwmC9W5(Rb<2_vnaNXdEf(R%-aYtU=G+WS8cNkeM8Fz4EX~k0tgF2#ZQ|om6_X)fF zj5ocpJU;n!!dJy&6rM%G&^N5r>>iK4)_3}zJ~$@26fyNJgm)nA1M!J&UQ7^eOcsx4 zp?JuLG4qtJw%&BbTffUy)L1k#DOW>yO|?Sh(fOp;@!Cnced#<_xh(;H;lJWnxAZ1k zI;lrrby)kAGUhH-mkbz@7x=zvso%-*lYa=IeH}hEv5B6wxwR(E6q(VvbJP2l$XmR$ za@#geR;528u*ft($1XfX{K$`AAPVMsJY|DAMsQ<%S}7x7{&Hor8hXbN``Bl`RJ-4u zZ%UA&vY|1u=wvcEQ7Qi&vcLugQFltJzjBj*ZY*PYxR4MFIqYYX8gP(7DZCOG|L`48 z@jZ78!l3&~T#=D~R=?=@lTh{*fd?N>Xa#SD)33DMW0vZg;ptYoG^d6AKF{}6Tb+4H zDa!W}^KU)dXIvAlAc0(o(1fnzQdC!41)1P_f|~l;QNzx!)AGPVMOzqNV!bRo*zH1c zOzoPv>HU=lF?vrrhktr8-mK5AMnHxG!J62Rk(qdUn`^;a;#W~Hn%7h~l&;tSs)swM zWQ^M5J!kY05-fgX$|q!S>KKTDtUXuPgA;01WenM&F`l$C#sFh!xr6I05o*rwQQDScR4iz<)Gn>GO04omL#* z`rx9Z>2H~J&tcT9D`M+cy&|#VgaCh^k;cWh+6S|W;sZ*PEsYt^8q_dM=)P{3t7o}X z7+QrVWVCa=d0_iFl}BpBMx^Xer3~WCG<_h;qs8?^gQrzfNB4clie2%=IA5?lsGw^X zdY&H7PrXmHuPB(Lh@5rt_|)rZW6(_NG5(60ptc?`vRtk;QP2@v?1~O2d(V~9W%gWs zbFJ-fkEEJ?zMIx=pPAngb?Syh*K(up7KCuy?J5JFv?bidJ@qQM7BgvULJL4WrxKeX z`OO~7!|Hj~+ZQEct;apFNu-5}Jl=2Jstp?kG@7(v$^C7DJ=!~; z`dytYbn@#+&5-SEbK@Nk)WK$HZflXM$$d1lIFnySCukQ{odk;z%h#g2xtisDeVhOr&kVB!RJX1`{!w_&NLwLpgrcPSaSXZ#k{%~Sg#a5nqK+3dCE)0X39=B;s?a3v{7cPcQ_SD z6s^5My@(ZuPr@}B?jC90}tW$*?5af>_Z4F{(#ENTqWo zwV8xIradD_{-$>{r9tS6+UO;9nMx1aHK1fyOjve!p`D(;uGUU+6H9I{{s`bTjjJfF z!mhm*rHa`I*ca;AERVs~nSZs`@8-se7hFjmp=;<62JAb0u7t34`q;H4JuXTNzHKYu+K5zy45{+#lP^POemNyRJ7vb6Xu;I2)N5+c z^%Y#iYbrduyNS)RS0ff7(Teq!Say=xmBFws1gtdG@+_fuypA&PcE z`R~thz>HD+Jj=RK!7ybAmVnRfB6e(R^RkXe;G(#1BSriOL+5YIziC5wsiVgqY+v7O z<($ada(giNQObU7D9zHCP`S>##1n7ORbmAzalN3e7njpG{{{9UCPQ{X7^lHHOF6f< z?YRrqjX#dIc!sXY0=TqYB=n?;Y%FZ8j046sQQNmHw?fLo%(Enwes)%Q($Xguk;xK?Z5cZzr9F2eI5~7@k zv~9^IH?M?-{UA&*wTf#di+N=;{#xwoB%1MppZd8({pYk4htj^g44=;)ynE`7uSp80 zq<@YD!kkpU7%xwQ>h8=2)$JD@3h8S_P~stdOODJ8oQEcsdVm#8@X5$$Ju)LUZR3dV z@3SEzSx$)pAe&s5wd(26NyQ28q*l1z{|HVpaYDI}7qjtN2gi7IClelj4IOLQNLHPl z1@l$jI~ry=vgR&Fm-Tz>h(xB`*AbW!auOY4V6N>8ol;MMLZ8D_L0Yd@I-1O#VutK>LrG8z%Wm{Sn$hfK0DQ#W@qi7RlONQ zqB=zDqtbRzbd-A}?b9#BVmSstWdsY^N z0N<2Gt@k6>vv%o6IG0boMb(gJL_&Y{L&>$oCElRMf=1<66MZK%l(&8UIz$N^8t={^ zZT?Ea+k(=#kOoK&aG^S$5O}9x=v=?)S3$2*(&oYbEh{X(Ta>!!MIm7@rp z-zrGS^tv-TxFOEyj^N^R{0tY{9zwks$jxQpk4mf5(i@Z zxT4<$GeTV1>$xq)&Kf4u7Pmb9o_oisc`f|97^S1JtpGtR^pIO`G=$*?B{O7f%G!ND*##=r(9=nKg83x>fW3&Rwrs4Jz zQC89#{;j!Y@B^8vvNbZm$5+0ACsD6td<20W1*Q%#Lvu-2R|69wcddupBvC6D9U$v@ zgsiF5CRC8$Qnd`gT)n7EAnr_55a&G@+&o8~=vbo)olPK0I5#7I?M)!$I#5pMH!k|SHeS}KzE$I;Ab&16Zj>sC z@;x1Xc+l^G8<`q>%7AkwC7dihM;P<)AbO+yH_2tN~awa)y&cj~@bVxdU#< zSWZ^&kn;gGZ)Jc;8g-ea34&y%LnNf0U98y3N^s`c$Z|Aj4u!Hp412Y z2PyoqYFGVik9-znadGDQeZ~Q{z&lv8?3Y%8q{Zd8glq$vgJzJ-R}`_i>7p+u(4LRE zfFejWc)%A@WB{PVW()H66c8!<DK-{oXqXp*Zaka>OVa{^!{Q@-mB+5pk`X{9I z;mh#MCUa|q%v0duB^^_cZ(CmoMz6m5qMoNLLQ)FoosfmDb`YhOvUwz7EImaSrvn?LgEzIAZ~+4U%*Qqi!$gs^{w`B* zNr8H?-nAu#f->40vlw26ypP&0 z7aW&<3Wz^a1Xl~g_c3d9+99(+b$`5Ll}S4!2m#$YVMrLGF~2@2U=L8h-;zHeiv@b1 zgG<#T%FK6;4NVfp9e2bC1)|kJtL$Qj^A_+y889oJf(AJbe`2vF0nM;H=_N-eY{Q=rxe*X5XX zTfm7W;m(}Vs}G^1V^#i;XV#4xlK_rwS?kYY$nq1CBl%%^jufs#3nBwG;GTh%95@)U zW9DT-{_Q#q6GhqF>R+G&=UyzVIkUkHFMm6U3TRn`iUtU}&FZlnN1yiowe{Z>!b!W+ zJKWZQu^u%?a_J3ubLtou2fF$(J2E@|mmUDuj~TLGtzM-0!|WTAC~DH5R|?7h0=v`w z4|mn?Sz|bXW7+Kfc11M+4YvTYAl#lBnrcIc>bR0HU~M&HV&ukvp6iMik*$ zs0S9>txl)C_WV$o1T`esnSs@cwH^R!$%GTQ<|qcbr?(acjb-mX7Q9NFCwGXk@jrA^ zBv4E`Wt|Ni4>egT3{n67ruQeiR5L;r%%qjml7N$_YElGgWKr^FEj*AHyDBFP`ONZ2 zfvgE8jFS&mscl9J?o7Jx*Ni~(Ily+gFrcGXhFM~v6@fz7nUkFB-R&t*KoB8{l9^>) z{{ep7IIT6$$X6vq7n zYyuZDBM?)I*o#TLn@NMNf4slG_1J$^OYW0y45KpGKEUc*Q<5e?D^w?q;_Sg!XHEoi zVT1n|Ki74a>PN~b3s+Q_69t2$<;x||0m2x+03@~=WKi%d7`+bA79Ok|ieTCfrPyNG zecrKXudR@LOavc3{Fe}Yb>$qqeOX2e@{ekpfE>wht7gM=89ps#n|{uKoWgPNLk>!| zPKau>(-udCS|gruBh%t1(2LVh*y4DIL~D7agq(Yb#<2-KO%=aaqPFI0?;L3xuag+}7k#(Dts~`Ox(ni9)ZV$S9=v_)82||U zIST;cx5h#MecBw!?bTqi|1j!;m(=^cwucyaqJ^$(!4-%45ovQ4FxQ~OsFk0+6+rO5(e=!d|NucgQR zKuy8S397f}k*?F<0{~5>#m~FeBb7*BE}-TKk0C*|=>sXzL|XaA1L!6=q3{wv*W*V} z;5ZrB?u*4(9l|tEt$+U4(tYY2sSo^4B5lHk++AF?FMh=1ok=j#7WCw zECAUBMxlexp%bi59=$K#{)9Nuy4lQu6~^{X=`bCZ9MhwElr#C>hClIC3jk=ge4RHZ zEH9~&%NHfJ--9{lVgdwX3U2F2ei-d5=U5~GPll*gikoELEC^1OnXEq|{08)|BA8r; zWjU-JmJctE(^5*_(tOV8y9>xktgK3+MpCqO_Yu)XTeozASX6ge8HH^Y8e#0+x z-lKOgdsGhazU%|tsPQ}4%U~BulLKVXDmAA7uqGjlMQT8#jirbGF2+kEO1cQ@4b@O` z3-KfqSYB<>dD$PsA8b=kRSn3w+rvrSBxkN-bHc6sDcl-}b)$cn>JQ1b3oWmv2QY#- z$)*no-0kDZPZRk7>*JzS4oGnR0@j`}nuW24d)YsalIf@3Jk5s+{|K{*05f!FAM)*z z2M4%^LW>;zxPU08hIwUITRMR2_n1G;L&>Vd(hB`d17dCB0>~d&F)s__f>5?blBj`5 zoqCRSush>UVZ$KFzgzCVys=rm3TfqQCC-JPCsgl7E`I<&Xpi*Q4|r@hs@v>&0J0B& z3V7xTlLmV+_Z?xQupv*djNg_3aJBeXkcHclx7Vz_c$RltcWKEe{K70h<=k!Q46vT! zYE>e45Qx97rR}L5?Xyi$JPluE8uV}ifB~a+on)16%f-@_1hcqv>%Y%U_N15rfNRd3 zo3|v@`WSF|pa+f!k}bVf$~IXbuFxpEYja?NoWh4E4a%crW>8~w8;EGGP*BR|`d_^w zbMydCgr>xmU{_>@YcY`?PFf-^rRBbyd9}6jYD7m!p7^crrY|KK7--R!%OOTHq=9zH=Kp#!1Ct<9##iq0tWR&lTEmgFY zDWd?cw0AJh*1r2xvPxqX#++?gj)0N4NRRPaZY;X@R2f8#u`DE3Ody7tKwO=Mb%1RQ z;X|P($IL1|+DN7d1GqNgY1Z7UO6CM@4H`jXm(8xMBbMk`@^43IVP4uprC~iFN8#8f zkp%4>y5%VfRUSkqSy{SL(@^rgY!lsJ}HRno4k&Xk8S3} zEg*%oVfYL?fNh5yK(Zt|HxLy5d+J9yQJ{YPNb;n~V=0pKPW)tXV+S`cn}Nr$j|_u8 zTJ`c6e~d5(*rEeQZtS1OvJ=Le>FZooE}cSAhip+SUXP9R9Xzhw547!N~vQyhyqKaPQ&k+24fWn zz{_Xk88CPvhj{5gdVBUuNFxhGB+K%;YRM%Cn&bW>i*(Dfb8o?~&(33RVPNw`PdgPF z1dA_KJye{O#vjM0v3o24_~pey{LG}qQEHLwm=pD2a~^s~uc@g`M@|^2qwa&fZ)2fe zAfr`;asiac&c`2CR|a-_(_dF?BsYFfl;=-;=m=Uz8AwO^KqXPd?S#fRp3MxSTV6sV zMbz4I4l%t=PeXp#MTUrF2oCFQz*YR0I35#TAF z-78{KXjjuKviu1KRAJfxN+GD=)3&lW9_RzGSAM-4KVP25yQ4#PCfajdz5f_ouRVz3 zhJ>x?bHtMgiLAv)y6*&9RedpVdm=734L4aeFM(s@Ay~mrq1t$%Gv`$Vs1S1d*HKDh zeu4VY#Wj%I0Tc{6eF{miX`$Aj{lM<6K6xH&OUM1Cy1teL9tp6|zmJptCAy^cQv~do z!Q)O);>ZibskbhRkafO}h99zx(ErtB584_TN8@ItA8vHADquIqbl+337>QDcC`fPb zeJ4ANsP-Ihg-GO|uNHZWOH2nPzb+>=uo)6CZ(z9ht<)TJ^nt2~d6t1w0FXda!~ts9 z{^$7-&PJ)hO_7aYav505Y9Tb0wNu4azp#-~^l<49sjalA<(^NZ+2M|F*UY8_H1l+u ze}i43krHAbThlnP_m>qZmMCCKDEKK!HX+`&E)4J?YkX~jA3Q+6-`bSg1`G?Bqfgcc zfo*p?f)8F}_>ugzK7Jqp(g7Z5unwk;ybl>VGE?#qlo$@akxXI#Fr_u5OF0vJdAyPeo^wx$e0-*p)RdQKLHA& z>;N6D$jiA^%YaW5mDif0jm!P0*1r_DF+|F%+VC^5MTddjud%8JR`Bx)3dcAoEJlyffl`X`x*u8f3d?{A(-r%DWbyLKwcjj=l=`{dVgxJUCgDvsCK zbN@*w{{R*LnZGbk-)&gq!vy7Yy$U9RwvG2D8_z=CEV#rneG)oFnMi%^_Mh&NC%wtA6&jj4{ zNvTulOHULYT)Ry{l9VRdccF+;OHaw8y=)#&*-aDKkFg}Cp4rPj^U5D}_rd6sNh)IO zKBYJaZ!Rl7DyIA}0GqZ>Ej{D4jJn0DOp1Gc0s<@$E1|(qZuHXY#ba1?hrBzR1HN%n z)z88Ga<2|2)Z}+Z`E~udkk*YkOJM`nelzIJ;i6WAX39=1TUCq7-Zfsu8P~ZV4t|vo zfA+-DOdiMFkKMvgB=p&pGM@Em5kDb=nsOTRJht|gJc>|pv^`fR?hv<&D?&Oq=EQ}& zV!z0Z2$P3n_`t(hk7)HR+Xe1UBUJ>;XVW(>on9$SsPax`PlQ==F8msY*)YS8?ivN( z^u8bz1w)JkZ=$l*D`wME=iZNav;};*G8ghPbq?$G{cgNJ%=6^o)0Dv>rHqaFXfj>n zl-sYO2sQRn`L+8s3Y9Q_wnP<6PU$>{cl zmf5K#oi=|jIy^1t^*+p>*CMMFa1}$kzDq2n>|QQ+GMbEa+LH|tJEAR?>$Kd%S$xHi zA2a?^%~0w3E1iJr`6bRb$)r2HCa?1!o$8W0jM3ADC zsAt$R;Fq(jNEIWyUO1XQt<2C0?v6)P3&d2%ykbDX2<72w8B(vRNRd|>xBIDVU+)vw zBGKm=aQi7;XzBD)=vAu?Z9hOn^6*mX;JDJVU<)L$ownmXe{4~Bay?3%Mn%>u~AS0D=IabxtZ$&o;Kqu=s)|* zeJT+vX#Wv@F^&-`&7P=Y#nl2#VSi6D(<;0cjq2_f3#Rc%PXB%3yUEw~n%PCo+|+T4 z+-GMPT5*)Z*y`52)pj`qEBc+u-8on~~q>iHwAuMrpSRkW7Vx!7T=#IP; z8P?dfd-B(q$#|_1S?QO^m=CYXD-)t;;~-P%BqAlTOFOj?rNTjcxng)U3QNYB;m5Zq z{0|^?aBlx~ZN`cWO#!o;Q30$J@r^ZS=}?g+9T%B_vo`i zW!~wYx~1BvN40){f#}h-ACkhab{)91GAII_qZF;f0q+vJj$+j_+IvmBrY%qSHR+ZnWt5HL0V@HPy#u)af^sxh45W{JVTgzq0L#O-oTG(*+D}7Y^bk z&>ihXZ$&LuD|%)RihE0uuEIRtIwN~0%+Ex--&EFi0A_)bzha;8Z1Yn$b8Q}9AHzey zvc`a>xHpWP0`;U`Ab%i!I8otQIK1j~c290+YV?BxjMR>V+ik^tLdSFaV@^!~7{(2e zo56GQoL$J?QREb>LD7pJDw7;tC-tbs0X}jTfz0a+bF*)Q=Mw8T9HlBDeH_%k7o{u_ zB^O^d-DT=vYSm8~zoM$L3e``YJ}`-v+7=+k2`Wqy-(8Rn8WuSGvM6tfl}b=ZHykVv({pdkam=V<*30?%RWamXuxKy zo||$D#Pob4#`){Zyy+#?r6h*5XWDL9XP;?dM&Ez3$YS1N{ZRt{q#1g|rI{4_NH*9` z#1SUaV?X@{ELQ|J)|^#ZjS1CT z_xAF)y9psbAFF$tn6l;mEMX(xSZ0WpSgp3#JsJca3uSYBe*60~qB~s|gWQU8RE0+< z-@3AwhFzrvE-y8)D=xJGRFFmOxx-$Xj2=GHomZZOtP6+|L_FWF_!S#DxTWa!o-Uic zw+K0MZg$^e&hF=q<3O#&p&ufn2S)ml)+OlK@Y$J11KW-h}x0Qxrix z^WN~1K>5guF@FokwbCsPv-w}00j-ebrgU<2sKNRqcosC379}xY7E7nlSMK#R8qmyF zJ+Wy)YCtx)+$xPg&HF4jrVd4Kumv8-F2J)lgGXY&M?}(BSwGhUPk9DG167OyjT+j; z9rK>0@i6tR;boKOKax7e+IaF}Ie&D*=HhTx;OD6+H}Hg6;!wOc+;RCF(R#)#FX4vj zE3DU5FUUO4iH3QbAN@WgJz{UXa#gO#@Ai~N$c4O_I`vPq6!9fx$KqO13%bJujBu?l zgf&DA!(MNV6~Fcj-`KNOSHV%$Z%T|{|0ogBops>el1z=$8}UiwB2@?-TmxEpoX&h- zTcjQs#wfZQeUv(MNf1#|(acYfhaU-RN^7&7o@6Es^cW<|id%{w2HdeLg5d>Hsqs8) z8uR)rBlGVnO7;;MJa3Unv3^{!H;6l*t~cI~-12|+uoc&6i6<)i4L@SpzeK)o;vrgf z@*{Kxu8TZaXnm;3mdJ_B12^f#kGfqh7u{^{Ko!TTW4Ja-r^M%N?YdsvwQ~&-TY1NG z_(ERBAvbbws<}U1Qmy|EsU?;Ai2JZDF+7(C6_5@?RXnRO=rQR%Pfo-QFmzbj6bB&$ z%@27t`2@_7v)+W*MqFb^>{fEyB6w|r8$na`JQC7rb}i~>p_~HzJ5S_&B6lG?KApl6 z!M7ob7W?}%&&S-fr_$*3^~zwEZ41Gl(p&+!ExB6s^j{L8B53Nbi1cS(Hhv`*&s&y? zWgK#LvM_k9D#;<5Rnenv4~Ng^T+VrUSo2(<-)SLz>Pc*VlQD(TF+MNzsgihYqQYRy zxA)A*3|WU8J3y3S%DMCG&|uEM+_&!@aZM7%bd0QI(s`L;~WDrmOqAE{lQ74xd` zMN(=nMbW8)1{~B^gmZ3YlZjs02@2Kx-U#wJl3LGfz808?401bFKsWhL8cLxOUY`zz z=v%m4`lR-5$~%fYiOiCbS39(wk-ED)T}$f9bx;wcA2i{60=zf&%PooO%HB#beC1@aceXQB zGnjw7lqdJumBPTBM$$Xzh~mDG^C;OB!~KJe+=Uwg-d+#4z9|Q&-X1^=F=nS&65+xy z?oG-Z*^<0!{X|u!jky;74&Ll%Az`q$<}h*1^Trw>ZC9t9!@3i^lvDK_Hv}01vA#JF zXhmoAEI-3_FT`%u$G@9RJ=$cgSFf@zSzZhD^6|>EPSoJroDFiCF?U2HAUc95b&_0u zIb$5)A>N96Ox;c#EqVHd3SVlnz}rn8k6;~K(JV`jr9@tHq-}JUaqM@+h<8xKL#I;J z+C_KbsyFIGYiVQhD;^vIyf|b5UK~2nfR6$LBn^uC7R{;|tGNnZ#!~Z#l!*sjCvHLrbU^y&K>G9ogvbCLf*mK4e|Ckqt)2xJ1}|(8=v9(b9e;<-wL36LJZNRq6ug@y zsRmXx0ET|Uv*RWk--8@|hMnH?0mbh45JK~4=Fu7T44F&trIJ~$(>eAJ!ZwV_YNQ{i z!d|3BL&{blwU8tN-o7IKWP}dEElD1bilaX_zj(%%9Q}SmE)IT&)`<^@PKaspR0)jd zC9EVSH^x;+R)O8h29#&z+Z3w3KkxjjGvq0fK4t#A8rh=y*{2iHuP{G3iqchSiWm+6 zityv1I{qiX#o{1lLHZ8C30X~^rnhhs3tj{gMYABj-2*kWc%pVS4X+2vuHt@y|NX86 z`6Jnl*a_+(wb|D~xjqh~P~Gwtm3hR1cLlFR(fdNmDyM|O+a2*tHQz>z~4{8|nRH0r3yt^03QIHuHs)9z%*y2_2$>$n!WiCO=)Z^H}`3`aS{{Hk( z<}H4fz<*$i6Yv?$y##Jtzm^-3xDLZTN5SZ(@73}-0QtZIYiVedtyZ(mEjxyetc# NOe~EbpY^)_{{X)gX8ZsE literal 0 HcmV?d00001 diff --git a/tagstudio/resources/qt/images/file_icons/model.png b/tagstudio/resources/qt/images/file_icons/model.png new file mode 100644 index 0000000000000000000000000000000000000000..631db6e9a9ab19037734fb22d14ec9fb469483f0 GIT binary patch literal 13247 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 Qj3z_)gZAd-2MA~W7s;GBIRF3v literal 0 HcmV?d00001 diff --git a/tagstudio/resources/qt/images/file_icons/text.png b/tagstudio/resources/qt/images/file_icons/text.png new file mode 100644 index 0000000000000000000000000000000000000000..79d7d91b03bfd02a16b927ef9ae3f8d72d117c17 GIT binary patch literal 7126 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 B5_$jt literal 0 HcmV?d00001 diff --git a/tagstudio/src/core/media_types.py b/tagstudio/src/core/media_types.py index d1974343..47b9721b 100644 --- a/tagstudio/src/core/media_types.py +++ b/tagstudio/src/core/media_types.py @@ -13,7 +13,10 @@ logging.basicConfig(format="%(message)s", level=logging.INFO) class MediaType(str, Enum): """Names of media types.""" + ADOBE_PHOTOSHOP: str = "adobe_photoshop" + AFFINITY_PHOTO: str = "affinity_photo" ARCHIVE: str = "archive" + AUDIO_MIDI: str = "audio_midi" AUDIO: str = "audio" BLENDER: str = "blender" DATABASE: str = "database" @@ -27,7 +30,6 @@ class MediaType(str, Enum): MATERIAL: str = "material" MODEL: str = "model" PACKAGE: str = "package" - PHOTOSHOP: str = "photoshop" PLAINTEXT: str = "plaintext" PRESENTATION: str = "presentation" PROGRAM: str = "program" @@ -67,6 +69,12 @@ class MediaCategories: # These sets are used either individually or together to form the final sets # for the MediaCategory(s). # These sets may be combined and are NOT 1:1 with the final categories. + _ADOBE_PHOTOSHOP_SET: set[str] = { + ".pdd", + ".psb", + ".psd", + } + _AFFINITY_PHOTO_SET: set[str] = {".afphoto"} _ARCHIVE_SET: set[str] = { ".7z", ".gz", @@ -76,6 +84,10 @@ class MediaCategories: ".tgz", ".zip", } + _AUDIO_MIDI_SET: set[str] = { + ".mid", + ".midi", + } _AUDIO_SET: set[str] = { ".aac", ".aif", @@ -182,6 +194,7 @@ class MediaCategories: ".jpg_large", ".jpg", ".jpg2", + ".jxl", ".png", ".psb", ".psd", @@ -193,11 +206,6 @@ class MediaCategories: _MATERIAL_SET: set[str] = {".mtl"} _MODEL_SET: set[str] = {".3ds", ".fbx", ".obj", ".stl"} _PACKAGE_SET: set[str] = {".pkg"} - _PHOTOSHOP_SET: set[str] = { - ".pdd", - ".psb", - ".psd", - } _PLAINTEXT_SET: set[str] = { ".bat", ".css", @@ -247,14 +255,29 @@ class MediaCategories: ".wmv", } + ADOBE_PHOTOSHOP_TYPES: MediaCategory = MediaCategory( + media_type=MediaType.ADOBE_PHOTOSHOP, + extensions=_ADOBE_PHOTOSHOP_SET, + is_iana=False, + ) + AFFINITY_PHOTO_TYPES: MediaCategory = MediaCategory( + media_type=MediaType.AFFINITY_PHOTO, + extensions=_AFFINITY_PHOTO_SET, + is_iana=False, + ) ARCHIVE_TYPES: MediaCategory = MediaCategory( media_type=MediaType.ARCHIVE, extensions=_ARCHIVE_SET, is_iana=False, ) + AUDIO_MIDI_TYPES: MediaCategory = MediaCategory( + media_type=MediaType.AUDIO_MIDI, + extensions=_AUDIO_MIDI_SET, + is_iana=False, + ) AUDIO_TYPES: MediaCategory = MediaCategory( media_type=MediaType.AUDIO, - extensions=_AUDIO_SET, + extensions=_AUDIO_SET | _AUDIO_MIDI_SET, is_iana=True, ) BLENDER_TYPES: MediaCategory = MediaCategory( @@ -317,11 +340,6 @@ class MediaCategories: extensions=_PACKAGE_SET, is_iana=False, ) - PHOTOSHOP_TYPES: MediaCategory = MediaCategory( - media_type=MediaType.PHOTOSHOP, - extensions=_PHOTOSHOP_SET, - is_iana=False, - ) PLAINTEXT_TYPES: MediaCategory = MediaCategory( media_type=MediaType.PLAINTEXT, extensions=_PLAINTEXT_SET, @@ -359,7 +377,10 @@ class MediaCategories: ) ALL_CATEGORIES: list[MediaCategory] = [ + ADOBE_PHOTOSHOP_TYPES, + AFFINITY_PHOTO_TYPES, ARCHIVE_TYPES, + AUDIO_MIDI_TYPES, AUDIO_TYPES, BLENDER_TYPES, DATABASE_TYPES, @@ -373,7 +394,6 @@ class MediaCategories: MATERIAL_TYPES, MODEL_TYPES, PACKAGE_TYPES, - PHOTOSHOP_TYPES, PLAINTEXT_TYPES, PRESENTATION_TYPES, PROGRAM_TYPES, diff --git a/tagstudio/src/qt/resources.json b/tagstudio/src/qt/resources.json index 9f3d3e49..b27b7e36 100644 --- a/tagstudio/src/qt/resources.json +++ b/tagstudio/src/qt/resources.json @@ -19,8 +19,48 @@ "path": "qt/images/broken_link_icon.png", "mode": "pil" }, + "adobe_illustrator": { + "path": "qt/images/file_icons/adobe_illustrator.png", + "mode": "pil" + }, + "adobe_photoshop": { + "path": "qt/images/file_icons/adobe_photoshop.png", + "mode": "pil" + }, + "affinity_photo": { + "path": "qt/images/file_icons/affinity_photo.png", + "mode": "pil" + }, + "document": { + "path": "qt/images/file_icons/document.png", + "mode": "pil" + }, "file_generic": { - "path": "qt/images/file_icons/generic.png", + "path": "qt/images/file_icons/file_generic.png", + "mode": "pil" + }, + "font": { + "path": "qt/images/file_icons/font.png", + "mode": "pil" + }, + "image": { + "path": "qt/images/file_icons/image.png", + "mode": "pil" + }, + "material": { + "path": "qt/images/file_icons/material.png", + "mode": "pil" + }, + "model": { + "path": "qt/images/file_icons/model.png", + "mode": "pil" + }, + "text": { + "path": "qt/images/file_icons/text.png", + "mode": "pil" + }, + "video": { + "path": "qt/images/file_icons/video.png", "mode": "pil" } } diff --git a/tagstudio/src/qt/widgets/item_thumb.py b/tagstudio/src/qt/widgets/item_thumb.py index a03c1ae5..5cd1ea23 100644 --- a/tagstudio/src/qt/widgets/item_thumb.py +++ b/tagstudio/src/qt/widgets/item_thumb.py @@ -363,12 +363,15 @@ class ItemThumb(FlowWidget): and (MediaType.IMAGE not in MediaCategories.get_types(ext)) or (MediaType.IMAGE_RAW in MediaCategories.get_types(ext)) or (MediaType.IMAGE_VECTOR in MediaCategories.get_types(ext)) - or (MediaType.PHOTOSHOP in MediaCategories.get_types(ext)) + or (MediaType.ADOBE_PHOTOSHOP in MediaCategories.get_types(ext)) or ext in [ ".apng", + ".avif", ".exr", ".gif", + ".jxl", + ".webp", ] ): self.ext_badge.setHidden(False) diff --git a/tagstudio/src/qt/widgets/thumb_renderer.py b/tagstudio/src/qt/widgets/thumb_renderer.py index c08f0291..bb352c5a 100644 --- a/tagstudio/src/qt/widgets/thumb_renderer.py +++ b/tagstudio/src/qt/widgets/thumb_renderer.py @@ -205,6 +205,10 @@ class ThumbRenderer(QObject): # Get icon by name icon: Image.Image = ThumbRenderer.rm.get(name) + if not icon: + icon = ThumbRenderer.rm.get("file_generic") + if not icon: + icon = Image.new(mode="RGBA", size=(32, 32), color="magenta") # Resize icon to fit icon_ratio icon = icon.resize( @@ -268,8 +272,29 @@ class ThumbRenderer(QObject): return bg @staticmethod - def get_mime_icon_resource(ext: str = "") -> str: - pass + def get_icon_resource(url: Path) -> str: + """Return the name of the icon resource to use for a file type. + + Args: + url (Path): The file url to assess. + """ + ext = url.suffix.lower() + types: set[MediaType] = MediaCategories.get_types(ext, True) + + # Loop though the specific (non-IANA) categories and return the string + # name of the first matching category found. + for cat in MediaCategories.ALL_CATEGORIES: + if not cat.is_iana: + if cat.media_type in types: + return cat.media_type.value + + # If the type is broader (IANA registered) then search those types. + for cat in MediaCategories.ALL_CATEGORIES: + if cat.is_iana: + if cat.media_type in types: + return cat.media_type.value + + return "file_generic" def render( self, @@ -541,8 +566,8 @@ class ThumbRenderer(QObject): if update_on_ratio_change: self.updated_ratio.emit(1) final = ThumbRenderer._get_icon( - # name=ThumbRenderer.get_mime_icon_resource(_filepath.suffix.lower()), - name="file_generic", + name=ThumbRenderer.get_icon_resource(_filepath), + # name="file_generic", color="", size=(adj_size, adj_size), pixel_ratio=pixel_ratio,