Adds: Documents menu (copy, cut, paste, delete, move up/down, split, merge...)

This commit is contained in:
Olivier Keshavjee 2017-11-10 17:43:32 +01:00
commit c6f1a461d5
34 changed files with 2692 additions and 41 deletions

View file

@ -0,0 +1,157 @@
<?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="128"
height="128"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="folder-copy.svg"
inkscape:export-filename="/media/Data/Main/Visuals/Icons/Numix/Desktop/repos/numix-wiki/Gjorgi/Numix-folders/48/New/folder-144.png"
inkscape:export-xdpi="270"
inkscape:export-ydpi="270">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.5778076"
inkscape:cx="19.566786"
inkscape:cy="106.96771"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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(0,-924.3622)">
<g
id="g3010"
transform="matrix(1.9999909,0,0,1.9999909,-39.999763,-1096.3525)">
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path2996"
d="m 26,1021.8916 0,21.4118 32,0 0,-10.7059 -1.523809,-9.1765 -11.976191,-0.059 -1.5,-3 -15.47619,0 C 26.761905,1020.3622 26,1021.1269 26,1021.8916 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect2998"
width="15.785714"
height="5.9411421"
x="28.5"
y="1024.3622" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 27.53125,1020.3622 c -0.761904,0 -1.53125,0.7665 -1.53125,1.5313 l 0,1 c 0,-0.7648 0.769346,-1.5313 1.53125,-1.5313 l 14.96875,0 1.5,3 12.46875,0.062 1.53125,9.1719 0,-1 -1.53125,-9.1719 -11.96875,-0.062 -1.5,-3 z"
id="path3000"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsccccccccs" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 58,1024.9505 0,21.4117 -32,0 0,-20 15,0 1.5,-3 13.976191,0.059 c 0.761904,0 1.523809,0.7648 1.523809,1.5295 z"
id="path3002"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3004"
d="m 26,1045.3622 0,1 32,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 42.761905,1024.1858 -3.809524,2.2941 2.285714,0 z"
id="path3006"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 42.5,1023.3622 -1.5,3 -15,0 0,1 15.5,0 1.5,-3 13.46875,0.062 c 0.761904,0 1.53125,0.7666 1.53125,1.5313 l 0,-1 c 0,-0.7647 -0.769346,-1.5313 -1.53125,-1.5313 z"
id="path3008"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccscc" />
</g>
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3029"
d="m 51.999815,983.4212 0,42.8234 63.999705,0 0,-21.4117 -3.0476,-18.3529 -23.952273,-0.118 -2.999987,-6 -30.952239,0 c -1.523803,4e-4 -3.047606,1.5298 -3.047606,3.0592 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3799"
width="31.571285"
height="11.88223"
x="56.999794"
y="988.36243" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 55.062301,980.3624 c -1.523801,0 -3.062486,1.533 -3.062486,3.0626 l 0,2 c 0,-1.5296 1.538685,-3.0626 3.062486,-3.0626 l 29.937364,0 2.999987,6 24.937388,0.124 3.06248,18.3437 0,-2 -3.06248,-18.3437 -23.937393,-0.124 -2.999987,-6 z"
id="path3790"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsccccccccs" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 115.99952,989.539 0,42.8232 -63.999705,0 0,-39.9998 29.999863,0 2.999987,-6 27.952255,0.118 c 1.5238,0 3.0476,1.5296 3.0476,3.059 z"
id="rect2987"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3794"
d="m 51.999815,1030.3622 0,2 63.999705,0 0,-2 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 85.523472,988.0096 -7.619013,4.5882 4.571407,0 z"
id="path3801"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 84.999665,986.3624 -2.999987,6 -29.999863,0 0,2 30.999859,0 2.999986,-6 26.93738,0.124 c 1.5238,0 3.06248,1.5332 3.06248,3.0626 l 0,-2 c 0,-1.5294 -1.53868,-3.0626 -3.06248,-3.0626 z"
id="path3015"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccscc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path d="M 7 3.5 L 7 8 L 2 12 L 3.25 13.5625 L 8 9.7617188 L 12.75 13.5625 L 14 12 L 9 8 L 9 3.5 L 7 3.5 z " style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 8 1 3 3 -6 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="2" height="3" x="12" y="12" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="2" height="3" x="2" y="12" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
</svg>

After

Width:  |  Height:  |  Size: 527 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path d="m 12 1 3 3 -6 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="2" height="4" x="11" y="3" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="2" height="4" x="3" y="3" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 4 1 3 3 l -6 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 4.414 5.586 -1.414 1.414 4 4 0 4 2 0 0 -4 4 -4 -1.414 -1.414 -3.586 3.586" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#268bd2;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
</svg>

After

Width:  |  Height:  |  Size: 882 B

View file

@ -0,0 +1,117 @@
<?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="16"
height="16"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="folder-copy.svg"
inkscape:export-filename="/media/Data/Main/Visuals/Icons/Numix/Desktop/repos/numix-wiki/Gjorgi/Numix-folders/48/New/folder-144.png"
inkscape:export-xdpi="270"
inkscape:export-ydpi="270">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="40.501526"
inkscape:cx="9.4328263"
inkscape:cy="6.8259159"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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(0,-1036.3622)">
<path
style="fill:#ef6c00;fill-opacity:1;stroke:none"
d="m 2,1038.8622 0,6.5 8,0 0,-3.5 -0.5,-2.5 -2.5,0 -0.5,-1 -4,0 c -0.25,0 -0.5,0.25 -0.5,0.5 z"
id="path3017"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<rect
y="1039.3622"
x="3"
height="1.9999739"
width="5"
id="rect3021"
style="fill:#fffdf0;fill-opacity:1;stroke:none" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path3023"
d="m 10,1039.8622 0,6.5 -8,0 0,-6 3.5,0 0.5,-1 3.5,0 c 0.25,0 0.5,0.25 0.5,0.5 z"
style="fill:#ffa726;fill-opacity:1;stroke:none" />
<path
inkscape:connector-curvature="0"
id="path3027"
d="m 7.5,1039.1122 -1.25,0.75 0.75,0 z"
style="fill:none;stroke:none" />
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3029"
d="m 6,1042.8622 0,6.5 8,0 0,-3.5 -0.5,-2.5 -2.5,0 -0.5,-1 -4,0 c -0.25,0 -0.5,0.25 -0.5,0.5 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3799"
width="5"
height="1.9999739"
x="7"
y="1043.3622" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 14,1043.8622 0,6.5 -8,0 0,-6 3.5,0 0.5,-1 3.5,0 c 0.25,0 0.5,0.25 0.5,0.5 z"
id="rect2987"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="fill:none;stroke:none"
d="m 11.5,1043.1122 -1.25,0.75 0.75,0 z"
id="path3801"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
<rect width="2" height="5" x="4" y="15" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 10 5 0 5 -6 5 l 1.281 1.535 5.719 -4.766 5.719 4.766 1.281 -1.535 l -6 -5 0 -5 -2 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 11 2 4 4 -8 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect y="15" x="16" height="5" width="2" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
</svg>

After

Width:  |  Height:  |  Size: 517 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
<rect width="2" height="5" x="5" y="-10" transform="scale(1,-1)" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 6 2 4 4 -8 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect y="-10" x="15" height="5" width="2" transform="scale(1,-1)" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 16 2 4 4 -8 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 6.414 8.586 l -1.414 1.414 l 5 5 l 0 5 l 2 0 l 0 -5 l 5 -5 l -1.414 -1.414 l -4.586 4.586 l -4.586 -4.586 z" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#268bd2;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
</svg>

After

Width:  |  Height:  |  Size: 968 B

View file

@ -0,0 +1,180 @@
<?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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="folder.svg"
inkscape:export-filename="/media/Data/Main/Visuals/Icons/Numix/Desktop/repos/numix-wiki/Gjorgi/Numix-folders/48/New/folder-144.png"
inkscape:export-xdpi="270"
inkscape:export-ydpi="270">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient3760">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3762" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3764" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3760"
id="radialGradient3766"
cx="11"
cy="19"
fx="11"
fy="19"
r="11"
gradientTransform="matrix(1,0,0,0.09090909,0,17.272727)"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="32.002744"
inkscape:cx="11.222641"
inkscape:cy="10.631938"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1030.3622)">
<g
id="g3787"
transform="translate(0,-2)">
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3773"
d="m 2,1035.8622 0,7 11,0 0,-3.5 -0.5,-3 -4,0 -0.5,-1 -5.5,0 c -0.25,0 -0.5,0.25 -0.5,0.5 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3775"
width="4"
height="2.4999783"
x="4"
y="1036.3622" />
<path
inkscape:connector-curvature="0"
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 2.5,1035.3622 c -0.25,0 -0.5,0.25 -0.5,0.5 l 0,1 c 0,-0.25 0.25,-0.5 0.5,-0.5 l 5.5,0 0.5,1 4,0 0.5,3 0,-1 -0.5,-3 -4,0 -0.5,-1 -5.5,0 z"
id="path3777" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 13,1036.8956 0,7.4666 -11,0 0,-7 5.5,0 0.5,-1 4.5,0 c 0.25,0 0.5,0.2667 0.5,0.5334 z"
id="path3779"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3781"
d="m 2,1043.3622 0,1 11,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 7.5,1036.6122 -1.25,0.75 0.75,0 z"
id="path3783"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 8,1036.3622 -0.5,1 -5.5,0 0,1 6.25,0 0.5,-1 3.75,0 c 0.25,0 0.5,0.2646 0.5,0.5313 l 0,-1 c 0,-0.2667 -0.25,-0.5313 -0.5,-0.5313 z"
id="path3785"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscssc" />
</g>
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3029"
d="m 9,1040.8622 0,7 11,0 0,-3.5 -0.5,-3 -4,0 -0.5,-1 -5.5,0 c -0.25,0 -0.5,0.25 -0.5,0.5 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3799"
width="4"
height="2.4999783"
x="11"
y="1041.3622" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 9.5,1040.3622 c -0.25,0 -0.5,0.25 -0.5,0.5 l 0,1 c 0,-0.25 0.25,-0.5 0.5,-0.5 l 5.5,0 0.5,1 4,0 0.5,3 0,-1 -0.5,-3 -4,0 -0.5,-1 -5.5,0 z"
id="path3768"
inkscape:connector-curvature="0" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 20,1041.8956 0,7.4666 -11,0 0,-7 5.5,0 0.5,-1 4.5,0 c 0.25,0 0.5,0.2667 0.5,0.5334 z"
id="rect2987"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3794"
d="m 9,1048.3622 0,1 11,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 14.5,1041.6122 -1.25,0.75 0.75,0 z"
id="path3801"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 15,1041.3622 -0.5,1 -5.5,0 0,1 6.25,0 0.5,-1 3.75,0 c 0.25,0 0.5,0.2646 0.5,0.5313 l 0,-1 c 0,-0.2667 -0.25,-0.5313 -0.5,-0.5313 z"
id="path2995"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscssc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<rect width="2" height="5" x="5" y="16" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 11 6 0 5 -6 5 1.281 1.535 l 5.719 -4.766 5.719 4.766 1.281 -1.535 l -6 -5 0 -5 -2 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 12 3 4 4 -8 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect y="16" x="17" height="5" width="2" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
</svg>

