qcanvas 1.2.0__py3-none-any.whl → 2026.1.19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. qcanvas/__init__.py +60 -0
  2. qcanvas/app.py +72 -0
  3. qcanvas/backend_connectors/frontend_resource_manager.py +13 -5
  4. qcanvas/backend_connectors/qcanvas_task_master.py +2 -2
  5. qcanvas/icons/__init__.py +5 -5
  6. qcanvas/icons/_icon_type.py +1 -1
  7. qcanvas/icons/icons.qrc +39 -35
  8. qcanvas/icons/rc_icons.py +1298 -1197
  9. qcanvas/settings/__init__.py +6 -0
  10. qcanvas/{util/settings → settings}/_client_settings.py +4 -4
  11. qcanvas/settings/_course_settings.py +54 -0
  12. qcanvas/{util/settings → settings}/_mapped_setting.py +2 -5
  13. qcanvas/{util/settings → settings}/_ui_settings.py +5 -5
  14. qcanvas/theme.py +101 -0
  15. qcanvas/ui/course_viewer/content_tree.py +9 -12
  16. qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py +3 -3
  17. qcanvas/ui/course_viewer/course_tree/course_tree.py +9 -8
  18. qcanvas/ui/course_viewer/course_viewer.py +42 -56
  19. qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py +107 -29
  20. qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py +4 -4
  21. qcanvas/ui/course_viewer/tabs/constants.py +1 -0
  22. qcanvas/ui/course_viewer/tabs/content_tab.py +33 -39
  23. qcanvas/ui/course_viewer/tabs/file_tab/file_tab.py +4 -4
  24. qcanvas/ui/course_viewer/tabs/file_tab/file_tree.py +7 -10
  25. qcanvas/ui/course_viewer/tabs/file_tab/pages_file_tree.py +6 -7
  26. qcanvas/ui/course_viewer/tabs/mail_tab/mail_tab.py +50 -27
  27. qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py +7 -8
  28. qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py +3 -3
  29. qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py +5 -5
  30. qcanvas/ui/course_viewer/tabs/resource_rich_browser.py +18 -32
  31. qcanvas/ui/course_viewer/tree_widget_data_item.py +1 -1
  32. qcanvas/ui/memory_tree/_tree_memory.py +45 -42
  33. qcanvas/ui/memory_tree/memory_tree_widget.py +22 -18
  34. qcanvas/ui/memory_tree/memory_tree_widget_item.py +3 -3
  35. qcanvas/ui/qcanvas_window/__init__.py +1 -0
  36. qcanvas/ui/{main_ui → qcanvas_window}/course_viewer_container.py +10 -10
  37. qcanvas/ui/{main_ui → qcanvas_window}/options/auto_download_resources_option.py +5 -5
  38. qcanvas/ui/{main_ui → qcanvas_window}/options/quick_sync_option.py +7 -6
  39. qcanvas/ui/{main_ui → qcanvas_window}/options/sync_on_start_option.py +7 -6
  40. qcanvas/ui/{main_ui → qcanvas_window}/options/theme_selection_menu.py +10 -10
  41. qcanvas/ui/{main_ui → qcanvas_window}/qcanvas_window.py +57 -41
  42. qcanvas/ui/{main_ui → qcanvas_window}/status_bar_progress_display.py +5 -6
  43. qcanvas/ui/qml_components/__init__.py +4 -0
  44. qcanvas/ui/qml_components/attachments_pane.py +70 -0
  45. qcanvas/ui/qml_components/comments_pane.py +83 -0
  46. qcanvas/ui/qml_components/qml/AttachmentsList.ui.qml +15 -0
  47. qcanvas/ui/qml_components/qml/AttachmentsListDelegate.qml +77 -0
  48. qcanvas/ui/qml_components/qml/AttachmentsListModel.qml +19 -0
  49. qcanvas/ui/qml_components/qml/AttachmentsPane.qml +11 -0
  50. qcanvas/ui/qml_components/qml/CommentsList.ui.qml +15 -0
  51. qcanvas/ui/qml_components/qml/CommentsListDelegate.ui.qml +118 -0
  52. qcanvas/ui/qml_components/qml/CommentsListModel.qml +56 -0
  53. qcanvas/ui/qml_components/qml/CommentsPane.qml +11 -0
  54. qcanvas/ui/qml_components/qml/DecoratedText.ui.qml +44 -0
  55. qcanvas/ui/qml_components/qml/Spacer.ui.qml +7 -0
  56. qcanvas/ui/qml_components/qml/ThemedRectangle.qml +53 -0
  57. qcanvas/ui/qml_components/qml/__init__.py +3 -0
  58. qcanvas/ui/qml_components/qml/rc_qml.py +709 -0
  59. qcanvas/ui/qml_components/qml/rc_qml.qrc +16 -0
  60. qcanvas/ui/qml_components/qml_bridge_types.py +95 -0
  61. qcanvas/ui/qml_components/qml_pane.py +21 -0
  62. qcanvas/ui/setup/setup_checker.py +1 -1
  63. qcanvas/ui/setup/setup_dialog.py +28 -14
  64. qcanvas/util/auto_downloader.py +9 -7
  65. qcanvas/util/basic_fonts.py +2 -2
  66. qcanvas/util/context_dict.py +12 -0
  67. qcanvas/util/file_icons.py +11 -19
  68. qcanvas/util/layouts.py +5 -7
  69. qcanvas/util/paths.py +17 -6
  70. qcanvas/util/qurl_util.py +1 -1
  71. qcanvas/util/ui_tools.py +118 -8
  72. qcanvas/util/url_checker.py +1 -1
  73. qcanvas-2026.1.19.dist-info/METADATA +95 -0
  74. qcanvas-2026.1.19.dist-info/RECORD +92 -0
  75. {qcanvas-1.2.0.dist-info → qcanvas-2026.1.19.dist-info}/WHEEL +1 -1
  76. qcanvas-2026.1.19.dist-info/entry_points.txt +3 -0
  77. qcanvas/app_start/__init__.py +0 -59
  78. qcanvas/icons/_update_icons.py +0 -89
  79. qcanvas/icons/dark/actions/exit.svg +0 -3
  80. qcanvas/icons/dark/actions/mark_all_read.svg +0 -3
  81. qcanvas/icons/dark/actions/open_downloads.svg +0 -3
  82. qcanvas/icons/dark/actions/quick_login.svg +0 -3
  83. qcanvas/icons/dark/actions/sync.svg +0 -3
  84. qcanvas/icons/dark/branding/logo_transparent.svg +0 -303
  85. qcanvas/icons/dark/options/auto_download.svg +0 -3
  86. qcanvas/icons/dark/options/theme.svg +0 -3
  87. qcanvas/icons/dark/tabs/assignments.svg +0 -3
  88. qcanvas/icons/dark/tabs/mail.svg +0 -3
  89. qcanvas/icons/dark/tabs/pages.svg +0 -3
  90. qcanvas/icons/dark/tree_items/assignment.svg +0 -3
  91. qcanvas/icons/dark/tree_items/mail.svg +0 -3
  92. qcanvas/icons/dark/tree_items/module.svg +0 -3
  93. qcanvas/icons/dark/tree_items/page.svg +0 -3
  94. qcanvas/icons/light/actions/exit.svg +0 -3
  95. qcanvas/icons/light/actions/mark_all_read.svg +0 -3
  96. qcanvas/icons/light/actions/open_downloads.svg +0 -3
  97. qcanvas/icons/light/actions/quick_login.svg +0 -3
  98. qcanvas/icons/light/actions/sync.svg +0 -3
  99. qcanvas/icons/light/branding/logo_transparent.svg +0 -304
  100. qcanvas/icons/light/options/auto_download.svg +0 -3
  101. qcanvas/icons/light/options/ignore_old.svg +0 -3
  102. qcanvas/icons/light/options/include_videos.svg +0 -3
  103. qcanvas/icons/light/options/theme.svg +0 -3
  104. qcanvas/icons/light/tabs/assignments.svg +0 -3
  105. qcanvas/icons/light/tabs/mail.svg +0 -3
  106. qcanvas/icons/light/tabs/pages.svg +0 -3
  107. qcanvas/icons/light/tree_items/assignment.svg +0 -3
  108. qcanvas/icons/light/tree_items/mail.svg +0 -3
  109. qcanvas/icons/light/tree_items/module.svg +0 -3
  110. qcanvas/icons/light/tree_items/page.svg +0 -3
  111. qcanvas/icons/universal/branding/main_icon.svg +0 -325
  112. qcanvas/icons/universal/downloads/download_failed.svg +0 -23
  113. qcanvas/icons/universal/downloads/downloaded.svg +0 -23
  114. qcanvas/icons/universal/downloads/not_downloaded.svg +0 -23
  115. qcanvas/icons/universal/downloads/unknown.svg +0 -6
  116. qcanvas/icons/universal/tabs/assignments_new_content.svg +0 -3
  117. qcanvas/icons/universal/tabs/mail_new_content.svg +0 -3
  118. qcanvas/icons/universal/tabs/pages_new_content.svg +0 -3
  119. qcanvas/icons/universal/tree_items/semester.svg +0 -108
  120. qcanvas/run.py +0 -54
  121. qcanvas/ui/course_viewer/tabs/util.py +0 -11
  122. qcanvas/ui/main_ui/__init__.py +0 -0
  123. qcanvas/util/settings/__init__.py +0 -9
  124. qcanvas/util/themes/__init__.py +0 -2
  125. qcanvas/util/themes/_colour_scheme_helper.py +0 -38
  126. qcanvas/util/themes/_selected_theme.py +0 -10
  127. qcanvas/util/themes/_theme_changed_event.py +0 -17
  128. qcanvas/util/themes/_theme_changer.py +0 -86
  129. qcanvas-1.2.0.dist-info/METADATA +0 -71
  130. qcanvas-1.2.0.dist-info/RECORD +0 -118
  131. qcanvas-1.2.0.dist-info/entry_points.txt +0 -3
  132. /qcanvas/ui/{main_ui → qcanvas_window}/options/__init__.py +0 -0
