Code

noop: dialogs/rdf.cpp: Mark a few pointers as not being written through. Make rdf_ma...
[inkscape.git] / src / dialogs / swatches.h
index 37a04cfba3ff4d53a1bbcec3f8e4d8b9aed2a641..02861781f8e2746aecca0e8f9698713fdc534109 100644 (file)
 
 #include "ui/widget/panel.h"
 #include "ui/previewholder.h"
+#include "dialogs/eek-color-def.h"
+
+using eek::ColorDef;
 
 namespace Inkscape {
 namespace UI {
 namespace Dialogs {
 
 
+void _loadPaletteFile( gchar const *filename );
+
 
 /**
  * The color swatch you see on screen as a clickable box.
  */
 class ColorItem : public Inkscape::UI::Previewable
 {
+    friend void _loadPaletteFile( gchar const *filename );
 public:
     ColorItem( unsigned int r, unsigned int g, unsigned int b,
                Glib::ustring& name );
@@ -37,15 +43,42 @@ public:
     virtual ColorItem &operator=(ColorItem const &other);
     virtual Gtk::Widget* getPreview(PreviewStyle style,
                                     ViewType view,
-                                    Gtk::BuiltinIconSize size);
+                                    Inkscape::IconSize size);
     void buttonClicked(bool secondary = false);
-    unsigned int _r;
-    unsigned int _g;
-    unsigned int _b;
-    Glib::ustring _name;
-    
+
+    ColorDef def;
+
 private:
+    static void _dropDataIn( GtkWidget *widget,
+                             GdkDragContext *drag_context,
+                             gint x, gint y,
+                             GtkSelectionData *data,
+                             guint info,
+                             guint event_time,
+                             gpointer user_data);
+
+    static void _dragGetColorData( GtkWidget *widget,
+                                   GdkDragContext *drag_context,
+                                   GtkSelectionData *data,
+                                   guint info,
+                                   guint time,
+                                   gpointer user_data);
+
+    static void _wireMagicColors( void* p );
+    static void _colorDefChanged(void* data);
+
+    void _linkTint( ColorItem& other, int percent );
+    void _linkTone( ColorItem& other, int percent, int grayLevel );
+
     Gtk::Tooltips tips;
+    std::vector<Gtk::Widget*> _previews;
+
+    bool _isLive;
+    bool _linkIsTone;
+    int _linkPercent;
+    int _linkGray;
+    ColorItem* _linkSrc;
+    std::vector<ColorItem*> _listeners;
 };
 
        
@@ -56,7 +89,7 @@ private:
 class SwatchesPanel : public Inkscape::UI::Widget::Panel
 {
 public:
-    SwatchesPanel();
+    SwatchesPanel(gchar const* prefsPath = "dialogs.swatches");
     virtual ~SwatchesPanel();
 
     static SwatchesPanel& getInstance();