From 8a541c03398019b6c627e54ff56de9c17ec792d8 Mon Sep 17 00:00:00 2001 From: svkalinin Date: Fri, 26 Aug 2022 12:29:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?= =?UTF-8?q?=D0=B0=20python.=20=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=D0=BA=D0=BE=D0=BD=D0=BE=D0=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/editor.tcl | 5 +- lib/highlight.tcl | 13 ++ lib/image_library.tcl | 328 ++++++++++++++++++++++++++++++++++++++---- lib/lexers.tcl | 5 + lib/tree.tcl | 15 +- projman.tcl | 2 +- 6 files changed, 332 insertions(+), 36 deletions(-) diff --git a/lib/editor.tcl b/lib/editor.tcl index 84a60a0..b9fd8a7 100644 --- a/lib/editor.tcl +++ b/lib/editor.tcl @@ -543,8 +543,9 @@ namespace eval Editor { set line [$txt get $lineNumber.0 $lineNumber.end] if {[dict exists $lexers $fileType procRegexpCommand] != 0 } { if {[eval [dict get $lexers $fileType procRegexpCommand]]} { - puts [Tree::InsertItem $tree $treeItemName $procName "procedure" "$procName ($params)"] - lappend l [list $procName $params] + set procName_ [string trim $procName] + puts [Tree::InsertItem $tree $treeItemName $procName_ "procedure" "$procName_ ($params)"] + lappend l [list $procName_ $params] } } } diff --git a/lib/highlight.tcl b/lib/highlight.tcl index abb1a4e..52eec23 100644 --- a/lib/highlight.tcl +++ b/lib/highlight.tcl @@ -55,4 +55,17 @@ namespace eval Highlight {} { ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*} ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`} } + + proc PY {txt} { + ctext::addHighlightClassForRegexp $txt flags orange {-+[a-zA-Z\-_]+} + ctext::addHighlightClass $txt stackControl #19a2a6 {if else for while case switch def import from return make break defer continue package len print with open} + ctext::addHighlightClass $txt types #7187d5 {string int int16 int32 int64 float bool byte} + ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\&" + ctext::addHighlightClassWithOnlyCharStart $txt vars #4471ca "\*" + # ctext::addHighlightClass $txt variable_funcs gold {var type struct} + ctext::addHighlightClassForSpecialChars $txt brackets green {[]{}()} + ctext::addHighlightClassForRegexp $txt paths lightblue {\.[a-zA-Z0-9\_\-]+} + ctext::addHighlightClassForRegexp $txt comments #666666 {(#|//)[^\n\r]*} + ctext::addHighlightClassForSpecialChars $txt qoute #b84a0c {"'`} + } } diff --git a/lib/image_library.tcl b/lib/image_library.tcl index 7badca4..ff04624 100644 --- a/lib/image_library.tcl +++ b/lib/image_library.tcl @@ -317,21 +317,7 @@ image create photo pixel -data { cEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfmCAENMR0phoajAAAAGXRFWHRDb21tZW50AENyZWF0 ZWQgd2l0aCBHSU1QV4EOFwAAAAtJREFUCNdjYAACAAAFAAHiJgWbAAAAAElFTkSuQmCC } -image create photo md_10x20 -data { - iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9 - kT1Iw1AUhU9bpUVaHOwg4pChOlkpKuKoVShChVArtOpg8tI/aNKQpLg4Cq4FB38Wqw4uzro6uAqC - 4A+Io5OToouUeF9SaBHjhcf7OO+ew3v3Af5mlalmTwJQNcvIpJJCLr8qBF8Rgg8RJDAuMVOfE8U0 - POvrnnqp7uI8y7vvz4ooBZMBPoF4lumGRbxBPL1p6Zz3iaOsLCnE58RjBl2Q+JHrsstvnEsO+3lm - 1Mhm5omjxEKpi+UuZmVDJZ4ijimqRvn+nMsK5y3OarXO2vfkLwwXtJVlrtMaRgqLWIIIATLqqKAK - C3HaNVJMZOg86eEfcvwiuWRyVcDIsYAaVEiOH/wPfs/WLE5OuEnhJND7YtsfI0BwF2g1bPv72LZb - J0DgGbjSOv5aE5j5JL3R0WJHQP82cHHd0eQ94HIHGHzSJUNypAAtf7EIvJ/RN+WBgVugb82dW/sc - pw9AlmaVvgEODoHREmWve7w71D23f3va8/sBkKtys2tcKkcAAAAGYktHRAC8ALwAvCLnprkAAAAJ - cEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfmCAMHKjhsKtQjAAAAGXRFWHRDb21tZW50AENyZWF0 - ZWQgd2l0aCBHSU1QV4EOFwAAAKdJREFUKM+1kbEOwjAMRF8iZUkYy1fCCmwp5BvKzBeytWTIEJZW - ioyLykCkSJHPd/bl4B/HReovuIvU5cpeK0j+i9hBw4FTW7eCPLWg2KADjCIY2rpVNpoAr9gxLjIq - 9nsXGVXBkrg1opTEUeA77Y9L4rJYtwq4b5q6jbl64AFkq4C5JML8visDjeYKyEC1KxNfwAA8VywG - ITbMnI/4r3NqWzAPnGX6b2yqOG5VFYg/AAAAAElFTkSuQmCC -} + image create photo html_10x20 -data { iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9 kT1Iw1AUhU9bpUVaHOwg4pChOlkpKuKoVShChVArtOpg8tI/aNKQpLg4Cq4FB38Wqw4uzro6uAqC @@ -362,22 +348,252 @@ image create photo htm_10x20 -data { AvqUUBuBXYAHzPvCzvlsBMYQ1P6CKTvnrZfsC2qU4V7DFruspvE1bHLx7mn9ZHHKHcj1n4vY6apy 4Gpj6onuSPUur00QGrL7t3eETeMf5+9jARg1VwGdzj5HHW6sd2btFQAAAABJRU5ErkJggg== } -image create photo json_10x20 -data { - iVBORw0KGgoAAAANSUhEUgAAAA0AAAAKCAYAAABv7tTEAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9 - kT1Iw1AUhU9bpUVaHOwg4pChOlkpKuKoVShChVArtOpg8tI/aNKQpLg4Cq4FB38Wqw4uzro6uAqC - 4A+Io5OToouUeF9SaBHjhcf7OO+ew3v3Af5mlalmTwJQNcvIpJJCLr8qBF8Rgg8RJDAuMVOfE8U0 - POvrnnqp7uI8y7vvz4ooBZMBPoF4lumGRbxBPL1p6Zz3iaOsLCnE58RjBl2Q+JHrsstvnEsO+3lm - 1Mhm5omjxEKpi+UuZmVDJZ4ijimqRvn+nMsK5y3OarXO2vfkLwwXtJVlrtMaRgqLWIIIATLqqKAK - C3HaNVJMZOg86eEfcvwiuWRyVcDIsYAaVEiOH/wPfs/WLE5OuEnhJND7YtsfI0BwF2g1bPv72LZb - J0DgGbjSOv5aE5j5JL3R0WJHQP82cHHd0eQ94HIHGHzSJUNypAAtf7EIvJ/RN+WBgVugb82dW/sc - pw9AlmaVvgEODoHREmWve7w71D23f3va8/sBkKtys2tcKkcAAAAGYktHRAC8ALwAvCLnprkAAAAJ - cEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfmCAMIBRhOBIu7AAAAGXRFWHRDb21tZW50AENyZWF0 - ZWQgd2l0aCBHSU1QV4EOFwAAAI5JREFUKM91kTESgzAMBDfuoA5fofBz0poWKPlE0sJvXPgvaUMJ - RWRGoxFXeXQ+aTUCUckcJXOg5NU8MwEj0DreVQsm/wQ2YHd6DzVoQw8JeEit+ITK3EcmD72P/48l - s+jOqGAHfPUk5c1Selu8F9DgqwFWYA933I6ufcMdt0GbbFpPGSo38JN3klN86r4nGhw3nFGCTP4A - AAAASUVORK5CYII= +image create photo docker_16x12 -data { + iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9 + kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC + 4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC + 5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM + qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF + FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03 + T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP + 0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw + SFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+YIGgUkLbHh0T0AAAAZdEVYdENvbW1lbnQAQ3JlYXRl + ZCB3aXRoIEdJTVBXgQ4XAAABvElEQVQoz32ST2gTURDGf/Py7KbbdTWlFEFEjxYEPUjwJF4l0FsR + RD22tUdFBK+KiAgelDYoePSgp0IE8SBeSqBQ8A9UEBGKFjRWaDcx2e6/8bCxJGIzMIeZ+d7HfN88 + GBDF8zfVuXhbB2HsoGFaOgCFgZB+AufCLU0On8AEDdTxIAkhTfseeOWKtpZfyN/aAMwvVKf9ibJK + HGFav5BOgHQ2kU4TCZv4R8s6v1Cd9o+f0dal+7hnZ3ZkCUBx6oZun5zEflsl80YxvzfRogfJNqJK + 5pYo/PxCsf6cYPYJEjSwG2vYz8sUvFOTmo4fQZIYidpImiBxCGmMicO8HwaYKERdn/TgBOqPoSP7 + 2fNpCZE7dVWvhEQhaiyQdZVpvl/vso4LaYz78gH3Ksdm5i7PPrJmq0Hqj6F2CER2OYxCluSur72n + XXsoc7WuifbrBzA2dzvLQP+TSQLWQaI2w68f91EbZ6WGBBsw7OXgXpIsy1HuXiQKcRfv0lx5Jb0E + AjBy+px2KlfI9o2DKXSlAFkK7SZ2fZXi0lNa9UX5V9xO4+q168+qb39MpaOH0CEHSVLM1nfs+keC + d29kt5/4B76/v5CyRGUnAAAAAElFTkSuQmCC } -image create photo sh_10x20 -data { +image create photo json_16x12 -data { + iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAADeHpUWHRSYXcgcHJvZmlsZSB0eXBl + IGV4aWYAAHja1ZdtjuQoDIb/c4o9ArYBm+MQCNLeYI+/L4SkPqan1VNdvdIGFQGXMcaPTanc/s/f + 3f2Fh7J4F6Jayil5PCGHzAUD88ezzZ58mP2a+HPwIHe+ri8YIsFbjmnmJd8hx5jWPK9N6NS/DJ07 + FYzi7YtSlnx7lG/LINuzoeWB0LGzb2vBMiS8PArHvC6PUjZ9OFpbR4PiIbLbJ4hyiok0oA/sVVPG + 2NgHRTzbcLRXztNQPAJ6Cc75qcrwiXch8ehZ+PBSxoel4G3oWZKD4jEJEmefZ+A9UMIFeJrXRsVf + wbyPzS1Gv3m+cqyVJjMN3C0x1ugpP87seE4PLUtDDvnNULreD1hPOcUnuVzb84NHdqrw8cXdgvRw + 5juqvTfrfZ/KLpSQcOa0DnUecY6guI1ozWUJTfGJGOtsGc188RWp00aJbGiVMjEYdwrUqFCnfb4r + VbgYeGfFm7myTJmBReYK4gTSaI46q2RpSAGWilwRiPnyhea+eW5XyZD3jaDJBGM0c2k1dz/5TvvF + UO8DONEIZj1iBb94ZDTcGORGDy0Aob5iCqJuhpiuQN8/A6yAYJxhNhyw+O0wsUW65ZYMzqP6I1rw + R3WTtmUAIcLeEc6QgIBPJJESeWVWIsTRwKfAc5bAG7lKFCM3eMlBJAEOqgB7Y43S1OXIhxi356zI + JAo0WQpghRCRPhrMIYdKlBhijClqtJhjSZJGhaWkaVzDRUWDRk2qapq1mFiwaMnUzLKVzFkcrumY + UY/Zcs6lYNMCywWrCzRK2XiTLWxxS5tutuWtVKRPDTXWVLVazbU0buIaCrmlps1abmWnHam0hz3u + adfd9ryXjlTr0kOPPXXt1nMvF7VF9ZHaM7nPqdGixhOUOHR6UYNY9TRB4zqJgxmIcSAQ10EACc2D + mTcKgQe5DVXj8LuDqogML+OA02gQA8GwE8dOF7sbuQ+5uWAvceNncm6gewc5N9A9kfuV2wfUWpn3 + sExAqEI3g+oF5QeF3QpbGT+jf/x2ry783FAvNc1hr9l6uMkB6JC3FDruvydDWOdeWvjlo73g2Q8b + esGw+1IM3mboC4bdS5TeZugDg+67+fNI7dWMfnuJ/Jyhb2T4f2ToDwy77ybia4Y+2cC9eiO+t0R+ + /vL//xjq+GXF3y33LwIwqJgWmBH3AAAAZnpUWHRSYXcgcHJvZmlsZSB0eXBlIGlwdGMAAHjaPUpB + DoAwDLr3FT6hQje35yydB28e/H/saiKkQKBy3Y/LlrAqbAbrNtWCP4DdFTwiDoIaB8zwFgrWXD3W + c3UcNGFZxv69ZS7yAvgbF3rahzdDAAABhGlDQ1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw0AcxV9bxVJa + HCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC4AeIo5OToouU+L+k + 0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC5/i6h4+vd3Ge5X3u + zxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPMqJFJzxNHiYViB8sd + zEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYFFuK0aqSYSNN+wsM/ + 5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03T4DAM3Cltf3VBjDz + SXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP0wcgQ12lboCDQ2C0 + SNnrHu8Odvb275lWfz803nKO4j0HeQAAD4tpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBh + Y2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1l + dGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDQuNC4wLUV4aXYy + Ij4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYt + c3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOmlw + dGNFeHQ9Imh0dHA6Ly9pcHRjLm9yZy9zdGQvSXB0YzR4bXBFeHQvMjAwOC0wMi0yOS8iCiAgICB4 + bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0 + RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAg + ICB4bWxuczpwbHVzPSJodHRwOi8vbnMudXNlcGx1cy5vcmcvbGRmL3htcC8xLjAvIgogICAgeG1s + bnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9w + dXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2Jl + LmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu + MC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDoxZDY5NWU0Yi00YjBmLTQ5 + NjktOGI1Ni1jNTdjMjAyZDBhNDgiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Y2M4MmVh + MmUtZGFiZS00YjQ5LTk5YWMtMGNkZjdkNjRjZjlkIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50 + SUQ9InhtcC5kaWQ6YmFmNTMwZmItODY5ZS00ZTA4LThmNmUtMjE2OGJkMTFlNjIxIgogICBHSU1Q + OkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJMaW51eCIKICAgR0lNUDpUaW1lU3RhbXA9IjE2 + NjE0OTI3NDkwMjAzMjEiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4yMiIKICAgZGM6Rm9ybWF0PSJp + bWFnZS9wbmciCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lN + UCAyLjEwIj4KICAgPGlwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICAgPHJkZjpCYWcvPgogICA8 + L2lwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICA8aXB0Y0V4dDpMb2NhdGlvblNob3duPgogICAg + PHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgPGlwdGNFeHQ6QXJ0d29y + a09yT2JqZWN0PgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6QXJ0d29ya09yT2JqZWN0Pgog + ICA8aXB0Y0V4dDpSZWdpc3RyeUlkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6UmVnaXN0 + cnlJZD4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAg + IHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0 + Omluc3RhbmNlSUQ9InhtcC5paWQ6MmE1ZGRkMGUtMTc1Zi00OGUyLWJmMmMtOGNkY2M0NzI5MmU2 + IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAgICAgc3RF + dnQ6d2hlbj0iKzAzOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICAg + PHBsdXM6SW1hZ2VTdXBwbGllcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdlU3VwcGxp + ZXI+CiAgIDxwbHVzOkltYWdlQ3JlYXRvcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdl + Q3JlYXRvcj4KICAgPHBsdXM6Q29weXJpZ2h0T3duZXI+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1 + czpDb3B5cmlnaHRPd25lcj4KICAgPHBsdXM6TGljZW5zb3I+CiAgICA8cmRmOlNlcS8+CiAgIDwv + cGx1czpMaWNlbnNvcj4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1l + dGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAK + PD94cGFja2V0IGVuZD0idyI/PinPFKgAAAAGYktHRAC8ALwAvCLnprkAAAAJcEhZcwAALiMAAC4j + AXilP3YAAAAHdElNRQfmCBoFLTF0IjY7AAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1Q + V4EOFwAAAJZJREFUKM+tkTEOgzAMRR/Z8MxZGDgOK13L2kuUFW6TIXfp2o4w1JVayySowlKkOM7/ + 9v+GsyJF1hRZS28l8ABcAXFq4mGDyRtgAV7O34tHYgkqBXtji9Z/CT4a247RG7Ht3qAUuR3xoLFd + vmqjHslJ6IF6p08NzNafcERnzp+Q01nyB9NNdFUAd+Cp90G9mYDHzob+jw2qcDnYr/e2IQAAAABJ + RU5ErkJggg== +} +image create photo md_16x12 -data { + iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAADp3pUWHRSYXcgcHJvZmlsZSB0eXBl + IGV4aWYAAHja3ZddkvMoDEXfWcUsAUmAYDn8mKrZwSx/Lhg7HXe6O0l/D1NjKoBlIYSOZFfM9s/f + 3fyFi1IIxnmNAROLyyWXOGMS7X6V2ZN1s1839pjcyY2t6wFDJBhlv0285BvkmNO6T2sTOvRPQ8dO + GTN/e5Dzkpd7eVkGOV4NLQ+E9p1tWwuWIeHlkdvv6/IopKh3R2vraFDcRfH2c6IcfCB16B1b1ZAw + j2ydIp5tONorp2nI7wE9Bcf9ocrwiTchsehZePdSxo8lY4zoWYKB4n7joJzFi8zAW6CEC/A0rY2y + PYP5MTa3GH1xPXOslSYzDcwtMdbskh9HdlzTQ/PSkF1+MxTO8Q7rISd/kcu5Pd95FA8V3h8cctZz + C3ul2nuLvW9T2bjsAs4c1qGOI84ZFMuI1lwW0IZRj7nOltCizbYiddookYJWKRGDcSdHjTJ12uZY + qcJFxxsrRubKMmURLBJXECfwRjPUWSVJQwqwVOSKQMynLzT3TXO7ShF53wiaTDBGM5dWMx9vftM+ + Gep9ACcawax7rOAXj4yGG4Pc6KEFINRXTEHUzBDTGeiP1wArIOhnmCMOmG3ZTRRPt9ySwXlUv0dz + dq9u0rYMIETY28MZEhCwgcRTIKvMSoQ4RvDJ8JzFcSFTibznBi/ZiQTAQRVgb6xRmrrseRfj7QkQ + XoIo0CTJgOWcR/qoiwY5lL14570PXn30yecgYVRYCBrGazirqFOvQVWjJs1Roos+hqgxxhRz4iQG + r2mfUI8pppRyxqYZljNWZ2jkXLhIccWXULTEkkquSJ/qqq+hao011dy4iWko5BaatthSyxttSKXN + bX4Lm25xS1vuSLUu3XXfQ9cee+r5pLao3lO7kvueGi1qPEGJQacnNYhVDxM0Xid+MAMxdgTiOggg + oXkws5Gc40GuoGoMvjuoCs/w0g84jQYxEHQbse90sruRe8jNuPgWN76SMwPdnyBnBroLuc/cHlBr + eb6HZQJCFZoZVCsoPyhsMXPM4zP68mjeXfgfM9RdGRMuW3A9idTGZj7q4L2Vd+3YvHtkh8FH9h7p + Q/067svNbf0X677a5jKad9dfl5mHfr58TKnmzXWflpkfcTzprnkCy0/jtG/yj9ieG81XefFqWryM + /yu3zbfp+oJb5qWs/kbN/KLIXqX2XLEZ+4eKzdjfFdupbn54pz3trnn6XfpDmP4vX5G3DXV8ovG/ + zfwLO82+8pGVLJ4AAABmelRYdFJhdyBwcm9maWxlIHR5cGUgaXB0YwAAeNo9SkEOgDAMuvcVPmGF + Oudzlm0Hbx78f2QzEVIgULvup9m2ENlYAnFGTyH+ALwl8FCsBJMO6PIiBfNam9YxO1aG0WU7+b3N + im4v938XbRS3iXkAAAGEaUNDUElDQyBwcm9maWxlAAB4nH2RPUjDQBzFX1vFUlocLPiBQ4bqZEFU + xFGrUIQKoVZo1cHk0i9o0pCkuDgKrgUHPxarDi7Oujq4CoLgB4ijk5Oii5T4v6TQIsaD4368u/e4 + ewf4GxWmml3jgKpZRjqZELK5VaHnFUEMIoIQ+iVm6nOimILn+LqHj693cZ7lfe7PEVHyJgN8AvEs + 0w2LeIN4etPSOe8TR1lJUojPiccMuiDxI9dll984Fx3288yokUnPE0eJhWIHyx3MSoZKPEUcU1SN + 8v1ZlxXOW5zVSo217slfGM5rK8tcpzmMJBaxBBECZNRQRgUW4rRqpJhI037Cwz/k+EVyyeQqg5Fj + AVWokBw/+B/87tYsTE64SeEE0P1i2x8jQM8u0Kzb9vexbTdPgMAzcKW1/dUGMPNJer2txY6A3m3g + 4rqtyXvA5Q4w8KRLhuRIAZr+QgF4P6NvygF9t0Boze2ttY/TByBDXaVugINDYLRI2ese7w529vbv + mVZ/PzTeco7iPQd5AAAPi2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2lu + PSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4 + PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpS + REYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMj + Ij4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6aXB0Y0V4dD0iaHR0 + cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgIHhtbG5zOnhtcE1N + PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6 + Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgIHhtbG5zOnBs + dXM9Imh0dHA6Ly9ucy51c2VwbHVzLm9yZy9sZGYveG1wLzEuMC8iCiAgICB4bWxuczpHSU1QPSJo + dHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2Rj + L2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYv + MS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1w + TU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOmQyZjcyMmEwLThlMWEtNDE2NS1hMzcxLTc5 + Y2Q5ZmMyNWM1NiIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzRiYmZjNS1mMmRiLTQw + MDgtOWY1ZS03ZDNhOGUyMjc1MTQiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRp + ZDoxMGVkYWExOS0yZjU4LTRiOWMtODI5YS1kYjg4YzFiMjBkZDciCiAgIEdJTVA6QVBJPSIyLjAi + CiAgIEdJTVA6UGxhdGZvcm09IkxpbnV4IgogICBHSU1QOlRpbWVTdGFtcD0iMTY2MTQ5MjUxNDU3 + NTQ5MCIKICAgR0lNUDpWZXJzaW9uPSIyLjEwLjIyIgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIK + ICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiPgog + ICA8aXB0Y0V4dDpMb2NhdGlvbkNyZWF0ZWQ+CiAgICA8cmRmOkJhZy8+CiAgIDwvaXB0Y0V4dDpM + b2NhdGlvbkNyZWF0ZWQ+CiAgIDxpcHRjRXh0OkxvY2F0aW9uU2hvd24+CiAgICA8cmRmOkJhZy8+ + CiAgIDwvaXB0Y0V4dDpMb2NhdGlvblNob3duPgogICA8aXB0Y0V4dDpBcnR3b3JrT3JPYmplY3Q+ + CiAgICA8cmRmOkJhZy8+CiAgIDwvaXB0Y0V4dDpBcnR3b3JrT3JPYmplY3Q+CiAgIDxpcHRjRXh0 + OlJlZ2lzdHJ5SWQ+CiAgICA8cmRmOkJhZy8+CiAgIDwvaXB0Y0V4dDpSZWdpc3RyeUlkPgogICA8 + eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0 + aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJ + RD0ieG1wLmlpZDowZjI0NzU0My1mNmVmLTQyZDYtOGNkZS1hZGNmNjQ5MmFiNzIiCiAgICAgIHN0 + RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoTGludXgpIgogICAgICBzdEV2dDp3aGVuPSIr + MDM6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogICA8cGx1czpJbWFn + ZVN1cHBsaWVyPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6SW1hZ2VTdXBwbGllcj4KICAgPHBs + dXM6SW1hZ2VDcmVhdG9yPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6SW1hZ2VDcmVhdG9yPgog + ICA8cGx1czpDb3B5cmlnaHRPd25lcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkNvcHlyaWdo + dE93bmVyPgogICA8cGx1czpMaWNlbnNvcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkxpY2Vu + c29yPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQg + ZW5kPSJ3Ij8+ZvNcrAAAAAZiS0dEALwAvAC8IuemuQAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0 + SU1FB+YIGgUpNo4qZpwAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAk0lE + QVQoz8WROwrDMBBEnxbUyCl9y6S10wQlNuQGyTFTunLhNBJsFq9xKg8IxH5mNBo4HDGz7O3FzFJP + rYkaTM7y2fYKOiCJWpjqoFFugbBC0AAhbFkAmEeGmLl7fdGD6n4xJCeH/CoOcbszgyRWaR65Ae8V + tWCt/VgomIAn8HGe3Bi7Lx3Jo/ysjcrWE9BvpPMfvsHSK2xR37yRAAAAAElFTkSuQmCC +} +image create photo py_16x12 -data { + iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9 + kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC + 4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC + 5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM + qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF + FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03 + T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP + 0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw + SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgUmCibdBtQAAAGdSURBVCjPjZJPS1RhFMZ/750r + VNwZbqOFmAUuBlwkNZs2Ua1KCBJaKELZJoboa0QfImpcBIW2KmtVOwPBQBwHuWo0G/9go1HTOLfu + eN9/LSpwZq7U2b2Hc37nOc97BAkxMrmW9qzJA4TCKb2+O9jgkHDaE2PFlcuD3e52Q+nZulSz6Hhj + /Elw6b8BYSwnUnHoGatRxrIvrb8n1Z3DAO7ByVqY21Gsryx+ES1FJ480+uzCxGOM80xcePq+Q8HI + 5Fr6p1IzYVMXtCHXPuWYaKRRYQERvbLBqNcBMDI+K7X1kyQKo/eu+3NpALQ8TshQxwpKKRApALrF + TunhmWLuqCs9ANchk/U4/7chiqJOE6uV8qo1pgYwfGL1x0CP9Hp96PWhJwPOH6u1sbW5j59XDgJS + ANX5mWY2ly8LIdSNU8tdA963Fh+iff1pc6f5ZqlSf3D1/oegZcX2b1XzNx+loPD71QWZc+ivC0X3 + 4st7gPnXHZig8v2FNrYGYLSiursbBuv1qaTmJAUAYvxaX/+t4dNDAM/fbi5Pv9veAmwS4Be1FK/D + h01lLQAAAABJRU5ErkJggg== +} +image create photo sh_16x12 -data { iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9 kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC 4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC @@ -394,4 +610,54 @@ image create photo sh_10x20 -data { kLquwluPh82QWo/Ge+R+gKt/8B4mGMc01rCAE5yjEyltYCW20ddLLHCaDCzUaFyYXsRW1BLJV2Es ok5+zaaLt28c01CGU8sqIAAAAABJRU5ErkJggg== } - +image create photo debian_16x12 -data { + iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9 + kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC + 4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC + 5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM + qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF + FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03 + T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP + 0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw + SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgYBD440/mcAAADnSURBVCjPlZIxbsIwGIU/O6Ei + CEGkzukJOkRi4A7sCIYuPQlcgx2J0FNwBNQVpogVRKuqCQhsFixZjkHwNj89f37/LwtuKCPV9vmE + Sj743rg54RpTuq2Qww+QA2/G17AV8DpkKW4CJnRqbc5HgII4+mRR+hrZkNAGmMsmMOM9EYS58dyx + KgBbX/QDxSo3sDFIX65iFsQRgGJ1Mt4Y5Ai0D1Bp8MI2AsoWf/VfmmVGqiVRY07x787vbRAQ7AB6 + rA8mrK6XByzl3QaSIFac9xqEuFa2XxzygDJS7dv2U3oGIh75yu7ibF0AAN5NOFR9hOAAAAAASUVO + RK5CYII= +} +image create photo redhat_16x12 -data { + iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9 + kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC + 4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC + 5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM + qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF + FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03 + T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP + 0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw + SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgYbDKcQVQYAAAH8SURBVCjPhZJNSJMBGMd//3dr + 01KpQGdqRUF1CsrNBq1IXwnxYFFRl255jKhDhzp2qGvXAqFLFBL0YUWg6aSCIB3aoUsUpYFsM0kL + rc33fZ8ObrSE6A8PPP/ni+dLrMKn9vaqdT+cHmRdJqcFgMCmJQ0uzEce7/jwrFAZr0qSS3ScMLgu + tLnC/Ksk64Epw843jqcflZ1OWcnH3Uuge0JNwmltsIVItFDc6Cm8EyMt4zKwVehBrs29+FcH+bh7 + 0kT/CtckZjeRtpsFk42Z9B0rxyXc10ASMEzHY5nhh5qJ96wNsfge0QzMI4a0FJyxKicWy4x8rBwx + m+jsFdZXotNLNcEuJ+QsHUNEzQlvj42PbJBZQLX6JO2dTaVqKwuYXxyooFuqF0NHHcy6gMgaFZcB + fN87ZzBv2K2gEM3m2tz95YxIJBQ1gt3IzgIeZl3KJtxRwSFgGseOxN6k3wLMJbvrPK/oOgTL9Zn0 + 09XnzifcAaBGuUTHS9CB0kq/EeiqEzh36yeGZvgH5pLddZ5feAf2OYwxhVgpYDyx5dANP+pfyyXc + JoP7vsKvmscGvwDMplK1fiHiel7hCqIFNKp8a+dBC1kyMF5IOm1we9PY8Fgu0XnYsAsSizJ8Q9+B + fWB7/vyA9Yr/YLa1I25OKGgYfz6Rjbv9EqdKrq/6GWz7DaI/0EnQtYARAAAAAElFTkSuQmCC +} +image create photo spec_16x12 -data { + iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9 + kT1Iw0AcxV9bxVJaHCz4gUOG6mRBVMRRq1CECqFWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC + 4AeIo5OToouU+L+k0CLGg+N+vLv3uHsH+BsVpppd44CqWUY6mRCyuVWh5xVBDCKCEPolZupzopiC + 5/i6h4+vd3Ge5X3uzxFR8iYDfALxLNMNi3iDeHrT0jnvE0dZSVKIz4nHDLog8SPXZZffOBcd9vPM + qJFJzxNHiYViB8sdzEqGSjxFHFNUjfL9WZcVzluc1UqNte7JXxjOayvLXKc5jCQWsQQRAmTUUEYF + FuK0aqSYSNN+wsM/5PhFcsnkKoORYwFVqJAcP/gf/O7WLExOuEnhBND9YtsfI0DPLtCs2/b3sW03 + T4DAM3Cltf3VBjDzSXq9rcWOgN5t4OK6rcl7wOUOMPCkS4bkSAGa/kIBeD+jb8oBfbdAaM3trbWP + 0wcgQ12lboCDQ2C0SNnrHu8Odvb275lWfz803nKOXMrtNAAAAAZiS0dEALwAvAC8IuemuQAAAAlw + SFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+YIGgYlKa3RmjwAAAC7SURBVCjPzZGxCsJAEETfHTYp + UigoAUE0pSnyDVaW/pSVP+QXWAgpFGytE0hyucZKvLULGg/RSrfaHYbZmV34yzJaSxOGYkBsHMs7 + ruoCNorEFcULceDhAugucKnrr9y2AkYpMSCL65W9h5gliTdKD8CAIAJKsUlTVscjcxGWwASwwCnP + MSDdKO1goN1wGw7ZTadsy5KsqhgFAevxmNnh8HKPtnFNE9t+/4zW4Nzb3F6Bpzc+uPn0G7+rO3zt + PNdb1iTgAAAAAElFTkSuQmCC +} diff --git a/lib/lexers.tcl b/lib/lexers.tcl index ae61417..6b9eac1 100644 --- a/lib/lexers.tcl +++ b/lib/lexers.tcl @@ -21,3 +21,8 @@ dict set lexers SH commentSymbol {#} dict set lexers SH procFindString {(function |)\s*?PROCNAME\(\)} dict set lexers SH procRegexpCommand {regexp -nocase -all -- {^\s*?(function |)\s*?(.*?)\(()\)} $line match keyWord procName params} +#-------------------------------------------------- +# Python +dict set lexers PY commentSymbol {#} +dict set lexers PY procFindString {(def )\s*?PROCNAME} +dict set lexers PY procRegexpCommand {regexp -nocase -all -- {^\s*?(def)\s*?(.*?)\((.*?)\):} $line match keyWord procName params} diff --git a/lib/tree.tcl b/lib/tree.tcl index 1f5eba4..4bd611c 100644 --- a/lib/tree.tcl +++ b/lib/tree.tcl @@ -21,9 +21,14 @@ namespace eval Tree { regsub -all {\.|/|\\|\s} $item "_" subNode # puts "Inserted tree node: $subNode" set fileExt [string trimleft [file extension $text] "."] + #set fileName [string trimleft [file extension $text] "."] set findImg [::FindImage $fileExt] # puts "Extention $fileExt, find image: $findImg" - if {$fileExt ne "" && $findImg ne ""} { + # puts ">>>>>>>>>>> [string tolower $text]; [string match {*docker*} [string tolower $text]]" + if {[string match {*docker*} [string tolower $text]]} { + set findImg [::FindImage docker] + } + if {$fileExt ne "" || $findImg ne ""} { set image $findImg } else { set image imgFile @@ -32,7 +37,13 @@ namespace eval Tree { directory { regsub -all {\.|/|\\|\s} $item "_" subNode # puts $subNode - set image pixel + if {[string match {*debian*} [string tolower $item]]} { + set image [::FindImage debian] + } elseif {[string match {*redhat*} [string tolower $item]]} { + set image [::FindImage redhat] + } else { + set image pixel + } } func { regsub -all {:} $item "_" subNode diff --git a/projman.tcl b/projman.tcl index dbdba27..c314b45 100755 --- a/projman.tcl +++ b/projman.tcl @@ -10,7 +10,7 @@ exec wish "$0" -- "$@" ###################################################### # Version: 2.0.0 # Release: alpha -# Build: 25082022131123 +# Build: 26082022111459 ###################################################### # определим текущую версию, релиз и т.д.