After

Width:  |  Height:  |  Size: 519 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<rect width="2" height="5" x="6" y="-11" transform="scale(1,-1)" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 7 3 4 4 -8 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect y="-11" x="16" height="5" width="2" transform="scale(1,-1)" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 17 3 4 4 -8 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 7.414 9.586 -1.414 1.414 l 5 5 0 5 2 0 0 -5 5 -5 l -1.414 -1.414 -4.586 4.586 -4.586 -4.586" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#268bd2;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
</svg>

After

Width:  |  Height:  |  Size: 954 B

View file

@ -0,0 +1,180 @@
<?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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="folder-copy.svg"
inkscape:export-filename="/media/Data/Main/Visuals/Icons/Numix/Desktop/repos/numix-wiki/Gjorgi/Numix-folders/48/New/folder-144.png"
inkscape:export-xdpi="270"
inkscape:export-ydpi="270">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient3760">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3762" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3764" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3760"
id="radialGradient3766"
cx="11"
cy="19"
fx="11"
fy="19"
r="11"
gradientTransform="matrix(1,0,0,0.09090909,0,17.272727)"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="32.002744"
inkscape:cx="11.285136"
inkscape:cy="10.631938"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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(0,-1028.3622)">
<g
id="g3787"
transform="translate(1,-3)">
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3773"
d="m 2,1035.8622 0,7 11,0 0,-3.5 -0.5,-3 -4,0 -0.5,-1 -5.5,0 c -0.25,0 -0.5,0.25 -0.5,0.5 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3775"
width="4"
height="2.4999783"
x="4"
y="1036.3622" />
<path
inkscape:connector-curvature="0"
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 2.5,1035.3622 c -0.25,0 -0.5,0.25 -0.5,0.5 l 0,1 c 0,-0.25 0.25,-0.5 0.5,-0.5 l 5.5,0 0.5,1 4,0 0.5,3 0,-1 -0.5,-3 -4,0 -0.5,-1 -5.5,0 z"
id="path3777" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 13,1036.8956 0,7.4666 -11,0 0,-7 5.5,0 0.5,-1 4.5,0 c 0.25,0 0.5,0.2667 0.5,0.5334 z"
id="path3779"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3781"
d="m 2,1043.3622 0,1 11,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 7.5,1036.6122 -1.25,0.75 0.75,0 z"
id="path3783"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 8,1036.3622 -0.5,1 -5.5,0 0,1 6.25,0 0.5,-1 3.75,0 c 0.25,0 0.5,0.2646 0.5,0.5313 l 0,-1 c 0,-0.2667 -0.25,-0.5313 -0.5,-0.5313 z"
id="path3785"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscssc" />
</g>
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3029"
d="m 10,1039.8622 0,7 11,0 0,-3.5 -0.5,-3 -4,0 -0.5,-1 -5.5,0 c -0.25,0 -0.5,0.25 -0.5,0.5 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3799"
width="4"
height="2.4999783"
x="12"
y="1040.3622" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 10.5,1039.3622 c -0.25,0 -0.5,0.25 -0.5,0.5 l 0,1 c 0,-0.25 0.25,-0.5 0.5,-0.5 l 5.5,0 0.5,1 4,0 0.5,3 0,-1 -0.5,-3 -4,0 -0.5,-1 -5.5,0 z"
id="path3768"
inkscape:connector-curvature="0" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 21,1040.8956 0,7.4666 -11,0 0,-7 5.5,0 0.5,-1 4.5,0 c 0.25,0 0.5,0.2667 0.5,0.5334 z"
id="rect2987"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3794"
d="m 10,1047.3622 0,1 11,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 15.5,1040.6122 -1.25,0.75 0.75,0 z"
id="path3801"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 16,1040.3622 -0.5,1 -5.5,0 0,1 6.25,0 0.5,-1 3.75,0 c 0.25,0 0.5,0.2646 0.5,0.5313 l 0,-1 c 0,-0.2667 -0.25,-0.5313 -0.5,-0.5313 z"
id="path2995"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscssc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -0,0 +1,162 @@
<?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="256"
height="256"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="folder-copy.svg"
inkscape:export-filename="/media/Data/Main/Visuals/Icons/Numix/Desktop/repos/numix-wiki/Gjorgi/Numix-folders/48/New/folder-144.png"
inkscape:export-xdpi="270"
inkscape:export-ydpi="270">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.369953"
inkscape:cx="218.96843"
inkscape:cy="147.79892"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-796.3622)">
<g
transform="matrix(2.0000092,0,0,2.0000003,-1.112e-4,-1052.3625)"
id="layer1-5"
inkscape:label="Layer 1">
<g
transform="matrix(1.9999909,0,0,1.9999909,-39.999763,-1096.3525)"
id="g3010">
<path
style="fill:#ef6c00;fill-opacity:1;stroke:none"
d="m 26,1021.8916 0,21.4118 32,0 0,-10.7059 -1.523809,-9.1765 -11.976191,-0.059 -1.5,-3 -15.47619,0 C 26.761905,1020.3622 26,1021.1269 26,1021.8916 z"
id="path2996"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<rect
y="1024.3622"
x="28.5"
height="5.9411421"
width="15.785714"
id="rect2998"
style="fill:#fffdf0;fill-opacity:1;stroke:none" />
<path
sodipodi:nodetypes="sscsccccccccs"
inkscape:connector-curvature="0"
id="path3000"
d="m 27.53125,1020.3622 c -0.761904,0 -1.53125,0.7665 -1.53125,1.5313 l 0,1 c 0,-0.7648 0.769346,-1.5313 1.53125,-1.5313 l 14.96875,0 1.5,3 12.46875,0.062 1.53125,9.1719 0,-1 -1.53125,-9.1719 -11.96875,-0.062 -1.5,-3 z"
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path3002"
d="m 58,1024.9505 0,21.4117 -32,0 0,-20 15,0 1.5,-3 13.976191,0.059 c 0.761904,0 1.523809,0.7648 1.523809,1.5295 z"
style="fill:#ffa726;fill-opacity:1;stroke:none" />
<path
inkscape:connector-curvature="0"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
d="m 26,1045.3622 0,1 32,0 0,-1 z"
id="path3004"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
id="path3006"
d="m 42.761905,1024.1858 -3.809524,2.2941 2.285714,0 z"
style="fill:none;stroke:none" />
<path
sodipodi:nodetypes="ccccccccscc"
inkscape:connector-curvature="0"
id="path3008"
d="m 42.5,1023.3622 -1.5,3 -15,0 0,1 15.5,0 1.5,-3 13.46875,0.062 c 0.761904,0 1.53125,0.7666 1.53125,1.5313 l 0,-1 c 0,-0.7647 -0.769346,-1.5313 -1.53125,-1.5313 z"
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none" />
</g>
<path
style="fill:#ef6c00;fill-opacity:1;stroke:none"
d="m 51.999815,983.4212 0,42.8234 63.999705,0 0,-21.4117 -3.0476,-18.3529 -23.952273,-0.118 -2.999987,-6 -30.952239,0 c -1.523803,4e-4 -3.047606,1.5298 -3.047606,3.0592 z"
id="path3029"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<rect
y="988.36243"
x="56.999794"
height="11.88223"
width="31.571285"
id="rect3799"
style="fill:#fffdf0;fill-opacity:1;stroke:none" />
<path
sodipodi:nodetypes="sscsccccccccs"
inkscape:connector-curvature="0"
id="path3790"
d="m 55.062301,980.3624 c -1.523801,0 -3.062486,1.533 -3.062486,3.0626 l 0,2 c 0,-1.5296 1.538685,-3.0626 3.062486,-3.0626 l 29.937364,0 2.999987,6 24.937388,0.124 3.06248,18.3437 0,-2 -3.06248,-18.3437 -23.937393,-0.124 -2.999987,-6 z"
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="rect2987"
d="m 115.99952,989.539 0,42.8232 -63.999705,0 0,-39.9998 29.999863,0 2.999987,-6 27.952255,0.118 c 1.5238,0 3.0476,1.5296 3.0476,3.059 z"
style="fill:#ffa726;fill-opacity:1;stroke:none" />
<path
inkscape:connector-curvature="0"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
d="m 51.999815,1030.3622 0,2 63.999705,0 0,-2 z"
id="path3794"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
id="path3801"
d="m 85.523472,988.0096 -7.619013,4.5882 4.571407,0 z"
style="fill:none;stroke:none" />
<path
sodipodi:nodetypes="ccccccccscc"
inkscape:connector-curvature="0"
id="path3015"
d="m 84.999665,986.3624 -2.999987,6 -29.999863,0 0,2 30.999859,0 2.999986,-6 26.93738,0.124 c 1.5238,0 3.06248,1.5332 3.06248,3.0626 l 0,-2 c 0,-1.5294 -1.53868,-3.0626 -3.06248,-3.0626 z"
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<path d="m 14 6 0 9 -10 8 2.5 3.125 l 9.5 -7.602 9.5 7.602 2.5 -3.125 -10 -8 0 -9 -4 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 16 2 6 6 -12 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="4" height="7" x="24" y="23" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="4" height="7" x="4" y="23" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
</svg>

After

Width:  |  Height:  |  Size: 510 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<path d="m 24 2 6 6 -12 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="4" height="8" x="22" y="6" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="4" height="8" x="6" y="6" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 8 2 6 6 -12 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 8.828 11.172 -2.828 2.828 l 8 8 l 0 8 l 4 0 0 -8 8 -8 l -2.828 -2.828 -7.172 7.172" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#268bd2;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
</svg>

After

Width:  |  Height:  |  Size: 891 B

View file

