Bug 384940 – handle rejecting jobs and authentication meaningfully

Patch by Marek Kasik, icons by Mike Langlie:
        * gtk/gtk.symbols:
        * gtk/gtkprintbackend.h:
        * gtk/gtkprinter.[hc]: Add new paused and accepting-jobs properties
        and getters/setters.

        * gtk/gtkstock.h:
        * gtk/gtkiconfactory.c:
        * gtk/Makefile.am:
        * gtk/stock-icons/{16,24}/gtk-print-paused.{png,svg}: New icon.

        * modules/printbackends/cups/gtkprintbackendcups.c:
        * gtk/gtkprintunixdialog.c: Handle paused and job-rejecting
        printers.


svn path=/trunk/; revision=20838
This commit is contained in:
Matthias Clasen 2008-07-15 17:34:34 +00:00
parent 1ea43444be
commit 1eb96eadfc
18 changed files with 1252 additions and 42 deletions

View File

@ -1,3 +1,22 @@
2008-07-15 Matthias Clasen <mclasen@redhat.com>
Bug 384940 handle rejecting jobs and authentication meaningfully
Patch by Marek Kasik, icons by Mike Langlie:
* gtk/gtk.symbols:
* gtk/gtkprintbackend.h:
* gtk/gtkprinter.[hc]: Add new paused and accepting-jobs properties
and getters/setters.
* gtk/gtkstock.h:
* gtk/gtkiconfactory.c:
* gtk/Makefile.am:
* gtk/stock-icons/{16,24}/gtk-print-paused.{png,svg}: New icon.
* modules/printbackends/cups/gtkprintbackendcups.c:
* gtk/gtkprintunixdialog.c: Handle paused and job-rejecting
printers.
2008-07-15 Matthias Clasen <mclasen@redhat.com>
* configure.in: Add a test to see if GIO can sniff image data,

View File

@ -1,3 +1,10 @@
2008-07-15 Matthias Clasen <mclasen@redhat.com>
* gtk/Makefile.am:
* gtk/tmpl/gtkstock.sgml: Add new icon.
* gtk/gtk-sections.txt: Add new GtkPrinter functions
2008-07-14 Matthias Clasen <mclasen@redhat.com>
* gtk/tmpl/gtklabel.sgml: Fix markup

View File

@ -242,6 +242,7 @@ HTML_IMAGES = \
$(top_srcdir)/gtk/stock-icons/24/gtk-preferences.png \
$(top_srcdir)/gtk/stock-icons/24/gtk-print.png \
$(top_srcdir)/gtk/stock-icons/24/gtk-print-error.png \
$(top_srcdir)/gtk/stock-icons/24/gtk-print-paused.png \
$(top_srcdir)/gtk/stock-icons/24/gtk-print-preview.png \
$(top_srcdir)/gtk/stock-icons/24/gtk-print-report.png \
$(top_srcdir)/gtk/stock-icons/24/gtk-print-warning.png \

View File

@ -6441,6 +6441,8 @@ gtk_printer_get_location
gtk_printer_get_icon_name
gtk_printer_get_job_count
gtk_printer_is_active
gtk_printer_is_paused
gtk_printer_is_accepting_jobs
gtk_printer_is_virtual
gtk_printer_is_default
gtk_printer_accepts_ps

View File

@ -755,13 +755,22 @@ The "Print" item.
<!-- ##### MACRO GTK_STOCK_PRINT_ERROR ##### -->
<para>
The "Print Error" item.
The "Print Error" icon.
<inlinegraphic fileref="gtk-print-error.png" format="PNG"></inlinegraphic>
</para>
@Since: 2.14
<!-- ##### MACRO GTK_STOCK_PRINT_PAUSED ##### -->
<para>
The "Print Paused" icon.
<inlinegraphic fileref="gtk-print-paused.png" format="PNG"></inlinegraphic>
</para>
@Since: 2.14
<!-- ##### MACRO GTK_STOCK_PRINT_PREVIEW ##### -->
<para>
The "Print Preview" item.
@ -772,7 +781,7 @@ The "Print Preview" item.
<!-- ##### MACRO GTK_STOCK_PRINT_REPORT ##### -->
<para>
The "Print Report" item.
The "Print Report" icon.
<inlinegraphic fileref="gtk-print-report.png" format="PNG"></inlinegraphic>
</para>
@ -781,7 +790,7 @@ The "Print Report" item.
<!-- ##### MACRO GTK_STOCK_PRINT_WARNING ##### -->
<para>
The "Print Warning" item.
The "Print Warning" icon.
<inlinegraphic fileref="gtk-print-warning.png" format="PNG"></inlinegraphic>
</para>

View File

@ -1000,6 +1000,7 @@ STOCK_ICONS = \
stock-icons/16/gtk-preferences.png \
stock-icons/16/gtk-print.png \
stock-icons/16/gtk-print-error.png \
stock-icons/16/gtk-print-paused.png \
stock-icons/16/gtk-print-preview.png \
stock-icons/16/gtk-print-report.png \
stock-icons/16/gtk-print-warning.png \
@ -1109,6 +1110,7 @@ STOCK_ICONS = \
stock-icons/24/gtk-preferences.png \
stock-icons/24/gtk-print.png \
stock-icons/24/gtk-print-error.png \
stock-icons/24/gtk-print-paused.png \
stock-icons/24/gtk-print-preview.png \
stock-icons/24/gtk-print-report.png \
stock-icons/24/gtk-print-warning.png \

