From 9f2fb8520f9d4dfa4c6410f489bf898c5d9d22d4 Mon Sep 17 00:00:00 2001 From: Marek Kasik Date: Tue, 1 Feb 2011 10:11:17 +0100 Subject: [PATCH] printers: Bring back buttons for addition/removal of printers --- panels/printers/cc-printers-panel.c | 62 ++++++++++++++++++++++++++++- panels/printers/printers.ui | 59 +++++++++++++++++++++++---- 2 files changed, 112 insertions(+), 9 deletions(-) diff --git a/panels/printers/cc-printers-panel.c b/panels/printers/cc-printers-panel.c index f29137e7e..08b37b194 100644 --- a/panels/printers/cc-printers-panel.c +++ b/panels/printers/cc-printers-panel.c @@ -502,7 +502,7 @@ actualize_printers_list (CcPrintersPanel *self) priv->current_dest = -1; treeview = (GtkTreeView*) - gtk_builder_get_object (priv->builder, "printer-treeview"); + gtk_builder_get_object (priv->builder, "printers-treeview"); store = gtk_list_store_new (PRINTER_N_COLUMNS, G_TYPE_STRING, @@ -650,7 +650,7 @@ populate_printers_list (CcPrintersPanel *self) priv = PRINTERS_PANEL_PRIVATE (self); treeview = (GtkWidget*) - gtk_builder_get_object (priv->builder, "printer-treeview"); + gtk_builder_get_object (priv->builder, "printers-treeview"); g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)), "changed", G_CALLBACK (printer_selection_changed_cb), self); @@ -1570,6 +1570,50 @@ printer_set_default_cb (GtkToggleButton *button, } } +static void +printer_remove_cb (GtkToolButton *toolbutton, + gpointer user_data) +{ + CcPrintersPanelPrivate *priv; + CcPrintersPanel *self = (CcPrintersPanel*) user_data; + DBusGProxy *proxy; + 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; + + 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 ipp_t * execute_maintenance_command (const char *printer_name, const char *command, @@ -1730,6 +1774,10 @@ cc_printers_panel_init (CcPrintersPanel *self) gtk_builder_get_object (priv->builder, "job-release-button"); g_signal_connect (widget, "clicked", G_CALLBACK (job_process_cb), self); + widget = (GtkWidget*) + gtk_builder_get_object (priv->builder, "printer-remove-button"); + g_signal_connect (widget, "clicked", G_CALLBACK (printer_remove_cb), self); + widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "printer-disable-button"); g_signal_connect (widget, "toggled", G_CALLBACK (printer_disable_cb), self); @@ -1758,6 +1806,16 @@ cc_printers_panel_init (CcPrintersPanel *self) gtk_builder_get_object (priv->builder, "clean-print-heads-button"); g_signal_connect (widget, "clicked", G_CALLBACK (printer_maintenance_cb), self); + widget = (GtkWidget*) + gtk_builder_get_object (priv->builder, "printers-scrolledwindow"); + context = gtk_widget_get_style_context (widget); + gtk_style_context_set_junction_sides (context, GTK_JUNCTION_BOTTOM); + + widget = (GtkWidget*) + gtk_builder_get_object (priv->builder, "printers-toolbar"); + context = gtk_widget_get_style_context (widget); + gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP); + widget = (GtkWidget*) gtk_builder_get_object (priv->builder, "allowed-users-scrolledwindow"); context = gtk_widget_get_style_context (widget); diff --git a/panels/printers/printers.ui b/panels/printers/printers.ui index 5d9030046..2f062429a 100644 --- a/panels/printers/printers.ui +++ b/panels/printers/printers.ui @@ -11,18 +11,63 @@ True 10 - + True - True - automatic - automatic - in + vertical - + True True - False + automatic + automatic + in + + + True + True + False + + + + 0 + + + + + True + 1 + True + + + True + False + AddPrinter + True + list-add-symbolic + + + False + True + + + + + True + RemovePrinter + True + list-remove-symbolic + + + False + True + + + + + False + 1 +