Updated Packages - Nuitka, kivymd, reportlab, requests, imageio

This commit is contained in:
Alex Braun 2024-07-29 15:08:22 +02:00
parent da3917eb88
commit 1c49f078ba
43 changed files with 804 additions and 376 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
PIL/_imagingtk.pyd Normal file

Binary file not shown.

Binary file not shown.

View File

@ -245,34 +245,6 @@ mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK
4SVhM7JZG+Ju1zdXtg2pEto= 4SVhM7JZG+Ju1zdXtg2pEto=
-----END CERTIFICATE----- -----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 # 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 # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
# Label: "XRamp Global CA Root" # Label: "XRamp Global CA Root"
@ -3513,46 +3485,6 @@ DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ
+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= +RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A=
-----END CERTIFICATE----- -----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 # 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 # Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz
# Label: "ANF Secure Server Root CA" # Label: "ANF Secure Server Root CA"
@ -4776,3 +4708,91 @@ lklyALKrdVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670
v64fG9PiO/yzcnMcmyiQiRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17O v64fG9PiO/yzcnMcmyiQiRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17O
rg3bhzjlP1v9mxnhMUF6cKojawHhRUzNlM47ni3niAIi9G7oyOzWPPO5std3eqx7 rg3bhzjlP1v9mxnhMUF6cKojawHhRUzNlM47ni3niAIi9G7oyOzWPPO5std3eqx7
-----END CERTIFICATE----- -----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-----

Binary file not shown.

Binary file not shown.

View File

@ -1,73 +1,42 @@
#:import Window kivy.core.window.Window <MDBottomSheetContent>
size_hint_y: None
height: self.minimum_height
<SheetList> <MDBottomSheetDragHandle>
orientation: "vertical"
size_hint_y: None
height: self.minimum_height
padding: "16dp", "8dp", "16dp", "16dp"
MDGridLayout: BottomSheetDragHandle:
id: box_sheet_list md_bg_color:
cols: 1 app.theme_cls.disabled_hint_text_color \
adaptive_height: True if not root.drag_handle_color else \
padding: 0, 0, 0, "96dp" 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
<MDBottomSheet> <MDBottomSheet>
md_bg_color: root.value_transparent orientation: "vertical"
_upper_padding: _upper_padding md_bg_color: root.bg_color if root.bg_color else app.theme_cls.bg_darkest
_gl_content: _gl_content radius: 16, 16, 0, 0
_position_content: Window.height padding: 0, "8dp", 0, 0
MDBoxLayout: MDBoxLayout:
orientation: "vertical" id: drag_handle_container
padding: 0, 1, 0, 0 size_hint_y: None
height: self.minimum_height
BsPadding: MDBoxLayout:
id: _upper_padding id: container
size_hint_y: None size_hint_y: None
height: root.height - min(root.width * 9 / 16, root._gl_content.height) height: self.minimum_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)
]
<ListBottomSheetIconLeft>
theme_text_color: "Primary"
pos_hint: {"center_x": .5, "center_y": .5}
<GridBottomSheetItem>
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"

View File

@ -2,6 +2,7 @@
canvas: canvas:
Clear Clear
Color: Color:
group: "bg-color"
rgba: rgba:
self._md_bg_color \ self._md_bg_color \
if not self.disabled else \ if not self.disabled else \
@ -12,6 +13,7 @@
source: self.source if hasattr(self, "source") else "" source: self.source if hasattr(self, "source") else ""
radius: [root._radius, ] radius: [root._radius, ]
Color: Color:
group: "outline-color"
rgba: rgba:
root._line_color \ root._line_color \
if not root.disabled else \ if not root.disabled else \
@ -92,9 +94,11 @@
root.theme_cls.disabled_hint_text_color \ root.theme_cls.disabled_hint_text_color \
if not root.disabled_color else \ if not root.disabled_color else \
root.disabled_color root.disabled_color
# Fix https://github.com/kivymd/KivyMD/issues/1448
on_icon: # TODO: Perhaps this change may affect other widgets.
if self.icon not in md_icons.keys(): self.size_hint = (1, 1) # 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 theme_text_color: root._theme_icon_color

