changeset 51:0eaf39fda206

First cut at palette class
author daveb
date Wed, 04 Aug 2010 16:36:32 +0930
parents dfa1e219eafe
children 4dadc3c03b7e
files doodle/core/logging.d doodle/gtk/palette.d doodle/main/prog/doodler.d doodle/tk/geometry.d doodle/tk/palette.d
diffstat 5 files changed, 92 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/doodle/core/logging.d	Wed Aug 04 16:36:07 2010 +0930
+++ b/doodle/core/logging.d	Wed Aug 04 16:36:32 2010 +0930
@@ -31,7 +31,7 @@
     mixin(defineEnum!("Severity",
                       "TRACE", "INFO", "MESSAGE", "WARNING", "ERROR", "FATAL"));
 
-    string mod_string(in Severity s) {
+    string severityString(in Severity s) {
         switch (s) {
         case Severity.TRACE:
             return modifierString(Modifier.DIM) ~ fgColorString(Color.CYAN);
@@ -52,7 +52,7 @@
     }
 
     void log(in Severity severity, in string message) {
-        write(mod_string(severity));
+        write(severityString(severity));
         write(message);
         writeln(modifierString(Modifier.RESET));
     }
@@ -78,11 +78,11 @@
         WHITE   = 7
     }
 
-    string modifierString(Modifier m) { return std.string.format("\033[%dm", 0 + m); }
-    string fgColorString(Color c)    { return std.string.format("\033[%dm", 30 + c); }
-    string bgColorString(Color c)    { return std.string.format("\033[%dm", 40 + c); }
+    string modifierString(in Modifier m) { return std.string.format("\033[%dm", 0 + m); }
+    string fgColorString(in Color c)     { return std.string.format("\033[%dm", 30 + c); }
+    string bgColorString(in Color c)     { return std.string.format("\033[%dm", 40 + c); }
 
-    private const(char)[] right(in char[] str, int n) {
+    private string right(in string str, in int n) {
         int pos = str.length < n ? 0 : str.length - n;
         return str[pos..$];
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doodle/gtk/palette.d	Wed Aug 04 16:36:32 2010 +0930
@@ -0,0 +1,59 @@
+module doodle.gtk.palette;
+
+public {
+    import doodle.tk.palette;
+    import gtk.Toolbar;
+}
+
+private {
+    import gtk.ToolButton;
+    import glib.ListSG;
+    import std.stdio;
+    import gtk.RadioToolButton;
+    import gtk.Image;
+}
+
+class Palette : Toolbar, IPalette {
+    this() {
+        setIconSize(GtkIconSize.LARGE_TOOLBAR);
+        setStyle(GtkToolbarStyle.ICONS);
+        setOrientation(GtkOrientation.HORIZONTAL);
+        setTooltips(true);
+    }
+
+    int add(in string iconPath, in string tooltipText, void delegate(int) dg) {
+        auto button = new RadioToolButton(_group);
+        auto image = new Image(iconBase ~ "/" ~ iconPath);
+        button.setLabelWidget(image);
+        int * i = new int;
+        *i = _delegates.length;
+        _delegates[*i] = dg;
+        button.objectGSetDataFull(indexStr, cast(gpointer)i);
+        button.addOnClicked(&onClicked);
+        insert(button);
+        return *i;
+    }
+
+    void remove(in int id) {
+    }
+
+    void activate(in int id) {
+    }
+
+    private {
+        immutable iconBase = "/home/daveb/source/d/doodle/source/doodle/gtk/data";
+        immutable indexStr = "index";
+        ListSG _group;
+        void delegate(int) _delegates[int];
+
+        void onClicked(ToolButton tool_button) {
+            int * i = cast(int *)tool_button.getData(indexStr);
+            _delegates[*i](*i);
+        }
+
+        /*
+        ToolButton find(int index) {
+        }
+        */
+    }
+}
--- a/doodle/main/prog/doodler.d	Wed Aug 04 16:36:07 2010 +0930
+++ b/doodle/main/prog/doodler.d	Wed Aug 04 16:36:32 2010 +0930
@@ -10,6 +10,7 @@
 
     import doodle.gtk.canvas;
     import doodle.gtk.toolbar;
+    import doodle.gtk.palette;
 
     import gtk.Main;
     import gtk.MainWindow;
@@ -19,47 +20,39 @@
 }
 
 void main(string[] args) {
-    trace("Test trace");
+    Main.init(args);
+    auto window = new MainWindow("Doodle");
+    auto vbox = new VBox(false, 0);
     /+
-    trace("Test trace");
-    info("Test trace");
-    message("Test trace");
-    warning("Test trace");
-    error("Test trace");
-    fatal("Test trace");
+    auto toolBar = new ToolBar;
+    vbox.packStart(toolBar, false, false, 0);
     +/
 
-    trace("Test trace1");
-    Main.init(args);
-    trace("Test trace2");
-    auto window = new MainWindow("Doodle");
-    trace("Test trace3");
-    auto vbox = new VBox(false, 0);
-    trace("Test trace4");
-    auto toolBar = new ToolBar;
-    trace("Test trace5");
-    vbox.packStart(toolBar, false, false, 0);
+    auto palette = new Palette;
+    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;
     tools ~= new PanTool;
     tools ~= new ZoomTool;
     tools ~= new LassoTool;
-    trace("Test trace4");
     auto toolLayer = new ToolLayer(tools, "Tools");
+
     auto gridLayer = new GridLayer("Grid");
+
     Layer[] layers;
-    trace("Test trace5");
     layers ~= new PageLayer("Page");
     layers ~= gridLayer;
     layers ~= toolLayer;
-    trace("Test trace6");
     auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0);
-    trace("Test trace7");
+
     vbox.packStart(canvas, true, true, 0);
-    trace("Test trace8");
     window.add(vbox);
-    trace("Test trace9");
     window.setDefaultSize(380, 380);
     window.showAll();
-    trace("Test trace8");
     Main.run();
 }
--- a/doodle/tk/geometry.d	Wed Aug 04 16:36:07 2010 +0930
+++ b/doodle/tk/geometry.d	Wed Aug 04 16:36:32 2010 +0930
@@ -24,15 +24,9 @@
 //
 
 struct Point {
-    static immutable Point DEFAULT;
-
-    static this() {
-        DEFAULT = Point(0.0, 0.0);
-    }
+    static immutable Point DEFAULT = Point(0.0, 0.0);
 
     this(in double x, in double y) {
-        assert(!isnan(x));
-        assert(!isnan(y));
         _x = x;
         _y = y;
     }
@@ -74,15 +68,9 @@
 //
 
 struct Vector {
-    static Vector DEFAULT;
-
-    static this() {
-        DEFAULT = Vector(0.0, 0.0);
-    }
+    static Vector DEFAULT = Vector(0.0, 0.0);
 
     this(in double x, in double y) {
-        assert(!isnan(x));
-        assert(!isnan(y));
         _x = x;
         _y = y;
     }
@@ -344,7 +332,7 @@
     }
 
     private {
-        Point _point;           // Arbitrary point along line
+        Point  _point;           // Arbitrary point along line
         Vector _gradient;
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doodle/tk/palette.d	Wed Aug 04 16:36:32 2010 +0930
@@ -0,0 +1,7 @@
+module doodle.tk.palette;
+
+interface IPalette {
+    int add(in string iconPath, in string tooltipText, void delegate(int) dg);
+    void remove(in int id);
+    void activate(in int id);
+}