@ -0,0 +1,167 @@
<?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="32"
height="32"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="folder-copy.svg"
inkscape:export-filename="/media/Data/Main/Visuals/Icons/Numix/Desktop/repos/numix-wiki/Gjorgi/Numix-folders/48/New/folder-144.png"
inkscape:export-xdpi="270"
inkscape:export-ydpi="270">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16.439287"
inkscape:cx="18.570443"
inkscape:cy="21.318551"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1020.3622)">
<g
inkscape:label="Layer 1"
id="g3012"
transform="translate(2,-14)">
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3014"
d="m 0,1037.3622 0,13 16,0 0,-7 -1,-5 -5,0 -1,-2 -8,0 c -0.5,0 -1,0.5 -1,1 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="M 1,0 C 0.5,0 0,0.5 0,1 L 0,2 C 0,1.5 0.5,1 1,1 L 8,1 9,3 15,3 16,8 16,7 15,2 10,2 9,0 z"
transform="translate(0,1036.3622)"
id="path3016"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsccccccccs" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3018"
width="10"
height="2.9999826"
x="2"
y="1039.3622" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 16,1039.3622 0,13 -16,0 0,-12 7,0 1,-2 7,0 c 0.5,0 1,0.5 1,1 z"
id="path3020"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3022"
d="m 0,1051.3622 0,1 16,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 11,1037.8622 -2.5,1.5 1.5,0 z"
id="path3024"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="M 8,2 7,4 0,4 0,5 8,5 9,3 15,3 c 0.5,0 1,0.5 1,1 L 16,3 C 16,2.5 15.5,2 15,2 z"
transform="translate(0,1036.3622)"
id="path3026"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscssc" />
</g>
<g
transform="translate(14,-2)"
id="layer1-6"
inkscape:label="Layer 1">
<path
style="fill:#ef6c00;fill-opacity:1;stroke:none"
d="m 0,1037.3622 0,13 16,0 0,-7 -1,-5 -5,0 -1,-2 -8,0 c -0.5,0 -1,0.5 -1,1 z"
id="path3029"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<path
sodipodi:nodetypes="sscsccccccccs"
inkscape:connector-curvature="0"
id="path3789"
transform="translate(0,1036.3622)"
d="M 1,0 C 0.5,0 0,0.5 0,1 L 0,2 C 0,1.5 0.5,1 1,1 L 8,1 9,3 15,3 16,8 16,7 15,2 10,2 9,0 z"
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none" />
<rect
y="1039.3622"
x="2"
height="2.9999826"
width="10"
id="rect3799"
style="fill:#fffdf0;fill-opacity:1;stroke:none" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="rect2987"
d="m 16,1039.3622 0,13 -16,0 0,-12 7,0 1,-2 7,0 c 0.5,0 1,0.5 1,1 z"
style="fill:#ffa726;fill-opacity:1;stroke:none" />
<path
inkscape:connector-curvature="0"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
d="m 0,1051.3622 0,1 16,0 0,-1 z"
id="path3794"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
id="path3801"
d="m 11,1037.8622 -2.5,1.5 1.5,0 z"
style="fill:none;stroke:none" />
<path
sodipodi:nodetypes="ccccccscssc"
inkscape:connector-curvature="0"
id="path3784"
transform="translate(0,1036.3622)"
d="M 8,2 7,4 0,4 0,5 8,5 9,3 15,3 c 0.5,0 1,0.5 1,1 L 16,3 C 16,2.5 15.5,2 15,2 z"
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
<rect width="4" height="9" x="10" y="33" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 22 13 0 10 -12 10 2.563 3.07 11.438 -9.531 11.438 9.531 2.563 -3.07 -12 -10 0 -10 l -4 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 24 6 8 8 -16 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect y="33" x="34" height="9" width="4" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
</svg>

After

Width:  |  Height:  |  Size: 526 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
<rect width="4" height="10" x="12" y="-22" transform="scale(1,-1)" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 14 6 8 8 -16 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect y="-22" x="32" height="10" width="4" transform="scale(1,-1)" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 34 6 8 8 -16 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 14.828 19.17 -2.828 2.828 10 10 0 10 4 0 0 -10 10 -10 -2.828 -2.828 -9.172 9.172 -9.172 -9.172" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#268bd2;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
</svg>

After

Width:  |  Height:  |  Size: 963 B

View file

@ -0,0 +1,352 @@
<?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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="folder-copy.svg">
<defs
id="defs4">
<linearGradient
id="linearGradient3855">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3857" />
<stop
style="stop-color:#000000;stop-opacity:0.29411766;"
offset="1"
id="stop3859" />
</linearGradient>
<linearGradient
id="linearGradient3833">
<stop
id="stop3835"
offset="0"
style="stop-color:#fdfeff;stop-opacity:1;" />
<stop
id="stop3837"
offset="1"
style="stop-color:#dfe4e4;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3823">
<stop
style="stop-color:#49b7ef;stop-opacity:1;"
offset="0"
id="stop3825" />
<stop
style="stop-color:#1d8de2;stop-opacity:1;"
offset="1"
id="stop3827" />
</linearGradient>
<linearGradient
id="linearGradient3956">
<stop
style="stop-color:#f8f4e1;stop-opacity:1;"
offset="0"
id="stop3958" />
<stop
style="stop-color:#eae5c8;stop-opacity:1;"
offset="1"
id="stop3960" />
</linearGradient>
<linearGradient
id="linearGradient3915">
<stop
style="stop-color:#f8f4e1;stop-opacity:1;"
offset="0"
id="stop3917" />
<stop
style="stop-color:#ad9e57;stop-opacity:1;"
offset="1"
id="stop3919" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3861">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3863" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3865" />
</linearGradient>
<linearGradient
id="linearGradient3844">
<stop
style="stop-color:#000000;stop-opacity:0.39215687;"
offset="0"
id="stop3846" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3848" />
</linearGradient>
<linearGradient
id="linearGradient3810">
<stop
style="stop-color:#f2c66f;stop-opacity:1;"
offset="0"
id="stop3812" />
<stop
style="stop-color:#fbd68f;stop-opacity:1;"
offset="1"
id="stop3814" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3810"
id="linearGradient3816"
x1="24"
y1="1046.3622"
x2="24"
y2="1014.3622"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3844"
id="radialGradient3850"
cx="24.075672"
cy="41.38316"
fx="24.075672"
fy="41.38316"
r="21.075672"
gradientTransform="matrix(1,0,0,0.11307633,0,36.703704)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3810"
id="linearGradient3856"
gradientUnits="userSpaceOnUse"
x1="24"
y1="1046.3622"
x2="24"
y2="1014.3622"
gradientTransform="translate(0,-3)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3810"
id="linearGradient3858"
gradientUnits="userSpaceOnUse"
x1="24"
y1="1046.3622"
x2="24"
y2="1014.3622"
gradientTransform="translate(0,-1004.3622)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3861"
id="linearGradient3867"
x1="1.9952808"
y1="28.5625"
x2="46.004719"
y2="28.5625"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3915"
id="linearGradient3921"
x1="35"
y1="8"
x2="38"
y2="5"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3915"
id="linearGradient3933"
gradientUnits="userSpaceOnUse"
x1="35"
y1="8"
x2="38"
y2="5"
gradientTransform="matrix(1.0436562,0,0,1.2222222,26.301501,1003.2511)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3915"
id="linearGradient3954"
x1="35"
y1="11"
x2="44"
y2="5"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(22,1004.3622)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3823"
id="linearGradient3829"
x1="21"
y1="14"
x2="20"
y2="24"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3833"
id="linearGradient3839"
gradientUnits="userSpaceOnUse"
x1="21"
y1="14"
x2="20"
y2="26" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3855"
id="linearGradient3862"
x1="22"
y1="15"
x2="20"
y2="30"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16.454264"
inkscape:cx="28.316698"
inkscape:cy="22.321326"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2990"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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="Body"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1004.3622)">
<g
id="g3825"
transform="translate(-15,-13)">
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3811"
d="m 21,1027.3622 0,14 21,0 0,-7 -1,-6 -8,0 -1,-2 -10,0 c -0.5,0 -1,0.5 -1,1 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 22,22 c -0.5,0 -1,0.5 -1,1 l 0,1 c 0,-0.5 0.5,-1 1,-1 l 9,0 1,2 9,0 1,6 0,-1 -1,-6 -8,0 -1,-2 z"
transform="translate(0,1004.3622)"
id="path3813"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsccccccccs" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3815"
width="10"
height="3.9999914"
x="23"
y="1029.3622" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 42,1029.3622 0,14 -21,0 0,-13 10,0 1,-2 9,0 c 0.5,0 1,0.5 1,1 z"
id="path3817"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3819"
d="m 21,1042.3622 0,1 21,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 32,1028.8622 -2.5,1.5 1.5,0 z"
id="path3821"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 32,24 -1,2 -10,0 0,1 11,0 1,-2 8,0 c 0.5,0 1,0.5 1,1 l 0,-1 c 0,-0.5 -0.5,-1 -1,-1 z"
transform="translate(0,1004.3622)"
id="path3823"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscssc" />
</g>
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3029"
d="m 21,1027.3622 0,14 21,0 0,-7 -1,-6 -8,0 -1,-2 -10,0 c -0.5,0 -1,0.5 -1,1 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<path
style="fill:#000000;fill-opacity:1;stroke:none;opacity:0.03"
d="m 22,22 c -0.5,0 -1,0.5 -1,1 l 0,1 c 0,-0.5 0.5,-1 1,-1 l 9,0 1,2 9,0 1,6 0,-1 -1,-6 -8,0 -1,-2 z"
transform="translate(0,1004.3622)"
id="path3806"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsccccccccs" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3799"
width="10"
height="3.9999914"
x="23"
y="1029.3622" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 42,1029.3622 0,14 -21,0 0,-13 10,0 1,-2 9,0 c 0.5,0 1,0.5 1,1 z"
id="rect2987"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3794"
d="m 21,1042.3622 0,1 21,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 32,1028.8622 -2.5,1.5 1.5,0 z"
id="path3801"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 32,24 -1,2 -10,0 0,1 11,0 1,-2 8,0 c 0.5,0 1,0.5 1,1 l 0,-1 c 0,-0.5 -0.5,-1 -1,-1 z"
transform="translate(0,1004.3622)"
id="path3033"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscssc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path d="m 28 12 0 18 -20 16 5 6.25 19 -15.203 19 15.203 5 -6.25 -20 -16 0 -18 -8 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 32 4 12 12 -24 0 z" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="8" height="14" x="48" y="46" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="8" height="14" x="8" y="46" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
</svg>

