[gnome-control-center/wip/feborges/new-printers-panel: 24/24] printers: introduce PpDetailsDialog
- From: Felipe Borges <felipeborges src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center/wip/feborges/new-printers-panel: 24/24] printers: introduce PpDetailsDialog
- Date: Wed, 15 Jun 2016 14:08:57 +0000 (UTC)
commit 0cd5ca4e4c7471a0a30b6ed821a2a647143715fb
Author: Felipe Borges <felipeborges gnome org>
Date: Mon Jun 13 11:29:50 2016 +0200
printers: introduce PpDetailsDialog
This dialog handles the editing of printer properties such as
name, location, automatic discovery of driver, manual selection
of printer driver, and manual selection of ppd file.
https://bugzilla.gnome.org/show_bug.cgi?id=767600
panels/printers/Makefile.am | 2 +
panels/printers/details-dialog.ui | 163 ++++++++++++++
panels/printers/pp-details-dialog.c | 365 ++++++++++++++++++++++++++++++++
panels/printers/pp-details-dialog.h | 43 ++++
panels/printers/pp-printer-entry.c | 30 +++
panels/printers/printer-entry.ui | 11 +
panels/printers/printers.gresource.xml | 1 +
7 files changed, 615 insertions(+), 0 deletions(-)
---
diff --git a/panels/printers/Makefile.am b/panels/printers/Makefile.am
index 6163d4b..71d856b 100644
--- a/panels/printers/Makefile.am
+++ b/panels/printers/Makefile.am
@@ -42,6 +42,8 @@ libprinters_la_SOURCES = \
pp-options-dialog.h \
pp-job.c \
pp-job.h \
+ pp-details-dialog.c \
+ pp-details-dialog.h \
pp-jobs-dialog.c \
pp-jobs-dialog.h \
pp-authentication-dialog.c \
diff --git a/panels/printers/details-dialog.ui b/panels/printers/details-dialog.ui
new file mode 100644
index 0000000..3ef919a
--- /dev/null
+++ b/panels/printers/details-dialog.ui
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
+<interface>
+ <requires lib="gtk+" version="3.12"/>
+ <object class="GtkDialog" id="details-dialog">
+ <property name="can_focus">False</property>
+ <property name="border_width">0</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="use-header-bar">1</property>
+ <child internal-child="vbox">
+ <object class="GtkBox">
+ <property name="margin">20</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkGrid">
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Name</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="printer-name-entry">
+ <property name="halign">fill</property>
+ <property name="width_request">320</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Location</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="printer-location-entry">
+ <property name="width_request">320</property>
+ <property name="halign">fill</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Address</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="printer-address-label">
+ <property name="label">192.168.0.1</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Driver</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="printer-model-label">
+ <property name="label">HP Inkjet Delux 9000</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkButtonBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <property name="halign">start</property>
+ <child>
+ <object class="GtkButton" id="search-for-drivers-button">
+ <property name="label" translatable="yes">Search for Drivers</property>
+ <property name="halign">fill</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkButton" id="select-from-database-button">
+ <property name="label" translatable="yes">Select from Database…</property>
+ <property name="halign">fill</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkButton" id="install-ppd-button">
+ <property name="label" translatable="yes">Install PPD File…</property>
+ <property name="halign">fill</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ </packing>
+
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+
+ <object class="GtkSizeGroup">
+ <property name="mode">horizontal</property>
+ <widgets>
+ <widget name="search-for-drivers-button"/>
+ <widget name="select-from-database-button"/>
+ <widget name="install-ppd-button"/>
+ </widgets>
+ </object>
+</interface>
diff --git a/panels/printers/pp-details-dialog.c b/panels/printers/pp-details-dialog.c
new file mode 100644
index 0000000..a190e13
--- /dev/null
+++ b/panels/printers/pp-details-dialog.c
@@ -0,0 +1,365 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright 2016 Red Hat, Inc,
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Felipe Borges <feborges redhat com>
+ */
+
+#include "config.h"
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+
+#include <cups/cups.h>
+#include <cups/ppd.h>
+
+#include "cc-editable-entry.h"
+#include "pp-details-dialog.h"
+#include "pp-ppd-selection-dialog.h"
+#include "pp-utils.h"
+
+struct _PpDetailsDialog {
+ GtkBuilder *builder;
+ GtkWidget *parent;
+
+ GtkWidget *dialog;
+
+ UserResponseCallback user_callback;
+ gpointer user_data;
+
+ gchar *printer_name;
+ gchar *ppd_file_name;
+ PPDList *all_ppds_list;
+ GCancellable *get_all_ppds_cancellable;
+
+ /* Dialogs */
+ PpPPDSelectionDialog *pp_ppd_selection_dialog;
+};
+
+static gboolean
+printer_name_edit_cb (GtkWidget *entry,
+ GdkEventFocus *event,
+ PpDetailsDialog *dialog)
+{
+ const gchar *new_name;
+
+ // FIXME: update the header bar title
+
+ new_name = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ printer_rename (dialog->printer_name, new_name); // FIXME: it has to be async
+
+ dialog->printer_name = g_strdup (new_name);
+
+ return FALSE;
+}
+
+static gboolean
+printer_location_edit_cb (GtkWidget *entry,
+ GdkEventFocus *event,
+ PpDetailsDialog *dialog)
+{
+ const gchar *location;
+
+ location = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ // FIXME: do this async
+ // FIXME: actualize printers list
+ printer_set_location (dialog->printer_name, location);
+
+ return FALSE;
+}
+
+static void
+search_for_drivers (GtkButton *button,
+ PpDetailsDialog *dialog)
+{
+ g_print ("search_for_drivers\n");
+}
+
+static void
+set_ppd_cb (gchar *printer_name,
+ gboolean success,
+ gpointer user_data)
+{
+ PpDetailsDialog *dialog = (PpDetailsDialog*) user_data;
+ GtkWidget *widget;
+
+ widget = (GtkWidget *) gtk_builder_get_object (dialog->builder, "printer-model-label");
+ gtk_label_set_text (GTK_LABEL (widget), dialog->ppd_file_name);
+}
+
+static void
+ppd_selection_dialog_response_cb (GtkDialog *dialog,
+ gint response_id,
+ gpointer user_data)
+{
+ PpDetailsDialog *self = (PpDetailsDialog*) user_data;
+
+ if (response_id == GTK_RESPONSE_OK)
+ {
+ gchar *ppd_name;
+
+ ppd_name = pp_ppd_selection_dialog_get_ppd_name (self->pp_ppd_selection_dialog);
+
+ if (self->printer_name && ppd_name)
+ {
+ GCancellable *cancellable;
+
+ cancellable = g_cancellable_new ();
+
+ printer_set_ppd_async (self->printer_name,
+ ppd_name,
+ cancellable,
+ set_ppd_cb,
+ self);
+
+ self->ppd_file_name = g_strdup (ppd_name);
+ }
+
+ g_free (ppd_name);
+ }
+
+ pp_ppd_selection_dialog_free (self->pp_ppd_selection_dialog);
+ self->pp_ppd_selection_dialog = NULL;
+}
+
+static void
+select_ppd_in_dialog (GtkButton *button,
+ PpDetailsDialog *self)
+{
+ gchar *device_id = NULL;
+ gchar *manufacturer = NULL;
+
+ self->ppd_file_name = g_strdup (cupsGetPPD (self->printer_name));
+
+ if (!self->pp_ppd_selection_dialog)
+ {
+ device_id =
+ get_ppd_attribute (self->ppd_file_name,
+ "1284DeviceID");
+
+ if (device_id)
+ {
+ manufacturer = get_tag_value (device_id, "mfg");
+ if (!manufacturer)
+ manufacturer = get_tag_value (device_id, "manufacturer");
+ }
+
+ if (manufacturer == NULL)
+ {
+ manufacturer =
+ get_ppd_attribute (self->ppd_file_name,
+ "Manufacturer");
+ }
+
+ if (manufacturer == NULL)
+ {
+ manufacturer = g_strdup ("Raw");
+ }
+
+ self->pp_ppd_selection_dialog = pp_ppd_selection_dialog_new (
+ GTK_WINDOW (gtk_widget_get_toplevel (self->dialog)),
+ NULL,
+ manufacturer,
+ ppd_selection_dialog_response_cb,
+ self);
+
+ g_free (manufacturer);
+ g_free (device_id);
+ }
+}
+
+static void
+select_ppd_manually (GtkButton *button,
+ PpDetailsDialog *self)
+{
+ GtkFileFilter *filter;
+ GtkWidget *dialog;
+
+ dialog = gtk_file_chooser_dialog_new (_("Select PPD File"),
+ GTK_WINDOW (self->dialog),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ _("_Cancel"), GTK_RESPONSE_CANCEL,
+ _("_Open"), GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter,
+ _("PostScript Printer Description files (*.ppd, *.PPD, *.ppd.gz, *.PPD.gz, *.PPD.GZ)"));
+ gtk_file_filter_add_pattern (filter, "*.ppd");
+ gtk_file_filter_add_pattern (filter, "*.PPD");
+ gtk_file_filter_add_pattern (filter, "*.ppd.gz");
+ gtk_file_filter_add_pattern (filter, "*.PPD.gz");
+ gtk_file_filter_add_pattern (filter, "*.PPD.GZ");
+
+ gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+ {
+ gchar *ppd_filename;
+
+ ppd_filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+
+ if (self->printer_name && ppd_filename)
+ {
+ GCancellable *cancellable;
+
+ cancellable = g_cancellable_new ();
+
+ printer_set_ppd_file_async (self->printer_name,
+ ppd_filename,
+ cancellable,
+ set_ppd_cb,
+ self);
+ }
+
+ g_free (ppd_filename);
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+static void
+get_all_ppds_async_cb (PPDList *ppds,
+ gpointer user_data)
+{
+ PpDetailsDialog *self = user_data;
+
+ self->all_ppds_list = ppds;
+
+ if (self->pp_ppd_selection_dialog)
+ pp_ppd_selection_dialog_set_ppd_list (self->pp_ppd_selection_dialog,
+ self->all_ppds_list);
+
+ g_object_unref (self->get_all_ppds_cancellable);
+ self->get_all_ppds_cancellable = NULL;
+}
+
+PpDetailsDialog *
+pp_details_dialog_new (GtkWindow *parent,
+ UserResponseCallback user_callback,
+ gpointer user_data,
+ gchar *printer_name,
+ gchar *printer_location,
+ gchar *printer_address,
+ gchar *printer_make_and_model,
+ gboolean sensitive)
+{
+ PpDetailsDialog *dialog;
+ GtkWidget *widget;
+ GError *error = NULL;
+ gchar *objects[] = { "details-dialog", NULL };
+ gchar *title;
+ gchar *printer_url;
+ guint builder_result;
+
+ dialog = g_new0 (PpDetailsDialog, 1);
+
+ dialog->builder = gtk_builder_new ();
+ dialog->parent = GTK_WIDGET (parent);
+
+ builder_result = gtk_builder_add_objects_from_resource (dialog->builder,
+
"/org/gnome/control-center/printers/details-dialog.ui",
+ objects, &error);
+ if (builder_result == 0)
+ {
+ g_warning ("Could not load ui: %s", error->message);
+ g_error_free (error);
+ return NULL;
+ }
+
+ dialog->dialog = (GtkWidget *) gtk_builder_get_object (dialog->builder, "details-dialog");
+ dialog->user_callback = user_callback;
+ dialog->user_data = user_data;
+ dialog->printer_name = g_strdup (printer_name);
+ dialog->ppd_file_name = NULL;
+
+ title = g_strdup_printf (C_("Printer Details dialog title", "%s Details"), printer_name);
+ gtk_window_set_title (GTK_WINDOW (dialog->dialog), title);
+
+ widget = (GtkWidget *) gtk_builder_get_object (dialog->builder, "printer-address-label");
+ printer_url = g_strdup_printf ("<a href=\"http://%s\">%s</a>", printer_address, printer_address);
+ gtk_label_set_markup (GTK_LABEL (widget), printer_url);
+ g_free (printer_url);
+
+ /* connect signals */
+ widget = (GtkWidget *) gtk_builder_get_object (dialog->builder, "printer-name-entry");
+ gtk_entry_set_text (GTK_ENTRY (widget), printer_name);
+ g_signal_connect (widget, "focus-out-event", G_CALLBACK (printer_name_edit_cb), dialog);
+
+ widget = (GtkWidget *) gtk_builder_get_object (dialog->builder, "printer-location-entry");
+ gtk_entry_set_text (GTK_ENTRY (widget), printer_location);
+ g_signal_connect (widget, "focus-out-event", G_CALLBACK (printer_location_edit_cb), dialog);
+
+ widget = (GtkWidget *) gtk_builder_get_object (dialog->builder, "printer-model-label");
+ gtk_label_set_text (GTK_LABEL (widget), printer_make_and_model);
+
+ widget = (GtkWidget *) gtk_builder_get_object (dialog->builder, "search-for-drivers-button");
+ g_signal_connect (widget, "clicked", G_CALLBACK (search_for_drivers), dialog);
+
+ widget = (GtkWidget *) gtk_builder_get_object (dialog->builder, "select-from-database-button");
+ g_signal_connect (widget, "clicked", G_CALLBACK (select_ppd_in_dialog), dialog);
+
+ widget = (GtkWidget *) gtk_builder_get_object (dialog->builder, "install-ppd-button");
+ g_signal_connect (widget, "clicked", G_CALLBACK (select_ppd_manually), dialog);
+
+ gtk_window_set_transient_for (GTK_WINDOW (dialog->dialog), GTK_WINDOW (parent));
+ gtk_widget_show_all (GTK_WIDGET (dialog->dialog));
+
+ if (dialog->all_ppds_list == NULL)
+ {
+ dialog->get_all_ppds_cancellable = g_cancellable_new ();
+ get_all_ppds_async (dialog->get_all_ppds_cancellable, get_all_ppds_async_cb, dialog);
+ }
+
+ return dialog;
+}
+
+void
+pp_details_dialog_free (PpDetailsDialog *dialog)
+{
+ gtk_widget_destroy (GTK_WIDGET (dialog->dialog));
+ dialog->dialog = NULL;
+
+ g_object_unref (dialog->builder);
+ dialog->builder = NULL;
+
+ g_free (dialog->printer_name);
+ dialog->printer_name = NULL;
+
+ if (dialog->all_ppds_list)
+ {
+ ppd_list_free (dialog->all_ppds_list);
+ dialog->all_ppds_list = NULL;
+ }
+
+ if (dialog->get_all_ppds_cancellable)
+ {
+ g_cancellable_cancel (dialog->get_all_ppds_cancellable);
+ g_object_unref (dialog->get_all_ppds_cancellable);
+ dialog->get_all_ppds_cancellable = NULL;
+ }
+
+ g_free (dialog);
+}
diff --git a/panels/printers/pp-details-dialog.h b/panels/printers/pp-details-dialog.h
new file mode 100644
index 0000000..5d9d10a
--- /dev/null
+++ b/panels/printers/pp-details-dialog.h
@@ -0,0 +1,43 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright 2016 Red Hat, Inc,
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Felipe Borges <feborges redhat com>
+ */
+
+#ifndef __PP_DETAILS_DIALOG_H__
+#define __PP_DETAILS_DIALOG_H__
+
+#include <gtk/gtk.h>
+#include "pp-utils.h"
+
+G_BEGIN_DECLS
+
+typedef struct _PpDetailsDialog PpDetailsDialog;
+
+PpDetailsDialog *pp_details_dialog_new (GtkWindow *parent,
+ UserResponseCallback user_callback,
+ gpointer user_data,
+ gchar *printer_name,
+ gchar *printer_location,
+ gchar *printer_address,
+ gchar *printer_make_and_model,
+ gboolean sensitive);
+void pp_details_dialog_free (PpDetailsDialog *dialog);
+
+G_END_DECLS
+
+#endif
diff --git a/panels/printers/pp-printer-entry.c b/panels/printers/pp-printer-entry.c
index be8c403..cc817af 100644
--- a/panels/printers/pp-printer-entry.c
+++ b/panels/printers/pp-printer-entry.c
@@ -24,6 +24,7 @@
#include <glib/gi18n-lib.h>
#include <glib/gstdio.h>
+#include "pp-details-dialog.h"
#include "pp-options-dialog.h"
#include "pp-jobs-dialog.h"
#include "pp-utils.h"
@@ -56,6 +57,7 @@ struct _PpPrinterEntry
GtkCheckButton *printer_default_checkbutton;
/* Dialogs */
+ PpDetailsDialog *pp_details_dialog;
PpOptionsDialog *pp_options_dialog;
PpJobsDialog *pp_jobs_dialog;
};
@@ -262,6 +264,32 @@ supply_levels_draw_cb (GtkWidget *widget,
}
static void
+details_dialog_cb (GtkDialog *dialog,
+ gint response_id,
+ gpointer user_data)
+{
+ PpPrinterEntry *self = PP_PRINTER_ENTRY (user_data);
+
+ pp_details_dialog_free (self->pp_details_dialog);
+ self->pp_details_dialog = NULL;
+}
+
+static void
+on_show_printer_details_dialog (GtkButton *button,
+ PpPrinterEntry *self)
+{
+ self->pp_details_dialog = pp_details_dialog_new (
+ GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))),
+ details_dialog_cb,
+ self,
+ self->printer_name,
+ self->printer_location,
+ self->printer_hostname,
+ self->printer_make_and_model,
+ TRUE);
+}
+
+static void
printer_options_dialog_cb (GtkDialog *dialog,
gint response_id,
gpointer user_data)
@@ -483,6 +511,7 @@ pp_printer_entry_new (cups_dest_t printer)
update_jobs_count (self);
+ self->pp_details_dialog = NULL;
self->pp_options_dialog = NULL;
self->pp_jobs_dialog = NULL;
@@ -510,6 +539,7 @@ pp_printer_entry_class_init (PpPrinterEntryClass *klass)
gtk_widget_class_bind_template_child (widget_class, PpPrinterEntry, printer_default_checkbutton);
gtk_widget_class_bind_template_child (widget_class, PpPrinterEntry, show_jobs_dialog_button);
+ gtk_widget_class_bind_template_callback (widget_class, on_show_printer_details_dialog);
gtk_widget_class_bind_template_callback (widget_class, on_show_printer_options_dialog);
gtk_widget_class_bind_template_callback (widget_class, set_as_default_printer);
gtk_widget_class_bind_template_callback (widget_class, remove_printer);
diff --git a/panels/printers/printer-entry.ui b/panels/printers/printer-entry.ui
index 4ac3b35..e6f5592 100644
--- a/panels/printers/printer-entry.ui
+++ b/panels/printers/printer-entry.ui
@@ -18,6 +18,17 @@
</packing>
</child>
<child>
+ <object class="GtkModelButton">
+ <property name="visible">True</property>
+ <property name="text" translatable="yes">Printer Details</property>
+ <signal name="clicked" handler="on_show_printer_details_dialog"/>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkCheckButton" id="printer_default_checkbutton">
<property name="visible">True</property>
<property name="valign">center</property>
diff --git a/panels/printers/printers.gresource.xml b/panels/printers/printers.gresource.xml
index 68d9a29..ae0c7fa 100644
--- a/panels/printers/printers.gresource.xml
+++ b/panels/printers/printers.gresource.xml
@@ -4,6 +4,7 @@
<file preprocess="xml-stripblanks">authentication-dialog.ui</file>
<file preprocess="xml-stripblanks">jobs-dialog.ui</file>
<file preprocess="xml-stripblanks">new-printer-dialog.ui</file>
+ <file preprocess="xml-stripblanks">details-dialog.ui</file>
<file preprocess="xml-stripblanks">options-dialog.ui</file>
<file preprocess="xml-stripblanks">ppd-selection-dialog.ui</file>
<file preprocess="xml-stripblanks">printer-entry.ui</file>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]