printers: Remove printer add/remove buttons
Add setting of default printer.
This commit is contained in:
parent
03415e76be
commit
04d6e36347
2 changed files with 65 additions and 100 deletions
|
@ -61,6 +61,7 @@ static void actualize_jobs_list (CcPrintersPanel *self);
|
||||||
static void actualize_printers_list (CcPrintersPanel *self);
|
static void actualize_printers_list (CcPrintersPanel *self);
|
||||||
static void actualize_allowed_users_list (CcPrintersPanel *self);
|
static void actualize_allowed_users_list (CcPrintersPanel *self);
|
||||||
static void printer_disable_cb (GtkToggleButton *togglebutton, gpointer user_data);
|
static void printer_disable_cb (GtkToggleButton *togglebutton, gpointer user_data);
|
||||||
|
static void printer_set_default_cb (GtkToggleButton *button, gpointer user_data);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cc_printers_panel_get_property (GObject *object,
|
cc_printers_panel_get_property (GObject *object,
|
||||||
|
@ -327,6 +328,15 @@ printer_selection_changed_cb (GtkTreeSelection *selection,
|
||||||
g_signal_handlers_unblock_by_func (G_OBJECT (widget), printer_disable_cb, self);
|
g_signal_handlers_unblock_by_func (G_OBJECT (widget), printer_disable_cb, self);
|
||||||
|
|
||||||
|
|
||||||
|
widget = (GtkWidget*)
|
||||||
|
gtk_builder_get_object (priv->builder, "printer-default-check-button");
|
||||||
|
|
||||||
|
gtk_widget_set_sensitive (widget, TRUE);
|
||||||
|
g_signal_handlers_block_by_func (G_OBJECT (widget), printer_set_default_cb, self);
|
||||||
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), priv->dests[id].is_default);
|
||||||
|
g_signal_handlers_unblock_by_func (G_OBJECT (widget), printer_set_default_cb, self);
|
||||||
|
|
||||||
|
|
||||||
widget = (GtkWidget*)
|
widget = (GtkWidget*)
|
||||||
gtk_builder_get_object (priv->builder, "supply-drawing-area");
|
gtk_builder_get_object (priv->builder, "supply-drawing-area");
|
||||||
|
|
||||||
|
@ -406,8 +416,8 @@ actualize_printers_list (CcPrintersPanel *self)
|
||||||
current_printer_instance = g_strdup (priv->dests[priv->current_dest].instance);
|
current_printer_instance = g_strdup (priv->dests[priv->current_dest].instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->num_jobs > 0)
|
if (priv->num_dests > 0)
|
||||||
cupsFreeJobs (priv->num_jobs, priv->jobs);
|
cupsFreeDests (priv->num_dests, priv->dests);
|
||||||
priv->num_dests = cupsGetDests (&priv->dests);
|
priv->num_dests = cupsGetDests (&priv->dests);
|
||||||
priv->current_dest = -1;
|
priv->current_dest = -1;
|
||||||
|
|
||||||
|
@ -1087,51 +1097,6 @@ printer_disable_cb (GtkToggleButton *togglebutton,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
printer_delete_cb (GtkToolButton *toolbutton,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
CcPrintersPanelPrivate *priv;
|
|
||||||
CcPrintersPanel *self = (CcPrintersPanel*) user_data;
|
|
||||||
DBusGProxy *proxy;
|
|
||||||
gboolean ret = FALSE;
|
|
||||||
GError *error = NULL;
|
|
||||||
char *ret_error = NULL;
|
|
||||||
char *name = NULL;
|
|
||||||
|
|
||||||
priv = PRINTERS_PANEL_PRIVATE (self);
|
|
||||||
|
|
||||||
if (priv->current_dest >= 0 &&
|
|
||||||
priv->current_dest < priv->num_dests &&
|
|
||||||
priv->dests != NULL)
|
|
||||||
name = priv->dests[priv->current_dest].name;
|
|
||||||
|
|
||||||
if (name)
|
|
||||||
{
|
|
||||||
proxy = get_dbus_proxy ();
|
|
||||||
|
|
||||||
if (!proxy)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ret = dbus_g_proxy_call (proxy, "PrinterDelete", &error,
|
|
||||||
G_TYPE_STRING, name,
|
|
||||||
G_TYPE_INVALID,
|
|
||||||
G_TYPE_STRING, &ret_error,
|
|
||||||
G_TYPE_INVALID);
|
|
||||||
|
|
||||||
if (error || (ret_error && ret_error[0] != '\0'))
|
|
||||||
{
|
|
||||||
if (error)
|
|
||||||
g_warning ("%s", error->message);
|
|
||||||
|
|
||||||
if (ret_error && ret_error[0] != '\0')
|
|
||||||
g_warning ("%s", ret_error);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
actualize_printers_list (self);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
supply_levels_draw_cb (GtkWidget *widget,
|
supply_levels_draw_cb (GtkWidget *widget,
|
||||||
cairo_t *cr,
|
cairo_t *cr,
|
||||||
|
@ -1324,29 +1289,53 @@ allowed_user_remove_cb (GtkButton *button,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_widget_style (GtkWidget *widget, gchar *style_data)
|
printer_set_default_cb (GtkToggleButton *button,
|
||||||
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkStyleProvider *provider;
|
CcPrintersPanelPrivate *priv;
|
||||||
GtkStyleContext *context;
|
CcPrintersPanel *self = (CcPrintersPanel*) user_data;
|
||||||
|
DBusGProxy *proxy;
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
GError *error = NULL;
|
||||||
|
char *ret_error = NULL;
|
||||||
|
char *name = NULL;
|
||||||
|
|
||||||
if (widget)
|
priv = PRINTERS_PANEL_PRIVATE (self);
|
||||||
|
|
||||||
|
if (priv->current_dest >= 0 &&
|
||||||
|
priv->current_dest < priv->num_dests &&
|
||||||
|
priv->dests != NULL)
|
||||||
|
name = priv->dests[priv->current_dest].name;
|
||||||
|
|
||||||
|
if (name)
|
||||||
{
|
{
|
||||||
context = gtk_widget_get_style_context (widget);
|
proxy = get_dbus_proxy ();
|
||||||
provider = g_object_get_data (G_OBJECT (widget), "provider");
|
|
||||||
|
|
||||||
if (provider == NULL)
|
if (!proxy)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ret = dbus_g_proxy_call (proxy, "PrinterSetDefault", &error,
|
||||||
|
G_TYPE_STRING, name,
|
||||||
|
G_TYPE_INVALID,
|
||||||
|
G_TYPE_STRING, &ret_error,
|
||||||
|
G_TYPE_INVALID);
|
||||||
|
|
||||||
|
if (error || (ret_error && ret_error[0] != '\0'))
|
||||||
{
|
{
|
||||||
provider = (GtkStyleProvider *)gtk_css_provider_new ();
|
if (error)
|
||||||
g_object_set_data (G_OBJECT (widget), "provider", provider);
|
g_warning ("%s", error->message);
|
||||||
gtk_style_context_add_provider (context,
|
|
||||||
GTK_STYLE_PROVIDER (provider),
|
|
||||||
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_css_provider_load_from_data ((GtkCssProvider *)provider,
|
if (ret_error && ret_error[0] != '\0')
|
||||||
style_data, -1, NULL);
|
g_warning ("%s", ret_error);
|
||||||
gtk_style_context_invalidate (context);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
actualize_printers_list (self);
|
||||||
|
|
||||||
|
g_signal_handlers_block_by_func (G_OBJECT (button), printer_set_default_cb, self);
|
||||||
|
gtk_toggle_button_set_active (button, priv->dests[priv->current_dest].is_default);
|
||||||
|
g_signal_handlers_unblock_by_func (G_OBJECT (button), printer_set_default_cb, self);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1406,10 +1395,6 @@ cc_printers_panel_init (CcPrintersPanel *self)
|
||||||
gtk_builder_get_object (priv->builder, "printer-disable-button");
|
gtk_builder_get_object (priv->builder, "printer-disable-button");
|
||||||
g_signal_connect (widget, "toggled", G_CALLBACK (printer_disable_cb), self);
|
g_signal_connect (widget, "toggled", G_CALLBACK (printer_disable_cb), self);
|
||||||
|
|
||||||
widget = (GtkWidget*)
|
|
||||||
gtk_builder_get_object (priv->builder, "printer-delete-button");
|
|
||||||
g_signal_connect (widget, "clicked", G_CALLBACK (printer_delete_cb), self);
|
|
||||||
|
|
||||||
widget = (GtkWidget*)
|
widget = (GtkWidget*)
|
||||||
gtk_builder_get_object (priv->builder, "allowed-user-remove-button");
|
gtk_builder_get_object (priv->builder, "allowed-user-remove-button");
|
||||||
g_signal_connect (widget, "clicked", G_CALLBACK (allowed_user_remove_cb), self);
|
g_signal_connect (widget, "clicked", G_CALLBACK (allowed_user_remove_cb), self);
|
||||||
|
@ -1418,11 +1403,9 @@ cc_printers_panel_init (CcPrintersPanel *self)
|
||||||
gtk_builder_get_object (priv->builder, "supply-drawing-area");
|
gtk_builder_get_object (priv->builder, "supply-drawing-area");
|
||||||
g_signal_connect (widget, "draw", G_CALLBACK (supply_levels_draw_cb), self);
|
g_signal_connect (widget, "draw", G_CALLBACK (supply_levels_draw_cb), self);
|
||||||
|
|
||||||
|
|
||||||
/* set plain style for borders of toolbars */
|
|
||||||
widget = (GtkWidget*)
|
widget = (GtkWidget*)
|
||||||
gtk_builder_get_object (priv->builder, "printers-toolbar");
|
gtk_builder_get_object (priv->builder, "printer-default-check-button");
|
||||||
set_widget_style (widget, "GtkToolbar { border-style: none }");
|
g_signal_connect (widget, "toggled", G_CALLBACK (printer_set_default_cb), self);
|
||||||
|
|
||||||
|
|
||||||
/* make unused widgets insensitive for now */
|
/* make unused widgets insensitive for now */
|
||||||
|
@ -1430,10 +1413,6 @@ cc_printers_panel_init (CcPrintersPanel *self)
|
||||||
gtk_builder_get_object (priv->builder, "allowed-user-add-button");
|
gtk_builder_get_object (priv->builder, "allowed-user-add-button");
|
||||||
gtk_widget_set_sensitive (widget, FALSE);
|
gtk_widget_set_sensitive (widget, FALSE);
|
||||||
|
|
||||||
widget = (GtkWidget*)
|
|
||||||
gtk_builder_get_object (priv->builder, "printer-add-button");
|
|
||||||
gtk_widget_set_sensitive (widget, FALSE);
|
|
||||||
|
|
||||||
widget = (GtkWidget*)
|
widget = (GtkWidget*)
|
||||||
gtk_builder_get_object (priv->builder, "print-test-page-button");
|
gtk_builder_get_object (priv->builder, "print-test-page-button");
|
||||||
gtk_widget_set_sensitive (widget, FALSE);
|
gtk_widget_set_sensitive (widget, FALSE);
|
||||||
|
|
|
@ -36,38 +36,24 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkToolbar" id="printers-toolbar">
|
<object class="GtkCheckButton" id="printer-default-check-button">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="toolbar_style">icons</property>
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkToolButton" id="printer-add-button">
|
<object class="GtkLabel" id="label8">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="tooltip_text" translatable="yes">Add new printer</property>
|
<property name="label" translatable="yes">Default</property>
|
||||||
<property name="label" translatable="yes">AddPrinter</property>
|
<attributes>
|
||||||
<property name="use_underline">True</property>
|
<attribute name="style" value="italic"/>
|
||||||
<property name="icon_name">list-add</property>
|
</attributes>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToolButton" id="printer-delete-button">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Remove selected printer</property>
|
|
||||||
<property name="label" translatable="yes">RemovePrinter</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="icon_name">list-remove</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="homogeneous">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue