Code

Node tool: special case node duplication for endnodes - select new endnode
[inkscape.git] / src / extension / prefdialog.h
index bf30eda36617535eea455986be0ba56667f85f4c..0a10881d6889d4de120356ca86342e9549598d14 100644 (file)
@@ -2,7 +2,7 @@
  * Authors:
  *   Ted Gould <ted@gould.cx>
  *
- * Copyright (C) 2005 Authors
+ * Copyright (C) 2005,2007-2008 Authors
  *
  * Released under GNU GPL, read the file 'COPYING' for more information
  */
 #include <gdkmm/types.h>
 
 #include <gtkmm/dialog.h>
+#include <gtkmm/checkbutton.h>
 #include <gtkmm/socket.h>
 
+#include "execution-env.h"
+#include "param/parameter.h"
+
 namespace Inkscape {
 namespace Extension {
 
+/** \brief  A class to represent the preferences for an extension */
 class PrefDialog : public Gtk::Dialog {
     /** \brief  Help string if it exists */
     gchar const * _help;
     /** \brief  Name of the extension */
     Glib::ustring _name;
 
-public:
-    PrefDialog (Glib::ustring name, gchar const * help, Gtk::Widget * controls);
-    Gtk::ResponseType run (void);
+    /** \brief  A pointer to the OK button */
+    Gtk::Button * _button_ok;
+    /** \brief  A pointer to the CANCEL button */
+    Gtk::Button * _button_cancel;
+
+    /** \brief  Button to control live preview */
+    Gtk::Widget * _button_preview;
+    /** \brief  Checkbox for the preview */
+    Gtk::CheckButton * _checkbox_preview;
+
+    /** \brief  Parameter to control live preview */
+    Parameter * _param_preview;
+
+    /** \brief  XML to define the live effects parameter on the dialog */
+    static const char * live_param_xml;
 
+    /** \brief Signal that the user is changing the live effect state */
+    sigc::signal<void> _signal_preview;
+    /** \brief Signal that one of the parameters change */
+    sigc::signal<void> _signal_param_change;
+
+    /** \brief  If this is the preferences for an effect, the effect
+                that we're working with. */
+    Effect * _effect;
+    /** \brief  If we're executing in preview mode here is the execution
+                environment for the effect. */
+    ExecutionEnv * _exEnv;
+
+    /** \brief  The timer used to make it so that parameters don't respond
+                directly and allows for changes. */
+    sigc::connection _timersig;
+
+    void preview_toggle(void);
+    void param_change(void);
+    bool param_timer_expire(void);
+    void on_response (int signal);
+
+public:
+    PrefDialog (Glib::ustring name,
+                gchar const * help,
+                Gtk::Widget * controls = NULL,
+                Effect * effect = NULL);
+    virtual ~PrefDialog ();
 };