]> git.sur5r.net Git - glabels/blobdiff - glabels2/src/template-designer.c
2009-09-02 Jim Evins <evins@snaught.com>
[glabels] / glabels2 / src / template-designer.c
index 60ffe576f71fd8322b64e36c7eb45c2981d1f031..0848cc9eeb1cd70f8a86c50b5d942aa84f8e099e 100644 (file)
@@ -1,32 +1,29 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-
 /*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  template-designer.c:  Template designer module
+ *  template-designer.c
+ *  Copyright (C) 2003-2009  Jim Evins <evins@snaught.com>.
  *
- *  Copyright (C) 2003  Jim Evins <evins@snaught.com>.
+ *  This file is part of gLabels.
  *
- *  This program is free software; you can redistribute it and/or modify
+ *  gLabels 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
+ *  the Free Software Foundation, either version 3 of the License, or
  *  (at your option) any later version.
  *
- *  This program is distributed in the hope that it will be useful,
+ *  gLabels 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, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ *  along with gLabels.  If not, see <http://www.gnu.org/licenses/>.
  */
+
 #include <config.h>
 
 #include "template-designer.h"
 
 #include <glib/gi18n.h>
-#include <glade/glade-xml.h>
+#include <gtk/gtkbuilder.h>
 #include <gtk/gtktogglebutton.h>
 #include <gtk/gtkcombobox.h>
 #include <gtk/gtkspinbutton.h>
 
 #include "prefs.h"
 #include <libglabels/db.h>
-#include "wdgt-mini-preview.h"
+#include "mini-preview.h"
 #include "mini-preview-pixbuf-cache.h"
 #include "print-op.h"
 #include "util.h"
 
 #include "debug.h"
 
+
 /*========================================================*/
 /* Private macros and constants.                          */
 /*========================================================*/
 #define DELTA 0.01
 #define MAX_PAGE_DIM_POINTS 5000.0
 
