-/* -*- 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 <math.h>
#include "prefs.h"
-#include <libglabels/paper.h>
-#include <libglabels/template.h>
-#include "wdgt-mini-preview.h"
+#include <libglabels/db.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;
/* Name page controls */
GtkWidget *brand_entry;
GtkWidget *part_num_entry;
+ GtkWidget *name_warning_image;
+ GtkWidget *name_warning_label;
GtkWidget *description_entry;
/* Page size page controls */
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;
FINISH_PAGE_NUM
};
+
/*========================================================*/
/* Private globals. */
/*========================================================*/
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)
{
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);
gl_debug (DEBUG_TEMPLATE, "END");
}
+
/*****************************************************************************/
/* NEW preferences dialog. */
/*****************************************************************************/
return dialog;
}
+
/*---------------------------------------------------------------------------*/
/* PRIVATE. Construct composite widget. */
/*---------------------------------------------------------------------------*/
{
GdkPixbuf *logo;
+ gl_debug (DEBUG_TEMPLATE, "START");
+
g_return_if_fail (dialog && GL_IS_TEMPLATE_DESIGNER (dialog));
g_return_if_fail (dialog->priv != NULL);
G_CALLBACK(prepare_cb), NULL);
gtk_widget_show_all (GTK_WIDGET(dialog));
+
+ gl_debug (DEBUG_TEMPLATE, "END");
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Construct start page. */
/*--------------------------------------------------------------------------*/
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);
gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog),
dialog->priv->start_page,
TRUE);
+
+ gl_debug (DEBUG_TEMPLATE, "END");
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Construct name page. */
/*--------------------------------------------------------------------------*/
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->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),
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. */
/*--------------------------------------------------------------------------*/
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));
TRUE);
/* Load page size combo */
- page_sizes = lgl_paper_get_name_list ();
+ page_sizes = lgl_db_get_paper_name_list ();
gl_util_combo_box_set_strings (GTK_COMBO_BOX (dialog->priv->pg_size_combo), page_sizes);
- lgl_paper_free_name_list (page_sizes);
+ lgl_db_free_paper_name_list (page_sizes);
default_page_size_id = gl_prefs_get_page_size ();
- default_page_size_name = lgl_paper_lookup_name_from_id (default_page_size_id);
+ default_page_size_name = lgl_db_lookup_paper_name_from_id (default_page_size_id);
gl_util_combo_box_set_active_text (GTK_COMBO_BOX (dialog->priv->pg_size_combo), default_page_size_name);
g_free (default_page_size_name);
/* 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. */
/*--------------------------------------------------------------------------*/
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),
gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog),
dialog->priv->shape_page,
TRUE);
+
+ gl_debug (DEBUG_TEMPLATE, "END");
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Construct rect size page. */
/*--------------------------------------------------------------------------*/
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),
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. */
/*--------------------------------------------------------------------------*/
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),
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. */
/*--------------------------------------------------------------------------*/
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),
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. */
/*--------------------------------------------------------------------------*/
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),
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. */
/*--------------------------------------------------------------------------*/
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);
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. */
/*--------------------------------------------------------------------------*/
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),
dialog->priv->finish_page,
TRUE);
+ gl_debug (DEBUG_TEMPLATE, "END");
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. cancel callback. */
/*--------------------------------------------------------------------------*/
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. apply callback */
/*--------------------------------------------------------------------------*/
gchar *name;
template = build_template (dialog);
- lgl_template_register (template);
+ lgl_db_register_template (template);
name = lgl_template_get_name (template);
gl_mini_preview_pixbuf_cache_add_by_name (name);
g_free (name);
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. close callback */
gtk_widget_destroy (GTK_WIDGET(dialog));
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. prepare page callback */
}
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Handle non-linear forward traversal. */
/*--------------------------------------------------------------------------*/
return -1;
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Widget on name page "changed" callback. */
/*--------------------------------------------------------------------------*/
{
gchar *brand, *part_num, *desc;
- brand = gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->brand_entry), 0, -1);
- part_num = gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->part_num_entry), 0, -1);
+ brand = g_strstrip (gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->brand_entry), 0, -1));
+ part_num = g_strstrip (gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->part_num_entry), 0, -1));
desc = gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->description_entry), 0, -1);
- if (brand && brand[0] && part_num && part_num[0] && desc && desc[0])
+
+ if (brand && brand[0] && part_num && part_num[0] &&
+ lgl_db_does_template_exist (brand, part_num))
+ {
+ gtk_image_set_from_stock (GTK_IMAGE (dialog->priv->name_warning_image),
+ GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_BUTTON);
+ gtk_label_set_markup (GTK_LABEL (dialog->priv->name_warning_label),
+ _("<span foreground='red' weight='bold'>Brand and part# match an existing template!</span>"));
+ }
+ else
+ {
+ gtk_image_clear (GTK_IMAGE (dialog->priv->name_warning_image));
+ gtk_label_set_text (GTK_LABEL (dialog->priv->name_warning_label), "");
+ }
+
+ if (brand && brand[0] && part_num && part_num[0] && desc && desc[0] &&
+ !lgl_db_does_template_exist (brand, part_num))
{
gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog),
g_free (desc);
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Widget on page size page "changed" callback. */
/*--------------------------------------------------------------------------*/
if (page_size_name && strlen(page_size_name)) {
- paper = lgl_paper_from_name (page_size_name);
+ 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),
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Prepare rectangular size page. */
/*--------------------------------------------------------------------------*/
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Prepare round size page. */
/*--------------------------------------------------------------------------*/
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Prepare cd/dvd size page. */
/*--------------------------------------------------------------------------*/
}
+
/*--------------------------------------------------------------------------*/
/* PRIVATE. Prepare Layout page cb. */
/*--------------------------------------------------------------------------*/
}
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. */
/*--------------------------------------------------------------------------*/
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. */
/*--------------------------------------------------------------------------*/
g_object_unref (G_OBJECT(label));
}
+
/*--------------------------------------------------------------------------*/
/* Build a template based on current assistant settings. */
/*--------------------------------------------------------------------------*/
upp = dialog->priv->units_per_point;
- brand = gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->brand_entry), 0, -1);
- part_num = gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->part_num_entry), 0, -1);
+ brand = g_strstrip (gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->brand_entry), 0, -1));
+ part_num = g_strstrip (gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->part_num_entry), 0, -1));
desc = gtk_editable_get_chars (GTK_EDITABLE(dialog->priv->description_entry), 0, -1);
page_size_name =
gtk_combo_box_get_active_text (GTK_COMBO_BOX (dialog->priv->pg_size_combo));
- paper = lgl_paper_from_name (page_size_name);
- if ( g_strcasecmp (paper->id, "Other") == 0 ) {
+ paper = lgl_db_lookup_paper_from_name (page_size_name);
+ if ( g_ascii_strcasecmp (paper->id, "Other") == 0 ) {
paper->width =
gtk_spin_button_get_value (GTK_SPIN_BUTTON(dialog->priv->pg_w_spin))
/ upp;
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
+ */