]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkprinteroption.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtkprinteroption.c
index fbf2545b6d06a07180e64c33a211bb356d4b5f5a..644fe209dc2f2f82f41638e874646ff491fb80e7 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "config.h"
 #include <string.h>
 #include <gmodule.h>
 
+#include "gtkintl.h"
+#include "gtkprivate.h"
 #include "gtkprinteroption.h"
 
 /*****************************************
@@ -33,8 +33,22 @@ enum {
   LAST_SIGNAL
 };
 
+enum {
+  PROP_0,
+  PROP_VALUE
+};
+
 static guint signals[LAST_SIGNAL] = { 0 };
 
+static void gtk_printer_option_set_property (GObject      *object,
+                                             guint         prop_id,
+                                             const GValue *value,
+                                             GParamSpec   *pspec);
+static void gtk_printer_option_get_property (GObject      *object,
+                                             guint         prop_id,
+                                             GValue       *value,
+                                             GParamSpec   *pspec);
+
 G_DEFINE_TYPE (GtkPrinterOption, gtk_printer_option, G_TYPE_OBJECT)
 
 static void
@@ -71,6 +85,8 @@ gtk_printer_option_class_init (GtkPrinterOptionClass *class)
   GObjectClass *gobject_class = (GObjectClass *)class;
 
   gobject_class->finalize = gtk_printer_option_finalize;
+  gobject_class->set_property = gtk_printer_option_set_property;
+  gobject_class->get_property = gtk_printer_option_get_property;
 
   signals[CHANGED] =
     g_signal_new ("changed",
@@ -80,6 +96,14 @@ gtk_printer_option_class_init (GtkPrinterOptionClass *class)
                  NULL, NULL,
                  g_cclosure_marshal_VOID__VOID,
                  G_TYPE_NONE, 0);
+
+  g_object_class_install_property (G_OBJECT_CLASS (class),
+                                   PROP_VALUE,
+                                   g_param_spec_string ("value",
+                                                        P_("Option Value"),
+                                                        P_("Value of the option"),
+                                                        "",
+                                                        GTK_PARAM_READWRITE));
 }
 
 GtkPrinterOption *
@@ -97,6 +121,44 @@ gtk_printer_option_new (const char *name, const char *display_text,
   return option;
 }
 
+static void
+gtk_printer_option_set_property (GObject         *object,
+                                 guint            prop_id,
+                                 const GValue    *value,
+                                 GParamSpec      *pspec)
+{
+  GtkPrinterOption *option = GTK_PRINTER_OPTION (object);
+
+  switch (prop_id)
+    {
+    case PROP_VALUE:
+      gtk_printer_option_set (option, g_value_get_string (value));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+gtk_printer_option_get_property (GObject    *object,
+                                 guint       prop_id,
+                                 GValue     *value,
+                                 GParamSpec *pspec)
+{
+  GtkPrinterOption *option = GTK_PRINTER_OPTION (object);
+
+  switch (prop_id)
+    {
+    case PROP_VALUE:
+      g_value_set_string (value, option->value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
 static void
 emit_changed (GtkPrinterOption *option)
 {
@@ -114,8 +176,7 @@ gtk_printer_option_set (GtkPrinterOption *option,
     return;
 
   if ((option->type == GTK_PRINTER_OPTION_TYPE_PICKONE ||
-       option->type == GTK_PRINTER_OPTION_TYPE_ALTERNATIVE) &&
-      value != NULL)
+       option->type == GTK_PRINTER_OPTION_TYPE_ALTERNATIVE))
     {
       int i;
       
@@ -131,7 +192,7 @@ gtk_printer_option_set (GtkPrinterOption *option,
       if (i == option->num_choices)
        return; /* Not found in available choices */
     }
-  
+          
   g_free (option->value);
   option->value = g_strdup (value);