[gnome-control-center] printers: Bring back buttons for addition/removal of printers



commit 9f2fb8520f9d4dfa4c6410f489bf898c5d9d22d4
Author: Marek Kasik <mkasik redhat com>
Date:   Tue Feb 1 10:11:17 2011 +0100

    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 f29137e..08b37b1 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,
@@ -1731,6 +1775,10 @@ cc_printers_panel_init (CcPrintersPanel *self)
   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);
 
@@ -1759,6 +1807,16 @@ cc_printers_panel_init (CcPrintersPanel *self)
   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);
   gtk_style_context_set_junction_sides (context, GTK_JUNCTION_BOTTOM);
diff --git a/panels/printers/printers.ui b/panels/printers/printers.ui
index 5d90300..2f06242 100644
--- a/panels/printers/printers.ui
+++ b/panels/printers/printers.ui
@@ -11,18 +11,63 @@
         <property name="visible">True</property>
         <property name="spacing">10</property>
         <child>
-          <object class="GtkScrolledWindow" id="scrolledwindow2">
+          <object class="GtkVBox" id="vbox4">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hscrollbar_policy">automatic</property>
-            <property name="vscrollbar_policy">automatic</property>
-            <property name="shadow_type">in</property>
+            <property name="orientation">vertical</property>
             <child>
-              <object class="GtkTreeView" id="printer-treeview">
+              <object class="GtkScrolledWindow" id="printers-scrolledwindow">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="headers_visible">False</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkTreeView" id="printers-treeview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="headers_visible">False</property>
+                  </object>
+                </child>
               </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkToolbar" id="printers-toolbar">
+                <property name="visible">True</property>
+                <property name="icon_size">1</property>
+                <property name="icon_size_set">True</property>
+                <child>
+                  <object class="GtkToolButton" id="printer-add-button">
+                    <property name="visible">True</property>
+                    <property name="sensitive">False</property>
+                    <property name="label">AddPrinter</property>
+                    <property name="use_underline">True</property>
+                    <property name="icon_name">list-add-symbolic</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">True</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkToolButton" id="printer-remove-button">
+                    <property name="visible">True</property>
+                    <property name="label">RemovePrinter</property>
+                    <property name="use_underline">True</property>
+                    <property name="icon_name">list-remove-symbolic</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">True</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
             </child>
           </object>
           <packing>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]