diff --git a/PIL/_imaging.pyd b/PIL/_imaging.pyd index 613f321..e2d2ad8 100644 Binary files a/PIL/_imaging.pyd and b/PIL/_imaging.pyd differ diff --git a/PIL/_imagingcms.pyd b/PIL/_imagingcms.pyd index a3f21b4..17b226e 100644 Binary files a/PIL/_imagingcms.pyd and b/PIL/_imagingcms.pyd differ diff --git a/PIL/_imagingft.pyd b/PIL/_imagingft.pyd index 4587276..5e42b18 100644 Binary files a/PIL/_imagingft.pyd and b/PIL/_imagingft.pyd differ diff --git a/PIL/_imagingmath.pyd b/PIL/_imagingmath.pyd index 18b28a7..d5c20f6 100644 Binary files a/PIL/_imagingmath.pyd and b/PIL/_imagingmath.pyd differ diff --git a/PIL/_imagingtk.pyd b/PIL/_imagingtk.pyd new file mode 100644 index 0000000..8b2e32f Binary files /dev/null and b/PIL/_imagingtk.pyd differ diff --git a/PIL/_webp.pyd b/PIL/_webp.pyd index 84964e5..03d9166 100644 Binary files a/PIL/_webp.pyd and b/PIL/_webp.pyd differ diff --git a/certifi/cacert.pem b/certifi/cacert.pem index f309400..a658158 100644 --- a/certifi/cacert.pem +++ b/certifi/cacert.pem @@ -245,34 +245,6 @@ mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK 4SVhM7JZG+Ju1zdXtg2pEto= -----END CERTIFICATE----- -# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 -# Subject: O=SECOM Trust.net OU=Security Communication RootCA1 -# Label: "Security Communication Root CA" -# Serial: 0 -# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a -# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 -# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- - # Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Label: "XRamp Global CA Root" @@ -3513,46 +3485,6 @@ DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ +RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= -----END CERTIFICATE----- -# Issuer: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH -# Subject: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH -# Label: "GLOBALTRUST 2020" -# Serial: 109160994242082918454945253 -# MD5 Fingerprint: 8a:c7:6f:cb:6d:e3:cc:a2:f1:7c:83:fa:0e:78:d7:e8 -# SHA1 Fingerprint: d0:67:c1:13:51:01:0c:aa:d0:c7:6a:65:37:31:16:26:4f:53:71:a2 -# SHA256 Fingerprint: 9a:29:6a:51:82:d1:d4:51:a2:e3:7f:43:9b:74:da:af:a2:67:52:33:29:f9:0f:9a:0d:20:07:c3:34:e2:3c:9a ------BEGIN CERTIFICATE----- -MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG -A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw -FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx -MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u -aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b -RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z -YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3 -QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw -yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+ -BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ -SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH -r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0 -4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me -dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw -q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2 -nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu -H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA -VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC -XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd -6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf -+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi -kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7 -wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB -TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C -MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn -4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I -aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy -qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== ------END CERTIFICATE----- - # Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz # Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz # Label: "ANF Secure Server Root CA" @@ -4776,3 +4708,91 @@ lklyALKrdVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670 v64fG9PiO/yzcnMcmyiQiRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17O rg3bhzjlP1v9mxnhMUF6cKojawHhRUzNlM47ni3niAIi9G7oyOzWPPO5std3eqx7 -----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS ECC Root 2020" +# Serial: 72082518505882327255703894282316633856 +# MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd +# SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec +# SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1 +-----BEGIN CERTIFICATE----- +MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw +CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH +bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw +MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx +JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE +AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O +tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP +f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA +MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di +z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn +27iQ7t0l +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS RSA Root 2023" +# Serial: 44676229530606711399881795178081572759 +# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2 +# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93 +# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBj +MQswCQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0 +eSBHbWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAy +MDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMyNzIzNTk1OVowYzELMAkGA1UEBhMC +REUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkG +A1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9 +cUD/h3VCKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHV +cp6R+SPWcHu79ZvB7JPPGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMA +U6DksquDOFczJZSfvkgdmOGjup5czQRxUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6 +Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWol8hHD/BeEIvnHRz+sTug +BTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9FIS3R/qy +8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73J +co4vzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg +8qKrBC7m8kwOFjQgrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8 +rFEz0ciD0cmfHdRHNCk+y7AO+oMLKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12 +mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7SWWO/gLCMk3PLNaaZlSJhZQNg ++y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtqeX +gj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 +p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQ +pGv7qHBFfLp+sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm +9S3ul0A8Yute1hTWjOKWi0FpkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErw +M807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy/SKE8YXJN3nptT+/XOR0so8RYgDd +GGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4mZqTuXNnQkYRIer+ +CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtzaL1t +xKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+ +w6jv/naaoqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aK +L4x35bcF7DvB7L6Gs4a8wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+lj +X273CXE2whJdV/LItM3z7gLfEdxquVeEHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4Q +ntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0o82bNSQ3+pCTE4FCxpgm +dTdmQRCsu/WU48IxK63nI1bMNSWSs1A= +-----END CERTIFICATE----- + +# Issuer: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Subject: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Label: "FIRMAPROFESIONAL CA ROOT-A WEB" +# Serial: 65916896770016886708751106294915943533 +# MD5 Fingerprint: 82:b2:ad:45:00:82:b0:66:63:f8:5f:c3:67:4e:ce:a3 +# SHA1 Fingerprint: a8:31:11:74:a6:14:15:0d:ca:77:dd:0e:e4:0c:5d:58:fc:a0:72:a5 +# SHA256 Fingerprint: be:f2:56:da:f2:6e:9c:69:bd:ec:16:02:35:97:98:f3:ca:f7:18:21:a0:3e:01:82:57:c5:3c:65:61:7f:3d:4a +-----BEGIN CERTIFICATE----- +MIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2WhcNNDcwMzMxMDkwMTM2WjBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zf +e9MEkVz6iMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6C +cyvHZpsKjECcfIr28jlgst7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FDY1w8ndYn81LsF7Kpryz3dvgwHQYDVR0O +BBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO +PQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgLcFBTApFw +hVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dG +XSaQpYXFuXqUPoeovQA= +-----END CERTIFICATE----- diff --git a/kivy/graphics/cgl_backend/cgl_sdl2.pyd b/kivy/graphics/cgl_backend/cgl_sdl2.pyd new file mode 100644 index 0000000..0c73caa Binary files /dev/null and b/kivy/graphics/cgl_backend/cgl_sdl2.pyd differ diff --git a/kivy/lib/gstplayer/_gstplayer.pyd b/kivy/lib/gstplayer/_gstplayer.pyd new file mode 100644 index 0000000..859b321 Binary files /dev/null and b/kivy/lib/gstplayer/_gstplayer.pyd differ diff --git a/kivymd/fonts/materialdesignicons-webfont.ttf b/kivymd/fonts/materialdesignicons-webfont.ttf index d685510..b00c684 100644 Binary files a/kivymd/fonts/materialdesignicons-webfont.ttf and b/kivymd/fonts/materialdesignicons-webfont.ttf differ diff --git a/kivymd/uix/bottomsheet/bottomsheet.kv b/kivymd/uix/bottomsheet/bottomsheet.kv index a840629..6d63e1c 100644 --- a/kivymd/uix/bottomsheet/bottomsheet.kv +++ b/kivymd/uix/bottomsheet/bottomsheet.kv @@ -1,73 +1,42 @@ -#:import Window kivy.core.window.Window + + size_hint_y: None + height: self.minimum_height - + + orientation: "vertical" + size_hint_y: None + height: self.minimum_height + padding: "16dp", "8dp", "16dp", "16dp" - MDGridLayout: - id: box_sheet_list - cols: 1 - adaptive_height: True - padding: 0, 0, 0, "96dp" + BottomSheetDragHandle: + md_bg_color: + app.theme_cls.disabled_hint_text_color \ + if not root.drag_handle_color else \ + root.drag_handle_color + size_hint: None, None + size: "32dp", "4dp" + radius: 4 + pos_hint: {"center_x": .5} + + BottomSheetDragHandleContainer: + id: header_container + size_hint_y: None + height: self.minimum_height - md_bg_color: root.value_transparent - _upper_padding: _upper_padding - _gl_content: _gl_content - _position_content: Window.height + orientation: "vertical" + md_bg_color: root.bg_color if root.bg_color else app.theme_cls.bg_darkest + radius: 16, 16, 0, 0 + padding: 0, "8dp", 0, 0 MDBoxLayout: - orientation: "vertical" - padding: 0, 1, 0, 0 + id: drag_handle_container + size_hint_y: None + height: self.minimum_height - BsPadding: - id: _upper_padding - size_hint_y: None - height: root.height - min(root.width * 9 / 16, root._gl_content.height) - on_release: root.dismiss() - - BottomSheetContent: - id: _gl_content - size_hint_y: None - cols: 1 - md_bg_color: 0, 0, 0, 0 - - canvas: - Color: - rgba: root.theme_cls.bg_normal if not root.bg_color else root.bg_color - RoundedRectangle: - pos: self.pos - size: self.size - radius: - [ - (root.radius, root.radius) if root.radius_from == "top_left" or root.radius_from == "top" else (0, 0), - (root.radius, root.radius) if root.radius_from == "top_right" or root.radius_from == "top" else (0, 0), - (root.radius, root.radius) if root.radius_from == "bottom_right" or root.radius_from == "bottom" else (0, 0), - (root.radius, root.radius) if root.radius_from == "bottom_left" or root.radius_from == "bottom" else (0, 0) - ] - - - - theme_text_color: "Primary" - pos_hint: {"center_x": .5, "center_y": .5} - - - - orientation: "vertical" - padding: 0, dp(24), 0, 0 - size_hint_y: None - size: dp(64), dp(96) - - AnchorLayout: - anchor_x: "center" - - MDIconButton: - icon: root.source - user_font_size: root.icon_size - on_release: root.dispatch("on_release") - - MDLabel: - font_style: "Caption" - theme_text_color: "Secondary" - text: root.caption - halign: "center" + MDBoxLayout: + id: container + size_hint_y: None + height: self.minimum_height \ No newline at end of file diff --git a/kivymd/uix/button/button.kv b/kivymd/uix/button/button.kv index 4cee339..77f7d09 100644 --- a/kivymd/uix/button/button.kv +++ b/kivymd/uix/button/button.kv @@ -2,6 +2,7 @@ canvas: Clear Color: + group: "bg-color" rgba: self._md_bg_color \ if not self.disabled else \ @@ -12,6 +13,7 @@ source: self.source if hasattr(self, "source") else "" radius: [root._radius, ] Color: + group: "outline-color" rgba: root._line_color \ if not root.disabled else \ @@ -92,9 +94,11 @@ root.theme_cls.disabled_hint_text_color \ if not root.disabled_color else \ root.disabled_color - - on_icon: - if self.icon not in md_icons.keys(): self.size_hint = (1, 1) + # Fix https://github.com/kivymd/KivyMD/issues/1448 + # TODO: Perhaps this change may affect other widgets. + # You need to create tests. + # on_icon: + # if self.icon not in md_icons.keys(): self.size_hint = (1, 1) theme_text_color: root._theme_icon_color diff --git a/kivymd/uix/chip/chip.kv b/kivymd/uix/chip/chip.kv index 361bc98..e008dd2 100644 --- a/kivymd/uix/chip/chip.kv +++ b/kivymd/uix/chip/chip.kv @@ -1,110 +1,38 @@ - - scale_value_x: 0 - scale_value_y: 0 - scale_value_z: 0 - - size_hint_y: None height: "32dp" - spacing: "8dp" adaptive_width: True - radius: 16 if self.radius == [0, 0, 0, 0] else self.radius - padding: - "12dp" if not self.icon_left else "4dp", \ - 0, \ - "12dp" if not self.icon_right else "8dp", \ - 0 + radius: + 16 \ + if self.radius == [0, 0, 0, 0] else \ + (max(self.radius) if max(self.radius) < self.height / 2 else 16) md_bg_color: + ( \ ( \ app.theme_cls.bg_darkest \ if app.theme_cls.theme_style == "Light" else \ app.theme_cls.bg_light \ ) \ - if not self.disabled else app.theme_cls.disabled_hint_text_color + if not self._origin_md_bg_color else \ + self._origin_md_bg_color + ) \ + if not self.disabled else app.theme_cls.disabled_primary_color + line_color: + app.theme_cls.disabled_hint_text_color \ + if self.disabled else ( \ + self._origin_line_color \ + if self._origin_line_color else \ + self.line_color \ + ) - canvas.before: - Color: - rgba: - self.line_color \ - if not self.disabled else \ - app.theme_cls.disabled_hint_text_color - Line: - width: 1 - rounded_rectangle: - ( \ - self.x, \ - self.y, \ - self.width, \ - self.height, \ - *self.radius, \ - self.height \ - ) + LeadingIconContainer: + id: leading_icon_container + adaptive_width: True - MDRelativeLayout: - id: relative_box - size_hint: None, None - size: ("24dp", "24dp") if root.icon_left else (0, 0) - pos_hint: {"center_y": .5} - radius: [int(self.height / 2),] + LabelTextContainer: + id: label_container + adaptive_width: True - MDIcon: - id: icon_left - icon: root.icon_left - size_hint: None, None - size: ("28dp", "28dp") if root.icon_left else (0, 0) - theme_text_color: "Custom" - pos_hint: {"center_y": .5} - pos: 0, -2 - text_color: - ( \ - root.icon_left_color \ - if root.icon_left_color else \ - root.theme_cls.disabled_hint_text_color \ - ) \ - if not self.disabled else app.theme_cls.disabled_hint_text_color - - MDBoxLayout: - id: icon_left_box - size_hint: None, None - radius: [int(self.height / 2),] - size: ("28dp", "28dp") if root.icon_left else (0, 0) - pos: 0, -2 - - MDScalableCheckIcon: - id: check_icon - icon: "check" - size_hint: None, None - size: "28dp", "28dp" - color: (1, 1, 1, 1) if not root.icon_check_color else root.icon_check_color - pos: 2, -2 - - MDLabel: - id: label - text: root.text - adaptive_size: True - markup: True - pos_hint: {"center_y": .5} - color: - ( \ - root.text_color \ - if root.text_color else \ - root.theme_cls.disabled_hint_text_color \ - ) \ - if not self.disabled else app.theme_cls.disabled_hint_text_color - - MDIcon: - id: icon_right - icon: root.icon_right - size_hint: None, None - size: ("18dp", "18dp") if root.icon_right else (0, 0) - font_size: "18sp" if root.icon_right else 0 - theme_text_color: "Custom" - pos_hint: {"center_y": .5} - text_color: - ( \ - root.icon_right_color \ - if root.icon_right_color else \ - root.theme_cls.disabled_hint_text_color \ - ) \ - if not self.disabled else app.theme_cls.disabled_hint_text_color + TrailingIconContainer: + id: trailing_icon_container + adaptive_width: True diff --git a/kivymd/uix/datatables/datatables.kv b/kivymd/uix/datatables/datatables.kv index a6a7220..b5d81a7 100644 --- a/kivymd/uix/datatables/datatables.kv +++ b/kivymd/uix/datatables/datatables.kv @@ -231,4 +231,11 @@ id: container orientation: "vertical" elevation: root.elevation + shadow_radius: root.shadow_radius + shadow_softness: root.shadow_softness + shadow_offset: root.shadow_offset + shadow_color: root.shadow_color + shadow_color: root.shadow_color + shadow_softness_size: root.shadow_softness_size padding: "24dp", "24dp", "8dp", "8dp" + md_bg_color: app.theme_cls.bg_normal diff --git a/kivymd/uix/filemanager/filemanager.kv b/kivymd/uix/filemanager/filemanager.kv index ad5704f..29352d7 100644 --- a/kivymd/uix/filemanager/filemanager.kv +++ b/kivymd/uix/filemanager/filemanager.kv @@ -1,4 +1,6 @@ #:import os os +#:import FILE_MANAGER_TOP_APP_BAR_ELEVATION kivymd.material_resources.FILE_MANAGER_TOP_APP_BAR_ELEVATION + icon: "folder" @@ -74,7 +76,7 @@ title: root.current_path right_action_items: [["close-box", lambda x: root.exit_manager(1)]] left_action_items: [["chevron-left", lambda x: root.back()]] - elevation: 3 + elevation: FILE_MANAGER_TOP_APP_BAR_ELEVATION md_bg_color: app.theme_cls.primary_color \ if not root.background_color_toolbar else \ diff --git a/kivymd/uix/imagelist/imagelist.kv b/kivymd/uix/imagelist/imagelist.kv index 8cb474c..fe87f76 100644 --- a/kivymd/uix/imagelist/imagelist.kv +++ b/kivymd/uix/imagelist/imagelist.kv @@ -13,6 +13,7 @@ (0, 0) on_release: root.dispatch("on_release") on_press: root.dispatch("on_press") + _no_ripple_effect: root._no_ripple_effect SmartTileOverlayBox: id: box diff --git a/kivymd/uix/label/label.kv b/kivymd/uix/label/label.kv index 71cac91..7fba348 100644 --- a/kivymd/uix/label/label.kv +++ b/kivymd/uix/label/label.kv @@ -3,12 +3,10 @@ disabled_color: self.theme_cls.disabled_hint_text_color - # FIXME: Overriding the values of this property greatly affects application - # performance. Especially when the application window is resized and a - # custom font is used. Performance is especially slow when you are using - # `PIL` as your text processing provider - os.environ ['KIVY_TEXT'] = 'pil'. - # Priority - CRITICAL. - text_size: self.width, None + text_size: + (self.width if not self.adaptive_width else None) \ + if not self.adaptive_size else None, \ + None : @@ -16,6 +14,7 @@ Color: rgba: (1, 1, 1, 1) if self.source else (0, 0, 0, 0) Rectangle: + group: "rectangle" source: self.source if self.source else None pos: self.pos \ @@ -32,6 +31,7 @@ # Badge icon. MDLabel: + id: badge font_style: "Icon" adaptive_size: True opposite_icon_color: True @@ -62,6 +62,7 @@ if root.badge_icon else \ (0, 0, 0, 0) RoundedRectangle: + group: "badge" radius: [self.width / 2,] pos: self.pos size: self.size diff --git a/kivymd/uix/menu/menu.kv b/kivymd/uix/menu/menu.kv index f72f87d..a53c071 100644 --- a/kivymd/uix/menu/menu.kv +++ b/kivymd/uix/menu/menu.kv @@ -1,26 +1,9 @@ -#:import STANDARD_INCREMENT kivymd.material_resources.STANDARD_INCREMENT - - - - adaptive_width: True - - - - - IconLeftWidget: - id: icon_widget - icon: root.icon - - - size_hint: None, None - width: root.width_mult * STANDARD_INCREMENT bar_width: 0 key_viewclass: "viewclass" key_size: "height" RecycleBoxLayout: - padding: 0, "4dp", 0, "4dp" default_size: None, dp(48) default_size_hint: 1, None size_hint_y: None @@ -28,32 +11,478 @@ orientation: "vertical" - + + orientation: "vertical" + + MDBoxLayout: + id: container + spacing: "12dp" + padding: "12dp", 0, "12dp", 0 + + MDLabel: + text: root.text + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.text_color else "Primary" + shorten: True + shorten_from: "right" + size_hint_x: None + width: + root.width - \ + ( \ + + trailing_container.width \ + + container.padding[0] \ + + container.padding[2] \ + + container.spacing \ + ) + text_color: + root.text_color \ + if root.text_color else \ + app.theme_cls.text_color + + MDTrailingTextContainer: + id: trailing_container + text: root.trailing_text + adaptive_width: True + theme_text_color: "Custom" if root.trailing_text_color else "Primary" + text_color: + root.trailing_text_color \ + if root.trailing_text_color else \ + app.theme_cls.text_color + + MDSeparator: + md_bg_color: + ( \ + self.theme_cls.divider_color \ + if not root.divider_color \ + else root.divider_color \ + ) \ + if root.divider else \ + (0, 0, 0, 0) + + + + orientation: "vertical" + + MDBoxLayout: + id: container + spacing: "12dp" + padding: "10dp", 0, "16dp", 0 + + MDIcon: + id: leading_icon + icon: root.leading_icon + size_hint: None, None + size: "48dp", "48dp" + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.leading_icon_color else "Primary" + text_color: + root.leading_icon_color \ + if root.leading_icon_color else \ + app.theme_cls.text_color + + MDLabel: + text: root.text + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.text_color else "Primary" + shorten: True + shorten_from: "right" + size_hint_x: None + width: + root.width - \ + ( \ + leading_icon.width \ + + trailing_container.width \ + + container.padding[0] \ + + container.padding[2] \ + + container.spacing \ + + dp(18) \ + ) + text_color: + root.text_color \ + if root.text_color else \ + app.theme_cls.text_color + + Widget: + + MDTrailingTextContainer: + id: trailing_container + text: root.trailing_text + adaptive_width: True + theme_text_color: "Custom" if root.trailing_text_color else "Primary" + text_color: + root.trailing_text_color \ + if root.trailing_text_color else \ + app.theme_cls.text_color + + MDSeparator: + md_bg_color: + ( \ + self.theme_cls.divider_color \ + if not root.divider_color \ + else root.divider_color \ + ) \ + if root.divider else \ + (0, 0, 0, 0) + + + + orientation: "vertical" + + MDBoxLayout: + id: container + spacing: "12dp" + padding: "12dp", 0, "12dp", 0 + + MDLabel: + id: label + text: root.text + shorten: True + size_hint_x: None + shorten_from: "right" + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.text_color else "Primary" + shorten: True + shorten_from: "right" + width: + root.width - \ + ( \ + + trailing_icon.width \ + + container.padding[0] \ + + container.padding[2] \ + + container.spacing \ + + dp(18) \ + ) + text_color: + root.text_color \ + if root.text_color else \ + app.theme_cls.text_color + + Widget: + + MDIcon: + id: trailing_icon + size_hint: None, None + size: "48dp", "48dp" + pos_hint: {"center_y": .5} + icon: root.trailing_icon + theme_text_color: "Custom" if root.trailing_icon_color else "Primary" + text_color: + root.trailing_icon_color \ + if root.trailing_icon_color else \ + app.theme_cls.text_color + + MDSeparator: + md_bg_color: + ( \ + self.theme_cls.divider_color \ + if not root.divider_color \ + else root.divider_color \ + ) \ + if root.divider else \ + (0, 0, 0, 0) + + + + adaptive_width: True + + MDIcon: + icon: root.trailing_icon + size_hint: None, None + size: "48dp", "48dp" + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.trailing_icon_color else "Primary" + text_color: + root.trailing_icon_color \ + if root.trailing_icon_color else \ + app.theme_cls.text_color + + MDLabel: + text: root.trailing_text + adaptive_size: True + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.trailing_text_color else "Primary" + text_color: + root.trailing_text_color \ + if root.trailing_text_color else \ + app.theme_cls.text_color + + + + orientation: "vertical" + + MDBoxLayout: + id: container + spacing: "12dp" + padding: "12dp", 0, "12dp", 0 + + MDLabel: + id: label + text: root.text + shorten: True + size_hint_x: None + shorten_from: "right" + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.text_color else "Primary" + shorten: True + shorten_from: "right" + width: + root.width - \ + ( \ + + trailing_container.width \ + + container.padding[0] \ + + container.padding[2] \ + + container.spacing \ + ) + text_color: + root.text_color \ + if root.text_color else \ + app.theme_cls.text_color + + MDTrailingIconTextContainer: + id: trailing_container + trailing_icon: root.trailing_icon + trailing_text: root.trailing_text + trailing_text_color: root.trailing_text_color + trailing_icon_color: root.trailing_icon_color + + MDSeparator: + md_bg_color: + ( \ + self.theme_cls.divider_color \ + if not root.divider_color \ + else root.divider_color \ + ) \ + if root.divider else \ + (0, 0, 0, 0) + + + + orientation: "vertical" + + MDLabel: + text: root.text + valign: "center" + padding_x: "12dp" + theme_text_color: "Custom" if root.text_color else "Primary" + shorten: True + shorten_from: "right" + text_color: + root.text_color \ + if root.text_color else \ + app.theme_cls.text_color + + MDSeparator: + md_bg_color: + ( \ + self.theme_cls.divider_color \ + if not root.divider_color \ + else root.divider_color \ + ) \ + if root.divider else \ + (0, 0, 0, 0) + + + + orientation: "vertical" + + MDBoxLayout: + id: container + spacing: "12dp" + padding: "10dp", 0, "16dp", 0 + + MDIcon: + id: leading_icon + icon: root.leading_icon + size_hint: None, None + size: "48dp", "48dp" + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.leading_icon_color else "Primary" + text_color: + root.leading_icon_color \ + if root.leading_icon_color else \ + app.theme_cls.text_color + + MDLabel: + text: root.text + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.text_color else "Primary" + shorten: True + shorten_from: "right" + size_hint_x: None + width: + root.width - \ + ( \ + leading_icon.width \ + + trailing_container.width \ + + container.padding[0] \ + + container.padding[2] \ + + container.spacing \ + + dp(18) \ + ) + text_color: + root.text_color \ + if root.text_color else \ + app.theme_cls.text_color + + Widget: + + MDTrailingIconTextContainer: + id: trailing_container + trailing_icon: root.trailing_icon + trailing_text: root.trailing_text + trailing_icon_color: root.trailing_icon_color + trailing_text_color: root.trailing_text_color + + MDSeparator: + md_bg_color: + ( \ + self.theme_cls.divider_color \ + if not root.divider_color \ + else root.divider_color \ + ) \ + if root.divider else \ + (0, 0, 0, 0) + + + + orientation: "vertical" + + MDBoxLayout: + id: container + spacing: "12dp" + padding: "10dp", 0, "12dp", 0 + + MDIcon: + id: leading_icon + icon: root.leading_icon + size_hint: None, None + size: "48dp", "48dp" + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.leading_icon_color else "Primary" + text_color: + root.leading_icon_color \ + if root.leading_icon_color else \ + app.theme_cls.text_color + + MDLabel: + id: label + text: root.text + shorten: True + size_hint_x: None + shorten_from: "right" + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.text_color else "Primary" + shorten: True + shorten_from: "right" + width: + root.width - \ + ( \ + leading_icon.width \ + + trailing_icon.width \ + + container.padding[0] \ + + container.padding[2] \ + + container.spacing \ + + dp(18) \ + ) + text_color: + root.text_color \ + if root.text_color else \ + app.theme_cls.text_color + + Widget: + + MDIcon: + id: trailing_icon + size_hint: None, None + size: "48dp", "48dp" + pos_hint: {"center_y": .5} + icon: root.trailing_icon + theme_text_color: "Custom" if root.trailing_icon_color else "Primary" + text_color: + root.trailing_icon_color \ + if root.trailing_icon_color else \ + app.theme_cls.text_color + + MDSeparator: + md_bg_color: + ( \ + self.theme_cls.divider_color \ + if not root.divider_color \ + else root.divider_color \ + ) \ + if root.divider else \ + (0, 0, 0, 0) + + + + orientation: "vertical" + + MDBoxLayout: + id: container + spacing: "12dp" + padding: "12dp", 0, "12dp", 0 + + MDIcon: + id: leading_icon + icon: root.leading_icon + size_hint: None, None + size: "48dp", "48dp" + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.leading_icon_color else "Primary" + text_color: + root.leading_icon_color \ + if root.leading_icon_color else \ + app.theme_cls.text_color + + MDLabel: + id: label + text: root.text + shorten: True + size_hint_x: None + shorten_from: "right" + pos_hint: {"center_y": .5} + theme_text_color: "Custom" if root.text_color else "Primary" + shorten: True + shorten_from: "right" + width: + root.width - \ + ( \ + leading_icon.width \ + + container.padding[0] \ + + container.padding[2] \ + + container.spacing \ + ) + text_color: + root.text_color \ + if root.text_color else \ + app.theme_cls.text_color + + MDSeparator: + md_bg_color: + ( \ + self.theme_cls.divider_color \ + if not root.divider_color \ + else root.divider_color \ + ) \ + if root.divider else \ + (0, 0, 0, 0) + orientation: "vertical" + elevation: root.elevation + shadow_radius: root.shadow_radius + shadow_softness: root.shadow_softness + shadow_offset: root.shadow_offset + shadow_color: root.shadow_color + shadow_color: root.shadow_color + radius: root.radius + size_hint: None, None - MenuContainer: - id: card - orientation: "vertical" - elevation: root.elevation - size_hint: None, None - size: md_menu.size[0], md_menu.size[1] + content_header.height - pos: md_menu.pos - opacity: md_menu.opacity - radius: root.radius - md_bg_color: - root.background_color \ - if root.background_color else root.theme_cls.bg_dark + MDBoxLayout: + id: content_header + adaptive_size: True - MDBoxLayout: - id: content_header - adaptive_size: True - - MDMenu: - id: md_menu - drop_cls: root - width_mult: root.width_mult - size_hint: None, None - size: 0, 0 - opacity: 0 + MDMenu: + id: md_menu + drop_cls: root diff --git a/kivymd/uix/pickers/datepicker/datepicker.kv b/kivymd/uix/pickers/datepicker/datepicker.kv index 6d86fb7..7fe2866 100644 --- a/kivymd/uix/pickers/datepicker/datepicker.kv +++ b/kivymd/uix/pickers/datepicker/datepicker.kv @@ -371,6 +371,7 @@ adaptive_height: True size_hint_x: None spacing: dp(8) + opacity: 0 width: self.owner.width - dp(48) \ if root.owner.theme_cls.device_orientation == "portrait" \ @@ -386,7 +387,6 @@ mode: "fill" - opacity: 0 hint_text: "dd/mm/yyyy" input_filter: root.input_filter fill_color: root.owner.input_field_background_color or (0, 0, 0, .15) diff --git a/kivymd/uix/progressbar/progressbar.kv b/kivymd/uix/progressbar/progressbar.kv index 00028cf..89aafb8 100644 --- a/kivymd/uix/progressbar/progressbar.kv +++ b/kivymd/uix/progressbar/progressbar.kv @@ -6,7 +6,8 @@ self.theme_cls.divider_color \ if not self.back_color else \ self.back_color - Rectangle: + RoundedRectangle: + radius: root.radius size: (self.width, self.height) \ if self.orientation == "horizontal" else \ @@ -18,7 +19,8 @@ Color: rgba: self.theme_cls.primary_color if not self.color else self.color - Rectangle: + RoundedRectangle: + radius: root.radius size: (self.width * self.value_normalized, self.height if self.height else dp(4)) \ if self.orientation == "horizontal" else \ diff --git a/kivymd/uix/refreshlayout/refreshlayout.kv b/kivymd/uix/refreshlayout/refreshlayout.kv index 26dc488..e58b7f6 100644 --- a/kivymd/uix/refreshlayout/refreshlayout.kv +++ b/kivymd/uix/refreshlayout/refreshlayout.kv @@ -15,7 +15,7 @@ canvas: Clear Color: - rgba: root.theme_cls.primary_dark + rgba: root.circle_color Ellipse: pos: self.pos size: self.size @@ -24,4 +24,4 @@ id: spinner size_hint: None, None size: dp(30), dp(30) - color: 1, 1, 1, 1 + color: root.spinner_color diff --git a/kivymd/uix/segmentedbutton/segmentedbutton.kv b/kivymd/uix/segmentedbutton/segmentedbutton.kv new file mode 100644 index 0000000..c4b63ff --- /dev/null +++ b/kivymd/uix/segmentedbutton/segmentedbutton.kv @@ -0,0 +1,32 @@ + + size_hint: None, None + height: "40dp" + opacity: 0 + + + + size_hint: None, None + height: self.parent.height + line_color: + self.theme_cls.disabled_hint_text_color \ + if self.parent.line_color == [0, 0, 0, 0] else \ + self.parent.line_color + + SegmentButtonIcon: + id: scale_icon + icon: root.icon + size_hint: None, None + size: "24dp", "24dp" + pos_hint: {"center_y": .5} + scale_value_x: 1 if root.icon else 0 + scale_value_y: 1 if root.icon else 0 + x: label_text.x - dp(32) + + MDLabel: + id: label_text + text: root.text + adaptive_size: True + pos_hint: {"center_y": .5} + x: + root.center_x - (self.texture_size[0] / 2) \ + + (dp(16) if root.icon else 0) diff --git a/kivymd/uix/segmentedcontrol/segmentedcontrol.kv b/kivymd/uix/segmentedcontrol/segmentedcontrol.kv index 3ac3656..8ceb004 100644 --- a/kivymd/uix/segmentedcontrol/segmentedcontrol.kv +++ b/kivymd/uix/segmentedcontrol/segmentedcontrol.kv @@ -1,3 +1,6 @@ +#:import SEGMENT_CONTROL_SEGMENT_SWITCH_ELEVATION kivymd.material_resources.SEGMENT_CONTROL_SEGMENT_SWITCH_ELEVATION + + adaptive_height: True halign: "center" @@ -15,8 +18,9 @@ pos_hint: {"center_y": .5} x: root._segment_switch_x md_bg_color: root.segment_color - elevation: 2 + elevation: SEGMENT_CONTROL_SEGMENT_SWITCH_ELEVATION _radius: root.radius[0] - 4 + shadow_radius: self._radius width: segment_panel.width / segment_panel.children_number \ - segment_panel.spacing diff --git a/kivymd/uix/snackbar/snackbar.kv b/kivymd/uix/snackbar/snackbar.kv index 557ceda..4334bbf 100644 --- a/kivymd/uix/snackbar/snackbar.kv +++ b/kivymd/uix/snackbar/snackbar.kv @@ -1,34 +1,28 @@ -#:import window kivy.core.window +#:import SNACK_BAR_ELEVATION kivymd.material_resources.SNACK_BAR_ELEVATION +#:import SNACK_BAR_OFFSET kivymd.material_resources.SNACK_BAR_OFFSET - + + padding: 0, 0, "8dp", 0 size_hint_y: None - height: "58dp" - spacing: "10dp" - padding: "10dp", "10dp", "10dp", "10dp" - md_bg_color: "323232" if not root.bg_color else root.bg_color - radius: root.radius - elevation: 4 if root.padding else 0 + height: self.minimum_height + md_bg_color: "#323232" + elevation: SNACK_BAR_ELEVATION + shadow_offset: SNACK_BAR_OFFSET - canvas: - Color: - rgba: self.md_bg_color - RoundedRectangle: - size: self.size - pos: self.pos - radius: self.radius - - - - MDLabel: - id: text_bar - size_hint_y: None - height: self.texture_size[1] - text: root.text - font_size: root.font_size - theme_text_color: "Custom" - text_color: "ffffff" - shorten: True - shorten_from: "right" - markup: True + SnackbarLabelContainer: + id: label_container + padding: "16dp", "15dp", 0, "15dp" + orientation: "vertical" + adaptive_height: True pos_hint: {"center_y": .5} + spacing: "4dp" + + SnackbarActionButtonContainer: + id: action_container + size_hint_x: None + + SnackbarCloseButtonContainer: + id: close_container + size_hint_x: None + width: "38dp" diff --git a/kivymd/uix/textfield/textfield.kv b/kivymd/uix/textfield/textfield.kv index 1cf48d2..1ed7597 100644 --- a/kivymd/uix/textfield/textfield.kv +++ b/kivymd/uix/textfield/textfield.kv @@ -7,6 +7,7 @@ # "round" mode. Color: + group: "round-color" rgba: self._fill_color if self.mode == "round" else (0, 0, 0, 0) Ellipse: angle_start: 180 @@ -19,49 +20,32 @@ pos: (self.width - dp(18)) + self.x - self.height / 2.0, self.y size: self.height, self.height Rectangle: - pos: self.x + dp(9), self.y - size: self.width - dp(18), self.height + pos: self.x + dp(14), self.y + size: self.width - dp(28), self.height Color: rgba: ( \ (self.line_color_focus if not self.error else self.error_color) \ - if self.focus \ - else self.theme_cls.disabled_hint_text_color \ + if self.focus else ( \ + self.theme_cls.disabled_hint_text_color \ + if not self.line_color_normal else \ + self.line_color_normal) \ ) \ if self.mode == "round" else \ (0, 0, 0, 0) - Line: - points: - self.x + dp(18), \ - self.y, \ - self.x + self.width - dp(18), \ - self.y - Line: - points: - self.x + dp(18), \ - self.y + self.height, \ - self.x + self.width - dp(18), \ - self.y + self.height - Line: - ellipse: - self.x - self.height / 2 + dp(18), \ + SmoothLine: + width: dp(1) + rounded_rectangle: + self.x, \ self.y, \ + self.width, \ self.height, \ - self.height, \ - 180, \ - 360 - Line: - ellipse: - self.width + self.x - self.height / 2.0 - dp(18), \ - self.y, \ - self.height, \ - self.height, \ - 360, \ - 540 + self.height / 2 # "fill" mode. Color: + group: "fill-color" rgba: self._fill_color if self.mode == "fill" else (0, 0, 0, 0) RoundedRectangle: pos: self.x, self.y @@ -70,6 +54,7 @@ # Static underline texture. Color: + group: "static-underline-color" rgba: (self._line_color_normal \ if self.line_color_normal else self.theme_cls.divider_color) \ @@ -82,6 +67,7 @@ # Active underline (on focus) texture. Color: + group: "active-underline-color" rgba: self._line_color_focus \ if self.mode in ("line", "fill") and self.active_line \ @@ -94,7 +80,10 @@ # Helper text texture. Color: + group: "helper-text-color" rgba: + self.theme_cls.disabled_hint_text_color \ + if self.disabled else \ self._helper_text_color Rectangle: texture: self._helper_text_label.texture @@ -106,7 +95,11 @@ # Right/left icon texture. Color: - rgba: self._icon_right_color if self.icon_right else self._icon_left_color + group: "right-left-icons-color" + rgba: + self.theme_cls.disabled_hint_text_color \ + if self.disabled else \ + (self._icon_right_color if self.icon_right else self._icon_left_color) Rectangle: texture: self._icon_right_label.texture if self.icon_right else self._icon_left_label.texture @@ -137,7 +130,11 @@ # Max length texture. Color: - rgba: self._max_length_text_color + group: "max-length-color" + rgba: + self.theme_cls.disabled_hint_text_color \ + if self.disabled else \ + self._max_length_text_color Rectangle: texture: self._max_length_label.texture size: self._max_length_label.texture_size @@ -160,9 +157,75 @@ pos: (int(x) for x in self.cursor_pos) size: 1, -self.line_height - # Hint text texture. + # "rectangle" mode + Color: + group: "rectangle-color" + rgba: + ( \ + (self.line_color_focus if not self.error else self.error_color) \ + if self.focus else \ + self.line_color_normal \ + ) \ + if self.mode == "rectangle" else \ + (0, 0, 0, 0) + SmoothLine: + width: dp(1) + rounded_rectangle: + self.x, \ + self.y, \ + self.width, \ + self.height - self._hint_text_label.texture_size[1] // 2, \ + root.radius[0] + + # The background color line of the widget on which the text field + # is placed (for background hint text texture). Color: rgba: + ( \ + ( \ + self.parent.md_bg_color \ + if hasattr(self.parent, "md_bg_color") \ + and self.parent.md_bg_color != [1, 1, 1, 0] else \ + self.theme_cls.bg_normal \ + ) \ + if self.focus else \ + ( \ + (0, 0, 0, 0) if not self.text else \ + ( \ + self.parent.md_bg_color \ + if hasattr(self.parent, "md_bg_color") \ + and self.parent.md_bg_color != [1, 1, 1, 0] else \ + self.theme_cls.bg_normal \ + ) \ + ) \ + ) \ + if self.mode == "rectangle" else \ + (0, 0, 0, 0) + SmoothLine: + width: dp(2) + points: + self.x + dp(10), \ + self.top - self._hint_text_label.texture_size[1] // 2, \ + self.x + dp(16) + self._hint_text_label.texture_size[0], \ + self.top - self._hint_text_label.texture_size[1] // 2 + + # Text color. + Color: + group: "text-color" + rgba: + self.theme_cls.disabled_hint_text_color if self.disabled else \ + ( \ + self.text_color_focus if self.focus else self._text_color_normal + ) \ + if not self.error else self.error_color + + canvas.after: + # Hint text texture. + Color: + group: "hint-text-color" + rgba: + self.theme_cls.disabled_hint_text_color \ + if self.disabled else \ self._hint_text_color Rectangle: texture: self._hint_text_label.texture @@ -184,34 +247,6 @@ if self.mode != "line" else \ dp(-6)) if self.mode != "rectangle" else dp(-4)) - self._hint_y - # "rectangle" mode - Color: - rgba: - (self.line_color_focus if not self.error else self.error_color) \ - if self.focus else \ - self.line_color_normal - Line: - width: dp(1) if self.mode == "rectangle" else dp(0.00001) - points: - ( - self.x + self._line_blank_space_right_point, - self.top - self._hint_text_label.texture_size[1] // 2, - self.right, self.top - self._hint_text_label.texture_size[1] // 2, - self.right, self.y, - self.x, self.y, - self.x, self.top - self._hint_text_label.texture_size[1] // 2, - self.x + self._line_blank_space_left_point, - self.top - self._hint_text_label.texture_size[1] // 2 - ) - - # Text color. - Color: - rgba: - self.disabled_foreground_color if self.disabled else \ - ( \ - self.text_color_focus if self.focus else self._text_color_normal - ) \ - if not self.error else self.error_color font_name: "Roboto" if not self.font_name else self.font_name foreground_color: self.theme_cls.text_color diff --git a/main.exe b/main.exe index 05e83ca..8875a34 100644 Binary files a/main.exe and b/main.exe differ diff --git a/numpy.libs/libscipy_openblas64_-fb1711452d4d8cee9f276fd1449ee5c7.dll b/numpy.libs/libscipy_openblas64_-fb1711452d4d8cee9f276fd1449ee5c7.dll new file mode 100644 index 0000000..8d944aa Binary files /dev/null and b/numpy.libs/libscipy_openblas64_-fb1711452d4d8cee9f276fd1449ee5c7.dll differ diff --git a/numpy.libs/msvcp140-8021418012832a07a8ca5105a33b1086.dll b/numpy.libs/msvcp140-8021418012832a07a8ca5105a33b1086.dll new file mode 100644 index 0000000..c0e84dd Binary files /dev/null and b/numpy.libs/msvcp140-8021418012832a07a8ca5105a33b1086.dll differ diff --git a/numpy/_core/_multiarray_tests.pyd b/numpy/_core/_multiarray_tests.pyd new file mode 100644 index 0000000..b6e41be Binary files /dev/null and b/numpy/_core/_multiarray_tests.pyd differ diff --git a/numpy/_core/_multiarray_umath.pyd b/numpy/_core/_multiarray_umath.pyd new file mode 100644 index 0000000..ce7506f Binary files /dev/null and b/numpy/_core/_multiarray_umath.pyd differ diff --git a/numpy/fft/_pocketfft_umath.pyd b/numpy/fft/_pocketfft_umath.pyd new file mode 100644 index 0000000..08df43a Binary files /dev/null and b/numpy/fft/_pocketfft_umath.pyd differ diff --git a/numpy/linalg/_umath_linalg.pyd b/numpy/linalg/_umath_linalg.pyd index 21ad103..29862ce 100644 Binary files a/numpy/linalg/_umath_linalg.pyd and b/numpy/linalg/_umath_linalg.pyd differ diff --git a/numpy/random/_bounded_integers.pyd b/numpy/random/_bounded_integers.pyd index dd50b15..56264cc 100644 Binary files a/numpy/random/_bounded_integers.pyd and b/numpy/random/_bounded_integers.pyd differ diff --git a/numpy/random/_common.pyd b/numpy/random/_common.pyd index 81f853c..1ed5a62 100644 Binary files a/numpy/random/_common.pyd and b/numpy/random/_common.pyd differ diff --git a/numpy/random/_generator.pyd b/numpy/random/_generator.pyd index c0ed2b5..eacebcc 100644 Binary files a/numpy/random/_generator.pyd and b/numpy/random/_generator.pyd differ diff --git a/numpy/random/_mt19937.pyd b/numpy/random/_mt19937.pyd index c5af7c6..8940a6e 100644 Binary files a/numpy/random/_mt19937.pyd and b/numpy/random/_mt19937.pyd differ diff --git a/numpy/random/_pcg64.pyd b/numpy/random/_pcg64.pyd index 4e74fd8..108ceb5 100644 Binary files a/numpy/random/_pcg64.pyd and b/numpy/random/_pcg64.pyd differ diff --git a/numpy/random/_philox.pyd b/numpy/random/_philox.pyd index b1ad28d..1bb2f5a 100644 Binary files a/numpy/random/_philox.pyd and b/numpy/random/_philox.pyd differ diff --git a/numpy/random/_sfc64.pyd b/numpy/random/_sfc64.pyd index 1f7570c..2d6957b 100644 Binary files a/numpy/random/_sfc64.pyd and b/numpy/random/_sfc64.pyd differ diff --git a/numpy/random/bit_generator.pyd b/numpy/random/bit_generator.pyd index f6f5142..47d6153 100644 Binary files a/numpy/random/bit_generator.pyd and b/numpy/random/bit_generator.pyd differ diff --git a/numpy/random/mtrand.pyd b/numpy/random/mtrand.pyd index 33e50f5..ef6bc8d 100644 Binary files a/numpy/random/mtrand.pyd and b/numpy/random/mtrand.pyd differ diff --git a/zstandard/_cffi.pyd b/zstandard/_cffi.pyd index cb9f5db..a66f575 100644 Binary files a/zstandard/_cffi.pyd and b/zstandard/_cffi.pyd differ diff --git a/zstandard/backend_c.pyd b/zstandard/backend_c.pyd index 8a3b753..a051b8e 100644 Binary files a/zstandard/backend_c.pyd and b/zstandard/backend_c.pyd differ