View File

@ -2691,12 +2691,16 @@ gtk_printer_set_description
gtk_printer_set_has_details
gtk_printer_set_icon_name
gtk_printer_set_is_active
gtk_printer_set_is_paused
gtk_printer_set_is_accepting_jobs
gtk_printer_set_is_default
gtk_printer_set_is_new
gtk_printer_set_job_count
gtk_printer_set_location
gtk_printer_set_state_message
gtk_printer_is_active
gtk_printer_is_paused
gtk_printer_is_accepting_jobs
gtk_printer_is_new
gtk_printer_is_default
#endif

View File

@ -452,6 +452,7 @@ get_default_icons (GtkIconFactory *factory)
register_stock_icon (factory, GTK_STOCK_PREFERENCES);
register_stock_icon (factory, GTK_STOCK_PRINT);
register_stock_icon (factory, GTK_STOCK_PRINT_ERROR);
register_stock_icon (factory, GTK_STOCK_PRINT_PAUSED);
register_stock_icon (factory, GTK_STOCK_PRINT_PREVIEW);
register_stock_icon (factory, GTK_STOCK_PRINT_REPORT);
register_stock_icon (factory, GTK_STOCK_PRINT_WARNING);

View File

@ -149,30 +149,32 @@ void gtk_print_backend_set_list_done (GtkPrintBackend *bac
/* Backend-only functions for GtkPrinter */
GtkPrinter *gtk_printer_new (const char *name,
GtkPrintBackend *backend,
gboolean is_virtual);
gboolean gtk_printer_is_new (GtkPrinter *printer);
void gtk_printer_set_is_new (GtkPrinter *printer,
gboolean val);
void gtk_printer_set_is_active (GtkPrinter *printer,
gboolean val);
void gtk_printer_set_has_details (GtkPrinter *printer,
gboolean val);
void gtk_printer_set_is_default (GtkPrinter *printer,
gboolean val);
void gtk_printer_set_icon_name (GtkPrinter *printer,
const gchar *icon);
gboolean gtk_printer_set_job_count (GtkPrinter *printer,
gint count);
gboolean gtk_printer_set_location (GtkPrinter *printer,
const gchar *location);
gboolean gtk_printer_set_description (GtkPrinter *printer,
const gchar *description);
gboolean gtk_printer_set_state_message (GtkPrinter *printer,
const gchar *message);
void gtk_printer_set_is_active (GtkPrinter *printer,
gboolean active);
GtkPrinter *gtk_printer_new (const char *name,
GtkPrintBackend *backend,
gboolean is_virtual);
gboolean gtk_printer_is_new (GtkPrinter *printer);
void gtk_printer_set_is_new (GtkPrinter *printer,
gboolean val);
void gtk_printer_set_is_active (GtkPrinter *printer,
gboolean val);
gboolean gtk_printer_set_is_paused (GtkPrinter *printer,
gboolean val);
gboolean gtk_printer_set_is_accepting_jobs (GtkPrinter *printer,
gboolean val);
void gtk_printer_set_has_details (GtkPrinter *printer,
gboolean val);
void gtk_printer_set_is_default (GtkPrinter *printer,
gboolean val);
void gtk_printer_set_icon_name (GtkPrinter *printer,
const gchar *icon);
gboolean gtk_printer_set_job_count (GtkPrinter *printer,
gint count);
gboolean gtk_printer_set_location (GtkPrinter *printer,
const gchar *location);
gboolean gtk_printer_set_description (GtkPrinter *printer,
const gchar *description);
gboolean gtk_printer_set_state_message (GtkPrinter *printer,
const gchar *message);
G_END_DECLS

View File

@ -43,13 +43,15 @@ struct _GtkPrinterPrivate
gchar *description;
gchar *icon_name;
guint is_active : 1;
guint is_new : 1;
guint is_virtual : 1;
guint is_default : 1;
guint has_details : 1;
guint accepts_pdf : 1;
guint accepts_ps : 1;
guint is_active : 1;
guint is_paused : 1;
guint is_accepting_jobs : 1;
guint is_new : 1;
guint is_virtual : 1;
guint is_default : 1;
guint has_details : 1;
guint accepts_pdf : 1;
guint accepts_ps : 1;
gchar *state_message;
gint job_count;
@ -72,7 +74,9 @@ enum {
PROP_ICON_NAME,
PROP_JOB_COUNT,
PROP_ACCEPTS_PDF,
PROP_ACCEPTS_PS
PROP_ACCEPTS_PS,
PROP_PAUSED,
PROP_ACCEPTING_JOBS
};
static guint signals[LAST_SIGNAL] = { 0 };
@ -179,6 +183,37 @@ gtk_printer_class_init (GtkPrinterClass *class)
0,
GTK_PARAM_READABLE));
/**
* GtkPrinter:paused:
*
* This property is %TRUE if this printer is paused.
* A paused printer still accepts jobs, but it does
* not print them.
*
* Since: 2.14
*/
g_object_class_install_property (G_OBJECT_CLASS (class),
PROP_PAUSED,
g_param_spec_boolean ("paused",
P_("Paused Printer"),
P_("TRUE if this printer is paused"),
FALSE,
GTK_PARAM_READABLE));
/**
* GtkPrinter:accepting-jobs:
*
* This property is %TRUE if the printer is accepting jobs.
*
* Since: 2.14
*/
g_object_class_install_property (G_OBJECT_CLASS (class),
PROP_ACCEPTING_JOBS,
g_param_spec_boolean ("accepting-jobs",
P_("Accepting Jobs"),
P_("TRUE if this printer is accepting new jobs"),
TRUE,
GTK_PARAM_READABLE));
/**
* GtkPrinter::details-acquired:
* @printer: the #GtkPrinter on which the signal is emitted
@ -213,6 +248,8 @@ gtk_printer_init (GtkPrinter *printer)
priv->icon_name = NULL;
priv->is_active = TRUE;
priv->is_paused = FALSE;
priv->is_accepting_jobs = TRUE;
priv->is_new = TRUE;
priv->has_details = FALSE;
priv->accepts_pdf = TRUE;
@ -327,6 +364,12 @@ gtk_printer_get_property (GObject *object,
case PROP_ACCEPTS_PS:
g_value_set_boolean (value, priv->accepts_ps);
break;
case PROP_PAUSED:
g_value_set_boolean (value, priv->is_paused);
break;
case PROP_ACCEPTING_JOBS:
g_value_set_boolean (value, priv->is_accepting_jobs);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@ -635,6 +678,79 @@ gtk_printer_set_is_active (GtkPrinter *printer,
printer->priv->is_active = val;
}
/**
* gtk_printer_is_paused:
* @printer: a #GtkPrinter
*
* Returns whether the printer is currently paused.
* A paused printer still accepts jobs, but it is not
* printing them.
*
* Return value: %TRUE if @printer is paused
*
* Since: 2.14
*/
gboolean
gtk_printer_is_paused (GtkPrinter *printer)
{
g_return_val_if_fail (GTK_IS_PRINTER (printer), TRUE);
return printer->priv->is_paused;
}
gboolean
gtk_printer_set_is_paused (GtkPrinter *printer,
gboolean val)
{
GtkPrinterPrivate *priv;
g_return_val_if_fail (GTK_IS_PRINTER (printer), FALSE);
priv = printer->priv;
if (val == priv->is_paused)
return FALSE;
priv->is_paused = val;
return TRUE;
}
/**
* gtk_printer_is_accepting_jobs:
* @printer: a #GtkPrinter
*
* Returns whether the printer is accepting jobs
*
* Return value: %TRUE if @printer is accepting jobs
*
* Since: 2.14
*/
gboolean
gtk_printer_is_accepting_jobs (GtkPrinter *printer)
{
g_return_val_if_fail (GTK_IS_PRINTER (printer), TRUE);
return printer->priv->is_accepting_jobs;
}
gboolean
gtk_printer_set_is_accepting_jobs (GtkPrinter *printer,
gboolean val)
{
GtkPrinterPrivate *priv;
g_return_val_if_fail (GTK_IS_PRINTER (printer), FALSE);
priv = printer->priv;
if (val == priv->is_accepting_jobs)
return FALSE;
priv->is_accepting_jobs = val;
return TRUE;
}
/**
* gtk_printer_is_virtual:

View File

@ -99,6 +99,8 @@ G_CONST_RETURN gchar *gtk_printer_get_location (GtkPrinter *pri
G_CONST_RETURN gchar *gtk_printer_get_icon_name (GtkPrinter *printer);
gint gtk_printer_get_job_count (GtkPrinter *printer);
gboolean gtk_printer_is_active (GtkPrinter *printer);
gboolean gtk_printer_is_paused (GtkPrinter *printer);
gboolean gtk_printer_is_accepting_jobs (GtkPrinter *printer);
gboolean gtk_printer_is_virtual (GtkPrinter *printer);
gboolean gtk_printer_is_default (GtkPrinter *printer);
gboolean gtk_printer_accepts_pdf (GtkPrinter *printer);

View File

@ -96,6 +96,12 @@ static gboolean dialog_get_collate (GtkPrintUnixDialog *dialog);
static gboolean dialog_get_reverse (GtkPrintUnixDialog *dialog);
static gint dialog_get_n_copies (GtkPrintUnixDialog *dialog);
static void set_cell_sensitivity_func (GtkTreeViewColumn *tree_column,
GtkCellRenderer *cell,
GtkTreeModel *model,
GtkTreeIter *iter,
gpointer data);
/* GtkBuildable */
static void gtk_print_unix_dialog_buildable_init (GtkBuildableIface *iface);
static GObject *gtk_print_unix_dialog_buildable_get_internal_child (GtkBuildable *buildable,
@ -309,12 +315,12 @@ add_custom_button_to_dialog (GtkDialog *dialog,
gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, response_id);
}
/* Presents an overwrite confirmation dialog ("print to file" backend).
/* This function handles error messages before printing.
*/
static gboolean
overwrite_confirmation_dialog (GtkPrintUnixDialog *print_dialog,
gint print_dialog_response_id,
gpointer data)
error_dialogs (GtkPrintUnixDialog *print_dialog,
gint print_dialog_response_id,
gpointer data)
{
GtkPrintUnixDialogPrivate *priv = print_dialog->priv;
GtkPrinterOption *option = NULL;
@ -330,6 +336,8 @@ overwrite_confirmation_dialog (GtkPrintUnixDialog *print_dialog,
{
printer = gtk_print_unix_dialog_get_selected_printer (print_dialog);
/* Shows overwrite confirmation dialog in the case of printing to file which
* already exists. */
if (printer != NULL && gtk_printer_is_virtual (printer))
{
option = gtk_printer_option_set_lookup (priv->options,
@ -418,7 +426,7 @@ gtk_print_unix_dialog_init (GtkPrintUnixDialog *dialog)
g_signal_connect (dialog,
"response",
(GCallback) overwrite_confirmation_dialog,
(GCallback) error_dialogs,
NULL);
priv->preview_button = gtk_button_new_from_stock (GTK_STOCK_PRINT_PREVIEW);
@ -568,6 +576,28 @@ gtk_print_unix_dialog_buildable_get_internal_child (GtkBuildable *buildable,
return parent_buildable_iface->get_internal_child (buildable, builder, childname);
}
/* This function controls "sensitive" property of GtkCellRenderer based on pause
* state of printers. */
void set_cell_sensitivity_func (GtkTreeViewColumn *tree_column,
GtkCellRenderer *cell,
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gpointer data)
{
GtkPrinter *printer;
gtk_tree_model_get (tree_model, iter, PRINTER_LIST_COL_PRINTER_OBJ, &printer, -1);
if (printer != NULL && !gtk_printer_is_accepting_jobs (printer))
g_object_set (cell,
"sensitive", FALSE,
NULL);
else
g_object_set (cell,
"sensitive", TRUE,
NULL);
}
static void
printer_status_cb (GtkPrintBackend *backend,
GtkPrinter *printer,
@ -575,6 +605,7 @@ printer_status_cb (GtkPrintBackend *backend,
{
GtkPrintUnixDialogPrivate *priv = dialog->priv;
GtkTreeIter *iter;
GtkTreeSelection *selection;
iter = g_object_get_data (G_OBJECT (printer), "gtk-print-tree-iter");
@ -585,6 +616,10 @@ printer_status_cb (GtkPrintBackend *backend,
PRINTER_LIST_COL_LOCATION, gtk_printer_get_location (printer),
-1);
/* When the pause state change then we need to update sensitive property
* of GTK_RESPONSE_OK button inside of selected_printer_changed function. */
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->printer_treeview));
selected_printer_changed (selection, dialog);
}
static void
@ -1410,6 +1445,21 @@ selected_printer_changed (GtkTreeSelection *selection,
PRINTER_LIST_COL_PRINTER_OBJ, &printer,
-1);
}
/* sets GTK_RESPONSE_OK button sensitive/insensitive depending on whether the printer
* accepts/rejects jobs */
if (printer != NULL)
{
if (!gtk_printer_is_accepting_jobs (printer))
{
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE);
}
else
{
if (priv->current_printer == printer && gtk_printer_has_details (printer))
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, TRUE);
}
}
if (printer != NULL && !gtk_printer_has_details (printer))
{
@ -1445,7 +1495,8 @@ selected_printer_changed (GtkTreeSelection *selection,
priv->printer_capabilities = 0;
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, TRUE);
if (gtk_printer_is_accepting_jobs (printer))
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, TRUE);
priv->current_printer = printer;
if (printer != NULL)
@ -1659,6 +1710,7 @@ create_main_page (GtkPrintUnixDialog *dialog)
"icon-name",
PRINTER_LIST_COL_ICON,
NULL);
gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
renderer = gtk_cell_renderer_text_new ();
@ -1667,6 +1719,7 @@ create_main_page (GtkPrintUnixDialog *dialog)
"text",
PRINTER_LIST_COL_NAME,
NULL);
gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
renderer = gtk_cell_renderer_text_new ();
@ -1675,6 +1728,7 @@ create_main_page (GtkPrintUnixDialog *dialog)
"text",
PRINTER_LIST_COL_LOCATION,
NULL);
gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
renderer = gtk_cell_renderer_text_new ();
@ -1684,6 +1738,7 @@ create_main_page (GtkPrintUnixDialog *dialog)
"text",
PRINTER_LIST_COL_STATE,
NULL);
gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
gtk_widget_show (treeview);

