|
Packit Service |
fb6fa5 |
/* GTK - The GIMP Toolkit
|
|
Packit Service |
fb6fa5 |
* gtkprinteroption.c: Handling possible settings for a specific printer setting
|
|
Packit Service |
fb6fa5 |
* Copyright (C) 2006, Red Hat, Inc.
|
|
Packit Service |
fb6fa5 |
*
|
|
Packit Service |
fb6fa5 |
* This library is free software; you can redistribute it and/or
|
|
Packit Service |
fb6fa5 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit Service |
fb6fa5 |
* License as published by the Free Software Foundation; either
|
|
Packit Service |
fb6fa5 |
* version 2 of the License, or (at your option) any later version.
|
|
Packit Service |
fb6fa5 |
*
|
|
Packit Service |
fb6fa5 |
* This library is distributed in the hope that it will be useful,
|
|
Packit Service |
fb6fa5 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
fb6fa5 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
fb6fa5 |
* Lesser General Public License for more details.
|
|
Packit Service |
fb6fa5 |
*
|
|
Packit Service |
fb6fa5 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit Service |
fb6fa5 |
* License along with this library; if not, write to the
|
|
Packit Service |
fb6fa5 |
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Packit Service |
fb6fa5 |
* Boston, MA 02111-1307, USA.
|
|
Packit Service |
fb6fa5 |
*/
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
#include "config.h"
|
|
Packit Service |
fb6fa5 |
#include <string.h>
|
|
Packit Service |
fb6fa5 |
#include <gmodule.h>
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
#include "gtkprinteroption.h"
|
|
Packit Service |
fb6fa5 |
#include "gtkalias.h"
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/*****************************************
|
|
Packit Service |
fb6fa5 |
* GtkPrinterOption *
|
|
Packit Service |
fb6fa5 |
*****************************************/
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
enum {
|
|
Packit Service |
fb6fa5 |
CHANGED,
|
|
Packit Service |
fb6fa5 |
LAST_SIGNAL
|
|
Packit Service |
fb6fa5 |
};
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
static guint signals[LAST_SIGNAL] = { 0 };
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
G_DEFINE_TYPE (GtkPrinterOption, gtk_printer_option, G_TYPE_OBJECT)
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
static void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_finalize (GObject *object)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
GtkPrinterOption *option = GTK_PRINTER_OPTION (object);
|
|
Packit Service |
fb6fa5 |
int i;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
g_free (option->name);
|
|
Packit Service |
fb6fa5 |
g_free (option->display_text);
|
|
Packit Service |
fb6fa5 |
g_free (option->value);
|
|
Packit Service |
fb6fa5 |
for (i = 0; i < option->num_choices; i++)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
g_free (option->choices[i]);
|
|
Packit Service |
fb6fa5 |
g_free (option->choices_display[i]);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
g_free (option->choices);
|
|
Packit Service |
fb6fa5 |
g_free (option->choices_display);
|
|
Packit Service |
fb6fa5 |
g_free (option->group);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
G_OBJECT_CLASS (gtk_printer_option_parent_class)->finalize (object);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
static void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_init (GtkPrinterOption *option)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
option->value = g_strdup ("");
|
|
Packit Service |
fb6fa5 |
option->activates_default = FALSE;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
static void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_class_init (GtkPrinterOptionClass *class)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
GObjectClass *gobject_class = (GObjectClass *)class;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gobject_class->finalize = gtk_printer_option_finalize;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
signals[CHANGED] =
|
|
Packit Service |
fb6fa5 |
g_signal_new ("changed",
|
|
Packit Service |
fb6fa5 |
G_TYPE_FROM_CLASS (class),
|
|
Packit Service |
fb6fa5 |
G_SIGNAL_RUN_LAST,
|
|
Packit Service |
fb6fa5 |
G_STRUCT_OFFSET (GtkPrinterOptionClass, changed),
|
|
Packit Service |
fb6fa5 |
NULL, NULL,
|
|
Packit Service |
fb6fa5 |
g_cclosure_marshal_VOID__VOID,
|
|
Packit Service |
fb6fa5 |
G_TYPE_NONE, 0);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
GtkPrinterOption *
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_new (const char *name, const char *display_text,
|
|
Packit Service |
fb6fa5 |
GtkPrinterOptionType type)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
GtkPrinterOption *option;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
option = g_object_new (GTK_TYPE_PRINTER_OPTION, NULL);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
option->name = g_strdup (name);
|
|
Packit Service |
fb6fa5 |
option->display_text = g_strdup (display_text);
|
|
Packit Service |
fb6fa5 |
option->type = type;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
return option;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
static void
|
|
Packit Service |
fb6fa5 |
emit_changed (GtkPrinterOption *option)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
g_signal_emit (option, signals[CHANGED], 0);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_set (GtkPrinterOption *option,
|
|
Packit Service |
fb6fa5 |
const char *value)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
if (value == NULL)
|
|
Packit Service |
fb6fa5 |
value = "";
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if (strcmp (option->value, value) == 0)
|
|
Packit Service |
fb6fa5 |
return;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if ((option->type == GTK_PRINTER_OPTION_TYPE_PICKONE ||
|
|
Packit Service |
fb6fa5 |
option->type == GTK_PRINTER_OPTION_TYPE_ALTERNATIVE) &&
|
|
Packit Service |
fb6fa5 |
value != NULL)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
int i;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
for (i = 0; i < option->num_choices; i++)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
if (g_ascii_strcasecmp (value, option->choices[i]) == 0)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
value = option->choices[i];
|
|
Packit Service |
fb6fa5 |
break;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if (i == option->num_choices)
|
|
Packit Service |
fb6fa5 |
return; /* Not found in available choices */
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
g_free (option->value);
|
|
Packit Service |
fb6fa5 |
option->value = g_strdup (value);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
emit_changed (option);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_set_boolean (GtkPrinterOption *option,
|
|
Packit Service |
fb6fa5 |
gboolean value)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_set (option, value ? "True" : "False");
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_set_has_conflict (GtkPrinterOption *option,
|
|
Packit Service |
fb6fa5 |
gboolean has_conflict)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
has_conflict = has_conflict != 0;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if (option->has_conflict == has_conflict)
|
|
Packit Service |
fb6fa5 |
return;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
option->has_conflict = has_conflict;
|
|
Packit Service |
fb6fa5 |
emit_changed (option);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_clear_has_conflict (GtkPrinterOption *option)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_set_has_conflict (option, FALSE);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_allocate_choices (GtkPrinterOption *option,
|
|
Packit Service |
fb6fa5 |
int num)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
g_free (option->choices);
|
|
Packit Service |
fb6fa5 |
g_free (option->choices_display);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
option->num_choices = num;
|
|
Packit Service |
fb6fa5 |
if (num == 0)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
option->choices = NULL;
|
|
Packit Service |
fb6fa5 |
option->choices_display = NULL;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
else
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
option->choices = g_new0 (char *, num);
|
|
Packit Service |
fb6fa5 |
option->choices_display = g_new0 (char *, num);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_choices_from_array (GtkPrinterOption *option,
|
|
Packit Service |
fb6fa5 |
int num_choices,
|
|
Packit Service |
fb6fa5 |
char *choices[],
|
|
Packit Service |
fb6fa5 |
char *choices_display[])
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
int i;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_allocate_choices (option, num_choices);
|
|
Packit Service |
fb6fa5 |
for (i = 0; i < num_choices; i++)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
option->choices[i] = g_strdup (choices[i]);
|
|
Packit Service |
fb6fa5 |
option->choices_display[i] = g_strdup (choices_display[i]);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gboolean
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_has_choice (GtkPrinterOption *option,
|
|
Packit Service |
fb6fa5 |
const char *choice)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
int i;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
for (i = 0; i < option->num_choices; i++)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
if (strcmp (option->choices[i], choice) == 0)
|
|
Packit Service |
fb6fa5 |
return TRUE;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
return FALSE;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
void
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_set_activates_default (GtkPrinterOption *option,
|
|
Packit Service |
fb6fa5 |
gboolean activates)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
g_return_if_fail (GTK_IS_PRINTER_OPTION (option));
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
option->activates_default = activates;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gboolean
|
|
Packit Service |
fb6fa5 |
gtk_printer_option_get_activates_default (GtkPrinterOption *option)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
g_return_val_if_fail (GTK_IS_PRINTER_OPTION (option), FALSE);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
return option->activates_default;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
#define __GTK_PRINTER_OPTION_C__
|
|
Packit Service |
fb6fa5 |
#include "gtkaliasdef.c"
|