Mercurial > projects > doodle
changeset 55:4922e746dd76
Checkpoint
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Sun, 08 Aug 2010 21:37:38 +0930 |
parents | 30ecedfe2ce2 |
children | b190a9d9352e |
files | doodle/gtk/data/ellipse.svg doodle/gtk/data/polyline.svg doodle/gtk/data/rectangle.svg doodle/gtk/data/select.png doodle/gtk/palette.d doodle/gtk/toolbar.d doodle/main/prog/doodler.d |
diffstat | 7 files changed, 492 insertions(+), 81 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/gtk/data/ellipse.svg Sun Aug 08 21:37:38 2010 +0930 @@ -0,0 +1,161 @@ +<?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="32px" + height="32px" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.47 r22583" + sodipodi:docname="ellipse.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/home/daveb/source/d/doodle/doodle/gtk/data/rectangle.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + version="1.1"> + <defs + id="defs2385"> + <linearGradient + inkscape:collect="always" + id="linearGradient3262"> + <stop + style="stop-color:#6bfff4;stop-opacity:1;" + offset="0" + id="stop3264" /> + <stop + style="stop-color:#6bfff4;stop-opacity:0;" + offset="1" + id="stop3266" /> + </linearGradient> + <linearGradient + id="linearGradient3254"> + <stop + style="stop-color:#6bfff4;stop-opacity:1;" + offset="0" + id="stop3256" /> + <stop + style="stop-color:#6bfff4;stop-opacity:0;" + offset="1" + id="stop3258" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="32 : 16 : 1" + inkscape:persp3d-origin="16 : 10.666667 : 1" + id="perspective2391" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3268" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3254" + id="linearGradient3733" + x1="-27.526884" + y1="28.079714" + x2="-0.38405609" + y2="0.43171197" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0147,0,0,0.98124597,30.160614,2.0116389)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3830" + gradientUnits="userSpaceOnUse" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientTransform="translate(-8.3353943,21.091074)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3832" + gradientUnits="userSpaceOnUse" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientTransform="translate(7.1987497,17.807433)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3834" + gradientUnits="userSpaceOnUse" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientTransform="translate(-39.024801,26.395415)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3254" + id="linearGradient4747" + x1="-32.444584" + y1="16.40271" + x2="-1.6547594" + y2="16.40271" + gradientUnits="userSpaceOnUse" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7.9180417" + inkscape:cx="-4.0005236" + inkscape:cy="17.592423" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="1196" + inkscape:window-height="880" + inkscape:window-x="157" + inkscape:window-y="98" + inkscape:window-maximized="0" /> + <metadata + id="metadata2388"> + <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 + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + sodipodi:type="arc" + style="fill:url(#linearGradient4747);fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="path4221" + sodipodi:cx="-17.049671" + sodipodi:cy="16.40271" + sodipodi:rx="14.144912" + sodipodi:ry="13.324001" + d="m -2.9047594,16.40271 a 14.144912,13.324001 0 1 1 -28.2898236,0 14.144912,13.324001 0 1 1 28.2898236,0 z" + transform="matrix(1.0059759,0,0,0.86416394,33.151558,1.8253695)" /> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/gtk/data/polyline.svg Sun Aug 08 21:37:38 2010 +0930 @@ -0,0 +1,156 @@ +<?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="32px" + height="32px" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.47 r22583" + sodipodi:docname="polyline.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/home/daveb/source/d/doodle/doodle/gtk/data/ellipse.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + version="1.1"> + <defs + id="defs2385"> + <linearGradient + inkscape:collect="always" + id="linearGradient3262"> + <stop + style="stop-color:#6bfff4;stop-opacity:1;" + offset="0" + id="stop3264" /> + <stop + style="stop-color:#6bfff4;stop-opacity:0;" + offset="1" + id="stop3266" /> + </linearGradient> + <linearGradient + id="linearGradient3254"> + <stop + style="stop-color:#6bfff4;stop-opacity:1;" + offset="0" + id="stop3256" /> + <stop + style="stop-color:#6bfff4;stop-opacity:0;" + offset="1" + id="stop3258" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="32 : 16 : 1" + inkscape:persp3d-origin="16 : 10.666667 : 1" + id="perspective2391" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3268" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3254" + id="linearGradient3733" + x1="-27.526884" + y1="28.079714" + x2="-0.38405609" + y2="0.43171197" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0147,0,0,0.98124597,30.160614,2.0116389)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3830" + gradientUnits="userSpaceOnUse" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientTransform="translate(-8.3353943,21.091074)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3832" + gradientUnits="userSpaceOnUse" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientTransform="translate(7.1987497,17.807433)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3834" + gradientUnits="userSpaceOnUse" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientTransform="translate(-39.024801,26.395415)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3254" + id="linearGradient4747" + x1="-32.444584" + y1="16.40271" + x2="-1.6547594" + y2="16.40271" + gradientUnits="userSpaceOnUse" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7.9180417" + inkscape:cx="-26.607123" + inkscape:cy="17.592423" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="1196" + inkscape:window-height="880" + inkscape:window-x="157" + inkscape:window-y="98" + inkscape:window-maximized="0" /> + <metadata + id="metadata2388"> + <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 + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" + d="M 2.3995834,29.979298 10.356096,13.939979 17.554845,24.043487 28.037235,3.0787075" + id="path4892" + sodipodi:nodetypes="cccc" /> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/gtk/data/rectangle.svg Sun Aug 08 21:37:38 2010 +0930 @@ -0,0 +1,150 @@ +<?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="32px" + height="32px" + id="svg2383" + sodipodi:version="0.32" + inkscape:version="0.47 r22583" + sodipodi:docname="rectangle.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/home/daveb/source/d/doodle/doodle/gtk/data/rectangle.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + version="1.1"> + <defs + id="defs2385"> + <linearGradient + inkscape:collect="always" + id="linearGradient3262"> + <stop + style="stop-color:#6bfff4;stop-opacity:1;" + offset="0" + id="stop3264" /> + <stop + style="stop-color:#6bfff4;stop-opacity:0;" + offset="1" + id="stop3266" /> + </linearGradient> + <linearGradient + id="linearGradient3254"> + <stop + style="stop-color:#6bfff4;stop-opacity:1;" + offset="0" + id="stop3256" /> + <stop + style="stop-color:#6bfff4;stop-opacity:0;" + offset="1" + id="stop3258" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="32 : 16 : 1" + inkscape:persp3d-origin="16 : 10.666667 : 1" + id="perspective2391" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3268" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3254" + id="linearGradient3733" + x1="-27.526884" + y1="28.079714" + x2="-0.38405609" + y2="0.43171197" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0147,0,0,0.98124597,30.160614,2.0116389)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3830" + gradientUnits="userSpaceOnUse" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientTransform="translate(-8.3353943,21.091074)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3832" + gradientUnits="userSpaceOnUse" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientTransform="translate(7.1987497,17.807433)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3262" + id="linearGradient3834" + gradientUnits="userSpaceOnUse" + x1="1.1039745" + y1="15.925417" + x2="30.955889" + y2="15.925417" + gradientTransform="translate(-39.024801,26.395415)" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7.9180417" + inkscape:cx="-10.567804" + inkscape:cy="15.571721" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="1196" + inkscape:window-height="880" + inkscape:window-x="346" + inkscape:window-y="89" + inkscape:window-maximized="0" /> + <metadata + id="metadata2388"> + <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 + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <rect + style="fill:url(#linearGradient3733);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.49458194;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2938" + width="26.527128" + height="26.148245" + x="2.7364359" + y="2.9258776" + ry="0" /> + </g> +</svg>
--- a/doodle/gtk/palette.d Sun Aug 08 21:07:47 2010 +0930 +++ b/doodle/gtk/palette.d Sun Aug 08 21:37:38 2010 +0930 @@ -10,27 +10,44 @@ import gtk.ToolButton; import gtk.RadioToolButton; import gtk.Image; + import gtk.Label; import glib.ListSG; import std.stdio; } class Palette : Toolbar, IPalette { this() { + // INVALID, MENU, SMALL_TOOLBAR, LARGE_TOOLBAR, + // BUTTON, DND, DIALOG setIconSize(GtkIconSize.LARGE_TOOLBAR); + // ICONS, TEXT, BOTH, BOTH_HORIZ setStyle(GtkToolbarStyle.ICONS); + // HORIZONTAL, VERTICAL setOrientation(GtkOrientation.HORIZONTAL); setTooltips(true); } override void configure(in Item[] items) { _items = items.dup; - ListSG group; + + RadioToolButton group; foreach(index, item; _items) { - auto button = new RadioToolButton(group); - if (index == 0) group = button.getGroup; + RadioToolButton button; + + if (index == 0) { + ListSG list; + button = new RadioToolButton(list); + group = button; + } + else { + button = new RadioToolButton(group); + } + auto image = new Image(_iconBase ~ "/" ~ item.iconPath); - button.setLabelWidget(image); + auto label = new Label(item.tooltipText); + button.setIconWidget(image); + button.setLabelWidget(label); button.setTooltipText(item.tooltipText); int * i = new int;
--- a/doodle/gtk/toolbar.d Sun Aug 08 21:07:47 2010 +0930 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -module doodle.gtk.toolbar; - -public { - import gtk.Toolbar; -} - -private { - import gtk.ToolButton; - import gtk.SeparatorToolItem; - import gtk.RadioToolButton; - import gtk.Image; - - import glib.ListSG; - - import std.stdio; -} - -class ToolBar : Toolbar { - this() { - // INVALID, MENU, SMALL_TOOLBAR, LARGE_TOOLBAR, - // BUTTON, DND, DIALOG - setIconSize(GtkIconSize.LARGE_TOOLBAR); - // ICONS, TEXT, BOTH, BOTH_HORIZ - setStyle(GtkToolbarStyle.ICONS); - // HORIZONTAL, VERTICAL - setOrientation(GtkOrientation.HORIZONTAL); - setTooltips(true); - - Image image; - ListSG group; - - image = new Image("icons/select.svg"); - button1 = new RadioToolButton(group); - button1.setLabelWidget(image); - insert(button1); - - image = new Image("icons/select.png"); - button2 = new RadioToolButton(group); - button2.setGroup(button1.getGroup); - button2.setLabelWidget(image); - button2.addOnClicked(&onClicked); - insert(button2); - - insert(new SeparatorToolItem); - - image = new Image("icons/select.png"); - button3 = new RadioToolButton(group); - button3.setGroup(button1.getGroup); - button3.setLabelWidget(image); - insert(button3); - } - - private { - - void onClicked(ToolButton tool_button) { - writefln("Clicked!"); - } - - RadioToolButton button1; - RadioToolButton button2; - RadioToolButton button3; - } -}
--- a/doodle/main/prog/doodler.d Sun Aug 08 21:07:47 2010 +0930 +++ b/doodle/main/prog/doodler.d Sun Aug 08 21:37:38 2010 +0930 @@ -9,7 +9,6 @@ import doodle.dia.page_layer; import doodle.gtk.canvas; - import doodle.gtk.toolbar; import doodle.gtk.palette; import gtk.Main; @@ -27,25 +26,16 @@ Main.init(args); auto window = new MainWindow("Doodle"); auto vbox = new VBox(false, 0); - /+ - auto toolBar = new ToolBar; - vbox.packStart(toolBar, false, false, 0); - +/ auto palette = new Palette; IPalette.Item[] items = [ { "select.svg", "Select", &paletteCallback }, - { "select.svg", "Select", &paletteCallback } + { "rectangle.svg", "Rectangle", &paletteCallback }, + { "ellipse.svg", "Ellipse", &paletteCallback }, + { "polyline.svg", "Polyline", &paletteCallback } ]; palette.configure(items); - /* - palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); - palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); - palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); - palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); - palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); - */ vbox.packStart(palette, false, false, 0); Tool[] tools; @@ -64,7 +54,7 @@ vbox.packStart(canvas, true, true, 0); window.add(vbox); - window.setDefaultSize(380, 380); + window.setDefaultSize(640, 580); window.showAll(); Main.run(); }