View File

@ -1,110 +1,38 @@
<MDScalableCheckIcon>
scale_value_x: 0
scale_value_y: 0
scale_value_z: 0
<MDChip> <MDChip>
size_hint_y: None size_hint_y: None
height: "32dp" height: "32dp"
spacing: "8dp"
adaptive_width: True adaptive_width: True
radius: 16 if self.radius == [0, 0, 0, 0] else self.radius radius:
padding: 16 \
"12dp" if not self.icon_left else "4dp", \ if self.radius == [0, 0, 0, 0] else \
0, \ (max(self.radius) if max(self.radius) < self.height / 2 else 16)
"12dp" if not self.icon_right else "8dp", \
0
md_bg_color: md_bg_color:
( \
( \ ( \
app.theme_cls.bg_darkest \ app.theme_cls.bg_darkest \
if app.theme_cls.theme_style == "Light" else \ if app.theme_cls.theme_style == "Light" else \
app.theme_cls.bg_light \ 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: LeadingIconContainer:
Color: id: leading_icon_container
rgba: adaptive_width: True
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 \
)
MDRelativeLayout: LabelTextContainer:
id: relative_box id: label_container
size_hint: None, None adaptive_width: True
size: ("24dp", "24dp") if root.icon_left else (0, 0)
pos_hint: {"center_y": .5}
radius: [int(self.height / 2),]
MDIcon: TrailingIconContainer:
id: icon_left id: trailing_icon_container
icon: root.icon_left adaptive_width: True
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

View File

@ -231,4 +231,11 @@
id: container id: container
orientation: "vertical" orientation: "vertical"
elevation: root.elevation 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" padding: "24dp", "24dp", "8dp", "8dp"
md_bg_color: app.theme_cls.bg_normal

View File

@ -1,4 +1,6 @@
#:import os os #:import os os
#:import FILE_MANAGER_TOP_APP_BAR_ELEVATION kivymd.material_resources.FILE_MANAGER_TOP_APP_BAR_ELEVATION
<BodyManager> <BodyManager>
icon: "folder" icon: "folder"
@ -74,7 +76,7 @@
title: root.current_path title: root.current_path
right_action_items: [["close-box", lambda x: root.exit_manager(1)]] right_action_items: [["close-box", lambda x: root.exit_manager(1)]]
left_action_items: [["chevron-left", lambda x: root.back()]] left_action_items: [["chevron-left", lambda x: root.back()]]
elevation: 3 elevation: FILE_MANAGER_TOP_APP_BAR_ELEVATION
md_bg_color: md_bg_color:
app.theme_cls.primary_color \ app.theme_cls.primary_color \
if not root.background_color_toolbar else \ if not root.background_color_toolbar else \

View File

@ -13,6 +13,7 @@
(0, 0) (0, 0)
on_release: root.dispatch("on_release") on_release: root.dispatch("on_release")
on_press: root.dispatch("on_press") on_press: root.dispatch("on_press")
_no_ripple_effect: root._no_ripple_effect
SmartTileOverlayBox: SmartTileOverlayBox:
id: box id: box

View File

@ -3,12 +3,10 @@
<MDLabel> <MDLabel>
disabled_color: self.theme_cls.disabled_hint_text_color disabled_color: self.theme_cls.disabled_hint_text_color
# FIXME: Overriding the values of this property greatly affects application text_size:
# performance. Especially when the application window is resized and a (self.width if not self.adaptive_width else None) \
# custom font is used. Performance is especially slow when you are using if not self.adaptive_size else None, \
# `PIL` as your text processing provider - os.environ ['KIVY_TEXT'] = 'pil'. None
# Priority - CRITICAL.
text_size: self.width, None
<MDIcon>: <MDIcon>:
@ -16,6 +14,7 @@
Color: Color:
rgba: (1, 1, 1, 1) if self.source else (0, 0, 0, 0) rgba: (1, 1, 1, 1) if self.source else (0, 0, 0, 0)
Rectangle: Rectangle:
group: "rectangle"
source: self.source if self.source else None source: self.source if self.source else None
pos: pos:
self.pos \ self.pos \
@ -32,6 +31,7 @@
# Badge icon. # Badge icon.
MDLabel: MDLabel:
id: badge
font_style: "Icon" font_style: "Icon"
adaptive_size: True adaptive_size: True
opposite_icon_color: True opposite_icon_color: True
@ -62,6 +62,7 @@
if root.badge_icon else \ if root.badge_icon else \
(0, 0, 0, 0) (0, 0, 0, 0)
RoundedRectangle: RoundedRectangle:
group: "badge"
radius: [self.width / 2,] radius: [self.width / 2,]
pos: self.pos pos: self.pos
size: self.size size: self.size

View File

@ -1,26 +1,9 @@
#:import STANDARD_INCREMENT kivymd.material_resources.STANDARD_INCREMENT
<RightContent>
adaptive_width: True
<MDMenuItemIcon>
IconLeftWidget:
id: icon_widget
icon: root.icon
<MDMenu> <MDMenu>
size_hint: None, None
width: root.width_mult * STANDARD_INCREMENT
bar_width: 0 bar_width: 0
key_viewclass: "viewclass" key_viewclass: "viewclass"
key_size: "height" key_size: "height"
RecycleBoxLayout: RecycleBoxLayout:
padding: 0, "4dp", 0, "4dp"
default_size: None, dp(48) default_size: None, dp(48)
default_size_hint: 1, None default_size_hint: 1, None
size_hint_y: None size_hint_y: None
@ -28,32 +11,478 @@
orientation: "vertical" orientation: "vertical"
<MenuContainer@MDCard> <MDDropdownTrailingTextItem>
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)
<MDDropdownLeadingIconTrailingTextItem>
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)
<MDDropdownTrailingIconItem>
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)
<MDTrailingIconTextContainer>
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
<MDDropdownTrailingIconTextItem>
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)
<MDDropdownTextItem>
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)
<MDDropdownLeadingTrailingIconTextItem>
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)
<MDDropdownLeadingTrailingIconItem>
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)
<MDDropdownLeadingIconItem>
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)
<MDDropdownMenu> <MDDropdownMenu>
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: MDBoxLayout:
id: card id: content_header
orientation: "vertical" adaptive_size: True
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: MDMenu:
id: content_header id: md_menu
adaptive_size: True drop_cls: root
MDMenu:
id: md_menu
drop_cls: root
width_mult: root.width_mult
size_hint: None, None
size: 0, 0
opacity: 0

