Merge branch 'master' into dev
This commit is contained in:
commit
69cea72f90
|
@ -2,67 +2,70 @@ local core = require "core"
|
|||
local command = require "core.command"
|
||||
local config = require "core.config"
|
||||
local search = require "core.doc.search"
|
||||
local keymap = require "core.keymap"
|
||||
local DocView = require "core.docview"
|
||||
local CommandView = require "core.commandview"
|
||||
local StatusView = require "core.statusview"
|
||||
|
||||
local max_previous_finds = 50
|
||||
local max_last_finds = 50
|
||||
local last_finds, last_view, last_fn, last_text, last_sel
|
||||
|
||||
local case_insensitive = config.find_case_insensitive or false
|
||||
local plain = config.find_plain or false
|
||||
|
||||
local function doc()
|
||||
return core.active_view.doc
|
||||
return last_view and last_view.doc or core.active_view.doc
|
||||
end
|
||||
|
||||
|
||||
local previous_finds
|
||||
local last_doc
|
||||
local last_fn, last_text
|
||||
|
||||
|
||||
local function push_previous_find(doc, sel)
|
||||
if last_doc ~= doc then
|
||||
last_doc = doc
|
||||
previous_finds = {}
|
||||
end
|
||||
if #previous_finds >= max_previous_finds then
|
||||
table.remove(previous_finds, 1)
|
||||
end
|
||||
table.insert(previous_finds, sel or { doc:get_selection() })
|
||||
local function get_find_tooltip()
|
||||
local rf = keymap.get_binding("find-replace:repeat-find")
|
||||
local ti = keymap.get_binding("find-replace:toggle-insensitivity")
|
||||
local tr = keymap.get_binding("find-replace:toggle-plain")
|
||||
return (plain and "[Plain] " or "") ..
|
||||
(case_insensitive and "[Insensitive] " or "") ..
|
||||
(rf and ("Press " .. rf .. " to select the next match.") or "") ..
|
||||
(ti and (" " .. ti .. " toggles case sensitivity.") or "") ..
|
||||
(tr and (" " .. tr .. " toggles plain find.") or "")
|
||||
end
|
||||
|
||||
local function update_preview(sel, search_fn, text)
|
||||
local ok, line1, col1, line2, col2 =
|
||||
pcall(search_fn, last_view.doc, sel[1], sel[2], text, case_insensitive, plain)
|
||||
if ok and line1 and text ~= "" then
|
||||
last_view.doc:set_selection(line2, col2, line1, col1)
|
||||
last_view:scroll_to_line(line2, true)
|
||||
return true
|
||||
else
|
||||
last_view.doc:set_selection(unpack(sel))
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
local function find(label, search_fn)
|
||||
local dv = core.active_view
|
||||
local sel = { dv.doc:get_selection() }
|
||||
local text = dv.doc:get_text(table.unpack(sel))
|
||||
local found = false
|
||||
last_view, last_sel, last_finds = core.active_view,
|
||||
{ core.active_view.doc:get_selection() }, {}
|
||||
local text, found = last_view.doc:get_text(unpack(last_sel)), false
|
||||
|
||||
core.command_view:set_text(text, true)
|
||||
core.status_view:show_tooltip(get_find_tooltip())
|
||||
|
||||
core.command_view:enter(label, function(text)
|
||||
core.status_view:remove_tooltip()
|
||||
if found then
|
||||
last_fn, last_text = search_fn, text
|
||||
previous_finds = {}
|
||||
push_previous_find(dv.doc, sel)
|
||||
else
|
||||
core.error("Couldn't find %q", text)
|
||||
dv.doc:set_selection(table.unpack(sel))
|
||||
dv:scroll_to_make_visible(sel[1], sel[2])
|
||||
last_view.doc:set_selection(unpack(last_sel))
|
||||
last_view:scroll_to_make_visible(unpack(last_sel))
|
||||
end
|
||||
|
||||
end, function(text)
|
||||
local ok, line1, col1, line2, col2 = pcall(search_fn, dv.doc, sel[1], sel[2], text)
|
||||
if ok and line1 and text ~= "" then
|
||||
dv.doc:set_selection(line2, col2, line1, col1)
|
||||
dv:scroll_to_line(line2, true)
|
||||
found = true
|
||||
else
|
||||
dv.doc:set_selection(table.unpack(sel))
|
||||
found = false
|
||||
end
|
||||
|
||||
found = update_preview(last_sel, search_fn, text)
|
||||
last_fn, last_text = search_fn, text
|
||||
end, function(explicit)
|
||||
core.status_view:remove_tooltip()
|
||||
if explicit then
|
||||
dv.doc:set_selection(table.unpack(sel))
|
||||
dv:scroll_to_make_visible(sel[1], sel[2])
|
||||
last_view.doc:set_selection(unpack(last_sel))
|
||||
last_view:scroll_to_make_visible(unpack(last_sel))
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
@ -71,6 +74,7 @@ end
|
|||
local function replace(kind, default, fn)
|
||||
core.command_view:set_text(default, true)
|
||||
|
||||
core.status_view:show_tooltip(get_find_tooltip())
|
||||
core.command_view:enter("Find To Replace " .. kind, function(old)
|
||||
core.command_view:set_text(old, true)
|
||||
|
||||
|
@ -80,75 +84,40 @@ local function replace(kind, default, fn)
|
|||
return fn(text, old, new)
|
||||
end)
|
||||
core.log("Replaced %d instance(s) of %s %q with %q", n, kind, old, new)
|
||||
end, function() end, function()
|
||||
core.status_view:remove_tooltip()
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
local function has_selection()
|
||||
return core.active_view:is(DocView)
|
||||
and core.active_view.doc:has_selection()
|
||||
return core.active_view:is(DocView) and core.active_view.doc:has_selection()
|
||||
end
|
||||
|
||||
|
||||
command.add(has_selection, {
|
||||
["find-replace:select-next"] = function()
|
||||
local l1, c1, l2, c2 = doc():get_selection(true)
|
||||
local text = doc():get_text(l1, c1, l2, c2)
|
||||
local l1, c1, l2, c2 = search.find(doc(), l2, c2, text, { wrap = true })
|
||||
l1, c1, l2, c2 = search.find(doc(), l2, c2, text, { wrap = true })
|
||||
if l2 then doc():set_selection(l2, c2, l1, c1) end
|
||||
end
|
||||
})
|
||||
|
||||
command.add("core.docview", {
|
||||
["find-replace:find"] = function()
|
||||
find("Find Text", function(doc, line, col, text)
|
||||
local opt = { wrap = true, no_case = true }
|
||||
find("Find Text", function(doc, line, col, text, case_insensitive, plain)
|
||||
local opt = { wrap = true, no_case = case_insensitive, regex = not plain }
|
||||
return search.find(doc, line, col, text, opt)
|
||||
end)
|
||||
end,
|
||||
|
||||
["find-replace:find-regex"] = function()
|
||||
find("Find Text Regex", function(doc, line, col, text)
|
||||
local opt = { wrap = true, no_case = true, regex = true }
|
||||
return search.find(doc, line, col, text, opt)
|
||||
end)
|
||||
end,
|
||||
|
||||
["find-replace:repeat-find"] = function()
|
||||
if not last_fn then
|
||||
core.error("No find to continue from")
|
||||
else
|
||||
local line, col = doc():get_selection()
|
||||
local line1, col1, line2, col2 = last_fn(doc(), line, col, last_text)
|
||||
if line1 then
|
||||
push_previous_find(doc())
|
||||
doc():set_selection(line2, col2, line1, col1)
|
||||
core.active_view:scroll_to_line(line2, true)
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
["find-replace:previous-find"] = function()
|
||||
local sel = table.remove(previous_finds)
|
||||
if not sel or doc() ~= last_doc then
|
||||
core.error("No previous finds")
|
||||
return
|
||||
end
|
||||
doc():set_selection(table.unpack(sel))
|
||||
core.active_view:scroll_to_line(sel[3], true)
|
||||
end,
|
||||
|
||||
["find-replace:replace"] = function()
|
||||
replace("Text", "", function(text, old, new)
|
||||
return text:gsub(old:gsub("%W", "%%%1"), new:gsub("%%", "%%%%"), nil)
|
||||
end)
|
||||
end,
|
||||
|
||||
["find-replace:replace-regex"] = function()
|
||||
replace("Regex", "", function(text, old, new)
|
||||
local re = regex.compile(old)
|
||||
return regex.gsub(re, text, new)
|
||||
replace("Text", doc():get_text(doc():get_selection(true)), function(text, old, new)
|
||||
if plain then
|
||||
return text:gsub(old:gsub("%W", "%%%1"), new:gsub("%%", "%%%%"), nil)
|
||||
end
|
||||
local result, matches = regex.gsub(regex.compile(old), text, new)
|
||||
return result, #matches
|
||||
end)
|
||||
end,
|
||||
|
||||
|
@ -170,3 +139,53 @@ command.add("core.docview", {
|
|||
end)
|
||||
end,
|
||||
})
|
||||
|
||||
local function valid_for_finding()
|
||||
return core.active_view:is(DocView) or core.active_view:is(CommandView)
|
||||
end
|
||||
|
||||
command.add(valid_for_finding, {
|
||||
["find-replace:repeat-find"] = function()
|
||||
if not last_fn then
|
||||
core.error("No find to continue from")
|
||||
else
|
||||
local sl1, sc1, sl2, sc2 = doc():get_selection(true)
|
||||
local line1, col1, line2, col2 = last_fn(doc(), sl1, sc2, last_text, case_insensitive, plain)
|
||||
if line1 then
|
||||
if last_view.doc ~= doc() then
|
||||
last_finds = {}
|
||||
end
|
||||
if #last_finds >= max_last_finds then
|
||||
table.remove(last_finds, 1)
|
||||
end
|
||||
table.insert(last_finds, { sl1, sc1, sl2, sc2 })
|
||||
doc():set_selection(line2, col2, line1, col1)
|
||||
last_view:scroll_to_line(line2, true)
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
["find-replace:previous-find"] = function()
|
||||
local sel = table.remove(last_finds)
|
||||
if not sel or doc() ~= last_view.doc then
|
||||
core.error("No previous finds")
|
||||
return
|
||||
end
|
||||
doc():set_selection(table.unpack(sel))
|
||||
last_view:scroll_to_line(sel[3], true)
|
||||
end,
|
||||
})
|
||||
|
||||
command.add("core.commandview", {
|
||||
["find-replace:toggle-insensitivity"] = function()
|
||||
case_insensitive = not case_insensitive
|
||||
core.status_view:show_tooltip(get_find_tooltip())
|
||||
update_preview(last_sel, last_fn, last_text)
|
||||
end,
|
||||
|
||||
["find-replace:toggle-plain"] = function()
|
||||
plain = not plain
|
||||
core.status_view:show_tooltip(get_find_tooltip())
|
||||
update_preview(last_sel, last_fn, last_text)
|
||||
end
|
||||
})
|
||||
|
|
|
@ -29,5 +29,6 @@ config.tab_close_button = true
|
|||
-- Disable plugin loading setting to false the config entry
|
||||
-- of the same name.
|
||||
config.trimwhitespace = false
|
||||
config.lineguide = false
|
||||
|
||||
return config
|
||||
|
|
|
@ -350,10 +350,14 @@ function DocView:draw_line_text(idx, x, y)
|
|||
end
|
||||
end
|
||||
|
||||
function DocView:draw_caret(x, y)
|
||||
local lh = self:get_line_height()
|
||||
renderer.draw_rect(x, y, style.caret_width, lh, style.caret)
|
||||
end
|
||||
|
||||
function DocView:draw_line_body(idx, x, y)
|
||||
-- draw selection if it overlaps this line
|
||||
for lidx, line1, col1, line2, col2 in self.doc:get_selections(true) do
|
||||
for lidx, line1, col1, line2, col2 in self.doc:get_selections(true) do
|
||||
if idx >= line1 and idx <= line2 then
|
||||
local text = self.doc.lines[idx]
|
||||
if line1 ~= idx then col1 = 1 end
|
||||
|
@ -364,34 +368,22 @@ function DocView:draw_line_body(idx, x, y)
|
|||
renderer.draw_rect(x1, y, x2 - x1, lh, style.selection)
|
||||
end
|
||||
end
|
||||
for lidx, line1, col1, line2, col2 in self.doc:get_selections(true) do
|
||||
for lidx, line1, col1, line2, col2 in self.doc:get_selections(true) do
|
||||
-- draw line highlight if caret is on this line
|
||||
if config.highlight_current_line and (line1 == line2 and col1 == col2)
|
||||
and line1 == idx and core.active_view == self then
|
||||
self:draw_line_highlight(x + self.scroll.x, y)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- draw line's text
|
||||
self:draw_line_text(idx, x, y)
|
||||
|
||||
-- draw caret if it overlaps this line
|
||||
local T = config.blink_period
|
||||
for _, line, col in self.doc:get_selections() do
|
||||
if line == idx and core.active_view == self
|
||||
and (core.blink_timer - core.blink_start) % T < T / 2
|
||||
and system.window_has_focus() then
|
||||
local lh = self:get_line_height()
|
||||
local x1 = x + self:get_col_x_offset(line, col)
|
||||
renderer.draw_rect(x1, y, style.caret_width, lh, style.caret)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function DocView:draw_line_gutter(idx, x, y)
|
||||
local color = style.line_number
|
||||
for _, line1, _, line2 in self.doc:get_selections(true) do
|
||||
for _, line1, _, line2 in self.doc:get_selections(true) do
|
||||
if idx >= line1 and idx <= line2 then
|
||||
color = style.line_number2
|
||||
break
|
||||
|
@ -403,30 +395,45 @@ function DocView:draw_line_gutter(idx, x, y)
|
|||
end
|
||||
|
||||
|
||||
function DocView:draw_overlay()
|
||||
if core.active_view == self then
|
||||
local minline, maxline = self:get_visible_line_range()
|
||||
-- draw caret if it overlaps this line
|
||||
local T = config.blink_period
|
||||
for _, line, col in self.doc:get_selections() do
|
||||
if line >= minline and line <= maxline
|
||||
and (core.blink_timer - core.blink_start) % T < T / 2
|
||||
and system.window_has_focus() then
|
||||
local x, y = self:get_line_screen_position(line)
|
||||
self:draw_caret(x + self:get_col_x_offset(line, col), y)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function DocView:draw()
|
||||
self:draw_background(style.background)
|
||||
|
||||
local font = self:get_font()
|
||||
font:set_tab_size(config.indent_size)
|
||||
self:get_font():set_tab_size(config.indent_size)
|
||||
|
||||
local minline, maxline = self:get_visible_line_range()
|
||||
local lh = self:get_line_height()
|
||||
|
||||
local _, y = self:get_line_screen_position(minline)
|
||||
local x = self.position.x
|
||||
local x, y = self:get_line_screen_position(minline)
|
||||
for i = minline, maxline do
|
||||
self:draw_line_gutter(i, x, y)
|
||||
self:draw_line_gutter(i, self.position.x, y)
|
||||
y = y + lh
|
||||
end
|
||||
|
||||
local x, y = self:get_line_screen_position(minline)
|
||||
local gw = self:get_gutter_width()
|
||||
local pos = self.position
|
||||
x, y = self:get_line_screen_position(minline)
|
||||
core.push_clip_rect(pos.x + gw, pos.y, self.size.x, self.size.y)
|
||||
for i = minline, maxline do
|
||||
self:draw_line_body(i, x, y)
|
||||
y = y + lh
|
||||
end
|
||||
self:draw_overlay()
|
||||
core.pop_clip_rect()
|
||||
|
||||
self:draw_scrollbar()
|
||||
|
|
|
@ -138,6 +138,8 @@ keymap.add_direct {
|
|||
["ctrl+r"] = "find-replace:replace",
|
||||
["f3"] = "find-replace:repeat-find",
|
||||
["shift+f3"] = "find-replace:previous-find",
|
||||
["ctrl+i"] = "find-replace:toggle-insensitivity",
|
||||
["ctrl+shift+i"] = "find-replace:toggle-plain",
|
||||
["ctrl+g"] = "doc:go-to-line",
|
||||
["ctrl+s"] = "doc:save",
|
||||
["ctrl+shift+s"] = "doc:save-as",
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
-- mod-version:1 -- lite-xl 1.16
|
||||
local config = require "core.config"
|
||||
local style = require "core.style"
|
||||
local DocView = require "core.docview"
|
||||
|
||||
local draw_overlay = DocView.draw_overlay
|
||||
|
||||
function DocView:draw_overlay(...)
|
||||
local ns = ("n"):rep(config.line_limit)
|
||||
local ss = self:get_font():subpixel_scale()
|
||||
local offset = self:get_font():get_width_subpixel(ns) / ss
|
||||
local x = self:get_line_screen_position(1) + offset
|
||||
local y = self.position.y
|
||||
local w = math.ceil(SCALE * 1)
|
||||
local h = self.size.y
|
||||
|
||||
local color = style.guide or style.selection
|
||||
renderer.draw_rect(x, y, w, h, color)
|
||||
|
||||
draw_overlay(self, ...)
|
||||
end
|
Binary file not shown.
|
@ -1,192 +1,3 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="640"
|
||||
height="640.00006"
|
||||
viewBox="0 0 169.33333 169.33334"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="lite.svg">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.83124992"
|
||||
inkscape:cx="320"
|
||||
inkscape:cy="320.00003"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
units="px"
|
||||
inkscape:window-width="1299"
|
||||
inkscape:window-height="713"
|
||||
inkscape:window-x="67"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:lockguides="false" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-18.891505,-52.827384)">
|
||||
<rect
|
||||
style="opacity:1;fill:#302e31;fill-opacity:1;stroke:none;stroke-width:0.50622272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
id="rect905"
|
||||
width="169.33333"
|
||||
height="169.33333"
|
||||
x="18.891504"
|
||||
y="52.827408"
|
||||
ry="9.2305775" />
|
||||
<path
|
||||
style="opacity:1;fill:#49464b;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 40.05817,87.223213 h 13.229166 v 7.937499 H 40.05817 Z"
|
||||
id="rect821" />
|
||||
<path
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 61.224838,87.223213 h 18.520834 v 7.937499 H 61.224838 Z"
|
||||
id="rect823" />
|
||||
<path
|
||||
style="opacity:1;fill:#d4d2d7;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="M 79.745674,87.223213 H 122.079 v 7.937499 H 79.745674 Z"
|
||||
id="rect825" />
|
||||
<path
|
||||
style="opacity:1;fill:#d4d2d7;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 124.72483,87.223213 h 5.29167 v 7.937499 h -5.29167 z"
|
||||
id="rect827" />
|
||||
<path
|
||||
style="opacity:1;fill:#f1a04a;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 132.66232,87.223213 h 21.16667 v 7.937499 h -21.16667 z"
|
||||
id="rect829" />
|
||||
<path
|
||||
style="opacity:1;fill:#49464b;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 40.05817,100.45238 h 13.229166 v 7.93749 H 40.05817 Z"
|
||||
id="rect831" />
|
||||
<path
|
||||
style="opacity:1;fill:#49464b;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 40.05817,113.68155 h 13.229166 v 7.9375 H 40.05817 Z"
|
||||
id="rect833" />
|
||||
<path
|
||||
style="opacity:1;fill:#646363;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 58.579006,113.68155 h 13.229166 v 7.9375 H 58.579006 Z"
|
||||
id="rect835" />
|
||||
<path
|
||||
style="opacity:1;fill:#646363;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 74.454002,113.68155 h 15.875 v 7.9375 h -15.875 z"
|
||||
id="rect837" />
|
||||
<path
|
||||
style="opacity:1;fill:#646363;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 92.974831,113.68155 h 26.458339 v 7.9375 H 92.974831 Z"
|
||||
id="rect839" />
|
||||
<path
|
||||
style="opacity:1;fill:#646363;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 122.07899,113.68155 h 10.58333 v 7.9375 h -10.58333 z"
|
||||
id="rect841" />
|
||||
<path
|
||||
style="opacity:1;fill:#646363;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 137.95399,113.68155 h 15.875 v 7.9375 h -15.875 z"
|
||||
id="rect843" />
|
||||
<path
|
||||
style="opacity:1;fill:#49464b;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 40.05817,126.91071 h 13.229166 v 7.9375 H 40.05817 Z"
|
||||
id="rect845" />
|
||||
<path
|
||||
style="opacity:1;fill:#e77280;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="M 58.579006,126.91071 H 77.09984 v 7.9375 H 58.579006 Z"
|
||||
id="rect847" />
|
||||
<path
|
||||
style="opacity:1;fill:#d4d2d7;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 77.099838,126.91071 h 58.208332 v 7.93751 H 77.099838 Z"
|
||||
id="rect849" />
|
||||
<path
|
||||
style="opacity:1;fill:#49464b;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 40.05817,140.13988 h 13.229166 v 7.9375 H 40.05817 Z"
|
||||
id="rect851" />
|
||||
<path
|
||||
style="opacity:1;fill:#d4d2d7;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 58.579006,140.13988 h 66.145824 v 7.9375 H 58.579006 Z"
|
||||
id="rect853"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="opacity:1;fill:#d682be;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 124.72483,140.13988 h 37.04167 v 7.9375 h -37.04167 z"
|
||||
id="rect855" />
|
||||
<path
|
||||
style="opacity:1;fill:#d4d2d7;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 161.76651,140.13988 h 5.29165 v 7.9375 h -5.29165 z"
|
||||
id="rect857" />
|
||||
<path
|
||||
style="opacity:1;fill:#49464b;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 40.05817,153.36905 h 13.229166 v 7.9375 H 40.05817 Z"
|
||||
id="rect859" />
|
||||
<path
|
||||
style="opacity:1;fill:#d682be;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 69.162338,153.36905 h 23.812498 v 7.9375 H 69.162338 Z"
|
||||
id="rect861" />
|
||||
<path
|
||||
style="opacity:1;fill:#f1a04a;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 95.620674,153.36905 h 13.229156 v 7.9375 H 95.620674 Z"
|
||||
id="rect863" />
|
||||
<path
|
||||
style="opacity:1;fill:#d682be;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="M 111.49567,153.36905 H 122.079 v 7.9375 h -10.58333 z"
|
||||
id="rect865" />
|
||||
<path
|
||||
style="opacity:1;fill:#49464b;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 40.05817,166.59822 h 13.229166 v 7.9375 H 40.05817 Z"
|
||||
id="rect867" />
|
||||
<path
|
||||
style="opacity:1;fill:#49464b;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 40.05817,179.82738 h 13.229166 v 7.9375 H 40.05817 Z"
|
||||
id="rect869" />
|
||||
<path
|
||||
style="opacity:1;fill:#d682be;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 58.579006,179.82738 h 13.229166 v 7.9375 H 58.579006 Z"
|
||||
id="rect871" />
|
||||
<path
|
||||
style="opacity:1;fill:#e77280;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="m 74.454002,179.82738 h 15.875 v 7.9375 h -15.875 z"
|
||||
id="rect873" />
|
||||
<path
|
||||
style="opacity:1;fill:#d4d2d7;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
d="M 90.329002,179.82738 H 137.954 v 7.9375 H 90.329002 Z"
|
||||
id="rect875"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="opacity:1;fill:#e77280;fill-opacity:1;stroke:none;stroke-width:0.52916676;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
|
||||
id="rect14"
|
||||
width="18.520836"
|
||||
height="7.9375005"
|
||||
x="61.224838"
|
||||
y="87.223213" />
|
||||
</g>
|
||||
</svg>
|
||||
<!-- Generator: Gravit.io -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 48 48" width="48" height="48"><defs><clipPath id="_clipPath_oQOpAlaS5aQPNgwhNjsJr8QwgeI7VsJ1"><rect width="48" height="48"/></clipPath></defs><g clip-path="url(#_clipPath_oQOpAlaS5aQPNgwhNjsJr8QwgeI7VsJ1)"><rect width="48" height="48" style="fill:rgb(0,0,0)" fill-opacity="0"/><path d="M 4 0 L 44 0 C 46.208 0 48 1.792 48 4 L 48 44 C 48 46.208 46.208 48 44 48 L 4 48 C 1.792 48 0 46.208 0 44 L 0 4 C 0 1.792 1.792 0 4 0 Z" style="stroke:none;fill:#2E2E32;stroke-miterlimit:10;"/><path d=" M 19 27 L 19 15 C 19 13.896 18.104 13 17 13 L 13 13 L 13 30 C 13 32.76 15.24 35 18 35 L 35 35 L 35 31 C 35 29.896 34.104 29 33 29 L 21 29 C 19.896 29 19 28.104 19 27 Z " fill="rgb(225,225,230)"/><path d=" M 24 22 L 24 16 L 29 19 L 32 24 L 26 24 C 24.896 24 24 23.104 24 22 Z " fill="rgb(147,221,250)"/><path d=" M 35 13 L 21 13 L 35 27 L 35 13 Z " fill="rgb(255,169,77)"/><path d=" M 32 16 L 24 16 L 32 24 L 32 16 Z " fill="rgb(247,201,92)"/></g></svg>
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
icon.ico
BIN
icon.ico
Binary file not shown.
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 108 KiB |
Loading…
Reference in New Issue