After

Width:  |  Height:  |  Size: 513 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path d="m 48 4 12 12 -24 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="8" height="16" x="44" y="12" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<rect width="8" height="16" x="12" y="12" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 16 4 12 12 -24 0" style="fill:#268bd2;opacity:1;fill-opacity:1;stroke:none"/>
<path d="m 17.656 22.344 -5.656 5.656 l 16 16 l 0 16 l 8 0 0 -16 16 -16 l -5.656 -5.656 -14.344 14.344" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#268bd2;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
</svg>

After

Width:  |  Height:  |  Size: 910 B

View file

@ -0,0 +1,193 @@
<?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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64"
height="64"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="folder.svg"
inkscape:export-filename="/media/Data/Main/Visuals/Icons/Numix/Desktop/repos/numix-wiki/Gjorgi/Numix-folders/48/New/folder-144.png"
inkscape:export-xdpi="270"
inkscape:export-ydpi="270">
<defs
id="defs4">
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3958"
id="radialGradient3964"
cx="32.5"
cy="56.5"
fx="32.5"
fy="56.5"
r="33.5"
gradientTransform="matrix(1,0,0,0.10447761,0,50.597015)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient3958">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3960" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3962" />
</linearGradient>
<radialGradient
r="33.5"
fy="56.5"
fx="32.5"
cy="56.5"
cx="32.5"
gradientTransform="matrix(1,0,0,0.10447761,0,50.597015)"
gradientUnits="userSpaceOnUse"
id="radialGradient3981"
xlink:href="#linearGradient3958"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.9949407"
inkscape:cx="23.819018"
inkscape:cy="25.09794"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-988.3622)">
<g
id="g3010"
transform="translate(-20,-22)">
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path2996"
d="m 26,1021.8916 0,21.4118 32,0 0,-10.7059 -1.523809,-9.1765 -11.976191,-0.059 -1.5,-3 -15.47619,0 C 26.761905,1020.3622 26,1021.1269 26,1021.8916 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect2998"
width="15.785714"
height="5.9411421"
x="28.5"
y="1024.3622" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 27.53125,1020.3622 c -0.761904,0 -1.53125,0.7665 -1.53125,1.5313 l 0,1 c 0,-0.7648 0.769346,-1.5313 1.53125,-1.5313 l 14.96875,0 1.5,3 12.46875,0.062 1.53125,9.1719 0,-1 -1.53125,-9.1719 -11.96875,-0.062 -1.5,-3 z"
id="path3000"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsccccccccs" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 58,1024.9505 0,21.4117 -32,0 0,-20 15,0 1.5,-3 13.976191,0.059 c 0.761904,0 1.523809,0.7648 1.523809,1.5295 z"
id="path3002"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3004"
d="m 26,1045.3622 0,1 32,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 42.761905,1024.1858 -3.809524,2.2941 2.285714,0 z"
id="path3006"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 42.5,1023.3622 -1.5,3 -15,0 0,1 15.5,0 1.5,-3 13.46875,0.062 c 0.761904,0 1.53125,0.7666 1.53125,1.5313 l 0,-1 c 0,-0.7647 -0.769346,-1.5313 -1.53125,-1.5313 z"
id="path3008"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccscc" />
</g>
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3029"
d="m 26,1017.8916 0,21.4118 32,0 0,-10.7059 -1.523809,-9.1765 -11.976191,-0.059 -1.5,-3 -15.47619,0 C 26.761905,1016.3622 26,1017.1269 26,1017.8916 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3799"
width="15.785714"
height="5.9411421"
x="28.5"
y="1020.3622" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 27.53125,1016.3622 c -0.761904,0 -1.53125,0.7665 -1.53125,1.5313 l 0,1 c 0,-0.7648 0.769346,-1.5313 1.53125,-1.5313 l 14.96875,0 1.5,3 12.46875,0.062 1.53125,9.1719 0,-1 -1.53125,-9.1719 -11.96875,-0.062 -1.5,-3 z"
id="path3790"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsccccccccs" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 58,1020.9505 0,21.4117 -32,0 0,-20 15,0 1.5,-3 13.976191,0.059 c 0.761904,0 1.523809,0.7648 1.523809,1.5295 z"
id="rect2987"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3794"
d="m 26,1041.3622 0,1 32,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 42.761905,1020.1858 -3.809524,2.2941 2.285714,0 z"
id="path3801"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 42.5,1019.3622 -1.5,3 -15,0 0,1 15.5,0 1.5,-3 13.46875,0.062 c 0.761904,0 1.53125,0.7666 1.53125,1.5313 l 0,-1 c 0,-0.7647 -0.769346,-1.5313 -1.53125,-1.5313 z"
id="path3015"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccscc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.9 KiB

View file

@ -0,0 +1,350 @@
<?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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="96"
height="96"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="folder-copy.svg">
<defs
id="defs4">
<linearGradient
id="linearGradient3855">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3857" />
<stop
style="stop-color:#000000;stop-opacity:0.29411766;"
offset="1"
id="stop3859" />
</linearGradient>
<linearGradient
id="linearGradient3833">
<stop
id="stop3835"
offset="0"
style="stop-color:#fdfeff;stop-opacity:1;" />
<stop
id="stop3837"
offset="1"
style="stop-color:#dfe4e4;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3823">
<stop
style="stop-color:#49b7ef;stop-opacity:1;"
offset="0"
id="stop3825" />
<stop
style="stop-color:#1d8de2;stop-opacity:1;"
offset="1"
id="stop3827" />
</linearGradient>
<linearGradient
id="linearGradient3956">
<stop
style="stop-color:#f8f4e1;stop-opacity:1;"
offset="0"
id="stop3958" />
<stop
style="stop-color:#eae5c8;stop-opacity:1;"
offset="1"
id="stop3960" />
</linearGradient>
<linearGradient
id="linearGradient3915">
<stop
style="stop-color:#f8f4e1;stop-opacity:1;"
offset="0"
id="stop3917" />
<stop
style="stop-color:#ad9e57;stop-opacity:1;"
offset="1"
id="stop3919" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3861">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3863" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3865" />
</linearGradient>
<linearGradient
id="linearGradient3844">
<stop
style="stop-color:#000000;stop-opacity:0.39215687;"
offset="0"
id="stop3846" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3848" />
</linearGradient>
<linearGradient
id="linearGradient3810">
<stop
style="stop-color:#f2c66f;stop-opacity:1;"
offset="0"
id="stop3812" />
<stop
style="stop-color:#fbd68f;stop-opacity:1;"
offset="1"
id="stop3814" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3810"
id="linearGradient3816"
x1="24"
y1="1046.3622"
x2="24"
y2="1014.3622"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3844"
id="radialGradient3850"
cx="24.075672"
cy="41.38316"
fx="24.075672"
fy="41.38316"
r="21.075672"
gradientTransform="matrix(1,0,0,0.11307633,0,36.703704)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3810"
id="linearGradient3856"
gradientUnits="userSpaceOnUse"
x1="24"
y1="1046.3622"
x2="24"
y2="1014.3622"
gradientTransform="translate(0,-3)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3810"
id="linearGradient3858"
gradientUnits="userSpaceOnUse"
x1="24"
y1="1046.3622"
x2="24"
y2="1014.3622"
gradientTransform="translate(0,-1004.3622)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3861"
id="linearGradient3867"
x1="1.9952807"
y1="28.5625"
x2="46.004719"
y2="28.5625"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3915"
id="linearGradient3921"
x1="35"
y1="8"
x2="38"
y2="5"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3915"
id="linearGradient3933"
gradientUnits="userSpaceOnUse"
x1="35"
y1="8"
x2="38"
y2="5"
gradientTransform="matrix(1.0436562,0,0,1.2222222,26.301501,1003.2511)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3915"
id="linearGradient3954"
x1="35"
y1="11"
x2="44"
y2="5"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(22,1004.3622)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3823"
id="linearGradient3829"
x1="21"
y1="14"
x2="20"
y2="24"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3833"
id="linearGradient3839"
gradientUnits="userSpaceOnUse"
x1="21"
y1="14"
x2="20"
y2="26" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3855"
id="linearGradient3862"
x1="22"
y1="15"
x2="20"
y2="30"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16.454264"
inkscape:cx="28.559796"
inkscape:cy="65.957432"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1052"
inkscape:window-x="0"
inkscape:window-y="28"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2990"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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="Body"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-956.3622)">
<g
id="g3825"
transform="matrix(2,0,0,2,-30,-1078.3622)">
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3811"
d="m 21,1027.3622 0,14 21,0 0,-7 -1,-6 -8,0 -1,-2 -10,0 c -0.5,0 -1,0.5 -1,1 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 22,22 c -0.5,0 -1,0.5 -1,1 l 0,1 c 0,-0.5 0.5,-1 1,-1 l 9,0 1,2 9,0 1,6 0,-1 -1,-6 -8,0 -1,-2 z"
transform="translate(0,1004.3622)"
id="path3813"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsccccccccs" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3815"
width="10"
height="3.9999914"
x="23"
y="1029.3622" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 42,1029.3622 0,14 -21,0 0,-13 10,0 1,-2 9,0 c 0.5,0 1,0.5 1,1 z"
id="path3817"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3819"
d="m 21,1042.3622 0,1 21,0 0,-1 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 32,1028.8622 -2.5,1.5 1.5,0 z"
id="path3821"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 32,24 -1,2 -10,0 0,1 11,0 1,-2 8,0 c 0.5,0 1,0.5 1,1 l 0,-1 c 0,-0.5 -0.5,-1 -1,-1 z"
transform="translate(0,1004.3622)"
id="path3823"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscssc" />
</g>
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path3029"
d="m 42,1002.3622 0,28 42,0 0,-14 -2,-12 -16,0 -2,-4 -20,0 c -1,0 -2,1 -2,2 z"
style="fill:#ef6c00;fill-opacity:1;stroke:none" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 44,1000.3622 c -1,0 -2,1 -2,2 l 0,2 c 0,-1 1,-2 2,-2 l 18,0 2,4 18,0 2,12 0,-2 -2,-12 -16,0 -2,-4 z"
id="path3806"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sscsccccccccs" />
<rect
style="fill:#fffdf0;fill-opacity:1;stroke:none"
id="rect3799"
width="20"
height="7.9999828"
x="46"
y="1006.3622" />
<path
style="fill:#ffa726;fill-opacity:1;stroke:none"
d="m 84,1006.3622 0,28 -42,0 0,-26 20,0 2,-4 18,0 c 1,0 2,1 2,2 z"
id="rect2987"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
sodipodi:nodetypes="ccccc"
id="path3794"
d="m 42,1032.3622 0,2 42,0 0,-2 z"
style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:none"
d="m 64,1005.3622 -5,3 3,0 z"
id="path3801"
inkscape:connector-curvature="0" />
<path
style="opacity:0.02999998;fill:#000000;fill-opacity:1;stroke:none"
d="m 64,1004.3622 -2,4 -20,0 0,2 22,0 2,-4 16,0 c 1,0 2,1 2,2 l 0,-2 c 0,-1 -1,-2 -2,-2 z"
id="path3033"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccscssc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -24,8 +24,11 @@ def wordCount(text):
def toInt(text): def toInt(text):
if text: if text:
try:
return int(text) return int(text)
else: except ValueError:
pass
return 0 return 0
@ -355,3 +358,6 @@ def customIcons():
] ]
return sorted(r) return sorted(r)
def statusMessage(message, duration=5000):
mainWindow().statusBar().showMessage(message, duration)

