X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=glabels2%2Fsrc%2Fwdgt-print-merge.c;h=f8b05909bf54eaa58949f4eea26ad536caf68edb;hb=be11ca532e497806c00fa59c084b0710668226f8;hp=51a0143250bacf421aa54c99f6af5fd618182556;hpb=e1a2cde6e4ffbe6938f93ae8629dc1f80d3a40fa;p=glabels diff --git a/glabels2/src/wdgt-print-merge.c b/glabels2/src/wdgt-print-merge.c index 51a01432..f8b05909 100644 --- a/glabels2/src/wdgt-print-merge.c +++ b/glabels2/src/wdgt-print-merge.c @@ -1,3 +1,5 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ + /* * (GLABELS) Label and Business Card Creation program for GNOME * @@ -23,6 +25,16 @@ #include #include "wdgt-print-merge.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "hig.h" #include "wdgt-mini-preview.h" #include "marshal.h" @@ -38,14 +50,10 @@ /* Private globals */ /*===========================================*/ -static GObjectClass *parent_class; - /*===========================================*/ /* Local function prototypes */ /*===========================================*/ -static void gl_wdgt_print_merge_class_init (glWdgtPrintMergeClass * class); -static void gl_wdgt_print_merge_instance_init (glWdgtPrintMerge * merge); static void gl_wdgt_print_merge_finalize (GObject * object); static void gl_wdgt_print_merge_construct (glWdgtPrintMerge * merge, @@ -64,47 +72,21 @@ static void spin_cb (GtkSpinButton * spinbutton, /****************************************************************************/ /* Boilerplate Object stuff. */ /****************************************************************************/ -guint -gl_wdgt_print_merge_get_type (void) -{ - static guint wdgt_print_merge_type = 0; - - if (!wdgt_print_merge_type) { - GTypeInfo wdgt_print_merge_info = { - sizeof (glWdgtPrintMergeClass), - NULL, - NULL, - (GClassInitFunc) gl_wdgt_print_merge_class_init, - NULL, - NULL, - sizeof (glWdgtPrintMerge), - 0, - (GInstanceInitFunc) gl_wdgt_print_merge_instance_init, - }; - - wdgt_print_merge_type = - g_type_register_static (gl_hig_hbox_get_type (), - "glWdgtPrintMerge", - &wdgt_print_merge_info, 0); - } +G_DEFINE_TYPE (glWdgtPrintMerge, gl_wdgt_print_merge, GTK_TYPE_HBOX); - return wdgt_print_merge_type; -} static void gl_wdgt_print_merge_class_init (glWdgtPrintMergeClass * class) { - GObjectClass *object_class; + GObjectClass *object_class = G_OBJECT_CLASS (class); - object_class = (GObjectClass *) class; - - parent_class = g_type_class_peek_parent (class); + gl_wdgt_print_merge_parent_class = g_type_class_peek_parent (class); object_class->finalize = gl_wdgt_print_merge_finalize; } static void -gl_wdgt_print_merge_instance_init (glWdgtPrintMerge * merge) +gl_wdgt_print_merge_init (glWdgtPrintMerge * merge) { merge->mini_preview = NULL; @@ -117,15 +99,10 @@ gl_wdgt_print_merge_instance_init (glWdgtPrintMerge * merge) static void gl_wdgt_print_merge_finalize (GObject * object) { - glWdgtPrintMerge *merge; - glWdgtPrintMergeClass *class; - g_return_if_fail (object != NULL); g_return_if_fail (GL_IS_WDGT_PRINT_MERGE (object)); - merge = GL_WDGT_PRINT_MERGE (object); - - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (gl_wdgt_print_merge_parent_class)->finalize (object); } GtkWidget * @@ -147,7 +124,6 @@ static void gl_wdgt_print_merge_construct (glWdgtPrintMerge * merge, glLabel * label) { - glTemplate *template; const glTemplateLabelType *label_type; GtkWidget *whbox, *wvbox, *whbox1; GtkObject *adjust; @@ -155,8 +131,7 @@ gl_wdgt_print_merge_construct (glWdgtPrintMerge * merge, whbox = GTK_WIDGET (merge); - template = gl_label_get_template (label); - label_type = gl_template_get_first_label_type (template); + label_type = gl_template_get_first_label_type (label->template); merge->labels_per_sheet = gl_template_get_n_labels (label_type); @@ -164,49 +139,49 @@ gl_wdgt_print_merge_construct (glWdgtPrintMerge * merge, merge->mini_preview = gl_wdgt_mini_preview_new (WDGT_MINI_PREVIEW_HEIGHT, WDGT_MINI_PREVIEW_WIDTH); gl_wdgt_mini_preview_set_template( GL_WDGT_MINI_PREVIEW (merge->mini_preview), - template ); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox), merge->mini_preview); + label->template ); + gtk_box_pack_start (GTK_BOX(whbox), merge->mini_preview, FALSE, FALSE, 0); gl_wdgt_mini_preview_highlight_range (GL_WDGT_MINI_PREVIEW(merge->mini_preview), 1, 1); - wvbox = gl_hig_vbox_new (GL_HIG_VBOX_INNER); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox), wvbox); + wvbox = gtk_vbox_new (FALSE, GL_HIG_PAD1); + gtk_box_pack_start (GTK_BOX(whbox), wvbox, FALSE, FALSE, 0); /* First Label controls */ - whbox1 = gl_hig_hbox_new (); - gl_hig_vbox_add_widget (GL_HIG_VBOX(wvbox), whbox1); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox1), - gtk_label_new (_("Start on label"))); + whbox1 = gtk_hbox_new (FALSE, GL_HIG_PAD2); + gtk_box_pack_start (GTK_BOX(wvbox), whbox1, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(whbox1), + gtk_label_new (_("Start on label")), FALSE, FALSE, 0); adjust = gtk_adjustment_new (1, 1.0, merge->labels_per_sheet, 1.0, 10.0, 10.0); merge->first_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust), 1.0, 0); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox1), merge->first_spin); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox1), - gtk_label_new (_("on 1st sheet"))); + gtk_box_pack_start (GTK_BOX(whbox1), merge->first_spin, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(whbox1), + gtk_label_new (_("on 1st sheet")), FALSE, FALSE, 0); /* Blank line */ - gl_hig_vbox_add_widget (GL_HIG_VBOX(wvbox), gtk_label_new ("")); + gtk_box_pack_start (GTK_BOX(wvbox), gtk_label_new (""), FALSE, FALSE, 0); /* Copy & collate controls*/ - whbox1 = gl_hig_hbox_new (); - gl_hig_vbox_add_widget (GL_HIG_VBOX(wvbox), whbox1); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox1), - gtk_label_new (_("Copies:"))); + whbox1 = gtk_hbox_new (FALSE, GL_HIG_PAD2); + gtk_box_pack_start (GTK_BOX(wvbox), whbox1, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(whbox1), + gtk_label_new (_("Copies:")), FALSE, FALSE, 0); adjust = gtk_adjustment_new (1, 1.0, 10.0, 1.0, 10.0, 10.0); merge->copies_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust), 1.0, 0); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox1), merge->copies_spin); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox1), gtk_label_new (" ")); + gtk_box_pack_start (GTK_BOX(whbox1), merge->copies_spin, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(whbox1), gtk_label_new (" "), FALSE, FALSE, 0); merge->collate_check = gtk_check_button_new_with_label (_("Collate")); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox1), merge->collate_check); + gtk_box_pack_start (GTK_BOX(whbox1), merge->collate_check, FALSE, FALSE, 0); pixbuf = gdk_pixbuf_new_from_xpm_data ( (const char **)nocollate_xpm); merge->collate_image = gtk_image_new_from_pixbuf(pixbuf); gtk_widget_set_sensitive (merge->collate_check, FALSE); gtk_widget_set_sensitive (merge->collate_image, FALSE); - gl_hig_hbox_add_widget (GL_HIG_HBOX(whbox1), merge->collate_image); + gtk_box_pack_start (GTK_BOX(whbox1), merge->collate_image, FALSE, FALSE, 0); /* Connect signals to controls */ g_signal_connect (G_OBJECT (merge->mini_preview), "clicked", @@ -217,8 +192,6 @@ gl_wdgt_print_merge_construct (glWdgtPrintMerge * merge, G_CALLBACK (spin_cb), merge); g_signal_connect (G_OBJECT (merge->first_spin), "changed", G_CALLBACK (spin_cb), merge); - - gl_template_free (template); } /*--------------------------------------------------------------------------*/ @@ -298,10 +271,11 @@ preview_clicked (glWdgtMiniPreview *mini_preview, /* query selected range of labels within sheet or number of sheets. */ /****************************************************************************/ void -gl_wdgt_print_merge_get_copies (glWdgtPrintMerge * merge, - gint * n_copies, - gint * first_label, - gboolean * collate_flag) +gl_wdgt_print_merge_get_copies (glWdgtPrintMerge *merge, + gint *n_copies, + gint *first_label, + gboolean *collate_flag, + gint *n_sheets) { *n_copies = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON @@ -312,6 +286,8 @@ gl_wdgt_print_merge_get_copies (glWdgtPrintMerge * merge, *collate_flag = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (merge->collate_check)); + + *n_sheets = ceil ( (double)(*first_label - 1 + (*n_copies * merge->n_records))/ (double)merge->labels_per_sheet ); } /****************************************************************************/