+ gl_debug (DEBUG_TEMPLATE, "END");
+}
+
+
+/*****************************************************************************/
+/* Initialize dialog from existing template. */
+/*****************************************************************************/
+void
+gl_template_designer_set_from_name (glTemplateDesigner *dialog,
+ const gchar *name)
+{
+ lglTemplate *template;
+ gdouble upp;
+ lglTemplateFrame *frame;
+ gchar *paper_name;
+ GList *p, *p_layout1, *p_layout2;
+
+ gtk_window_set_title (GTK_WINDOW(dialog), _("Edit gLabels Template"));
+
+ template = lgl_db_lookup_template_from_name (name);
+ if ( lgl_template_does_category_match (template, "user-defined") )
+ {
+
+ dialog->priv->stop_signals = TRUE;
+
+ dialog->priv->edit_flag = TRUE;
+ dialog->priv->edit_brand = g_strdup (template->brand);
+ dialog->priv->edit_part = g_strdup (template->part);
+
+ upp = dialog->priv->units_per_point;
+
+ gtk_entry_set_text (GTK_ENTRY (dialog->priv->brand_entry), template->brand);
+ gtk_entry_set_text (GTK_ENTRY (dialog->priv->part_num_entry), template->part);
+ gtk_entry_set_text (GTK_ENTRY (dialog->priv->description_entry), template->description);
+
+
+ paper_name = lgl_db_lookup_paper_name_from_id (template->paper_id);
+ gl_combo_util_set_active_text (GTK_COMBO_BOX (dialog->priv->pg_size_combo), paper_name);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->pg_w_spin), template->page_width*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->pg_h_spin), template->page_height*upp);
+ g_free (paper_name);
+
+
+ frame = (lglTemplateFrame *)template->frames->data;
+ switch (frame->shape)
+ {
+ case LGL_TEMPLATE_FRAME_SHAPE_RECT:
+ default:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->shape_rect_radio), TRUE);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->rect_w_spin), frame->rect.w*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->rect_h_spin), frame->rect.h*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->rect_r_spin), frame->rect.r*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->rect_x_waste_spin), frame->rect.x_waste*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->rect_y_waste_spin), frame->rect.y_waste*upp);
+ break;
+
+ case LGL_TEMPLATE_FRAME_SHAPE_ELLIPSE:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->shape_ellipse_radio), TRUE);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->ellipse_w_spin), frame->rect.w*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->ellipse_h_spin), frame->rect.h*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->ellipse_waste_spin), frame->rect.y_waste*upp);
+ break;
+
+ case LGL_TEMPLATE_FRAME_SHAPE_ROUND:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->shape_round_radio), TRUE);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->round_r_spin), frame->round.r*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->round_waste_spin), frame->round.waste*upp);
+ break;
+
+ case LGL_TEMPLATE_FRAME_SHAPE_CD:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->shape_cd_radio), TRUE);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->cd_radius_spin), frame->cd.r1*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->cd_hole_spin), frame->cd.r2*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->cd_w_spin), frame->cd.w*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->cd_h_spin), frame->cd.h*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->round_waste_spin), frame->round.waste*upp);
+ break;
+
+ }
+ for ( p = frame->all.markups; p != NULL; p=p->next )
+ {
+ lglTemplateMarkup *markup = (lglTemplateMarkup *)p->data;
+
+ if ( markup->type == LGL_TEMPLATE_MARKUP_MARGIN )
+ {
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->rect_margin_spin), markup->margin.size*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->ellipse_margin_spin), markup->margin.size*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->round_margin_spin), markup->margin.size*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->cd_margin_spin), markup->margin.size*upp);
+ }
+ }
+
+
+ p_layout1 = g_list_nth (frame->all.layouts, 0);
+ p_layout2 = g_list_nth (frame->all.layouts, 1);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->nlayouts_spin), p_layout2 ? 2 : 1 );
+ if ( p_layout1 )
+ {
+ lglTemplateLayout *layout1 = (lglTemplateLayout *)p_layout1->data;
+
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout1_nx_spin), layout1->nx);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout1_ny_spin), layout1->ny);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout1_x0_spin), layout1->x0*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout1_y0_spin), layout1->y0*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout1_dx_spin), layout1->dx*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout1_dy_spin), layout1->dy*upp);
+ }
+ if ( p_layout2 )
+ {
+ lglTemplateLayout *layout2 = (lglTemplateLayout *)p_layout2->data;
+
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout2_nx_spin), layout2->nx);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout2_ny_spin), layout2->ny);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout2_x0_spin), layout2->x0*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout2_y0_spin), layout2->y0*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout2_dx_spin), layout2->dx*upp);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(dialog->priv->layout2_dy_spin), layout2->dy*upp);
+ }
+
+
+ dialog->priv->stop_signals = FALSE;
+
+ }