View File

@ -371,6 +371,7 @@
adaptive_height: True adaptive_height: True
size_hint_x: None size_hint_x: None
spacing: dp(8) spacing: dp(8)
opacity: 0
width: width:
self.owner.width - dp(48) \ self.owner.width - dp(48) \
if root.owner.theme_cls.device_orientation == "portrait" \ if root.owner.theme_cls.device_orientation == "portrait" \
@ -386,7 +387,6 @@
<DatePickerInputField> <DatePickerInputField>
mode: "fill" mode: "fill"
opacity: 0
hint_text: "dd/mm/yyyy" hint_text: "dd/mm/yyyy"
input_filter: root.input_filter input_filter: root.input_filter
fill_color: root.owner.input_field_background_color or (0, 0, 0, .15) fill_color: root.owner.input_field_background_color or (0, 0, 0, .15)

View File

@ -6,7 +6,8 @@
self.theme_cls.divider_color \ self.theme_cls.divider_color \
if not self.back_color else \ if not self.back_color else \
self.back_color self.back_color
Rectangle: RoundedRectangle:
radius: root.radius
size: size:
(self.width, self.height) \ (self.width, self.height) \
if self.orientation == "horizontal" else \ if self.orientation == "horizontal" else \
@ -18,7 +19,8 @@
Color: Color:
rgba: rgba:
self.theme_cls.primary_color if not self.color else self.color self.theme_cls.primary_color if not self.color else self.color
Rectangle: RoundedRectangle:
radius: root.radius
size: size:
(self.width * self.value_normalized, self.height if self.height else dp(4)) \ (self.width * self.value_normalized, self.height if self.height else dp(4)) \
if self.orientation == "horizontal" else \ if self.orientation == "horizontal" else \