View file

@ -53,7 +53,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self): def __init__(self):
QMainWindow.__init__(self) QMainWindow.__init__(self)
self.setupUi(self) self.setupUi(self)
# Var
self.currentProject = None self.currentProject = None
self._lastFocus = None
self.readSettings() self.readSettings()
@ -101,6 +104,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.actImport, self.actCompile, self.actSettings]: self.actImport, self.actCompile, self.actSettings]:
i.setEnabled(False) i.setEnabled(False)
# Main Menu:: File
self.actOpen.triggered.connect(self.welcome.openFile) self.actOpen.triggered.connect(self.welcome.openFile)
self.actSave.triggered.connect(self.saveDatas) self.actSave.triggered.connect(self.saveDatas)
self.actSaveAs.triggered.connect(self.welcome.saveAsFile) self.actSaveAs.triggered.connect(self.welcome.saveAsFile)
@ -111,10 +115,21 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.actSettings.triggered.connect(self.settingsWindow) self.actSettings.triggered.connect(self.settingsWindow)
self.actCloseProject.triggered.connect(self.closeProject) self.actCloseProject.triggered.connect(self.closeProject)
self.actQuit.triggered.connect(self.close) self.actQuit.triggered.connect(self.close)
self.actToolFrequency.triggered.connect(self.frequencyAnalyzer)
self.actAbout.triggered.connect(self.about)
self.generateViewMenu()
# Main menu:: Documents
self.actCopy.triggered.connect(self.documentsCopy)
self.actCut.triggered.connect(self.documentsCut)
self.actPaste.triggered.connect(self.documentsPaste)
self.actDuplicate.triggered.connect(self.documentsDuplicate)
self.actDelete.triggered.connect(self.documentsDelete)
self.actMoveUp.triggered.connect(self.documentsMoveUp)
self.actMoveDown.triggered.connect(self.documentsMoveDown)
self.actSplitDialog.triggered.connect(self.documentsSplitDialog)
self.actSplitCursor.triggered.connect(self.documentsSplitCursor)
self.actMerge.triggered.connect(self.documentsMerge)
# Main Menu:: view
self.generateViewMenu()
self.actModeGroup = QActionGroup(self) self.actModeGroup = QActionGroup(self)
self.actModeSimple.setActionGroup(self.actModeGroup) self.actModeSimple.setActionGroup(self.actModeGroup)
self.actModeFiction.setActionGroup(self.actModeGroup) self.actModeFiction.setActionGroup(self.actModeGroup)
@ -123,6 +138,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.actModeFiction.triggered.connect(self.setViewModeFiction) self.actModeFiction.triggered.connect(self.setViewModeFiction)
self.actModeSnowflake.setEnabled(False) self.actModeSnowflake.setEnabled(False)
# Main Menu:: Tool
self.actToolFrequency.triggered.connect(self.frequencyAnalyzer)
self.actAbout.triggered.connect(self.about)
self.makeUIConnections() self.makeUIConnections()
# self.loadProject(os.path.join(appPath(), "test_project.zip")) # self.loadProject(os.path.join(appPath(), "test_project.zip"))
@ -182,6 +201,33 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.toolbar.setVisible(True) self.toolbar.setVisible(True)
self.stack.setCurrentIndex(1) self.stack.setCurrentIndex(1)
###############################################################################
# GENERAL / UI STUFF
###############################################################################
def tabMainChanged(self):
"Called when main tab changes."
self.menuDocuments.menuAction().setVisible(self.tabMain.currentIndex() == self.TabRedac)
def focusChanged(self, old, new):
"""
We get notified by qApp when focus changes, from old to new widget.
"""
# Determine which view had focus last, to send the keyboard shortcuts
# to the right place
targets = [
self.treeRedacOutline,
self.mainEditor
]
while new is not None:
if new in targets:
self._lastFocus = new
break
new = new.parent()
############################################################################### ###############################################################################
# SUMMARY # SUMMARY
############################################################################### ###############################################################################
@ -386,6 +432,53 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def openIndexes(self, indexes, newTab=True): def openIndexes(self, indexes, newTab=True):
self.mainEditor.openIndexes(indexes, newTab=True) self.mainEditor.openIndexes(indexes, newTab=True)
# Menu Documents #############################################################
# Functions called by the menu Documents
# self._lastFocus is the last editor that had focus (either treeView or
# mainEditor). So we just pass along the signal.
def documentsCopy(self):
"Copy selected item(s)."
if self._lastFocus: self._lastFocus.copy()
def documentsCut(self):
"Cut selected item(s)."
if self._lastFocus: self._lastFocus.cut()
def documentsPaste(self):
"Paste clipboard item(s) into selected item."
if self._lastFocus: self._lastFocus.paste()
def documentsDuplicate(self):
"Duplicate selected item(s)."
if self._lastFocus: self._lastFocus.duplicate()
def documentsDelete(self):
"Delete selected item(s)."
if self._lastFocus: self._lastFocus.delete()
def documentsMoveUp(self):
"Move up selected item(s)."
if self._lastFocus: self._lastFocus.moveUp()
def documentsMoveDown(self):
"Move Down selected item(s)."
if self._lastFocus: self._lastFocus.moveDown()
def documentsSplitDialog(self):
"Opens a dialog to split selected items."
if self._lastFocus: self._lastFocus.splitDialog()
# current items or selected items?
pass
# use outlineBasics, to do that on all selected items.
# use editorWidget to do that on selected text.
def documentsSplitCursor(self):
"""
Split current item (open in text editor) at cursor position. If there is
a text selection, that selection becomes the title of the new scene.
"""
if self._lastFocus and self._lastFocus == self.mainEditor:
self.mainEditor.splitCursor()
def documentsMerge(self):
"Merges selected item(s)."
if self._lastFocus: self._lastFocus.merge()
############################################################################### ###############################################################################
# LOAD AND SAVE # LOAD AND SAVE
############################################################################### ###############################################################################
@ -667,6 +760,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.btnOutlineRemoveItem.clicked.connect(self.outlineRemoveItemsOutline, AUC) self.btnOutlineRemoveItem.clicked.connect(self.outlineRemoveItemsOutline, AUC)
self.tabMain.currentChanged.connect(self.toolbar.setCurrentGroup) self.tabMain.currentChanged.connect(self.toolbar.setCurrentGroup)
self.tabMain.currentChanged.connect(self.tabMainChanged)
qApp.focusChanged.connect(self.focusChanged)
def makeConnections(self): def makeConnections(self):
@ -988,16 +1084,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# Custom "tab" bar on the left # Custom "tab" bar on the left
self.lstTabs.setIconSize(QSize(48, 48)) self.lstTabs.setIconSize(QSize(48, 48))
for i in range(self.tabMain.count()): for i in range(self.tabMain.count()):
#icons = ["general-128px.png",
#"summary-128px.png",
#"characters-128px.png",
#"plot-128px.png",
#"world-128px.png",
#"outline-128px.png",
#"editor-128px.png",
#""
#]
#self.tabMain.setTabIcon(i, QIcon(appPath("icons/Custom/Tabs/{}".format(icons[i]))))
icons = [QIcon.fromTheme("stock_view-details"), #info icons = [QIcon.fromTheme("stock_view-details"), #info
QIcon.fromTheme("application-text-template"), #applications-publishing QIcon.fromTheme("application-text-template"), #applications-publishing

View file

@ -273,6 +273,19 @@ class outlineModel(QAbstractItemModel):
if items is None: if items is None:
return False return False
# We check if parent is not a child of one of the items
if self.isParentAChildOfItems(parent, items):
return False
return True
def isParentAChildOfItems(self, parent, items):
"""
Takes a parent index, and a list of outlineItems items. Check whether
parent is in a child of one of the items.
Return True in that case, False if not.
"""
# Get the parent item # Get the parent item
if not parent.isValid(): if not parent.isValid():
parentItem = self.rootItem parentItem = self.rootItem
@ -286,10 +299,10 @@ class outlineModel(QAbstractItemModel):
# Is item in the path? It would mean that it tries to get dropped # Is item in the path? It would mean that it tries to get dropped
# as a children of himself. # as a children of himself.
if item.ID() in path: if item.ID() in path:
return False
return True return True
return False
def decodeMimeData(self, data): def decodeMimeData(self, data):
if not data.hasFormat("application/xml"): if not data.hasFormat("application/xml"):
return None return None
@ -345,6 +358,7 @@ class outlineModel(QAbstractItemModel):
if action == Qt.IgnoreAction: if action == Qt.IgnoreAction:
return True # What is that? return True # What is that?
if action == Qt.MoveAction:
# Strangely, on some cases, we get a call to dropMimeData though # Strangely, on some cases, we get a call to dropMimeData though
# self.canDropMimeData returned False. # self.canDropMimeData returned False.
# See https://github.com/olivierkes/manuskript/issues/169 to reproduce. # See https://github.com/olivierkes/manuskript/issues/169 to reproduce.
@ -366,14 +380,41 @@ class outlineModel(QAbstractItemModel):
else: else:
beginRow = self.rowCount() + 1 beginRow = self.rowCount() + 1
if action == Qt.CopyAction:
# Behavior if parent is a text item
# For example, we select a text and do: CTRL+C CTRL+V
if parent.isValid() and not parent.internalPointer().isFolder():
# We insert copy in parent folder, just below
beginRow = parent.row() + 1
parent = parent.parent()
if parent.isValid() and parent.internalPointer().isFolder():
while self.isParentAChildOfItems(parent, items):
# We are copying a folder on itself. Assume duplicates.
# Copy not in, but next to
beginRow = parent.row() + 1
parent = parent.parent()
if not items: if not items:
return False return False
r = self.insertItems(items, beginRow, parent) # In case of copy actions, items might be duplicates, so we need new IDs.
# But they might not be, if we cut, then paste. Paste is a Copy Action.
# The first paste would not need new IDs. But subsequent ones will.
if action == Qt.CopyAction: if action == Qt.CopyAction:
IDs = self.rootItem.listAllIDs()
for item in items: for item in items:
item.getUniqueID() if item.ID() in IDs:
# Recursively remove ID. So will get a new one when inserted.
def stripID(item):
item.setData(Outline.ID.value, None)
for c in item.children():
stripID(c)
stripID(item)
r = self.insertItems(items, beginRow, parent)
return r return r
@ -623,6 +664,7 @@ class outlineItem():
if column == Outline.text.value: if column == Outline.text.value:
wc = wordCount(data) wc = wordCount(data)
self.setData(Outline.wordCount.value, wc) self.setData(Outline.wordCount.value, wc)
self.emitDataChanged(cols=[Outline.text.value]) # new in 0.5.0
if column == Outline.compile.value: if column == Outline.compile.value:
self.emitDataChanged(cols=[Outline.title.value, Outline.compile.value], recursive=True) self.emitDataChanged(cols=[Outline.title.value, Outline.compile.value], recursive=True)
@ -865,9 +907,56 @@ class outlineItem():
item.setData(Outline.text.value, subTxt) item.setData(Outline.text.value, subTxt)
# Inserting item # Inserting item
self.parent().insertChild(self.row()+k, item) #self.parent().insertChild(self.row()+k, item)
self._model.insertItem(item, self.row()+k, self.parent().index())
k += 1 k += 1
def splitAt(self, position, length=0):
"""
Splits note at position p.
If length is bigger than 0, it describes the length of the title, made
from the character following position.
"""
txt = self.text()
# Stores the new text
self.setData(Outline.text.value, txt[:position])
# Create a copy
item = self.copy()
# Update title
if length > 0:
title = txt[position:position+length].replace("\n", "")
else:
title = "{}_{}".format(item.title(), 2)
item.setData(Outline.title.value, title)
# Set text
item.setData(Outline.text.value, txt[position+length:])
# Inserting item using the model to signal views
self._model.insertItem(item, self.row()+1, self.parent().index())
def mergeWith(self, items, sep="\n\n"):
"""
Merges item with several other items. Merge is basic, it merges only
the text.
@param items: list of `outlineItem`s.
@param sep: a text added between each item's text.
"""
# Merges the texts
text = [self.text()]
text.extend([i.text() for i in items])
self.setData(Outline.text.value, sep.join(text))
# Removes other items
self._model.removeIndexes([i.index() for i in items])
############################################################################### ###############################################################################
# XML # XML
############################################################################### ###############################################################################
@ -934,9 +1023,13 @@ class outlineItem():
# IDS # IDS
############################################################################### ###############################################################################
def getUniqueID(self): def getUniqueID(self, recursive=False):
self.setData(Outline.ID.value, self._model.rootItem.findUniqueID()) self.setData(Outline.ID.value, self._model.rootItem.findUniqueID())
if recursive:
for c in self.children():
c.getUniqueID(recursive)
def checkIDs(self): def checkIDs(self):
"""This is called when a model is loaded. """This is called when a model is loaded.

View file

@ -96,13 +96,14 @@ frequencyAnalyzer = {
viewMode = "fiction" # simple, fiction viewMode = "fiction" # simple, fiction
saveToZip = True saveToZip = True
dontShowDeleteWarning = False
def save(filename=None, protocol=None): def save(filename=None, protocol=None):
global spellcheck, dict, corkSliderFactor, viewSettings, corkSizeFactor, folderView, lastTab, openIndexes, \ global spellcheck, dict, corkSliderFactor, viewSettings, corkSizeFactor, folderView, lastTab, openIndexes, \
autoSave, autoSaveDelay, saveOnQuit, autoSaveNoChanges, autoSaveNoChangesDelay, outlineViewColumns, \ autoSave, autoSaveDelay, saveOnQuit, autoSaveNoChanges, autoSaveNoChangesDelay, outlineViewColumns, \
corkBackground, corkStyle, fullScreenTheme, defaultTextType, textEditor, revisions, frequencyAnalyzer, viewMode, \ corkBackground, corkStyle, fullScreenTheme, defaultTextType, textEditor, revisions, frequencyAnalyzer, viewMode, \
saveToZip saveToZip, dontShowDeleteWarning
allSettings = { allSettings = {
"viewSettings": viewSettings, "viewSettings": viewSettings,
@ -127,6 +128,7 @@ def save(filename=None, protocol=None):
"frequencyAnalyzer": frequencyAnalyzer, "frequencyAnalyzer": frequencyAnalyzer,
"viewMode": viewMode, "viewMode": viewMode,
"saveToZip": saveToZip, "saveToZip": saveToZip,
"dontShowDeleteWarning": dontShowDeleteWarning,
} }
#pp=pprint.PrettyPrinter(indent=4, compact=False) #pp=pprint.PrettyPrinter(indent=4, compact=False)
@ -294,3 +296,7 @@ def load(string, fromString=False, protocol=None):
if "saveToZip" in allSettings: if "saveToZip" in allSettings:
global saveToZip global saveToZip
saveToZip = allSettings["saveToZip"] saveToZip = allSettings["saveToZip"]
if "dontShowDeleteWarning" in allSettings:
global dontShowDeleteWarning
dontShowDeleteWarning = allSettings["dontShowDeleteWarning"]

View file

@ -8,6 +8,7 @@ from manuskript import settings
from manuskript.functions import AUC, mainWindow from manuskript.functions import AUC, mainWindow
from manuskript.ui.editors.editorWidget_ui import Ui_editorWidget_ui from manuskript.ui.editors.editorWidget_ui import Ui_editorWidget_ui
from manuskript.ui.views.textEditView import textEditView from manuskript.ui.views.textEditView import textEditView
from manuskript.ui.tools.splitDialog import splitDialog
class editorWidget(QWidget, Ui_editorWidget_ui): class editorWidget(QWidget, Ui_editorWidget_ui):
@ -266,6 +267,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.currentIndex = QModelIndex() self.currentIndex = QModelIndex()
self.currentID = None self.currentID = None
if self._model:
self.setView() self.setView()
def updateIndexFromID(self): def updateIndexFromID(self):
@ -323,3 +325,92 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
def setDict(self, dct): def setDict(self, dct):
self.currentDict = dct self.currentDict = dct
self.dictChanged.emit(dct) self.dictChanged.emit(dct)
###############################################################################
# FUNCTIONS FOR MENU ACCESS
###############################################################################
def getCurrentItemView(self):
"""
Returns the current item view, between txtRedacText, outlineView and
corkView. If folder/text view, returns None. (Because handled
differently)
"""
if self.stack.currentIndex() == 0:
return self.txtRedacText
elif self.folderView == "outline":
return self.outlineView
elif self.folderView == "cork":
return self.corkView
else:
return None
def copy(self):
if self.getCurrentItemView(): self.getCurrentItemView().copy()
def cut(self):
if self.getCurrentItemView(): self.getCurrentItemView().cut()
def paste(self):
if self.getCurrentItemView(): self.getCurrentItemView().paste()
def duplicate(self):
if self.getCurrentItemView(): self.getCurrentItemView().duplicate()
def delete(self):
if self.getCurrentItemView(): self.getCurrentItemView().delete()
def moveUp(self):
if self.getCurrentItemView(): self.getCurrentItemView().moveUp()
def moveDown(self):
if self.getCurrentItemView(): self.getCurrentItemView().moveDown()
def splitDialog(self):
"""
Opens a dialog to split selected items.
"""
if self.getCurrentItemView() == self.txtRedacText:
# Text editor
if not self.currentIndex.isValid():
return
sel = self.txtRedacText.textCursor().selectedText()
# selectedText uses \u2029 instead of \n, no idea why.
sel = sel.replace("\u2029", "\n")
splitDialog(self, [self.currentIndex], mark=sel)
elif self.getCurrentItemView():
# One of the views
self.getCurrentItemView().splitDialog()
def splitCursor(self):
"""
Splits items at cursor position. If there is a selection, that selection
becomes the new item's title.
Call context: Only works when editing a file.
"""
if not self.currentIndex.isValid():
return
if self.getCurrentItemView() == self.txtRedacText:
c = self.txtRedacText.textCursor()
title = c.selectedText()
# selection can be backward
pos = min(c.selectionStart(), c.selectionEnd())
item = self.currentIndex.internalPointer()
item.splitAt(pos, len(title))
def merge(self):
"""
Merges selected items together.
Call context: Multiple selection, same parent.
"""
if self.getCurrentItemView() == self.txtRedacText:
# Text editor, nothing to merge
pass
elif self.getCurrentItemView():
# One of the views
self.getCurrentItemView().merge()

View file

@ -172,7 +172,6 @@ class mainEditor(QWidget, Ui_mainEditor):
ts = ts.secondTab ts = ts.secondTab
return r return r
############################################################################### ###############################################################################
# SELECTION AND UPDATES # SELECTION AND UPDATES
############################################################################### ###############################################################################
@ -245,6 +244,21 @@ class mainEditor(QWidget, Ui_mainEditor):
return title return title
###############################################################################
# FUNCTIONS FOR MENU ACCESS
###############################################################################
def copy(self): self.currentEditor().copy()
def cut(self): self.currentEditor().cut()
def paste(self): self.currentEditor().paste()
def duplicate(self): self.currentEditor().duplicate()
def delete(self): self.currentEditor().delete()
def moveUp(self): self.currentEditor().moveUp()
def moveDown(self): self.currentEditor().moveDown()
def splitDialog(self): self.currentEditor().splitDialog()
def splitCursor(self): self.currentEditor().splitCursor()
def merge(self): self.currentEditor().merge()
############################################################################### ###############################################################################
# UI # UI
############################################################################### ###############################################################################

View file

@ -1054,6 +1054,8 @@ class Ui_MainWindow(object):
self.menuView.setObjectName("menuView") self.menuView.setObjectName("menuView")
self.menuMode = QtWidgets.QMenu(self.menuView) self.menuMode = QtWidgets.QMenu(self.menuView)
self.menuMode.setObjectName("menuMode") self.menuMode.setObjectName("menuMode")
self.menuDocuments = QtWidgets.QMenu(self.menubar)
self.menuDocuments.setObjectName("menuDocuments")
MainWindow.setMenuBar(self.menubar) MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar") self.statusbar.setObjectName("statusbar")
@ -1193,6 +1195,46 @@ class Ui_MainWindow(object):
icon = QtGui.QIcon.fromTheme("document-import") icon = QtGui.QIcon.fromTheme("document-import")
self.actImport.setIcon(icon) self.actImport.setIcon(icon)
self.actImport.setObjectName("actImport") self.actImport.setObjectName("actImport")
self.actCopy = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("edit-copy")
self.actCopy.setIcon(icon)
self.actCopy.setObjectName("actCopy")
self.actCut = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("edit-cut")
self.actCut.setIcon(icon)
self.actCut.setObjectName("actCut")
self.actPaste = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("edit-paste")
self.actPaste.setIcon(icon)
self.actPaste.setObjectName("actPaste")
self.actSplitDialog = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("split")
self.actSplitDialog.setIcon(icon)
self.actSplitDialog.setObjectName("actSplitDialog")
self.actSplitCursor = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("split")
self.actSplitCursor.setIcon(icon)
self.actSplitCursor.setObjectName("actSplitCursor")
self.actMerge = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("merge")
self.actMerge.setIcon(icon)
self.actMerge.setObjectName("actMerge")
self.actDuplicate = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("folder-copy")
self.actDuplicate.setIcon(icon)
self.actDuplicate.setObjectName("actDuplicate")
self.actDelete = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("edit-delete")
self.actDelete.setIcon(icon)
self.actDelete.setObjectName("actDelete")
self.actMoveUp = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("arrow-up")
self.actMoveUp.setIcon(icon)
self.actMoveUp.setObjectName("actMoveUp")
self.actMoveDown = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme("arrow-down")
self.actMoveDown.setIcon(icon)
self.actMoveDown.setObjectName("actMoveDown")
self.menuFile.addAction(self.actOpen) self.menuFile.addAction(self.actOpen)
self.menuFile.addAction(self.menuRecents.menuAction()) self.menuFile.addAction(self.menuRecents.menuAction())
self.menuFile.addAction(self.actSave) self.menuFile.addAction(self.actSave)
@ -1215,8 +1257,21 @@ class Ui_MainWindow(object):
self.menuMode.addAction(self.actModeSnowflake) self.menuMode.addAction(self.actModeSnowflake)
self.menuView.addAction(self.menuMode.menuAction()) self.menuView.addAction(self.menuMode.menuAction())
self.menuView.addSeparator() self.menuView.addSeparator()
self.menuDocuments.addAction(self.actCopy)
self.menuDocuments.addAction(self.actCut)
self.menuDocuments.addAction(self.actPaste)
self.menuDocuments.addAction(self.actDuplicate)
self.menuDocuments.addAction(self.actDelete)
self.menuDocuments.addSeparator()
self.menuDocuments.addAction(self.actMoveUp)
self.menuDocuments.addAction(self.actMoveDown)
self.menuDocuments.addSeparator()
self.menuDocuments.addAction(self.actMerge)
self.menuDocuments.addAction(self.actSplitDialog)
self.menuDocuments.addAction(self.actSplitCursor)
self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuEdit.menuAction()) self.menubar.addAction(self.menuEdit.menuAction())
self.menubar.addAction(self.menuDocuments.menuAction())
self.menubar.addAction(self.menuView.menuAction()) self.menubar.addAction(self.menuView.menuAction())
self.menubar.addAction(self.menuTools.menuAction()) self.menubar.addAction(self.menuTools.menuAction())
self.menubar.addAction(self.menuHelp.menuAction()) self.menubar.addAction(self.menuHelp.menuAction())
@ -1334,6 +1389,7 @@ class Ui_MainWindow(object):
self.menuEdit.setTitle(_translate("MainWindow", "&Edit")) self.menuEdit.setTitle(_translate("MainWindow", "&Edit"))
self.menuView.setTitle(_translate("MainWindow", "&View")) self.menuView.setTitle(_translate("MainWindow", "&View"))
self.menuMode.setTitle(_translate("MainWindow", "&Mode")) self.menuMode.setTitle(_translate("MainWindow", "&Mode"))
self.menuDocuments.setTitle(_translate("MainWindow", "&Documents"))
self.dckCheatSheet.setWindowTitle(_translate("MainWindow", "&Cheat sheet")) self.dckCheatSheet.setWindowTitle(_translate("MainWindow", "&Cheat sheet"))
self.dckSearch.setWindowTitle(_translate("MainWindow", "Sea&rch")) self.dckSearch.setWindowTitle(_translate("MainWindow", "Sea&rch"))
self.dckNavigation.setWindowTitle(_translate("MainWindow", "&Navigation")) self.dckNavigation.setWindowTitle(_translate("MainWindow", "&Navigation"))
@ -1367,6 +1423,26 @@ class Ui_MainWindow(object):
self.actAbout.setToolTip(_translate("MainWindow", "About Manuskript")) self.actAbout.setToolTip(_translate("MainWindow", "About Manuskript"))
self.actImport.setText(_translate("MainWindow", "Import…")) self.actImport.setText(_translate("MainWindow", "Import…"))
self.actImport.setShortcut(_translate("MainWindow", "F7")) self.actImport.setShortcut(_translate("MainWindow", "F7"))
self.actCopy.setText(_translate("MainWindow", "Copy"))
self.actCopy.setShortcut(_translate("MainWindow", "Ctrl+C"))
self.actCut.setText(_translate("MainWindow", "Cut"))
self.actCut.setShortcut(_translate("MainWindow", "Ctrl+X"))
self.actPaste.setText(_translate("MainWindow", "Paste"))
self.actPaste.setShortcut(_translate("MainWindow", "Ctrl+V"))
self.actSplitDialog.setText(_translate("MainWindow", "Split…"))
self.actSplitDialog.setShortcut(_translate("MainWindow", "Ctrl+Shift+K"))
self.actSplitCursor.setText(_translate("MainWindow", "Split at cursor"))
self.actSplitCursor.setShortcut(_translate("MainWindow", "Ctrl+K"))
self.actMerge.setText(_translate("MainWindow", "Merge"))
self.actMerge.setShortcut(_translate("MainWindow", "Ctrl+M"))
self.actDuplicate.setText(_translate("MainWindow", "&Duplicate"))
self.actDuplicate.setShortcut(_translate("MainWindow", "Ctrl+D"))
self.actDelete.setText(_translate("MainWindow", "Delete"))
self.actDelete.setShortcut(_translate("MainWindow", "Del"))
self.actMoveUp.setText(_translate("MainWindow", "Move Up"))
self.actMoveUp.setShortcut(_translate("MainWindow", "Ctrl+Shift+Up"))
self.actMoveDown.setText(_translate("MainWindow", "Move Down"))
self.actMoveDown.setShortcut(_translate("MainWindow", "Ctrl+Shift+Down"))
from manuskript.ui.cheatSheet import cheatSheet from manuskript.ui.cheatSheet import cheatSheet
from manuskript.ui.editors.mainEditor import mainEditor from manuskript.ui.editors.mainEditor import mainEditor

View file

@ -2158,8 +2158,26 @@
<addaction name="menuMode"/> <addaction name="menuMode"/>
<addaction name="separator"/> <addaction name="separator"/>
</widget> </widget>
<widget class="QMenu" name="menuDocuments">
<property name="title">
<string>&amp;Documents</string>
</property>
<addaction name="actCopy"/>
<addaction name="actCut"/>
<addaction name="actPaste"/>
<addaction name="actDuplicate"/>
<addaction name="actDelete"/>
<addaction name="separator"/>
<addaction name="actMoveUp"/>
<addaction name="actMoveDown"/>
<addaction name="separator"/>
<addaction name="actMerge"/>
<addaction name="actSplitDialog"/>
<addaction name="actSplitCursor"/>
</widget>
<addaction name="menuFile"/> <addaction name="menuFile"/>
<addaction name="menuEdit"/> <addaction name="menuEdit"/>
<addaction name="menuDocuments"/>
<addaction name="menuView"/> <addaction name="menuView"/>
<addaction name="menuTools"/> <addaction name="menuTools"/>
<addaction name="menuHelp"/> <addaction name="menuHelp"/>
@ -2485,7 +2503,9 @@ QListView::item:hover {
</action> </action>
<action name="actImport"> <action name="actImport">
<property name="icon"> <property name="icon">
<iconset theme="document-import"/> <iconset theme="document-import">
<normaloff/>
</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Import…</string> <string>Import…</string>
@ -2494,6 +2514,116 @@ QListView::item:hover {
<string>F7</string> <string>F7</string>
</property> </property>
</action> </action>
<action name="actCopy">
<property name="icon">
<iconset theme="edit-copy"/>
</property>
<property name="text">
<string>Copy</string>
</property>
<property name="shortcut">
<string>Ctrl+C</string>
</property>
</action>
<action name="actCut">
<property name="icon">
<iconset theme="edit-cut"/>
</property>
<property name="text">
<string>Cut</string>
</property>
<property name="shortcut">
<string>Ctrl+X</string>
</property>
</action>
<action name="actPaste">
<property name="icon">
<iconset theme="edit-paste"/>
</property>
<property name="text">
<string>Paste</string>
</property>
<property name="shortcut">
<string>Ctrl+V</string>
</property>
</action>
<action name="actSplitDialog">
<property name="icon">
<iconset theme="split"/>
</property>
<property name="text">
<string>Split…</string>
</property>
<property name="shortcut">
<string>Ctrl+Shift+K</string>
</property>
</action>
<action name="actSplitCursor">
<property name="icon">
<iconset theme="split"/>
</property>
<property name="text">
<string>Split at cursor</string>
</property>
<property name="shortcut">
<string>Ctrl+K</string>
</property>
</action>
<action name="actMerge">
<property name="icon">
<iconset theme="merge"/>
</property>
<property name="text">
<string>Merge</string>
</property>
<property name="shortcut">
<string>Ctrl+M</string>
</property>
</action>
<action name="actDuplicate">
<property name="icon">
<iconset theme="folder-copy"/>
</property>
<property name="text">
<string>&amp;Duplicate</string>
</property>
<property name="shortcut">
<string>Ctrl+D</string>
</property>
</action>
<action name="actDelete">
<property name="icon">
<iconset theme="edit-delete"/>
</property>
<property name="text">
<string>Delete</string>
</property>
<property name="shortcut">
<string>Del</string>
</property>
</action>
<action name="actMoveUp">
<property name="icon">
<iconset theme="arrow-up"/>
</property>
<property name="text">
<string>Move Up</string>
</property>
<property name="shortcut">
<string>Ctrl+Shift+Up</string>
</property>
</action>
<action name="actMoveDown">
<property name="icon">
<iconset theme="arrow-down"/>
</property>
<property name="text">
<string>Move Down</string>
</property>
<property name="shortcut">
<string>Ctrl+Shift+Down</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View file

@ -0,0 +1,70 @@
#!/usr/bin/env python
# --!-- coding: utf8 --!--
from PyQt5.QtWidgets import QInputDialog
from manuskript.functions import mainWindow
class splitDialog(QInputDialog):
"""
Opens a dialog to split indexes.
"""
def __init__(self, parent, indexes, mark=None):
"""
@param parent: a QWidget, for the dialog.
@param indexes: a list of QModelIndex in the outlineModel
@param default: the default split mark
"""
QInputDialog.__init__(self, parent)
description = self.tr("""
<p>Split selected item(s) at the given mark.</p>
<p>If one of the selected item is a folder, it will be applied
recursively to <i>all</i> of it's children items.</p>
<p>The split mark can contain folling escret ape sequences:
<ul>
<li><b><code>\\n</code></b>: line break</li>
<li><b><code>\\t</code></b>: tab</li>
</ul>
</p>
<p><b>Mark:</b></p>
""")
if not mark:
mark = "\\n---\\n"
mark = mark.replace("\n", "\\n")
mark = mark.replace("\t", "\\t")
self.setLabelText(description)
self.setTextValue(mark)
if len(indexes) == 0:
return
if len(indexes) == 1:
idx = indexes[0]
self.setWindowTitle(
self.tr("Split '{}'").format(self.getItem(idx).title())
)
else:
self.setWindowTitle(self.tr("Split items"))
r = self.exec()
mark = self.textValue()
if r and mark:
mark = mark.replace("\\n", "\n")
mark = mark.replace("\\t", "\t")
for idx in indexes:
item = self.getItem(idx)
item.split(mark)
def getItem(self, index):
if index.isValid():
return index.internalPointer()
else:
return mainWindow().mdlOutline.rootItem

View file

@ -2,14 +2,16 @@
# --!-- coding: utf8 --!-- # --!-- coding: utf8 --!--
from PyQt5.QtCore import Qt, QSignalMapper, QSize from PyQt5.QtCore import Qt, QSignalMapper, QSize
from PyQt5.QtGui import QIcon, QCursor from PyQt5.QtGui import QIcon, QCursor
from PyQt5.QtWidgets import QAbstractItemView, qApp, QMenu, QAction from PyQt5.QtWidgets import QAbstractItemView, qApp, QMenu, QAction, \
from PyQt5.QtWidgets import QListWidget, QWidgetAction, QListWidgetItem, QLineEdit QListWidget, QWidgetAction, QListWidgetItem, \
QLineEdit, QInputDialog, QMessageBox, QCheckBox
from manuskript import settings from manuskript import settings
from manuskript.enums import Outline from manuskript.enums import Outline
from manuskript.functions import mainWindow from manuskript.functions import mainWindow, statusMessage
from manuskript.functions import toInt, customIcons from manuskript.functions import toInt, customIcons
from manuskript.models.outlineModel import outlineItem from manuskript.models.outlineModel import outlineItem
from manuskript.ui.tools.splitDialog import splitDialog
class outlineBasics(QAbstractItemView): class outlineBasics(QAbstractItemView):
@ -53,7 +55,7 @@ class outlineBasics(QAbstractItemView):
title = mouseIndex.internalPointer().title() title = mouseIndex.internalPointer().title()
else: else:
title = self.tr("Root") title = qApp.translate("outlineBasics", "Root")
if len(title) > 25: if len(title) > 25:
title = title[:25] + "" title = title[:25] + ""
@ -67,10 +69,10 @@ class outlineBasics(QAbstractItemView):
# Open item(s) in new tab # Open item(s) in new tab
if mouseIndex in sel and len(sel) > 1: if mouseIndex in sel and len(sel) > 1:
actionTitle = self.tr("Open {} items in new tabs").format(len(sel)) actionTitle = qApp.translate("outlineBasics", "Open {} items in new tabs").format(len(sel))
self._indexesToOpen = sel self._indexesToOpen = sel
else: else:
actionTitle = self.tr("Open {} in a new tab").format(title) actionTitle = qApp.translate("outlineBasics", "Open {} in a new tab").format(title)
self._indexesToOpen = [mouseIndex] self._indexesToOpen = [mouseIndex]
self.actNewTab = QAction(QIcon.fromTheme("go-right"), actionTitle, menu) self.actNewTab = QAction(QIcon.fromTheme("go-right"), actionTitle, menu)
@ -284,8 +286,132 @@ class outlineBasics(QAbstractItemView):
self.delete() self.delete()
def delete(self): def delete(self):
"""
Shows a warning, and then deletes currently selected indexes.
"""
if not settings.dontShowDeleteWarning:
msg = QMessageBox(QMessageBox.Warning,
qApp.translate("outlineBasics", "About to remove"),
qApp.translate("outlineBasics",
"<p><b>You're about to delete {} item(s).</b></p><p>Are you sure?</p>"
).format(len(self.getSelection())),
QMessageBox.Yes | QMessageBox.Cancel)
chk = QCheckBox("&Don't show this warning in the future.")
msg.setCheckBox(chk)
ret = msg.exec()
if ret == QMessageBox.Cancel:
return
if chk.isChecked():
settings.dontShowDeleteWarning = True
self.model().removeIndexes(self.getSelection()) self.model().removeIndexes(self.getSelection())
def duplicate(self):
self.copy()
self.paste()
def move(self, delta=1):
"""
Move selected items up or down.
"""
# we store selected indexesret
currentID = self.model().ID(self.currentIndex())
selIDs = [self.model().ID(i) for i in self.selectedIndexes()]
# Block signals
self.blockSignals(True)
self.selectionModel().blockSignals(True)
# Move each index individually
for idx in self.selectedIndexes():
self.moveIndex(idx, delta)
# Done the hardcore way, so inform views
self.model().layoutChanged.emit()
# restore selection
selIdx = [self.model().getIndexByID(ID) for ID in selIDs]
sm = self.selectionModel()
sm.clear()
[sm.select(idx, sm.Select) for idx in selIdx]
sm.setCurrentIndex(self.model().getIndexByID(currentID), sm.Select)
#self.setSmsgBoxelectionModel(sm)
# Unblock signals
self.blockSignals(False)
self.selectionModel().blockSignals(False)
def moveIndex(self, index, delta=1):
"""
Move the item represented by index. +1 means down, -1 means up.
"""
if not index.isValid():
return
if index.parent().isValid():
parentItem = index.parent().internalPointer()
else:
parentItem = index.model().rootItem
parentItem.childItems.insert(index.row() + delta,
parentItem.childItems.pop(index.row()))
parentItem.updateWordCount(emit=False)
def moveUp(self): self.move(-1)
def moveDown(self): self.move(+1)
def splitDialog(self):
"""
Opens a dialog to split selected items.
Call context: if at least one index is selected. Folder or text.
"""
indexes = self.getSelection()
if len(indexes) == 0:
# No selection, we use parent
indexes = [self.rootIndex()]
splitDialog(self, indexes)
def merge(self):
"""
Merges selected items together.
Call context: Multiple selection, same parent.
"""
# Get selection
indexes = self.getSelection()
# Get items
items = [i.internalPointer() for i in indexes if i.isValid()]
# Remove folders
items = [i for i in items if not i.isFolder()]
# Check that we have at least 2 items
if len(items) < 2:
statusMessage(qApp.translate("outlineBasics",
"Select at least two items. Folders are ignored."))
return
# Check that all share the same parent
p = items[0].parent()
for i in items:
if i.parent() != p:
statusMessage(qApp.translate("outlineBasics",
"All items must be on the same level (share the same parent)."))
return
# Sort items by row
items = sorted(items, key=lambda i: i.row())
items[0].mergeWith(items[1:])
def setPOV(self, POV): def setPOV(self, POV):
for i in self.getSelection(): for i in self.getSelection():
self.model().setData(i.sibling(i.row(), Outline.POV.value), str(POV)) self.model().setData(i.sibling(i.row(), Outline.POV.value), str(POV))

View file

@ -1,6 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
# --!-- coding: utf8 --!-- # --!-- coding: utf8 --!--
from PyQt5.QtWidgets import QWidget from PyQt5.QtWidgets import QWidget
from PyQt5.QtGui import QIntValidator
from manuskript.enums import Outline from manuskript.enums import Outline
from manuskript.ui.views.propertiesView_ui import Ui_propertiesView from manuskript.ui.views.propertiesView_ui import Ui_propertiesView
@ -19,6 +20,7 @@ class propertiesView(QWidget, Ui_propertiesView):
self.chkCompile.setModel(mdlOutline) self.chkCompile.setModel(mdlOutline)
self.txtTitle.setModel(mdlOutline) self.txtTitle.setModel(mdlOutline)
self.txtGoal.setModel(mdlOutline) self.txtGoal.setModel(mdlOutline)
self.txtGoal.setValidator(QIntValidator(0, 9999999))
def getIndexes(self, sourceView): def getIndexes(self, sourceView):
"""Returns a list of indexes from list of QItemSelectionRange""" """Returns a list of indexes from list of QItemSelectionRange"""

View file

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'manuskript/ui/views/propertiesView_ui.ui' # Form implementation generated from reading ui file 'manuskript/ui/views/propertiesView_ui.ui'
# #
# Created by: PyQt5 UI code generator 5.4.2 # Created by: PyQt5 UI code generator 5.9
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!

View file

@ -141,6 +141,21 @@ class textEditView(QTextEdit):
self.setPlainText("") self.setPlainText("")
self.setEnabled(False) self.setEnabled(False)
def currentIndex(self):
"""
Getter function used to normalized views acces with QAbstractItemViews.
"""
if self._index:
return self._index
else:
return QModelIndex()
def getSelection(self):
"""
Getter function used to normalized views acces with QAbstractItemViews.
"""
return [self.currentIndex()]
def setCurrentModelIndexes(self, indexes): def setCurrentModelIndexes(self, indexes):
self._index = None self._index = None
self._indexes = [] self._indexes = []