dev 24.01.31
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -157,4 +157,4 @@ cython_debug/
|
|||||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
#.idea/
|
.idea/
|
||||||
|
|||||||
1
.python-version
Normal file
1
.python-version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.12.1
|
||||||
14
Pipfile
Normal file
14
Pipfile
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[[source]]
|
||||||
|
url = "https://pypi.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
name = "pypi"
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
pyside6 = "==6.6.1"
|
||||||
|
requests = "==2.31.0"
|
||||||
|
wmi = "==1.5.1"
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "3.12"
|
||||||
218
Pipfile.lock
generated
Normal file
218
Pipfile.lock
generated
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "9fb9aefd0be8259a8edb7585a24d4f9480d2ffccf9320d3971b34c4aa306b7ef"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "3.12"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"name": "pypi",
|
||||||
|
"url": "https://pypi.org/simple",
|
||||||
|
"verify_ssl": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"certifi": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1",
|
||||||
|
"sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.6'",
|
||||||
|
"version": "==2023.11.17"
|
||||||
|
},
|
||||||
|
"charset-normalizer": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027",
|
||||||
|
"sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087",
|
||||||
|
"sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786",
|
||||||
|
"sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8",
|
||||||
|
"sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09",
|
||||||
|
"sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185",
|
||||||
|
"sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574",
|
||||||
|
"sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e",
|
||||||
|
"sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519",
|
||||||
|
"sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898",
|
||||||
|
"sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269",
|
||||||
|
"sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3",
|
||||||
|
"sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f",
|
||||||
|
"sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6",
|
||||||
|
"sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8",
|
||||||
|
"sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a",
|
||||||
|
"sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73",
|
||||||
|
"sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc",
|
||||||
|
"sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714",
|
||||||
|
"sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2",
|
||||||
|
"sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc",
|
||||||
|
"sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce",
|
||||||
|
"sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d",
|
||||||
|
"sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e",
|
||||||
|
"sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6",
|
||||||
|
"sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269",
|
||||||
|
"sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96",
|
||||||
|
"sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d",
|
||||||
|
"sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a",
|
||||||
|
"sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4",
|
||||||
|
"sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77",
|
||||||
|
"sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d",
|
||||||
|
"sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0",
|
||||||
|
"sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed",
|
||||||
|
"sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068",
|
||||||
|
"sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac",
|
||||||
|
"sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25",
|
||||||
|
"sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8",
|
||||||
|
"sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab",
|
||||||
|
"sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26",
|
||||||
|
"sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2",
|
||||||
|
"sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db",
|
||||||
|
"sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f",
|
||||||
|
"sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5",
|
||||||
|
"sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99",
|
||||||
|
"sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c",
|
||||||
|
"sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d",
|
||||||
|
"sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811",
|
||||||
|
"sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa",
|
||||||
|
"sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a",
|
||||||
|
"sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03",
|
||||||
|
"sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b",
|
||||||
|
"sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04",
|
||||||
|
"sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c",
|
||||||
|
"sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001",
|
||||||
|
"sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458",
|
||||||
|
"sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389",
|
||||||
|
"sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99",
|
||||||
|
"sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985",
|
||||||
|
"sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537",
|
||||||
|
"sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238",
|
||||||
|
"sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f",
|
||||||
|
"sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d",
|
||||||
|
"sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796",
|
||||||
|
"sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a",
|
||||||
|
"sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143",
|
||||||
|
"sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8",
|
||||||
|
"sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c",
|
||||||
|
"sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5",
|
||||||
|
"sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5",
|
||||||
|
"sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711",
|
||||||
|
"sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4",
|
||||||
|
"sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6",
|
||||||
|
"sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c",
|
||||||
|
"sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7",
|
||||||
|
"sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4",
|
||||||
|
"sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b",
|
||||||
|
"sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae",
|
||||||
|
"sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12",
|
||||||
|
"sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c",
|
||||||
|
"sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae",
|
||||||
|
"sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8",
|
||||||
|
"sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887",
|
||||||
|
"sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b",
|
||||||
|
"sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4",
|
||||||
|
"sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f",
|
||||||
|
"sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5",
|
||||||
|
"sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33",
|
||||||
|
"sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519",
|
||||||
|
"sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"
|
||||||
|
],
|
||||||
|
"markers": "python_full_version >= '3.7.0'",
|
||||||
|
"version": "==3.3.2"
|
||||||
|
},
|
||||||
|
"idna": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca",
|
||||||
|
"sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.5'",
|
||||||
|
"version": "==3.6"
|
||||||
|
},
|
||||||
|
"pyside6": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0a67587c088cb80e90d4ce3023b02466ea858c93a6dc9c4e062b13314e03d464",
|
||||||
|
"sha256:3593d605175e83e6952cf3b428ecc9c146af97effb36de921ecf3da2752de082",
|
||||||
|
"sha256:3c348948fe3957b18164c9c7b8942fe065bdb39648b326f212bc114326679fa9",
|
||||||
|
"sha256:ed3822150f0d7a06b68bf4ceebe287515b5e8309bb256e9b49ae405afd062b18"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"markers": "python_version < '3.13' and python_version >= '3.8'",
|
||||||
|
"version": "==6.6.1"
|
||||||
|
},
|
||||||
|
"pyside6-addons": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:5a63a8a943724ce5acd2df72e5ab04982b6906963278cbabb216656b9a26ee18",
|
||||||
|
"sha256:7cb7af1b050c40f7ac891b0e61c758c1923863173932f5b92dc47bdfb4158b42",
|
||||||
|
"sha256:a0982da4033319667f9df5ed6fa8eff300a88216aec103a1fff6751a172b19a0",
|
||||||
|
"sha256:a223575c81e9a13173136c044c3447e25f6d656b462b4d71fc3c6bd9c935a709"
|
||||||
|
],
|
||||||
|
"markers": "python_version < '3.13' and python_version >= '3.8'",
|
||||||
|
"version": "==6.6.1"
|
||||||
|
},
|
||||||
|
"pyside6-essentials": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0c8917b15236956957178a8c9854641b12b11dad79ba0caf26147119164c30cf",
|
||||||
|
"sha256:13da926e9e9ee3e26e3f66883a9d5e43726ddee70cdabddca02a07aa1ccf9484",
|
||||||
|
"sha256:a383c3d60298392cfb621ec1a0cf24b4799321e6c5bbafc021d4cc8076ea1315",
|
||||||
|
"sha256:c7185616083eab6f42eaed598d97d49fac4f60ae2e7415194140d54f58c2b42c"
|
||||||
|
],
|
||||||
|
"markers": "python_version < '3.13' and python_version >= '3.8'",
|
||||||
|
"version": "==6.6.1"
|
||||||
|
},
|
||||||
|
"pywin32": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d",
|
||||||
|
"sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65",
|
||||||
|
"sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e",
|
||||||
|
"sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b",
|
||||||
|
"sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4",
|
||||||
|
"sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040",
|
||||||
|
"sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a",
|
||||||
|
"sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36",
|
||||||
|
"sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8",
|
||||||
|
"sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e",
|
||||||
|
"sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802",
|
||||||
|
"sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a",
|
||||||
|
"sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407",
|
||||||
|
"sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"
|
||||||
|
],
|
||||||
|
"version": "==306"
|
||||||
|
},
|
||||||
|
"requests": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f",
|
||||||
|
"sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==2.31.0"
|
||||||
|
},
|
||||||
|
"shiboken6": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:072c35c4fe46ec13b364d9dc47b055bb2277ee3aeaab18c23650280ec362f62a",
|
||||||
|
"sha256:a605960e72af5eef915991cee7eef4cc72f5cabe63b9ae1a955ceb3d3b0a00b9",
|
||||||
|
"sha256:d756fd1fa945b787e8eef142f2eb571da0b4c4dc2f2eec1a7c12a474a2cf84e4",
|
||||||
|
"sha256:fb102e4bc210006f0cdd0ce38e1aaaaf792bd871f02a2b3f01d07922c5cf4c59"
|
||||||
|
],
|
||||||
|
"markers": "python_version < '3.13' and python_version >= '3.8'",
|
||||||
|
"version": "==6.6.1"
|
||||||
|
},
|
||||||
|
"urllib3": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20",
|
||||||
|
"sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==2.2.0"
|
||||||
|
},
|
||||||
|
"wmi": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1d6b085e5c445141c475476000b661f60fff1aaa19f76bf82b7abb92e0ff4942",
|
||||||
|
"sha256:b6a6be5711b1b6c8d55bda7a8befd75c48c12b770b9d227d31c1737dbf0d40a6"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.5.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"develop": {}
|
||||||
|
}
|
||||||
6
daily_check.qrc
Normal file
6
daily_check.qrc
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="/">
|
||||||
|
<file>images/none_128.png</file>
|
||||||
|
<file>images/blank_128.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
||||||
356
daily_check_rc.py
Normal file
356
daily_check_rc.py
Normal file
@@ -0,0 +1,356 @@
|
|||||||
|
# Resource object code (Python 3)
|
||||||
|
# Created by: object code
|
||||||
|
# Created by: The Resource Compiler for Qt version 6.6.1
|
||||||
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
|
||||||
|
from PySide6 import QtCore
|
||||||
|
|
||||||
|
qt_resource_data = b"\
|
||||||
|
\x00\x00\x01\xb8\
|
||||||
|
\x89\
|
||||||
|
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
|
||||||
|
\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
|
||||||
|
\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\
|
||||||
|
\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00\
|
||||||
|
\x09pHYs\x00\x00\x0e\xc1\x00\x00\x0e\xc1\x01\xb8\x91\
|
||||||
|
k\xed\x00\x00\x01MIDATx^\xed\xd21\x01\
|
||||||
|
\x00 \x0c\xc0\xb0\x81\x7f\xcf\xe3\xc1E\x9a\xa7\x06zv\
|
||||||
|
w\xe2\xba\xbfA5\x00\xae\x01p\x0d\x80k\x00\x5c\x03\
|
||||||
|
\xe0\x1a\x00\xd7\x00\xb8\x06\xc05\x00\xae\x01p\x0d\x80k\
|
||||||
|
\x00\x5c\x03\xe0\x1a\x00\xd7\x00\xb8\x06\xc05\x00\xae\x01p\
|
||||||
|
\x0d\x80k\x00\x5c\x03\xe0\x1a\x00\xd7\x00\xb8\x06\xc05\x00\
|
||||||
|
\xae\x01p\x0d\x80k\x00\x5c\x03\xe0\x1a\x00\xd7\x00\xb8\x06\
|
||||||
|
\xc05\x00\xae\x01p\x0d\x80k\x00\x5c\x03\xe0\x1a\x00\xd7\
|
||||||
|
\x00\xb8\x06\xc05\x00\xae\x01p\x0d\x80k\x00\x5c\x03\xe0\
|
||||||
|
\x1a\x00\xd7\x00\xb8\x06\xc05\x00\xae\x01p\x0d\x80k\x00\
|
||||||
|
\x5c\x03\xe0\x1a\x00\xd7\x00\xb8\x06\xc05\x00\xae\x01p\x0d\
|
||||||
|
\x80k\x00\x5c\x03\xe0\x1a\x00\xd7\x00\xb8\x06\xc05\x00\xae\
|
||||||
|
\x01p\x0d\x80k\x00\x5c\x03\xe0\x1a\x00\xd7\x00\xb8\x06\xc0\
|
||||||
|
5\x00\xae\x01p\x0d\x80k\x00\x5c\x03\xe0\x1a\x00\xd7\x00\
|
||||||
|
\xb8\x06\xc05\x00\xae\x01p\x0d\x80k\x00\x5c\x03\xe0\x1a\
|
||||||
|
\x00\xd7\x00\xb8\x06\xc05\x00\xae\x01p\x0d\x80k\x00\x5c\
|
||||||
|
\x03\xe0\x1a\x00\xd7\x00\xb8\x06\xc05\x00\xae\x01p\x0d\x80\
|
||||||
|
k\x00\x5c\x03\xe0\x1a\x00\xd7\x00\xb8\x06\xc05\x00\xae\x01\
|
||||||
|
p\x0d\x80k\x00\x5c\x03\xe0\x1a\x00\xd7\x00\xb8\x06\xc05\
|
||||||
|
\x00\xae\x01p\x0d\x80k\x00\x5c\x03\xe0\x1a\x00\xd7\x00\xb8\
|
||||||
|
\x06\xc05\x00\xae\x01p\x0d\x80k\x00\x5c\x03\xe0\x1a\x80\
|
||||||
|
6\xf3\x00\xedw\x03\xfd\xcd\xd11\xb4\x00\x00\x00\x00I\
|
||||||
|
END\xaeB`\x82\
|
||||||
|
\x00\x00\x11\x82\
|
||||||
|
\x89\
|
||||||
|
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
|
||||||
|
\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3>a\xcb\
|
||||||
|
\x00\x00\x00\x09pHYs\x00\x00^|\x00\x00^|\
|
||||||
|
\x01\x00\xc7|\xb4\x00\x00\x00\x19tEXtSof\
|
||||||
|
tware\x00www.inksca\
|
||||||
|
pe.org\x9b\xee<\x1a\x00\x00\x11\x0fID\
|
||||||
|
ATx\x9c\xed\x9d\x7fp\x5c\xd5u\xc7?\xe7I\xf2\
|
||||||
|
\xbe]\xd9\x0d\xe0X\xde\x15\xb61\x8e\x81\x00\xa1m\x0c\
|
||||||
|
I\x1a0\x04\x13~9\x09?Z\xb7\x04\x08N\x1b\x97\
|
||||||
|
I\x93\xd0\xa4\x1dp;\x04\x1ahH\xe2$\xd8PJ\
|
||||||
|
:\x19\x06&\x93\x940\x86\xd0P\x87\xf2\xc3.P~\
|
||||||
|
\x19(`2L\x0a\x18\x1c\x036\xd8\xd6[\xcb&6\
|
||||||
|
\xd8\xd2>E\xbb{\xfa\xc7[\xc9\x92\xd0j\xf7\xde}\
|
||||||
|
o\x7fh\xf73\xa3\x19k\xf5\xce=\xd7\xba_\xdd{\
|
||||||
|
\xdf\xbd\xe7\x9e+\xaa\xca\xa4BDz]\x0eW\xe5\x98\
|
||||||
|
\x1c\x1c.0\x17\x98\x830\x03\x98^\xf8r\x81)@\
|
||||||
|
g\xc1\xaa\x0f\xf8=\xe0\x03\xef\x14\xbezQ\xb6)l\
|
||||||
|
u\xe0MGx\xb5\xcbg\x0b\x93\xec\x17&\x8d\xfe\xff\
|
||||||
|
\xd9\x9e\x90C\xdb\xe1$\x85\x13E\xf9\xb8\xc2G\x80i\
|
||||||
|
\x11\xb9\xdb\x07\xbc\x84\xb0A\xe0\xe9A\xe1\xe9\xd9}\xda\
|
||||||
|
\x13\x91\xaf\xaa\xd0p\x02x]$\xd6\x19\xe3T\x1c\x16\
|
||||||
|
\xa3,\x06\x8e\xacq\x956\xa1\xac\x05\xd6\xf6\x0d\xf0\xc4\
|
||||||
|
|\xd5\x81\x1a\xd7\xc7\x88\xc6\x10\x80HG:\xc6\x99*\
|
||||||
|
\x5c\x80p\x1e\xca\x07j]\xa5qQ\xf6\x22\xdc+\xca\
|
||||||
|
\xdd\xc9\x01\x1eB5[\xeb*\x95\xa2\xae\x05\xd0\x93\x90\
|
||||||
|
\xd9\xc0\xc5\xa2\x5c\x06\xcc\xaeu}\x0cI\x0b\xfc\xbb\xa3\
|
||||||
|
\xdc\xd6\xe5\xeb\x1b\xb5\xaeL1\xeaR\x00^B\x16\xa2\
|
||||||
|
|\x03\xf83\xa0\xad\xd6\xf5\xa9\x10\x05\xfeG\x95\x9b\xbb\
|
||||||
|
}\xbd\xaf\xd6\x95\x19K\xfd\x08@Dzb\x9c#p\
|
||||||
|
-\xc2\x82ZW'\x22^P\xe5\xbaz\x12B]\x08\
|
||||||
|
\xa0\xc7\x953D\xf8\x1e\xf0\xb1Z\xd7\xa5J<\xafp\
|
||||||
|
uwF\x1f\xa9uEj*\x80m\x9d\xd2\xdd\x9e\xe7\
|
||||||
|
\x07\xc0\xd2\x9aU\xa2\x86\xa8p\xbf\xc0e\xa9~}\xbb\
|
||||||
|
Vu\xa8\x8d\x00D\xda\xbd\x18\x97!|\x87\xe8\xde\xd9\
|
||||||
|
\x1b\x85~\x85\x95{}V\x1c\xa3\xfa\xfbj;\xaf\xba\
|
||||||
|
\x00\xbc\xb8\x9c\x02\xfc\x188\xb6\xaa\x8e\xeb\x1d\xe1%\xe0\
|
||||||
|
k\xa9~}\xaa\x9an\x9d\xaay\x12i\xef\x89\xcb?\
|
||||||
|
\x03\x8f\xd1j\xfc\xf7\xa3\x1c\x87\xf2\xa4\x97\x90\x7f}]\
|
||||||
|
$V-\xb7U\xe9\x01z\x122[\x94;\x81\x93\x22\
|
||||||
|
wV\x9a=\x04\xeb\xfe}\x08\xfb\x00\x07\xa5\x138\x98\
|
||||||
|
`o`J-+\x07\x80\xf0\x1br\x5c\x94\x1a\xd0W\
|
||||||
|
#w\x15\xb5\x00v\xba\xf2\xb9\xbc\xf03\x82M\x98j\
|
||||||
|
\xb1\x1bx\x1exQ\xe1M\x07\xb6\x00[\x92>\xdbK\
|
||||||
|
\xae\xce\x89tl\x8f\xd3\xd5\xae\x1c\xa9\xca\x91\xc0Q\x08\
|
||||||
|
\x1f&\xd8c\xa8\xe6b\xd4>\x11\x96%\xfb\xf5\x97Q\
|
||||||
|
:\x89N\x00\x22N:\xc6\xf7U\xf8\x07@\xa2q2\
|
||||||
|
\xccn\xe0\x01\xe0\xe1\x9c\xf2\xdc,__\x8f\xc2\xc9v\
|
||||||
|
W\xe6\xb7\x09\x8b`\xf8+\x19\x85\x9f\x11\xa8\xc0\xf5I\
|
||||||
|
\x9f\xabP\xcdG\xe1 \x12\x01l\x14\x99r\x88\xcb\xed\
|
||||||
|
\x0a\x9f\x0f\xbd\xf0\x03\xecP\xe5N\x11\xeeK\xf9<\x8d\
|
||||||
|
j.B_\xe3\xe2u\xca\xf1\xe4\xb8\x04\xe1b\xa0+\
|
||||||
|
BW\xab\xf7\xf8|)\x8a\xb7\x84\xd0\x05\xb0Kdj\
|
||||||
|
\xd6e\x0dpz\xa8\x05\x07\xe4TXK\x9e\xdb\xba\x07\
|
||||||
|
x\xb0n6[D\xdaw\xc68;',\x158\x9f\
|
||||||
|
h\xe6\x11\x0f\xb5\xfb,\x99\xa1\xba?\xccBC\x15@\
|
||||||
|
z\x9a\xcc\xd0,\x0f\x02'\x84Vh\x80/\xc2my\
|
||||||
|
X\xd9\xdd\xaf\xdbB.;T\xbc\x84\xcc\x11X\xae\xca\
|
||||||
|
\xa5@<\xe4\xe27H;\x9fM\xee\xd3]a\x15\x18\
|
||||||
|
\x9a\x00\xbc\x84\xccAy\x98p\xf7\xe7}\x84[\xb3\xc2\
|
||||||
|
\x0f\x1b-\xf0\xa2w\xaa\xcc\xccg\xb9\x5c\x85\xaf\x12\xee\
|
||||||
|
b\xd7&\x843\xc3Z=\x0cE\x00\x85\xbf\xfc\xa7\x08\
|
||||||
|
\xb3\xf1\x95{p\xb8\xbc\x96\xcb\xa4a\xd0;Uf\xe6\
|
||||||
|
r\xac\x04.!\xbc\xc9\xf0&i\xe7\xe40z\x82\x8a\
|
||||||
|
\x05\xe0\x89$\xc4\xe5\x11\x85OVZ\x99\x02o\x88\xf2\
|
||||||
|
\x8d\xa4\xaf\x0f\x86T^]\xe0\xc5\xe5d\x82\x15\xd0\x8f\
|
||||||
|
\x84T\xe4\x0b\xed>\x8b*\x9d\x13T\xb4\x12\xb8Qd\
|
||||||
|
\x0a.\xf7\x86\xd4\xf8\xaa\xca\xaa>\x9fc'[\xe3\x03\
|
||||||
|
\xa42\xba>\xe5\xb3\x00\xe1\x9b\x04\x0bQ\x95rB\xd6\
|
||||||
|
\xe5\x9e\x8d\x22\x15M8\xed{\x00\x11'\xed\xb2:\xa4\
|
||||||
|
W\xbd^Q\xbe4\x19\x1b~<\xbcN9\x9e<\xbf\
|
||||||
|
\x00>TiY\x02w%}\xbe`\xbbN`\xdd\x03\
|
||||||
|
\xa4c|?\xa4\xc6\xdf\xee\xb4s\x5c\xb34>@\xaa\
|
||||||
|
O\x7f=\xe0s\x02\xca\x9aJ\xcbR\xb8\xd0s\xf9\xae\
|
||||||
|
\xad\xbd\x95\x00\xd2\xae|\xb6\xb0\xc2\x17\x06\xb3\xf2Y\xfe\
|
||||||
|
.\xa4\xb2\x1a\x86\xb9\xaa{S\x03,A\xb8\x02\xa8t\
|
||||||
|
\x95\xef\xca\xb4+\x8bm\x0c\x8d\x87\x80\x1d\x09\x99\xe5(\
|
||||||
|
/\x02\x1f\xb4qX\x0cUVu\xfb\x1a\x96\xa8\x1a\x0a\
|
||||||
|
/!\x7f\x8a\xb2\x9a\xe0\xc0\x8a-\xbf\x03\x16\xa42\xfa\
|
||||||
|
\x96\x89\x91Y\x0f \xd2\xee\x04\xbbz\xa16~P4\
|
||||||
|
\xcb{\x5cY\x19v\xb9\x8d@\xaa_\xd7\x08|\x06x\
|
||||||
|
\xaf\x82b\x0eQ\xb8\x0b\x91\x0e\x13##\x01\xa4\x83\xb1\
|
||||||
|
f\xa1Q\xb5\x0c\x10a\xb9\x17\x97\xefEU~=\x93\
|
||||||
|
\xcc\xe8c8\x9c\x06X\xbf\xdb\x0b\xfc\x89\xe7\xf2m#\
|
||||||
|
\x9br\x87\x80B$\xcf\xe3D\xbf\xb3\x07\xb0\x22\x95\xd1\
|
||||||
|
\xab\xab\xe0\xa7\xee(\xbc!<\x86\xfd\xeaa\x1e\xe1S\
|
||||||
|
\xe5F\x16\x95\xd7\x03\x88\xb4\x8b\xf0#\xaa\xd3\xf8\x00W\
|
||||||
|
5\xedp\xd0\xa7\xbf\x168\x0f\xb0=b\xe6\xa0\xdcR\
|
||||||
|
\xeePP\x96\x00z\xe2\x5c\xae\xca\x1fZV\xc8\x8af\
|
||||||
|
\x9e\x13\x14\x86\x83\x0b\x01\xdb-\xeec\xbd8_/\xe7\
|
||||||
|
\xc1\x92C@!\x9ck#0\xd5\xb22\x95\xd2\xb4\xc3\
|
||||||
|
A:!W\xa8\xb2\xca\xd2|_N8zV\xbf\xee\
|
||||||
|
\x98\xe8\xa1\x92=\x80\xe4\xf9\x17\xec\x1b\x7f\xbb\xa5\xddH\
|
||||||
|
\xaej\xde\x89!7\xa2\xfc\xca\xd2|\x9a\xa3\xdcX\xea\
|
||||||
|
\xa1\x09\x05\xd0\xe3\xca\x19\x08K,+\x90v\xda9\x1e\
|
||||||
|
Xai?\x92\xe6\x14\x81\xaa\x0e\xba,\x03\xb6\xda\x98\
|
||||||
|
\x0b\x5c\x90\x8e\xcb\xa2\x89\x9e\x99P\x00\x22\xd6K\x8c*\
|
||||||
|
\xca\xa53\xf7io\xa1\xfb\xfe\x8ee9#i\xca\x89\
|
||||||
|
\xe1\x9c\xbd\xbaG\x1c.\xc0r\x03I\xe1\x9a\x89~^\
|
||||||
|
T\x00=\xae\x9c\x0b|\xdc\xca\xa9rC\xd2\xd7\x07\x86\
|
||||||
|
\xbeOe\xf4\x1aB\xe8\x09\x9au\x9d \xd9\xa7\x1b\xc0\
|
||||||
|
\xec\xfd~\x04\xa7\xf6$\xa4h8~Q\x01\x88L\xac\
|
||||||
|
\x9c\x09\xd8\xdc?\xc0?\x8d\xfd\xb0\xd0\x13\xb4\x86\x03K\
|
||||||
|
\xf6\xf8\xac\x02\xac\xce\x09\x88Rt\x12=\xae\x00v\xc6\
|
||||||
|
\xe54\xe0xKg\x7f_,MJk8\xb0\xa7\x10\
|
||||||
|
\x11\xfc\x15\x82|\x03\xa6,\xf6:e\xdc8\xcdq\x05\
|
||||||
|
\x90\x87+,\x9c\x80rO\xa9m\xdd\xc2pP\xb1\x08\
|
||||||
|
\x9aq\x9d \x95\xd1'\x81;\xad\x8cs\x5c9\xde\xc7\
|
||||||
|
\xef[\x07\xe8u\xe5C9a3\xe6\xab~>\xc2Q\
|
||||||
|
\xe5\xc6\xf0\x15\xba\xf1\xab\x0c}\x8cGS\xad\x13\xec\x9a\
|
||||||
|
*\xc9l\x8e\xcd\x98\xbf\x9a\xe7\xdb\xe0\x88\xae\x8c\xbe9\
|
||||||
|
\xf2\xc3\xf7\xf5\x009\xe1Rl\x96|\x85[M\x028\
|
||||||
|
[\xc3\x81\x1d3\xf6kZ\x95[,L\x9d\x1c,\x1b\
|
||||||
|
\xfb\xe1\xe8\x1e@\xa4\xddsy\x1bH\x19\x16\xee\xe7\x84\
|
||||||
|
\xf9\xa5V\x9d\xc6\xc3\x8b\xcbu\xc0\xb7L\xed\xc6\xd2L\
|
||||||
|
\xf1\x04\x85H\xe3-\x98\x9f;H\xa7|\xe6\xa0:8\
|
||||||
|
\xf4\xc1\xa8\x1e \x1d\xe3,\xcc\x1b\x1f\x84[m\x1a\x1f\
|
||||||
|
Zs\x02\x1b\xba\xf6\xebN\x15~ja\x9a\xf4b\x9c\
|
||||||
|
6\xf2\x83Q\x02P\xe1\x02\x8bBs\x8a\xf5z5\xd0\
|
||||||
|
Z'\xb0A\x94\xeb\x81\xc1\x92\x0f\x8e\xb5\x93\xd1q\x9c\
|
||||||
|
\xc3\x02x]$\x86p\x9ei\x81*\xac\x0d\xe3\xb8V\
|
||||||
|
k\x9d\xc0\x8cB\xe8\x97\xf1>\x81\xc2\xf9#C\xc9\x87\
|
||||||
|
\x05\xd0\x19c\x91U\x06\xce<\xb7\x19\xdb\x14\xa151\
|
||||||
|
4C\x95;,\xcc\x0e>\xc8\xe5\x94\xa1o\x0e\x0c\x01\
|
||||||
|
\x0eg[\x14\xe6u\x0f\x10j8wkNP>\x85\
|
||||||
|
\xdf\xfdNS;\xd1\x03m}@\x00j!\x00eu\
|
||||||
|
\x14G\xb4[s\x822Q\xcd\x8ap\xb7\xb1\x9d0\x1c\
|
||||||
|
B\xee@\x90r\x1d8\xca\xa2\xa0{\x8dm\xca\xa45\
|
||||||
|
'(\x13\xe1\xe7\x16V\xc7\xec\x9a*I(\x08\xc0\xb1\
|
||||||
|
\x8b\xf4}'\xe5\xf3\x8c\x85]\xd9\xb4\xe6\x04\xa5I\xf6\
|
||||||
|
\xf3\x02\x16\xc3@6\x1f$\xecr\x00\x04N4-@\
|
||||||
|
\xe1\xbej\xa4ei\xcd\x09J\xa0\xaa\x0aO\x18\xdb\x8d\
|
||||||
|
\x14\x00j\x9e\xd1C\xa0jyn[s\x82\x89\x11\xe5\
|
||||||
|
Qs\xa3 /\xb3\x83\x88`qf\xbd\x0d\xfe\xd7\xd8\
|
||||||
|
i\x05\xb4\x86\x83\xe2\xe4\x83\xe4\x9bf\x08\xc7!\x22\xb2\
|
||||||
|
\xd3e^\x0eL/4\xd8\x9d\xf2\xe9\xaa\xc5\x05J\xad\
|
||||||
|
]\xc4\xf1\xf1\xe2\xb2\x1d8\xd4\xd0l\xae\xa3\xca1\x16\
|
||||||
|
\xfe\x9e\xaf\xd5\xedY\xad\xb7\x83\xa2\xbcdl\xa1\x1c\xed\
|
||||||
|
\xe4\xe0p\x0bg/Z\xd8\x84FK\x04\xe3 l2\
|
||||||
|
7a\x9eS\xb8W\xcf\x085\x1f2B\xa75'\x18\
|
||||||
|
\x8d\xe4\xcd\x05\x90\x87\xb9\x0e0\xc7\xd4\xd0\xb1\x8cS\x0f\
|
||||||
|
\x9b\xd6\xdb\xc1\x01\xc4\xa2\x07@8\xcc)\xdc\xa8i\xca\
|
||||||
|
\x16\x0b\x9bHh\x0d\x07\x01Y\xe1\xb7\xa66\x023\x1c\
|
||||||
|
\xcc\xb3x\xe7\x92~(G\xbeB\xa3%\x02\xc8d\xcc\
|
||||||
|
\xf3\x0a\x880\xddF\x00}u\x93\xa3w\x04\xcd.\x82\
|
||||||
|
B(\xbe\xd1\xe9!U\xa6;\x08\x09C_\xfd\x86\xcf\
|
||||||
|
W\x8d\xd6\xc4\x10\xd3\xa4\x91\x09\x075\xcel\xddg\xf8\
|
||||||
|
|Ui\xf2\xbd\x83}\x86\xcf\xc7\x1c\x0cS\x9b\x8b\xd4\
|
||||||
|
\xb7\x00\xa0\xa9E`%\x00#\xb4zib*\xa2)\
|
||||||
|
E \xe6\xc7\xc6\x1cL\x8f\x1dk\xe3\xdc\xf3\xd7t\x22\
|
||||||
|
P\xe3\xd3B\x03\x0eb|\xee\xbcV\xa9b\xach2\
|
||||||
|
\x11t\x1a>?\xe0\x88\x1a\x8f\xe9\x0d\xd3\x03\x0c\xd1D\
|
||||||
|
+\x86\xa6ot}\x8e\x06)FM\x88U\x9a\xa2\xbc\
|
||||||
|
\x16L\xfau\x82 -\x9c\x91\x00D\xf8\x9dCp\xe5\
|
||||||
|
\x9a\x11\xd3\x12\xe1\xa7\x8a\xad\x06\x93Y\x04\xbd.\xb31\
|
||||||
|
\xcc\xfc\x9aWv;\xa8\xb9\x00:\xf2\xa1\xde\x0bTU\
|
||||||
|
&\xab\x08\x06\xed\xb6\xf5w;\x80\xf1\x9d<\xaa\x16!\
|
||||||
|
\xe4u\xc4d\x5c1t,\x04\xe0([\x1d\xb5\xdb\xd9\
|
||||||
|
kh\x01\xc0\xa4\x9c\x18\xda\xf4\x00[\x9d6\x9b\xbd}\
|
||||||
|
i|\x01\xc0\xa4\x1b\x0e\x16\x98\x1a(lqD\xd8h\
|
||||||
|
\xe1\xec8\x0b\x9b\xbadR\x88 \x88\xec6O\xe9\xe7\
|
||||||
|
\xb0\xd1\xe9\xf2\xd9\x82\xf9E\x05\xb3{]\xa9\xf8\xc2\xa3\
|
||||||
|
z\xa1\xd1\xe7\x04=1\x8e\x04\x0e12R\xf6\xa62\
|
||||||
|
ls\x0a\xd1\xbd/\x9b:\xcd\xc9\xe8L\x13\x8dN#\
|
||||||
|
\xcf\x09D,\xfe\xfa\x85\x97QU\xa7\xf0\xcd\x06\x0b\xbf\
|
||||||
|
\x13\xe6\xa0mD\x1a\xb8'8\xcb\xd8By\x0e\x0e\x9c\
|
||||||
|
\x0d|\xda\xc2\xe9i\x85\xb1gR\xd1p{\x07\x22m\
|
||||||
|
`q\xb4\xdf\x09\xda\xdc\x01\x18\x14+\x01\xcc\xf4\x12\xe6\
|
||||||
|
3\xcfF\xa0\x91\x86\x83\xb4\xcbB\xcc\xc3\xfahs\x82\
|
||||||
|
\x93\xdd\x0e@\xe1f\xee\xd7\x8c\xbd\xe7\xb8\xc4\xd8\xa6A\
|
||||||
|
h\x94\xb7\x03U\xce\xb50{\xa5k\xbf\xee\x84\xd1\x19\
|
||||||
|
B\xd6\x19\x17#\x5clzMY#Q\xf7s\x82\xe0\
|
||||||
|
.\xa7\x0bM\xcdTY;\xf4\xef\x91\x9b\x07\xe6\x02\x80\
|
||||||
|
\xaet\x8c3-\xec\x1a\x86z\x9e\x13xq\xceU\xe8\
|
||||||
|
6\xb5S9\xd0\xd6\xc3\x02\xe8\x1b\xe0q\x94\xbd\xa6\x85\
|
||||||
|
\xe5\x85/\x9a\xda4\x1au;'P\xbela\xb5\xe7\
|
||||||
|
]\x9f\xf5C\xdf\x0c\x0b`\xbe\xea\x80M\xce\x1f\x81\xf3\
|
||||||
|
\xbd\x84\x18\x1f/k4\xeamN\xd0\x1b\x97y\xc0\x19\
|
||||||
|
\xa6v\x02k\x0a\xa9\xe7\x811\xfb\xc7\xa2\xfc\xc2\xa2.\
|
||||||
|
S\x04\x96[\xd85\x1c\xf54'\xc8\xc1?bq\xf9\
|
||||||
|
w^\xb9k\xe4\xf7\xefK\x16\x9dvy\xcbb\x5c\xf1\
|
||||||
|
;\x1c\xe6}\xb0O=\xd3\x0a5\x22\xb5Np]\xb8\
|
||||||
|
\xcao3\x1034\xf5\x0a\xc9\xa2\x87Ov\x8dV\x90\
|
||||||
|
jV\xe1v\xd3\x0a\x01n6\xdf<W\xc0\xd7zb\
|
||||||
|
(\xf0M\xcc\x1b\x1f\xe0'c\x8f\xf5\x85ya\xc4\xbe\
|
||||||
|
\xb66\x8e\x18z\xbfl\x06j\x91\xae&\x1d\x97\xb9\x1a\
|
||||||
|
\xac\xd9\x98\x0a \xef\xc0\xfc\x99\x19\x1d\x15\xff\xf1\xbe1\
|
||||||
|
\xa4\xcb\xd77Tx`\xec\xe7e0-\x97\xe3z\x0b\
|
||||||
|
\xbb\x86\xa5\x16s\x02\x15n\xc2\xe6\xaf_\xb8ol\xe3\
|
||||||
|
C\x91I\x84\xa3\xdc`\xec `i\xa9\x8b\x0a'\x1b\
|
||||||
|
\xd5\x1c\x0e<W\xceB\xcd3\xba\x03(\x8c[v\xd1\
|
||||||
|
\xbb\x83\xbd\xb8l\x00\xf3\xfc\x81\xc0+)\x9f\x8f\x8e\xbc\
|
||||||
|
\x95\xa2\x19\x88z8\xd8*\xe2\xc6\x5c^\x01\xe6\x99\x16\
|
||||||
|
\xa8\xf0lwF?9\xde\xcf\x8a\xbeF\xa8r\x9d\xa9\
|
||||||
|
\xa3\x02\xc7zq\xcb[\xc7\x1a\x98\xa8\xd7\x09b1V\
|
||||||
|
`\xd1\xf8\x00\xa2\xc5/\x9d\x9c\xf0\xf6p/.\xcf\x02\
|
||||||
|
\x9f\xb0\xf09\x98\x17>uh\xbfV5\x99d=\x10\
|
||||||
|
\xc5+\xa2\xe7\xcaY\x08k\xb1;\x98\xfbL*\xa3E\
|
||||||
|
o\x0e\x9dP\x00=q9]\xe0a\x0b\xa7\x00[\x07\
|
||||||
|
c,\x98\xb3W\xf7X\xda7,a\x0e\x07mm\xdc\
|
||||||
|
\x9c\xcb\xf1\x1b`\xa6M\x01\x02\x8b\x92\x19}\xbc\xe8\xcf\
|
||||||
|
K\xe5{\xf4\xe2r7\xf0\x176\xceQ\xd6\xa4\x06X\
|
||||||
|
R\xab\xa4\x92\xb5$D\x11l\x07f\xd9\x18\x0a\xdc\x95\
|
||||||
|
\xcc\xe8E\x13>S\xaamv$d\x96\xa3l\xc4\xf6\
|
||||||
|
P\xa8pE\xaa_K\xdec?\x19\x09Q\x046\xbc\
|
||||||
|
\x97u8\xba\x10\xebQ\x94\x92k\xc9\x87\xf6\xebv\x11\
|
||||||
|
\xeb\x09!(\xab\xbc\xb8,\xb5\xb6o`B\x5c'0\
|
||||||
|
G\xb8\xb6T\xe3C\x19=@\xf0\x94\xb4{q^@\
|
||||||
|
\xf9#\xcb\xea\x0c\xa2\x9c\x93\xf2\xf5\xbf-\xed\x1b\x9a\xb0\
|
||||||
|
&\x86\x06\xbc\x9c\xf2YP\xce\xabxy\xbbI\xaaY\
|
||||||
|
\x94\xaf\x03y\xcb\x0au \xfc\x87\xd7)V7\x927\
|
||||||
|
:a\xc5\x13\x94I^\x85\xaf\x94\xbb\x0eS\xf6vb\
|
||||||
|
*\xa3\xebQn\xb2\xaf\x17\xd3\xc8\xb3\xb6\x89E\x10\xd6\
|
||||||
|
:A)Vt\xf7k\xd9A\xbe\xe5\x0d\x01\x05^\x17\
|
||||||
|
\x89u\xc6x\x16\xe1\x8f\xad\xaa\x16\xd0\x87\xb2\xa45\x1c\
|
||||||
|
D\xc2\x93)\x9fO\x9b$\xf24\x0a(\x98\xaf:\x80\
|
||||||
|
r1\xe6\xe9\xc8F\xd2\x89\xf0_=\x09\xf9|\xe9G\
|
||||||
|
'\x1f\x11\x0e\x07\xbdY\x87\x8bL\xb3\xb8\x1aG\x94\xa4\
|
||||||
|
\x06\xf4U\x11\x96\x81yJ\xb2\x11L\x11e\xb5\x97\x90\
|
||||||
|
\xcb'\xe3\xe1\x92RD0\x1c\xe4Q\xbeX\xce\xac\x7f\
|
||||||
|
,\xc6\x02\x00H\xf6\xeb/\x85\x8a\xb7~\x1d\x94\x1b\xbc\
|
||||||
|
\x18\xff\xf9\xf6Arp\x85e5\x1cmm\xdc\x0c\xa1\
|
||||||
|
%\xdd^a;\xa4\x1a\xcd\x01F[\x8ax.?\x05\
|
||||||
|
\xfe\xd2\xae\x80QlS\xe1\xc2\xee~\x8d\xf4\x1e\xc2z\
|
||||||
|
\xa1\xb0\xc4~;\x90\x0a\xa1\xb8\xd5)\x9f\xa5\xa8Z\xbd\
|
||||||
|
\xa1Y\xf5\x00\x00\xa8\xea\x1e\x9f/\x03\x0fY\x97q\x80\
|
||||||
|
\xd9\xa2<\xee\xc5\xe5\xaa\xc9|\xd0d\xab\x88\xeb\xb9r\
|
||||||
|
\xa3\x04\xbf\xb30\x1a\x7f]\xca\xe7\xafl\x1b\x1f*\xe9\
|
||||||
|
\x01\x0ax\x22\x09\x5c\x1e\xc6\xe2\xf2\xc9\x22lF\xf9\xdb\
|
||||||
|
\x94\xafa\x08\xabn\xd8\x11\x97O;\xf0o\xc0\x87C\
|
||||||
|
*rC\xbb\xcfi3TM3\x84\x8f\xa2b\x01\x00\
|
||||||
|
\xa4\xa7\xc9\x0c\xcd\xb2\x9eps\x07\xad\xeepX\xde\xe8\
|
||||||
|
\x91\xc6\xe9\xb8\xccU\xe1&\xdbH\x9e\x22\xbcF\x07'\
|
||||||
|
\xa7\xdeS\xe3\x0coc\x09E\x00\x00^B\xe6\xa0<\
|
||||||
|
D\xb8\x22\xd8\xaf\xca-\x1d\xed\xdc0c\xbf\xa6C,\
|
||||||
|
7rz\x122\x1b\xb8R\x94\xbf\xc6.\x82\xb7\x18\xaf\
|
||||||
|
\xa9pfw\xbfn\x0b\xa3\xb0\xd0\x04\x00\xc3=\xc1\x03\
|
||||||
|
\x10\x5cK\x1a\x22\xbe\x0a?\x11ee*\xa3o\x85\x5c\
|
||||||
|
v\xa8\xec\x8c\xcb\xe1\xf9\xe0\xd0\xc62\x0cS\xf1\x97\xc1\
|
||||||
|
st\xf0\xb90\xfe\xf2\x87\x08U\x00\x00\xbbD\xa6f\
|
||||||
|
]\xee\x81H\x0e\x8d\x0e\x02\xbfR\xe5\xe7\xdd\x03\xac\xab\
|
||||||
|
\x9b\xb8\xc3`\xb3\xec\x1c\x94\xbf!8\xaee?\xb9.\
|
||||||
|
\xce:\xc7\xe7\xcfg\xaa\x86z_C\xe8\x02\x00\xd8(\
|
||||||
|
2\xe5`\x97\x9f\x01\x13\x06#T\xc8.\x84;E\xb8\
|
||||||
|
#\xd9\xcf\x0bU\x0f:\x09NQ-T\xe5\x1c\x84\x8b\
|
||||||
|
\x08gV_\x8c;R>\xcb\xa2\x10|$\x02\x08J\
|
||||||
|
\x16\xc7s\xf9.p%\xd1_2\xd1\xab\xf0\xb8(\x8f\
|
||||||
|
\xe6\xe0\xd1Y\xben\x0e\xdd\x83\x88\xec\x88q\x84#|\
|
||||||
|
\x82\xa0w\xfb\x0c\xa6\x99\xb9\xcc\xc9\x03+R>\xd7D\
|
||||||
|
%\xf0\xe8\x04P \xed\xcab\x15n\x87\xaa&\x98\xde\
|
||||||
|
\x01\xbc\x84\xb0I\xf2l\x12aSV\xf8m&\xc3\xae\
|
||||||
|
\xc2\xedZ\xc5\x11\xe9\xe8u\x99=\x08\x87\x0b\xcc\x95 \
|
||||||
|
\x12\xf7\xa3\x04\xc1\xb1Q7\xf8Hv\xa1,\x8dz\xd3\
|
||||||
|
,r\x01\xc0pX\xd9j\xe0\xe4\xc8\x9d\x95f\x90\xe0\
|
||||||
|
v\xad\xbd\x08\xfb\x09\xd6\xd1\xa7\x11\x5c\x84\xe1\x02\x7fP\
|
||||||
|
\xcb\xca\x15x\x22\xebp\xb1\xcd\xda\xbe)U\x11@\xe0\
|
||||||
|
I\xdaz\x5c\xbe%\xc1Vh\x14\x93\xa4\xc9\x80\x22\xfc\
|
||||||
|
(\x95ay\xb5&\xb8\xd5\x13@\x01/!\x0b\x81\x1f\
|
||||||
|
\xa3\x93'\xddl\x18\x88\xf0\x7fy\xf8\x9aI0G(\
|
||||||
|
~k\x12\xb1-\xd2\xee\xc5\xb8\x8c \xd8\xb4\x1e\xba\xdc\
|
||||||
|
Z\xd2\xa7\xb0j\xaf\xcf\x8a\x91\x99;\xaaEm\x04P\
|
||||||
|
`w\xa7\xa4\x06\xf3\xfc\x10h\xca\xa8a\x15\xee'\xf8\
|
||||||
|
\xab\x0feU\xcf\x86\x9a\x0a`\x88t\x5cNU\xb8\x16\
|
||||||
|
8\xb5\xd6u\xa9\x12\xcf\x08\x5c=\xd1\x89\x9djQ\x17\
|
||||||
|
\x02\x18\xa2'!'\x89r5\xb0\xb8\xd6u\x89\x02\x85\
|
||||||
|
gE\xf9v\xcaW\x9b\x94|\x91PW\x02\x18\xc2\xeb\
|
||||||
|
\x94\x05\xe4\xb8\x1a\xe1|\x1a\xff\x8d!/\xc2\xfd\x0a+\
|
||||||
|
S\xfd\xfaT\xad+3\x96\xba\x14\xc0\x10;\x122K\
|
||||||
|
\xe0\x0b\xa2|\x158\xac\xd6\xf51\xc4\x13\xb8\xdd\x81[\
|
||||||
|
\xbb2\xfaf\xad+S\x8c\xba\x16\xc00\xc1[\xc3\xe9\
|
||||||
|
\x22\x5c\xa0p>P\xaf1\x84{\x04\xd6\xa8rwj\
|
||||||
|
\x80GP\xcd\xd5\xbaB\xa5h\x0c\x01\x8c`\xa3\xc8\x94\
|
||||||
|
\x83\x5cN\x11\xe5l\x84\xc5\xc015\xae\xd2\xcb\xaa\xac\
|
||||||
|
Sa\xdd\xbb>\xebk\xf1*W\x09\x0d'\x80\xb1\xec\
|
||||||
|
\x9a*\xc9l\x9e\x13\xc9\xb3\x10\xe1c\x08\xc7\xa1| \
|
||||||
|
\x12g\xc2\xbb(/\xa1l\xc0a}\x9b\xc33\x8d\x9e\
|
||||||
|
\x15\xad\xe1\x050\x1e^\x5c\x0eC9Z`^\x1e\xe6\
|
||||||
|
:\xc2\x1c\x85.\x11\xa6\xab2\x9d\xe0\x8a\xd5v\x0e\x1c\
|
||||||
|
y\xdf\x07d\x81~\x11\xdeQ\xe5\x1d\x81\x9dye\x9b\
|
||||||
|
\x03[\x14\xb6 \xbcZ\xef\xc1(6\xfc?\x14\xfa?\
|
||||||
|
\xdce\xbf\xf3&\x00\x00\x00\x00IEND\xaeB`\
|
||||||
|
\x82\
|
||||||
|
"
|
||||||
|
|
||||||
|
qt_resource_name = b"\
|
||||||
|
\x00\x06\
|
||||||
|
\x07\x03}\xc3\
|
||||||
|
\x00i\
|
||||||
|
\x00m\x00a\x00g\x00e\x00s\
|
||||||
|
\x00\x0d\
|
||||||
|
\x06\x0b\xf4\xa7\
|
||||||
|
\x00b\
|
||||||
|
\x00l\x00a\x00n\x00k\x00_\x001\x002\x008\x00.\x00p\x00n\x00g\
|
||||||
|
\x00\x0c\
|
||||||
|
\x0a\xf7\xc1\x07\
|
||||||
|
\x00n\
|
||||||
|
\x00o\x00n\x00e\x00_\x001\x002\x008\x00.\x00p\x00n\x00g\
|
||||||
|
"
|
||||||
|
|
||||||
|
qt_resource_struct = b"\
|
||||||
|
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
|
||||||
|
\x00\x00\x00\x00\x00\x00\x00\x00\
|
||||||
|
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\
|
||||||
|
\x00\x00\x00\x00\x00\x00\x00\x00\
|
||||||
|
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||||
|
\x00\x00\x01\x8db\xb8\xc9\xc8\
|
||||||
|
\x00\x00\x002\x00\x00\x00\x00\x00\x01\x00\x00\x01\xbc\
|
||||||
|
\x00\x00\x01\x8da\x99\x15\xcb\
|
||||||
|
"
|
||||||
|
|
||||||
|
def qInitResources():
|
||||||
|
QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||||
|
|
||||||
|
def qCleanupResources():
|
||||||
|
QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||||
|
|
||||||
|
qInitResources()
|
||||||
BIN
images/blank_128.png
Normal file
BIN
images/blank_128.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 440 B |
BIN
images/none_128.png
Normal file
BIN
images/none_128.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.4 KiB |
44
main.py
Normal file
44
main.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# coding: utf8
|
||||||
|
import sys
|
||||||
|
from PySide6 import QtWidgets
|
||||||
|
from wg_basic import WgBasic
|
||||||
|
from wg_software import WgSoftware
|
||||||
|
|
||||||
|
import daily_check_rc
|
||||||
|
|
||||||
|
|
||||||
|
class UiMainWindow(object):
|
||||||
|
|
||||||
|
def __init__(self, window: QtWidgets.QWidget):
|
||||||
|
window.resize(800, 600)
|
||||||
|
window.setWindowTitle("日常检查工具")
|
||||||
|
|
||||||
|
self.vly_m = QtWidgets.QVBoxLayout()
|
||||||
|
window.setLayout(self.vly_m)
|
||||||
|
|
||||||
|
self.tw_m = QtWidgets.QTabWidget(window)
|
||||||
|
self.vly_m.addWidget(self.tw_m)
|
||||||
|
|
||||||
|
self.wg_basic = WgBasic(window)
|
||||||
|
self.wg_software = WgSoftware(window)
|
||||||
|
|
||||||
|
# self.tw_m.addTab(self.wg_basic, "基本信息")
|
||||||
|
self.tw_m.addTab(self.wg_software, "已安装软件")
|
||||||
|
|
||||||
|
|
||||||
|
class MainWindow(QtWidgets.QWidget):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
self.ui = UiMainWindow(self)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
|
win = MainWindow()
|
||||||
|
win.show()
|
||||||
|
return app.exec()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
86
util_func.py
Normal file
86
util_func.py
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# coding: utf8
|
||||||
|
import os
|
||||||
|
import wmi
|
||||||
|
import json
|
||||||
|
import win32gui
|
||||||
|
import requests
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
from PySide6.QtCore import QDir, QSettings
|
||||||
|
from PySide6.QtGui import QImage, QIcon, QPixmap
|
||||||
|
|
||||||
|
|
||||||
|
def get_isp_name() -> str:
|
||||||
|
req = requests.get("https://ipinfo.io/")
|
||||||
|
if req.status_code == 200:
|
||||||
|
try:
|
||||||
|
data = json.loads(req.content)
|
||||||
|
return data.get("org", "[Not found]")
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
return "[Decode Error]"
|
||||||
|
return "[Return Error]"
|
||||||
|
|
||||||
|
|
||||||
|
def get_win_manufacturer() -> list[str]:
|
||||||
|
w = wmi.WMI()
|
||||||
|
cs_ls = w.Win32_ComputerSystem()
|
||||||
|
if len(cs_ls) > 0:
|
||||||
|
cs = cs_ls[0]
|
||||||
|
return [cs.model, cs.Manufacturer]
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def get_win_license() -> str:
|
||||||
|
temp_out = str(Path(QDir.tempPath(), "lic.txt"))
|
||||||
|
return_code = subprocess.call(
|
||||||
|
rf'cscript /Nologo /U "C:\Windows\System32\slmgr.vbs" /dlv >{temp_out}',
|
||||||
|
shell=True,
|
||||||
|
)
|
||||||
|
if return_code == 0:
|
||||||
|
with open(temp_out, "r", encoding="utf-16-le") as f:
|
||||||
|
return f.read()
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
def get_win_installed_software() -> dict[str, str]:
|
||||||
|
|
||||||
|
def gather_software(path: str, software_dict: dict[str, str]):
|
||||||
|
reg = QSettings(path, QSettings.Format.NativeFormat)
|
||||||
|
soft = reg.childGroups()
|
||||||
|
for s in soft:
|
||||||
|
c = QSettings(path + "\\" + s.split("/")[0], QSettings.Format.NativeFormat)
|
||||||
|
name = str(c.value("DisplayName"))
|
||||||
|
if name == "None":
|
||||||
|
continue
|
||||||
|
icon = str(c.value("DisplayIcon"))
|
||||||
|
software_dict[name] = icon
|
||||||
|
|
||||||
|
all_software = {}
|
||||||
|
gather_software(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", all_software)
|
||||||
|
gather_software(r"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall", all_software)
|
||||||
|
gather_software(r"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall", all_software)
|
||||||
|
|
||||||
|
return all_software
|
||||||
|
|
||||||
|
|
||||||
|
def extract_win_icon_from_file(icon: str, default: QIcon) -> QIcon:
|
||||||
|
if icon == "None":
|
||||||
|
return default
|
||||||
|
if icon.endswith(",0"):
|
||||||
|
icon = icon[:-2]
|
||||||
|
icon = icon.replace('"', "")
|
||||||
|
icon = icon.replace("'", "")
|
||||||
|
if not os.path.exists(icon):
|
||||||
|
return default
|
||||||
|
if not icon.endswith(("exe", "EXE")):
|
||||||
|
return QIcon(icon)
|
||||||
|
|
||||||
|
large, small = win32gui.ExtractIconEx(icon, 0)
|
||||||
|
if len(small) > 0:
|
||||||
|
win32gui.DestroyIcon(small[0])
|
||||||
|
if len(large) > 0:
|
||||||
|
image = QImage.fromHICON(large[0])
|
||||||
|
return QIcon(QPixmap(image))
|
||||||
|
else:
|
||||||
|
return default
|
||||||
|
|
||||||
63
wg_basic.py
Normal file
63
wg_basic.py
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# coding: utf8
|
||||||
|
from PySide6 import QtWidgets
|
||||||
|
from util_func import (
|
||||||
|
get_isp_name,
|
||||||
|
get_win_manufacturer,
|
||||||
|
get_win_license,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class UiWgBasic(object):
|
||||||
|
|
||||||
|
def __init__(self, window: QtWidgets.QWidget):
|
||||||
|
self.vly_m = QtWidgets.QVBoxLayout()
|
||||||
|
window.setLayout(self.vly_m)
|
||||||
|
|
||||||
|
self.gbx_isp = QtWidgets.QGroupBox("网络运营商", window)
|
||||||
|
self.vly_m.addWidget(self.gbx_isp)
|
||||||
|
self.vly_gbx_isp = QtWidgets.QVBoxLayout()
|
||||||
|
self.gbx_isp.setLayout(self.vly_gbx_isp)
|
||||||
|
|
||||||
|
self.lne_isp = QtWidgets.QLineEdit(self.gbx_isp)
|
||||||
|
self.lne_isp.setReadOnly(True)
|
||||||
|
self.vly_gbx_isp.addWidget(self.lne_isp)
|
||||||
|
|
||||||
|
self.gbx_manu = QtWidgets.QGroupBox("系统制造商", window)
|
||||||
|
self.vly_m.addWidget(self.gbx_manu)
|
||||||
|
self.hly_gbx_manu = QtWidgets.QHBoxLayout()
|
||||||
|
self.gbx_manu.setLayout(self.hly_gbx_manu)
|
||||||
|
self.lb_model = QtWidgets.QLabel("型号:", self.gbx_manu)
|
||||||
|
self.lne_model = QtWidgets.QLineEdit(self.gbx_manu)
|
||||||
|
self.lne_model.setReadOnly(True)
|
||||||
|
self.lb_manufacturer = QtWidgets.QLabel("制造商:", self.gbx_manu)
|
||||||
|
self.lne_manufacturer = QtWidgets.QLineEdit(self.gbx_manu)
|
||||||
|
self.lne_manufacturer.setReadOnly(True)
|
||||||
|
self.hly_gbx_manu.addWidget(self.lb_model)
|
||||||
|
self.hly_gbx_manu.addWidget(self.lne_model)
|
||||||
|
self.hly_gbx_manu.addWidget(self.lb_manufacturer)
|
||||||
|
self.hly_gbx_manu.addWidget(self.lne_manufacturer)
|
||||||
|
|
||||||
|
self.gbx_license = QtWidgets.QGroupBox("许可证", window)
|
||||||
|
self.vly_m.addWidget(self.gbx_license)
|
||||||
|
self.vly_gbx_license = QtWidgets.QVBoxLayout()
|
||||||
|
self.gbx_license.setLayout(self.vly_gbx_license)
|
||||||
|
self.pte_license = QtWidgets.QPlainTextEdit(self.gbx_license)
|
||||||
|
self.vly_gbx_license.addWidget(self.pte_license)
|
||||||
|
self.pte_license.setReadOnly(True)
|
||||||
|
|
||||||
|
# self.vly_m.addStretch(1)
|
||||||
|
|
||||||
|
|
||||||
|
class WgBasic(QtWidgets.QWidget):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
self.ui = UiWgBasic(self)
|
||||||
|
|
||||||
|
self.ui.lne_isp.setText(get_isp_name())
|
||||||
|
model, manufacturer = get_win_manufacturer()
|
||||||
|
self.ui.lne_model.setText(model)
|
||||||
|
self.ui.lne_manufacturer.setText(manufacturer)
|
||||||
|
|
||||||
|
self.ui.pte_license.setPlainText(get_win_license())
|
||||||
|
|
||||||
93
wg_software.py
Normal file
93
wg_software.py
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# coding: utf8
|
||||||
|
from PySide6 import QtWidgets, QtCore, QtGui
|
||||||
|
from util_func import (
|
||||||
|
get_win_installed_software,
|
||||||
|
extract_win_icon_from_file,
|
||||||
|
)
|
||||||
|
|
||||||
|
SoftwareStatusRole = 0x0101
|
||||||
|
|
||||||
|
|
||||||
|
class UiWgSoftware(object):
|
||||||
|
|
||||||
|
def __init__(self, window: QtWidgets.QWidget):
|
||||||
|
self.vly_m = QtWidgets.QVBoxLayout()
|
||||||
|
window.setLayout(self.vly_m)
|
||||||
|
|
||||||
|
self.hly_top = QtWidgets.QHBoxLayout()
|
||||||
|
self.vly_m.addLayout(self.hly_top)
|
||||||
|
self.cbx_safe = QtWidgets.QCheckBox("安全", window)
|
||||||
|
self.cbx_unsafe = QtWidgets.QCheckBox("不安全", window)
|
||||||
|
self.cbx_unknown = QtWidgets.QCheckBox("未知", window)
|
||||||
|
self.cbx_safe.setChecked(True)
|
||||||
|
self.cbx_unsafe.setChecked(True)
|
||||||
|
self.cbx_unknown.setChecked(True)
|
||||||
|
self.pbn_import_filter = QtWidgets.QPushButton("导入过滤文件", window)
|
||||||
|
self.pbn_export_unknown = QtWidgets.QPushButton("导出未知", window)
|
||||||
|
self.hly_top.addWidget(self.cbx_safe)
|
||||||
|
self.hly_top.addWidget(self.cbx_unsafe)
|
||||||
|
self.hly_top.addWidget(self.cbx_unknown)
|
||||||
|
self.hly_top.addStretch(1)
|
||||||
|
self.hly_top.addWidget(self.pbn_import_filter)
|
||||||
|
self.hly_top.addWidget(self.pbn_export_unknown)
|
||||||
|
|
||||||
|
self.lv_software = QtWidgets.QListView(window)
|
||||||
|
self.vly_m.addWidget(self.lv_software)
|
||||||
|
|
||||||
|
|
||||||
|
class SoftwareListModel(QtCore.QAbstractListModel):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
self.all_software = get_win_installed_software()
|
||||||
|
self.all_software_wz_qic = {}
|
||||||
|
for s in self.all_software:
|
||||||
|
self.all_software_wz_qic[s] = extract_win_icon_from_file(
|
||||||
|
self.all_software[s],
|
||||||
|
QtGui.QIcon(":/images/blank_128.png")
|
||||||
|
)
|
||||||
|
self.names = sorted(self.all_software.keys(), key=lambda x: x.lower())
|
||||||
|
self.filter_dict = {}
|
||||||
|
|
||||||
|
def rowCount(self, parent: QtCore.QModelIndex = ...):
|
||||||
|
return len(self.names)
|
||||||
|
|
||||||
|
def data(self, index: QtCore.QModelIndex, role: int = ...):
|
||||||
|
row = index.row()
|
||||||
|
name = self.names[row]
|
||||||
|
|
||||||
|
if role == QtCore.Qt.ItemDataRole.DisplayRole:
|
||||||
|
return name
|
||||||
|
if role == QtCore.Qt.ItemDataRole.DecorationRole:
|
||||||
|
return self.all_software_wz_qic[name]
|
||||||
|
if role == SoftwareStatusRole:
|
||||||
|
if name not in self.filter_dict:
|
||||||
|
return -1
|
||||||
|
else:
|
||||||
|
return self.filter_dict[name]["safe"]
|
||||||
|
|
||||||
|
|
||||||
|
class WgSoftware(QtWidgets.QWidget):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
self.ui = UiWgSoftware(self)
|
||||||
|
|
||||||
|
self.software_list_model = SoftwareListModel(self)
|
||||||
|
self.ui.lv_software.setModel(self.software_list_model)
|
||||||
|
|
||||||
|
self.ui.pbn_export_unknown.clicked.connect(self.on_pbn_export_unknown_clicked)
|
||||||
|
|
||||||
|
def on_pbn_export_unknown_clicked(self):
|
||||||
|
unknown_software = {}
|
||||||
|
sl_model = self.ui.lv_software.model() # type: SoftwareListModel
|
||||||
|
for r in range(sl_model.rowCount()):
|
||||||
|
idx = sl_model.index(r)
|
||||||
|
name = sl_model.data(idx, QtCore.Qt.ItemDataRole.DisplayRole)
|
||||||
|
safe = sl_model.data(idx, SoftwareStatusRole)
|
||||||
|
if safe == -1:
|
||||||
|
unknown_software[name] = {"safe": -1}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user