+
 /*========================================================*/
 /* Private types.                                         */
 /*========================================================*/
 
 struct _glTemplateDesignerPrivate
 {
+        GtkBuilder      *builder;
+
        /* Assistant pages */
        GtkWidget       *start_page;
        GtkWidget       *name_page;
@@ -171,6 +172,7 @@ struct _glTemplateDesignerPrivate
        GtkWidget       *layout_y0_units_label;
        GtkWidget       *layout_dx_units_label;
        GtkWidget       *layout_dy_units_label;
+       GtkWidget       *mini_preview_vbox;
        GtkWidget       *layout_mini_preview;
        GtkWidget       *layout_test_button;
 
@@ -198,6 +200,7 @@ enum {
         FINISH_PAGE_NUM
 };
 
+
 /*========================================================*/
 /* Private globals.                                       */
 /*========================================================*/
@@ -267,36 +270,71 @@ static void     print_test_cb                     (glTemplateDesigner      *dial
 
 static lglTemplate *build_template                (glTemplateDesigner      *dialog);
 
-\f
+
 /*****************************************************************************/
 /* Boilerplate object stuff.                                                 */
 /*****************************************************************************/
 G_DEFINE_TYPE (glTemplateDesigner, gl_template_designer, GTK_TYPE_ASSISTANT);
 
+
 static void
 gl_template_designer_class_init (glTemplateDesignerClass *class)
 {
        GObjectClass *object_class = G_OBJECT_CLASS (class);
 
-       gl_debug (DEBUG_TEMPLATE, "");
-       
        gl_template_designer_parent_class = g_type_class_peek_parent (class);
 
        object_class->finalize = gl_template_designer_finalize;         
 }
 
+
 static void
 gl_template_designer_init (glTemplateDesigner *dialog)
 {
+        static gchar      *object_ids[] = { "start_page",
+                                            "name_page",
+                                            "pg_size_page",
+                                            "shape_page",
+                                            "rect_size_page",
+                                            "round_size_page",
+                                            "cd_size_page",
+                                            "nlayouts_page",
+                                            "layout_page",
+                                            "finish_page",
+                                            "adjustment1",  "adjustment2",  "adjustment3",
+                                            "adjustment4",  "adjustment5",  "adjustment6",
+                                            "adjustment7",  "adjustment8",  "adjustment9",
+                                            "adjustment10", "adjustment11", "adjustment12",
+                                            "adjustment13", "adjustment14", "adjustment15",
+                                            "adjustment16", "adjustment17", "adjustment18",
+                                            "adjustment19", "adjustment20", "adjustment21",
+                                            "adjustment22", "adjustment23", "adjustment24",
+                                            "adjustment25", "adjustment26", "adjustment27",
+                                            "adjustment28", "adjustment29", "adjustment30",
+                                            NULL };
+        GError            *error = NULL;
+
        gl_debug (DEBUG_TEMPLATE, "START");
 
        dialog->priv = g_new0 (glTemplateDesignerPrivate, 1);
 
+        dialog->priv->builder = gtk_builder_new ();
+        gtk_builder_add_objects_from_file (dialog->priv->builder,
+                                           GLABELS_BUILDER_DIR "template-designer.builder",
+                                           object_ids,
+                                           &error);
+       if (error) {
+               g_critical ("%s\n\ngLabels may not be installed correctly!", error->message);
+                g_error_free (error);
+               return;
+       }
+
        gl_debug (DEBUG_TEMPLATE, "END");
 
         return;
 }
 
+
 static void 
 gl_template_designer_finalize (GObject *object)
 {
@@ -308,6 +346,10 @@ gl_template_designer_finalize (GObject *object)
        g_return_if_fail (GL_IS_TEMPLATE_DESIGNER (dialog));
        g_return_if_fail (dialog->priv != NULL);
 
+        if (dialog->priv->builder)
+        {
+                g_object_unref (dialog->priv->builder);
+        }
        g_free (dialog->priv);
 
        G_OBJECT_CLASS (gl_template_designer_parent_class)->finalize (object);
@@ -315,6 +357,7 @@ gl_template_designer_finalize (GObject *object)
        gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*****************************************************************************/
 /* NEW preferences dialog.                                                   */
 /*****************************************************************************/
@@ -338,6 +381,7 @@ gl_template_designer_new (GtkWindow *parent)
        return dialog;
 }
 
+
 /*---------------------------------------------------------------------------*/
 /* PRIVATE.  Construct composite widget.                                     */
 /*---------------------------------------------------------------------------*/
@@ -346,6 +390,8 @@ gl_template_designer_construct (glTemplateDesigner *dialog)
 {
        GdkPixbuf  *logo;
 
+       gl_debug (DEBUG_TEMPLATE, "START");
+
        g_return_if_fail (dialog && GL_IS_TEMPLATE_DESIGNER (dialog));
        g_return_if_fail (dialog->priv != NULL);
 
@@ -387,8 +433,11 @@ gl_template_designer_construct (glTemplateDesigner *dialog)
                           G_CALLBACK(prepare_cb), NULL);
 
         gtk_widget_show_all (GTK_WIDGET(dialog));   
+
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Construct start page.                                          */
 /*--------------------------------------------------------------------------*/
@@ -396,20 +445,11 @@ static void
 construct_start_page (glTemplateDesigner      *dialog,
                      GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
-
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "start_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->start_page = glade_xml_get_widget (gui, "start_page");
-
-        g_object_unref (gui);
+       gl_debug (DEBUG_TEMPLATE, "START");
 
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "start_page", &dialog->priv->start_page,
+                                     NULL);
 
         gtk_assistant_append_page (GTK_ASSISTANT (dialog),
                                    dialog->priv->start_page);
@@ -426,8 +466,11 @@ construct_start_page (glTemplateDesigner      *dialog,
         gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog),
                                          dialog->priv->start_page,
                                          TRUE);
+
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Construct name page.                                           */
 /*--------------------------------------------------------------------------*/
@@ -435,24 +478,16 @@ static void
 construct_name_page (glTemplateDesigner      *dialog,
                     GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
-
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "name_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->name_page          = glade_xml_get_widget (gui, "name_page");
-       dialog->priv->brand_entry        = glade_xml_get_widget (gui, "brand_entry");
-       dialog->priv->part_num_entry     = glade_xml_get_widget (gui, "part_num_entry");
-       dialog->priv->name_warning_image = glade_xml_get_widget (gui, "name_warning_image");
-       dialog->priv->name_warning_label = glade_xml_get_widget (gui, "name_warning_label");
-       dialog->priv->description_entry  = glade_xml_get_widget (gui, "description_entry");
+       gl_debug (DEBUG_TEMPLATE, "START");
 
-        g_object_unref (gui);
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "name_page",          &dialog->priv->name_page,
+                                     "brand_entry",        &dialog->priv->brand_entry,
+                                     "part_num_entry",     &dialog->priv->part_num_entry,
+                                     "name_warning_image", &dialog->priv->name_warning_image,
+                                     "name_warning_label", &dialog->priv->name_warning_label,
+                                     "description_entry",  &dialog->priv->description_entry,
+                                     NULL);
 
 
         gtk_assistant_append_page (GTK_ASSISTANT (dialog),
@@ -474,8 +509,10 @@ construct_name_page (glTemplateDesigner      *dialog,
        g_signal_connect_swapped (G_OBJECT(dialog->priv->description_entry), "changed",
                                  G_CALLBACK(name_page_changed_cb), dialog);
 
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE. Construct page size page.                                       */
 /*--------------------------------------------------------------------------*/
@@ -483,27 +520,20 @@ static void
 construct_pg_size_page (glTemplateDesigner      *dialog,
                        GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
        GList           *page_sizes;
        const gchar     *default_page_size_id;
        gchar           *default_page_size_name;
 
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "pg_size_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->pg_size_page     = glade_xml_get_widget (gui, "pg_size_page");
-       dialog->priv->pg_size_combo    = glade_xml_get_widget (gui, "pg_size_combo");
-       dialog->priv->pg_w_spin        = glade_xml_get_widget (gui, "pg_w_spin");
-       dialog->priv->pg_h_spin        = glade_xml_get_widget (gui, "pg_h_spin");
-       dialog->priv->pg_w_units_label = glade_xml_get_widget (gui, "pg_w_units_label");
-       dialog->priv->pg_h_units_label = glade_xml_get_widget (gui, "pg_h_units_label");
+       gl_debug (DEBUG_TEMPLATE, "START");
 
-        g_object_unref (gui);
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "pg_size_page",     &dialog->priv->pg_size_page,
+                                     "pg_size_combo",    &dialog->priv->pg_size_combo,
+                                     "pg_w_spin",        &dialog->priv->pg_w_spin,
+                                     "pg_h_spin",        &dialog->priv->pg_h_spin,
+                                     "pg_w_units_label", &dialog->priv->pg_w_units_label,
+                                     "pg_h_units_label", &dialog->priv->pg_h_units_label,
+                                     NULL);
 
 
        gl_util_combo_box_add_text_model (GTK_COMBO_BOX (dialog->priv->pg_size_combo));
@@ -552,8 +582,11 @@ construct_pg_size_page (glTemplateDesigner      *dialog,
        /* This controls sensitivity of related widgets. */
        g_signal_connect_swapped (G_OBJECT(dialog->priv->pg_size_combo), "changed",
                                  G_CALLBACK(pg_size_page_changed_cb), dialog);
+
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Construct shape page.                                          */
 /*--------------------------------------------------------------------------*/
@@ -561,22 +594,14 @@ static void
 construct_shape_page (glTemplateDesigner      *dialog,
                      GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
-
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "shape_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->shape_page        = glade_xml_get_widget (gui, "shape_page");
-       dialog->priv->shape_rect_radio  = glade_xml_get_widget (gui, "shape_rect_radio");
-       dialog->priv->shape_round_radio = glade_xml_get_widget (gui, "shape_round_radio");
-       dialog->priv->shape_cd_radio    = glade_xml_get_widget (gui, "shape_cd_radio");
+       gl_debug (DEBUG_TEMPLATE, "START");
 
-        g_object_unref (gui);
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "shape_page",        &dialog->priv->shape_page,
+                                     "shape_rect_radio",  &dialog->priv->shape_rect_radio,
+                                     "shape_round_radio", &dialog->priv->shape_round_radio,
+                                     "shape_cd_radio",    &dialog->priv->shape_cd_radio,
+                                     NULL);
 
 
         gtk_assistant_append_page (GTK_ASSISTANT (dialog),
@@ -591,8 +616,11 @@ construct_shape_page (glTemplateDesigner      *dialog,
         gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog),
                                          dialog->priv->shape_page,
                                          TRUE);
+
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Construct rect size page.                                      */
 /*--------------------------------------------------------------------------*/
@@ -600,33 +628,26 @@ static void
 construct_rect_size_page (glTemplateDesigner      *dialog,
                          GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
        GdkPixbuf       *pixbuf;
 
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "rect_size_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->rect_size_page           = glade_xml_get_widget (gui, "rect_size_page");
-       dialog->priv->rect_image               = glade_xml_get_widget (gui, "rect_image");
-       dialog->priv->rect_w_spin              = glade_xml_get_widget (gui, "rect_w_spin");
-       dialog->priv->rect_h_spin              = glade_xml_get_widget (gui, "rect_h_spin");
-       dialog->priv->rect_r_spin              = glade_xml_get_widget (gui, "rect_r_spin");
-       dialog->priv->rect_x_waste_spin        = glade_xml_get_widget (gui, "rect_x_waste_spin");
-       dialog->priv->rect_y_waste_spin        = glade_xml_get_widget (gui, "rect_y_waste_spin");
-       dialog->priv->rect_margin_spin         = glade_xml_get_widget (gui, "rect_margin_spin");
-       dialog->priv->rect_w_units_label       = glade_xml_get_widget (gui, "rect_w_units_label");
-       dialog->priv->rect_h_units_label       = glade_xml_get_widget (gui, "rect_h_units_label");
-       dialog->priv->rect_r_units_label       = glade_xml_get_widget (gui, "rect_r_units_label");
-       dialog->priv->rect_x_waste_units_label = glade_xml_get_widget (gui, "rect_x_waste_units_label");
-       dialog->priv->rect_y_waste_units_label = glade_xml_get_widget (gui, "rect_y_waste_units_label");
-       dialog->priv->rect_margin_units_label  = glade_xml_get_widget (gui, "rect_margin_units_label");
+       gl_debug (DEBUG_TEMPLATE, "START");
 
-        g_object_unref (gui);
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "rect_size_page",           &dialog->priv->rect_size_page,
+                                     "rect_image",               &dialog->priv->rect_image,
+                                     "rect_w_spin",              &dialog->priv->rect_w_spin,
+                                     "rect_h_spin",              &dialog->priv->rect_h_spin,
+                                     "rect_r_spin",              &dialog->priv->rect_r_spin,
+                                     "rect_x_waste_spin",        &dialog->priv->rect_x_waste_spin,
+                                     "rect_y_waste_spin",        &dialog->priv->rect_y_waste_spin,
+                                     "rect_margin_spin",         &dialog->priv->rect_margin_spin,
+                                     "rect_w_units_label",       &dialog->priv->rect_w_units_label,
+                                     "rect_h_units_label",       &dialog->priv->rect_h_units_label,
+                                     "rect_r_units_label",       &dialog->priv->rect_r_units_label,
+                                     "rect_x_waste_units_label", &dialog->priv->rect_x_waste_units_label,
+                                     "rect_y_waste_units_label", &dialog->priv->rect_y_waste_units_label,
+                                     "rect_margin_units_label",  &dialog->priv->rect_margin_units_label,
+                                     NULL);
 
 
         gtk_assistant_append_page (GTK_ASSISTANT (dialog),
@@ -697,8 +718,11 @@ construct_rect_size_page (glTemplateDesigner      *dialog,
                                   DEFAULT_RECT_WASTE * dialog->priv->units_per_point);
        gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->rect_margin_spin),
                                   DEFAULT_MARGIN * dialog->priv->units_per_point);
+
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Construct round size page.                                     */
 /*--------------------------------------------------------------------------*/
@@ -706,27 +730,20 @@ static void
 construct_round_size_page (glTemplateDesigner      *dialog,
                           GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
        GdkPixbuf       *pixbuf;
 
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "round_size_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->round_size_page          = glade_xml_get_widget (gui, "round_size_page");
-       dialog->priv->round_image              = glade_xml_get_widget (gui, "round_image");
-       dialog->priv->round_r_spin             = glade_xml_get_widget (gui, "round_r_spin");
-       dialog->priv->round_waste_spin         = glade_xml_get_widget (gui, "round_waste_spin");
-       dialog->priv->round_margin_spin        = glade_xml_get_widget (gui, "round_margin_spin");
-       dialog->priv->round_r_units_label      = glade_xml_get_widget (gui, "round_r_units_label");
-       dialog->priv->round_waste_units_label  = glade_xml_get_widget (gui, "round_waste_units_label");
-       dialog->priv->round_margin_units_label = glade_xml_get_widget (gui, "round_margin_units_label");
+       gl_debug (DEBUG_TEMPLATE, "START");
 
-        g_object_unref (gui);
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "round_size_page",          &dialog->priv->round_size_page,
+                                     "round_image",              &dialog->priv->round_image,
+                                     "round_r_spin",             &dialog->priv->round_r_spin,
+                                     "round_waste_spin",         &dialog->priv->round_waste_spin,
+                                     "round_margin_spin",        &dialog->priv->round_margin_spin,
+                                     "round_r_units_label",      &dialog->priv->round_r_units_label,
+                                     "round_waste_units_label",  &dialog->priv->round_waste_units_label,
+                                     "round_margin_units_label", &dialog->priv->round_margin_units_label,
+                                     NULL);
 
 
         gtk_assistant_append_page (GTK_ASSISTANT (dialog),
@@ -774,8 +791,10 @@ construct_round_size_page (glTemplateDesigner      *dialog,
        gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->round_margin_spin),
                                   DEFAULT_MARGIN * dialog->priv->units_per_point);
 
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Construct CD/DVD size page.                                    */
 /*--------------------------------------------------------------------------*/
@@ -783,33 +802,26 @@ static void
 construct_cd_size_page (glTemplateDesigner      *dialog,
                        GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
        GdkPixbuf       *pixbuf;
 
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "cd_size_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->cd_size_page = glade_xml_get_widget (gui, "cd_size_page");
-       dialog->priv->cd_image     = glade_xml_get_widget (gui, "cd_image");
-       dialog->priv->cd_radius_spin = glade_xml_get_widget (gui, "cd_radius_spin");
-       dialog->priv->cd_hole_spin   = glade_xml_get_widget (gui, "cd_hole_spin");
-       dialog->priv->cd_w_spin      = glade_xml_get_widget (gui, "cd_w_spin");
-       dialog->priv->cd_h_spin      = glade_xml_get_widget (gui, "cd_h_spin");
-       dialog->priv->cd_waste_spin  = glade_xml_get_widget (gui, "cd_waste_spin");
-       dialog->priv->cd_margin_spin = glade_xml_get_widget (gui, "cd_margin_spin");
-       dialog->priv->cd_radius_units_label = glade_xml_get_widget (gui, "cd_radius_units_label");
-       dialog->priv->cd_hole_units_label   = glade_xml_get_widget (gui, "cd_hole_units_label");
-       dialog->priv->cd_w_units_label      = glade_xml_get_widget (gui, "cd_w_units_label");
-       dialog->priv->cd_h_units_label      = glade_xml_get_widget (gui, "cd_h_units_label");
-       dialog->priv->cd_waste_units_label  = glade_xml_get_widget (gui, "cd_waste_units_label");
-       dialog->priv->cd_margin_units_label = glade_xml_get_widget (gui, "cd_margin_units_label");
+       gl_debug (DEBUG_TEMPLATE, "START");
 
-        g_object_unref (gui);
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "cd_size_page",          &dialog->priv->cd_size_page,
+                                     "cd_image",              &dialog->priv->cd_image,
+                                     "cd_radius_spin",        &dialog->priv->cd_radius_spin,
+                                     "cd_hole_spin",          &dialog->priv->cd_hole_spin,
+                                     "cd_w_spin",             &dialog->priv->cd_w_spin,
+                                     "cd_h_spin",             &dialog->priv->cd_h_spin,
+                                     "cd_waste_spin",         &dialog->priv->cd_waste_spin,
+                                     "cd_margin_spin",        &dialog->priv->cd_margin_spin,
+                                     "cd_radius_units_label", &dialog->priv->cd_radius_units_label,
+                                     "cd_hole_units_label",   &dialog->priv->cd_hole_units_label,
+                                     "cd_w_units_label",      &dialog->priv->cd_w_units_label,
+                                     "cd_h_units_label",      &dialog->priv->cd_h_units_label,
+                                     "cd_waste_units_label",  &dialog->priv->cd_waste_units_label,
+                                     "cd_margin_units_label", &dialog->priv->cd_margin_units_label,
+                                     NULL);
 
 
         gtk_assistant_append_page (GTK_ASSISTANT (dialog),
@@ -877,8 +889,10 @@ construct_cd_size_page (glTemplateDesigner      *dialog,
        gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->cd_margin_spin),
                                   DEFAULT_MARGIN * dialog->priv->units_per_point);
 
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Construct number of layouts page.                              */
 /*--------------------------------------------------------------------------*/
@@ -886,23 +900,16 @@ static void
 construct_nlayouts_page (glTemplateDesigner      *dialog,
                         GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
        GdkPixbuf       *pixbuf;
 
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "nlayouts_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->nlayouts_page   = glade_xml_get_widget (gui, "nlayouts_page");
-       dialog->priv->nlayouts_image1 = glade_xml_get_widget (gui, "nlayouts_image1");
-       dialog->priv->nlayouts_image2 = glade_xml_get_widget (gui, "nlayouts_image2");
-       dialog->priv->nlayouts_spin   = glade_xml_get_widget (gui, "nlayouts_spin");
+       gl_debug (DEBUG_TEMPLATE, "START");
 
-        g_object_unref (gui);
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "nlayouts_page",   &dialog->priv->nlayouts_page,
+                                     "nlayouts_image1", &dialog->priv->nlayouts_image1,
+                                     "nlayouts_image2", &dialog->priv->nlayouts_image2,
+                                     "nlayouts_spin",   &dialog->priv->nlayouts_spin,
+                                     NULL);
 
 
         gtk_assistant_append_page (GTK_ASSISTANT (dialog),
@@ -918,14 +925,20 @@ construct_nlayouts_page (glTemplateDesigner      *dialog,
                                          dialog->priv->nlayouts_page,
                                          TRUE);
 
+       gtk_spin_button_set_range (GTK_SPIN_BUTTON (dialog->priv->nlayouts_spin),
+                                   1, 2);
+
+
        /* Initialize illustrations. */
        pixbuf = gdk_pixbuf_new_from_file (EX_NLAYOUTS_IMAGE1, NULL);
        gtk_image_set_from_pixbuf (GTK_IMAGE(dialog->priv->nlayouts_image1), pixbuf);
        pixbuf = gdk_pixbuf_new_from_file (EX_NLAYOUTS_IMAGE2, NULL);
        gtk_image_set_from_pixbuf (GTK_IMAGE(dialog->priv->nlayouts_image2), pixbuf);
 
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Construct layout page.                                         */
 /*--------------------------------------------------------------------------*/
@@ -933,40 +946,35 @@ static void
 construct_layout_page (glTemplateDesigner      *dialog,
                       GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
-
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "layout_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->layout_page           = glade_xml_get_widget (gui, "layout_page");
-       dialog->priv->layout1_head_label    = glade_xml_get_widget (gui, "layout1_head_label");
-       dialog->priv->layout1_nx_spin       = glade_xml_get_widget (gui, "layout1_nx_spin");
-       dialog->priv->layout1_ny_spin       = glade_xml_get_widget (gui, "layout1_ny_spin");
-       dialog->priv->layout1_x0_spin       = glade_xml_get_widget (gui, "layout1_x0_spin");
-       dialog->priv->layout1_y0_spin       = glade_xml_get_widget (gui, "layout1_y0_spin");
-       dialog->priv->layout1_dx_spin       = glade_xml_get_widget (gui, "layout1_dx_spin");
-       dialog->priv->layout1_dy_spin       = glade_xml_get_widget (gui, "layout1_dy_spin");
-       dialog->priv->layout2_head_label    = glade_xml_get_widget (gui, "layout2_head_label");
-       dialog->priv->layout2_nx_spin       = glade_xml_get_widget (gui, "layout2_nx_spin");
-       dialog->priv->layout2_ny_spin       = glade_xml_get_widget (gui, "layout2_ny_spin");
-       dialog->priv->layout2_x0_spin       = glade_xml_get_widget (gui, "layout2_x0_spin");
-       dialog->priv->layout2_y0_spin       = glade_xml_get_widget (gui, "layout2_y0_spin");
-       dialog->priv->layout2_dx_spin       = glade_xml_get_widget (gui, "layout2_dx_spin");
-       dialog->priv->layout2_dy_spin       = glade_xml_get_widget (gui, "layout2_dy_spin");
-       dialog->priv->layout_x0_units_label = glade_xml_get_widget (gui, "layout_x0_units_label");
-       dialog->priv->layout_y0_units_label = glade_xml_get_widget (gui, "layout_y0_units_label");
-       dialog->priv->layout_dx_units_label = glade_xml_get_widget (gui, "layout_dx_units_label");
-       dialog->priv->layout_dy_units_label = glade_xml_get_widget (gui, "layout_dy_units_label");
-       dialog->priv->layout_mini_preview   = glade_xml_get_widget (gui, "layout_mini_preview");
-       dialog->priv->layout_test_button    = glade_xml_get_widget (gui, "layout_test_button");
-
-        g_object_unref (gui);
+       gl_debug (DEBUG_TEMPLATE, "START");
 
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "layout_page",           &dialog->priv->layout_page,
+                                     "layout1_head_label",    &dialog->priv->layout1_head_label,
+                                     "layout1_nx_spin",       &dialog->priv->layout1_nx_spin,
+                                     "layout1_ny_spin",       &dialog->priv->layout1_ny_spin,
+                                     "layout1_x0_spin",       &dialog->priv->layout1_x0_spin,
+                                     "layout1_y0_spin",       &dialog->priv->layout1_y0_spin,
+                                     "layout1_dx_spin",       &dialog->priv->layout1_dx_spin,
+                                     "layout1_dy_spin",       &dialog->priv->layout1_dy_spin,
+                                     "layout2_head_label",    &dialog->priv->layout2_head_label,
+                                     "layout2_nx_spin",       &dialog->priv->layout2_nx_spin,
+                                     "layout2_ny_spin",       &dialog->priv->layout2_ny_spin,
+                                     "layout2_x0_spin",       &dialog->priv->layout2_x0_spin,
+                                     "layout2_y0_spin",       &dialog->priv->layout2_y0_spin,
+                                     "layout2_dx_spin",       &dialog->priv->layout2_dx_spin,
+                                     "layout2_dy_spin",       &dialog->priv->layout2_dy_spin,
+                                     "layout_x0_units_label", &dialog->priv->layout_x0_units_label,
+                                     "layout_y0_units_label", &dialog->priv->layout_y0_units_label,
+                                     "layout_dx_units_label", &dialog->priv->layout_dx_units_label,
+                                     "layout_dy_units_label", &dialog->priv->layout_dy_units_label,
+                                     "mini_preview_vbox",     &dialog->priv->mini_preview_vbox,
+                                     "layout_test_button",    &dialog->priv->layout_test_button,
+                                     NULL);
+
+        dialog->priv->layout_mini_preview = gl_mini_preview_new (175, 200);
+        gtk_container_add (GTK_CONTAINER (dialog->priv->mini_preview_vbox),
+                           dialog->priv->layout_mini_preview);
 
         gtk_assistant_append_page (GTK_ASSISTANT (dialog),
                                    dialog->priv->layout_page);
@@ -1055,8 +1063,10 @@ construct_layout_page (glTemplateDesigner      *dialog,
        g_signal_connect_swapped (G_OBJECT(dialog->priv->layout_test_button), "clicked",
                                  G_CALLBACK(print_test_cb), dialog);
 
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Construct finish page.                                         */
 /*--------------------------------------------------------------------------*/
@@ -1064,19 +1074,11 @@ static void
 construct_finish_page (glTemplateDesigner      *dialog,
                       GdkPixbuf               *logo)
 {
-       GladeXML        *gui;
-
-       gui = glade_xml_new (GLABELS_GLADE_DIR "template-designer.glade",
-                             "finish_page", NULL);
-       if (!gui)
-        {
-                g_critical ("Could not open template-designer.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-       dialog->priv->finish_page = glade_xml_get_widget (gui, "finish_page");
+       gl_debug (DEBUG_TEMPLATE, "START");
 
-        g_object_unref (gui);
+        gl_util_get_builder_widgets (dialog->priv->builder,
+                                     "finish_page", &dialog->priv->finish_page,
+                                     NULL);
 
 
         gtk_assistant_append_page (GTK_ASSISTANT (dialog),
@@ -1095,8 +1097,10 @@ construct_finish_page (glTemplateDesigner      *dialog,
                                          dialog->priv->finish_page,
                                          TRUE);
 
+       gl_debug (DEBUG_TEMPLATE, "END");
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  cancel callback.                                               */
 /*--------------------------------------------------------------------------*/
@@ -1108,6 +1112,7 @@ cancel_cb (glTemplateDesigner *dialog)
 
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  apply callback                                                 */
 /*--------------------------------------------------------------------------*/
@@ -1123,6 +1128,7 @@ apply_cb (glTemplateDesigner *dialog)
         gl_mini_preview_pixbuf_cache_add_by_name (name);
         g_free (name);
 }
+
                          
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  close callback                                                 */
@@ -1134,6 +1140,7 @@ close_cb (glTemplateDesigner *dialog)
        gtk_widget_destroy (GTK_WIDGET(dialog));
 
 }
+
                          
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  prepare page callback                                          */
@@ -1180,6 +1187,7 @@ prepare_cb (glTemplateDesigner      *dialog,
         }
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Handle non-linear forward traversal.                           */
 /*--------------------------------------------------------------------------*/
@@ -1231,6 +1239,7 @@ forward_page_function (gint     current_page,
         return -1;
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Widget on name page "changed" callback.                        */
 /*--------------------------------------------------------------------------*/
@@ -1279,6 +1288,7 @@ name_page_changed_cb (glTemplateDesigner *dialog)
        g_free (desc);
 }
                                                                                
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Widget on page size page "changed" callback.                   */
 /*--------------------------------------------------------------------------*/
@@ -1297,7 +1307,7 @@ pg_size_page_changed_cb (glTemplateDesigner *dialog)
                paper = lgl_db_lookup_paper_from_name (page_size_name);
        
 
-               if ( g_strcasecmp (paper->id, "Other") == 0 ) {
+               if ( g_ascii_strcasecmp (paper->id, "Other") == 0 ) {
                        gtk_widget_set_sensitive (GTK_WIDGET(dialog->priv->pg_w_spin), TRUE);
                        gtk_widget_set_sensitive (GTK_WIDGET(dialog->priv->pg_h_spin), TRUE);
                        gtk_widget_set_sensitive (GTK_WIDGET(dialog->priv->pg_w_units_label),
@@ -1326,6 +1336,7 @@ pg_size_page_changed_cb (glTemplateDesigner *dialog)
 
 }
                                                                                
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Prepare rectangular size page.                                 */
 /*--------------------------------------------------------------------------*/
@@ -1368,6 +1379,7 @@ rect_size_page_prepare_cb (glTemplateDesigner *dialog)
 
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Prepare round size page.                                       */
 /*--------------------------------------------------------------------------*/
@@ -1398,6 +1410,7 @@ round_size_page_prepare_cb (glTemplateDesigner *dialog)
 
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Prepare cd/dvd size page.                                      */
 /*--------------------------------------------------------------------------*/
@@ -1440,6 +1453,7 @@ cd_size_page_prepare_cb (glTemplateDesigner *dialog)
 
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Prepare Layout page cb.                                        */
 /*--------------------------------------------------------------------------*/
@@ -1559,14 +1573,15 @@ layout_page_prepare_cb (glTemplateDesigner *dialog)
        }
 
        template = build_template (dialog);
-       gl_wdgt_mini_preview_set_template (GL_WDGT_MINI_PREVIEW(dialog->priv->layout_mini_preview),
-                                          template);
+       gl_mini_preview_set_template (GL_MINI_PREVIEW(dialog->priv->layout_mini_preview),
+                                      template);
        lgl_template_free (template);
 
 
        dialog->priv->stop_signals = FALSE;
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Layout page widget changed cb.                                 */
 /*--------------------------------------------------------------------------*/
@@ -1580,14 +1595,15 @@ layout_page_changed_cb (glTemplateDesigner *dialog)
 
        template = build_template (dialog);
 
-       gl_wdgt_mini_preview_set_template (GL_WDGT_MINI_PREVIEW(dialog->priv->layout_mini_preview),
-                                          template);
+       gl_mini_preview_set_template (GL_MINI_PREVIEW(dialog->priv->layout_mini_preview),
+                                      template);
 
        lgl_template_free (template);
 
        dialog->priv->stop_signals = FALSE;
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* PRIVATE.  Print test sheet callback.                                     */
 /*--------------------------------------------------------------------------*/
@@ -1614,6 +1630,7 @@ print_test_cb (glTemplateDesigner      *dialog)
        g_object_unref (G_OBJECT(label));
 }
 
+
 /*--------------------------------------------------------------------------*/
 /* Build a template based on current assistant settings.                    */
 /*--------------------------------------------------------------------------*/
@@ -1641,7 +1658,7 @@ build_template (glTemplateDesigner      *dialog)
        page_size_name =
                gtk_combo_box_get_active_text (GTK_COMBO_BOX (dialog->priv->pg_size_combo));
        paper = lgl_db_lookup_paper_from_name (page_size_name);
-       if ( g_strcasecmp (paper->id, "Other") == 0 ) {
+       if ( g_ascii_strcasecmp (paper->id, "Other") == 0 ) {
                paper->width =
                        gtk_spin_button_get_value (GTK_SPIN_BUTTON(dialog->priv->pg_w_spin))
                        / upp;
@@ -1740,19 +1757,13 @@ build_template (glTemplateDesigner      *dialog)
        return template;
 }
 
-/*****************************************************************************/
-/* Construct mini preview widget.                                            */
-/*****************************************************************************/
-GtkWidget *
-gl_template_designer_construct_mini_preview (gchar *name,
-                                            gchar *string1,
-                                            gchar *string2,
-                                            gint   int1,
-                                            gint   int2)
-{
-       gint width  = int1;
-       gint height = int2;
 
-       return gl_wdgt_mini_preview_new (height, width);
-}
 
+/*
+ * Local Variables:       -- emacs
+ * mode: C                -- emacs
+ * c-basic-offset: 8      -- emacs
+ * tab-width: 8           -- emacs
+ * indent-tabs-mode: nil  -- emacs
+ * End:                   -- emacs
+ */