View File

@ -15,7 +15,7 @@
canvas: canvas:
Clear Clear
Color: Color:
rgba: root.theme_cls.primary_dark rgba: root.circle_color
Ellipse: Ellipse:
pos: self.pos pos: self.pos
size: self.size size: self.size
@ -24,4 +24,4 @@
id: spinner id: spinner
size_hint: None, None size_hint: None, None
size: dp(30), dp(30) size: dp(30), dp(30)
color: 1, 1, 1, 1 color: root.spinner_color

View File

@ -0,0 +1,32 @@
<MDSegmentedButton>
size_hint: None, None
height: "40dp"
opacity: 0
<MDSegmentedButtonItem>
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)

View File

@ -1,3 +1,6 @@
#:import SEGMENT_CONTROL_SEGMENT_SWITCH_ELEVATION kivymd.material_resources.SEGMENT_CONTROL_SEGMENT_SWITCH_ELEVATION
<MDSegmentedControlItem> <MDSegmentedControlItem>
adaptive_height: True adaptive_height: True
halign: "center" halign: "center"
@ -15,8 +18,9 @@
pos_hint: {"center_y": .5} pos_hint: {"center_y": .5}
x: root._segment_switch_x x: root._segment_switch_x
md_bg_color: root.segment_color md_bg_color: root.segment_color
elevation: 2 elevation: SEGMENT_CONTROL_SEGMENT_SWITCH_ELEVATION
_radius: root.radius[0] - 4 _radius: root.radius[0] - 4
shadow_radius: self._radius
width: width:
segment_panel.width / segment_panel.children_number \ segment_panel.width / segment_panel.children_number \
- segment_panel.spacing - segment_panel.spacing

View File

@ -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
<BaseSnackbar> <MDSnackbar>
padding: 0, 0, "8dp", 0
size_hint_y: None size_hint_y: None
height: "58dp" height: self.minimum_height
spacing: "10dp" md_bg_color: "#323232"
padding: "10dp", "10dp", "10dp", "10dp" elevation: SNACK_BAR_ELEVATION
md_bg_color: "323232" if not root.bg_color else root.bg_color shadow_offset: SNACK_BAR_OFFSET
radius: root.radius
elevation: 4 if root.padding else 0
canvas: SnackbarLabelContainer:
Color: id: label_container
rgba: self.md_bg_color padding: "16dp", "15dp", 0, "15dp"
RoundedRectangle: orientation: "vertical"
size: self.size adaptive_height: True
pos: self.pos
radius: self.radius
<Snackbar>
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
pos_hint: {"center_y": .5} 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"

View File