@@ -0,0 +1,92 @@
1
+ qcanvas/__init__.py,sha256=J4gpVRrBBlMqeqyXPZj0uLc6g-0UCYgoQc72f8LjDks,1946
2
+ qcanvas/app.py,sha256=lWIzD7Cimw2yzGiGXka09i-7XMnG6kA8Pmzuwa17CXo,2097
3
+ qcanvas/backend_connectors/__init__.py,sha256=Wj8cmxQng3SSlmlXJyzHaPmvxbkauwsxINckPb7WuHc,108
4
+ qcanvas/backend_connectors/frontend_resource_manager.py,sha256=uzi8z2bNBdQoVkvtwxWo4qX5r0s13qmH5QL2t0vD0d8,1613
5
+ qcanvas/backend_connectors/qcanvas_task_master.py,sha256=G46WgM4LA9VGWUDe3cBfRqHEYrOqcM70UJ5ipwc8hm0,740
6
+ qcanvas/icons/__init__.py,sha256=RHBT64IkUdQQtSRRxsMU1uiYRPvUoTHJV01x9WXHepA,1965
7
+ qcanvas/icons/_icon_type.py,sha256=_Xq0qwz_4OsAOhT6_4lEWTFMsPSqKVRkmQjfXbJAeAE,904
8
+ qcanvas/icons/icons.qrc,sha256=ec-_Hiy2GOA0NOQCeyRpIhexTZk0_SSDxZlWSvSUgno,2084
9
+ qcanvas/icons/rc_icons.py,sha256=SZBFaQaLym2jkJ90csM-2W8TKWgBLMyRxnZUO0yAw_0,74285
10
+ qcanvas/settings/__init__.py,sha256=GPOgh9fzK0zGiJhIy7fWfXJZVE86i6DE-ZjQSqFunco,176
11
+ qcanvas/settings/_client_settings.py,sha256=6Oy5eXlttlwC11YSqbqLcgyVa5Nk3jBdB4Ea-gFC-yw,1397
12
+ qcanvas/settings/_course_settings.py,sha256=mNNPNt88f5q1m_YtoqaHDUqoAiRnVZj4wUGd0xDlcjY,1547
13
+ qcanvas/settings/_mapped_setting.py,sha256=a9wq60chtn9X8RLpQrf6JR7XsDxJlJfWrq0hfHHJvyU,1928
14
+ qcanvas/settings/_ui_settings.py,sha256=gyC_ZwPdu4JzZgA4I6TelJmm6pXginBigp58u-fBd3w,753
15
+ qcanvas/theme.py,sha256=7GVSpc1VCHxQiM7eamPNQJJKikVE8rejAsUFYOvsuaQ,3077
16
+ qcanvas/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ qcanvas/ui/course_viewer/__init__.py,sha256=XkoFnh4ULw3_i-GDsOlueEWido0PkoDcN9_EX6-nkXY,76
18
+ qcanvas/ui/course_viewer/content_tree.py,sha256=ewgi4oNN3uCURjykpLLRb2efzBxfFws14UAQ3H6z-64,4602
19
+ qcanvas/ui/course_viewer/course_tree/__init__.py,sha256=N2XorJ4COFHzRYx53noANb4_qJYf6N8_YCjPdQuDCHs,36
20
+ qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py,sha256=facgU1YPLpPy5C6EJG5KURuKTn7LOTu9ZmPEj-UQLFI,3080
21
+ qcanvas/ui/course_viewer/course_tree/course_tree.py,sha256=KaPVdvS2tPdMZFhggWCvg9DVSQugHS_EpGa12vgGNyw,3224
22
+ qcanvas/ui/course_viewer/course_viewer.py,sha256=AGZ6eQlRLb1i2ex-gbe2ygT3_sHYD7bvXy3tYQ2Jugc,4974
23
+ qcanvas/ui/course_viewer/tabs/__init__.py,sha256=SlfWUzk6_E5uM9GIV-y9BVeKMwqn3pRx_xWhMyb1dfI,54
24
+ qcanvas/ui/course_viewer/tabs/assignment_tab/__init__.py,sha256=w936dW7za10Fh6rN0zVA-7Kyiup3kd6C-mPAFHtxmy0,42
25
+ qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py,sha256=VJLs2BwgQSPM_3nB2iNAbHqRbkIxz04ejSzh3otmnqs,4849
26
+ qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py,sha256=Lwj3Sq_W_XFV240VpLK6W3kIUQ00NH9qB88mAKsYHNs,2908
27
+ qcanvas/ui/course_viewer/tabs/constants.py,sha256=rUVEGSREV9vTFs4o3AD2OjaSFA-GPsmelxYWz0J8OP4,48
28
+ qcanvas/ui/course_viewer/tabs/content_tab.py,sha256=l2h1Vl7t0GAFYXzEjihMzpBv596sOu8BJKiMz1lcFAE,3274
29
+ qcanvas/ui/course_viewer/tabs/file_tab/__init__.py,sha256=mMebnrNw_V-lQ-eBXS_kFinL-ZdUAXa459NmuyuCu6s,30
30
+ qcanvas/ui/course_viewer/tabs/file_tab/file_tab.py,sha256=SeKGKNRLmSmL5Ij96YSRx6Skl-1wC14uDfIPJy_xmzw,1398
31
+ qcanvas/ui/course_viewer/tabs/file_tab/file_tree.py,sha256=ely6qZTs6CFsKv9ZFDCAe_8unosJ6nt9AQFLkcuknvE,3357
32
+ qcanvas/ui/course_viewer/tabs/file_tab/pages_file_tree.py,sha256=C1QtoY9GA2Q_lbUearVrdZbHCAefV4ZpsIPHGBAUxPI,1875
33
+ qcanvas/ui/course_viewer/tabs/mail_tab/__init__.py,sha256=68iRUUWEP7mudbaxa4ZBKMra4rvs2oZKaZkBWwmUrsI,30
34
+ qcanvas/ui/course_viewer/tabs/mail_tab/mail_tab.py,sha256=FGfRaEAcuLfcPo92_D7ZcyeIjePMbU_BSlpAtyT0qLo,2686
35
+ qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py,sha256=w4dkC4V_fKsMkVB68vbfvMRI1HBxbuKzxExclAn-AaQ,1762
36
+ qcanvas/ui/course_viewer/tabs/page_tab/__init__.py,sha256=lcafxlSEVZ0wqZySxT6hTrvExX-GU2AfcZQbp6W8haU,30
37
+ qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py,sha256=-u6RaH7kO1cCrvcXNF0hcLrEL6nomy6IUXfKEGhANgg,743
38
+ qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py,sha256=mxQzhjiiO7onQALhKbcyQQtsKEdBGAspQreXljRu9i4,2147
39
+ qcanvas/ui/course_viewer/tabs/resource_rich_browser.py,sha256=BlUHqoNKu5vzmLIYjUJZX6APxeNA2bia4xRZ3B0gaqc,6479
40
+ qcanvas/ui/course_viewer/tree_widget_data_item.py,sha256=z3CnXNFivtDtKemkH41E0a_Dc-l_tKJ6AEqNqM23eao,569
41
+ qcanvas/ui/memory_tree/__init__.py,sha256=-XLitM6teC0zmwPrGf-Q-A53-zgmIPASExdOtaLIvPU,107
42
+ qcanvas/ui/memory_tree/_tree_memory.py,sha256=kPsAw0sL5AFPIhWuhfKSS56043t9pQFi2YpBdYkbfm0,2231
43
+ qcanvas/ui/memory_tree/memory_tree_widget.py,sha256=NT8T9EMql7xxVRCQFkfb1p0h3gL7oQq9As2UGy_481k,4553
44
+ qcanvas/ui/memory_tree/memory_tree_widget_item.py,sha256=76a7IEZGXwYhqx7WMbq-tA_GvinvQW7hdueZNWAvFxg,435
45
+ qcanvas/ui/qcanvas_window/__init__.py,sha256=GeMsShFH9OGYLDDgB0KmKHlJr32NeewxurM-QzgabSQ,42
46
+ qcanvas/ui/qcanvas_window/course_viewer_container.py,sha256=oEPdqnGU752JTY0p4HfSlFyNDw-12AW4JzgxZ1A31J0,3502
47
+ qcanvas/ui/qcanvas_window/options/__init__.py,sha256=SlfWUzk6_E5uM9GIV-y9BVeKMwqn3pRx_xWhMyb1dfI,54
48
+ qcanvas/ui/qcanvas_window/options/auto_download_resources_option.py,sha256=oeVdUsFUSrCRKKjb6eyjsJecaMSMnEKR66L9FTlm_Eo,1379
49
+ qcanvas/ui/qcanvas_window/options/quick_sync_option.py,sha256=16zEFL__JRi-wE7Q99_Bqi-OHEBhRgf5QlnVUOUX3Eg,833
50
+ qcanvas/ui/qcanvas_window/options/sync_on_start_option.py,sha256=gL_FIulULN1uGBJJWgUszyjayQDw5WfppjoErbM3850,773
51
+ qcanvas/ui/qcanvas_window/options/theme_selection_menu.py,sha256=VMx79H45R7lcpMFpaN8eohbCxkQkq43MdH8W0nt2aTQ,1434
52
+ qcanvas/ui/qcanvas_window/qcanvas_window.py,sha256=qNRtV2jIuhLEw2MWgKUxBYHDa9IFg65nA5e6XFr1nIM,9302
53
+ qcanvas/ui/qcanvas_window/status_bar_progress_display.py,sha256=v8cL7EzhKIO6YDo-IJGC2TvjnaHvHb9F2VyJtW0W4U8,5047
54
+ qcanvas/ui/qml_components/__init__.py,sha256=_qCJGhqDvxx8k4dIDgLFpKU7z-R7AS6HWPlsrUlAj2Q,203
55
+ qcanvas/ui/qml_components/attachments_pane.py,sha256=tg8YuSNM0wEIJ0GPDghJhIc1UVp7TaH-A4NispXx2XM,2353
56
+ qcanvas/ui/qml_components/comments_pane.py,sha256=JCuPuhWCeV1avxjWEvawSRaX8I3yJgewXdfuyN5_5Og,2980
57
+ qcanvas/ui/qml_components/qml/AttachmentsList.ui.qml,sha256=kEgdn1s490hfvMtDtbba54_-_vF-3GUIEVpB8D12ET0,483
58
+ qcanvas/ui/qml_components/qml/AttachmentsListDelegate.qml,sha256=Frcd-vMd6lXBICF8SpPdpGJgxrk4vasvK29uTxXKAcs,2115
59
+ qcanvas/ui/qml_components/qml/AttachmentsListModel.qml,sha256=y4pQoJLVrSAEdl8BkeKZrMBln0pCCfjotCCxcCS9L6w,516
60
+ qcanvas/ui/qml_components/qml/AttachmentsPane.qml,sha256=xH3vSn4pW7KG93TlJdUKQbk8jHCY5-DgQ58A4zxmRKs,174
61
+ qcanvas/ui/qml_components/qml/CommentsList.ui.qml,sha256=l8uqDrqIGVeOIAHnn4rwQQGiedFXAdMFANzvcHflCJo,477
62
+ qcanvas/ui/qml_components/qml/CommentsListDelegate.ui.qml,sha256=iI-8Byw9dEOcbB18kQ6LGBH9IMCdmoK4Ak2WgSxkx78,3172
63
+ qcanvas/ui/qml_components/qml/CommentsListModel.qml,sha256=oEffdqXiavoO4zcyBu8aqIlR-0IYDQKli3aKlGUxltg,2230
64
+ qcanvas/ui/qml_components/qml/CommentsPane.qml,sha256=_ETxcUBOKMPJrkmGqFMDR6XGf49MBiBIPV6mQyJwGVU,163
65
+ qcanvas/ui/qml_components/qml/DecoratedText.ui.qml,sha256=U4p_P6gXRBj1GKDe0azJlp9-fT8yFw3XVjQH76L8MQ0,1003
66
+ qcanvas/ui/qml_components/qml/Spacer.ui.qml,sha256=RE86ASh90JUV82QLWV9FoD3pVzv9F_gHFNyDpk_Befo,78
67
+ qcanvas/ui/qml_components/qml/ThemedRectangle.qml,sha256=VBnt-orItX2vUXO-5Uv4bkg5mNUF8G2Hog-SfdY9t4E,1017
68
+ qcanvas/ui/qml_components/qml/__init__.py,sha256=SlfWUzk6_E5uM9GIV-y9BVeKMwqn3pRx_xWhMyb1dfI,54
69
+ qcanvas/ui/qml_components/qml/rc_qml.py,sha256=VlEdO8jkP59504nDUyI6Rcgd3FUQpCl4tlwiFdCwgJI,16534
70
+ qcanvas/ui/qml_components/qml/rc_qml.qrc,sha256=T4YFrztVZm-qmy3o0DcmFexa-gufzeKCCofp-peo7mY,486
71
+ qcanvas/ui/qml_components/qml_bridge_types.py,sha256=iHyG9ACG7bj8X_fty4Qpd5oSTmcW3zaFZdSi_KNXymE,2725
72
+ qcanvas/ui/qml_components/qml_pane.py,sha256=g4TDiWuZZ0eZ6rWagFJG4nE8aYXqS6cDl_UvjDBJi-Y,699
73
+ qcanvas/ui/setup/__init__.py,sha256=QWt2lEyLqWG5QC-BmCBlYyi0LZsBfsQYbP0XkvqA2f8,77
74
+ qcanvas/ui/setup/setup_checker.py,sha256=gU70geojUyOTW_fNgH-GzpTMrtYXsLHWf2wUnFaezmA,444
75
+ qcanvas/ui/setup/setup_dialog.py,sha256=RDZkxzUaTY3qfta6YmHDK9VHEa4_0sJSMHU1cRGJSso,10673
76
+ qcanvas/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
+ qcanvas/util/auto_downloader.py,sha256=DO2TCNQ2idUoITqlxxAp1tY8C5Zy52nghjCE4hv49aw,1905
78
+ qcanvas/util/basic_fonts.py,sha256=TqaY2UchDseHDZYB-Bh6r3xRoRuc5S9lf8j-fMGGCYQ,249
79
+ qcanvas/util/context_dict.py,sha256=05TlRto_fzmwdUBOVFEPVNCnch4gDYys1fpuMwLhpto,315
80
+ qcanvas/util/file_icons.py,sha256=TKHITkkd2HKAWR7mBJuXc034l76Ptp1YXM_eeLbEKW8,1509
81
+ qcanvas/util/html_cleaner.py,sha256=U-UbZVX9x85gatOvxLsQXe2hL6x4I86eUKwkm0p159E,710
82
+ qcanvas/util/layouts.py,sha256=in7V6mzJIlnVc1DbvhpxA5fIYBIUIQT-OPa9dHUYIrI,1498
83
+ qcanvas/util/logs.py,sha256=VZKFITiW2WR2POEFVv5GRpEXic23Pzjehry-vH3g3Gk,138
84
+ qcanvas/util/paths.py,sha256=lLqQqOmREefJB8D1xARH3gCNNXXlSELlIuDQaCHpDr4,1373
85
+ qcanvas/util/qurl_util.py,sha256=6nTk8VkQjT87wMOXyZucPBYdT6TTYzfCTElqsypLZPg,200
86
+ qcanvas/util/runtime.py,sha256=EO1HFCN7dZbQtKHQOILuvjZFXGT7SzhlmPvU8ma95Z8,617
87
+ qcanvas/util/ui_tools.py,sha256=cdwDrtljxIpzikvUt4CAMC06kogJ4WfhSTsC3lXAcz4,3575
88
+ qcanvas/util/url_checker.py,sha256=HkNFixp1ARwc_YjYkpHb-IMTyuaC7CylvYCgDyo3sh4,136
89
+ qcanvas-2026.1.19.dist-info/METADATA,sha256=U_dXL_gAq6-ZOEDngMWf1MVBGsXUDlkZYtgGxGKlB9U,3096
90
+ qcanvas-2026.1.19.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
91
+ qcanvas-2026.1.19.dist-info/entry_points.txt,sha256=hqG_g3MRYh_eLyQcDN4H3EXqmBia_fnJTJ-3nqZGzvY,40
92
+ qcanvas-2026.1.19.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 2.3.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ qcanvas=qcanvas:main
3
+
@@ -1,59 +0,0 @@
1
- import asyncio
2
- import logging
3
- import sys
4
-
5
- import qtpy
6
- from qasync import QEventLoop
7
- from qtpy.QtGui import QGuiApplication
8
- from qtpy.QtWidgets import QApplication
9
-
10
- import qcanvas.backend_connectors.qcanvas_task_master as task_master
11
- from qcanvas.ui.main_ui.qcanvas_window import QCanvasWindow
12
- from qcanvas.ui.setup import SetupDialog, setup_checker
13
- from qcanvas.util import runtime, settings, themes
14
-
15
- main_window = None
16
- setup_window = None
17
-
18
- _logger = logging.getLogger(__name__)
19
-
20
-
21
- def _show_main():
22
- global main_window
23
- main_window = QCanvasWindow()
24
- main_window.show()
25
-
26
-
27
- def _show_qt_api_name():
28
- print(f"Using Qt bindings from {qtpy.API_NAME}")
29
- _logger.info("Using Qt bindings from %s", qtpy.API_NAME)
30
-
31
-
32
- def launch():
33
- _show_qt_api_name()
34
-
35
- app = QApplication(sys.argv)
36
-
37
- if runtime.is_running_as_flatpak:
38
- QGuiApplication.setDesktopFileName("io.github.qcanvas.QCanvasApp")
39
-
40
- app.setApplicationName("QCanvas")
41
-
42
- task_master.register()
43
- themes.apply(settings.ui.theme)
44
-
45
- event_loop = QEventLoop(app)
46
- asyncio.set_event_loop(event_loop)
47
-
48
- app_close_event = asyncio.Event()
49
- app.aboutToQuit.connect(app_close_event.set)
50
-
51
- if setup_checker.needs_setup():
52
- setup_window = SetupDialog()
53
- setup_window.show()
54
- setup_window.closed.connect(_show_main)
55
- else:
56
- _show_main()
57
-
58
- with event_loop:
59
- event_loop.run_until_complete(app_close_event.wait())
@@ -1,89 +0,0 @@
1
- # This file regenerates icons.qrc, rc_icons.py and the icons definition file based on the icons in dark/, light/ and universal/
2
-
3
- import glob
4
- import logging
5
- import os
6
- import subprocess
7
- from pathlib import Path
8
-
9
- import xmltodict
10
-
11
- _logger = logging.getLogger(__name__)
12
-
13
-
14
- def remove_base_directory(path: str | Path) -> Path:
15
- if isinstance(path, str):
16
- path = Path(path)
17
-
18
- return Path(*path.parts[1:])
19
-
20
-
21
- def generate_xml(all_icons: list[Path]) -> str:
22
- xml_dict = {
23
- "RCC": {
24
- "@version": "1.0",
25
- "qresource": {"@prefix": "icons/", "file": all_icons},
26
- }
27
- }
28
-
29
- return "<!DOCTYPE RCC>\n" + xmltodict.unparse(
30
- xml_dict, pretty=True, full_document=False
31
- )
32
-
33
-
34
- def generate_icon_defs(icons: list[Path]) -> str:
35
- icons_base_removed = [remove_base_directory(icon) for icon in icons]
36
- groups = group_icons_by_category(icons_base_removed)
37
- classes = [
38
- generate_group_class(group_name, icons) for group_name, icons in groups.items()
39
- ]
40
-
41
- return f"""from .rc_icons import qt_resource_data as _ # Without this, icon data will not be loaded
42
- from qtpy.QtGui import QIcon
43
- from ._icon_type import UniversalIcon, ThemeIcon
44
-
45
- """ + "\n\n".join(
46
- classes
47
- )
48
-
49
-
50
- def group_icons_by_category(icons: list[Path]) -> dict[str, set[Path]]:
51
- groups: dict[str, set[Path]] = {}
52
-
53
- for icon in icons:
54
- icon_category = icon.parts[0]
55
- groups.setdefault(icon_category, set())
56
- groups[icon_category].add(icon)
57
-
58
- return groups
59
-
60
-
61
- def generate_group_class(group_name: str, icons: set[Path]) -> str:
62
- # pascal_case_class_name = "".join([part.title() for part in group_name.split("_")])
63
- lines = ["# noinspection PyPep8Naming", f"class {group_name}:"]
64
-
65
- for icon in sorted(icons):
66
- path_no_ext = os.path.splitext(icon)[0]
67
- lines.append(f' {icon.stem} = QIcon.fromTheme("{path_no_ext}")')
68
-
69
- return "\n".join(lines)
70
-
71
-
72
- def run_rcc() -> None:
73
- subprocess.run(["pyside6-rcc", "icons.qrc", "-o", "rc_icons.py"])
74
-
75
-
76
- def write(file_name: str, content: str) -> None:
77
- with open(file_name, "w") as f:
78
- f.write(content)
79
-
80
-
81
- if __name__ == "__main__":
82
- all_icons: list[Path] = [
83
- Path(file) for file in glob.glob("**/*.svg", recursive=True)
84
- ]
85
- all_icons.sort()
86
-
87
- write("icons.qrc", generate_xml(all_icons))
88
- write("__init__.py", generate_icon_defs(all_icons))
89
- run_rcc()
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M120-280v-80h560v80H120Zm80-160v-80h560v80H200Zm80-160v-80h560v80H280Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640H447l-80-80H160v480l96-320h684L837-217q-8 26-29.5 41.5T760-160H160Zm84-80h516l72-240H316l-72 240Zm0 0 72-240-72 240Zm-84-400v-80 80Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-155.5t86-127Q252-817 325-848.5T480-880q83 0 155.5 31.5t127 86q54.5 54.5 86 127T880-480q0 82-31.5 155t-86 127.5q-54.5 54.5-127 86T480-80Zm0-82q26-36 45-75t31-83H404q12 44 31 83t45 75Zm-104-16q-18-33-31.5-68.5T322-320H204q29 50 72.5 87t99.5 55Zm208 0q56-18 99.5-55t72.5-87H638q-9 38-22.5 73.5T584-178ZM170-400h136q-3-20-4.5-39.5T300-480q0-21 1.5-40.5T306-560H170q-5 20-7.5 39.5T160-480q0 21 2.5 40.5T170-400Zm216 0h188q3-20 4.5-39.5T580-480q0-21-1.5-40.5T574-560H386q-3 20-4.5 39.5T380-480q0 21 1.5 40.5T386-400Zm268 0h136q5-20 7.5-39.5T800-480q0-21-2.5-40.5T790-560H654q3 20 4.5 39.5T660-480q0 21-1.5 40.5T654-400Zm-16-240h118q-29-50-72.5-87T584-782q18 33 31.5 68.5T638-640Zm-234 0h152q-12-44-31-83t-45-75q-26 36-45 75t-31 83Zm-200 0h118q9-38 22.5-73.5T376-782q-56 18-99.5 55T204-640Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M160-160v-80h110l-16-14q-52-46-73-105t-21-119q0-111 66.5-197.5T400-790v84q-72 26-116 88.5T240-478q0 45 17 87.5t53 78.5l10 10v-98h80v240H160Zm400-10v-84q72-26 116-88.5T720-482q0-45-17-87.5T650-648l-10-10v98h-80v-240h240v80H690l16 14q49 49 71.5 106.5T800-482q0 111-66.5 197.5T560-170Z"/>
3
- </svg>
@@ -1,303 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
-
4
- <svg
5
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
6
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
7
- xmlns:xlink="http://www.w3.org/1999/xlink"
8
- width="969.224"
9
- height="256"
10
- viewBox="0 0 256.44051 67.733333"
11
- version="1.1"
12
- id="svg1"
13
- xml:space="preserve"
14
- inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
15
- sodipodi:docname="logo_light (copy).svg"
16
- xmlns="http://www.w3.org/2000/svg"><sodipodi:namedview
17
- id="namedview1"
18
- pagecolor="#ffffff"
19
- bordercolor="#000000"
20
- borderopacity="0.25"
21
- inkscape:showpageshadow="2"
22
- inkscape:pageopacity="0.0"
23
- inkscape:pagecheckerboard="0"
24
- inkscape:deskcolor="#d1d1d1"
25
- inkscape:document-units="mm"
26
- inkscape:zoom="1.0343421"
27
- inkscape:cx="518.68719"
28
- inkscape:cy="294.39003"
29
- inkscape:window-width="1920"
30
- inkscape:window-height="1018"
31
- inkscape:window-x="0"
32
- inkscape:window-y="0"
33
- inkscape:window-maximized="1"
34
- inkscape:current-layer="layer6" />
35
- <defs
36
- id="defs1"><rect
37
- x="237.99998"
38
- y="25.636106"
39
- width="760.78278"
40
- height="230.36391"
41
- id="rect2" />
42
- <linearGradient
43
- inkscape:collect="always"
44
- xlink:href="#outerBackgroundGradient-2"
45
- id="linearGradient4254"
46
- x1="35"
47
- y1="156"
48
- x2="253"
49
- y2="156"
50
- gradientUnits="userSpaceOnUse"
51
- gradientTransform="rotate(-90,144,156)"/>
52
- <linearGradient
53
- id="outerBackgroundGradient-2"><stop
54
- style="stop-color:#e70a0a;stop-opacity:1;"
55
- offset="0"
56
- id="stop3864-8-6-00" />
57
- <stop
58
- style="stop-color:#fe0000;stop-opacity:1;"
59
- offset="1"
60
- id="stop3866-9-1-1"/></linearGradient>
61
- <style
62
- id="style1">.cls-1{fill:#fff;}</style></defs>
63
- <g
64
- inkscape:label="Layer 1"
65
- inkscape:groupmode="layer"
66
- id="layer1"><g
67
- style="display:inline;enable-background:new"
68
- id="g1"
69
- transform="matrix(0.26458333,0,0,0.26458333,-1.3535254e-6,-0.13229302)"><g
70
- style="display:inline"
71
- inkscape:label="Icon"
72
- id="layer1-3"
73
- transform="translate(-16,-28)"><g
74
- style="display:none"
75
- inkscape:label="Baseplate"
76
- id="layer7"
77
- inkscape:groupmode="layer"><text
78
- y="19.745117"
79
- xml:space="preserve"
80
- x="15.006836"
81
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';display:inline;fill:#000000;fill-opacity:1;stroke:none;enable-background:new"
82
- inkscape:label="context"
83
- id="context"><tspan
84
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans'"
85
- y="19.745117"
86
- x="15.006836"
87
- sodipodi:role="line"
88
- id="tspan3933">apps</tspan></text><text
89
- y="19.745117"
90
- xml:space="preserve"
91
- x="122.48828"
92
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;enable-background:new"
93
- inkscape:label="icon-name"
94
- id="icon-name"><tspan
95
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:18px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'"
96
- y="19.745117"
97
- x="122.48828"
98
- sodipodi:role="line"
99
- id="tspan3937">amd</tspan></text><rect
100
- style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
101
- id="rect16x16"
102
- width="16"
103
- height="16"
104
- x="416"
105
- y="140"
106
- inkscape:label="16x16"/><rect
107
- style="display:inline;overflow:visible;visibility:visible;fill:#d4d4d4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
108
- id="rect24x24"
109
- width="24"
110
- height="24"
111
- x="416"
112
- y="100"
113
- inkscape:label="24x24"/><rect
114
- style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
115
- id="rect32x32"
116
- width="32"
117
- height="32"
118
- x="416"
119
- y="52"
120
- inkscape:label="32x32"/><rect
121
- inkscape:label="22x22"
122
- y="101"
123
- x="417"
124
- height="22"
125
- width="22"
126
- id="rect22x22"
127
- style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"/><rect
128
- inkscape:label="48x48"
129
- y="220"
130
- x="288"
131
- height="48"
132
- width="48"
133
- id="rect48x48"
134
- style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"/><rect
135
- style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
136
- id="rect256x256"
137
- width="256"
138
- height="256"
139
- x="16"
140
- y="28"
141
- inkscape:label="256x256"/><rect
142
- style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
143
- id="rect64x64"
144
- width="64"
145
- height="64"
146
- x="288"
147
- y="140"
148
- inkscape:label="64x64"/><rect
149
- style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
150
- id="rect96x96"
151
- width="96"
152
- height="96"
153
- x="288"
154
- y="28"
155
- inkscape:label="96x96"/><rect
156
- style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
157
- id="rect256x256-7"
158
- width="256"
159
- height="256"
160
- x="16"
161
- y="28"
162
- inkscape:label="256x256"/></g><g
163
- inkscape:groupmode="layer"
164
- id="layer4"
165
- inkscape:label="Shadow"
166
- style="display:inline"
167
- sodipodi:insensitive="true"><rect
168
- ry="50"
169
- y="47"
170
- x="34"
171
- height="220"
172
- width="220"
173
- id="rect4114"
174
- style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate" /></g><g
175
- inkscape:groupmode="layer"
176
- id="layer2"
177
- inkscape:label="Background"
178
- style="display:inline"/><g
179
- inkscape:groupmode="layer"
180
- id="layer6"
181
- inkscape:label="Symbols"
182
- style="display:inline"><g
183
- id="g2"
184
- style="opacity:0.3"><rect
185
- style="fill:#f2f2f2;fill-opacity:0;stroke-width:2.98472"
186
- id="rect1"
187
- width="67.73333"
188
- height="67.73333"
189
- x="-7.1054274e-15"
190
- y="-4.4408921e-16"
191
- transform="matrix(3.7795276,0,0,3.7795276,16.000005,28.500005)" /><path
192
- style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient4254);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
193
- d="M 84,46.5 C 56.568735,46.5 34.5,68.568732 34.5,96 v 120 c 0,27.43127 22.068735,49.5 49.5,49.5 h 120 c 27.43127,0 49.5,-22.06873 49.5,-49.5 V 96 C 253.5,68.568732 231.43127,46.5 204,46.5 Z"
194
- id="path4200"/><g
195
- id="Layer_1-2"
196
- data-name="Layer 1"
197
- transform="matrix(1.322302,0,0,1.322302,59.921425,71.894979)"><path
198
- class="cls-1"
199
- d="M 18.45,63.47 A 18.4,18.4 0 0 0 2.31,45.23 73.13,73.13 0 0 0 2.31,81.7 18.38,18.38 0 0 0 18.45,63.47"
200
- id="path1" />
201
- <path
202
- class="cls-1"
203
- d="M 29.13,57.7 A 5.77,5.77 0 1 0 34.9,63.47 5.77,5.77 0 0 0 29.13,57.7"
204
- id="path2"/>
205
- <path
206
- class="cls-1"
207
- d="m 108.72,63.47 a 18.38,18.38 0 0 0 16.14,18.23 73.13,73.13 0 0 0 0,-36.47 18.4,18.4 0 0 0 -16.14,18.24"
208
- id="path3"/>
209
- <path
210
- class="cls-1"
211
- d="m 98,57.7 a 5.77,5.77 0 1 0 5.76,5.77 A 5.77,5.77 0 0 0 98,57.7"
212
- id="path4"/>
213
- <path
214
- class="cls-1"
215
- d="m 63.46,108.77 a 18.39,18.39 0 0 0 -18.23,16.13 73.13,73.13 0 0 0 36.47,0 18.38,18.38 0 0 0 -18.24,-16.13"
216
- id="path5"/>
217
- <path
218
- class="cls-1"
219
- d="m 63.47,92.31 a 5.77,5.77 0 1 0 5.76,5.77 5.77,5.77 0 0 0 -5.76,-5.77"
220
- id="path6"/>
221
- <path
222
- class="cls-1"
223
- d="M 63.47,18.44 A 18.37,18.37 0 0 0 81.7,2.31 a 73.13,73.13 0 0 0 -36.47,0 18.39,18.39 0 0 0 18.24,16.13"
224
- id="path7"/>
225
- <path
226
- class="cls-1"
227
- d="m 63.47,23.37 a 5.77,5.77 0 1 0 5.76,5.76 5.76,5.76 0 0 0 -5.76,-5.76"
228
- id="path8"/>
229
- <path
230
- class="cls-1"
231
- d="m 95.44,95.44 a 18.4,18.4 0 0 0 -1.5,24.29 73,73 0 0 0 25.78,-25.79 18.39,18.39 0 0 0 -24.28,1.5"
232
- id="path9"/>
233
- <path
234
- class="cls-1"
235
- d="m 83.8,83.8 a 5.77,5.77 0 1 0 8.16,0 5.78,5.78 0 0 0 -8.16,0"
236
- id="path10"/>
237
- <path
238
- class="cls-1"
239
- d="M 31.59,31.59 A 18.36,18.36 0 0 0 33.09,7.31 72.93,72.93 0 0 0 7.31,33.09 18.36,18.36 0 0 0 31.59,31.59"
240
- id="path11"/>
241
- <path
242
- class="cls-1"
243
- d="m 35.07,35.08 a 5.77,5.77 0 1 0 8.16,0 5.78,5.78 0 0 0 -8.16,0"
244
- id="path12"/>
245
- <path
246
- class="cls-1"
247
- d="M 95.4,31.53 A 18.39,18.39 0 0 0 119.69,33 72.88,72.88 0 0 0 93.9,7.25 18.39,18.39 0 0 0 95.4,31.53"
248
- id="path13"/>
249
- <path
250
- class="cls-1"
251
- d="m 91.92,43.17 a 5.76,5.76 0 1 0 -8.15,0 5.76,5.76 0 0 0 8.15,0"
252
- id="path14"/>
253
- <path
254
- class="cls-1"
255
- d="M 31.56,95.37 A 18.39,18.39 0 0 0 7.28,93.87 73,73 0 0 0 33.06,119.66 18.38,18.38 0 0 0 31.56,95.37"
256
- id="path15"/>
257
- <path
258
- class="cls-1"
259
- d="m 35,83.73 a 5.77,5.77 0 1 0 8.16,0 5.79,5.79 0 0 0 -8.16,0"
260
- id="path16"/></g></g>
261
- <g
262
- id="g3"><rect
263
- style="display:inline;fill:#178300;fill-opacity:0;stroke-width:10.3711;enable-background:new;opacity:0.3"
264
- id="rect3"
265
- width="713.224"
266
- height="256"
267
- x="272"
268
- y="28.500006" />
269
- <path
270
- style="font-size:200px;font-family:Ramabhadra;-inkscape-font-specification:'Ramabhadra, Normal';white-space:pre;fill:#ffffff;stroke-width:10.762;opacity:0.3"
271
- d="m 342.33735,140.96003 q 8.6747,6.26506 19.03614,9.87951 l -8.91566,16.62651 q -8.19277,-2.16867 -26.0241,-14.69879 -11.56626,5.06024 -25.54216,5.06024 -30.60241,0 -44.09639,-17.59037 -13.49398,-17.83132 -13.49398,-42.891561 0,-28.192772 14.93976,-44.33735 15.18073,-16.144578 42.16868,-16.144578 26.50602,0 41.44578,16.144578 14.93976,16.144578 14.93976,44.33735 0,26.746991 -14.45783,43.614461 z M 323.3012,127.70701 q 9.15663,-10.84337 9.15663,-30.361441 0,-40.481928 -32.28916,-40.481928 -15.66265,0 -24.09638,10.843373 -8.43374,10.843374 -8.43374,29.638555 0,16.626501 7.46988,28.915661 7.46988,12.04819 24.33735,12.04819 5.06024,0 9.63856,-1.68674 -7.22892,-4.81928 -14.6988,-7.46988 l 6.74699,-13.49398 q 11.56627,3.85542 22.16867,12.04819 z m 124.81893,-12.77108 22.89157,7.46988 q -10.60241,37.59036 -48.91566,37.59036 -27.22892,0 -40.24097,-17.83132 -13.01205,-18.07229 -13.01205,-41.68675 0,-27.951809 14.45783,-44.578315 14.45784,-16.867469 40.48193,-16.867469 37.10844,0 46.74699,34.216867 l -23.37349,5.542169 Q 442.57796,59.273279 422.337,59.273279 q -29.15663,0 -29.15663,39.518073 0,40.963858 28.6747,40.963858 20.48193,0 26.26506,-24.81928 z m 56.14433,-15.903614 -20.24097,-3.614458 q 6.74699,-24.096386 36.62651,-24.096386 20.96385,0 28.19277,7.228916 7.46988,7.228915 7.46988,25.542172 l -0.24096,26.02409 q 0,17.59036 5.06024,27.95181 h -22.16868 q -1.20482,-3.37349 -2.89156,-9.15663 -11.56627,11.08434 -26.26507,11.08434 -12.53012,0 -20.48192,-6.74699 -7.71085,-6.74698 -7.71085,-18.31325 0,-9.15663 5.06024,-15.90361 5.06025,-6.74699 25.78314,-10.84338 15.90361,-2.89156 21.92771,-5.3012 v -2.40964 q 0,-12.048194 -15.42169,-12.048194 -10.84337,0 -14.69879,10.60241 z m 30.12048,18.313254 q -10.84338,2.16867 -26.0241,7.22891 -4.33735,3.13253 -4.33735,7.95181 0,5.54217 3.85542,8.6747 3.85543,2.89157 8.6747,2.89157 17.83133,0 17.83133,-22.16868 z m 117.34936,41.20482 h -22.40964 v -43.3735 q 0,-14.93976 -2.89157,-20.481924 -2.6506,-5.783132 -11.08433,-5.783132 -7.46988,0 -13.01205,4.337349 -5.54217,4.337349 -5.54217,26.987947 v 38.31326 H 574.3849 V 73.731111 h 20.72289 v 12.53012 Q 606.43309,71.8034 623.30056,71.8034 q 28.43374,0 28.43374,33.9759 z m 43.13246,0 -34.21686,-84.819279 h 23.61445 l 20.48193,57.831329 20.96386,-57.831329 h 23.13253 l -33.73494,84.819279 z m 82.65055,-59.518074 -20.24096,-3.614458 q 6.74698,-24.096386 36.6265,-24.096386 20.96386,0 28.19277,7.228916 7.46988,7.228915 7.46988,25.542172 l -0.24096,26.02409 q 0,17.59036 5.06024,27.95181 H 812.2161 q -1.20481,-3.37349 -2.89156,-9.15663 -11.56627,11.08434 -26.26506,11.08434 -12.53012,0 -20.48193,-6.74699 -7.71084,-6.74698 -7.71084,-18.31325 0,-9.15663 5.06024,-15.90361 5.06024,-6.74699 25.78313,-10.84338 15.90362,-2.89156 21.92771,-5.3012 v -2.40964 q 0,-12.048194 -15.42169,-12.048194 -10.84337,0 -14.69879,10.60241 z m 30.12048,18.313254 q -10.84337,2.16867 -26.02409,7.22891 -4.33735,3.13253 -4.33735,7.95181 0,5.54217 3.85542,8.6747 3.85542,2.89157 8.6747,2.89157 17.83132,0 17.83132,-22.16868 z m 33.97588,16.6265 22.40964,-3.61445 q 3.13253,13.49397 18.31325,13.49397 16.14458,0 16.14458,-9.15662 0,-5.30121 -9.15662,-7.22892 -31.08434,-6.98795 -37.83133,-13.73494 -6.74699,-6.74699 -6.74699,-16.385541 0,-26.024097 35.66265,-26.024097 31.08434,0 37.59037,22.409639 L 896.7944,97.586532 Q 894.14379,87.46605 880.89078,87.46605 q -15.18072,0 -15.18072,6.987952 0,5.783128 23.85542,11.084338 17.59036,3.85542 24.33735,9.63855 6.98795,5.54217 6.98795,16.38555 0,13.9759 -11.3253,21.20482 -11.3253,7.22891 -27.22892,7.22891 -33.9759,0 -40.72289,-26.0241 z"
272
- id="text2"
273
- transform="translate(46.516006,54.33516)"
274
- aria-label="QCanvas"/></g></g><g
275
- inkscape:groupmode="layer"
276
- id="layer5"
277
- inkscape:label="Highlights"
278
- style="display:inline"
279
- sodipodi:insensitive="true"><path
280
- style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.13;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate"
281
- d="M 84,47 C 56.836703,47 35,68.836703 35,96 v 1 C 35,69.836703 56.836703,48 84,48 h 120 c 27.1633,0 49,21.836703 49,49 V 96 C 253,68.836703 231.1633,47 204,47 Z"
282
- id="rect3894"
283
- inkscape:connector-curvature="0" />
284
- <path
285
- id="path4085"
286
- d="m 204,266 c 27.1633,0 49,-21.8367 49,-49 v -1 c 0,27.1633 -21.8367,49 -49,49 H 84 C 56.8367,265 35,243.1633 35,216 v 1 c 0,27.1633 21.8367,49 49,49 z"
287
- style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.41;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate"
288
- inkscape:connector-curvature="0"/>
289
- <path
290
- inkscape:connector-curvature="0"
291
- id="path4280"
292
- d="M 84,265 C 56.836703,265 35,243.1633 35,216 v -1 c 0,27.1633 21.836703,49 49,49 h 120 c 27.1633,0 49,-21.8367 49,-49 v 1 c 0,27.1633 -21.8367,49 -49,49 z"
293
- style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate"
294
- inkscape:label="path4280"/></g><g
295
- inkscape:groupmode="layer"
296
- id="layer3"
297
- inkscape:label="Border"
298
- style="display:inline"
299
- sodipodi:insensitive="true"><path
300
- style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.41;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate"
301
- d="M 84,46 C 56.3,46 34,68.3 34,96 v 120 c 0,27.7 22.3,50 50,50 h 120 c 27.7,0 50,-22.3 50,-50 V 96 C 254,68.3 231.7,46 204,46 Z m 0,1 h 120 c 27.1633,0 49,21.836703 49,49 v 120 c 0,27.1633 -21.8367,49 -49,49 H 84 C 56.836703,265 35,243.1633 35,216 V 96 C 35,68.836703 56.836703,47 84,47 Z"
302
- id="rect4040"
303
- inkscape:connector-curvature="0" /></g></g></g></g></svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm40-83q119-15 199.5-104.5T800-480q0-123-80.5-212.5T520-797v634Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h168q13-36 43.5-58t68.5-22q38 0 68.5 22t43.5 58h168q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm80-80h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm200-190q13 0 21.5-8.5T510-820q0-13-8.5-21.5T480-850q-13 0-21.5 8.5T450-820q0 13 8.5 21.5T480-790ZM200-200v-560 560Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M320-240h320v-80H320v80Zm0-160h320v-80H320v80ZM240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h320l240 240v480q0 33-23.5 56.5T720-80H240Zm280-520v-200H240v640h480v-440H520ZM240-800v200-200 640-640Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h168q13-36 43.5-58t68.5-22q38 0 68.5 22t43.5 58h168q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm80-80h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm200-190q13 0 21.5-8.5T510-820q0-13-8.5-21.5T480-850q-13 0-21.5 8.5T450-820q0 13 8.5 21.5T480-790ZM200-200v-560 560Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M560-564v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-600q-38 0-73 9.5T560-564Zm0 220v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-380q-38 0-73 9t-67 27Zm0-110v-68q33-14 67.5-21t72.5-7q26 0 51 4t49 10v64q-24-9-48.5-13.5T700-490q-38 0-73 9.5T560-454ZM260-320q47 0 91.5 10.5T440-278v-394q-41-24-87-36t-93-12q-36 0-71.5 7T120-692v396q35-12 69.5-18t70.5-6Zm260 42q44-21 88.5-31.5T700-320q36 0 70.5 6t69.5 18v-396q-33-14-68.5-21t-71.5-7q-47 0-93 12t-87 36v394Zm-40 118q-48-38-104-59t-116-21q-42 0-82.5 11T100-198q-21 11-40.5-1T40-234v-482q0-11 5.5-21T62-752q46-24 96-36t102-12q58 0 113.5 15T480-740q51-30 106.5-45T700-800q52 0 102 12t96 36q11 5 16.5 15t5.5 21v482q0 23-19.5 35t-40.5 1q-37-20-77.5-31T700-240q-60 0-116 21t-104 59ZM280-494Z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed">
2
- <path d="M280-280h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm-80 480q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm0-560v560-560Z"/>
3
- </svg>