Merge branch 'main' into theme_fixes

This commit is contained in:
Myian
2025-10-27 16:51:54 +01:00
committed by GitHub
187 changed files with 3227 additions and 992 deletions
+5 -5
View File
@@ -49,9 +49,9 @@ __license__ = "GPLv3"
__author__ = "Veronica Berglyd Olsen"
__maintainer__ = "Veronica Berglyd Olsen"
__email__ = "code@vkbo.net"
__version__ = "2.8a2"
__hexversion__ = "0x020800a2"
__date__ = "2025-07-16"
__version__ = "2.8a3"
__hexversion__ = "0x020800a3"
__date__ = "2025-10-18"
__status__ = "Stable"
__domain__ = "novelwriter.io"
@@ -206,9 +206,9 @@ def main(sysArgs: list | None = None) -> GuiMain | None:
# Check Packages and Versions
errorData = []
errorCode = 0
if sys.hexversion < 0x030a00f0:
if sys.hexversion < 0x030b00f0:
errorData.append(
f"At least Python 3.10 is required, found {CONFIG.verPyString}"
f"At least Python 3.11 is required, found {CONFIG.verPyString}"
)
errorCode |= 0x04
if CONFIG.verQtValue < 0x060400:
@@ -59,6 +59,23 @@ icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-280q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM80-440q-17 0-28.5-11.5T40-480q0-17 11.5-28.5T80-520h80q17 0 28.5 11.5T200-480q0 17-11.5 28.5T160-440H80Zm720 0q-17 0-28.5-11.5T760-480q0-17 11.5-28.5T800-520h80q17 0 28.5 11.5T920-480q0 17-11.5 28.5T880-440h-80ZM480-760q-17 0-28.5-11.5T440-800v-80q0-17 11.5-28.5T480-920q17 0 28.5 11.5T520-880v80q0 17-11.5 28.5T480-760Zm0 720q-17 0-28.5-11.5T440-80v-80q0-17 11.5-28.5T480-200q17 0 28.5 11.5T520-160v80q0 17-11.5 28.5T480-40ZM226-678l-43-42q-12-11-11.5-28t11.5-29q12-12 29-12t28 12l42 43q11 12 11 28t-11 28q-11 12-27.5 11.5T226-678Zm494 495-42-43q-11-12-11-28.5t11-27.5q11-12 27.5-11.5T734-282l43 42q12 11 11.5 28T777-183q-12 12-29 12t-28-12Zm-42-495q-12-11-11.5-27.5T678-734l42-43q11-12 28-11.5t29 11.5q12 12 12 29t-12 28l-43 42q-12 11-28 11t-28-11ZM183-183q-12-12-12-29t12-28l43-42q12-11 28.5-11t27.5 11q12 11 11.5 27.5T282-226l-42 43q-11 12-28 11.5T183-183Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-120q-151 0-255.5-104.5T120-480q0-138 90-239.5T440-838q13-2 23 3.5t16 14.5q6 9 6.5 21t-7.5 23q-17 26-25.5 55t-8.5 61q0 90 63 153t153 63q31 0 61.5-9t54.5-25q11-7 22.5-6.5T819-479q10 5 15.5 15t3.5 24q-14 138-117.5 229T480-120Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><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" /></svg>
icon:btn_ok = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-408-86-86q-11-11-28-11t-28 11q-11 11-11 28t11 28l114 114q12 12 28 12t28-12l226-226q11-11 11-28t-11-28q-11-11-28-11t-28 11L424-408Zm56 328q-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-80Z" /></svg>
icon:btn_cancel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-424 116 116q11 11 28 11t28-11q11-11 11-28t-11-28L536-480l116-116q11-11 11-28t-11-28q-11-11-28-11t-28 11L480-536 364-652q-11-11-28-11t-28 11q-11 11-11 28t11 28l116 116-116 116q-11 11-11 28t11 28q11 11 28 11t28-11l116-116Zm0 344q-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-80Z" /></svg>
icon:btn_yes = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-408-86-86q-11-11-28-11t-28 11q-11 11-11 28t11 28l114 114q12 12 28 12t28-12l226-226q11-11 11-28t-11-28q-11-11-28-11t-28 11L424-408Zm56 328q-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-80Z" /></svg>
icon:btn_no = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-440h320q17 0 28.5-11.5T680-480q0-17-11.5-28.5T640-520H320q-17 0-28.5 11.5T280-480q0 17 11.5 28.5T320-440ZM480-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-80Z" /></svg>
icon:btn_open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h240q17 0 28.5 11.5T480-800q0 17-11.5 28.5T440-760H200v560h560v-240q0-17 11.5-28.5T800-480q17 0 28.5 11.5T840-440v240q0 33-23.5 56.5T760-120H200Zm560-584L416-360q-11 11-28 11t-28-11q-11-11-11-28t11-28l344-344H600q-17 0-28.5-11.5T560-800q0-17 11.5-28.5T600-840h200q17 0 28.5 11.5T840-800v200q0 17-11.5 28.5T800-560q-17 0-28.5-11.5T760-600v-104Z" /></svg>
icon:btn_close = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-424 116 116q11 11 28 11t28-11q11-11 11-28t-11-28L536-480l116-116q11-11 11-28t-11-28q-11-11-28-11t-28 11L480-536 364-652q-11-11-28-11t-28 11q-11 11-11 28t11 28l116 116-116 116q-11 11-11 28t11 28q11 11 28 11t28-11l116-116Zm0 344q-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-80Z" /></svg>
icon:btn_save = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M692-148 588-252q-11-11-11-28t11-28q11-11 28-11t28 11l36 36v-127q0-17 11.5-28.5T720-439q17 0 28.5 11.5T760-399v127l36-36q11-11 28-11t28 11q11 11 11 28t-11 28L748-148q-12 12-28 12t-28-12ZM600 0q-17 0-28.5-11.5T560-40q0-17 11.5-28.5T600-80h240q17 0 28.5 11.5T880-40q0 17-11.5 28.5T840 0H600ZM240-160q-33 0-56.5-23.5T160-240v-560q0-33 23.5-56.5T240-880h247q16 0 30.5 6t25.5 17l194 194q11 11 17 25.5t6 30.5v48q0 17-11.5 28.5T720-519H560q-33 0-56.5 23.5T480-439v239q0 17-11.5 28.5T440-160H240Zm300-440h140L480-800l200 200-200-200v140q0 25 17.5 42.5T540-600Z" /></svg>
icon:btn_browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h207q16 0 30.5 6t25.5 17l57 57h360q17 0 28.5 11.5T880-680q0 17-11.5 28.5T840-640H314q-62 0-108 39t-46 99v262l79-263q8-26 29.5-41.5T316-560h516q41 0 64.5 32.5T909-457l-72 240q-8 26-29.5 41.5T760-160H160Z" /></svg>
icon:btn_list = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M400-200q-17 0-28.5-11.5T360-240q0-17 11.5-28.5T400-280h400q17 0 28.5 11.5T840-240q0 17-11.5 28.5T800-200H400Zm0-240q-17 0-28.5-11.5T360-480q0-17 11.5-28.5T400-520h400q17 0 28.5 11.5T840-480q0 17-11.5 28.5T800-440H400Zm0-240q-17 0-28.5-11.5T360-720q0-17 11.5-28.5T400-760h400q17 0 28.5 11.5T840-720q0 17-11.5 28.5T800-680H400ZM200-160q-33 0-56.5-23.5T120-240q0-33 23.5-56.5T200-320q33 0 56.5 23.5T280-240q0 33-23.5 56.5T200-160Zm0-240q-33 0-56.5-23.5T120-480q0-33 23.5-56.5T200-560q33 0 56.5 23.5T280-480q0 33-23.5 56.5T200-400Zm0-240q-33 0-56.5-23.5T120-720q0-33 23.5-56.5T200-800q33 0 56.5 23.5T280-720q0 33-23.5 56.5T200-640Z" /></svg>
icon:btn_new = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h200q17 0 28.5 11.5T440-800q0 17-11.5 28.5T400-760H200v560h560v-200q0-17 11.5-28.5T800-440q17 0 28.5 11.5T840-400v200q0 33-23.5 56.5T760-120H200Zm440-520h-80q-17 0-28.5-11.5T520-680q0-17 11.5-28.5T560-720h80v-80q0-17 11.5-28.5T680-840q17 0 28.5 11.5T720-800v80h80q17 0 28.5 11.5T840-680q0 17-11.5 28.5T800-640h-80v80q0 17-11.5 28.5T680-520q-17 0-28.5-11.5T640-560v-80Z" /></svg>
icon:btn_create = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-269 314-169q-11 7-23 6t-21-8q-9-7-14-17.5t-2-23.5l44-189-147-127q-10-9-12.5-20.5T140-571q4-11 12-18t22-9l194-17 75-178q5-12 15.5-18t21.5-6q11 0 21.5 6t15.5 18l75 178 194 17q14 2 22 9t12 18q4 11 1.5 22.5T809-528L662-401l44 189q3 13-2 23.5T690-171q-9 7-21 8t-23-6L480-269Z" /></svg>
icon:btn_reset = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-200q-17 0-28.5-11.5T280-240q0-17 11.5-28.5T320-280h244q63 0 109.5-40T720-420q0-60-46.5-100T564-560H312l76 76q11 11 11 28t-11 28q-11 11-28 11t-28-11L188-572q-6-6-8.5-13t-2.5-15q0-8 2.5-15t8.5-13l144-144q11-11 28-11t28 11q11 11 11 28t-11 28l-76 76h252q97 0 166.5 63T800-420q0 94-69.5 157T564-200H320Z" /></svg>
icon:btn_insert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M440-560h-80q-17 0-28.5-11.5T320-600q0-17 11.5-28.5T360-640h240q17 0 28.5 11.5T640-600q0 17-11.5 28.5T600-560h-80v200q0 17-11.5 28.5T480-320q-17 0-28.5-11.5T440-360v-200ZM40-80v-160q0-17 11.5-28.5T80-280h40v-400H80q-17 0-28.5-11.5T40-720v-160q0-17 11.5-28.5T80-920h160q17 0 28.5 11.5T280-880v40h400v-40q0-17 11.5-28.5T720-920h160q17 0 28.5 11.5T920-880v160q0 17-11.5 28.5T880-680h-40v400h40q17 0 28.5 11.5T920-240v160q0 17-11.5 28.5T880-40H720q-17 0-28.5-11.5T680-80v-40H280v40q0 17-11.5 28.5T240-40H80q-17 0-28.5-11.5T40-80Zm240-120h400v-40q0-17 11.5-28.5T720-280h40v-400h-40q-17 0-28.5-11.5T680-720v-40H280v40q0 17-11.5 28.5T240-680h-40v400h40q17 0 28.5 11.5T280-240v40Z" /></svg>
icon:btn_apply = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-424-86-86q-11-11-28-11t-28 11q-11 11-11 28t11 28l114 114q12 12 28 12t28-12l226-226q11-11 11-28t-11-28q-11-11-28-11t-28 11L424-424ZM200-120q-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-120H200Z" /></svg>
icon:btn_build = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M760-252v72q0 8 6 14t14 6q8 0 14-6t6-14v-120q0-8-6-14t-14-6H660q-8 0-14 6t-6 14q0 8 6 14t14 6h72l-98 98q-6 6-6 14t6 14q6 6 14 6t14-6l98-98ZM720-40q-83 0-141.5-58.5T520-240q0-83 58.5-141.5T720-440q83 0 141.5 58.5T920-240q0 83-58.5 141.5T720-40ZM320-600h320q17 0 28.5-11.5T680-640q0-17-11.5-28.5T640-680H320q-17 0-28.5 11.5T280-640q0 17 11.5 28.5T320-600ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v218q0 18-15 28t-32 4q-17-5-35.5-7.5T720-520q-11 0-20.5.5T680-517q-9-2-20-2.5t-20-.5H320q-17 0-28.5 11.5T280-480q0 17 11.5 28.5T320-440h205q-18 17-32.5 37T467-360H320q-17 0-28.5 11.5T280-320q0 17 11.5 28.5T320-280h123q-2 10-2.5 19.5T440-240q0 20 2 38t7 35q5 17-5 32t-27 15H200Z" /></svg>
icon:btn_print = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-120q-33 0-56.5-23.5T240-200v-80h-80q-33 0-56.5-23.5T80-360v-160q0-51 35-85.5t85-34.5h560q51 0 85.5 34.5T880-520v160q0 33-23.5 56.5T800-280h-80v80q0 33-23.5 56.5T640-120H320Zm400-560H240v-80q0-33 23.5-56.5T320-840h320q33 0 56.5 23.5T720-760v80Zm0 220q17 0 28.5-11.5T760-500q0-17-11.5-28.5T720-540q-17 0-28.5 11.5T680-500q0 17 11.5 28.5T720-460ZM320-200h320v-160H320v160Z" /></svg>
icon:btn_preview = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-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-480H200v480Zm280-80q-82 0-146.5-44.5T240-440q29-71 93.5-115.5T480-600q82 0 146.5 44.5T720-440q-29 71-93.5 115.5T480-280Zm0-100q-25 0-42.5-17.5T420-440q0-25 17.5-42.5T480-500q25 0 42.5 17.5T540-440q0 25-17.5 42.5T480-380Zm0 40q42 0 71-29t29-71q0-42-29-71t-71-29q-42 0-71 29t-29 71q0 42 29 71t71 29Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M440-440H240q-17 0-28.5-11.5T200-480q0-17 11.5-28.5T240-520h200v-200q0-17 11.5-28.5T480-760q17 0 28.5 11.5T520-720v200h200q17 0 28.5 11.5T760-480q0 17-11.5 28.5T720-440H520v200q0 17-11.5 28.5T480-200q-17 0-28.5-11.5T440-240v-200Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M400-160 232-88q-40 17-76-6.5T120-161v-519q0-33 23.5-56.5T200-760h400q33 0 56.5 23.5T680-680v519q0 43-36 66.5T568-88l-168-72Zm400 0q-17 0-28.5-11.5T760-200v-640H280q-17 0-28.5-11.5T240-880q0-17 11.5-28.5T280-920h480q33 0 56.5 23.5T840-840v640q0 17-11.5 28.5T800-160Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h207q16 0 30.5 6t25.5 17l57 57h360q17 0 28.5 11.5T880-680q0 17-11.5 28.5T840-640H314q-62 0-108 39t-46 99v262l79-263q8-26 29.5-41.5T316-560h516q41 0 64.5 32.5T909-457l-72 240q-8 26-29.5 41.5T760-160H160Z" /></svg>
@@ -94,7 +111,6 @@ icon:minimise = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:more_arrow = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M420-308q-8 0-14-5.5t-6-14.5v-304q0-9 6-14.5t14-5.5q2 0 14 6l145 145q5 5 7 10t2 11q0 6-2 11t-7 10L434-314q-3 3-6.5 4.5T420-308Z" /></svg>
icon:more_vertical = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-160q-33 0-56.5-23.5T400-240q0-33 23.5-56.5T480-320q33 0 56.5 23.5T560-240q0 33-23.5 56.5T480-160Zm0-240q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0-240q-33 0-56.5-23.5T400-720q0-33 23.5-56.5T480-800q33 0 56.5 23.5T560-720q0 33-23.5 56.5T480-640Z" /></svg>
icon:noncheckable = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-440h320q17 0 28.5-11.5T680-480q0-17-11.5-28.5T640-520H320q-17 0-28.5 11.5T280-480q0 17 11.5 28.5T320-440ZM200-120q-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-120H200Z" /></svg>
icon:open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h240q17 0 28.5 11.5T480-800q0 17-11.5 28.5T440-760H200v560h560v-240q0-17 11.5-28.5T800-480q17 0 28.5 11.5T840-440v240q0 33-23.5 56.5T760-120H200Zm560-584L416-360q-11 11-28 11t-28-11q-11-11-11-28t11-28l344-344H600q-17 0-28.5-11.5T560-800q0-17 11.5-28.5T600-840h200q17 0 28.5 11.5T840-800v200q0 17-11.5 28.5T800-560q-17 0-28.5-11.5T760-600v-104Z" /></svg>
icon:panel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-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-280h560v-360H200v360Z" /></svg>
icon:pin = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M640-760v280l68 68q6 6 9 13.5t3 15.5v23q0 17-11.5 28.5T680-320H520v223q0 8-3 15.5T508-68l-14 14q-6 6-14 6t-14-6l-14-14q-6-6-9-13.5T440-97v-223H280q-17 0-28.5-11.5T240-360v-23q0-8 3-15.5t9-13.5l68-68v-280q-17 0-28.5-11.5T280-800q0-17 11.5-28.5T320-840h320q17 0 28.5 11.5T680-800q0 17-11.5 28.5T640-760Z" /></svg>
icon:project_copy = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M120-120q-33 0-56.5-23.5T40-200v-480q0-17 11.5-28.5T80-720q17 0 28.5 11.5T120-680v480h640q17 0 28.5 11.5T800-160q0 17-11.5 28.5T760-120H120Zm160-160q-33 0-56.5-23.5T200-360v-440q0-33 23.5-56.5T280-880h167q16 0 30.5 6t25.5 17l57 57h280q33 0 56.5 23.5T920-720v360q0 33-23.5 56.5T840-280H280Z" /></svg>
@@ -103,7 +119,6 @@ icon:refresh = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:remove = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M240-440q-17 0-28.5-11.5T200-480q0-17 11.5-28.5T240-520h480q17 0 28.5 11.5T760-480q0 17-11.5 28.5T720-440H240Z" /></svg>
icon:revert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-120q-126 0-223-76.5T131-392q-4-15 6-27.5t27-14.5q16-2 29 6t18 24q24 90 99 147t170 57q117 0 198.5-81.5T760-480q0-117-81.5-198.5T480-760q-69 0-129 32t-101 88h70q17 0 28.5 11.5T360-600q0 17-11.5 28.5T320-560H160q-17 0-28.5-11.5T120-600v-160q0-17 11.5-28.5T160-800q17 0 28.5 11.5T200-760v54q51-64 124.5-99T480-840q75 0 140.5 28.5t114 77q48.5 48.5 77 114T840-480q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480-120Zm0-280q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Z" /></svg>
icon:settings = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M433-80q-27 0-46.5-18T363-142l-9-66q-13-5-24.5-12T307-235l-62 26q-25 11-50 2t-39-32l-47-82q-14-23-8-49t27-43l53-40q-1-7-1-13.5v-27q0-6.5 1-13.5l-53-40q-21-17-27-43t8-49l47-82q14-23 39-32t50 2l62 26q11-8 23-15t24-12l9-66q4-26 23.5-44t46.5-18h94q27 0 46.5 18t23.5 44l9 66q13 5 24.5 12t22.5 15l62-26q25-11 50-2t39 32l47 82q14 23 8 49t-27 43l-53 40q1 7 1 13.5v27q0 6.5-2 13.5l53 40q21 17 27 43t-8 49l-48 82q-14 23-39 32t-50-2l-60-26q-11 8-23 15t-24 12l-9 66q-4 26-23.5 44T527-80h-94Zm49-260q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Z" /></svg>
icon:star = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-269 314-169q-11 7-23 6t-21-8q-9-7-14-17.5t-2-23.5l44-189-147-127q-10-9-12.5-20.5T140-571q4-11 12-18t22-9l194-17 75-178q5-12 15.5-18t21.5-6q11 0 21.5 6t15.5 18l75 178 194 17q14 2 22 9t12 18q4 11 1.5 22.5T809-528L662-401l44 189q3 13-2 23.5T690-171q-9 7-21 8t-23-6L480-269Z" /></svg>
icon:stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m110-190 213-213q23-23 57-23t57 23l103 103 256-289q11-13 28.5-13t29.5 12q11 11 11.5 26.5T855-536L596-244q-23 26-57 27.5T480-240L380-340 170-130q-13 13-30 13t-30-13q-13-13-13-30t13-30Zm0-240 213-213q23-23 57-23t57 23l103 103 256-289q11-13 28.5-13t29.5 12q11 11 11.5 26.5T855-776L596-484q-23 26-57 27.5T480-480L380-580 170-370q-13 13-30 13t-30-13q-13-13-13-30t13-30Z" /></svg>
icon:text = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-200q-17 0-28.5-11.5T160-240q0-17 11.5-28.5T200-280h320q17 0 28.5 11.5T560-240q0 17-11.5 28.5T520-200H200Zm0-160q-17 0-28.5-11.5T160-400q0-17 11.5-28.5T200-440h560q17 0 28.5 11.5T800-400q0 17-11.5 28.5T760-360H200Zm0-160q-17 0-28.5-11.5T160-560q0-17 11.5-28.5T200-600h560q17 0 28.5 11.5T800-560q0 17-11.5 28.5T760-520H200Zm0-160q-17 0-28.5-11.5T160-720q0-17 11.5-28.5T200-760h560q17 0 28.5 11.5T800-720q0 17-11.5 28.5T760-680H200Z" /></svg>
icon:timer_off = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-80q-74 0-139.5-28.5T226-186q-49-49-77.5-114.5T120-440q0-60 18.5-115.5T192-656L84-764q-11-11-11-28t11-28q11-11 28-11t28 11l680 680q11 11 11 28t-11 28q-11 11-28 11t-28-11l-68-68q-48 35-103.5 53.5T480-80Zm-80-760q-17 0-28.5-11.5T360-880q0-17 11.5-28.5T400-920h160q17 0 28.5 11.5T600-880q0 17-11.5 28.5T560-840H400Zm348 516L520-552v-48q0-17-11.5-28.5T480-640q-10 0-18.5 4T448-624l-85-85q-18-18-13-43t29-33q24-8 49.5-11.5T480-800q60 0 117.5 20T706-722l28-28q11-11 28-11t28 11q11 11 11 28t-11 28l-28 28q38 51 58 108.5T840-440q0 26-3.5 51T825-339q-8 24-33 29t-44-14Z" /></svg>
@@ -59,6 +59,23 @@ icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-320q-66.85 0-113.42-46.58Q320-413.15 320-480t46.58-113.42Q413.15-640 480-640t113.42 46.58Q640-546.85 640-480t-46.58 113.42Q546.85-320 480-320ZM80-460q-8.5 0-14.25-5.76T60-480.03q0-8.51 5.75-14.24T80-500h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T180-460H80Zm700 0q-8.5 0-14.25-5.76T760-480.03q0-8.51 5.75-14.24T780-500h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T880-460H780ZM479.97-760q-8.51 0-14.24-5.75T460-780v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-880v100q0 8.5-5.76 14.25T479.97-760Zm0 700q-8.51 0-14.24-5.75T460-80v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-180v100q0 8.5-5.76 14.25T479.97-60ZM254.46-678.77l-57.61-55.85q-5.85-5.61-5.73-13.76.11-8.16 5.96-14.77 6.38-6.62 14.15-6.62 7.77 0 14.15 6.62L282-706.31q6.38 6.62 6.38 14.16 0 7.53-6 14.15t-13.65 6.12q-7.65-.5-14.27-6.89Zm480.16 481.92L678-253.69q-6.38-6.62-6.38-14.27 0-7.66 6.38-14.04 5.23-6.62 13.08-6.12 7.84.5 14.46 6.89l57.61 55.85q5.85 5.61 5.73 13.76-.11 8.16-5.96 14.77-6.38 6.62-14.15 6.62-7.77 0-14.15-6.62ZM678-677.62q-6.62-6-6.12-13.65t6.89-14.27l55.85-57.61q5.61-5.85 13.76-5.73 8.16.11 14.77 5.96 6.62 6.38 6.62 14.15 0 7.77-6.62 14.15L706.31-678q-6.62 6.38-14.16 6.38-7.53 0-14.15-6ZM196.85-196.68q-6.62-6.78-6.62-14.55 0-7.77 6.62-14.15L253.69-282q6.62-6.38 14.27-6.38 7.66 0 14.04 6.38 5.85 5.23 5.35 13.08-.5 7.84-6.12 14.46l-55.85 57.61q-6.38 6.62-14.15 6.5-7.77-.11-14.38-6.33Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M482.31-160Q349-160 255.65-253.35 162.31-346.69 162.31-480q0-98.77 56.54-181.42 56.53-82.66 160.38-118.89 12.23-4.31 21.46-2.27 9.23 2.04 15.23 7.96 6 5.93 7.66 15.24 1.65 9.3-2.5 19.53-7.77 19.08-11.27 38.85-3.5 19.77-3.5 41 0 106.92 74.54 181.46Q555.38-404 662.31-404q27.92 0 51.11-5.92 23.2-5.93 39.5-9.62 8.7-1.61 15.96.42 7.27 2.04 11.66 7.04 4.61 5 6.27 12.31 1.65 7.31-1.89 16.69-28.61 98-112.11 160.54Q589.31-160 482.31-160Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120ZM500-160.69q123.62-8.08 211.81-98.35T800-480q0-130.69-87.42-220.19-87.43-89.5-212.58-99.12v638.62Z" /></svg>
icon:btn_ok = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m422.46-380.31-99.84-99.84q-5.62-5.62-13.77-6-8.16-.39-14.54 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15l105.54 105.54q9.69 9.69 22.61 9.69t22.62-9.69l219.07-219.07q5.62-5.62 6-13.77.39-8.16-6-14.54-6.38-6.39-14.15-6.39-7.77 0-14.15 6.39L422.46-380.31ZM480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Z" /></svg>
icon:btn_cancel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-451.69 129.85 129.84q5.61 5.62 13.77 6 8.15.39 14.53-6 6.39-6.38 6.39-14.15 0-7.77-6.39-14.15L508.31-480l129.84-129.85q5.62-5.61 6-13.77.39-8.15-6-14.53-6.38-6.39-14.15-6.39-7.77 0-14.15 6.39L480-508.31 350.15-638.15q-5.61-5.62-13.77-6-8.15-.39-14.53 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15L451.69-480 321.85-350.15q-5.62 5.61-6 13.77-.39 8.15 6 14.53 6.38 6.39 14.15 6.39 7.77 0 14.15-6.39L480-451.69Zm.13 331.69q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Z" /></svg>
icon:btn_yes = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m422.46-380.31-99.84-99.84q-5.62-5.62-13.77-6-8.16-.39-14.54 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15l105.54 105.54q9.69 9.69 22.61 9.69t22.62-9.69l219.07-219.07q5.62-5.62 6-13.77.39-8.16-6-14.54-6.38-6.39-14.15-6.39-7.77 0-14.15 6.39L422.46-380.31ZM480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Z" /></svg>
icon:btn_no = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-460h320q8.5 0 14.25-5.76t5.75-14.27q0-8.51-5.75-14.24T640-500H320q-8.5 0-14.25 5.76T300-479.97q0 8.51 5.75 14.24T320-460Zm160.13 340q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Z" /></svg>
icon:btn_open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h204.61q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T429.23-760H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-204.61q0-8.54 5.73-14.27t14.27-5.73q8.54 0 14.27 5.73t5.73 14.27v204.61q0 27.62-18.5 46.12Q763-160 735.38-160H224.62ZM760-731.69 403.69-375.38q-5.61 5.61-13.77 6-8.15.38-14.54-6-6.38-6.39-6.38-14.16 0-7.77 6.38-14.15L731.69-760H580q-8.54 0-14.27-5.73T560-780q0-8.54 5.73-14.27T580-800h187.69q13.93 0 23.12 9.19 9.19 9.19 9.19 23.12V-580q0 8.54-5.73 14.27T780-560q-8.54 0-14.27-5.73T760-580v-151.69Z" /></svg>
icon:btn_close = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-451.69 129.85 129.84q5.61 5.62 13.77 6 8.15.39 14.53-6 6.39-6.38 6.39-14.15 0-7.77-6.39-14.15L508.31-480l129.84-129.85q5.62-5.61 6-13.77.39-8.15-6-14.53-6.38-6.39-14.15-6.39-7.77 0-14.15 6.39L480-508.31 350.15-638.15q-5.61-5.62-13.77-6-8.15-.39-14.53 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15L451.69-480 321.85-350.15q-5.62 5.61-6 13.77-.39 8.15 6 14.53 6.38 6.39 14.15 6.39 7.77 0 14.15-6.39L480-451.69Zm.13 331.69q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Z" /></svg>
icon:btn_save = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m697.38-171.08-94.76-94.77q-5.62-5.36-5.62-13.64 0-8.28 5.62-13.89 5.61-5.62 13.38-6 7.77-.39 13.38 5.23L700-223.54V-399q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T740-399v175.46l70.62-70.61q5.35-5.62 13.64-5.62 8.28 0 13.89 5.62 5.62 5.61 5.62 13.89 0 8.29-5.62 13.64l-95.53 95.54q-9.7 9.7-22.62 9.7-12.92 0-22.62-9.7ZM600-20q-8.5 0-14.25-5.76T580-40.03q0-8.51 5.75-14.24T600-60h240q8.5 0 14.25 5.76T860-39.97q0 8.51-5.75 14.24T840-20H600ZM244.62-180q-26.08 0-45.35-19.27Q180-218.54 180-244.62v-550.76q0-26.08 19.27-45.35Q218.54-860 244.62-860h248.53q13.27 0 25.29 5.23t20.71 13.92l181.7 181.7q8.69 8.69 13.92 20.71 5.23 12.02 5.23 25.29v66.46q0 13.73-9.29 23.02t-23.02 9.29H549.23q-26.65 0-45.63 18.98-18.98 18.98-18.98 45.63v237.46q0 13.73-9.29 23.02T452.31-180H244.62Zm303.84-440H700L500-820l200 200-200-200v151.54q0 20.19 14.13 34.33Q528.27-620 548.46-620Z" /></svg>
icon:btn_browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M180-200q-25.31 0-42.65-17.35Q120-234.69 120-260v-435.38q0-25.31 19.65-44.97Q159.31-760 184.62-760H357q12.92 0 25.12 5.23 12.19 5.23 20.88 13.92L463.85-680h349.23q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T813.08-640H297.85Q242-640 201-604.08q-41 35.93-41 90.54v248.92q0 8.47 4.23 13.85 4.23 5.39 11.15 9.23l76.7-256.84q6.46-20.62 23.73-33.43 17.27-12.81 38.65-12.81h512.92q32.54 0 52.2 25.97 19.65 25.96 10.19 57.03l-65.85 219.24q-5.69 19.07-21.8 30.73Q786-200 766.15-200H180Z" /></svg>
icon:btn_list = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M404.62-220q-8.5 0-14.25-5.76t-5.75-14.27q0-8.51 5.75-14.24t14.25-5.73H780q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T780-220H404.62Zm0-240q-8.5 0-14.25-5.76t-5.75-14.27q0-8.51 5.75-14.24t14.25-5.73H780q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T780-460H404.62Zm0-240q-8.5 0-14.25-5.76t-5.75-14.27q0-8.51 5.75-14.24t14.25-5.73H780q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T780-700H404.62ZM213.08-186.92q-21.9 0-37.49-15.59Q160-218.11 160-240t15.59-37.49q15.59-15.59 37.49-15.59 21.89 0 37.48 15.59 15.59 15.6 15.59 37.49t-15.59 37.49q-15.59 15.59-37.48 15.59Zm0-240q-21.9 0-37.49-15.59Q160-458.11 160-480t15.59-37.49q15.59-15.59 37.49-15.59 21.89 0 37.48 15.59 15.59 15.6 15.59 37.49t-15.59 37.49q-15.59 15.59-37.48 15.59Zm0-240q-21.9 0-37.49-15.59Q160-698.11 160-720t15.59-37.49q15.59-15.59 37.49-15.59 21.89 0 37.48 15.59 15.59 15.6 15.59 37.49t-15.59 37.49q-15.59 15.59-37.48 15.59Z" /></svg>
icon:btn_new = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h180q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T404.62-760h-180q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-180q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75t5.73 14.25v180q0 27.62-18.5 46.12Q763-160 735.38-160H224.62ZM640-640H540q-8.5 0-14.25-5.76T520-660.03q0-8.51 5.75-14.24T540-680h100v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T680-780v100h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T780-640H680v100q0 8.5-5.76 14.25T659.97-520q-8.51 0-14.24-5.75T640-540v-100Z" /></svg>
icon:btn_create = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-315.92-145.23 87.69q-6.39 3.15-11.85 2.54-5.46-.62-10.61-3.77-5.16-3.16-7.85-9.04-2.69-5.88-.46-12.73l38.62-164.39-127.77-110.84q-5.39-4.39-7.12-10.5-1.73-6.12.73-11.73 2.46-5.62 6.62-9.16 4.15-3.53 11.23-4.77l168.61-14.69L460.69-733q2.69-6.62 7.81-9.54 5.12-2.92 11.5-2.92t11.5 2.92q5.12 2.92 7.81 9.54l65.77 155.69 168.61 14.69q7.08 1.24 11.23 4.77 4.16 3.54 6.62 9.16 2.46 5.61.73 11.73-1.73 6.11-7.12 10.5L617.38-415.62 656-251.23q2.23 6.85-.46 12.73-2.69 5.88-7.85 9.04-5.15 3.15-10.61 3.77-5.46.61-11.85-2.54L480-315.92Z" /></svg>
icon:btn_reset = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M316.15-240q-8.53 0-14.27-5.73-5.73-5.73-5.73-14.27t5.73-14.27q5.74-5.73 14.27-5.73h270.16q62.23 0 106.04-42.69 43.8-42.69 43.8-104.23 0-61.54-43.8-103.85-43.81-42.31-106.04-42.31H276.62l104.46 104.46q6.38 6.39 6.38 14.16 0 7.77-6.38 14.15-6.39 6.39-14.54 6-8.16-.38-13.77-6L222.62-570.46q-5.24-5.23-7.35-10.69-2.12-5.47-2.12-11.93t2.12-11.92q2.11-5.46 7.35-10.69l130.15-130.16q6.38-6.38 14.15-6.38 7.77 0 14.16 6.38 6.38 6.39 6 14.54-.39 8.16-6 13.77L276.62-613.08h309.69q78.54 0 134.19 54.16 55.65 54.15 55.65 132 0 77.84-55.65 132.38Q664.85-240 586.31-240H316.15Z" /></svg>
icon:btn_insert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M460-600H360q-8.5 0-14.25-5.76T340-620.03q0-8.51 5.75-14.24T360-640h240q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T600-600H500v260q0 8.5-5.76 14.25T479.97-320q-8.51 0-14.24-5.75T460-340v-260ZM95.38-127.69v-104.62q0-13.73 9.29-23.02t23.02-9.29H160v-430.76h-32.44q-13.79 0-22.98-9.29-9.2-9.29-9.2-23.02v-104.62q0-13.73 9.29-23.02t23.02-9.29h104.62q13.73 0 23.02 9.29t9.29 23.02V-800h430.76v-32.44q0-13.79 9.29-22.98 9.29-9.2 23.02-9.2h104.62q13.73 0 23.02 9.29t9.29 23.02v104.62q0 13.73-9.29 23.02t-23.02 9.29H800v430.76h32.44q13.79 0 22.98 9.29 9.2 9.29 9.2 23.02v104.62q0 13.73-9.29 23.02t-23.02 9.29H727.69q-13.73 0-23.02-9.29t-9.29-23.02V-160H264.62v32.44q0 13.79-9.29 22.98-9.29 9.2-23.02 9.2H127.69q-13.73 0-23.02-9.29t-9.29-23.02ZM264.62-200h430.76v-32.44q0-13.79 9.29-22.98 9.29-9.2 23.02-9.2H760v-430.76h-32.44q-13.79 0-22.98-9.29-9.2-9.29-9.2-23.02V-760H264.62v32.44q0 13.79-9.29 22.98-9.29 9.2-23.02 9.2H200v430.76h32.44q13.79 0 22.98 9.29 9.2 9.29 9.2 23.02V-200Z" /></svg>
icon:btn_apply = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-396.31-99.85-99.84q-5.61-5.62-13.77-6-8.15-.39-14.53 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15l105.53 105.54q9.7 9.69 22.62 9.69 12.92 0 22.62-9.69l219.07-219.07q5.62-5.62 6-13.77.39-8.16-6-14.54-6.38-6.39-14.15-6.39-7.77 0-14.16 6.39L424-396.31ZM224.62-160q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h510.76q27.62 0 46.12 18.5Q800-763 800-735.38v510.76q0 27.62-18.5 46.12Q763-160 735.38-160H224.62Z" /></svg>
icon:btn_build = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M763.85-257.38V-190q0 6.15 4.61 10.77 4.62 4.61 10.77 4.61 6.15 0 10.77-4.61 4.62-4.62 4.62-10.77v-103.85q0-6.46-4.85-11.3-4.85-4.85-11.31-4.85H674.62q-6.16 0-10.77 4.62-4.62 4.61-4.62 10.76 0 6.16 4.62 10.77 4.61 4.62 10.77 4.62H742l-90.31 90.31q-4.46 4.46-4.84 10.54-.39 6.07 4.84 11.3 4.74 4.46 11.07 4.46 6.32 0 10.78-4.46l90.31-90.3ZM720-75.38q-66.85 0-113.42-46.58Q560-168.54 560-235.38q0-66.85 46.58-113.43 46.57-46.57 113.42-46.57t113.42 46.57Q880-302.23 880-235.38q0 66.84-46.58 113.42Q786.85-75.38 720-75.38ZM320-610.77h320q8.5 0 14.25-5.76 5.75-5.75 5.75-14.27 0-8.51-5.75-14.24T640-650.77H320q-8.5 0-14.25 5.76T300-630.74q0 8.51 5.75 14.24t14.25 5.73ZM224.62-160q-26.66 0-45.64-18.98T160-224.62v-510.76q0-26.66 18.98-45.64T224.62-800h510.76q26.66 0 45.64 18.98T800-735.38v200.3q0 15.09-11.15 23.47-11.16 8.38-25.85 5.46-10.08-2.7-20.95-3.66-10.88-.96-22.05-.96-20.23 0-39.35 3.19-19.11 3.2-37.57 9.04-4.5-.97-10-1.22-5.5-.24-10-.24H320q-8.5 0-14.25 5.76T300-479.97q0 8.51 5.75 14.24T320-460h243.46q-30.31 20.85-53.27 48.92-22.96 28.08-37.81 61.85H320q-8.5 0-14.25 5.76-5.75 5.75-5.75 14.27 0 8.51 5.75 14.24t14.25 5.73h138.38q-4.3 16.92-6.73 34.11-2.42 17.2-2.42 35.12 0 10 .46 21.08.46 11.07 2.39 22.69 1.92 13.92-6.21 25.08Q437.74-160 423.92-160h-199.3Z" /></svg>
icon:btn_print = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M344.62-160q-26.66 0-45.64-18.98T280-224.62V-320h-72.31q-26.65 0-45.63-18.98-18.98-18.98-18.98-45.64v-150.76q0-34 23.07-57 23.08-23 56.93-23h513.84q34 0 57 23t23 57v150.76q0 26.66-18.98 45.64T752.31-320H680v95.38q0 26.66-18.98 45.64T615.38-160H344.62ZM680-646.15H280v-64.76q0-26.71 18.98-45.59 18.98-18.89 45.64-18.89h270.76q26.66 0 45.64 18.99Q680-737.42 680-710.77v64.62Zm24.62 170.77q17 0 28.5-11.5t11.5-28.5q0-17-11.5-28.5t-28.5-11.5q-17 0-28.5 11.5t-11.5 28.5q0 17 11.5 28.5t28.5 11.5ZM344.62-200h270.76q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7v-132.3q0-10.77-6.92-17.7-6.93-6.92-17.7-6.92H344.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7v132.3q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92Z" /></svg>
icon:btn_preview = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-26.66 0-45.64-18.98T160-224.62v-510.76q0-26.66 18.98-45.64T224.62-800h510.76q26.66 0 45.64 18.98T800-735.38v510.76q0 26.66-18.98 45.64T735.38-160H224.62Zm0-40h510.76q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7V-680H200v455.38q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92ZM480-320q-65.08 0-117.27-33.35-52.19-33.34-78.88-86.65 26.69-53.31 78.88-86.65Q414.92-560 480-560t117.27 33.35q52.19 33.34 78.88 86.65-26.69 53.31-78.88 86.65Q545.08-320 480-320Zm-.18-75.38q-18.67 0-31.55-13.07-12.89-13.07-12.89-31.73 0-18.67 13.07-31.55 13.07-12.89 31.73-12.89 18.67 0 31.55 13.07 12.89 13.07 12.89 31.73 0 18.67-13.07 31.55-13.07 12.89-31.73 12.89Zm.18 30.76q31.23 0 53.31-22.07 22.07-22.08 22.07-53.31 0-31.23-22.07-53.31-22.08-22.07-53.31-22.07-31.23 0-53.31 22.07-22.07 22.08-22.07 53.31 0 31.23 22.07 53.31 22.08 22.07 53.31 22.07Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M460-460H260q-8.5 0-14.25-5.76T240-480.03q0-8.51 5.75-14.24T260-500h200v-200q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-700v200h200q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T700-460H500v200q0 8.5-5.76 14.25T479.97-240q-8.51 0-14.24-5.75T460-260v-200Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m420-203.08-149.54 64.31q-32.31 13.92-61.38-5.35Q180-163.38 180-197.92v-457.46q0-27.62 18.5-46.12Q217-720 244.62-720h350.76q27.62 0 46.12 18.5Q660-683 660-655.38v457.46q0 34.54-29.08 53.8-29.07 19.27-61.38 5.35L420-203.08ZM760-220q-8.54 0-14.27-5.73T740-240v-535.39q0-9.23-7.69-16.92-7.69-7.69-16.93-7.69H320q-8.54 0-14.27-5.73T300-820q0-8.54 5.73-14.27T320-840h395.38q27.62 0 46.12 18.5Q780-803 780-775.39V-240q0 8.54-5.73 14.27T760-220Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M180-200q-25.31 0-42.65-17.35Q120-234.69 120-260v-435.38q0-25.31 19.65-44.97Q159.31-760 184.62-760H357q12.92 0 25.12 5.23 12.19 5.23 20.88 13.92L463.85-680h349.23q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T813.08-640H297.85Q242-640 201-604.08q-41 35.93-41 90.54v248.92q0 8.47 4.23 13.85 4.23 5.39 11.15 9.23l76.7-256.84q6.46-20.62 23.73-33.43 17.27-12.81 38.65-12.81h512.92q32.54 0 52.2 25.97 19.65 25.96 10.19 57.03l-65.85 219.24q-5.69 19.07-21.8 30.73Q786-200 766.15-200H180Z" /></svg>
@@ -94,7 +111,6 @@ icon:minimise = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:more_arrow = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M436.4-350.31q-6.71 0-11.55-4.44-4.85-4.44-4.85-11.71v-227.08q0-7.27 4.95-11.71 4.95-4.44 11.55-4.44 1.65 0 11.35 5.23l107.07 107.08q3.7 3.69 5.7 7.97 2 4.28 2 9.41t-2 9.41q-2 4.28-5.7 7.98L447.83-355.52q-2.21 2.21-5.15 3.71-2.93 1.5-6.28 1.5Z" /></svg>
icon:more_vertical = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-218.46q-16.5 0-28.25-11.75T440-258.46q0-16.5 11.75-28.25T480-298.46q16.5 0 28.25 11.75T520-258.46q0 16.5-11.75 28.25T480-218.46ZM480-440q-16.5 0-28.25-11.75T440-480q0-16.5 11.75-28.25T480-520q16.5 0 28.25 11.75T520-480q0 16.5-11.75 28.25T480-440Zm0-221.54q-16.5 0-28.25-11.75T440-701.54q0-16.5 11.75-28.25T480-741.54q16.5 0 28.25 11.75T520-701.54q0 16.5-11.75 28.25T480-661.54Z" /></svg>
icon:noncheckable = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-460h320q8.54 0 14.27-5.73T660-480q0-8.54-5.73-14.27T640-500H320q-8.54 0-14.27 5.73T300-480q0 8.54 5.73 14.27T320-460Zm-95.38 300q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h510.76q27.62 0 46.12 18.5Q800-763 800-735.38v510.76q0 27.62-18.5 46.12Q763-160 735.38-160H224.62Z" /></svg>
icon:open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h204.61q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T429.23-760H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-204.61q0-8.54 5.73-14.27t14.27-5.73q8.54 0 14.27 5.73t5.73 14.27v204.61q0 27.62-18.5 46.12Q763-160 735.38-160H224.62ZM760-731.69 403.69-375.38q-5.61 5.61-13.77 6-8.15.38-14.54-6-6.38-6.39-6.38-14.16 0-7.77 6.38-14.15L731.69-760H580q-8.54 0-14.27-5.73T560-780q0-8.54 5.73-14.27T580-800h187.69q13.93 0 23.12 9.19 9.19 9.19 9.19 23.12V-580q0 8.54-5.73 14.27T780-560q-8.54 0-14.27-5.73T760-580v-151.69Z" /></svg>
icon:panel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-26.85 0-45.74-18.88Q160-197.77 160-224.62v-510.76q0-26.85 18.88-45.74Q197.77-800 224.62-800h510.76q26.85 0 45.74 18.88Q800-762.23 800-735.38v510.76q0 26.85-18.88 45.74Q762.23-160 735.38-160H224.62ZM200-360h560v-375.38q0-9.24-7.69-16.93-7.69-7.69-16.93-7.69H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93V-360Z" /></svg>
icon:pin = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M600-760v296.92l57.23 57.23q2.92 2.93 4.39 6.58 1.46 3.65 1.46 7.55v11.21q0 8.28-5.97 14.39-5.98 6.12-14.8 6.12H500v186.61q0 6.7-2.23 12.28-2.23 5.57-7.46 10.8l-3.23 3.23q-3.07 2.93-7.15 2.93t-7.01-2.93l-3.23-3.23q-5.23-5.23-7.46-10.97-2.23-5.75-2.23-11.87V-360H317.69q-8.82 0-14.8-6.12-5.97-6.11-5.97-14.39v-11.21q0-3.9 1.46-7.55 1.47-3.65 4.39-6.58L360-463.08V-760h-20q-8.5 0-14.25-5.76T320-780.03q0-8.51 5.75-14.24T340-800h280q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T620-760h-20Z" /></svg>
icon:project_copy = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M144.62-169.23q-26.66 0-45.64-18.98T80-233.85v-423.07q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75t5.73 14.25v423.07q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92H740q8.5 0 14.25 5.76 5.75 5.75 5.75 14.27 0 8.51-5.75 14.24T740-169.23H144.62Zm120-120q-26.66 0-45.64-18.98T200-353.85v-421.53q0-26.66 18.98-45.64T264.62-840h171.61q13.27 0 25.29 5.23t20.71 13.92L543.08-760h272.3q26.66 0 45.64 18.98T880-695.38v341.53q0 26.66-18.98 45.64t-45.64 18.98H264.62Z" /></svg>
@@ -103,7 +119,6 @@ icon:refresh = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:remove = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M260-460q-8.5 0-14.25-5.76T240-480.03q0-8.51 5.75-14.24T260-500h440q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T700-460H260Z" /></svg>
icon:revert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M478.46-160q-115.23 0-202.61-71.12Q188.46-302.23 165.62-412q-2.47-8.85 2.6-16.37 5.06-7.53 13.68-8.73 8.1-1.21 14.56 3.72 6.46 4.92 9.16 14Q227.31-324 303.46-262q76.16 62 175 62 117 0 198.5-81.5t81.5-198.5q0-117-81.5-198.5T478.46-760q-62.08 0-116.69 26.23-54.62 26.23-96.39 72.23h79.24q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24t-14.25 5.73H230.77q-13.73 0-23.02-9.29t-9.29-23.02v-113.84q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75t5.73 14.25v75.54q46.39-50.93 108.73-79.39Q409.54-800 478.46-800q66.6 0 124.76 25.04 58.16 25.04 101.66 68.54 43.5 43.5 68.54 101.65 25.04 58.14 25.04 124.73 0 66.58-25.04 124.77t-68.54 101.69q-43.5 43.5-101.66 68.54Q545.06-160 478.46-160Zm0-280q-16.08 0-28.04-11.96T438.46-480q0-16.08 11.96-28.04T478.46-520q16.08 0 28.04 11.96T518.46-480q0 16.08-11.96 28.04T478.46-440Z" /></svg>
icon:settings = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M438.38-120q-13.92 0-24.19-9.15-10.27-9.16-12.73-22.85l-10.54-83.69q-19.15-5.77-41.42-18.16-22.27-12.38-37.88-26.53L235-247.46q-12.69 5.61-25.77 1.23-13.08-4.39-20.15-16.62l-43.16-74.3q-7.07-12.23-4.15-25.54 2.92-13.31 13.92-21.85l66.85-50q-1.77-10.84-2.92-22.34-1.16-11.5-1.16-22.35 0-10.08 1.16-21.19 1.15-11.12 2.92-25.04l-66.85-50q-11-8.54-13.54-22.23-2.53-13.69 4.54-25.93l42.39-72q7.07-11.46 20.15-16.23 13.08-4.77 25.77.85l75.85 32.15q17.92-14.92 38.77-26.92 20.84-12 40.53-18.54L401.46-808q2.46-13.69 12.73-22.85 10.27-9.15 24.19-9.15h83.24q13.92 0 24.19 9.15 10.27 9.16 12.73 22.85l10.54 84.46q23 8.08 40.65 18.54 17.65 10.46 36.35 26.15L725.77-711q12.69-5.62 25.77-.85 13.08 4.77 20.15 16.23l42.39 72.77q7.07 12.23 4.15 25.54-2.92 13.31-13.92 21.85l-69.93 52.31q3.31 12.38 3.7 22.73.38 10.34.38 20.42 0 9.31-.77 19.65-.77 10.35-3.54 25.04l67.62 50.77q11 8.54 14.31 21.85 3.3 13.31-3.77 25.54l-42.62 73.53q-7.07 12.24-20.54 16.62-13.46 4.38-26.15-1.23l-76.92-32.92q-18.7 15.69-37.62 26.92-18.92 11.23-39.38 17.77L558.54-152q-2.46 13.69-12.73 22.85-10.27 9.15-24.19 9.15h-83.24Zm40.54-260q41.85 0 70.93-29.08 29.07-29.07 29.07-70.92t-29.07-70.92Q520.77-580 478.92-580q-42.07 0-71.04 29.08-28.96 29.07-28.96 70.92t28.96 70.92Q436.85-380 478.92-380Z" /></svg>
icon:star = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-315.92-145.23 87.69q-6.39 3.15-11.85 2.54-5.46-.62-10.61-3.77-5.16-3.16-7.85-9.04-2.69-5.88-.46-12.73l38.62-164.39-127.77-110.84q-5.39-4.39-7.12-10.5-1.73-6.12.73-11.73 2.46-5.62 6.62-9.16 4.15-3.53 11.23-4.77l168.61-14.69L460.69-733q2.69-6.62 7.81-9.54 5.12-2.92 11.5-2.92t11.5 2.92q5.12 2.92 7.81 9.54l65.77 155.69 168.61 14.69q7.08 1.24 11.23 4.77 4.16 3.54 6.62 9.16 2.46 5.61.73 11.73-1.73 6.11-7.12 10.5L617.38-415.62 656-251.23q2.23 6.85-.46 12.73-2.69 5.88-7.85 9.04-5.15 3.15-10.61 3.77-5.46.61-11.85-2.54L480-315.92Z" /></svg>
icon:stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m125.38-174.62 212.24-212.23q18.38-18.38 45.46-18.38 27.07 0 45.46 18.38l96.08 96.08q7.69 7.69 18.46 7.31 10.77-.39 17.69-8.85l248.31-285.15q5.61-6.85 13.5-6.85 7.88 0 14.5 5.85 5.61 5.61 6.11 13.04.5 7.42-5.11 14.04L589.85-264.77q-18.39 21.39-46.23 22.5-27.85 1.12-48.24-19.27l-94.61-94.61q-6.92-6.93-17.69-6.93-10.77 0-17.7 6.93L154.62-145.38q-6.08 6.07-14.24 6.46-8.15.38-15-6.46-6.84-6.85-6.84-14.62t6.84-14.62Zm0-240 212.24-212.23q18.38-18.38 45.46-18.38 27.07 0 45.46 18.38l96.08 96.08q7.69 7.69 18.46 7.31 10.77-.39 17.69-8.85l248.31-285.15q5.61-6.85 13.5-6.85 7.88 0 14.5 5.85 5.61 5.61 6.11 13.04.5 7.42-5.11 14.04L589.85-504.77q-18.39 21.39-46.23 22.5-27.85 1.12-48.24-19.27l-94.61-94.61q-6.92-6.93-17.69-6.93-10.77 0-17.7 6.93L154.62-385.38q-6.08 6.07-14.24 6.46-8.15.38-15-6.46-6.84-6.85-6.84-14.62t6.84-14.62Z" /></svg>
icon:text = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-231.54q-10.47 0-17.54-6.84-7.08-6.85-7.08-16.96 0-10.12 7.08-17.39 7.07-7.27 17.54-7.27H500q8.5 0 14.25 5.97t5.75 14.8q0 8.5-5.73 14.25t-13.5 5.75l-276.15 7.69ZM220-386.92q-8.5 0-14.25-5.76T200-406.95q0-8.51 5.75-14.24t14.25-5.73h520q8.5 0 14.25 5.75 5.75 5.76 5.75 14.27 0 8.52-5.75 14.25T740-386.92H220Zm0-146.16q-8.5 0-14.25-5.75-5.75-5.76-5.75-14.27 0-8.52 5.75-14.25t14.25-5.73h520q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T740-533.08H220ZM224.62-680q-10.47 0-17.54-7.08-7.08-7.07-7.08-17.54 0-10.46 7.08-17.53 7.07-7.08 17.54-7.08h510.76q10.47 0 17.54 7.08 7.08 7.07 7.08 17.53 0 10.47-7.08 17.54-7.07 7.08-17.54 7.08H224.62Z" /></svg>
icon:timer_off = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-120q-66.31 0-124.5-25.04t-101.81-68.65q-43.61-43.62-68.65-101.81Q160-373.69 160-440q0-61.54 21.96-117.42 21.96-55.89 63.89-100.12L119.38-784q-5.61-5.62-6-13.77-.38-8.15 6-14.54 6.39-6.38 14.16-6.38 7.77 0 14.15 6.38l664.62 664.62q5.61 5.61 6 13.77.38 8.15-6 14.54-6.39 6.38-14.16 6.38-7.77 0-14.15-6.38l-86.46-86.47q-42.62 40.39-99.66 63.12Q540.85-120 480-120Zm-84.62-740q-8.53 0-14.26-5.73-5.74-5.73-5.74-14.27t5.74-14.27q5.73-5.73 14.26-5.73h169.24q8.53 0 14.26 5.73 5.74 5.73 5.74 14.27t-5.74 14.27q-5.73 5.73-14.26 5.73H395.38Zm331.85 514.46L500-572.77v-31.85q0-8.53-5.73-14.26-5.73-5.74-14.27-5.74-6.15 0-11.19 4-5.04 4-6.96 9.7l-76.54-76.54q-14.93-14.92-10.69-35.69 4.23-20.77 24.38-26.47 20.15-5.69 40.65-8.03Q460.15-760 480-760q56.92 0 110.96 20.38 54.04 20.39 100.42 59.16L720.92-710q5.62-5.62 13.77-6 8.16-.38 14.54 6 6.39 6.38 6.39 14.15 0 7.77-6.39 14.16l-29.54 29.54q38.77 46.38 59.54 100.8Q800-496.92 800-440q0 19.85-2.35 40.23-2.34 20.39-8.03 40.77-5.7 20.15-26.47 24.38-20.77 4.24-35.92-10.92Z" /></svg>
@@ -59,6 +59,23 @@ icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 80q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM80-440q-17 0-28.5-11.5T40-480q0-17 11.5-28.5T80-520h80q17 0 28.5 11.5T200-480q0 17-11.5 28.5T160-440H80Zm720 0q-17 0-28.5-11.5T760-480q0-17 11.5-28.5T800-520h80q17 0 28.5 11.5T920-480q0 17-11.5 28.5T880-440h-80ZM480-760q-17 0-28.5-11.5T440-800v-80q0-17 11.5-28.5T480-920q17 0 28.5 11.5T520-880v80q0 17-11.5 28.5T480-760Zm0 720q-17 0-28.5-11.5T440-80v-80q0-17 11.5-28.5T480-200q17 0 28.5 11.5T520-160v80q0 17-11.5 28.5T480-40ZM226-678l-43-42q-12-11-11.5-28t11.5-29q12-12 29-12t28 12l42 43q11 12 11 28t-11 28q-11 12-27.5 11.5T226-678Zm494 495-42-43q-11-12-11-28.5t11-27.5q11-12 27.5-11.5T734-282l43 42q12 11 11.5 28T777-183q-12 12-29 12t-28-12Zm-42-495q-12-11-11.5-27.5T678-734l42-43q11-12 28-11.5t29 11.5q12 12 12 29t-12 28l-43 42q-12 11-28 11t-28-11ZM183-183q-12-12-12-29t12-28l43-42q12-11 28.5-11t27.5 11q12 11 11.5 27.5T282-226l-42 43q-11 12-28 11.5T183-183Zm297-297Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-120q-151 0-255.5-104.5T120-480q0-138 90-239.5T440-838q13-2 23 3.5t16 14.5q6 9 6.5 21t-7.5 23q-17 26-25.5 55t-8.5 61q0 90 63 153t153 63q31 0 61.5-9t54.5-25q11-7 22.5-6.5T819-479q10 5 15.5 15t3.5 24q-14 138-117.5 229T480-120Zm0-80q88 0 158-48.5T740-375q-20 5-40 8t-40 3q-123 0-209.5-86.5T364-660q0-20 3-40t8-40q-78 32-126.5 102T200-480q0 116 82 198t198 82Zm-10-270Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><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" /></svg>
icon:btn_ok = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-408-86-86q-11-11-28-11t-28 11q-11 11-11 28t11 28l114 114q12 12 28 12t28-12l226-226q11-11 11-28t-11-28q-11-11-28-11t-28 11L424-408Zm56 328q-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_cancel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-424 116 116q11 11 28 11t28-11q11-11 11-28t-11-28L536-480l116-116q11-11 11-28t-11-28q-11-11-28-11t-28 11L480-536 364-652q-11-11-28-11t-28 11q-11 11-11 28t11 28l116 116-116 116q-11 11-11 28t11 28q11 11 28 11t28-11l116-116Zm0 344q-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_yes = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-408-86-86q-11-11-28-11t-28 11q-11 11-11 28t11 28l114 114q12 12 28 12t28-12l226-226q11-11 11-28t-11-28q-11-11-28-11t-28 11L424-408Zm56 328q-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_no = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-440h320q17 0 28.5-11.5T680-480q0-17-11.5-28.5T640-520H320q-17 0-28.5 11.5T280-480q0 17 11.5 28.5T320-440ZM480-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h240q17 0 28.5 11.5T480-800q0 17-11.5 28.5T440-760H200v560h560v-240q0-17 11.5-28.5T800-480q17 0 28.5 11.5T840-440v240q0 33-23.5 56.5T760-120H200Zm560-584L416-360q-11 11-28 11t-28-11q-11-11-11-28t11-28l344-344H600q-17 0-28.5-11.5T560-800q0-17 11.5-28.5T600-840h200q17 0 28.5 11.5T840-800v200q0 17-11.5 28.5T800-560q-17 0-28.5-11.5T760-600v-104Z" /></svg>
icon:btn_close = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-424 116 116q11 11 28 11t28-11q11-11 11-28t-11-28L536-480l116-116q11-11 11-28t-11-28q-11-11-28-11t-28 11L480-536 364-652q-11-11-28-11t-28 11q-11 11-11 28t11 28l116 116-116 116q-11 11-11 28t11 28q11 11 28 11t28-11l116-116Zm0 344q-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_save = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m680-272-36-36q-11-11-28-11t-28 11q-11 11-11 28t11 28l104 104q12 12 28 12t28-12l104-104q11-11 11-28t-11-28q-11-11-28-11t-28 11l-36 36v-127q0-17-11.5-28.5T720-439q-17 0-28.5 11.5T680-399v127ZM600-80h240q17 0 28.5 11.5T880-40q0 17-11.5 28.5T840 0H600q-17 0-28.5-11.5T560-40q0-17 11.5-28.5T600-80Zm-360-80q-33 0-56.5-23.5T160-240v-560q0-33 23.5-56.5T240-880h247q16 0 30.5 6t25.5 17l194 194q11 11 17 25.5t6 30.5v48q0 17-11.5 28.5T720-519q-17 0-28.5-11.5T680-559v-41H540q-25 0-42.5-17.5T480-660v-140H240v560h200q17 0 28.5 11.5T480-200q0 17-11.5 28.5T440-160H240Zm0-80v-560 560Z" /></svg>
icon:btn_browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h207q16 0 30.5 6t25.5 17l57 57h360q17 0 28.5 11.5T880-680q0 17-11.5 28.5T840-640H447l-80-80H160v480l79-263q8-26 29.5-41.5T316-560h516q41 0 64.5 32.5T909-457l-72 240q-8 26-29.5 41.5T760-160H160Zm84-80h516l72-240H316l-72 240Zm-84-262v-218 218Zm84 262 72-240-72 240Z" /></svg>
icon:btn_list = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M400-200q-17 0-28.5-11.5T360-240q0-17 11.5-28.5T400-280h400q17 0 28.5 11.5T840-240q0 17-11.5 28.5T800-200H400Zm0-240q-17 0-28.5-11.5T360-480q0-17 11.5-28.5T400-520h400q17 0 28.5 11.5T840-480q0 17-11.5 28.5T800-440H400Zm0-240q-17 0-28.5-11.5T360-720q0-17 11.5-28.5T400-760h400q17 0 28.5 11.5T840-720q0 17-11.5 28.5T800-680H400ZM200-160q-33 0-56.5-23.5T120-240q0-33 23.5-56.5T200-320q33 0 56.5 23.5T280-240q0 33-23.5 56.5T200-160Zm0-240q-33 0-56.5-23.5T120-480q0-33 23.5-56.5T200-560q33 0 56.5 23.5T280-480q0 33-23.5 56.5T200-400Zm0-240q-33 0-56.5-23.5T120-720q0-33 23.5-56.5T200-800q33 0 56.5 23.5T280-720q0 33-23.5 56.5T200-640Z" /></svg>
icon:btn_new = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h200q17 0 28.5 11.5T440-800q0 17-11.5 28.5T400-760H200v560h560v-200q0-17 11.5-28.5T800-440q17 0 28.5 11.5T840-400v200q0 33-23.5 56.5T760-120H200Zm440-520h-80q-17 0-28.5-11.5T520-680q0-17 11.5-28.5T560-720h80v-80q0-17 11.5-28.5T680-840q17 0 28.5 11.5T720-800v80h80q17 0 28.5 11.5T840-680q0 17-11.5 28.5T800-640h-80v80q0 17-11.5 28.5T680-520q-17 0-28.5-11.5T640-560v-80Z" /></svg>
icon:btn_create = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm126 18L314-169q-11 7-23 6t-21-8q-9-7-14-17.5t-2-23.5l44-189-147-127q-10-9-12.5-20.5T140-571q4-11 12-18t22-9l194-17 75-178q5-12 15.5-18t21.5-6q11 0 21.5 6t15.5 18l75 178 194 17q14 2 22 9t12 18q4 11 1.5 22.5T809-528L662-401l44 189q3 13-2 23.5T690-171q-9 7-21 8t-23-6L480-269Zm0-201Z" /></svg>
icon:btn_reset = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-200q-17 0-28.5-11.5T280-240q0-17 11.5-28.5T320-280h244q63 0 109.5-40T720-420q0-60-46.5-100T564-560H312l76 76q11 11 11 28t-11 28q-11 11-28 11t-28-11L188-572q-6-6-8.5-13t-2.5-15q0-8 2.5-15t8.5-13l144-144q11-11 28-11t28 11q11 11 11 28t-11 28l-76 76h252q97 0 166.5 63T800-420q0 94-69.5 157T564-200H320Z" /></svg>
icon:btn_insert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M440-560h-80q-17 0-28.5-11.5T320-600q0-17 11.5-28.5T360-640h240q17 0 28.5 11.5T640-600q0 17-11.5 28.5T600-560h-80v200q0 17-11.5 28.5T480-320q-17 0-28.5-11.5T440-360v-200ZM40-80v-160q0-17 11.5-28.5T80-280h40v-400H80q-17 0-28.5-11.5T40-720v-160q0-17 11.5-28.5T80-920h160q17 0 28.5 11.5T280-880v40h400v-40q0-17 11.5-28.5T720-920h160q17 0 28.5 11.5T920-880v160q0 17-11.5 28.5T880-680h-40v400h40q17 0 28.5 11.5T920-240v160q0 17-11.5 28.5T880-40H720q-17 0-28.5-11.5T680-80v-40H280v40q0 17-11.5 28.5T240-40H80q-17 0-28.5-11.5T40-80Zm240-120h400v-40q0-17 11.5-28.5T720-280h40v-400h-40q-17 0-28.5-11.5T680-720v-40H280v40q0 17-11.5 28.5T240-680h-40v400h40q17 0 28.5 11.5T280-240v40ZM120-760h80v-80h-80v80Zm640 0h80v-80h-80v80Zm0 640h80v-80h-80v80Zm-640 0h80v-80h-80v80Zm80-640Zm560 0Zm0 560Zm-560 0Z" /></svg>
icon:btn_apply = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-424-86-86q-11-11-28-11t-28 11q-11 11-11 28t11 28l114 114q12 12 28 12t28-12l226-226q11-11 11-28t-11-28q-11-11-28-11t-28 11L424-424ZM200-120q-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" /></svg>
icon:btn_build = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M760-252v72q0 8 6 14t14 6q8 0 14-6t6-14v-120q0-8-6-14t-14-6H660q-8 0-14 6t-6 14q0 8 6 14t14 6h72l-98 98q-6 6-6 14t6 14q6 6 14 6t14-6l98-98ZM200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v200q0 17-11.5 28.5T800-520q-17 0-28.5-11.5T760-560v-200H200v560h200q17 0 28.5 11.5T440-160q0 17-11.5 28.5T400-120H200Zm0-120v40-560 243-3 280Zm80-80q0 17 11.5 28.5T320-280h83q17 0 28.5-11.5T443-320q0-17-11.5-28.5T403-360h-83q-17 0-28.5 11.5T280-320Zm0-160q0 17 11.5 28.5T320-440h200q17 0 28.5-11.5T560-480q0-17-11.5-28.5T520-520H320q-17 0-28.5 11.5T280-480Zm0-160q0 17 11.5 28.5T320-600h320q17 0 28.5-11.5T680-640q0-17-11.5-28.5T640-680H320q-17 0-28.5 11.5T280-640ZM720-40q-83 0-141.5-58.5T520-240q0-83 58.5-141.5T720-440q83 0 141.5 58.5T920-240q0 83-58.5 141.5T720-40Z" /></svg>
icon:btn_print = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-120q-33 0-56.5-23.5T240-200v-80h-80q-33 0-56.5-23.5T80-360v-160q0-51 35-85.5t85-34.5h560q51 0 85.5 34.5T880-520v160q0 33-23.5 56.5T800-280h-80v80q0 33-23.5 56.5T640-120H320ZM160-360h80q0-33 23.5-56.5T320-440h320q33 0 56.5 23.5T720-360h80v-160q0-17-11.5-28.5T760-560H200q-17 0-28.5 11.5T160-520v160Zm480-280v-120H320v120h-80v-120q0-33 23.5-56.5T320-840h320q33 0 56.5 23.5T720-760v120h-80Zm80 180q17 0 28.5-11.5T760-500q0-17-11.5-28.5T720-540q-17 0-28.5 11.5T680-500q0 17 11.5 28.5T720-460Zm-80 260v-160H320v160h320ZM160-560h640-640Z" /></svg>
icon:btn_preview = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-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-480H200v480Zm280-80q-82 0-146.5-44.5T240-440q29-71 93.5-115.5T480-600q82 0 146.5 44.5T720-440q-29 71-93.5 115.5T480-280Zm0-60q56 0 102-26.5t72-73.5q-26-47-72-73.5T480-540q-56 0-102 26.5T306-440q26 47 72 73.5T480-340Zm0-100Zm0 60q25 0 42.5-17.5T540-440q0-25-17.5-42.5T480-500q-25 0-42.5 17.5T420-440q0 25 17.5 42.5T480-380Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M440-440H240q-17 0-28.5-11.5T200-480q0-17 11.5-28.5T240-520h200v-200q0-17 11.5-28.5T480-760q17 0 28.5 11.5T520-720v200h200q17 0 28.5 11.5T760-480q0 17-11.5 28.5T720-440H520v200q0 17-11.5 28.5T480-200q-17 0-28.5-11.5T440-240v-200Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M400-160 232-88q-40 17-76-6.5T120-161v-519q0-33 23.5-56.5T200-760h400q33 0 56.5 23.5T680-680v519q0 43-36 66.5T568-88l-168-72Zm0-88 200 86v-518H200v518l200-86Zm400 88q-17 0-28.5-11.5T760-200v-640H280q-17 0-28.5-11.5T240-880q0-17 11.5-28.5T280-920h480q33 0 56.5 23.5T840-840v640q0 17-11.5 28.5T800-160ZM400-680H200h400-200Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h207q16 0 30.5 6t25.5 17l57 57h360q17 0 28.5 11.5T880-680q0 17-11.5 28.5T840-640H447l-80-80H160v480l79-263q8-26 29.5-41.5T316-560h516q41 0 64.5 32.5T909-457l-72 240q-8 26-29.5 41.5T760-160H160Zm84-80h516l72-240H316l-72 240Zm-84-262v-218 218Zm84 262 72-240-72 240Z" /></svg>
@@ -94,7 +111,6 @@ icon:minimise = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:more_arrow = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M420-308q-8 0-14-5.5t-6-14.5v-304q0-9 6-14.5t14-5.5q2 0 14 6l145 145q5 5 7 10t2 11q0 6-2 11t-7 10L434-314q-3 3-6.5 4.5T420-308Z" /></svg>
icon:more_vertical = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-160q-33 0-56.5-23.5T400-240q0-33 23.5-56.5T480-320q33 0 56.5 23.5T560-240q0 33-23.5 56.5T480-160Zm0-240q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0-240q-33 0-56.5-23.5T400-720q0-33 23.5-56.5T480-800q33 0 56.5 23.5T560-720q0 33-23.5 56.5T480-640Z" /></svg>
icon:noncheckable = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-440h320q17 0 28.5-11.5T680-480q0-17-11.5-28.5T640-520H320q-17 0-28.5 11.5T280-480q0 17 11.5 28.5T320-440ZM200-120q-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" /></svg>
icon:open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h240q17 0 28.5 11.5T480-800q0 17-11.5 28.5T440-760H200v560h560v-240q0-17 11.5-28.5T800-480q17 0 28.5 11.5T840-440v240q0 33-23.5 56.5T760-120H200Zm560-584L416-360q-11 11-28 11t-28-11q-11-11-11-28t11-28l344-344H600q-17 0-28.5-11.5T560-800q0-17 11.5-28.5T600-840h200q17 0 28.5 11.5T840-800v200q0 17-11.5 28.5T800-560q-17 0-28.5-11.5T760-600v-104Z" /></svg>
icon:panel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-120q-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-200v120h560v-120H200Zm0-80h560v-360H200v360Zm0 80v120-120Z" /></svg>
icon:pin = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M640-760v280l68 68q6 6 9 13.5t3 15.5v23q0 17-11.5 28.5T680-320H520v223q0 8-3 15.5T508-68l-14 14q-6 6-14 6t-14-6l-14-14q-6-6-9-13.5T440-97v-223H280q-17 0-28.5-11.5T240-360v-23q0-8 3-15.5t9-13.5l68-68v-280q-17 0-28.5-11.5T280-800q0-17 11.5-28.5T320-840h320q17 0 28.5 11.5T680-800q0 17-11.5 28.5T640-760ZM354-400h252l-46-46v-314H400v314l-46 46Zm126 0Z" /></svg>
icon:project_copy = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M120-120q-33 0-56.5-23.5T40-200v-480q0-17 11.5-28.5T80-720q17 0 28.5 11.5T120-680v480h640q17 0 28.5 11.5T800-160q0 17-11.5 28.5T760-120H120Zm160-160q-33 0-56.5-23.5T200-360v-440q0-33 23.5-56.5T280-880h167q16 0 30.5 6t25.5 17l57 57h280q33 0 56.5 23.5T920-720v360q0 33-23.5 56.5T840-280H280Zm0-80h560v-360H527l-80-80H280v440Zm0 0v-440 440Z" /></svg>
@@ -103,7 +119,6 @@ icon:refresh = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:remove = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M240-440q-17 0-28.5-11.5T200-480q0-17 11.5-28.5T240-520h480q17 0 28.5 11.5T760-480q0 17-11.5 28.5T720-440H240Z" /></svg>
icon:revert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-120q-126 0-223-76.5T131-392q-4-15 6-27.5t27-14.5q16-2 29 6t18 24q24 90 99 147t170 57q117 0 198.5-81.5T760-480q0-117-81.5-198.5T480-760q-69 0-129 32t-101 88h70q17 0 28.5 11.5T360-600q0 17-11.5 28.5T320-560H160q-17 0-28.5-11.5T120-600v-160q0-17 11.5-28.5T160-800q17 0 28.5 11.5T200-760v54q51-64 124.5-99T480-840q75 0 140.5 28.5t114 77q48.5 48.5 77 114T840-480q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480-120Zm0-280q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Z" /></svg>
icon:settings = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M433-80q-27 0-46.5-18T363-142l-9-66q-13-5-24.5-12T307-235l-62 26q-25 11-50 2t-39-32l-47-82q-14-23-8-49t27-43l53-40q-1-7-1-13.5v-27q0-6.5 1-13.5l-53-40q-21-17-27-43t8-49l47-82q14-23 39-32t50 2l62 26q11-8 23-15t24-12l9-66q4-26 23.5-44t46.5-18h94q27 0 46.5 18t23.5 44l9 66q13 5 24.5 12t22.5 15l62-26q25-11 50-2t39 32l47 82q14 23 8 49t-27 43l-53 40q1 7 1 13.5v27q0 6.5-2 13.5l53 40q21 17 27 43t-8 49l-48 82q-14 23-39 32t-50-2l-60-26q-11 8-23 15t-24 12l-9 66q-4 26-23.5 44T527-80h-94Zm7-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z" /></svg>
icon:star = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm126 18L314-169q-11 7-23 6t-21-8q-9-7-14-17.5t-2-23.5l44-189-147-127q-10-9-12.5-20.5T140-571q4-11 12-18t22-9l194-17 75-178q5-12 15.5-18t21.5-6q11 0 21.5 6t15.5 18l75 178 194 17q14 2 22 9t12 18q4 11 1.5 22.5T809-528L662-401l44 189q3 13-2 23.5T690-171q-9 7-21 8t-23-6L480-269Zm0-201Z" /></svg>
icon:stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m110-190 213-213q23-23 57-23t57 23l103 103 256-289q11-13 28.5-13t29.5 12q11 11 11.5 26.5T855-536L596-244q-23 26-57 27.5T480-240L380-340 170-130q-13 13-30 13t-30-13q-13-13-13-30t13-30Zm0-240 213-213q23-23 57-23t57 23l103 103 256-289q11-13 28.5-13t29.5 12q11 11 11.5 26.5T855-776L596-484q-23 26-57 27.5T480-480L380-580 170-370q-13 13-30 13t-30-13q-13-13-13-30t13-30Z" /></svg>
icon:text = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-200q-17 0-28.5-11.5T160-240q0-17 11.5-28.5T200-280h320q17 0 28.5 11.5T560-240q0 17-11.5 28.5T520-200H200Zm0-160q-17 0-28.5-11.5T160-400q0-17 11.5-28.5T200-440h560q17 0 28.5 11.5T800-400q0 17-11.5 28.5T760-360H200Zm0-160q-17 0-28.5-11.5T160-560q0-17 11.5-28.5T200-600h560q17 0 28.5 11.5T800-560q0 17-11.5 28.5T760-520H200Zm0-160q-17 0-28.5-11.5T160-720q0-17 11.5-28.5T200-760h560q17 0 28.5 11.5T800-720q0 17-11.5 28.5T760-680H200Z" /></svg>
icon:timer_off = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-800q60 0 117.5 20T706-722l28-28q11-11 28-11t28 11q11 11 11 28t-11 28l-28 28q38 51 58 108.5T840-440q0 26-4 51.5T824-337q-7 22-22.5 29t-29.5 2q-14-5-23.5-18t-3.5-30q8-22 11.5-43.5T760-440q0-116-82-198t-198-82q-20 0-43 3.5T391-705q-17 5-29-4t-17-23q-5-14 1.5-29.5T373-784q26-8 53-12t54-4Zm40 248v-48q0-17-11.5-28.5T480-640q-10 0-18.5 4T448-624l72 72ZM480-80q-74 0-139.5-28.5T226-186q-49-49-77.5-114.5T120-440q0-60 18.5-115.5T192-656L84-764q-11-11-11-28t11-28q11-11 28-11t28 11l680 680q11 11 11 28t-11 28q-11 11-28 11t-28-11l-68-68q-48 35-103.5 53.5T480-80Zm0-80q42 0 82-13t75-37L248-599q-24 35-36 75t-12 84q0 116 82 198t198 82Zm-80-680q-17 0-28.5-11.5T360-880q0-17 11.5-28.5T400-920h160q17 0 28.5 11.5T600-880q0 17-11.5 28.5T560-840H400Zm43 435Zm113-112Z" /></svg>
@@ -59,6 +59,23 @@ icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 40q-66.85 0-113.42-46.58Q320-413.15 320-480t46.58-113.42Q413.15-640 480-640t113.42 46.58Q640-546.85 640-480t-46.58 113.42Q546.85-320 480-320ZM80-460q-8.5 0-14.25-5.76T60-480.03q0-8.51 5.75-14.24T80-500h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T180-460H80Zm700 0q-8.5 0-14.25-5.76T760-480.03q0-8.51 5.75-14.24T780-500h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T880-460H780ZM479.97-760q-8.51 0-14.24-5.75T460-780v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-880v100q0 8.5-5.76 14.25T479.97-760Zm0 700q-8.51 0-14.24-5.75T460-80v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-180v100q0 8.5-5.76 14.25T479.97-60ZM254.46-678.77l-57.61-55.85q-5.85-5.61-5.73-13.76.11-8.16 5.96-14.77 6.38-6.62 14.15-6.62 7.77 0 14.15 6.62L282-706.31q6.38 6.62 6.38 14.16 0 7.53-6 14.15t-13.65 6.12q-7.65-.5-14.27-6.89Zm480.16 481.92L678-253.69q-6.38-6.62-6.38-14.27 0-7.66 6.38-14.04 5.23-6.62 13.08-6.12 7.84.5 14.46 6.89l57.61 55.85q5.85 5.61 5.73 13.76-.11 8.16-5.96 14.77-6.38 6.62-14.15 6.62-7.77 0-14.15-6.62ZM678-677.62q-6.62-6-6.12-13.65t6.89-14.27l55.85-57.61q5.61-5.85 13.76-5.73 8.16.11 14.77 5.96 6.62 6.38 6.62 14.15 0 7.77-6.62 14.15L706.31-678q-6.62 6.38-14.16 6.38-7.53 0-14.15-6ZM196.85-196.68q-6.62-6.78-6.62-14.55 0-7.77 6.62-14.15L253.69-282q6.62-6.38 14.27-6.38 7.66 0 14.04 6.38 5.85 5.23 5.35 13.08-.5 7.84-6.12 14.46l-55.85 57.61q-6.38 6.62-14.15 6.5-7.77-.11-14.38-6.33ZM480-480Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M482.31-160Q349-160 255.65-253.35 162.31-346.69 162.31-480q0-98.77 56.54-181.42 56.53-82.66 160.38-118.89 12.23-4.31 21.46-2.27 9.23 2.04 15.23 7.96 6 5.93 7.66 15.24 1.65 9.3-2.5 19.53-7.77 19.08-11.27 38.66t-3.5 41.19q0 106.67 74.66 181.33Q555.64-404 662.31-404q27.92 0 51.11-5.92 23.2-5.93 39.5-9.62 8.7-1.61 15.96.42 7.27 2.04 11.54 7.04 4.73 5 6.39 12.31 1.65 7.31-1.89 16.69-28.61 98-112.11 160.54Q589.31-160 482.31-160Zm0-40q88 0 158-48.5t102-126.5q-20 5-40 8t-40 3q-123 0-209.5-86.5T366.31-660q0-20 3-40t8-40q-78 32-126.5 102t-48.5 158q0 116 82 198t198 82Zm-10-270Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120ZM500-160.69q123.62-8.08 211.81-98.35T800-480q0-130.69-87.42-220.19-87.43-89.5-212.58-99.12v638.62Z" /></svg>
icon:btn_ok = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m422.46-380.31-99.84-99.84q-5.62-5.62-13.77-6-8.16-.39-14.54 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15l105.54 105.54q9.69 9.69 22.61 9.69t22.62-9.69l219.07-219.07q5.62-5.62 6-13.77.39-8.16-6-14.54-6.38-6.39-14.15-6.39-7.77 0-14.15 6.39L422.46-380.31ZM480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_cancel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-451.69 129.85 129.84q5.61 5.62 13.77 6 8.15.39 14.53-6 6.39-6.38 6.39-14.15 0-7.77-6.39-14.15L508.31-480l129.84-129.85q5.62-5.61 6-13.77.39-8.15-6-14.53-6.38-6.39-14.15-6.39-7.77 0-14.15 6.39L480-508.31 350.15-638.15q-5.61-5.62-13.77-6-8.15-.39-14.53 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15L451.69-480 321.85-350.15q-5.62 5.61-6 13.77-.39 8.15 6 14.53 6.38 6.39 14.15 6.39 7.77 0 14.15-6.39L480-451.69Zm.13 331.69q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_yes = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m422.46-380.31-99.84-99.84q-5.62-5.62-13.77-6-8.16-.39-14.54 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15l105.54 105.54q9.69 9.69 22.61 9.69t22.62-9.69l219.07-219.07q5.62-5.62 6-13.77.39-8.16-6-14.54-6.38-6.39-14.15-6.39-7.77 0-14.15 6.39L422.46-380.31ZM480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_no = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-460h320q8.5 0 14.25-5.76t5.75-14.27q0-8.51-5.75-14.24T640-500H320q-8.5 0-14.25 5.76T300-479.97q0 8.51 5.75 14.24T320-460Zm160.13 340q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h204.61q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T429.23-760H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-204.61q0-8.54 5.73-14.27t14.27-5.73q8.54 0 14.27 5.73t5.73 14.27v204.61q0 27.62-18.5 46.12Q763-160 735.38-160H224.62ZM760-731.69 403.69-375.38q-5.61 5.61-13.77 6-8.15.38-14.54-6-6.38-6.39-6.38-14.16 0-7.77 6.38-14.15L731.69-760H580q-8.54 0-14.27-5.73T560-780q0-8.54 5.73-14.27T580-800h187.69q13.93 0 23.12 9.19 9.19 9.19 9.19 23.12V-580q0 8.54-5.73 14.27T780-560q-8.54 0-14.27-5.73T760-580v-151.69Z" /></svg>
icon:btn_close = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m480-451.69 129.85 129.84q5.61 5.62 13.77 6 8.15.39 14.53-6 6.39-6.38 6.39-14.15 0-7.77-6.39-14.15L508.31-480l129.84-129.85q5.62-5.61 6-13.77.39-8.15-6-14.53-6.38-6.39-14.15-6.39-7.77 0-14.15 6.39L480-508.31 350.15-638.15q-5.61-5.62-13.77-6-8.15-.39-14.53 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15L451.69-480 321.85-350.15q-5.62 5.61-6 13.77-.39 8.15 6 14.53 6.38 6.39 14.15 6.39 7.77 0 14.15-6.39L480-451.69Zm.13 331.69q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_save = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m700-223.54-70.62-70.61q-5.61-5.62-13.38-5.62-7.77 0-13.38 5.62-5.62 5.61-5.62 13.89 0 8.29 5.62 13.64l94.76 95.54q9.7 9.7 22.62 9.7 12.92 0 22.62-9.7l95.53-95.54q5.62-5.35 5.62-13.64 0-8.28-5.62-13.89-5.61-5.62-13.89-5.62-8.29 0-13.64 5.62L740-223.54V-399q0-8.5-5.76-14.25T719.97-419q-8.51 0-14.24 5.75T700-399v175.46ZM600-60h240q8.5 0 14.25 5.76T860-39.97q0 8.51-5.75 14.24T840-20H600q-8.5 0-14.25-5.76T580-40.03q0-8.51 5.75-14.24T600-60ZM244.62-180q-26.08 0-45.35-19.27Q180-218.54 180-244.62v-550.76q0-26.08 19.27-45.35Q218.54-860 244.62-860h248.53q13.27 0 25.29 5.23t20.71 13.92l181.7 181.7q8.69 8.69 13.92 20.71 5.23 12.02 5.23 25.29v78.77q0 8.5-5.76 14.25t-14.27 5.75q-8.51 0-14.24-5.75T700-534.38V-620H548.46q-20.19 0-34.33-14.13Q500-648.27 500-668.46V-820H244.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v550.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h220q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T464.62-180h-220ZM220-220v-600 600Z" /></svg>
icon:btn_browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M180-200q-25.31 0-42.65-17.35Q120-234.69 120-260v-435.38q0-25.31 19.65-44.97Q159.31-760 184.62-760H357q12.92 0 25.12 5.23 12.19 5.23 20.88 13.92L463.85-680h349.23q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T813.08-640H447.77l-80-80H184.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7V-240q0-10.77 4.23-8.08 4.23 2.7 11.15 6.54l76.7-256.84q6.46-20.62 23.73-33.43 17.27-12.81 38.65-12.81h512.92q32.54 0 52.2 25.97 19.65 25.96 10.19 57.03l-65.85 219.24q-5.69 19.07-21.8 30.73Q786-200 766.15-200H180Zm37.08-40h546q8.46 0 15-4.62 6.54-4.61 8.84-13.07l64.31-215.39q3.85-12.3-3.85-21.92-7.69-9.62-20-9.62H314.46q-8.46 0-15 4.62-6.54 4.62-8.84 13.08L217.08-240ZM160-498.15V-720v221.85ZM217.08-240l73.54-246.92q2.3-8.46 3.84-13.08l1.54-4.62-2.69 9.62q-2.69 9.62-6.54 21.92l-64.31 215.39q-2.31 8.46-3.84 13.07l-1.54 4.62Z" /></svg>
icon:btn_list = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M404.62-220q-8.5 0-14.25-5.76t-5.75-14.27q0-8.51 5.75-14.24t14.25-5.73H780q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T780-220H404.62Zm0-240q-8.5 0-14.25-5.76t-5.75-14.27q0-8.51 5.75-14.24t14.25-5.73H780q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T780-460H404.62Zm0-240q-8.5 0-14.25-5.76t-5.75-14.27q0-8.51 5.75-14.24t14.25-5.73H780q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T780-700H404.62ZM213.08-186.92q-21.9 0-37.49-15.59Q160-218.11 160-240t15.59-37.49q15.59-15.59 37.49-15.59 21.89 0 37.48 15.59 15.59 15.6 15.59 37.49t-15.59 37.49q-15.59 15.59-37.48 15.59Zm0-240q-21.9 0-37.49-15.59Q160-458.11 160-480t15.59-37.49q15.59-15.59 37.49-15.59 21.89 0 37.48 15.59 15.59 15.6 15.59 37.49t-15.59 37.49q-15.59 15.59-37.48 15.59Zm0-240q-21.9 0-37.49-15.59Q160-698.11 160-720t15.59-37.49q15.59-15.59 37.49-15.59 21.89 0 37.48 15.59 15.59 15.6 15.59 37.49t-15.59 37.49q-15.59 15.59-37.48 15.59Z" /></svg>
icon:btn_new = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h180q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T404.62-760h-180q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-180q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75t5.73 14.25v180q0 27.62-18.5 46.12Q763-160 735.38-160H224.62ZM640-640H540q-8.5 0-14.25-5.76T520-660.03q0-8.51 5.75-14.24T540-680h100v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T680-780v100h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T780-640H680v100q0 8.5-5.76 14.25T659.97-520q-8.51 0-14.24-5.75T640-540v-100Z" /></svg>
icon:btn_create = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm126-28.92-145.23 87.69q-6.39 3.15-11.85 2.54-5.46-.62-10.61-3.77-5.16-3.16-7.85-9.04-2.69-5.88-.46-12.73l38.62-164.39-127.77-110.84q-5.39-4.39-7.12-10.5-1.73-6.12.73-11.73 2.46-5.62 6.62-9.16 4.15-3.53 11.23-4.77l168.61-14.69L460.69-733q2.69-6.62 7.81-9.54 5.12-2.92 11.5-2.92t11.5 2.92q5.12 2.92 7.81 9.54l65.77 155.69 168.61 14.69q7.08 1.24 11.23 4.77 4.16 3.54 6.62 9.16 2.46 5.61.73 11.73-1.73 6.11-7.12 10.5L617.38-415.62 656-251.23q2.23 6.85-.46 12.73-2.69 5.88-7.85 9.04-5.15 3.15-10.61 3.77-5.46.61-11.85-2.54L480-315.92ZM480-470Z" /></svg>
icon:btn_reset = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M316.15-240q-8.53 0-14.27-5.73-5.73-5.73-5.73-14.27t5.73-14.27q5.74-5.73 14.27-5.73h270.16q62.23 0 106.04-42.69 43.8-42.69 43.8-104.23 0-61.54-43.8-103.85-43.81-42.31-106.04-42.31H276.62l104.46 104.46q6.38 6.39 6.38 14.16 0 7.77-6.38 14.15-6.39 6.39-14.54 6-8.16-.38-13.77-6L222.62-570.46q-5.24-5.23-7.35-10.69-2.12-5.47-2.12-11.93t2.12-11.92q2.11-5.46 7.35-10.69l130.15-130.16q6.38-6.38 14.15-6.38 7.77 0 14.16 6.38 6.38 6.39 6 14.54-.39 8.16-6 13.77L276.62-613.08h309.69q78.54 0 134.19 54.16 55.65 54.15 55.65 132 0 77.84-55.65 132.38Q664.85-240 586.31-240H316.15Z" /></svg>
icon:btn_insert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M460-600H360q-8.5 0-14.25-5.76T340-620.03q0-8.51 5.75-14.24T360-640h240q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T600-600H500v260q0 8.5-5.76 14.25T479.97-320q-8.51 0-14.24-5.75T460-340v-260ZM95.38-127.69v-104.62q0-13.73 9.29-23.02t23.02-9.29H160v-430.76h-32.44q-13.79 0-22.98-9.29-9.2-9.29-9.2-23.02v-104.62q0-13.73 9.29-23.02t23.02-9.29h104.62q13.73 0 23.02 9.29t9.29 23.02V-800h430.76v-32.44q0-13.79 9.29-22.98 9.29-9.2 23.02-9.2h104.62q13.73 0 23.02 9.29t9.29 23.02v104.62q0 13.73-9.29 23.02t-23.02 9.29H800v430.76h32.44q13.79 0 22.98 9.29 9.2 9.29 9.2 23.02v104.62q0 13.73-9.29 23.02t-23.02 9.29H727.69q-13.73 0-23.02-9.29t-9.29-23.02V-160H264.62v32.44q0 13.79-9.29 22.98-9.29 9.2-23.02 9.2H127.69q-13.73 0-23.02-9.29t-9.29-23.02ZM264.62-200h430.76v-32.44q0-13.79 9.29-22.98 9.29-9.2 23.02-9.2H760v-430.76h-32.44q-13.79 0-22.98-9.29-9.2-9.29-9.2-23.02V-760H264.62v32.44q0 13.79-9.29 22.98-9.29 9.2-23.02 9.2H200v430.76h32.44q13.79 0 22.98 9.29 9.2 9.29 9.2 23.02V-200ZM135.38-735.38h89.24v-89.24h-89.24v89.24Zm600 0h89.24v-89.24h-89.24v89.24Zm0 600h89.24v-89.24h-89.24v89.24Zm-600 0h89.24v-89.24h-89.24v89.24Zm89.24-600Zm510.76 0Zm0 510.76Zm-510.76 0Z" /></svg>
icon:btn_apply = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-396.31-99.85-99.84q-5.61-5.62-13.77-6-8.15-.39-14.53 6-6.39 6.38-6.39 14.15 0 7.77 6.39 14.15l105.53 105.54q9.7 9.69 22.62 9.69 12.92 0 22.62-9.69l219.07-219.07q5.62-5.62 6-13.77.39-8.16-6-14.54-6.38-6.39-14.15-6.39-7.77 0-14.16 6.39L424-396.31ZM224.62-160q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h510.76q27.62 0 46.12 18.5Q800-763 800-735.38v510.76q0 27.62-18.5 46.12Q763-160 735.38-160H224.62Zm0-40h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-510.76q0-9.24-7.69-16.93-7.69-7.69-16.93-7.69H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69ZM200-760v560-560Z" /></svg>
icon:btn_build = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M763.85-257.38V-190q0 6.15 4.61 10.77 4.62 4.61 10.77 4.61 6.15 0 10.77-4.61 4.62-4.62 4.62-10.77v-103.85q0-6.46-4.85-11.3-4.85-4.85-11.31-4.85H674.62q-6.16 0-10.77 4.62-4.62 4.61-4.62 10.76 0 6.16 4.62 10.77 4.61 4.62 10.77 4.62H742l-90.31 90.31q-4.46 4.46-4.84 10.54-.39 6.07 4.84 11.3 4.74 4.46 11.07 4.46 6.32 0 10.78-4.46l90.31-90.3ZM224.62-160q-26.66 0-45.64-18.98T160-224.62v-510.76q0-26.66 18.98-45.64T224.62-800h510.76q26.66 0 45.64 18.98T800-735.38v204.61q0 8.5-5.76 14.25t-14.27 5.75q-8.51 0-14.24-5.75T760-530.77v-204.61q0-9.24-7.69-16.93-7.69-7.69-16.93-7.69H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h204.61q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T429.23-160H224.62ZM200-239.73V-200v-560V-507.77v-3 271.04Zm100-89.47q0 8.51 5.75 14.24t14.25 5.73h118.38q8.5 0 14.25-5.76t5.75-14.27q0-8.51-5.75-14.24t-14.25-5.73H320q-8.5 0-14.25 5.76-5.75 5.75-5.75 14.27Zm0-150.77q0 8.51 5.75 14.24T320-460h259.23q8.5 0 14.25-5.76t5.75-14.27q0-8.51-5.75-14.24T579.23-500H320q-8.5 0-14.25 5.76T300-479.97Zm0-150.77q0 8.51 5.75 14.24t14.25 5.73h320q8.5 0 14.25-5.76 5.75-5.75 5.75-14.27 0-8.51-5.75-14.24T640-650.77H320q-8.5 0-14.25 5.76T300-630.74ZM720-75.38q-66.85 0-113.42-46.58Q560-168.54 560-235.38q0-66.85 46.58-113.43 46.57-46.57 113.42-46.57t113.42 46.57Q880-302.23 880-235.38q0 66.84-46.58 113.42Q786.85-75.38 720-75.38Z" /></svg>
icon:btn_print = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M344.62-160q-26.66 0-45.64-18.98T280-224.62V-320h-72.31q-26.65 0-45.63-18.98-18.98-18.98-18.98-45.64v-150.76q0-34 23.07-57 23.08-23 56.93-23h513.84q34 0 57 23t23 57v150.76q0 26.66-18.98 45.64T752.31-320H680v95.38q0 26.66-18.98 45.64T615.38-160H344.62ZM207.69-360H280q1.54-25.31 20.07-43.42 18.53-18.12 44.55-18.12h270.76q26.02 0 44.55 18.12Q678.46-385.31 680-360h72.31q10.77 0 17.69-6.92 6.92-6.93 6.92-17.7v-150.76q0-17-11.5-28.5t-28.5-11.5H223.08q-17 0-28.5 11.5t-11.5 28.5v150.76q0 10.77 6.92 17.7 6.92 6.92 17.69 6.92ZM640-615.38v-95.39q0-10.77-6.92-17.69-6.93-6.92-17.7-6.92H344.62q-10.77 0-17.7 6.92-6.92 6.92-6.92 17.69v95.39h-40v-95.39q0-26.65 18.98-45.63 18.98-18.99 45.64-18.99h270.76q26.66 0 45.64 18.99Q680-737.42 680-710.77v95.39h-40Zm64.62 140q17 0 28.5-11.5t11.5-28.5q0-17-11.5-28.5t-28.5-11.5q-17 0-28.5 11.5t-11.5 28.5q0 17 11.5 28.5t28.5 11.5ZM640-224.62v-132.3q0-10.77-6.92-17.7-6.93-6.92-17.7-6.92H344.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7v132.3q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92h270.76q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7ZM207.69-575.38h-24.61 593.84-569.23Z" /></svg>
icon:btn_preview = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-26.66 0-45.64-18.98T160-224.62v-510.76q0-26.66 18.98-45.64T224.62-800h510.76q26.66 0 45.64 18.98T800-735.38v510.76q0 26.66-18.98 45.64T735.38-160H224.62Zm0-40h510.76q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7V-680H200v455.38q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92ZM480-320q-65.08 0-117.27-33.35-52.19-33.34-78.88-86.65 26.69-53.31 78.88-86.65Q414.92-560 480-560t117.27 33.35q52.19 33.34 78.88 86.65-26.69 53.31-78.88 86.65Q545.08-320 480-320Zm0-35.38q47.54 0 88.54-22.27 41-22.27 69.31-62.35-28.31-40.08-69.31-62.35-41-22.27-88.54-22.27-47.54 0-88.54 22.27-41 22.27-69.31 62.35 28.31 40.08 69.31 62.35 41 22.27 88.54 22.27Zm0-84.62Zm.18 44.62q18.67 0 31.55-13.07 12.89-13.07 12.89-31.73 0-18.67-13.07-31.55-13.07-12.89-31.73-12.89-18.67 0-31.55 13.07-12.89 13.07-12.89 31.73 0 18.67 13.07 31.55 13.07 12.89 31.73 12.89Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M460-460H260q-8.5 0-14.25-5.76T240-480.03q0-8.51 5.75-14.24T260-500h200v-200q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-700v200h200q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T700-460H500v200q0 8.5-5.76 14.25T479.97-240q-8.51 0-14.24-5.75T460-260v-200Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m420-203.08-149.54 64.31q-32.31 13.92-61.38-5.35Q180-163.38 180-197.92v-457.46q0-27.62 18.5-46.12Q217-720 244.62-720h350.76q27.62 0 46.12 18.5Q660-683 660-655.38v457.46q0 34.54-29.08 53.8-29.07 19.27-61.38 5.35L420-203.08Zm0-44.92 165.38 71.38q12.31 5.39 23.47-2.3 11.15-7.7 11.15-20.77v-455.69q0-9.24-7.69-16.93-7.69-7.69-16.93-7.69H244.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v455.69q0 13.07 11.15 20.77 11.16 7.69 23.47 2.3L420-248Zm340 28q-8.54 0-14.27-5.73T740-240v-535.39q0-9.23-7.69-16.92-7.69-7.69-16.93-7.69H320q-8.54 0-14.27-5.73T300-820q0-8.54 5.73-14.27T320-840h395.38q27.62 0 46.12 18.5Q780-803 780-775.39V-240q0 8.54-5.73 14.27T760-220ZM420-680H220h400-200Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M180-200q-25.31 0-42.65-17.35Q120-234.69 120-260v-435.38q0-25.31 19.65-44.97Q159.31-760 184.62-760H357q12.92 0 25.12 5.23 12.19 5.23 20.88 13.92L463.85-680h349.23q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T813.08-640H447.77l-80-80H184.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7V-240q0-10.77 4.23-8.08 4.23 2.7 11.15 6.54l76.7-256.84q6.46-20.62 23.73-33.43 17.27-12.81 38.65-12.81h512.92q32.54 0 52.2 25.97 19.65 25.96 10.19 57.03l-65.85 219.24q-5.69 19.07-21.8 30.73Q786-200 766.15-200H180Zm37.08-40h546q8.46 0 15-4.62 6.54-4.61 8.84-13.07l64.31-215.39q3.85-12.3-3.85-21.92-7.69-9.62-20-9.62H314.46q-8.46 0-15 4.62-6.54 4.62-8.84 13.08L217.08-240ZM160-498.15V-720v221.85ZM217.08-240l73.54-246.92q2.3-8.46 3.84-13.08l1.54-4.62-2.69 9.62q-2.69 9.62-6.54 21.92l-64.31 215.39q-2.31 8.46-3.84 13.07l-1.54 4.62Z" /></svg>
@@ -94,7 +111,6 @@ icon:minimise = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:more_arrow = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M436.4-350.31q-6.71 0-11.55-4.44-4.85-4.44-4.85-11.71v-227.08q0-7.27 4.95-11.71 4.95-4.44 11.55-4.44 1.65 0 11.35 5.23l107.07 107.08q3.7 3.69 5.7 7.97 2 4.28 2 9.41t-2 9.41q-2 4.28-5.7 7.98L447.83-355.52q-2.21 2.21-5.15 3.71-2.93 1.5-6.28 1.5Z" /></svg>
icon:more_vertical = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-218.46q-16.5 0-28.25-11.75T440-258.46q0-16.5 11.75-28.25T480-298.46q16.5 0 28.25 11.75T520-258.46q0 16.5-11.75 28.25T480-218.46ZM480-440q-16.5 0-28.25-11.75T440-480q0-16.5 11.75-28.25T480-520q16.5 0 28.25 11.75T520-480q0 16.5-11.75 28.25T480-440Zm0-221.54q-16.5 0-28.25-11.75T440-701.54q0-16.5 11.75-28.25T480-741.54q16.5 0 28.25 11.75T520-701.54q0 16.5-11.75 28.25T480-661.54Z" /></svg>
icon:noncheckable = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M320-460h320q8.54 0 14.27-5.73T660-480q0-8.54-5.73-14.27T640-500H320q-8.54 0-14.27 5.73T300-480q0 8.54 5.73 14.27T320-460Zm-95.38 300q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h510.76q27.62 0 46.12 18.5Q800-763 800-735.38v510.76q0 27.62-18.5 46.12Q763-160 735.38-160H224.62Zm0-40h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-510.76q0-9.24-7.69-16.93-7.69-7.69-16.93-7.69H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69ZM200-760v560-560Z" /></svg>
icon:open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-27.62 0-46.12-18.5Q160-197 160-224.62v-510.76q0-27.62 18.5-46.12Q197-800 224.62-800h204.61q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T429.23-760H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v510.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93v-204.61q0-8.54 5.73-14.27t14.27-5.73q8.54 0 14.27 5.73t5.73 14.27v204.61q0 27.62-18.5 46.12Q763-160 735.38-160H224.62ZM760-731.69 403.69-375.38q-5.61 5.61-13.77 6-8.15.38-14.54-6-6.38-6.39-6.38-14.16 0-7.77 6.38-14.15L731.69-760H580q-8.54 0-14.27-5.73T560-780q0-8.54 5.73-14.27T580-800h187.69q13.93 0 23.12 9.19 9.19 9.19 9.19 23.12V-580q0 8.54-5.73 14.27T780-560q-8.54 0-14.27-5.73T760-580v-151.69Z" /></svg>
icon:panel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-160q-26.85 0-45.74-18.88Q160-197.77 160-224.62v-510.76q0-26.85 18.88-45.74Q197.77-800 224.62-800h510.76q26.85 0 45.74 18.88Q800-762.23 800-735.38v510.76q0 26.85-18.88 45.74Q762.23-160 735.38-160H224.62ZM200-320v95.38q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h510.76q9.24 0 16.93-7.69 7.69-7.69 7.69-16.93V-320H200Zm0-40h560v-375.38q0-9.24-7.69-16.93-7.69-7.69-16.93-7.69H224.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93V-360Zm0 40v120-120Z" /></svg>
icon:pin = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M600-760v296.92l57.23 57.23q2.92 2.93 4.39 6.58 1.46 3.65 1.46 7.55v11.21q0 8.28-5.97 14.39-5.98 6.12-14.8 6.12H500v186.61q0 6.7-2.23 12.28-2.23 5.57-7.46 10.8l-3.23 3.23q-3.07 2.93-7.15 2.93t-7.01-2.93l-3.23-3.23q-5.23-5.23-7.46-10.97-2.23-5.75-2.23-11.87V-360H317.69q-8.82 0-14.8-6.12-5.97-6.11-5.97-14.39v-11.21q0-3.9 1.46-7.55 1.47-3.65 4.39-6.58L360-463.08V-760h-20q-8.5 0-14.25-5.76T320-780.03q0-8.51 5.75-14.24T340-800h280q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T620-760h-20ZM354-400h252l-46-46v-314H400v314l-46 46Zm126 0Z" /></svg>
icon:project_copy = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M144.62-169.23q-26.85 0-45.74-18.89Q80-207 80-233.85v-423.07q0-8.54 5.73-14.27t14.27-5.73q8.54 0 14.27 5.73t5.73 14.27v423.07q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92H740q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T740-169.23H144.62Zm120-120q-26.85 0-45.74-18.89Q200-327 200-353.85v-421.53q0-26.85 18.88-45.74Q237.77-840 264.62-840h171.61q12.92 0 25.12 5.23 12.19 5.23 20.88 13.92L543.08-760h272.3q26.85 0 45.74 18.88Q880-722.23 880-695.38v341.53q0 26.85-18.88 45.73-18.89 18.89-45.74 18.89H264.62Zm0-40h550.76q10.77 0 17.7-6.92 6.92-6.93 6.92-17.7v-341.53q0-10.77-6.92-17.7-6.93-6.92-17.7-6.92H527l-80-80H264.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7v421.53q0 10.77 6.92 17.7 6.93 6.92 17.7 6.92Zm-24.62 0V-800v470.77Z" /></svg>
@@ -103,7 +119,6 @@ icon:refresh = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:remove = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M260-460q-8.5 0-14.25-5.76T240-480.03q0-8.51 5.75-14.24T260-500h440q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T700-460H260Z" /></svg>
icon:revert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M478.46-160q-115.23 0-202.61-71.12Q188.46-302.23 165.62-412q-2.47-8.85 2.6-16.37 5.06-7.53 13.68-8.73 8.1-1.21 14.56 3.72 6.46 4.92 9.16 14Q227.31-324 303.46-262q76.16 62 175 62 117 0 198.5-81.5t81.5-198.5q0-117-81.5-198.5T478.46-760q-62.08 0-116.69 26.23-54.62 26.23-96.39 72.23h79.24q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24t-14.25 5.73H230.77q-13.73 0-23.02-9.29t-9.29-23.02v-113.84q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75t5.73 14.25v75.54q46.39-50.93 108.73-79.39Q409.54-800 478.46-800q66.6 0 124.76 25.04 58.16 25.04 101.66 68.54 43.5 43.5 68.54 101.65 25.04 58.14 25.04 124.73 0 66.58-25.04 124.77t-68.54 101.69q-43.5 43.5-101.66 68.54Q545.06-160 478.46-160Zm0-280q-16.08 0-28.04-11.96T438.46-480q0-16.08 11.96-28.04T478.46-520q16.08 0 28.04 11.96T518.46-480q0 16.08-11.96 28.04T478.46-440Z" /></svg>
icon:settings = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M438.38-120q-13.92 0-24.19-9.15-10.27-9.16-12.73-22.85l-10.54-83.69q-19.15-5.77-41.42-18.16-22.27-12.38-37.88-26.53L235-247.46q-12.69 5.61-25.77 1.23-13.08-4.39-20.15-16.62l-43.16-74.3q-7.07-12.23-4.15-25.54 2.92-13.31 13.92-21.85l66.85-50q-1.77-10.84-2.92-22.34-1.16-11.5-1.16-22.35 0-10.08 1.16-21.19 1.15-11.12 2.92-25.04l-66.85-50q-11-8.54-13.54-22.23-2.53-13.69 4.54-25.93l42.39-72q7.07-11.46 20.15-16.23 13.08-4.77 25.77.85l75.85 32.15q17.92-14.92 38.77-26.92 20.84-12 40.53-18.54L401.46-808q2.46-13.69 12.73-22.85 10.27-9.15 24.19-9.15h83.24q13.92 0 24.19 9.15 10.27 9.16 12.73 22.85l10.54 84.46q23 8.08 40.65 18.54 17.65 10.46 36.35 26.15L725.77-711q12.69-5.62 25.77-.85 13.08 4.77 20.15 16.23l42.39 72.77q7.07 12.23 4.15 25.54-2.92 13.31-13.92 21.85l-69.93 52.31q3.31 12.38 3.7 22.73.38 10.34.38 20.42 0 9.31-.77 19.65-.77 10.35-3.54 25.04l67.62 50.77q11 8.54 14.31 21.85 3.3 13.31-3.77 25.54l-42.62 73.53q-7.07 12.24-20.54 16.62-13.46 4.38-26.15-1.23l-76.92-32.92q-18.7 15.69-37.62 26.92-18.92 11.23-39.38 17.77L558.54-152q-2.46 13.69-12.73 22.85-10.27 9.15-24.19 9.15h-83.24Zm1.62-40h78.23L533-268.31q30.23-8 54.42-21.96 24.2-13.96 49.27-38.27L736.46-286l39.77-68-87.54-65.77q5-17.08 6.62-31.42 1.61-14.35 1.61-28.81 0-15.23-1.61-28.81-1.62-13.57-6.62-29.88L777.77-606 738-674l-102.08 42.77q-18.15-19.92-47.73-37.35-29.57-17.42-55.96-23.11L520-800h-79.77l-12.46 107.54q-30.23 6.46-55.58 20.81-25.34 14.34-50.42 39.42L222-674l-39.77 68L269-541.23q-5 13.46-7 29.23t-2 32.77q0 15.23 2 30.23t6.23 29.23l-86 65.77L222-286l99-42q23.54 23.77 48.88 38.12 25.35 14.34 57.12 22.34L440-160Zm38.92-220q41.85 0 70.93-29.08 29.07-29.07 29.07-70.92t-29.07-70.92Q520.77-580 478.92-580q-42.07 0-71.04 29.08-28.96 29.07-28.96 70.92t28.96 70.92Q436.85-380 478.92-380ZM480-480Z" /></svg>
icon:star = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm126-28.92-145.23 87.69q-6.39 3.15-11.85 2.54-5.46-.62-10.61-3.77-5.16-3.16-7.85-9.04-2.69-5.88-.46-12.73l38.62-164.39-127.77-110.84q-5.39-4.39-7.12-10.5-1.73-6.12.73-11.73 2.46-5.62 6.62-9.16 4.15-3.53 11.23-4.77l168.61-14.69L460.69-733q2.69-6.62 7.81-9.54 5.12-2.92 11.5-2.92t11.5 2.92q5.12 2.92 7.81 9.54l65.77 155.69 168.61 14.69q7.08 1.24 11.23 4.77 4.16 3.54 6.62 9.16 2.46 5.61.73 11.73-1.73 6.11-7.12 10.5L617.38-415.62 656-251.23q2.23 6.85-.46 12.73-2.69 5.88-7.85 9.04-5.15 3.15-10.61 3.77-5.46.61-11.85-2.54L480-315.92ZM480-470Z" /></svg>
icon:stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m125.38-174.62 212.24-212.23q18.38-18.38 45.46-18.38 27.07 0 45.46 18.38l96.08 96.08q7.69 7.69 18.46 7.31 10.77-.39 17.69-8.85l248.31-285.15q5.61-6.85 13.5-6.85 7.88 0 14.5 5.85 5.61 5.61 6.11 13.04.5 7.42-5.11 14.04L589.85-264.77q-18.39 21.39-46.23 22.5-27.85 1.12-48.24-19.27l-94.61-94.61q-6.92-6.93-17.69-6.93-10.77 0-17.7 6.93L154.62-145.38q-6.08 6.07-14.24 6.46-8.15.38-15-6.46-6.84-6.85-6.84-14.62t6.84-14.62Zm0-240 212.24-212.23q18.38-18.38 45.46-18.38 27.07 0 45.46 18.38l96.08 96.08q7.69 7.69 18.46 7.31 10.77-.39 17.69-8.85l248.31-285.15q5.61-6.85 13.5-6.85 7.88 0 14.5 5.85 5.61 5.61 6.11 13.04.5 7.42-5.11 14.04L589.85-504.77q-18.39 21.39-46.23 22.5-27.85 1.12-48.24-19.27l-94.61-94.61q-6.92-6.93-17.69-6.93-10.77 0-17.7 6.93L154.62-385.38q-6.08 6.07-14.24 6.46-8.15.38-15-6.46-6.84-6.85-6.84-14.62t6.84-14.62Z" /></svg>
icon:text = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M224.62-231.54q-10.47 0-17.54-6.84-7.08-6.85-7.08-16.96 0-10.12 7.08-17.39 7.07-7.27 17.54-7.27H500q8.5 0 14.25 5.97t5.75 14.8q0 8.5-5.73 14.25t-13.5 5.75l-276.15 7.69ZM220-386.92q-8.5 0-14.25-5.76T200-406.95q0-8.51 5.75-14.24t14.25-5.73h520q8.5 0 14.25 5.75 5.75 5.76 5.75 14.27 0 8.52-5.75 14.25T740-386.92H220Zm0-146.16q-8.5 0-14.25-5.75-5.75-5.76-5.75-14.27 0-8.52 5.75-14.25t14.25-5.73h520q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T740-533.08H220ZM224.62-680q-10.47 0-17.54-7.08-7.08-7.07-7.08-17.54 0-10.46 7.08-17.53 7.07-7.08 17.54-7.08h510.76q10.47 0 17.54 7.08 7.08 7.07 7.08 17.53 0 10.47-7.08 17.54-7.07 7.08-17.54 7.08H224.62Z" /></svg>
icon:timer_off = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-760q56.57 0 110.79 20.38 54.21 20.39 100.59 59.16L720.92-710q5.62-5.62 13.77-6 8.16-.38 14.54 6 6.39 6.38 6.39 14.15 0 7.77-6.39 14.16l-29.54 29.54q38.77 46.38 59.54 100.85Q800-496.84 800-440q0 26-4.38 52.27-4.39 26.27-13.16 51.5-3.6 11.19-11.57 14.75-7.97 3.56-15.04.86-7.08-2.69-11.58-9.15-4.5-6.46-1.58-14.23 8.77-23.54 13.04-47.35Q760-415.15 760-440q0-116-82-198t-198-82q-22.56 0-48.51 4.27t-48.95 13.04q-7.77 2.69-14-1.31t-8.92-11.08q-2.7-7.07.34-14.88 3.04-7.81 13.81-11.73 26-9.16 53-13.73 27-4.58 53.23-4.58Zm20 187.23v-31.85q0-8.5-5.75-14.25T480-624.62q-6.01 0-11.12 4-5.11 4-7.03 9.7L500-572.77ZM480-120q-65.95 0-124.32-25.04-58.37-25.04-101.99-68.65-43.61-43.62-68.65-101.99Q160-374.05 160-440q0-61.54 21.96-117.42 21.96-55.89 63.89-100.12L119.38-784q-5.61-5.62-6-13.77-.38-8.15 6-14.54 6.39-6.38 14.16-6.38 7.77 0 14.15 6.38l664.62 664.62q5.61 5.61 6 13.77.38 8.15-6 14.54-6.39 6.38-14.16 6.38-7.77 0-14.15-6.38l-86.46-86.47q-42.62 40.39-99.66 63.12Q540.85-120 480-120Zm0-40q51.27 0 100.1-19.54 48.82-19.54 88.44-55.08L274.15-629q-35.53 38.08-54.84 86.54Q200-494 200-440q0 116 82 198t198 82Zm-84.62-700q-8.5 0-14.25-5.76t-5.75-14.27q0-8.51 5.75-14.24t14.25-5.73h169.24q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T564.62-860H395.38Zm76.08 428.08ZM556.77-517Z" /></svg>
@@ -59,6 +59,23 @@ icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 80q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM200-440H40v-80h160v80Zm720 0H760v-80h160v80ZM440-760v-160h80v160h-80Zm0 720v-160h80v160h-80ZM256-650l-101-97 57-59 96 100-52 56Zm492 496-97-101 53-55 101 97-57 59Zm-98-550 97-101 59 57-100 96-56-52ZM154-212l101-97 55 53-97 101-59-57Zm326-268Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-120q-150 0-255-105T120-480q0-150 105-255t255-105q14 0 27.5 1t26.5 3q-41 29-65.5 75.5T444-660q0 90 63 153t153 63q55 0 101-24.5t75-65.5q2 13 3 26.5t1 27.5q0 150-105 255T480-120Zm0-80q88 0 158-48.5T740-375q-20 5-40 8t-40 3q-123 0-209.5-86.5T364-660q0-20 3-40t8-40q-78 32-126.5 102T200-480q0 116 82 198t198 82Zm-10-270Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><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" /></svg>
icon:btn_ok = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_cancel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m336-280 144-144 144 144 56-56-144-144 144-144-56-56-144 144-144-144-56 56 144 144-144 144 56 56ZM480-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_yes = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_no = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M280-440h400v-80H280v80ZM480-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M120-120v-720h360v80H200v560h560v-280h80v360H120Zm268-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z" /></svg>
icon:btn_close = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m336-280 144-144 144 144 56-56-144-144 144-144-56-56-144 144-144-144-56 56 144 144-144 144 56 56ZM480-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-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_save = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m720-120 160-160-56-56-64 64v-167h-80v167l-64-64-56 56 160 160ZM560 0v-80h320V0H560ZM160-160v-720h360l240 240v121h-80v-81H480v-200H240v560h240v80H160Zm80-80v-560 560Z" /></svg>
icon:btn_browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M80-160v-640h320l80 80h400v80H447l-80-80H160v480l96-320h684L820-160H80Zm164-80h516l72-240H316l-72 240Zm0 0 72-240-72 240Zm-84-400v-80 80Z" /></svg>
icon:btn_list = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M360-200v-80h480v80H360Zm0-240v-80h480v80H360Zm0-240v-80h480v80H360ZM200-160q-33 0-56.5-23.5T120-240q0-33 23.5-56.5T200-320q33 0 56.5 23.5T280-240q0 33-23.5 56.5T200-160Zm0-240q-33 0-56.5-23.5T120-480q0-33 23.5-56.5T200-560q33 0 56.5 23.5T280-480q0 33-23.5 56.5T200-400Zm0-240q-33 0-56.5-23.5T120-720q0-33 23.5-56.5T200-800q33 0 56.5 23.5T280-720q0 33-23.5 56.5T200-640Z" /></svg>
icon:btn_new = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M120-120v-720h320v80H200v560h560v-240h80v320H120Zm520-400v-120H520v-80h120v-120h80v120h120v80H720v120h-80Z" /></svg>
icon:btn_create = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z" /></svg>
icon:btn_reset = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M280-200v-80h284q63 0 109.5-40T720-420q0-60-46.5-100T564-560H312l104 104-56 56-200-200 200-200 56 56-104 104h252q97 0 166.5 63T800-420q0 94-69.5 157T564-200H280Z" /></svg>
icon:btn_insert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M440-320v-240H320v-80h320v80H520v240h-80ZM40-40v-240h80v-400H40v-240h240v80h400v-80h240v240h-80v400h80v240H680v-80H280v80H40Zm240-160h400v-80h80v-400h-80v-80H280v80h-80v400h80v80ZM120-760h80v-80h-80v80Zm640 0h80v-80h-80v80Zm0 640h80v-80h-80v80Zm-640 0h80v-80h-80v80Zm80-640Zm560 0Zm0 560Zm-560 0Z" /></svg>
icon:btn_apply = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-312 282-282-56-56-226 226-114-114-56 56 170 170ZM120-120v-720h720v720H120Zm80-80h560v-560H200v560Zm0 0v-560 560Z" /></svg>
icon:btn_build = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m648-140 112-112v92h40v-160H640v40h92L620-168l28 28Zm-528 20v-720h720v348q-19-9-39-15.5t-41-9.5v-243H200v560h242q3 22 9.5 42t15.5 38H120Zm80-120v40-560 243-3 280Zm80-40h163q3-21 9.5-41t14.5-39H280v80Zm0-160h244q32-30 71.5-50t84.5-27v-3H280v80Zm0-160h400v-80H280v80ZM720-40q-83 0-141.5-58.5T520-240q0-83 58.5-141.5T720-440q83 0 141.5 58.5T920-240q0 83-58.5 141.5T720-40Z" /></svg>
icon:btn_print = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M640-640v-120H320v120h-80v-200h480v200h-80Zm-480 80h640-640Zm560 100q17 0 28.5-11.5T760-500q0-17-11.5-28.5T720-540q-17 0-28.5 11.5T680-500q0 17 11.5 28.5T720-460Zm-80 260v-160H320v160h320Zm80 80H240v-160H80v-360h800v360H720v160Zm80-240v-200H160v200h80v-80h480v80h80Z" /></svg>
icon:btn_preview = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M120-120v-720h720v720H120Zm80-80h560v-480H200v480Zm280-80q-82 0-146.5-44.5T240-440q29-71 93.5-115.5T480-600q82 0 146.5 44.5T720-440q-29 71-93.5 115.5T480-280Zm0-60q56 0 102-26.5t72-73.5q-26-47-72-73.5T480-540q-56 0-102 26.5T306-440q26 47 72 73.5T480-340Zm0-100Zm0 60q25 0 42.5-17.5T540-440q0-25-17.5-42.5T480-500q-25 0-42.5 17.5T420-440q0 25 17.5 42.5T480-380Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M120-40v-720h560v720L400-160 120-40Zm80-122 200-86 200 86v-518H200v518Zm560 2v-680H240v-80h600v760h-80ZM200-680h400-400Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M80-160v-640h320l80 80h400v80H447l-80-80H160v480l96-320h684L820-160H80Zm164-80h516l72-240H316l-72 240Zm0 0 72-240-72 240Zm-84-400v-80 80Z" /></svg>
@@ -94,7 +111,6 @@ icon:minimise = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:more_arrow = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M400-280v-400l200 200-200 200Z" /></svg>
icon:more_vertical = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-160q-33 0-56.5-23.5T400-240q0-33 23.5-56.5T480-320q33 0 56.5 23.5T560-240q0 33-23.5 56.5T480-160Zm0-240q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0-240q-33 0-56.5-23.5T400-720q0-33 23.5-56.5T480-800q33 0 56.5 23.5T560-720q0 33-23.5 56.5T480-640Z" /></svg>
icon:noncheckable = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M280-440h400v-80H280v80ZM120-120v-720h720v720H120Zm80-80h560v-560H200v560Zm0 0v-560 560Z" /></svg>
icon:open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M120-120v-720h360v80H200v560h560v-280h80v360H120Zm268-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z" /></svg>
icon:panel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-200h560v-120H200v120Zm0-200h560v-360H200v360Zm0 80v120-120Zm-80 200v-720h720v720H120Z" /></svg>
icon:pin = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40v280Zm-286 80h252l-46-46v-314H400v314l-46 46Zm126 0Z" /></svg>
icon:project_copy = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M40-120v-600h80v520h680v80H40Zm160-160v-600h280l80 80h360v520H200Zm80-80h560v-360H527l-80-80H280v440Zm0 0v-440 440Z" /></svg>
@@ -103,7 +119,6 @@ icon:refresh = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:remove = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-440v-80h560v80H200Z" /></svg>
icon:revert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-400q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0 280q-139 0-241-91.5T122-440h82q14 104 92.5 172T480-200q117 0 198.5-81.5T760-480q0-117-81.5-198.5T480-760q-69 0-129 32t-101 88h110v80H120v-240h80v94q51-64 124.5-99T480-840q75 0 140.5 28.5t114 77q48.5 48.5 77 114T840-480q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480-120Z" /></svg>
icon:settings = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z" /></svg>
icon:star = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z" /></svg>
icon:stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m140-100-60-60 300-300 160 160 284-320 56 56-340 384-160-160-240 240Zm0-240-60-60 300-300 160 160 284-320 56 56-340 384-160-160-240 240Z" /></svg>
icon:text = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-200v-80h400v80H160Zm0-160v-80h640v80H160Zm0-160v-80h640v80H160Zm0-160v-80h640v80H160Z" /></svg>
icon:timer_off = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m798-274-60-60q11-27 16.5-53.5T760-440q0-116-82-198t-198-82q-24 0-51 5t-56 16l-60-60q38-20 80.5-30.5T480-800q60 0 117.5 20T706-722l56-56 56 56-56 56q38 51 58 108.5T840-440q0 42-10.5 83.5T798-274ZM520-552v-88h-80v8l80 80ZM792-56l-96-96q-48 35-103.5 53.5T480-80q-74 0-139.5-28.5T226-186q-49-49-77.5-114.5T120-440q0-60 18.5-115.5T192-656L56-792l56-56 736 736-56 56ZM480-160q42 0 82-13t75-37L248-599q-24 35-36 75t-12 84q0 116 82 198t198 82ZM360-840v-80h240v80H360Zm83 435Zm113-112Z" /></svg>
@@ -59,6 +59,23 @@ icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 40q-66.85 0-113.42-46.58Q320-413.15 320-480t46.58-113.42Q413.15-640 480-640t113.42 46.58Q640-546.85 640-480t-46.58 113.42Q546.85-320 480-320ZM200-460H60v-40h140v40Zm700 0H760v-40h140v40ZM460-760v-140h40v140h-40Zm0 700v-140h40v140h-40ZM269.85-663.85l-86.39-83.92 27.77-29.77 84.46 85.39-25.84 28.3Zm478.92 481.39-84.69-85.62 26.07-28.07 86.39 83.92-27.77 29.77Zm-84.92-507.69 83.92-86.39 29.77 27.77-85.39 84.46-28.3-25.84ZM182.46-211.23l85.62-84.69 26.54 26.07-83.16 87.16-29-28.54ZM480-480Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M482.31-160q-133.34 0-226.67-93.33-93.33-93.34-93.33-226.67 0-121.54 79.23-210.77t196.15-105.38q3.23 0 6.35.23 3.11.23 6.11.69-20.23 28.23-32.03 62.81-11.81 34.57-11.81 72.42 0 106.67 74.66 181.33Q555.64-404 662.31-404q38.07 0 72.54-11.81 34.46-11.81 61.92-32.04.46 3 .69 6.12.23 3.11.23 6.35-15.38 116.92-104.61 196.15T482.31-160Zm0-40q88 0 158-48.5t102-126.5q-20 5-40 8t-40 3q-123 0-209.5-86.5T366.31-660q0-20 3-40t8-40q-78 32-126.5 102t-48.5 158q0 116 82 198t198 82Zm-10-270Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120ZM500-160.69q123.62-8.08 211.81-98.35T800-480q0-130.69-87.42-220.19-87.43-89.5-212.58-99.12v638.62Z" /></svg>
icon:btn_ok = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m422.46-323.69 255.85-255.85L650-607.85 422.46-380.31l-114-114L280.15-466l142.31 142.31ZM480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_cancel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m336-307.69 144-144 144 144L652.31-336l-144-144 144-144L624-652.31l-144 144-144-144L307.69-624l144 144-144 144L336-307.69ZM480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_yes = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m422.46-323.69 255.85-255.85L650-607.85 422.46-380.31l-114-114L280.15-466l142.31 142.31ZM480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_no = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M300-460h360v-40H300v40Zm180.13 340q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160v-640h289.23v40H200v560h560v-249.23h40V-160H160Zm229.54-201.23-28.31-28.31L731.69-760H560v-40h240v240h-40v-171.69L389.54-361.23Z" /></svg>
icon:btn_close = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m336-307.69 144-144 144 144L652.31-336l-144-144 144-144L624-652.31l-144 144-144-144L307.69-624l144 144-144 144L336-307.69ZM480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120Zm-.13-40q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
icon:btn_save = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M720-148.46 851.54-280 824-307.54l-84 84V-419h-40v195.46l-84-84L588.46-280 720-148.46ZM580-20v-40h280v40H580ZM180-180v-680h340l220 220v125.62h-40V-620H500v-200H220v600h264.62v40H180Zm40-40v-600 600Z" /></svg>
icon:btn_browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M120-200v-560h263.85l80 80h369.23v40H447.77l-80-80H160v478.46l90.62-303.08h664L811.54-200H120Zm81.69-40h579.85l78.92-264.62H280.62L201.69-240Zm0 0 78.93-264.62L201.69-240ZM160-640v-80 80Z" /></svg>
icon:btn_list = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M384.62-220v-40H800v40H384.62Zm0-240v-40H800v40H384.62Zm0-240v-40H800v40H384.62ZM213.08-186.92q-21.9 0-37.49-15.59Q160-218.11 160-240t15.59-37.49q15.59-15.59 37.49-15.59 21.89 0 37.48 15.59 15.59 15.6 15.59 37.49t-15.59 37.49q-15.59 15.59-37.48 15.59Zm0-240q-21.9 0-37.49-15.59Q160-458.11 160-480t15.59-37.49q15.59-15.59 37.49-15.59 21.89 0 37.48 15.59 15.59 15.6 15.59 37.49t-15.59 37.49q-15.59 15.59-37.48 15.59Zm0-240q-21.9 0-37.49-15.59Q160-698.11 160-720t15.59-37.49q15.59-15.59 37.49-15.59 21.89 0 37.48 15.59 15.59 15.6 15.59 37.49t-15.59 37.49q-15.59 15.59-37.48 15.59Z" /></svg>
icon:btn_new = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160v-640h264.62v40H200v560h560v-224.62h40V-160H160Zm480-360v-120H520v-40h120v-120h40v120h120v40H680v120h-40Z" /></svg>
icon:btn_create = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm-61 83.92 49.62-212.54-164.93-142.84 217.23-18.85L480-777.69l85.08 200.38 217.23 18.85-164.93 142.84L667-203.08 480-315.92 293-203.08ZM480-470Z" /></svg>
icon:btn_reset = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M296.15-240v-40h290.16q62.23 0 106.04-42.69 43.8-42.69 43.8-104.23 0-61.54-43.8-103.85-43.81-42.31-106.04-42.31H276.62l118.61 118.62-28.31 28.31L200-593.08 366.92-760l28.31 28.31-118.61 118.61h309.69q78.54 0 134.19 54.16 55.65 54.15 55.65 132 0 77.84-55.65 132.38Q664.85-240 586.31-240H296.15Z" /></svg>
icon:btn_insert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M460-320v-280H340v-40h280v40H500v280h-40ZM95.38-95.38v-169.24H160v-430.76H95.38v-169.24h169.24V-800h430.76v-64.62h169.24v169.24H800v430.76h64.62v169.24H695.38V-160H264.62v64.62H95.38ZM264.62-200h430.76v-64.62H760v-430.76h-64.62V-760H264.62v64.62H200v430.76h64.62V-200ZM135.38-735.38h89.24v-89.24h-89.24v89.24Zm600 0h89.24v-89.24h-89.24v89.24Zm0 600h89.24v-89.24h-89.24v89.24Zm-600 0h89.24v-89.24h-89.24v89.24Zm89.24-600Zm510.76 0Zm0 510.76Zm-510.76 0Z" /></svg>
icon:btn_apply = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m424-339.69 255.85-255.85-28.31-28.31L424-396.31l-114-114L281.69-482 424-339.69ZM160-160v-640h640v640H160Zm40-40h560v-560H200v560Zm0 0v-560 560Z" /></svg>
icon:btn_build = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m662.62-156.15 101.23-101.23v82.76h30.77V-310H659.23v30.77H742L640.77-178l21.85 21.85ZM160-160v-640h640v302.62q-10.54-3.62-20.15-5.89-9.62-2.27-19.85-4.5V-760H200v560h251.23q1.46 11.23 3.73 20.85 2.27 9.61 5.89 19.15H160Zm40-80v40-560 252.23-3V-240Zm100-69.23h158.38q2.24-10.23 6.04-19.85 3.81-9.61 7.96-20.15H300v40ZM300-460h263.23q19.69-13.85 38.81-23.46 19.11-9.62 41.04-15.08V-500H300v40Zm0-150.77h360v-40H300v40ZM720-75.38q-66.85 0-113.42-46.58Q560-168.54 560-235.38q0-66.85 46.58-113.43 46.57-46.57 113.42-46.57t113.42 46.57Q880-302.23 880-235.38q0 66.84-46.58 113.42Q786.85-75.38 720-75.38Z" /></svg>
icon:btn_print = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M640-615.38v-120H320v120h-40v-160.01h400v160.01h-40Zm-456.92 40h593.84-593.84Zm521.54 100q17 0 28.5-11.5t11.5-28.5q0-17-11.5-28.5t-28.5-11.5q-17 0-28.5 11.5t-11.5 28.5q0 17 11.5 28.5t28.5 11.5ZM640-200v-181.54H320V-200h320Zm40 40H280v-160H143.08v-295.38h673.84V-320H680v160Zm96.92-200v-215.38H183.08V-360H280v-61.54h400V-360h96.92Z" /></svg>
icon:btn_preview = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160v-640h640v640H160Zm40-40h560v-480H200v480Zm280-120q-65.08 0-117.27-33.35-52.19-33.34-78.88-86.65 26.69-53.31 78.88-86.65Q414.92-560 480-560t117.27 33.35q52.19 33.34 78.88 86.65-26.69 53.31-78.88 86.65Q545.08-320 480-320Zm0-35.38q47.54 0 88.54-22.27 41-22.27 69.31-62.35-28.31-40.08-69.31-62.35-41-22.27-88.54-22.27-47.54 0-88.54 22.27-41 22.27-69.31 62.35 28.31 40.08 69.31 62.35 41 22.27 88.54 22.27Zm0-84.62Zm.18 44.62q18.67 0 31.55-13.07 12.89-13.07 12.89-31.73 0-18.67-13.07-31.55-13.07-12.89-31.73-12.89-18.67 0-31.55 13.07-12.89 13.07-12.89 31.73 0 18.67 13.07 31.55 13.07 12.89 31.73 12.89Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M460-460H240v-40h220v-220h40v220h220v40H500v220h-40v-220Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M180-100v-620h480v620L420-203.33 180-100Zm40-62 200-86 200 86v-518H220v518Zm520-58v-580H300v-40h480v620h-40ZM220-680h400-400Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M120-200v-560h263.85l80 80h369.23v40H447.77l-80-80H160v478.46l90.62-303.08h664L811.54-200H120Zm81.69-40h579.85l78.92-264.62H280.62L201.69-240Zm0 0 78.93-264.62L201.69-240ZM160-640v-80 80Z" /></svg>
@@ -94,7 +111,6 @@ icon:minimise = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:more_arrow = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M420-327.69v-304.62L572.31-480 420-327.69Z" /></svg>
icon:more_vertical = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-218.46q-16.5 0-28.25-11.75T440-258.46q0-16.5 11.75-28.25T480-298.46q16.5 0 28.25 11.75T520-258.46q0 16.5-11.75 28.25T480-218.46ZM480-440q-16.5 0-28.25-11.75T440-480q0-16.5 11.75-28.25T480-520q16.5 0 28.25 11.75T520-480q0 16.5-11.75 28.25T480-440Zm0-221.54q-16.5 0-28.25-11.75T440-701.54q0-16.5 11.75-28.25T480-741.54q16.5 0 28.25 11.75T520-701.54q0 16.5-11.75 28.25T480-661.54Z" /></svg>
icon:noncheckable = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M300-460h360v-40H300v40ZM160-160v-640h640v640H160Zm40-40h560v-560H200v560Zm0 0v-560 560Z" /></svg>
icon:open = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160v-640h289.23v40H200v560h560v-249.23h40V-160H160Zm229.54-201.23-28.31-28.31L731.69-760H560v-40h240v240h-40v-171.69L389.54-361.23Z" /></svg>
icon:panel = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-200h560v-120H200v120Zm0-160h560v-400H200v400Zm0 40v120-120Zm-40 160v-640h640v640H160Z" /></svg>
icon:pin = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M600-463.08 663.08-400v40H500v200l-20 20-20-20v-200H296.92v-40L360-463.08V-760h-40v-40h320v40h-40v296.92ZM354-400h252l-46-46v-314H400v314l-46 46Zm126 0Z" /></svg>
icon:project_copy = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M80-169.23v-507.69h40v467.69h640v40H80Zm120-120V-840h263.08l80 80H880v470.77H200Zm40-40h600V-720H527l-80-80H240v470.77Zm0 0V-800v470.77Z" /></svg>
@@ -103,7 +119,6 @@ icon:refresh = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:remove = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M240-460v-40h480v40H240Z" /></svg>
icon:revert = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M478.46-440q-16.08 0-28.04-11.96T438.46-480q0-16.08 11.96-28.04T478.46-520q16.08 0 28.04 11.96T518.46-480q0 16.08-11.96 28.04T478.46-440Zm0 280q-122.08 0-212.54-79.96T161.23-440h40.46Q218-336.77 296.04-268.38 374.08-200 478.46-200q117 0 198.5-81.5t81.5-198.5q0-117-81.5-198.5T478.46-760q-62.08 0-116.69 26.23-54.62 26.23-96.39 72.23h99.24v40H198.46v-166.15h40v95.54q46.39-50.93 108.73-79.39Q409.54-800 478.46-800q66.6 0 124.76 25.04 58.16 25.04 101.66 68.54 43.5 43.5 68.54 101.65 25.04 58.14 25.04 124.73 0 66.58-25.04 124.77t-68.54 101.69q-43.5 43.5-101.66 68.54Q545.06-160 478.46-160Z" /></svg>
icon:settings = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m405.38-120-14.46-115.69q-19.15-5.77-41.42-18.16-22.27-12.38-37.88-26.53L204.92-235l-74.61-130 92.23-69.54q-1.77-10.84-2.92-22.34-1.16-11.5-1.16-22.35 0-10.08 1.16-21.19 1.15-11.12 2.92-25.04L130.31-595l74.61-128.46 105.93 44.61q17.92-14.92 38.77-26.92 20.84-12 40.53-18.54L405.38-840h149.24l14.46 116.46q23 8.08 40.65 18.54 17.65 10.46 36.35 26.15l109-44.61L829.69-595l-95.31 71.85q3.31 12.38 3.7 22.73.38 10.34.38 20.42 0 9.31-.77 19.65-.77 10.35-3.54 25.04L827.92-365l-74.61 130-107.23-46.15q-18.7 15.69-37.62 26.92-18.92 11.23-39.38 17.77L554.62-120H405.38ZM440-160h78.23L533-268.31q30.23-8 54.42-21.96 24.2-13.96 49.27-38.27L736.46-286l39.77-68-87.54-65.77q5-17.08 6.62-31.42 1.61-14.35 1.61-28.81 0-15.23-1.61-28.81-1.62-13.57-6.62-29.88L777.77-606 738-674l-102.08 42.77q-18.15-19.92-47.73-37.35-29.57-17.42-55.96-23.11L520-800h-79.77l-12.46 107.54q-30.23 6.46-55.58 20.81-25.34 14.34-50.42 39.42L222-674l-39.77 68L269-541.23q-5 13.46-7 29.23t-2 32.77q0 15.23 2 30.23t6.23 29.23l-86 65.77L222-286l99-42q23.54 23.77 48.88 38.12 25.35 14.34 57.12 22.34L440-160Zm38.92-220q41.85 0 70.93-29.08 29.07-29.07 29.07-70.92t-29.07-70.92Q520.77-580 478.92-580q-42.07 0-71.04 29.08-28.96 29.07-28.96 70.92t28.96 70.92Q436.85-380 478.92-380ZM480-480Z" /></svg>
icon:star = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm-61 83.92 49.62-212.54-164.93-142.84 217.23-18.85L480-777.69l85.08 200.38 217.23 18.85-164.93 142.84L667-203.08 480-315.92 293-203.08ZM480-470Z" /></svg>
icon:stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M140-130.77 110.77-160l272.31-272.31 160 160 279.38-320 28.31 26.77-306.15 353.23-161.54-161.54L140-130.77Zm0-240L110.77-400l272.31-272.31 160 160 279.38-320 28.31 26.77-306.15 353.23-161.54-161.54L140-370.77Z" /></svg>
icon:text = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M200-230.77V-280h320v40l-320 9.23Zm0-151.54v-40h560v40H200Zm0-155.38v-40h560v40H200ZM200-680v-49.23h560V-680H200Z" /></svg>
icon:timer_off = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m768.77-304-30-30q11-26.23 16.11-52.73Q760-413.23 760-440q0-116-82-198t-198-82q-24 0-52.54 5t-53.69 16l-30-30q31.08-15.38 66.27-23.19Q445.23-760 480-760q56.92 0 110.96 20.38 54.04 20.39 100.42 59.16l43.7-43.69 28.3 28.3-43.69 43.7q38.77 46.38 59.54 100.8Q800-496.92 800-440q0 34.31-7.81 69.27-7.81 34.96-23.42 66.73ZM500-572.77v-51.85h-40v11.85l40 40Zm298.15 467.54L697.54-205.85q-42.62 40.39-99.66 63.12Q540.85-120 480-120q-66.31 0-124.5-25.04t-101.81-68.65q-43.61-43.62-68.65-101.81Q160-373.69 160-440q0-61.54 21.96-117.42 21.96-55.89 63.89-100.12L105.23-798.15l28.31-28.31 692.92 692.92-28.31 28.31ZM480-160q51.23 0 100.08-19.54 48.84-19.54 88.46-55.08L274.15-629q-35.53 38.08-54.84 86.54Q200-494 200-440q0 116 82 198t198 82ZM375.38-860v-40h209.24v40H375.38Zm96.08 428.08ZM556.77-517Z" /></svg>
+22
View File
@@ -29,6 +29,27 @@ active = cyan
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #0c0c11
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = cyan
headertag = cyan:128
emphasis = purple:L105
whitespace = purple:64
dialog = cyan
altdialog = blue
note = yellow
@@ -27,6 +27,27 @@ active = cyan
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #e1dae2
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = cyan
headertag = cyan:128
emphasis = purple
whitespace = purple:64
dialog = cyan:D105
altdialog = blue
note = yellow
+22
View File
@@ -29,6 +29,27 @@ active = cyan
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #191924
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = cyan
headertag = cyan:128
emphasis = #a581ec
whitespace = #a581ec64
dialog = cyan
altdialog = blue
note = yellow
@@ -29,6 +29,27 @@ active = green
inactive = orange
disabled = #696d69
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #1e1f1e
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = #fbfaf8
headertag = #828782
emphasis = #3fac39
whitespace = #3fac3964
dialog = #90d98c
altdialog = #4cb946
note = #dd843c
@@ -29,6 +29,27 @@ active = green
inactive = orange
disabled = #aab1aa
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #ece5df
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = #2b2c2a
headertag = #828782
emphasis = #4cb946
whitespace = #4cb94664
dialog = #1c8217
altdialog = #3fac39
note = #d97726
@@ -29,6 +29,27 @@ active = red
inactive = faded
disabled = #575c79
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #1e212f
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = red
headertag = red:128
emphasis = #ffffff
whitespace = #ffffff64
dialog = #fe81b5
altdialog = #ffb3d2
note = #a0acfe
@@ -29,6 +29,27 @@ active = red
inactive = faded
disabled = #b6bad1
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #e9e5e7
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = red
headertag = red:128
emphasis = #1e202f
whitespace = #1e202f64
dialog = red
altdialog = #fb6fa9
note = blue
@@ -29,6 +29,27 @@ active = default
inactive = faded
disabled = #454f5f
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #191d23
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = cyan
headertag = cyan:128
emphasis = #5fe2d1
whitespace = #5fe2d164
dialog = #87B4FC
altdialog = #5A96F6
note = #d19af4
@@ -29,6 +29,27 @@ active = default
inactive = faded
disabled = #acb5c3
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #e7eaee
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = cyan
headertag = cyan:128
emphasis = #008976
whitespace = #00897664
dialog = #1a68e5
altdialog = #1249a0
note = #c17eed
@@ -29,6 +29,27 @@ active = default
inactive = faded
disabled = #5d5f6f
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #1b1c20
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = red
headertag = red:128
emphasis = #f391b6
whitespace = #f391b664
dialog = yellow
altdialog = #e86296
note = #929ff7
@@ -29,6 +29,27 @@ active = default
inactive = faded
disabled = #BBBDC9
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #e7e7ed
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = red
headertag = red:128
emphasis = #d53874
whitespace = #d5387464
dialog = #9f6303
altdialog = #e86296
note = blue
@@ -29,6 +29,27 @@ active = blue:L150
inactive = blue:D150
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:L125
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = blue
headertag = blue:D150
emphasis = blue:L150
whitespace = blue:64
dialog = blue
altdialog = blue:L150
note = blue:L150
@@ -29,6 +29,27 @@ active = blue:L115
inactive = blue:D150
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:D105
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = blue
headertag = blue:D150
emphasis = blue:L125
whitespace = blue:64
dialog = blue
altdialog = blue:L125
note = blue:L125
+22
View File
@@ -27,6 +27,27 @@ active = default
inactive = faded
disabled = #b4aca5
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:D110
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = yellow
headertag = yellow:160
emphasis = #aa791e
whitespace = #aa791e64
dialog = green:D110
altdialog = #378b8b
note = faded
@@ -27,6 +27,27 @@ active = default
inactive = faded
disabled = #4b4f5c
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:D130
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = yellow
headertag = yellow:160
emphasis = yellow
whitespace = yellow:64
dialog = green
altdialog = cyan
note = faded
@@ -27,6 +27,27 @@ active = green
inactive = faded
disabled = faded:L135
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:D108
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = red
headertag = red:128
emphasis = #488843
whitespace = #48884364
dialog = #b95a00
altdialog = #b18010
note = faded
+22
View File
@@ -27,6 +27,27 @@ active = green
inactive = faded
disabled = #504742
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #241d1d
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = red
headertag = red:128
emphasis = #85c47f
whitespace = #85c47f64
dialog = orange
altdialog = yellow
note = faded
@@ -28,6 +28,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base
windowtext = #969696
@@ -58,6 +79,7 @@ link = blue
headertext = #ffffff
headertag = purple
emphasis = cyan
whitespace = cyan:64
dialog = green
altdialog = #008cff
note = #969696
@@ -29,6 +29,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:L125
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = green
headertag = green:D150
emphasis = orange
whitespace = orange:64
dialog = blue
altdialog = red
note = yellow
@@ -29,6 +29,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:D105
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = green
headertag = green:L135
emphasis = orange
whitespace = orange:64
dialog = blue
altdialog = red
note = yellow:D125
+22
View File
@@ -45,6 +45,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #44475a
windowtext = #f8f8f2
@@ -75,6 +96,7 @@ link = #ff79c6
headertext = purple
headertag = purple:D150
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = #ffcce9
+22
View File
@@ -29,6 +29,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:L125
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = yellow:L125
headertag = faded
emphasis = orange
whitespace = orange:64
dialog = yellow
altdialog = orange
note = yellow:L125
@@ -29,6 +29,27 @@ active = cyan
inactive = orange
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #1e2326
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = cyan
headertag = cyan:128
emphasis = blue
whitespace = blue:64
dialog = green
altdialog = cyan
note = purple
@@ -29,6 +29,27 @@ active = cyan
inactive = orange
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #f2efdf
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = cyan
headertag = cyan:128
emphasis = blue
whitespace = blue:64
dialog = green
altdialog = cyan
note = purple
@@ -27,6 +27,27 @@ active = green
inactive = faded
disabled = #e2bcce
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #ffe3ea
windowtext = default
@@ -57,6 +78,7 @@ link = #4781d8
headertext = #4781d8
headertag = #4781d880
emphasis = #8152b8
whitespace = #8152b864
dialog = #eb4073
altdialog = #4781d8
note = #31924c
@@ -27,6 +27,27 @@ active = green
inactive = faded
disabled = #55516d
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #181825
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = blue
headertag = blue:128
emphasis = #d19df3
whitespace = #d19df364
dialog = #ff9dd9
altdialog = blue
note = #65ca80
+22
View File
@@ -27,6 +27,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #e7ebee
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = purple
headertag = purple:128
emphasis = blue
whitespace = blue:64
dialog = #0e2a35
altdialog = cyan
note = green
+22
View File
@@ -29,6 +29,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #363636
windowtext = default
@@ -59,6 +80,7 @@ link = default
headertext = default:L115
headertag = default:D125
emphasis = default
whitespace = default:64
dialog = default
altdialog = default
note = default
+22
View File
@@ -29,6 +29,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #efefef
windowtext = default
@@ -59,6 +80,7 @@ link = default
headertext = default:D200
headertag = default:L400
emphasis = default
whitespace = default:64
dialog = default
altdialog = default
note = default
@@ -29,6 +29,27 @@ active = yellow
inactive = faded
disabled = #404263
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = red
headertag = red:128
emphasis = yellow
whitespace = yellow:64
dialog = orange
altdialog = red
note = blue
@@ -29,6 +29,27 @@ active = #eb834f
inactive = faded
disabled = faded:L125
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = red
headertag = red:128
emphasis = #f6661e
whitespace = #f6661e64
dialog = orange
altdialog = red
note = blue
+22
View File
@@ -29,6 +29,27 @@ active = blue
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:L180
windowtext = default
@@ -59,6 +80,7 @@ link = purple
headertext = orange
headertag = red
emphasis = orange
whitespace = orange:64
dialog = yellow
altdialog = green
note = purple
+22
View File
@@ -49,6 +49,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #eaeaea
windowtext = default
@@ -79,6 +100,7 @@ link = blue
headertext = blue
headertag = blue:160
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = yellow:D175
+22
View File
@@ -29,6 +29,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #252525
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = purple
headertag = purple:128
emphasis = blue
whitespace = blue:64
dialog = #ffffff
altdialog = cyan
note = green
+22
View File
@@ -37,6 +37,27 @@ cyan = #7fdbca
blue = #82aaff
purple = #c792ea
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Project]
root = blue
folder = yellow
@@ -79,6 +100,7 @@ link = blue
headertext = blue
headertag = blue:160
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = yellow:L115
+22
View File
@@ -61,6 +61,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #041d20
windowtext = default
@@ -91,6 +112,7 @@ link = #40d4e7
headertext = #49e9a6
headertag = green:D125
emphasis = #d67e5c
whitespace = #d67e5c64
dialog = green
altdialog = blue
note = #d67e5c
+22
View File
@@ -61,6 +61,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #f9f1e1
windowtext = default
@@ -91,6 +112,7 @@ link = #00c6e0
headertext = #00b368
headertag = green:D125
emphasis = #b3694d
whitespace = #b3694d64
dialog = green
altdialog = blue
note = #b3694d
+22
View File
@@ -29,6 +29,27 @@ active = green
inactive = faded
disabled = #576279
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #242933
windowtext = default
@@ -59,6 +80,7 @@ link = purple
headertext = cyan
headertag = cyan:128
emphasis = #8fbcbb
whitespace = #8fbcbb64
dialog = blue
altdialog = green
note = orange
+22
View File
@@ -27,6 +27,27 @@ active = green
inactive = faded
disabled = #b2c0d6
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #e5e9f0
windowtext = default
@@ -57,6 +78,7 @@ link = purple
headertext = #559db1
headertag = #559db188
emphasis = #549b86
whitespace = #549b8664
dialog = #5579a5
altdialog = #619b5b
note = orange
+22
View File
@@ -27,6 +27,27 @@ active = default
inactive = faded
disabled = #4e545e
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base
windowtext = default
@@ -57,6 +78,7 @@ link = #a6d0ed
headertext = yellow
headertag = yellow:128
emphasis = yellow
whitespace = yellow:64
dialog = green
altdialog = orange
note = #a6d0ed
@@ -27,6 +27,27 @@ active = default:L165
inactive = faded:L110
disabled = #adadad
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = yellow
headertag = yellow:128
emphasis = #ad802a
whitespace = #ad802a64
dialog = green
altdialog = #c0652d
note = #668bbd
+22
View File
@@ -28,6 +28,27 @@ active = green
inactive = faded
disabled = faded:D150
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #10151b
windowtext = default
@@ -58,6 +79,7 @@ link = green
headertext = green
headertag = green:128
emphasis = blue
whitespace = blue:100
dialog = cyan
altdialog = green
note = #c7b377
@@ -29,6 +29,27 @@ active = #24292f
inactive = faded
disabled = #afb8c1
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #eaeef2
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = default
headertag = #9ea7b0
emphasis = #1a7f37
whitespace = #1a7f3764
dialog = #0d1117
altdialog = cyan
note = #bf8700
@@ -29,6 +29,27 @@ active = default
inactive = faded
disabled = #484f58
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #161b22
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = default
headertag = #b1bac4
emphasis = #7ee787
whitespace = #7ee78764
dialog = #ffffff
altdialog = #57ccc5
note = #f8e3a1
+22
View File
@@ -27,6 +27,27 @@ active = default
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #f1d9d9
windowtext = default
@@ -57,6 +78,7 @@ link = #5159cc
headertext = #343242
headertag = #34324280
emphasis = #c05858
whitespace = #c0585864
dialog = #ce1d1d
altdialog = #c45522
note = #9f58ad
+23 -1
View File
@@ -27,6 +27,27 @@ active = default
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #0e0e11
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = default
headertag = default:128
emphasis = #ff9d9d
whitespace = #ff9d9d64
dialog = red
altdialog = orange
note = purple
@@ -70,4 +92,4 @@ spellcheckline = #ff2727
errorline = cyan
replacetag = blue
modifier = green
texthighlight = red:80
texthighlight = red:80
@@ -27,6 +27,27 @@ active = #c7c0d2
inactive = red
disabled = #625b70
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #0f0e13
windowtext = #c7c0d2
@@ -57,6 +78,7 @@ link = blue
headertext = #e4e0ec
headertag = faded
emphasis = #9267d3
whitespace = #9267d364
dialog = #e4e0ec
altdialog = #c458ac
note = red
@@ -27,6 +27,27 @@ active = default
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #d2cfda
windowtext = #29252f
@@ -57,6 +78,7 @@ link = blue
headertext = #29252f
headertag = faded
emphasis = purple
whitespace = purple:64
dialog = #29252f
altdialog = #c458ac
note = red
+22
View File
@@ -27,6 +27,27 @@ active = default
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #251b18
windowtext = #ceb3a2
@@ -57,6 +78,7 @@ link = cyan
headertext = default
headertag = default:160
emphasis = #f1daca
whitespace = #f1daca64
dialog = orange
altdialog = red
note = green
@@ -27,6 +27,27 @@ active = #86685b
inactive = red
disabled = #b6a096
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #e2d3c1
windowtext = default
@@ -57,6 +78,7 @@ link = #458871
headertext = default
headertag = default:160
emphasis = #6e2920
whitespace = #6e292064
dialog = #ac5828
altdialog = #b44b4b
note = #6e8021
+22
View File
@@ -42,6 +42,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #f3f4f5
windowtext = default
@@ -72,6 +93,7 @@ link = blue
headertext = green
headertag = green:D125
emphasis = purple
whitespace = purple:64
dialog = blue
altdialog = yellow
note = cyan
@@ -48,6 +48,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #073642
windowtext = default
@@ -78,6 +99,7 @@ link = blue
headertext = blue
headertag = #657b83
emphasis = blue
whitespace = blue:64
dialog = cyan
altdialog = red
note = cyan:D125
@@ -48,6 +48,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #eee8d5
windowtext = default
@@ -78,6 +99,7 @@ link = blue
headertext = blue
headertag = #657b83
emphasis = blue
whitespace = blue:64
dialog = cyan
altdialog = red
note = cyan:D125
@@ -27,6 +27,27 @@ active = #77606e
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #f0e4e4
windowtext = default
@@ -57,6 +78,7 @@ link = #5577bb
headertext = #66515e
headertag = #66515e80
emphasis = #5577bb
whitespace = #5577bb64
dialog = #c54a5f
altdialog = #4d968a
note = #699128
@@ -27,6 +27,27 @@ active = default
inactive = red
disabled = #85748a
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #221a23
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = #f3eae0
headertag = #f3eae080
emphasis = blue
whitespace = blue:64
dialog = red
altdialog = cyan
note = green
+22
View File
@@ -43,6 +43,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:L140
windowtext = default
@@ -73,6 +94,7 @@ link = blue
headertext = blue
headertag = blue:160
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = yellow:L115
@@ -43,6 +43,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:D110
windowtext = default
@@ -73,6 +94,7 @@ link = blue
headertext = blue
headertag = blue:160
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = yellow:D125
+22
View File
@@ -49,6 +49,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #efefef
windowtext = #000000
@@ -79,6 +100,7 @@ link = blue
headertext = blue
headertag = blue:L135
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = #b38c00
@@ -49,6 +49,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #282a2e
windowtext = default
@@ -79,6 +100,7 @@ link = blue
headertext = blue
headertag = blue:D150
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = #f0dbb2
@@ -49,6 +49,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:L125
windowtext = default
@@ -79,6 +100,7 @@ link = blue
headertext = blue
headertag = blue:D150
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = #fff4cc
@@ -49,6 +49,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #181818
windowtext = default
@@ -79,6 +100,7 @@ link = blue
headertext = blue
headertag = blue:D150
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = #e7d696
@@ -49,6 +49,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #393939
windowtext = default
@@ -79,6 +100,7 @@ link = blue
headertext = blue
headertag = blue:D150
emphasis = orange
whitespace = orange:64
dialog = green
altdialog = yellow
note = #ffe6b3
@@ -29,6 +29,27 @@ active = green
inactive = faded
disabled = faded:D175
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = cyan
headertag = cyan:128
emphasis = blue
whitespace = blue:64
dialog = green
altdialog = cyan
note = red
+23 -1
View File
@@ -29,6 +29,27 @@ active = red
inactive = faded
disabled = faded:D175
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = yellow
headertag = yellow:128
emphasis = orange
whitespace = orange:64
dialog = red
altdialog = yellow
note = green
@@ -72,4 +94,4 @@ spellcheckline = #ff3737
errorline = cyan
replacetag = #ff61e5
modifier = cyan
texthighlight = red:80
texthighlight = red:80
@@ -29,6 +29,27 @@ active = green
inactive = faded
disabled = faded:L135
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = cyan
headertag = cyan:128
emphasis = blue
whitespace = blue:64
dialog = green
altdialog = cyan
note = red
@@ -29,6 +29,27 @@ active = red
inactive = faded
disabled = faded:L135
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base
windowtext = default
@@ -59,6 +80,7 @@ link = blue
headertext = yellow
headertag = yellow:128
emphasis = orange
whitespace = orange:64
dialog = red
altdialog = #a37e03
note = green
+22
View File
@@ -28,6 +28,27 @@ active = green
inactive = red
disabled = faded
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = base:D150
windowtext = default
@@ -58,6 +79,7 @@ link = green
headertext = green
headertag = green:128
emphasis = #fff6aa
whitespace = #fff6aa64
dialog = cyan
altdialog = #11bdc6
note = green
@@ -27,6 +27,27 @@ active = #ff9fbd
inactive = faded
disabled = #374a5c
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #151f25
windowtext = default
@@ -57,6 +78,7 @@ link = blue
headertext = default
headertag = faded
emphasis = green
whitespace = green:64
dialog = #ff9fbd
altdialog = orange
note = blue
@@ -27,6 +27,27 @@ active = #da7b8f
inactive = faded
disabled = #b6c9ba
[Icon]
tool = default
sidebar = default
accept = green
reject = red
action = blue
altaction = orange
apply = green
create = yellow
destroy = faded
reset = green
add = green
change = green
remove = red
shortcode = default
markdown = orange
systemio = yellow
info = blue
warning = orange
error = red
[Palette]
window = #e2eee7
windowtext = default
@@ -57,6 +78,7 @@ link = #0b9caf
headertext = #526b5d
headertag = #526b5d80
emphasis = #1e920e
whitespace = #1e920e64
dialog = #d15574
altdialog = #d86f3e
note = #0b9caf
+6
View File
@@ -560,6 +560,12 @@ def jsonEncode(data: dict | list | tuple, n: int = 0, nmax: int = 0) -> str:
return "".join(buffer)
def jsonCombine(data: dict[str, str]) -> str:
"""Combine multiple already packed JSON strings."""
payload = ",\n".join(f' "{k}": {v}' for k, v in data.items())
return f"{{\n{payload}\n}}\n"
##
# XML Helpers
##
+24 -11
View File
@@ -33,8 +33,10 @@ from pathlib import Path
from time import time
from typing import TYPE_CHECKING
from novelwriter import SHARED
from novelwriter.common import isHandle, isItemClass, isTitleTag, jsonEncode
from novelwriter import SHARED, __hexversion__
from novelwriter.common import (
formatTimeStamp, isHandle, isItemClass, isTitleTag, jsonCombine, jsonEncode
)
from novelwriter.constants import nwFiles, nwKeyWords, nwStyles
from novelwriter.core.indexdata import NOTE_TYPES, TT_NONE, IndexHeading, IndexNode, T_NoteTypes
from novelwriter.core.novelmodel import NovelModel
@@ -82,6 +84,11 @@ class Index:
a rebuild of the index data.
"""
__slots__ = (
"_indexBroken", "_indexChange", "_indexUpgrade", "_itemIndex", "_novelExtra",
"_novelModels", "_project", "_rootChange", "_tagsIndex",
)
def __init__(self, project: NWProject) -> None:
self._project = project
@@ -90,6 +97,7 @@ class Index:
self._tagsIndex = TagsIndex()
self._itemIndex = ItemIndex(project, self._tagsIndex)
self._indexBroken = False
self._indexUpgrade = False
# Models
self._novelModels: dict[str, NovelModel] = {}
@@ -110,6 +118,10 @@ class Index:
def indexBroken(self) -> bool:
return self._indexBroken
@property
def indexUpgrade(self) -> bool:
return self._indexUpgrade
##
# Getters
##
@@ -241,6 +253,8 @@ class Index:
return False
try:
meta = data.get("novelWriter.meta", {})
self._indexUpgrade = meta.get("version") != __hexversion__
self._tagsIndex.unpackData(data["novelWriter.tagsIndex"])
self._itemIndex.unpackData(data["novelWriter.itemIndex"])
except Exception:
@@ -273,23 +287,22 @@ class Index:
return False
logger.debug("Saving index file")
tStart = time()
start = time()
try:
tagsIndex = jsonEncode(self._tagsIndex.packData(), n=1, nmax=2)
itemIndex = jsonEncode(self._itemIndex.packData(), n=1, nmax=4)
meta = {"version": __hexversion__, "timestamp": formatTimeStamp(start)}
with open(indexFile, mode="w+", encoding="utf-8") as outFile:
outFile.write("{\n")
outFile.write(f' "novelWriter.tagsIndex": {tagsIndex},\n')
outFile.write(f' "novelWriter.itemIndex": {itemIndex}\n')
outFile.write("}\n")
outFile.write(jsonCombine({
"novelWriter.meta": jsonEncode(meta, n=1),
"novelWriter.tagsIndex": jsonEncode(self._tagsIndex.packData(), n=1, nmax=2),
"novelWriter.itemIndex": jsonEncode(self._itemIndex.packData(), n=1, nmax=4),
}))
except Exception:
logger.error("Failed to save index file")
logException()
return False
logger.debug("Index saved in %.3f ms", (time() - tStart)*1000)
logger.debug("Index saved in %.3f ms", (time() - start)*1000)
return True
+14 -3
View File
@@ -300,13 +300,13 @@ class IndexHeading:
"""Set the text for a comment and make sure it is a string."""
match comment.lower():
case "short" | "synopsis" | "summary":
self._comments["summary"] = str(text)
self._appendCommentText("summary", text)
case "story" if key:
self._cache.story.add(key)
self._comments[f"story.{key}"] = str(text)
self._appendCommentText(f"story.{key}", text)
case "note" if key:
self._cache.note.add(key)
self._comments[f"note.{key}"] = str(text)
self._appendCommentText(f"note.{key}", text)
def setTag(self, tag: str) -> None:
"""Set the tag for references, and make sure it is a string."""
@@ -371,6 +371,7 @@ class IndexHeading:
def unpackData(self, data: dict) -> None:
"""Unpack a heading entry from a dictionary."""
self._comments = {} # These are accumulative and should be reset here
for key, entry in data.items():
if key == "meta":
self.setLevel(entry.get("level", "H0"))
@@ -394,3 +395,13 @@ class IndexHeading:
self.setComment(comment, compact(kind), str(entry))
else:
raise KeyError("Unknown key in heading entry")
##
# Internal Functions
##
def _appendCommentText(self, key: str, text: str) -> None:
"""Append text to a comment."""
if current := self._comments.get(key):
text = f"{current:s}\n\n{text:s}"
self._comments[key] = str(text)
+1 -1
View File
@@ -61,7 +61,7 @@ class NovelModel(QAbstractTableModel):
def __init__(self) -> None:
super().__init__()
self._rows: list[dict[int, T_NodeData]] = []
self._more = SHARED.theme.getIcon("more_arrow")
self._more = SHARED.theme.getIcon("more_arrow", "tool")
self._columns = 3
self._extraKey = ""
self._extraLabel = ""
+2
View File
@@ -552,6 +552,8 @@ class NWProject:
def updateTheme(self) -> None:
"""Update theme elements."""
logger.debug("Theme Update: NWProject")
self._data.itemStatus.refreshIcons()
self._data.itemImport.refreshIcons()
+1 -1
View File
@@ -183,7 +183,7 @@ class NWStatus:
icon = NWStatus.createIcon(self._height, color, shape)
return StatusEntry(simplified(data[2]), color, theme, shape, icon)
except Exception:
logger.error("Could not parse entry %s", str(data))
logger.error("Could not parse entry %s", data)
return None
def refreshIcons(self) -> None:
+1 -1
View File
@@ -89,7 +89,7 @@ class NWTree:
"""
if tHandle and tHandle in self._items:
return self._items[tHandle]
logger.error("No tree item with handle '%s'", str(tHandle))
logger.error("No tree item with handle '%s'", tHandle)
return None
def __contains__(self, tHandle: str) -> bool:
+7 -3
View File
@@ -33,10 +33,11 @@ from PyQt6.QtWidgets import (
from novelwriter import CONFIG, SHARED
from novelwriter.common import readTextFile
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel
from novelwriter.extensions.modified import NDialog
from novelwriter.extensions.versioninfo import VersionInfoWidget
from novelwriter.types import QtAlignRightTop, QtDialogClose, QtHexArgb
from novelwriter.types import QtAlignRightTop, QtHexArgb, QtRoleDestruct
if TYPE_CHECKING:
from PyQt6.QtGui import QCloseEvent
@@ -82,8 +83,11 @@ class GuiAbout(NDialog):
self.txtCredits.setViewportMargins(0, 8, 8, 0)
# Buttons
self.btnBox = QDialogButtonBox(QtDialogClose, self)
self.btnBox.rejected.connect(self.reject)
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnClose, QtRoleDestruct)
# Assemble
self.innerBox = QVBoxLayout()
+15 -8
View File
@@ -33,10 +33,11 @@ from PyQt6.QtWidgets import (
)
from novelwriter import SHARED
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel
from novelwriter.extensions.modified import NDialog
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk, QtDialogReset, QtUserRole
from novelwriter.types import QtAccepted, QtRoleAccept, QtRoleReject, QtRoleReset, QtUserRole
logger = logging.getLogger(__name__)
@@ -85,13 +86,19 @@ class GuiDocMerge(NDialog):
self.optBox.setColumnStretch(2, 1)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogOk | QtDialogCancel, self)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.btnOk = SHARED.theme.getStandardButton(nwStandardButton.OK, self)
self.btnOk.clicked.connect(self.accept)
self.resetButton = self.buttonBox.addButton(QtDialogReset)
if self.resetButton:
self.resetButton.clicked.connect(self._resetList)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnReset = SHARED.theme.getStandardButton(nwStandardButton.RESET, self)
self.btnReset.clicked.connect(self._resetList)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnOk, QtRoleAccept)
self.btnBox.addButton(self.btnCancel, QtRoleReject)
self.btnBox.addButton(self.btnReset, QtRoleReset)
# Assemble
self.outerBox = QVBoxLayout()
@@ -103,7 +110,7 @@ class GuiDocMerge(NDialog):
self.outerBox.addSpacing(8)
self.outerBox.addLayout(self.optBox)
self.outerBox.addSpacing(12)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.setLayout(self.outerBox)
# Load Content
+12 -5
View File
@@ -33,10 +33,11 @@ from PyQt6.QtWidgets import (
)
from novelwriter import SHARED
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel
from novelwriter.extensions.modified import NComboBox, NDialog
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk, QtUserRole
from novelwriter.types import QtAccepted, QtRoleAccept, QtRoleReject, QtUserRole
logger = logging.getLogger(__name__)
@@ -117,9 +118,15 @@ class GuiDocSplit(NDialog):
self.optBox.setColumnStretch(3, 1)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogOk | QtDialogCancel, self)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.btnOk = SHARED.theme.getStandardButton(nwStandardButton.OK, self)
self.btnOk.clicked.connect(self.accept)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnOk, QtRoleAccept)
self.btnBox.addButton(self.btnCancel, QtRoleReject)
# Assemble
self.outerBox = QVBoxLayout()
@@ -132,7 +139,7 @@ class GuiDocSplit(NDialog):
self.outerBox.addSpacing(8)
self.outerBox.addLayout(self.optBox)
self.outerBox.addSpacing(12)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.setLayout(self.outerBox)
# Load Content
+13 -5
View File
@@ -27,8 +27,10 @@ import logging
from PyQt6.QtWidgets import QDialogButtonBox, QHBoxLayout, QLabel, QLineEdit, QVBoxLayout, QWidget
from novelwriter import SHARED
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.modified import NDialog
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk
from novelwriter.types import QtAccepted, QtRoleAccept, QtRoleReject
logger = logging.getLogger(__name__)
@@ -54,9 +56,15 @@ class GuiEditLabel(NDialog):
self.lblValue.setBuddy(self.lblValue)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogOk | QtDialogCancel, self)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.btnOk = SHARED.theme.getStandardButton(nwStandardButton.OK, self)
self.btnOk.clicked.connect(self.accept)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnOk, QtRoleAccept)
self.btnBox.addButton(self.btnCancel, QtRoleReject)
# Assemble
self.innerBox = QHBoxLayout()
@@ -67,7 +75,7 @@ class GuiEditLabel(NDialog):
self.outerBox = QVBoxLayout()
self.outerBox.setSpacing(12)
self.outerBox.addLayout(self.innerBox, 1)
self.outerBox.addWidget(self.buttonBox, 0)
self.outerBox.addWidget(self.btnBox, 0)
self.setLayout(self.outerBox)
+28 -19
View File
@@ -38,13 +38,14 @@ from novelwriter.common import compact, describeFont, processDialogSymbols, uniq
from novelwriter.config import DEF_GUI_DARK, DEF_GUI_LIGHT, DEF_ICONS, DEF_TREECOL
from novelwriter.constants import nwLabels, nwQuotes, nwUnicode, trConst
from novelwriter.dialogs.quotes import GuiQuoteSelect
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel, NScrollableForm
from novelwriter.extensions.modified import (
NComboBox, NDialog, NDoubleSpinBox, NIconToolButton, NSpinBox
)
from novelwriter.extensions.pagedsidebar import NPagedSideBar
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import QtAlignCenter, QtDialogCancel, QtDialogSave
from novelwriter.types import QtAlignCenter, QtRoleAccept, QtRoleReject
logger = logging.getLogger(__name__)
@@ -70,7 +71,7 @@ class GuiPreferences(NDialog):
)
# Search Box
self.searchAction = QAction(SHARED.theme.getIcon("search"), "")
self.searchAction = QAction(SHARED.theme.getIcon("search", "apply"), "")
self.searchAction.triggered.connect(self._gotoSearch)
self.searchText = QLineEdit(self)
@@ -89,9 +90,15 @@ class GuiPreferences(NDialog):
self.mainForm.setHelpTextStyle(SHARED.theme.helpText)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogSave | QtDialogCancel, self)
self.buttonBox.accepted.connect(self._doSave)
self.buttonBox.rejected.connect(self.reject)
self.btnSave = SHARED.theme.getStandardButton(nwStandardButton.SAVE, self)
self.btnSave.clicked.connect(self._doSave)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnSave, QtRoleAccept)
self.btnBox.addButton(self.btnCancel, QtRoleReject)
# Assemble
self.searchBox = QHBoxLayout()
@@ -107,7 +114,7 @@ class GuiPreferences(NDialog):
self.outerBox = QVBoxLayout()
self.outerBox.addLayout(self.searchBox)
self.outerBox.addLayout(self.mainBox)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.outerBox.setSpacing(8)
self.setLayout(self.outerBox)
@@ -151,7 +158,7 @@ class GuiPreferences(NDialog):
self.mainForm.addGroupLabel(title, section)
# Display Language
self.guiLocale = NComboBox(self)
self.guiLocale = NComboBox(self, scrollable=True)
self.guiLocale.setMinimumWidth(200)
for lang, name in CONFIG.listLanguages(CONFIG.LANG_NW):
self.guiLocale.addItem(name, lang)
@@ -163,9 +170,9 @@ class GuiPreferences(NDialog):
)
# Colour Theme
self.lightTheme = NComboBox(self)
self.lightTheme = NComboBox(self, scrollable=True)
self.lightTheme.setMinimumWidth(200)
self.darkTheme = NComboBox(self)
self.darkTheme = NComboBox(self, scrollable=True)
self.darkTheme.setMinimumWidth(200)
for key, theme in SHARED.theme.colourThemes.items():
if theme.dark:
@@ -186,7 +193,7 @@ class GuiPreferences(NDialog):
)
# Icon Theme
self.iconTheme = NComboBox(self)
self.iconTheme = NComboBox(self, scrollable=True)
self.iconTheme.setMinimumWidth(200)
for key, theme in SHARED.theme.iconCache.iconThemes.items():
self.iconTheme.addItem(theme.name, key)
@@ -204,7 +211,7 @@ class GuiPreferences(NDialog):
self.guiFont.setMinimumWidth(162)
self.guiFont.setText(describeFont(self._guiFont))
self.guiFont.setCursorPosition(0)
self.guiFontButton = NIconToolButton(self, iSz, "font")
self.guiFontButton = NIconToolButton(self, iSz, "font", "tool")
self.guiFontButton.clicked.connect(self._selectGuiFont)
self.mainForm.addRow(
self.tr("Application font"), self.guiFont,
@@ -258,7 +265,7 @@ class GuiPreferences(NDialog):
self.textFont.setMinimumWidth(162)
self.textFont.setText(describeFont(CONFIG.textFont))
self.textFont.setCursorPosition(0)
self.textFontButton = NIconToolButton(self, iSz, "font")
self.textFontButton = NIconToolButton(self, iSz, "font", "tool")
self.textFontButton.clicked.connect(self._selectTextFont)
self.mainForm.addRow(
self.tr("Document font"), self.textFont,
@@ -366,7 +373,9 @@ class GuiPreferences(NDialog):
# Backup Path
self.backupPath = CONFIG.backupPath()
self.backupGetPath = QPushButton(SHARED.theme.getIcon("browse"), self.tr("Browse"), self)
self.backupGetPath = QPushButton(
SHARED.theme.getIcon("browse", "systemio"), self.tr("Browse"), self
)
self.backupGetPath.setIconSize(iSz)
self.backupGetPath.clicked.connect(self._backupFolder)
self.mainForm.addRow(
@@ -504,7 +513,7 @@ class GuiPreferences(NDialog):
self.mainForm.addGroupLabel(title, section)
# Spell Checking
self.spellLanguage = NComboBox(self)
self.spellLanguage = NComboBox(self, scrollable=True)
self.spellLanguage.setMinimumWidth(200)
if CONFIG.hasEnchant:
@@ -658,7 +667,7 @@ class GuiPreferences(NDialog):
self.dialogLine.setAlignment(QtAlignCenter)
self.dialogLine.setText(" ".join(CONFIG.dialogLine))
self.dialogLineButton = NIconToolButton(self, iSz, "add", "green")
self.dialogLineButton = NIconToolButton(self, iSz, "add", "add")
self.dialogLineButton.setMenu(self.mnLineSymbols)
self.mainForm.addRow(
@@ -800,7 +809,7 @@ class GuiPreferences(NDialog):
self.fmtSQuoteOpen.setFixedWidth(boxFixed)
self.fmtSQuoteOpen.setAlignment(QtAlignCenter)
self.fmtSQuoteOpen.setText(CONFIG.fmtSQuoteOpen)
self.btnSQuoteOpen = NIconToolButton(self, iSz, "quote")
self.btnSQuoteOpen = NIconToolButton(self, iSz, "quote", "tool")
self.btnSQuoteOpen.clicked.connect(self._changeSingleQuoteOpen)
self.mainForm.addRow(
self.tr("Single quote open style"), self.fmtSQuoteOpen,
@@ -814,7 +823,7 @@ class GuiPreferences(NDialog):
self.fmtSQuoteClose.setFixedWidth(boxFixed)
self.fmtSQuoteClose.setAlignment(QtAlignCenter)
self.fmtSQuoteClose.setText(CONFIG.fmtSQuoteClose)
self.btnSQuoteClose = NIconToolButton(self, iSz, "quote")
self.btnSQuoteClose = NIconToolButton(self, iSz, "quote", "tool")
self.btnSQuoteClose.clicked.connect(self._changeSingleQuoteClose)
self.mainForm.addRow(
self.tr("Single quote close style"), self.fmtSQuoteClose,
@@ -829,7 +838,7 @@ class GuiPreferences(NDialog):
self.fmtDQuoteOpen.setFixedWidth(boxFixed)
self.fmtDQuoteOpen.setAlignment(QtAlignCenter)
self.fmtDQuoteOpen.setText(CONFIG.fmtDQuoteOpen)
self.btnDQuoteOpen = NIconToolButton(self, iSz, "quote")
self.btnDQuoteOpen = NIconToolButton(self, iSz, "quote", "tool")
self.btnDQuoteOpen.clicked.connect(self._changeDoubleQuoteOpen)
self.mainForm.addRow(
self.tr("Double quote open style"), self.fmtDQuoteOpen,
@@ -843,7 +852,7 @@ class GuiPreferences(NDialog):
self.fmtDQuoteClose.setFixedWidth(boxFixed)
self.fmtDQuoteClose.setAlignment(QtAlignCenter)
self.fmtDQuoteClose.setText(CONFIG.fmtDQuoteClose)
self.btnDQuoteClose = NIconToolButton(self, iSz, "quote")
self.btnDQuoteClose = NIconToolButton(self, iSz, "quote", "tool")
self.btnDQuoteClose.clicked.connect(self._changeDoubleQuoteClose)
self.mainForm.addRow(
self.tr("Double quote close style"), self.fmtDQuoteClose,
+22 -16
View File
@@ -41,13 +41,13 @@ from novelwriter import CONFIG, SHARED
from novelwriter.common import formatFileFilter, qtAddAction, qtLambda, simplified
from novelwriter.constants import nwLabels, trConst
from novelwriter.core.status import CUSTOM_COL, NWStatus, StatusEntry
from novelwriter.enum import nwStatusShape
from novelwriter.enum import nwStandardButton, nwStatusShape
from novelwriter.extensions.configlayout import NColorLabel, NFixedPage, NScrollableForm
from novelwriter.extensions.modified import NComboBox, NDialog, NIconToolButton
from novelwriter.extensions.pagedsidebar import NPagedSideBar
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import (
QtDialogCancel, QtDialogSave, QtSizeMinimum, QtSizeMinimumExpanding,
QtRoleAccept, QtRoleReject, QtSizeMinimum, QtSizeMinimumExpanding,
QtUserRole
)
@@ -95,9 +95,15 @@ class GuiProjectSettings(NDialog):
self.sidebar.buttonClicked.connect(self._sidebarClicked)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogSave | QtDialogCancel, self)
self.buttonBox.accepted.connect(self._doSave)
self.buttonBox.rejected.connect(self.reject)
self.btnSave = SHARED.theme.getStandardButton(nwStandardButton.SAVE, self)
self.btnSave.clicked.connect(self._doSave)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnSave, QtRoleAccept)
self.btnBox.addButton(self.btnCancel, QtRoleReject)
# Content
SHARED.project.countStatus()
@@ -126,7 +132,7 @@ class GuiProjectSettings(NDialog):
self.outerBox = QVBoxLayout()
self.outerBox.addLayout(self.topBox)
self.outerBox.addLayout(self.mainBox)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.outerBox.setSpacing(8)
self.setLayout(self.outerBox)
@@ -251,7 +257,7 @@ class _SettingsPage(NScrollableForm):
# Project Language
projLang = data.language or CONFIG.guiLocale
self.projLang = NComboBox(self)
self.projLang = NComboBox(self, scrollable=True)
self.projLang.setMinimumWidth(200)
for tag, language in CONFIG.listLanguages(CONFIG.LANG_PROJ):
self.projLang.addItem(language, tag)
@@ -263,7 +269,7 @@ class _SettingsPage(NScrollableForm):
)
# Spell Check Language
self.spellLang = NComboBox(self)
self.spellLang = NComboBox(self, scrollable=True)
self.spellLang.setMinimumWidth(200)
self.spellLang.addItem(self.tr("Default"), "None")
if CONFIG.hasEnchant:
@@ -350,27 +356,27 @@ class _StatusPage(NFixedPage):
self._addItem(key, StatusEntry.duplicate(entry))
# List Controls
self.addButton = NIconToolButton(self, iSz, "add", "green")
self.addButton = NIconToolButton(self, iSz, "add", "add")
self.addButton.setToolTip(self.tr("Add Label"))
self.addButton.clicked.connect(self._onItemCreate)
self.delButton = NIconToolButton(self, iSz, "remove", "red")
self.delButton = NIconToolButton(self, iSz, "remove", "remove")
self.delButton.setToolTip(self.tr("Delete Label"))
self.delButton.clicked.connect(self._onItemDelete)
self.upButton = NIconToolButton(self, iSz, "chevron_up", "blue")
self.upButton = NIconToolButton(self, iSz, "chevron_up", "action")
self.upButton.setToolTip(self.tr("Move Up"))
self.upButton.clicked.connect(qtLambda(self._moveItem, -1))
self.downButton = NIconToolButton(self, iSz, "chevron_down", "blue")
self.downButton = NIconToolButton(self, iSz, "chevron_down", "action")
self.downButton.setToolTip(self.tr("Move Down"))
self.downButton.clicked.connect(qtLambda(self._moveItem, 1))
self.importButton = NIconToolButton(self, iSz, "import", "green")
self.importButton = NIconToolButton(self, iSz, "import", "apply")
self.importButton.setToolTip(self.tr("Import Labels"))
self.importButton.clicked.connect(self._importLabels)
self.exportButton = NIconToolButton(self, iSz, "export", "blue")
self.exportButton = NIconToolButton(self, iSz, "export", "action")
self.exportButton.setToolTip(self.tr("Export Labels"))
self.exportButton.clicked.connect(self._exportLabels)
@@ -723,10 +729,10 @@ class _ReplacePage(NFixedPage):
self.listBox.setSortingEnabled(True)
# List Controls
self.addButton = NIconToolButton(self, iSz, "add", "green")
self.addButton = NIconToolButton(self, iSz, "add", "add")
self.addButton.clicked.connect(self._onEntryCreated)
self.delButton = NIconToolButton(self, iSz, "remove", "red")
self.delButton = NIconToolButton(self, iSz, "remove", "remove")
self.delButton.clicked.connect(self._onEntryDeleted)
# Edit Form
+13 -5
View File
@@ -32,10 +32,12 @@ from PyQt6.QtWidgets import (
QListWidgetItem, QVBoxLayout, QWidget
)
from novelwriter import SHARED
from novelwriter.constants import nwQuotes, trConst
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.modified import NDialog
from novelwriter.types import (
QtAccepted, QtAlignCenter, QtAlignTop, QtDialogCancel, QtDialogOk,
QtAccepted, QtAlignCenter, QtAlignTop, QtRoleAccept, QtRoleReject,
QtUserRole
)
@@ -91,9 +93,15 @@ class GuiQuoteSelect(NDialog):
self.listBox.setMinimumHeight(150)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogOk | QtDialogCancel, self)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.btnOk = SHARED.theme.getStandardButton(nwStandardButton.OK, self)
self.btnOk.clicked.connect(self.accept)
self.btnCancel = SHARED.theme.getStandardButton(nwStandardButton.CANCEL, self)
self.btnCancel.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnOk, QtRoleAccept)
self.btnBox.addButton(self.btnCancel, QtRoleReject)
# Assemble
self.labelBox.addWidget(self.previewLabel, 0, QtAlignTop)
@@ -103,7 +111,7 @@ class GuiQuoteSelect(NDialog):
self.innerBox.addWidget(self.listBox)
self.outerBox.addLayout(self.innerBox)
self.outerBox.addWidget(self.buttonBox)
self.outerBox.addWidget(self.btnBox)
self.setLayout(self.outerBox)
+16 -9
View File
@@ -37,9 +37,10 @@ from PyQt6.QtWidgets import (
from novelwriter import CONFIG, SHARED
from novelwriter.common import formatFileFilter
from novelwriter.core.spellcheck import UserDictionary
from novelwriter.enum import nwStandardButton
from novelwriter.extensions.configlayout import NColorLabel
from novelwriter.extensions.modified import NDialog, NIconToolButton
from novelwriter.types import QtDialogClose, QtDialogSave
from novelwriter.types import QtRoleAccept, QtRoleDestruct
if TYPE_CHECKING:
from PyQt6.QtGui import QCloseEvent
@@ -74,11 +75,11 @@ class GuiWordList(NDialog):
scale=NColorLabel.HEADER_SCALE
)
self.importButton = NIconToolButton(self, iSz, "import", "green")
self.importButton = NIconToolButton(self, iSz, "import", "apply")
self.importButton.setToolTip(self.tr("Import words from text file"))
self.importButton.clicked.connect(self._importWords)
self.exportButton = NIconToolButton(self, iSz, "export", "blue")
self.exportButton = NIconToolButton(self, iSz, "export", "action")
self.exportButton.setToolTip(self.tr("Export words to text file"))
self.exportButton.clicked.connect(self._exportWords)
@@ -96,11 +97,11 @@ class GuiWordList(NDialog):
# Add/Remove Form
self.newEntry = QLineEdit(self)
self.addButton = NIconToolButton(self, iSz, "add", "green")
self.addButton = NIconToolButton(self, iSz, "add", "add")
self.addButton.setToolTip(self.tr("Add Word"))
self.addButton.clicked.connect(self._doAdd)
self.delButton = NIconToolButton(self, iSz, "remove", "red")
self.delButton = NIconToolButton(self, iSz, "remove", "remove")
self.delButton.setToolTip(self.tr("Remove Word"))
self.delButton.clicked.connect(self._doDelete)
@@ -110,9 +111,15 @@ class GuiWordList(NDialog):
self.editBox.addWidget(self.delButton, 0)
# Buttons
self.buttonBox = QDialogButtonBox(QtDialogSave | QtDialogClose, self)
self.buttonBox.accepted.connect(self._doSave)
self.buttonBox.rejected.connect(self.reject)
self.btnSave = SHARED.theme.getStandardButton(nwStandardButton.SAVE, self)
self.btnSave.clicked.connect(self._doSave)
self.btnClose = SHARED.theme.getStandardButton(nwStandardButton.CLOSE, self)
self.btnClose.clicked.connect(self.reject)
self.btnBox = QDialogButtonBox(self)
self.btnBox.addButton(self.btnSave, QtRoleAccept)
self.btnBox.addButton(self.btnClose, QtRoleDestruct)
# Assemble
self.outerBox = QVBoxLayout()
@@ -120,7 +127,7 @@ class GuiWordList(NDialog):
self.outerBox.addWidget(self.listBox, 1)
self.outerBox.addLayout(self.editBox, 0)
self.outerBox.addSpacing(12)
self.outerBox.addWidget(self.buttonBox, 0)
self.outerBox.addWidget(self.btnBox, 0)
self.outerBox.setSpacing(4)
self.setLayout(self.outerBox)
+22
View File
@@ -247,3 +247,25 @@ class nwStatusShape(Enum):
BLOCK_2 = 17
BLOCK_3 = 18
BLOCK_4 = 19
class nwStandardButton(Enum):
"""Enum: Standard Dialog Buttons."""
OK = 0
CANCEL = 1
YES = 2
NO = 3
OPEN = 4
CLOSE = 5
SAVE = 6
BROWSE = 7
LIST = 8
NEW = 9
CREATE = 10
RESET = 11
INSERT = 12
APPLY = 13
BUILD = 14
PRINT = 15
PREVIEW = 16
+1 -1
View File
@@ -171,7 +171,7 @@ def exceptionHandler(exType: type, exValue: BaseException, exTrace: TracebackTyp
from PyQt6.QtWidgets import QApplication
logger.critical("%s: %s", exType.__name__, str(exValue))
logger.critical("%s: %s", exType.__name__, exValue)
print_tb(exTrace)
try:
+2 -6
View File
@@ -27,7 +27,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
""" # noqa
from __future__ import annotations
from PyQt6.QtGui import QColor, QFont, QPalette, QPixmap
from PyQt6.QtGui import QColor, QFont, QPalette
from PyQt6.QtWidgets import (
QAbstractButton, QFrame, QHBoxLayout, QLabel, QLayout, QScrollArea,
QVBoxLayout, QWidget
@@ -170,7 +170,7 @@ class NScrollableForm(QScrollArea):
def addRow(
self,
label: str | None,
widget: QWidget | list[QWidget | QPixmap | int],
widget: QWidget | list[QWidget | int],
helpText: str = "",
unit: str | None = None,
button: QWidget | None = None,
@@ -187,10 +187,6 @@ class NScrollableForm(QScrollArea):
for item in widget:
if isinstance(item, QWidget):
wBox.addWidget(item)
elif isinstance(item, QPixmap):
icon = QLabel(self)
icon.setPixmap(item)
wBox.addWidget(icon)
elif isinstance(item, int):
wBox.addSpacing(item)
qWidget = QWidget(self)
+44 -16
View File
@@ -31,8 +31,8 @@ from typing import TYPE_CHECKING
from PyQt6.QtCore import QModelIndex, QSize, Qt, pyqtSignal, pyqtSlot
from PyQt6.QtWidgets import (
QApplication, QComboBox, QDialog, QDoubleSpinBox, QLabel, QSpinBox,
QToolButton, QTreeView, QWidget
QApplication, QComboBox, QDialog, QDoubleSpinBox, QLabel, QPushButton,
QSpinBox, QToolButton, QTreeView, QWidget
)
from novelwriter import CONFIG, SHARED
@@ -125,14 +125,16 @@ class NComboBox(QComboBox):
window of many widgets.
"""
def __init__(self, parent: QWidget | None = None, maxItems: int = 15) -> None:
def __init__(
self, parent: QWidget | None = None, maxItems: int = 15, scrollable: bool = False
) -> None:
super().__init__(parent=parent)
self.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
self.setMaxVisibleItems(maxItems)
# The style sheet disables Fusion style pop-up mode on some platforms
# and allows for scrolling of long lists of items
self.setStyleSheet("QComboBox {combobox-popup: 0;}")
if scrollable:
# The style sheet disables Fusion style pop-up mode on some
# platforms and allows for scrolling of long lists of items
self.setStyleSheet("QComboBox {combobox-popup: 0;}")
def wheelEvent(self, event: QWheelEvent) -> None:
"""Only capture the mouse wheel if the widget has focus."""
@@ -199,6 +201,29 @@ class NDoubleSpinBox(QDoubleSpinBox):
event.ignore()
class NPushButton(QPushButton):
"""Custom: Modified QPushButton.
A quicker way to create a push button using the app theme.
"""
def __init__(
self, parent: QWidget, text: str, iconSize: QSize,
icon: str | None = None, color: str | None = None
) -> None:
super().__init__(parent=parent)
self._icon = icon
self._color = color
self.setText(text)
self.setIconSize(iconSize)
self.updateIcon()
def updateIcon(self) -> None:
"""Update the theme icon."""
if self._icon and self._color:
self.setIcon(SHARED.theme.getIcon(self._icon, self._color))
class NIconToolButton(QToolButton):
"""Custom: Modified QToolButton.
@@ -213,12 +238,12 @@ class NIconToolButton(QToolButton):
self.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
self.setIconSize(iconSize)
self.setPopupMode(QToolButton.ToolButtonPopupMode.InstantPopup)
if icon:
if icon and color:
self.setThemeIcon(icon, color)
def setThemeIcon(self, iconKey: str, color: str | None = None) -> None:
def setThemeIcon(self, icon: str, color: str) -> None:
"""Set an icon from the current theme."""
self.setIcon(SHARED.theme.getIcon(iconKey, color))
self.setIcon(SHARED.theme.getIcon(icon, color))
class NIconToggleButton(QToolButton):
@@ -227,20 +252,23 @@ class NIconToggleButton(QToolButton):
A quicker way to create a toggle button using the app theme.
"""
def __init__(self, parent: QWidget, iconSize: QSize, icon: str | None = None) -> None:
def __init__(
self, parent: QWidget, iconSize: QSize,
icon: str | None = None, color: str | None = None
) -> None:
super().__init__(parent=parent)
self.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
self.setIconSize(iconSize)
self.setPopupMode(QToolButton.ToolButtonPopupMode.InstantPopup)
self.setCheckable(True)
self.setStyleSheet("border: none; background: transparent;")
if icon:
self.setThemeIcon(icon)
if icon and color:
self.setThemeIcon(icon, color)
def setThemeIcon(self, iconKey: str) -> None:
def setThemeIcon(self, icon: str, color: str) -> None:
"""Set an icon from the current theme."""
iconSize = self.iconSize()
self.setIcon(SHARED.theme.getToggleIcon(iconKey, (iconSize.width(), iconSize.height())))
size = self.iconSize()
self.setIcon(SHARED.theme.getToggleIcon(icon, (size.width(), size.height()), color))
class NClickableLabel(QLabel):
+1 -1
View File
@@ -110,7 +110,7 @@ class NovelSelector(QComboBox):
self._firstHandle = None
self.clear()
icon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[nwItemClass.NOVEL], "blue")
icon = SHARED.theme.getIcon(nwLabels.CLASS_ICON[nwItemClass.NOVEL], "root")
for tHandle, nwItem in SHARED.project.tree.iterRoots(nwItemClass.NOVEL):
if self._listFormat:
name = self._listFormat.format(nwItem.itemName)
+7
View File
@@ -72,6 +72,9 @@ class NPagedSideBar(QToolBar):
def setLabelColor(self, color: QColor) -> None:
"""Set the text color for the labels."""
self._labelCol = color
for widget in self.children():
if isinstance(widget, _NPagedToolLabel):
widget.setTextColor(color)
def addLabel(self, text: str) -> None:
"""Add a new label to the toolbar."""
@@ -188,6 +191,10 @@ class _NPagedToolLabel(QLabel):
self._textCol = textColor or self.palette().text().color()
def setTextColor(self, textColor: QColor | None = None) -> None:
"""Set a new text colour."""
self._textCol = textColor or self.palette().text().color()
def paintEvent(self, event: QPaintEvent) -> None:
"""Overload the paint event to draw a simple, left aligned text
label that matches the button style.
+7 -5
View File
@@ -34,7 +34,7 @@ from novelwriter.types import QtNoPen, QtPaintAntiAlias, QtSizeFixed
class NSwitch(QAbstractButton):
"""Custom: Toggle Switch."""
__slots__ = ("_cOff", "_cOn", "_offset", "_rH", "_rR", "_xH", "_xR", "_xW")
__slots__ = ("_offset", "_rH", "_rR", "_xH", "_xR", "_xW")
def __init__(self, parent: QWidget, height: int = 0) -> None:
super().__init__(parent=parent)
@@ -45,13 +45,11 @@ class NSwitch(QAbstractButton):
self._rH = self._xH - 4
self._rR = self._xR - 2
self._cOn = SHARED.theme.accentCol
self._cOff = self.palette().alternateBase()
self.setCheckable(True)
self.setSizePolicy(QtSizeFixed, QtSizeFixed)
self.setFixedWidth(self._xW)
self.setFixedHeight(self._xH)
self.setUpdatesEnabled(True)
self._offset = self._xR
self.clicked.connect(self._onClick)
@@ -96,7 +94,7 @@ class NSwitch(QAbstractButton):
painter.setOpacity(1.0 if self.isEnabled() else 0.5)
painter.setPen(palette.highlight().color() if self.hasFocus() else palette.mid().color())
painter.setBrush(self._cOn if self.isChecked() else self._cOff)
painter.setBrush(SHARED.theme.accentCol if self.isChecked() else palette.alternateBase())
painter.drawRoundedRect(0, 0, self._xW, self._xH, self._xR, self._xR)
painter.setPen(QtNoPen)
@@ -110,6 +108,10 @@ class NSwitch(QAbstractButton):
self.setCursor(Qt.CursorShape.PointingHandCursor)
super().enterEvent(event)
##
# Internal Functions
##
@pyqtSlot(bool)
def _onClick(self, checked: bool) -> None:
"""Animate the toggle action."""
+101 -69
View File
@@ -39,13 +39,14 @@ from enum import Enum, IntFlag
from time import time
from PyQt6.QtCore import (
QObject, QPoint, QRegularExpression, QRunnable, Qt, QTimer, pyqtSignal,
pyqtSlot
QObject, QPoint, QRect, QRegularExpression, QRunnable, Qt, QTimer,
QVariant, pyqtSignal, pyqtSlot
)
from PyQt6.QtGui import (
QAction, QCursor, QDragEnterEvent, QDragMoveEvent, QDropEvent, QKeyEvent,
QKeySequence, QMouseEvent, QPalette, QPixmap, QResizeEvent, QShortcut,
QTextBlock, QTextCursor, QTextDocument, QTextFormat, QTextOption
QAction, QCursor, QDragEnterEvent, QDragMoveEvent, QDropEvent,
QInputMethodEvent, QKeyEvent, QKeySequence, QMouseEvent, QPalette, QPixmap,
QResizeEvent, QShortcut, QTextBlock, QTextCursor, QTextDocument,
QTextFormat, QTextOption
)
from PyQt6.QtWidgets import (
QApplication, QFrame, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMenu,
@@ -74,9 +75,10 @@ from novelwriter.text.counting import standardCounter
from novelwriter.tools.lipsum import GuiLipsum
from novelwriter.types import (
QtAlignCenterTop, QtAlignJustify, QtAlignLeft, QtAlignLeftTop,
QtAlignRight, QtKeepAnchor, QtModCtrl, QtModNone, QtModShift, QtMouseLeft,
QtMoveAnchor, QtMoveLeft, QtMoveRight, QtScrollAlwaysOff, QtScrollAsNeeded,
QtTransparent
QtAlignRight, QtImCursorRectangle, QtKeepAnchor, QtModCtrl, QtModNone,
QtModShift, QtMouseLeft, QtMoveAnchor, QtMoveLeft, QtMoveRight,
QtScrollAlwaysOff, QtScrollAsNeeded, QtSelectBlock, QtSelectDocument,
QtSelectWord, QtTransparent
)
logger = logging.getLogger(__name__)
@@ -154,7 +156,7 @@ class GuiDocEditor(QPlainTextEdit):
# Completer
self._completer = CommandCompleter(self)
self._completer.complete.connect(self._insertCompletion)
self._completer.insertText.connect(self._insertCompletion)
# Create Custom Document
self._qDocument = GuiTextDocument(self)
@@ -290,6 +292,8 @@ class GuiDocEditor(QPlainTextEdit):
def updateTheme(self) -> None:
"""Update theme elements."""
logger.debug("Theme Update: GuiDocEditor")
self.docSearch.updateTheme()
self.docHeader.updateTheme()
self.docFooter.updateTheme()
@@ -671,7 +675,7 @@ class GuiDocEditor(QPlainTextEdit):
self.spellCheckStateChanged.emit(state)
self.spellCheckDocument()
logger.debug("Spell check is set to '%s'", str(state))
logger.debug("Spell check is set to '%s'", state)
def spellCheckDocument(self) -> None:
"""Rerun the highlighter to update spell checking status of the
@@ -730,9 +734,9 @@ class GuiDocEditor(QPlainTextEdit):
elif action == nwDocAction.D_QUOTE:
self._wrapSelection(CONFIG.fmtDQuoteOpen, CONFIG.fmtDQuoteClose)
elif action == nwDocAction.SEL_ALL:
self._makeSelection(QTextCursor.SelectionType.Document)
self._makeSelection(QtSelectDocument)
elif action == nwDocAction.SEL_PARA:
self._makeSelection(QTextCursor.SelectionType.BlockUnderCursor)
self._makeSelection(QtSelectBlock)
elif action == nwDocAction.BLOCK_H1:
self._formatBlock(nwDocAction.BLOCK_H1)
elif action == nwDocAction.BLOCK_H2:
@@ -784,7 +788,7 @@ class GuiDocEditor(QPlainTextEdit):
elif action == nwDocAction.SC_SUB:
self._wrapSelection(nwShortcode.SUB_O, nwShortcode.SUB_C)
else:
logger.debug("Unknown or unsupported document action '%s'", str(action))
logger.debug("Unknown or unsupported document action '%s'", action)
self._allowAutoReplace(True)
return False
@@ -905,7 +909,7 @@ class GuiDocEditor(QPlainTextEdit):
return True
##
# Document Events and Maintenance
# Events and Overloads
##
def keyPressEvent(self, event: QKeyEvent) -> None:
@@ -1003,6 +1007,26 @@ class GuiDocEditor(QPlainTextEdit):
self.updateDocMargins()
super().resizeEvent(event)
def inputMethodEvent(self, event: QInputMethodEvent) -> None:
"""Handle text being input from CJK input methods."""
super().inputMethodEvent(event)
if event.commitString():
# See issues #2267 and #2517
self.ensureCursorVisible()
self._completerToCursor()
def inputMethodQuery(self, query: Qt.InputMethodQuery) -> QRect | QVariant:
"""Adjust completion windows for CJK input methods to consider
the viewport margins.
"""
if query == QtImCursorRectangle:
# See issues #2267 and #2517
vM = self.viewportMargins()
rect = self.cursorRect()
rect.translate(vM.left(), vM.top())
return rect
return super().inputMethodQuery(query)
##
# Public Slots
##
@@ -1062,24 +1086,20 @@ class GuiDocEditor(QPlainTextEdit):
if (block := self._qDocument.findBlock(pos)).isValid():
text = block.text()
if text and text[0] in "@%" and added + removed == 1:
# Only run on single character changes, or it will trigger
# at unwanted times when other changes are made to the document
cursor = self.textCursor()
bPos = cursor.positionInBlock()
if bPos > 0 and (viewport := self.viewport()):
if bPos > 0:
if text[0] == "@":
show = self._completer.updateMetaText(text, bPos)
else:
show = self._completer.updateCommentText(text, bPos)
if show:
point = self.cursorRect().bottomRight()
self._completer.move(viewport.mapToGlobal(point))
self._completer.show()
else:
self._completer.close()
else:
self._completer.close()
self._completerToCursor()
if self._doReplace and added == 1:
cursor = self.textCursor()
@@ -1104,7 +1124,7 @@ class GuiDocEditor(QPlainTextEdit):
cursor.setPosition(check, QtMoveAnchor)
cursor.setPosition(check + length, QtKeepAnchor)
cursor.insertText(text)
self._completer.hide()
self._completer.close()
@pyqtSlot()
def _openContextFromCursor(self) -> None:
@@ -1157,13 +1177,9 @@ class GuiDocEditor(QPlainTextEdit):
action = qtAddAction(ctxMenu, self.tr("Select All"))
action.triggered.connect(qtLambda(self.docAction, nwDocAction.SEL_ALL))
action = qtAddAction(ctxMenu, self.tr("Select Word"))
action.triggered.connect(qtLambda(
self._makePosSelection, QTextCursor.SelectionType.WordUnderCursor, pos,
))
action.triggered.connect(qtLambda(self._makePosSelection, QtSelectWord, pos))
action = qtAddAction(ctxMenu, self.tr("Select Paragraph"))
action.triggered.connect(qtLambda(
self._makePosSelection, QTextCursor.SelectionType.BlockUnderCursor, pos
))
action.triggered.connect(qtLambda(self._makePosSelection, QtSelectBlock, pos))
# Spell Checking
if SHARED.project.data.spellCheck:
@@ -1733,7 +1749,7 @@ class GuiDocEditor(QPlainTextEdit):
elif action == nwDocAction.BLOCK_TXT:
text = temp
else:
logger.error("Unknown or unsupported block format requested: '%s'", str(action))
logger.error("Unknown or unsupported block format requested: '%s'", action)
return nwDocAction.NO_ACTION, "", 0
return action, text, offset
@@ -1743,7 +1759,7 @@ class GuiDocEditor(QPlainTextEdit):
cursor = self.textCursor()
block = cursor.block()
if not block.isValid():
logger.debug("Invalid block selected for action '%s'", str(action))
logger.debug("Invalid block selected for action '%s'", action)
return False
action, text, offset = self._processBlockFormat(action, block.text())
@@ -1753,7 +1769,7 @@ class GuiDocEditor(QPlainTextEdit):
pos = cursor.position()
cursor.beginEditBlock()
self._makeSelection(QTextCursor.SelectionType.BlockUnderCursor, cursor)
self._makeSelection(QtSelectBlock, cursor)
cursor.insertText(text)
cursor.endEditBlock()
@@ -1781,7 +1797,7 @@ class GuiDocEditor(QPlainTextEdit):
if pAction != nwDocAction.NO_ACTION and blockText.strip():
action = pAction # First block decides further actions
cursor.setPosition(block.position())
self._makeSelection(QTextCursor.SelectionType.BlockUnderCursor, cursor)
self._makeSelection(QtSelectBlock, cursor)
cursor.insertText(text)
toggle = False
@@ -1801,7 +1817,7 @@ class GuiDocEditor(QPlainTextEdit):
"""Strip line breaks within paragraphs in the selected text."""
cursor = self.textCursor()
if not cursor.hasSelection():
cursor.select(QTextCursor.SelectionType.Document)
cursor.select(QtSelectDocument)
rS = 0
rE = self._qDocument.characterCount()
@@ -1866,6 +1882,12 @@ class GuiDocEditor(QPlainTextEdit):
# Internal Functions
##
def _completerToCursor(self) -> None:
"""Make sure the completer menu is positioned by the cursor."""
if self._completer.isVisible() and (viewport := self.viewport()):
point = self.cursorRect().bottomLeft()
self._completer.move(viewport.mapToGlobal(point))
def _correctWord(self, cursor: QTextCursor, word: str) -> None:
"""Slot for the spell check context menu triggering the
replacement of a word with the word from the dictionary.
@@ -2012,10 +2034,10 @@ class GuiDocEditor(QPlainTextEdit):
cursor.clearSelection()
cursor.select(mode)
if mode == QTextCursor.SelectionType.WordUnderCursor:
if mode == QtSelectWord:
cursor = self._autoSelect()
elif mode == QTextCursor.SelectionType.BlockUnderCursor:
elif mode == QtSelectBlock:
# This selection mode also selects the preceding paragraph
# separator, which we want to avoid.
posS = cursor.selectionStart()
@@ -2050,10 +2072,13 @@ class CommandCompleter(QMenu):
called on every keystroke on a line starting with @ or %.
"""
complete = pyqtSignal(int, int, str)
__slots__ = ("_parent",)
insertText = pyqtSignal(int, int, str)
def __init__(self, parent: QWidget) -> None:
super().__init__(parent=parent)
self._parent = parent
def updateMetaText(self, text: str, pos: int) -> bool:
"""Update the menu options based on the line of text."""
@@ -2139,14 +2164,14 @@ class CommandCompleter(QMenu):
def keyPressEvent(self, event: QKeyEvent) -> None:
"""Capture keypresses and forward most of them to the editor."""
parent = self.parent()
if event.key() in (
Qt.Key.Key_Up, Qt.Key.Key_Down, Qt.Key.Key_Return,
Qt.Key.Key_Enter, Qt.Key.Key_Escape
):
super().keyPressEvent(event)
elif isinstance(parent, GuiDocEditor):
parent.keyPressEvent(event)
else:
self.close() # Close to release the event lock before forwarding the key press (#2510)
self._parent.keyPressEvent(event)
##
# Internal Functions
@@ -2154,7 +2179,7 @@ class CommandCompleter(QMenu):
def _emitComplete(self, pos: int, length: int, value: str) -> None:
"""Emit the signal to indicate a selection has been made."""
self.complete.emit(pos, length, value)
self.insertText.emit(pos, length, value)
class BackgroundWordCounter(QRunnable):
@@ -2455,25 +2480,26 @@ class GuiDocToolBar(QWidget):
def updateTheme(self) -> None:
"""Initialise GUI elements that depend on specific settings."""
syntax = SHARED.theme.syntaxTheme
logger.debug("Theme Update: GuiDocToolBar")
syntax = SHARED.theme.syntaxTheme
palette = self.palette()
palette.setColor(QPalette.ColorRole.Window, syntax.back)
palette.setColor(QPalette.ColorRole.WindowText, syntax.text)
palette.setColor(QPalette.ColorRole.Text, syntax.text)
self.setPalette(palette)
self.tbBoldMD.setThemeIcon("fmt_bold", "orange")
self.tbItalicMD.setThemeIcon("fmt_italic", "orange")
self.tbStrikeMD.setThemeIcon("fmt_strike", "orange")
self.tbMarkMD.setThemeIcon("fmt_mark", "orange")
self.tbBold.setThemeIcon("fmt_bold")
self.tbItalic.setThemeIcon("fmt_italic")
self.tbStrike.setThemeIcon("fmt_strike")
self.tbUnderline.setThemeIcon("fmt_underline")
self.tbMark.setThemeIcon("fmt_mark")
self.tbSuperscript.setThemeIcon("fmt_superscript")
self.tbSubscript.setThemeIcon("fmt_subscript")
self.tbBoldMD.setThemeIcon("fmt_bold", "mdformat")
self.tbItalicMD.setThemeIcon("fmt_italic", "mdformat")
self.tbStrikeMD.setThemeIcon("fmt_strike", "mdformat")
self.tbMarkMD.setThemeIcon("fmt_mark", "mdformat")
self.tbBold.setThemeIcon("fmt_bold", "scformat")
self.tbItalic.setThemeIcon("fmt_italic", "scformat")
self.tbStrike.setThemeIcon("fmt_strike", "scformat")
self.tbUnderline.setThemeIcon("fmt_underline", "scformat")
self.tbMark.setThemeIcon("fmt_mark", "scformat")
self.tbSuperscript.setThemeIcon("fmt_superscript", "scformat")
self.tbSubscript.setThemeIcon("fmt_subscript", "scformat")
class GuiDocEditSearch(QFrame):
@@ -2567,7 +2593,7 @@ class GuiDocEditSearch(QFrame):
# Buttons
# =======
self.showReplace = NIconToggleButton(self, iSz, "unfold")
self.showReplace = NIconToggleButton(self, iSz)
self.showReplace.toggled.connect(self._doToggleReplace)
self.searchButton = NIconToolButton(self, iSz)
@@ -2693,22 +2719,24 @@ class GuiDocEditSearch(QFrame):
def updateTheme(self) -> None:
"""Update theme elements."""
palette = QApplication.palette()
logger.debug("Theme Update: GuiDocEditSearch")
palette = QApplication.palette()
self.setPalette(palette)
self.searchBox.setPalette(palette)
self.replaceBox.setPalette(palette)
# Set icons
self.toggleCase.setIcon(SHARED.theme.getIcon("search_case"))
self.toggleWord.setIcon(SHARED.theme.getIcon("search_word"))
self.toggleRegEx.setIcon(SHARED.theme.getIcon("search_regex"))
self.toggleLoop.setIcon(SHARED.theme.getIcon("search_loop"))
self.toggleProject.setIcon(SHARED.theme.getIcon("search_project"))
self.toggleMatchCap.setIcon(SHARED.theme.getIcon("search_preserve"))
self.cancelSearch.setIcon(SHARED.theme.getIcon("search_cancel"))
self.searchButton.setThemeIcon("search", "green")
self.replaceButton.setThemeIcon("search_replace", "green")
self.toggleCase.setIcon(SHARED.theme.getIcon("search_case", "tool"))
self.toggleWord.setIcon(SHARED.theme.getIcon("search_word", "tool"))
self.toggleRegEx.setIcon(SHARED.theme.getIcon("search_regex", "tool"))
self.toggleLoop.setIcon(SHARED.theme.getIcon("search_loop", "tool"))
self.toggleProject.setIcon(SHARED.theme.getIcon("search_project", "tool"))
self.toggleMatchCap.setIcon(SHARED.theme.getIcon("search_preserve", "tool"))
self.cancelSearch.setIcon(SHARED.theme.getIcon("search_cancel", "tool"))
self.searchButton.setThemeIcon("search", "action")
self.replaceButton.setThemeIcon("search_replace", "apply")
self.showReplace.setThemeIcon("unfold", "default")
# Set stylesheets
self.searchOpt.setStyleSheet("QToolBar {padding: 0;}")
@@ -2937,11 +2965,13 @@ class GuiDocEditHeader(QWidget):
def updateTheme(self) -> None:
"""Update theme elements."""
self.tbButton.setThemeIcon("fmt_toolbar", "blue")
self.outlineButton.setThemeIcon("list", "blue")
self.searchButton.setThemeIcon("search", "blue")
self.minmaxButton.setThemeIcon("maximise", "blue")
self.closeButton.setThemeIcon("close", "red")
logger.debug("Theme Update: GuiDocEditHeader")
self.tbButton.setThemeIcon("fmt_toolbar", "action")
self.outlineButton.setThemeIcon("list", "action")
self.searchButton.setThemeIcon("search", "action")
self.minmaxButton.setThemeIcon("maximise", "action")
self.closeButton.setThemeIcon("close", "reject")
buttonStyle = SHARED.theme.getStyleSheet(STYLES_MIN_TOOLBUTTON)
self.tbButton.setStyleSheet(buttonStyle)
@@ -3007,7 +3037,7 @@ class GuiDocEditHeader(QWidget):
@pyqtSlot(bool)
def _focusModeChanged(self, focusMode: bool) -> None:
"""Update minimise/maximise icon of the Focus Mode button."""
self.minmaxButton.setThemeIcon("minimise" if focusMode else "maximise", "blue")
self.minmaxButton.setThemeIcon("minimise" if focusMode else "maximise", "action")
##
# Events
@@ -3126,6 +3156,8 @@ class GuiDocEditFooter(QWidget):
def updateTheme(self) -> None:
"""Update theme elements."""
logger.debug("Theme Update: GuiDocEditFooter")
iPx = round(0.9*SHARED.theme.baseIconHeight)
self.linesIcon.setPixmap(SHARED.theme.getPixmap("lines", (iPx, iPx)))
self.wordsIcon.setPixmap(SHARED.theme.getPixmap("stats", (iPx, iPx)))
+1 -3
View File
@@ -94,8 +94,6 @@ class GuiDocHighlighter(QSyntaxHighlighter):
syntax = SHARED.theme.syntaxTheme
colEmph = syntax.emph if CONFIG.highlightEmph else None
colBreak = QColor(syntax.emph)
colBreak.setAlpha(64)
# Create Character Formats
self._addCharFormat("text", syntax.text)
@@ -112,7 +110,7 @@ class GuiDocHighlighter(QSyntaxHighlighter):
self._addCharFormat("strike", syntax.hidden, "s")
self._addCharFormat("mark", syntax.mark, "bg")
self._addCharFormat("mspaces", syntax.error, "err")
self._addCharFormat("nobreak", colBreak, "bg")
self._addCharFormat("nobreak", syntax.space, "bg")
self._addCharFormat("altdialog", syntax.dialA)
self._addCharFormat("dialog", syntax.dialN)
self._addCharFormat("replace", syntax.repTag)

Some files were not shown because too many files have changed in this diff Show More