View File

@ -148,6 +148,7 @@ void gtk_stock_set_translate_func (const gchar *domain,
#define GTK_STOCK_PREFERENCES "gtk-preferences"
#define GTK_STOCK_PRINT "gtk-print"
#define GTK_STOCK_PRINT_ERROR "gtk-print-error"
#define GTK_STOCK_PRINT_PAUSED "gtk-print-paused"
#define GTK_STOCK_PRINT_PREVIEW "gtk-print-preview"
#define GTK_STOCK_PRINT_REPORT "gtk-print-report"
#define GTK_STOCK_PRINT_WARNING "gtk-print-warning"

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

View File

@ -0,0 +1,490 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
id="svg4908"
sodipodi:version="0.32"
inkscape:version="0.46"
version="1.0"
sodipodi:docbase="/home/andreas/project/gtk/24"
sodipodi:docname="gtk-print-paused.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/mkasik/Devel/Bugs/gtk+384940/icons/GTK/16x16/gtk-print-paused.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:modified="true">
<defs
id="defs4910">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient3441"
gradientUnits="userSpaceOnUse"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526"
gradientTransform="translate(0,4.0216698)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient3456"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)" />
<linearGradient
id="linearGradient7658"
inkscape:collect="always">
<stop
id="stop7660"
offset="0"
style="stop-color:#d3d7cf" />
<stop
id="stop7662"
offset="1"
style="stop-color:#eeeeec" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient3447"
gradientUnits="userSpaceOnUse"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
<linearGradient
id="linearGradient3460">
<stop
id="stop3462"
offset="0"
style="stop-color:#343533;stop-opacity:1;" />
<stop
id="stop3464"
offset="1"
style="stop-color:#343533;stop-opacity:0.5;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient3458"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)" />
<linearGradient
inkscape:collect="always"
id="linearGradient3061">
<stop
style="stop-color:black;stop-opacity:1;"
offset="0"
id="stop3063" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop3065" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3061"
id="radialGradient2559"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.025362,0,-1.055427)"
cx="40.393475"
cy="41.613941"
fx="40.393475"
fy="41.613941"
r="6.0987959" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective3630" />
<linearGradient
inkscape:collect="always"
id="linearGradient6093">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6095" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6097" />
</linearGradient>
<linearGradient
id="linearGradient6056"
inkscape:collect="always">
<stop
id="stop6058"
offset="0"
style="stop-color:#ffffff;stop-opacity:1" />
<stop
id="stop6060"
offset="1"
style="stop-color:#d3d7cf;stop-opacity:1" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6056"
id="linearGradient5966"
x1="13.84057"
y1="9.1469946"
x2="4.4762087"
y2="-0.6407786"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6093"
id="linearGradient6099"
x1="11.5625"
y1="11.125"
x2="11.5625"
y2="8.1793661"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.5,0,6)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient3683"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient3685"
gradientUnits="userSpaceOnUse"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient3687"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient3689"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,4.0216698)"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
<linearGradient
gradientTransform="matrix(0.7142859,0,0,0.5,-0.5714286,1.9999993)"
gradientUnits="userSpaceOnUse"
y2="8.1793661"
x2="11.5625"
y1="11.125"
x1="11.5625"
id="linearGradient2586"
xlink:href="#linearGradient6093"
inkscape:collect="always" />
<linearGradient
gradientTransform="matrix(0.6923078,0,0,0.7231216,-0.3076923,-0.5846825)"
gradientUnits="userSpaceOnUse"
y2="-0.6407786"
x2="4.4762087"
y1="9.1469946"
x1="13.84057"
id="linearGradient2584"
xlink:href="#linearGradient6056"
inkscape:collect="always" />
<inkscape:perspective
id="perspective2569"
inkscape:persp3d-origin="8 : 5.3333333 : 1"
inkscape:vp_z="16 : 8 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 8 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient2437"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient2439"
gradientUnits="userSpaceOnUse"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient2441"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient2443"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,4.0216698)"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient2446"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6995928,0,0,0.9030326,-17.378453,29.075599)"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient2449"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6558683,0,0,0.728113,-15.618892,18.520083)"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient2452"
gradientUnits="userSpaceOnUse"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526"
gradientTransform="matrix(0.6558683,0,0,0.6558683,-15.618892,15.667983)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient2455"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6558683,0,0,0.728113,-15.618892,18.810627)"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient2457"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.7014147,0,0,0.9184803,-17.458402,27.116392)"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="28.870159"
inkscape:cx="10.240631"
inkscape:cy="5.0417817"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
width="24px"
height="24px"
inkscape:window-width="1214"
inkscape:window-height="926"
inkscape:window-x="2"
inkscape:window-y="0"
inkscape:snap-global="false">
<inkscape:grid
type="xygrid"
id="grid2600" />
</sodipodi:namedview>
<metadata
id="metadata4913">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
inkscape:label="Layer 1"
id="g2588"
transform="translate(0,-3.124997e-2)">
<path
sodipodi:nodetypes="ccccccccc"
id="rect4923"
d="M 2.6650374,7.5 L 13.334962,7.5 L 15.5,10.027675 L 15.5,14.821727 C 15.5,15.214803 15.178132,15.53125 14.77832,15.53125 L 1.2216791,15.53125 C 0.82186963,15.53125 0.49999997,15.214803 0.49999997,14.821727 L 0.49999997,10.027675 L 2.6650374,7.5 z"
style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#555753;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccc"
id="path5915"
d="M 1.5,14.53125 L 1.5,10.424446 L 3.0764563,8.5 L 12.892294,8.5 L 14.5,10.424446 L 14.5,14.53125 L 1.5,14.53125 z"
style="opacity:0.49456524;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccc"
id="rect5952"
d="M 4.1994739,0.50000003 L 11.800527,0.50000003 C 12.188035,0.50000003 12.499999,0.82585053 12.499999,1.2306065 L 12.499999,8.4999998 L 3.5,8.4999998 L 3.5,1.2306065 C 3.5,0.82585053 3.8119654,0.50000003 4.1994739,0.50000003 z"
style="opacity:1;fill:url(#linearGradient5966);fill-opacity:1;stroke:#797c76;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0.3157346"
rx="0.3157346"
y="1.5"
x="4.5"
height="7"
width="7"
id="rect5968"
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0"
rx="0"
y="3"
x="5"
height="0.99999994"
width="6"
id="rect5975"
style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0"
rx="0"
y="5"
x="5"
height="0.99999994"
width="6"
id="rect5979"
style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="6"
x="3"
height="2.0000002"
width="10"
id="rect6091"
style="opacity:0.19565214;fill:url(#linearGradient6099);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
id="path5911"
d="M 2,10.492194 L 14,10.492194"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path5913"
d="M 3.016466,8.5 L 12.983534,8.5"
style="fill:none;fill-rule:evenodd;stroke:#555753;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4922"
d="M 3.03125,12.5 L 13,12.5"
style="fill:none;fill-rule:evenodd;stroke:#555753;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g2473">
<path
transform="matrix(0.6448281,0,0,0.6292846,-14.498837,-15.243863)"
d="M 46.49227,41.613941 A 6.0987959,6.2534757 0 1 1 34.294679,41.613941 A 6.0987959,6.2534757 0 1 1 46.49227,41.613941 z"
sodipodi:ry="6.2534757"
sodipodi:rx="6.0987959"
sodipodi:cy="41.613941"
sodipodi:cx="40.393475"
id="path2155"
style="fill:#61635f;fill-opacity:1;stroke:#555753;stroke-width:1.02960598;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
sodipodi:type="arc" />
<path
transform="matrix(0.5373509,0,0,0.5244034,-10.157457,-10.879337)"
d="M 46.49227,41.613941 A 6.0987959,6.2534757 0 1 1 34.294679,41.613941 A 6.0987959,6.2534757 0 1 1 46.49227,41.613941 z"
sodipodi:ry="6.2534757"
sodipodi:rx="6.0987959"
sodipodi:cy="41.613941"
sodipodi:cx="40.393475"
id="path3046"
style="opacity:0.11442787;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.23553479;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
sodipodi:type="arc" />
<path
sodipodi:nodetypes="cccc"
id="path3048"
d="M 11.550546,7.3358741 C 9.5607277,7.3358741 7.9432692,8.9520274 7.9432699,10.94315 C 11.000296,13.818432 12.85442,8.9866238 15.157821,10.94315 C 15.157821,8.9520261 13.540364,7.3358754 11.550546,7.3358741 z"
style="opacity:0.1243781;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.23553479;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<g
id="g2459">
<rect
style="opacity:0.76119403;fill:url(#linearGradient2455);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
id="rect3406"
width="4.9041333"
height="2.3370304"
x="8.5200682"
y="-14.030796"
transform="matrix(0,1,-1,0,0,0)" />
<rect
style="fill:url(#linearGradient2457);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
id="rect3408"
width="4.7148356"
height="2.1843958"
x="8.6069241"
y="-13.952147"
transform="matrix(0,1,-1,0,0,0)" />
<rect
style="opacity:0.76119403;fill:url(#linearGradient2449);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
id="rect3434"
width="4.9041333"
height="2.3370304"
x="8.5200682"
y="-11.393109"
transform="matrix(0,1,-1,0,0,0)" />
<rect
style="fill:url(#linearGradient2446);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
id="rect3436"
width="4.702589"
height="2.1476567"
x="8.6191702"
y="-11.302214"
transform="matrix(0,1,-1,0,0,0)" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,460 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
id="svg4908"
sodipodi:version="0.32"
inkscape:version="0.46"
version="1.0"
sodipodi:docbase="/home/andreas/project/gtk/24"
sodipodi:docname="gtk-print-pause.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/andreas/project/gtk/24/gtk-print.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:modified="true">
<defs
id="defs4910">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient3441"
gradientUnits="userSpaceOnUse"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526"
gradientTransform="translate(0,4.0216698)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient3456"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)" />
<linearGradient
id="linearGradient7658"
inkscape:collect="always">
<stop
id="stop7660"
offset="0"
style="stop-color:#d3d7cf" />
<stop
id="stop7662"
offset="1"
style="stop-color:#eeeeec" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient3447"
gradientUnits="userSpaceOnUse"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
<linearGradient
id="linearGradient3460">
<stop
id="stop3462"
offset="0"
style="stop-color:#343533;stop-opacity:1;" />
<stop
id="stop3464"
offset="1"
style="stop-color:#343533;stop-opacity:0.5;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient3458"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)" />
<linearGradient
inkscape:collect="always"
id="linearGradient3061">
<stop
style="stop-color:black;stop-opacity:1;"
offset="0"
id="stop3063" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop3065" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3061"
id="radialGradient2559"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.025362,0,-1.055427)"
cx="40.393475"
cy="41.613941"
fx="40.393475"
fy="41.613941"
r="6.0987959" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 12 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="24 : 12 : 1"
inkscape:persp3d-origin="12 : 8 : 1"
id="perspective3630" />
<linearGradient
inkscape:collect="always"
id="linearGradient6093">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6095" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6097" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6057">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6059" />
<stop
style="stop-color:#737373;stop-opacity:1"
offset="1"
id="stop6061" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6009">
<stop
style="stop-color:#edeeec;stop-opacity:1;"
offset="0"
id="stop6011" />
<stop
style="stop-color:#d4d7d2;stop-opacity:1"
offset="1"
id="stop6013" />
</linearGradient>
<linearGradient
id="linearGradient6056"
inkscape:collect="always">
<stop
id="stop6058"
offset="0"
style="stop-color:#ffffff;stop-opacity:1" />
<stop
id="stop6060"
offset="1"
style="stop-color:#d3d7cf;stop-opacity:1" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6056"
id="linearGradient5966"
x1="13.84057"
y1="9.1469946"
x2="4.4762087"
y2="-0.6407786"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6009"
id="linearGradient6015"
x1="19.959274"
y1="14.042688"
x2="20.003927"
y2="17.972033"
gradientUnits="userSpaceOnUse" />
<filter
inkscape:collect="always"
x="-0.061363636"
width="1.1227273"
y="-0.27"
height="1.54"
id="filter6053">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.675"
id="feGaussianBlur6055" />
</filter>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6057"
id="linearGradient6063"
x1="21.027927"
y1="15.601459"
x2="21.027927"
y2="18.950628"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6093"
id="linearGradient6099"
x1="11.5625"
y1="11.125"
x2="11.5625"
y2="8.1793661"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.5,0,6)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient3683"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient3685"
gradientUnits="userSpaceOnUse"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3460"
id="linearGradient3687"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)"
x1="44.287689"
y1="-39.951534"
x2="36.799889"
y2="-39.951534" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7658"
id="linearGradient3689"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,4.0216698)"
x1="43.882969"
y1="-42.861526"
x2="39.987103"
y2="-42.861526" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16"
inkscape:cx="12.34558"
inkscape:cy="11.36666"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
width="24px"
height="24px"
inkscape:window-width="647"
inkscape:window-height="702"
inkscape:window-x="0"
inkscape:window-y="29" />
<metadata
id="metadata4913">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3632">
<rect
ry="1.4601421"
rx="1.4601421"
y="19"
x="1"
height="5"
width="22"
id="rect6019"
style="opacity:0.23913042;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter6053)" />
<rect
ry="1.4601421"
rx="1.4601421"
y="19.579716"
x="2.5"
height="2.9202843"
width="18.906809"
id="rect5895"
style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#555753;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccccc"
id="rect4923"
d="M 4.5310526,10.532094 L 19.468949,10.532094 L 22.500002,14.131469 L 22.500002,19.489649 C 22.500002,20.049384 22.049386,20.5 21.489651,20.5 L 2.5103509,20.5 C 1.9506166,20.5 1.5000001,20.049384 1.5000001,19.489649 L 1.5000001,14.131469 L 4.5310526,10.532094 z "
style="fill:url(#linearGradient6015);fill-opacity:1.0;stroke:#555753;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1" />
<rect
ry="0.31573462"
rx="0.31573462"
y="14"
x="2"
height="6"
width="20"
id="rect5972"
style="opacity:0.23913043;fill:url(#linearGradient6063);fill-opacity:1.0;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccc"
id="path6071"
d="M 2.5,14.446516 L 2.5,19.534838 L 21.522081,19.534838 L 21.522081,14.446516 L 18.988038,11.477919 L 4.9216374,11.477919 L 2.5,14.446516 z "
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.3423913" />
<path
sodipodi:nodetypes="cc"
id="path5970"
d="M 3.5310529,14.5 L 20.5,14.5"
style="opacity:0.38586957;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="16.5"
x="4.5"
height="2"
width="14.999998"
id="rect6065"
style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccc"
id="rect5952"
d="M 6.5103508,1.5 L 17.48965,1.5 C 18.049384,1.5 18.500001,1.9506165 18.500001,2.5103509 L 18.500001,12.563146 L 5.5,12.563146 L 5.5,2.5103509 C 5.5,1.9506165 5.9506165,1.5 6.5103508,1.5 z "
style="fill:url(#linearGradient5966);fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1" />
<rect
ry="0.3157346"
rx="0.31573462"
y="2.4999998"
x="6.5"
height="10"
width="11"
id="rect5968"
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0"
rx="0"
y="4"
x="8"
height="0.99999976"
width="8"
id="rect5975"
style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0"
rx="0"
y="6"
x="8"
height="0.99999976"
width="8"
id="rect5979"
style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0"
rx="0"
y="8"
x="8"
height="0.99999976"
width="8"
id="rect5987"
style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
id="path6069"
d="M 4.541708,12.5 L 19.5,12.5"
style="fill:none;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="10"
x="5"
height="2"
width="14"
id="rect6091"
style="opacity:0.19565214;fill:url(#linearGradient6099);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<g
id="g3472"
transform="matrix(0.9567392,0,0,0.9567392,-22.044959,-21.966195)">
<path
transform="matrix(0.983167,0,0,0.959468,1.7825924,0.5718055)"
d="M 46.49227,41.613941 A 6.0987959,6.2534757 0 1 1 34.294679,41.613941 A 6.0987959,6.2534757 0 1 1 46.49227,41.613941 z"
sodipodi:ry="6.2534757"
sodipodi:rx="6.0987959"
sodipodi:cy="41.613941"
sodipodi:cx="40.393475"
id="path2155"
style="fill:#61635f;fill-opacity:1;stroke:#555753;stroke-width:1.02960597999999992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057000000004;stroke-opacity:1"
sodipodi:type="arc" />
<path
transform="matrix(0.819297,0,0,0.799556,8.4018784,7.2263815)"
d="M 46.49227,41.613941 A 6.0987959,6.2534757 0 1 1 34.294679,41.613941 A 6.0987959,6.2534757 0 1 1 46.49227,41.613941 z"
sodipodi:ry="6.2534757"
sodipodi:rx="6.0987959"
sodipodi:cy="41.613941"
sodipodi:cx="40.393475"
id="path3046"
style="opacity:0.11442786;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.23553479000000022;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057000000004;stroke-opacity:1"
sodipodi:type="arc" />
<path
sodipodi:nodetypes="cccc"
id="path3048"
d="M 41.499991,34.999048 C 38.466123,34.999048 35.99999,37.463191 35.999991,40.499048 C 40.661027,44.88298 43.488004,37.51594 46.999991,40.499048 C 46.999991,37.463189 44.53386,34.99905 41.499991,34.999048 z"
style="opacity:0.12437811;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.23553479000000022;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057000000004;stroke-opacity:1" />
<g
id="g3466">
<rect
style="opacity:0.76119403;fill:url(#linearGradient3683);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
id="rect3406"
width="7.4773145"
height="3.5632617"
x="36.804585"
y="-45.28162"
transform="matrix(0,1,-1,0,0,0)" />
<rect
style="fill:url(#linearGradient3685);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
id="rect3408"
width="6.7218947"
height="2.3782718"
x="37.161076"
y="-44.713577"
transform="matrix(0,1,-1,0,0,0)" />
<rect
style="opacity:0.76119403;fill:url(#linearGradient3687);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
id="rect3434"
width="7.4773145"
height="3.5632617"
x="36.804585"
y="-41.259949"
transform="matrix(0,1,-1,0,0,0)" />
<rect
style="fill:url(#linearGradient3689);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
id="rect3436"
width="6.7218947"
height="2.3782718"
x="37.161076"
y="-40.691906"
transform="matrix(0,1,-1,0,0,0)" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1058,6 +1058,7 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
const gchar *reason_msg = NULL;
gchar *reason_msg_desc = NULL;
gchar *tmp_msg = NULL;
gchar *tmp_msg2 = NULL;
gint printer_state_reason_level = 0; /* 0 - none, 1 - report, 2 - warning, 3 - error */
gboolean interested_in = FALSE;
gboolean found = FALSE;
@ -1093,6 +1094,8 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
N_("Printer '%s' may not be connected."),
N_("There is a problem on printer '%s'.")
};
gboolean is_paused = FALSE;
gboolean is_accepting_jobs = TRUE;
/* Skip leading attributes until we hit a printer...
*/
@ -1127,6 +1130,12 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
{
if (strcmp (attr->values[i].string.text, "none") != 0)
{
/* Sets is_paused flag for paused printer. */
if (strcmp (attr->values[i].string.text, "paused") == 0)
{
is_paused = TRUE;
}
interested_in = FALSE;
for (j = 0; j < G_N_ELEMENTS (reasons); j++)
if (strncmp (attr->values[i].string.text, reasons[j], strlen (reasons[j])) == 0)
@ -1166,6 +1175,13 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
state = attr->values[0].integer;
else if (strcmp (attr->name, "queued-job-count") == 0)
job_count = attr->values[0].integer;
else if (strcmp (attr->name, "printer-is-accepting-jobs") == 0)
{
if (attr->values[0].boolean == 1)
is_accepting_jobs = TRUE;
else
is_accepting_jobs = FALSE;
}
else
{
GTK_NOTE (PRINTING,
@ -1262,6 +1278,9 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
else
g_object_ref (printer);
gtk_printer_set_is_paused (printer, is_paused);
gtk_printer_set_is_accepting_jobs (printer, is_accepting_jobs);
if (!gtk_printer_is_active (printer))
{
gtk_printer_set_is_active (printer, TRUE);
@ -1288,6 +1307,19 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
status_changed |= gtk_printer_set_location (printer, location);
status_changed |= gtk_printer_set_description (printer, description);
if (state_msg != NULL && strlen (state_msg) == 0)
{
if (is_paused && !is_accepting_jobs)
tmp_msg2 = g_strdup ( N_("Paused ; Rejecting Jobs"));
if (is_paused && is_accepting_jobs)
tmp_msg2 = g_strdup ( N_("Paused"));
if (!is_paused && !is_accepting_jobs)
tmp_msg2 = g_strdup ( N_("Rejecting Jobs"));
if (tmp_msg2 != NULL)
state_msg = tmp_msg2;
}
/* Set description of the reason and combine it with printer-state-message. */
if ( (reason_msg != NULL))
{
@ -1317,10 +1349,14 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
}
status_changed |= gtk_printer_set_state_message (printer, state_msg);
status_changed |= gtk_printer_set_is_accepting_jobs (printer, is_accepting_jobs);
if (tmp_msg != NULL)
g_free (tmp_msg);
if (tmp_msg2 != NULL)
g_free (tmp_msg2);
if (reason_msg_desc != NULL)
g_free (reason_msg_desc);
@ -1330,6 +1366,8 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
gtk_printer_set_icon_name (printer, "gtk-print-error");
else if (printer_state_reason_level == 2)
gtk_printer_set_icon_name (printer, "gtk-print-warning");
else if (gtk_printer_is_paused (printer))
gtk_printer_set_icon_name (printer, "gtk-print-paused");
else
gtk_printer_set_icon_name (printer, "gtk-print");
@ -1376,7 +1414,8 @@ cups_request_printer_list (GtkPrintBackendCups *cups_backend)
"printer-state-message",
"printer-state-reasons",
"printer-state",
"queued-job-count"
"queued-job-count",
"printer-is-accepting-jobs"
};
if (cups_backend->list_printers_pending ||