@ -7,6 +7,7 @@
# "round" mode. # "round" mode.
Color: Color:
group: "round-color"
rgba: self._fill_color if self.mode == "round" else (0, 0, 0, 0) rgba: self._fill_color if self.mode == "round" else (0, 0, 0, 0)
Ellipse: Ellipse:
angle_start: 180 angle_start: 180
@ -19,49 +20,32 @@
pos: (self.width - dp(18)) + self.x - self.height / 2.0, self.y pos: (self.width - dp(18)) + self.x - self.height / 2.0, self.y
size: self.height, self.height size: self.height, self.height
Rectangle: Rectangle:
pos: self.x + dp(9), self.y pos: self.x + dp(14), self.y
size: self.width - dp(18), self.height size: self.width - dp(28), self.height
Color: Color:
rgba: rgba:
( \ ( \
(self.line_color_focus if not self.error else self.error_color) \ (self.line_color_focus if not self.error else self.error_color) \
if self.focus \ if self.focus else ( \
else self.theme_cls.disabled_hint_text_color \ self.theme_cls.disabled_hint_text_color \
if not self.line_color_normal else \
self.line_color_normal) \
) \ ) \
if self.mode == "round" else \ if self.mode == "round" else \
(0, 0, 0, 0) (0, 0, 0, 0)
Line: SmoothLine:
points: width: dp(1)
self.x + dp(18), \ rounded_rectangle:
self.y, \ self.x, \
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), \
self.y, \ self.y, \
self.width, \
self.height, \ self.height, \
self.height, \ self.height / 2
180, \
360
Line:
ellipse:
self.width + self.x - self.height / 2.0 - dp(18), \
self.y, \
self.height, \
self.height, \
360, \
540
# "fill" mode. # "fill" mode.
Color: Color:
group: "fill-color"
rgba: self._fill_color if self.mode == "fill" else (0, 0, 0, 0) rgba: self._fill_color if self.mode == "fill" else (0, 0, 0, 0)
RoundedRectangle: RoundedRectangle:
pos: self.x, self.y pos: self.x, self.y
@ -70,6 +54,7 @@
# Static underline texture. # Static underline texture.
Color: Color:
group: "static-underline-color"
rgba: rgba:
(self._line_color_normal \ (self._line_color_normal \
if self.line_color_normal else self.theme_cls.divider_color) \ if self.line_color_normal else self.theme_cls.divider_color) \
@ -82,6 +67,7 @@
# Active underline (on focus) texture. # Active underline (on focus) texture.
Color: Color:
group: "active-underline-color"
rgba: rgba:
self._line_color_focus \ self._line_color_focus \
if self.mode in ("line", "fill") and self.active_line \ if self.mode in ("line", "fill") and self.active_line \
@ -94,7 +80,10 @@
# Helper text texture. # Helper text texture.
Color: Color:
group: "helper-text-color"
rgba: rgba:
self.theme_cls.disabled_hint_text_color \
if self.disabled else \
self._helper_text_color self._helper_text_color
Rectangle: Rectangle:
texture: self._helper_text_label.texture texture: self._helper_text_label.texture
@ -106,7 +95,11 @@
# Right/left icon texture. # Right/left icon texture.
Color: 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: Rectangle:
texture: texture:
self._icon_right_label.texture if self.icon_right else self._icon_left_label.texture self._icon_right_label.texture if self.icon_right else self._icon_left_label.texture
@ -137,7 +130,11 @@
# Max length texture. # Max length texture.
Color: 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: Rectangle:
texture: self._max_length_label.texture texture: self._max_length_label.texture
size: self._max_length_label.texture_size size: self._max_length_label.texture_size
@ -160,9 +157,75 @@
pos: (int(x) for x in self.cursor_pos) pos: (int(x) for x in self.cursor_pos)
size: 1, -self.line_height 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: Color:
rgba: 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 self._hint_text_color
Rectangle: Rectangle:
texture: self._hint_text_label.texture texture: self._hint_text_label.texture
@ -184,34 +247,6 @@
if self.mode != "line" else \ if self.mode != "line" else \
dp(-6)) if self.mode != "rectangle" else dp(-4)) - self._hint_y 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 font_name: "Roboto" if not self.font_name else self.font_name
foreground_color: self.theme_cls.text_color foreground_color: self.theme_cls.text_color

BIN
main.exe

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.