]> git.sur5r.net Git - glabels/commitdiff
2009-09-13 Jim Evins <evins@snaught.com>
authorJim Evins <evins@snaught.com>
Sun, 13 Sep 2009 05:00:03 +0000 (05:00 +0000)
committerJim Evins <evins@snaught.com>
Sun, 13 Sep 2009 05:00:03 +0000 (05:00 +0000)
Refactored print operation subsystem.

* src/print-op.c:
* src/print-op.h:
Basic GtkPrintOperation based class.  Does not instantiate
custom widgets, so it can be used by glabels-batch without
the additional overhead.
* src/print-op-dialog.c:
* src/print-op-dialog.h:
New object derived from glPrintOp.  This one is intended
to be used as a dialog and installs custom widgets.
glWdgtPrintCopies and glWdgtPrintMerge have been merged
into this object.
* src/wdgt-print-copies.c:
* src/wdgt-print-copies.h:
* src/wdgt-print-merge.c:
* src/wdgt-print-merge.h:
Deleted.
* src/Makefile.am:
Modified to reflect above additions and deletions.
* src/mini-preview.c: (gl_mini_preview_construct),
(gl_mini_preview_set_template), (set_transform_and_get_scale),
(button_press_event_cb), (motion_notify_event_cb), (draw):
Now scales with allocation.
* src/glabels-batch.c: (main):
* src/template-designer.c: (print_test_cb):
* src/ui-commands.c: (gl_ui_cmd_file_print):
Use above modifications.
* data/builder/print-op-dialog-custom-widget.builder:
New builder file for glPrintOpDialog custom widgets.
* data/builder/print-custom-widget.builder:
Deleted.
* data/builder/Makefile.am:
Modified to reflect above addition and deletion.

git-svn-id: https://glabels.svn.sourceforge.net/svnroot/glabels/trunk@883 f5e0f49d-192f-0410-a22d-a8d8700d0965

17 files changed:
glabels2/ChangeLog
glabels2/data/builder/Makefile.am
glabels2/data/builder/print-custom-widget.builder [deleted file]
glabels2/data/builder/print-op-dialog-custom-widget.builder [new file with mode: 0644]
glabels2/src/Makefile.am
glabels2/src/glabels-batch.c
glabels2/src/mini-preview.c
glabels2/src/print-op-dialog.c [new file with mode: 0644]
glabels2/src/print-op-dialog.h [new file with mode: 0644]
glabels2/src/print-op.c
glabels2/src/print-op.h
glabels2/src/template-designer.c
glabels2/src/ui-commands.c
glabels2/src/wdgt-print-copies.c [deleted file]
glabels2/src/wdgt-print-copies.h [deleted file]
glabels2/src/wdgt-print-merge.c [deleted file]
glabels2/src/wdgt-print-merge.h [deleted file]

index c28d00e2cb3d4a03f877426ce842fb3c85d3d1a9..75999dfa38171b05d5ffdc7d9a0af9214c17a5ea 100644 (file)
@@ -1,3 +1,40 @@
+2009-09-13  Jim Evins  <evins@snaught.com>
+
+       Refactored print operation subsystem.
+       
+       * src/print-op.c:
+       * src/print-op.h:
+               Basic GtkPrintOperation based class.  Does not instantiate
+               custom widgets, so it can be used by glabels-batch without
+               the additional overhead.
+       * src/print-op-dialog.c:
+       * src/print-op-dialog.h:
+               New object derived from glPrintOp.  This one is intended
+               to be used as a dialog and installs custom widgets.
+               glWdgtPrintCopies and glWdgtPrintMerge have been merged
+               into this object.
+       * src/wdgt-print-copies.c:
+       * src/wdgt-print-copies.h:
+       * src/wdgt-print-merge.c:
+       * src/wdgt-print-merge.h:
+               Deleted.
+       * src/Makefile.am:
+               Modified to reflect above additions and deletions.
+       * src/mini-preview.c: (gl_mini_preview_construct),
+       (gl_mini_preview_set_template), (set_transform_and_get_scale),
+       (button_press_event_cb), (motion_notify_event_cb), (draw):
+               Now scales with allocation.
+       * src/glabels-batch.c: (main):
+       * src/template-designer.c: (print_test_cb):
+       * src/ui-commands.c: (gl_ui_cmd_file_print):
+               Use above modifications.
+       * data/builder/print-op-dialog-custom-widget.builder:
+               New builder file for glPrintOpDialog custom widgets.
+       * data/builder/print-custom-widget.builder:
+               Deleted.
+       * data/builder/Makefile.am:
+               Modified to reflect above addition and deletion.
+
 2009-09-10  Jim Evins  <evins@snaught.com>
 
        * src/Makefile.am:
index 9fb6fc93f55aaf1dfe26de9a1600382804bc1860..1f05775331c75c181a8d7d2c68d4ed732564f75a 100644 (file)
@@ -4,7 +4,7 @@ builderdir = $(datadir)/glabels/builder/
 
 builder_DATA = \
        property-bar.builder            \
-       print-custom-widget.builder     \
+       print-op-dialog-custom-widget.builder   \
        wdgt-media-select.builder       \
        merge-properties-dialog.builder \
        new-label-dialog.builder        \
diff --git a/glabels2/data/builder/print-custom-widget.builder b/glabels2/data/builder/print-custom-widget.builder
deleted file mode 100644 (file)
index 1c01824..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0"?>
-<interface>
-  <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy toplevel-contextual -->
-  <object class="GtkWindow" id="window1">
-    <property name="visible">True</property>
-    <property name="title" translatable="yes">window1</property>
-    <child>
-      <object class="GtkVBox" id="print_custom_widget_vbox">
-        <property name="visible">True</property>
-        <property name="border_width">12</property>
-        <property name="spacing">12</property>
-        <child>
-          <object class="GtkVBox" id="vbox3">
-            <property name="visible">True</property>
-            <child>
-              <object class="GtkFrame" id="simple_frame">
-                <property name="visible">True</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">none</property>
-                <child>
-                  <object class="GtkAlignment" id="alignment1">
-                    <property name="visible">True</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <object class="GtkVBox" id="copies_vbox">
-                        <property name="visible">True</property>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-                <child type="label">
-                  <object class="GtkLabel" id="label2">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Print control (Simple)&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkFrame" id="merge_frame">
-                <property name="visible">True</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">none</property>
-                <child>
-                  <object class="GtkAlignment" id="alignment2">
-                    <property name="visible">True</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <object class="GtkVBox" id="prmerge_vbox">
-                        <property name="visible">True</property>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-                <child type="label">
-                  <object class="GtkLabel" id="label3">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Print control (Merge)&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="frame3">
-            <property name="visible">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="alignment3">
-                <property name="visible">True</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="vbox2">
-                    <property name="visible">True</property>
-                    <child>
-                      <object class="GtkCheckButton" id="outline_check">
-                        <property name="label" translatable="yes">print outlines (to test printer alignment)</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" id="reverse_check">
-                        <property name="label" translatable="yes">print in reverse (i.e. a mirror image)</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" id="crop_marks_check">
-                        <property name="label" translatable="yes">print crop marks</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="label4">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
-</interface>
diff --git a/glabels2/data/builder/print-op-dialog-custom-widget.builder b/glabels2/data/builder/print-op-dialog-custom-widget.builder
new file mode 100644 (file)
index 0000000..59afddb
--- /dev/null
@@ -0,0 +1,467 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkWindow" id="window1">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">window1</property>
+    <child>
+      <object class="GtkHBox" id="print_custom_widget_hbox">
+        <property name="visible">True</property>
+        <property name="border_width">12</property>
+        <property name="spacing">3</property>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkVBox" id="vbox3">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkFrame" id="simple_frame">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" id="copies_vbox">
+                            <property name="visible">True</property>
+                            <property name="orientation">vertical</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkHBox" id="hbox1">
+                                <property name="visible">True</property>
+                                <property name="spacing">6</property>
+                                <child>
+                                  <object class="GtkRadioButton" id="simple_sheets_radio">
+                                    <property name="label" translatable="yes">Sheets:</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" id="simple_sheets_spin">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="invisible_char">&#x25CF;</property>
+                                    <property name="adjustment">adjustment1</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" id="hbox2">
+                                <property name="visible">True</property>
+                                <property name="spacing">6</property>
+                                <child>
+                                  <object class="GtkRadioButton" id="simple_labels_radio">
+                                    <property name="label" translatable="yes">Labels</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">simple_sheets_radio</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" id="hbox3">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">3</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label1">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">from:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" id="simple_first_spin">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="invisible_char">&#x25CF;</property>
+                                        <property name="adjustment">adjustment2</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">3</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" id="hbox4">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">3</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label5">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">to:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" id="simple_last_spin">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="invisible_char">&#x25CF;</property>
+                                        <property name="adjustment">adjustment3</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">3</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Copies&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="merge_frame">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" id="prmerge_vbox">
+                            <property name="visible">True</property>
+                            <property name="orientation">vertical</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkHBox" id="hbox5">
+                                <property name="visible">True</property>
+                                <property name="spacing">6</property>
+                                <child>
+                                  <object class="GtkLabel" id="label6">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">Start on label</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" id="merge_first_spin">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="invisible_char">&#x25CF;</property>
+                                    <property name="adjustment">adjustment4</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label7">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">on 1st sheet</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" id="hbox6">
+                                <property name="visible">True</property>
+                                <property name="spacing">6</property>
+                                <child>
+                                  <object class="GtkLabel" id="label8">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">Copies:</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" id="merge_copies_spin">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="invisible_char">&#x25CF;</property>
+                                    <property name="adjustment">adjustment5</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" id="merge_collate_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">12</property>
+                                    <child>
+                                      <object class="GtkCheckButton" id="merge_collate_check">
+                                        <property name="label" translatable="yes">Collate</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="draw_indicator">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" id="merge_collate_image">
+                                        <property name="visible">True</property>
+                                        <property name="stock">gtk-missing-image</property>
+                                      </object>
+                                      <packing>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">12</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Merge Control&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame3">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox2">
+                        <property name="visible">True</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkCheckButton" id="outline_check">
+                            <property name="label" translatable="yes">print outlines (to test printer alignment)</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="reverse_check">
+                            <property name="label" translatable="yes">print in reverse (i.e. a mirror image)</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="crop_marks_check">
+                            <property name="label" translatable="yes">print crop marks</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label4">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="value">1</property>
+    <property name="lower">1</property>
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment2">
+    <property name="value">1</property>
+    <property name="lower">1</property>
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment3">
+    <property name="value">1</property>
+    <property name="lower">1</property>
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment4">
+    <property name="value">1</property>
+    <property name="lower">1</property>
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment5">
+    <property name="value">1</property>
+    <property name="lower">1</property>
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+</interface>
index 7baaf2a1aa62a3e269c14fab0cc4c3a5e592582f..fa5161b8b6b7bdd758eb37d3ba159da2819e3b51 100644 (file)
@@ -115,6 +115,8 @@ glabels_SOURCES =                   \
        print.h                         \
        print-op.c                      \
        print-op.h                      \
+       print-op-dialog.c               \
+       print-op-dialog.h               \
        template-designer.c             \
        template-designer.h             \
        bc.c                            \
@@ -165,10 +167,6 @@ glabels_SOURCES =                  \
        mini-preview-pixbuf.h           \
        mini-preview-pixbuf-cache.c     \
        mini-preview-pixbuf-cache.h     \
-       wdgt-print-copies.c             \
-       wdgt-print-copies.h             \
-       wdgt-print-merge.c              \
-       wdgt-print-merge.h              \
        wdgt-media-select.c             \
        wdgt-media-select.h             \
        mini-preview.c                  \
@@ -280,12 +278,6 @@ glabels_batch_SOURCES =            \
        color.h                         \
        debug.c                         \
        debug.h                         \
-       wdgt-print-copies.c             \
-       wdgt-print-copies.h             \
-       wdgt-print-merge.c              \
-       wdgt-print-merge.h              \
-       mini-preview.c                  \
-       mini-preview.h                  \
        hig.h                           \
        cairo-label-path.c              \
        cairo-label-path.h              \
index 32e46baefa38ef4bc31cd88a3cb91219b761e268..e4cb2c4d9e50504248ded9906c5129257194032a 100644 (file)
@@ -1,25 +1,21 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-
 /*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  glabels.c: main program module
+ *  glabels-batch.c
+ *  Copyright (C) 2001-2009  Jim Evins <evins@snaught.com>.
  *
- *  Copyright (C) 2001  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>
@@ -32,6 +28,7 @@
 #include "print-op.h"
 #include <libglabels/db.h>
 #include "util.h"
+#include <math.h>
 #include "prefs.h"
 #include "debug.h"
 
@@ -83,6 +80,7 @@ main (int argc, char **argv)
         gchar             *abs_fn;
         glLabel           *label = NULL;
         glMerge           *merge = NULL;
+        lglTemplateFrame  *frame;
         glXMLLabelStatus   status;
         glPrintOp         *print_op;
        gchar             *utf8_filename;
@@ -137,8 +135,8 @@ main (int argc, char **argv)
 
                 if ( status == XML_LABEL_OK ) {
 
+                        merge = gl_label_get_merge (label);
                         if (input != NULL) {
-                                merge = gl_label_get_merge (label);
                                 if (merge != NULL) {
                                         gl_merge_set_src(merge, input);
                                         gl_label_set_merge(label, merge);
@@ -149,15 +147,27 @@ main (int argc, char **argv)
                                 }
                         }
                         abs_fn = gl_util_make_absolute ( output );
-                        print_op = gl_print_op_new_batch (label,
-                                                          abs_fn,
-                                                          n_sheets,
-                                                          n_copies,
-                                                          first,
-                                                          outline_flag,
-                                                          reverse_flag,
-                                                          crop_marks_flag);
-
+                        frame = (lglTemplateFrame *)label->template->frames->data;
+
+                        print_op = gl_print_op_new (label);
+                        gl_print_op_set_filename        (print_op, abs_fn);
+                        gl_print_op_set_n_copies        (print_op, n_copies);
+                        gl_print_op_set_first           (print_op, first);
+                        gl_print_op_set_outline_flag    (print_op, outline_flag);
+                        gl_print_op_set_reverse_flag    (print_op, reverse_flag);
+                        gl_print_op_set_crop_marks_flag (print_op, crop_marks_flag);
+                        if (merge)
+                        {
+                                gl_print_op_set_n_sheets (print_op,
+                                                          ceil ((double)(first-1 + n_copies * gl_merge_get_record_count(merge))
+                                                                / lgl_template_frame_get_n_labels (frame)));
+                        }
+                        else
+                        {
+                                gl_print_op_set_n_sheets (print_op, n_sheets);
+                                gl_print_op_set_last     (print_op,
+                                                          lgl_template_frame_get_n_labels (frame));
+                        }
                         gtk_print_operation_run (GTK_PRINT_OPERATION (print_op),
                                                  GTK_PRINT_OPERATION_ACTION_EXPORT,
                                                  NULL,
@@ -176,3 +186,14 @@ main (int argc, char **argv)
         return 0;
 }
 
+
+
+
+/*
+ * Local Variables:       -- emacs
+ * mode: C                -- emacs
+ * c-basic-offset: 8      -- emacs
+ * tab-width: 8           -- emacs
+ * indent-tabs-mode: nil  -- emacs
+ * End:                   -- emacs
+ */
index 5af8b9fae62ce59af4a94a18c19149c1894210ef..9034ed7b5cbc70567b336255121f6d2d07614072 100644 (file)
@@ -36,7 +36,7 @@
 /* Private macros and constants.             */
 /*===========================================*/
 
-#define MARGIN
+#define MARGIN 2
 #define SHADOW_OFFSET 3
 
 
@@ -59,13 +59,7 @@ struct _glMiniPreviewPrivate {
 
         GtkWidget      *canvas;
 
-       gint            height;
-       gint            width;
-
        lglTemplate    *template;
-       gdouble         scale;
-       gdouble         offset_x;
-       gdouble         offset_y;
        gint            labels_per_sheet;
        LabelCenter    *centers;
 
@@ -135,6 +129,9 @@ static gint     find_closest_label             (glMiniPreview          *this,
                                                gdouble                 x,
                                                gdouble                 y);
 
+static gdouble  set_transform_and_get_scale    (glMiniPreview          *this,
+                                               cairo_t                *cr);
+
 
 /****************************************************************************/
 /* Object infrastructure.                                                   */
@@ -266,9 +263,6 @@ gl_mini_preview_construct (glMiniPreview *this,
 {
        gl_debug (DEBUG_MINI_PREVIEW, "START");
 
-       this->priv->height = height;
-       this->priv->width  = width;
-
        gtk_widget_set_size_request (GTK_WIDGET (this->priv->canvas), width, height);
 
        gl_debug (DEBUG_MINI_PREVIEW, "END");
@@ -319,19 +313,6 @@ gl_mini_preview_set_template (glMiniPreview     *this,
        lgl_template_free (this->priv->template);
        this->priv->template = lgl_template_dup (template);
 
-       /*
-        * Set scale and offsets
-        */
-       w = this->priv->width - 2*MARGIN - 2*SHADOW_OFFSET;
-       h = this->priv->height - 2*MARGIN - 2*SHADOW_OFFSET;
-       if ( (w/template->page_width) > (h/template->page_height) ) {
-               this->priv->scale = h / template->page_height;
-       } else {
-               this->priv->scale = w / template->page_width;
-       }
-       this->priv->offset_x = (this->priv->width/this->priv->scale - template->page_width) / 2.0;
-       this->priv->offset_y = (this->priv->height/this->priv->scale - template->page_height) / 2.0;
-
        /*
         * Set labels per sheet
         */
@@ -379,6 +360,39 @@ gl_mini_preview_highlight_range (glMiniPreview *this,
 }
 
 
+/*--------------------------------------------------------------------------*/
+/* Set transformation and return scale.                                     */
+/*--------------------------------------------------------------------------*/
+static gdouble
+set_transform_and_get_scale (glMiniPreview *this,
+                             cairo_t       *cr)
+{
+       lglTemplate *template = this->priv->template;
+        gdouble      w, h;
+        gdouble      w1, h1;
+        gdouble      scale;
+        gdouble      offset_x, offset_y;
+
+        /* Establish scale and origin. */
+        w = GTK_WIDGET (this)->allocation.width;
+        h = GTK_WIDGET (this)->allocation.height;
+
+        /* establish scale. */
+        scale = MIN( (w - 2*MARGIN - 2*SHADOW_OFFSET)/template->page_width,
+                     (h - 2*MARGIN - 2*SHADOW_OFFSET)/template->page_height );
+
+        /* Find offset to center preview. */
+        offset_x = (w/scale - template->page_width) / 2.0;
+        offset_y = (h/scale - template->page_height) / 2.0;
+
+        /* Set transformation. */
+        cairo_scale (cr, scale, scale);
+        cairo_translate (cr, offset_x, offset_y);
+
+        return scale;
+}
+
+
 /*--------------------------------------------------------------------------*/
 /* Button press event handler                                               */
 /*--------------------------------------------------------------------------*/
@@ -388,6 +402,7 @@ button_press_event_cb (GtkWidget      *widget,
 {
        glMiniPreview     *this = GL_MINI_PREVIEW (widget);
        cairo_t           *cr;
+        gdouble            scale;
        gdouble            x, y;
        gint               i;
 
@@ -397,9 +412,7 @@ button_press_event_cb (GtkWidget      *widget,
        {
                cr = gdk_cairo_create (GTK_WIDGET (this->priv->canvas)->window);
 
-               /* Set transformation. */
-               cairo_scale (cr, this->priv->scale, this->priv->scale);
-               cairo_translate (cr, this->priv->offset_x, this->priv->offset_y);
+                scale = set_transform_and_get_scale (this, cr);
 
                x = event->x;
                y = event->y;
@@ -437,6 +450,7 @@ motion_notify_event_cb (GtkWidget      *widget,
 {
        glMiniPreview *this = GL_MINI_PREVIEW (widget);
        cairo_t           *cr;
+        gdouble            scale;
        gdouble            x, y;
        gint               i;
 
@@ -446,9 +460,7 @@ motion_notify_event_cb (GtkWidget      *widget,
        {
                cr = gdk_cairo_create (GTK_WIDGET (this->priv->canvas)->window);
 
-               /* Set transformation. */
-               cairo_scale (cr, this->priv->scale, this->priv->scale);
-               cairo_translate (cr, this->priv->offset_x, this->priv->offset_y);
+                scale = set_transform_and_get_scale (this, cr);
 
                x = event->x;
                y = event->y;
@@ -610,21 +622,20 @@ draw (glMiniPreview  *this,
       cairo_t        *cr)
 {
        lglTemplate *template = this->priv->template;
+        gdouble      scale;
        gdouble      shadow_x, shadow_y;
 
+
        gl_debug (DEBUG_MINI_PREVIEW, "START");
 
        if (template)
        {
 
-               /* Set transformation. */
-               cairo_scale (cr, this->priv->scale, this->priv->scale);
-               cairo_translate (cr, this->priv->offset_x, this->priv->offset_y);
-
+                scale = set_transform_and_get_scale (this, cr);
 
                /* update shadow */
-               shadow_x = SHADOW_OFFSET/this->priv->scale;
-               shadow_y = SHADOW_OFFSET/this->priv->scale;
+               shadow_x = SHADOW_OFFSET/scale;
+               shadow_y = SHADOW_OFFSET/scale;
 
                draw_shadow (this, cr,
                             shadow_x, shadow_y,
@@ -632,9 +643,9 @@ draw (glMiniPreview  *this,
 
                draw_paper (this, cr,
                            template->page_width, template->page_height,
-                           1.0/this->priv->scale);
+                           1.0/scale);
 
-               draw_labels (this, cr, template, 1.0/this->priv->scale);
+               draw_labels (this, cr, template, 1.0/scale);
                             
        }
 
diff --git a/glabels2/src/print-op-dialog.c b/glabels2/src/print-op-dialog.c
new file mode 100644 (file)
index 0000000..46a25c2
--- /dev/null
@@ -0,0 +1,676 @@
+/*
+ *  print-op-dialog.c
+ *  Copyright (C) 2001-2009  Jim Evins <evins@snaught.com>.
+ *
+ *  This file is part of gLabels.
+ *
+ *  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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  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 gLabels.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "print-op-dialog.h"
+
+#include <glib/gi18n.h>
+#include <gtk/gtkbuilder.h>
+#include <math.h>
+#include <time.h>
+#include <ctype.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtkspinbutton.h>
+
+#include "mini-preview.h"
+#include "label.h"
+#include "util.h"
+
+#include "pixmaps/collate.xpm"
+#include "pixmaps/nocollate.xpm"
+
+#include "debug.h"
+
+
+#define MINI_PREVIEW_MIN_HEIGHT 175
+#define MINI_PREVIEW_MIN_WIDTH  150
+
+
+/*===========================================*/
+/* Private data types                        */
+/*===========================================*/
+
+struct _glPrintOpDialogPrivate {
+
+        GtkBuilder *builder;
+
+       GtkWidget  *simple_frame;
+       GtkWidget  *simple_sheets_radio;
+       GtkWidget  *simple_sheets_spin;
+       GtkWidget  *simple_labels_radio;
+       GtkWidget  *simple_first_spin;
+       GtkWidget  *simple_last_spin;
+
+       GtkWidget  *merge_frame;
+       GtkWidget  *merge_first_spin;
+       GtkWidget  *merge_copies_spin;
+       GtkWidget  *merge_collate_check;
+       GtkWidget  *merge_collate_image;
+
+       GtkWidget  *outline_check;
+       GtkWidget  *reverse_check;
+       GtkWidget  *crop_marks_check;
+
+        GtkWidget  *preview;
+
+        gboolean   force_outline_flag;
+
+        gint       labels_per_sheet;
+        gboolean   merge_flag;
+        gint       n_records;
+
+};
+
+
+/*===========================================*/
+/* Private globals                           */
+/*===========================================*/
+
+
+/*===========================================*/
+/* Local function prototypes                 */
+/*===========================================*/
+
+static void     gl_print_op_dialog_finalize   (GObject           *object);
+
+static void     gl_print_op_dialog_construct  (glPrintOpDialog   *op,
+                                               glLabel           *label);
+
+static GObject *create_custom_widget_cb       (GtkPrintOperation *operation,
+                                               glLabel           *label);
+
+static void     custom_widget_apply_cb        (GtkPrintOperation *operation,
+                                               GtkWidget         *widget,
+                                               glLabel           *label);
+
+static void     simple_sheets_radio_cb        (GtkToggleButton   *togglebutton,
+                                               glPrintOpDialog   *op);
+
+static void     simple_first_spin_cb          (GtkSpinButton     *spinbutton,
+                                               glPrintOpDialog   *op);
+
+static void     simple_last_spin_cb           (GtkSpinButton     *spinbutton,
+                                               glPrintOpDialog   *op);
+
+static void     preview_pressed_cb            (glMiniPreview     *preview,
+                                               gint               first,
+                                               gint               last,
+                                               glPrintOpDialog   *op);
+
+static void     merge_spin_cb                 (GtkSpinButton     *spinbutton,
+                                               glPrintOpDialog   *op);
+
+static void     merge_collate_check_cb        (GtkToggleButton   *togglebutton,
+                                               glPrintOpDialog   *op);
+
+static void     preview_clicked_cb            (glMiniPreview     *preview,
+                                               gint               first,
+                                               glPrintOpDialog   *op);
+
+
+/*****************************************************************************/
+/* Boilerplate object stuff.                                                 */
+/*****************************************************************************/
+G_DEFINE_TYPE (glPrintOpDialog, gl_print_op_dialog, GL_TYPE_PRINT_OP);
+
+
+static void
+gl_print_op_dialog_class_init (glPrintOpDialogClass *class)
+{
+       GObjectClass           *object_class = G_OBJECT_CLASS (class);
+
+       gl_debug (DEBUG_PRINT, "");
+       
+       gl_print_op_dialog_parent_class = g_type_class_peek_parent (class);
+
+       object_class->finalize = gl_print_op_dialog_finalize;
+}
+
+
+static void
+gl_print_op_dialog_init (glPrintOpDialog *op)
+{
+       gl_debug (DEBUG_PRINT, "");
+
+       gtk_print_operation_set_use_full_page (GTK_PRINT_OPERATION (op), TRUE);
+
+        gtk_print_operation_set_unit (GTK_PRINT_OPERATION (op), GTK_UNIT_POINTS);
+
+       op->priv = g_new0 (glPrintOpDialogPrivate, 1);
+
+}
+
+
+static void 
+gl_print_op_dialog_finalize (GObject *object)
+{
+       glPrintOpDialog *op = GL_PRINT_OP_DIALOG (object);
+       
+       gl_debug (DEBUG_PRINT, "");
+
+       g_return_if_fail (object != NULL);
+        g_return_if_fail (GL_IS_PRINT_OP (op));
+       g_return_if_fail (op->priv != NULL);
+
+        g_object_unref (G_OBJECT(op->priv->builder));
+       g_free (op->priv);
+
+       G_OBJECT_CLASS (gl_print_op_dialog_parent_class)->finalize (object);
+
+       g_free (op->priv);
+}
+
+
+/*****************************************************************************/
+/* NEW print op.                                                         */
+/*****************************************************************************/
+glPrintOpDialog *
+gl_print_op_dialog_new (glLabel      *label)
+{
+       glPrintOpDialog *op;
+
+       gl_debug (DEBUG_PRINT, "");
+
+       op = GL_PRINT_OP_DIALOG (g_object_new (GL_TYPE_PRINT_OP_DIALOG, NULL));
+
+       gl_print_op_dialog_construct (GL_PRINT_OP_DIALOG(op), label);
+
+       return op;
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  Construct op.                                              */
+/*--------------------------------------------------------------------------*/
+static void
+gl_print_op_dialog_construct (glPrintOpDialog      *op,
+                              glLabel              *label)
+{
+
+        gl_print_op_construct(GL_PRINT_OP (op), label);
+
+       gtk_print_operation_set_custom_tab_label ( GTK_PRINT_OPERATION (op),
+                                                  _("Labels"));
+
+       g_signal_connect (G_OBJECT (op), "create-custom-widget",
+                         G_CALLBACK (create_custom_widget_cb), label);
+
+       g_signal_connect (G_OBJECT (op), "custom-widget-apply",
+                         G_CALLBACK (custom_widget_apply_cb), label);
+
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  "Create custom widget" callback                                */
+/*--------------------------------------------------------------------------*/
+static GObject *
+create_custom_widget_cb (GtkPrintOperation *operation,
+                         glLabel           *label)
+{
+       GtkBuilder             *builder;
+        static gchar           *object_ids[] = { "print_custom_widget_hbox",
+                                                 "adjustment1", "adjustment2",
+                                                 "adjustment3", "adjustment4",
+                                                 "adjustment5",
+                                                 NULL };
+        GError                 *error = NULL;
+       glPrintOpDialog        *op = GL_PRINT_OP_DIALOG (operation);
+        const lglTemplateFrame *frame;
+       GtkWidget              *hbox;
+        glMerge                *merge = NULL;
+        GdkPixbuf              *pixbuf;
+
+
+        frame = (lglTemplateFrame *)label->template->frames->data;
+        op->priv->labels_per_sheet = lgl_template_frame_get_n_labels (frame);
+
+       builder = gtk_builder_new ();
+        gtk_builder_add_objects_from_file (builder,
+                                           GLABELS_BUILDER_DIR "print-op-dialog-custom-widget.builder",
+                                           object_ids,
+                                           &error);
+       if (error) {
+               g_critical ("%s\n\ngLabels may not be installed correctly!", error->message);
+                g_error_free (error);
+               return NULL;
+       }
+
+        gl_util_get_builder_widgets (builder,
+                                     "print_custom_widget_hbox", &hbox,
+                                     "simple_frame",             &op->priv->simple_frame,
+                                     "simple_sheets_radio",      &op->priv->simple_sheets_radio,
+                                     "simple_sheets_spin",       &op->priv->simple_sheets_spin,
+                                     "simple_labels_radio",      &op->priv->simple_labels_radio,
+                                     "simple_first_spin",        &op->priv->simple_first_spin,
+                                     "simple_last_spin",         &op->priv->simple_last_spin,
+                                     "merge_frame",              &op->priv->merge_frame,
+                                     "merge_first_spin",         &op->priv->merge_first_spin,
+                                     "merge_copies_spin",        &op->priv->merge_copies_spin,
+                                     "merge_collate_check",      &op->priv->merge_collate_check,
+                                     "merge_collate_image",      &op->priv->merge_collate_image,
+                                     "outline_check",            &op->priv->outline_check,
+                                     "reverse_check",            &op->priv->reverse_check,
+                                     "crop_marks_check",         &op->priv->crop_marks_check,
+                                     NULL);
+
+        op->priv->builder = builder;
+
+        /* ---- Install preview. ---- */
+        op->priv->preview = gl_mini_preview_new (MINI_PREVIEW_MIN_HEIGHT, MINI_PREVIEW_MIN_WIDTH);
+        gl_mini_preview_set_template (GL_MINI_PREVIEW(op->priv->preview), label->template);
+        gtk_box_pack_start (GTK_BOX(hbox), op->priv->preview, TRUE, TRUE, 0);
+        gtk_widget_show_all (op->priv->preview);
+
+        
+        /* ---- Activate either simple or merge print control widgets. ---- */
+        merge = gl_label_get_merge (label);
+        op->priv->merge_flag = (merge != NULL);
+       if (!op->priv->merge_flag) {
+
+                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->simple_sheets_radio),
+                                              TRUE);
+                gtk_widget_set_sensitive (op->priv->simple_first_spin, FALSE);
+                gtk_widget_set_sensitive (op->priv->simple_last_spin, FALSE);
+
+                gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_sheets_spin),
+                                           gl_print_op_get_n_sheets (GL_PRINT_OP(op)));
+
+                gtk_spin_button_set_range (GTK_SPIN_BUTTON (op->priv->simple_first_spin),
+                                           1, op->priv->labels_per_sheet);
+                gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_first_spin),
+                                           1);
+
+                gtk_spin_button_set_range (GTK_SPIN_BUTTON (op->priv->simple_last_spin),
+                                           1, op->priv->labels_per_sheet);
+                gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_last_spin),
+                                           op->priv->labels_per_sheet);
+
+                /* Update preview. */
+                gl_mini_preview_highlight_range (GL_MINI_PREVIEW (op->priv->preview),
+                                                 1, op->priv->labels_per_sheet);
+
+               gtk_widget_show_all (op->priv->simple_frame);
+               gtk_widget_hide_all (op->priv->merge_frame);
+
+                g_signal_connect (G_OBJECT (op->priv->simple_sheets_radio), "toggled",
+                                  G_CALLBACK (simple_sheets_radio_cb), op);
+                g_signal_connect (G_OBJECT (op->priv->simple_first_spin), "changed",
+                                  G_CALLBACK (simple_first_spin_cb), op);
+                g_signal_connect (G_OBJECT (op->priv->simple_last_spin), "changed",
+                                  G_CALLBACK (simple_last_spin_cb), op);
+                g_signal_connect (G_OBJECT (op->priv->preview), "pressed",
+                                  G_CALLBACK (preview_pressed_cb), op);
+
+       } else {
+
+                op->priv->n_records = gl_merge_get_record_count (merge);
+
+                gtk_spin_button_set_range (GTK_SPIN_BUTTON (op->priv->merge_first_spin),
+                                           1, op->priv->labels_per_sheet);
+                gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->merge_first_spin),
+                                           gl_print_op_get_first (GL_PRINT_OP(op)));
+
+                gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->merge_copies_spin),
+                                           gl_print_op_get_n_copies (GL_PRINT_OP(op)));
+
+                gtk_widget_set_sensitive (op->priv->merge_collate_check,
+                                          (gl_print_op_get_n_copies (GL_PRINT_OP(op)) > 1));
+                gtk_widget_set_sensitive (op->priv->merge_collate_image,
+                                          (gl_print_op_get_n_copies (GL_PRINT_OP(op)) > 1));
+                
+
+                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->simple_sheets_radio),
+                                              gl_print_op_get_collate_flag (GL_PRINT_OP(op)));
+
+                if ( gl_print_op_get_collate_flag (GL_PRINT_OP(op)) )
+                {
+                        pixbuf = gdk_pixbuf_new_from_xpm_data ( (const char **)collate_xpm);
+                }
+                else
+                {
+                        pixbuf = gdk_pixbuf_new_from_xpm_data ( (const char **)nocollate_xpm);
+                }
+
+                gtk_image_set_from_pixbuf (GTK_IMAGE (op->priv->merge_collate_image), pixbuf);
+
+                /* Update preview. */
+                gl_mini_preview_highlight_range (GL_MINI_PREVIEW (op->priv->preview),
+                                                 gl_print_op_get_first (GL_PRINT_OP(op)),
+                                                 gl_print_op_get_first (GL_PRINT_OP(op)) + op->priv->n_records - 1);
+
+               gtk_widget_hide_all (op->priv->simple_frame);
+               gtk_widget_show_all (op->priv->merge_frame);
+
+                g_signal_connect (G_OBJECT (op->priv->merge_first_spin), "changed",
+                                  G_CALLBACK (merge_spin_cb), op);
+                g_signal_connect (G_OBJECT (op->priv->merge_copies_spin), "changed",
+                                  G_CALLBACK (merge_spin_cb), op);
+                g_signal_connect (G_OBJECT (op->priv->merge_collate_check), "toggled",
+                                  G_CALLBACK (merge_collate_check_cb), op);
+                g_signal_connect (G_OBJECT (op->priv->preview), "clicked",
+                                  G_CALLBACK (preview_clicked_cb), op);
+
+               g_object_unref (G_OBJECT(merge));
+
+       }
+
+        /* --- Set options --- */
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->outline_check),
+                                      gl_print_op_get_outline_flag (GL_PRINT_OP(op)));
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->reverse_check),
+                                      gl_print_op_get_reverse_flag (GL_PRINT_OP(op)));
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->crop_marks_check),
+                                      gl_print_op_get_crop_marks_flag (GL_PRINT_OP(op)));
+
+        /* --- Do we need to force the outline flag --- */
+        if (gl_print_op_is_outline_forced (GL_PRINT_OP (op)))
+        {
+                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(op->priv->outline_check),
+                                              TRUE);
+
+                gtk_widget_set_sensitive (op->priv->outline_check, FALSE);
+                gtk_widget_set_sensitive (op->priv->reverse_check, FALSE);
+                gtk_widget_set_sensitive (op->priv->crop_marks_check, FALSE);
+        }
+
+       return G_OBJECT (hbox);
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  "Custom widget apply" callback                                 */
+/*--------------------------------------------------------------------------*/
+static void
+custom_widget_apply_cb (GtkPrintOperation *operation,
+                        GtkWidget         *widget,
+                        glLabel           *label)
+{
+        glPrintOpDialog *op    = GL_PRINT_OP_DIALOG (operation);
+        glMerge         *merge = NULL;
+        gint             n_records;
+        gint             n_sheets, first, last, n_copies;
+        gboolean         collate_flag;
+
+        gl_print_op_set_outline_flag (GL_PRINT_OP (op),
+                                      gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
+                                                                    (op->priv->outline_check)));
+        gl_print_op_set_reverse_flag (GL_PRINT_OP (op),
+                                      gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
+                                                                    (op->priv->reverse_check)));
+        gl_print_op_set_crop_marks_flag (GL_PRINT_OP (op),
+                                         gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
+                                                                       (op->priv->crop_marks_check)));
+
+
+        if (!op->priv->merge_flag)
+        {
+
+                n_sheets = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_sheets_spin));
+                gl_print_op_set_n_sheets (GL_PRINT_OP (op), n_sheets);
+
+                first = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_first_spin));
+                gl_print_op_set_first (GL_PRINT_OP (op), first);
+
+                last = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_last_spin));
+                gl_print_op_set_last (GL_PRINT_OP (op), last);
+
+        }
+        else
+        {
+
+                merge = gl_label_get_merge (label);
+
+                n_copies = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->merge_copies_spin));
+                gl_print_op_set_n_copies (GL_PRINT_OP (op), n_copies);
+
+                first = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->merge_first_spin));
+                gl_print_op_set_first (GL_PRINT_OP (op), first);
+
+                collate_flag = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (op->priv->merge_collate_check));
+                gl_print_op_set_collate_flag (GL_PRINT_OP (op), collate_flag);
+
+                n_records = gl_merge_get_record_count (merge);
+                n_sheets = ceil (first - 1 + (n_copies * n_records)/(double)op->priv->labels_per_sheet);
+                gl_print_op_set_n_sheets     (GL_PRINT_OP (op), n_sheets);
+
+                g_object_unref (G_OBJECT(merge));
+
+        }
+
+
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  Simple sheets radio "toggled" callback                         */
+/*--------------------------------------------------------------------------*/
+static void
+simple_sheets_radio_cb (GtkToggleButton   *togglebutton,
+                        glPrintOpDialog   *op)
+{
+        gint first, last;
+
+        if (gtk_toggle_button_get_active (togglebutton)) {
+
+                gtk_widget_set_sensitive (op->priv->simple_sheets_spin, TRUE);
+                gtk_widget_set_sensitive (op->priv->simple_first_spin, FALSE);
+                gtk_widget_set_sensitive (op->priv->simple_last_spin, FALSE);
+
+                gtk_spin_button_set_range (GTK_SPIN_BUTTON (op->priv->simple_first_spin),
+                                           1, op->priv->labels_per_sheet);
+                gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_first_spin),
+                                           1);
+
+                gtk_spin_button_set_range (GTK_SPIN_BUTTON (op->priv->simple_last_spin),
+                                           1, op->priv->labels_per_sheet);
+                gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_last_spin),
+                                           op->priv->labels_per_sheet);
+
+                gl_mini_preview_highlight_range (GL_MINI_PREVIEW (op->priv->preview),
+                                                 1, op->priv->labels_per_sheet);
+
+        } else {
+
+                gtk_widget_set_sensitive (op->priv->simple_sheets_spin, FALSE);
+                gtk_widget_set_sensitive (op->priv->simple_first_spin, TRUE);
+                gtk_widget_set_sensitive (op->priv->simple_last_spin, TRUE);
+
+                gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_sheets_spin), 1);
+
+                first = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_first_spin));
+                last  = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_last_spin));
+
+                gl_mini_preview_highlight_range (GL_MINI_PREVIEW (op->priv->preview), first, last);
+        }
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  Simple first label spinbutton "changed" callback               */
+/*--------------------------------------------------------------------------*/
+static void
+simple_first_spin_cb (GtkSpinButton     *spinbutton,
+                      glPrintOpDialog   *op)
+{
+        gint first, last;
+
+        first = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_first_spin));
+        last  = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_last_spin));
+
+        /* Adjust range of last spin button. */
+        gtk_spin_button_set_range (GTK_SPIN_BUTTON (op->priv->simple_last_spin),
+                                   first, op->priv->labels_per_sheet);
+
+        /* Update preview. */
+        gl_mini_preview_highlight_range (GL_MINI_PREVIEW (op->priv->preview), first, last);
+
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  Simple last label spinbutton "changed" callback                */
+/*--------------------------------------------------------------------------*/
+static void
+simple_last_spin_cb (GtkSpinButton     *spinbutton,
+                     glPrintOpDialog   *op)
+{
+        gint first, last;
+
+        first = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_first_spin));
+        last  = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_last_spin));
+
+        /* Adjust range of first spin button. */
+        gtk_spin_button_set_range (GTK_SPIN_BUTTON (op->priv->simple_first_spin),
+                                   1, last);
+
+        /* Update preview. */
+        gl_mini_preview_highlight_range (GL_MINI_PREVIEW (op->priv->preview), first, last);
+
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  Preview "pressed" callback                                     */
+/*--------------------------------------------------------------------------*/
+static void
+preview_pressed_cb (glMiniPreview     *preview,
+                    gint               first,
+                    gint               last,
+                    glPrintOpDialog   *op)
+{
+        gint old_first;
+
+        if ( !op->priv->merge_flag )
+        {
+
+                /* Update controls. */
+                old_first = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->simple_first_spin));
+                if ( first > old_first )
+                {
+                        gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_last_spin), last);
+                        gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_first_spin), first);
+                }
+                else
+                {
+                        gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_first_spin), first);
+                        gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_last_spin), last);
+                }
+                if ( (first == 1) && (last == op->priv->labels_per_sheet) )
+                {
+                        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->simple_sheets_radio), TRUE);
+                        gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->simple_sheets_spin), 1);
+                }
+                else
+                {
+                        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->simple_labels_radio), TRUE);
+                }
+
+                /* Update preview. */
+                gl_mini_preview_highlight_range (GL_MINI_PREVIEW (op->priv->preview), first, last);
+
+        }
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  "changed" callback for merge first and copies spin buttons.    */
+/*--------------------------------------------------------------------------*/
+static void
+merge_spin_cb (GtkSpinButton     *spinbutton,
+                     glPrintOpDialog   *op)
+{
+        gint first, last, n_copies;
+
+        first = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->merge_first_spin));
+
+        n_copies = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->merge_copies_spin));
+        last = first + (n_copies * op->priv->n_records) - 1;
+
+        gl_mini_preview_highlight_range (GL_MINI_PREVIEW(op->priv->preview), first, last );
+
+        gtk_widget_set_sensitive (op->priv->merge_collate_check, (n_copies > 1));
+        gtk_widget_set_sensitive (op->priv->merge_collate_image, (n_copies > 1));
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  Merge first collate check "toggled" callback                   */
+/*--------------------------------------------------------------------------*/
+static void
+merge_collate_check_cb (GtkToggleButton   *togglebutton,
+                        glPrintOpDialog   *op)
+{
+        GdkPixbuf *pixbuf;
+
+        if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (op->priv->merge_collate_check)) )
+        {
+                pixbuf = gdk_pixbuf_new_from_xpm_data ( (const char **)collate_xpm);
+        }
+        else
+        {
+                pixbuf = gdk_pixbuf_new_from_xpm_data ( (const char **)nocollate_xpm);
+        }
+
+        gtk_image_set_from_pixbuf (GTK_IMAGE (op->priv->merge_collate_image), pixbuf);
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  Preview "clicked" callback                                     */
+/*--------------------------------------------------------------------------*/
+static void
+preview_clicked_cb (glMiniPreview     *preview,
+                    gint               first,
+                    glPrintOpDialog   *op)
+{
+        gint n_copies;
+        gint last;
+
+        if ( op->priv->merge_flag )
+        {
+
+                /* Update controls. */
+                gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->priv->merge_first_spin), first);
+
+                n_copies = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (op->priv->merge_copies_spin));
+                gtk_widget_set_sensitive (op->priv->merge_collate_check, (n_copies > 1));
+                gtk_widget_set_sensitive (op->priv->merge_collate_image, (n_copies > 1));
+
+
+                /* Update preview. */
+                last = first + (n_copies * op->priv->n_records) - 1;
+                gl_mini_preview_highlight_range (GL_MINI_PREVIEW (op->priv->preview), first, last);
+
+        }
+}
+
+
+
+
+/*
+ * Local Variables:       -- emacs
+ * mode: C                -- emacs
+ * c-basic-offset: 8      -- emacs
+ * tab-width: 8           -- emacs
+ * indent-tabs-mode: nil  -- emacs
+ * End:                   -- emacs
+ */
diff --git a/glabels2/src/print-op-dialog.h b/glabels2/src/print-op-dialog.h
new file mode 100644 (file)
index 0000000..d6469bf
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ *  print-op-dialog.h
+ *  Copyright (C) 2001-2009  Jim Evins <evins@snaught.com>.
+ *
+ *  This file is part of gLabels.
+ *
+ *  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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  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 gLabels.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PRINT_OP_DIALOG_H__
+#define __PRINT_OP_DIALOG_H__
+
+#include "print-op.h"
+
+G_BEGIN_DECLS
+
+#define GL_TYPE_PRINT_OP_DIALOG            (gl_print_op_dialog_get_type ())
+#define GL_PRINT_OP_DIALOG(obj) \
+        (G_TYPE_CHECK_INSTANCE_CAST ((obj), GL_TYPE_PRINT_OP_DIALOG, glPrintOpDialog))
+#define GL_PRINT_OP_DIALOG_CLASS(klass) \
+        (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_PRINT_OP_DIALOG, glPrintOpDialogClass))
+#define GL_IS_PRINT_OP_DIALOG(obj) \
+        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_PRINT_OP_DIALOG))
+#define GL_IS_PRINT_OP_DIALOG_CLASS(klass) \
+        (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_PRINT_OP_DIALOG))
+#define GL_PRINT_OP_DIALOG_GET_CLASS(obj) \
+        (G_TYPE_INSTANCE_GET_CLASS ((obj), GL_TYPE_PRINT_OP_DIALOG, glPrintOpDialogClass))
+
+
+typedef struct _glPrintOpDialog         glPrintOpDialog;
+typedef struct _glPrintOpDialogClass    glPrintOpDialogClass;
+
+typedef struct _glPrintOpDialogPrivate  glPrintOpDialogPrivate;
+
+struct _glPrintOpDialog
+{
+        glPrintOp                   parent_instance;
+
+        glPrintOpDialogPrivate     *priv;
+
+};
+
+struct  _glPrintOpDialogClass
+{
+        glPrintOpClass              parent_class;
+};
+
+
+typedef struct _glPrintOpDialogSettings glPrintOpDialogSettings;
+
+
+
+GType              gl_print_op_dialog_get_type           (void) G_GNUC_CONST;
+
+glPrintOpDialog   *gl_print_op_dialog_new                (glLabel           *label);
+
+
+
+G_END_DECLS
+
+#endif
+
+
+
+/*
+ * Local Variables:       -- emacs
+ * mode: C                -- emacs
+ * c-basic-offset: 8      -- emacs
+ * tab-width: 8           -- emacs
+ * indent-tabs-mode: nil  -- emacs
+ * End:                   -- emacs
+ */
index e77717592824c06fbc511c823fb99b460b19375b..d13d1a5e1d56f28ba79dd7f23e21c1753a2c5d50 100644 (file)
@@ -23,7 +23,6 @@
 #include "print-op.h"
 
 #include <glib/gi18n.h>
-#include <gtk/gtkbuilder.h>
 #include <math.h>
 #include <time.h>
 #include <ctype.h>
 #include <libglabels/db.h>
 #include "print.h"
 #include "label.h"
-#include "util.h"
-
-#include "wdgt-print-copies.h"
-#include "wdgt-print-merge.h"
 
 #include "debug.h"
 
@@ -48,20 +43,6 @@ struct _glPrintOpPrivate {
 
        glLabel   *label;
 
-        GtkBuilder *builder;
-
-       GtkWidget *simple_frame;
-       GtkWidget *copies_vbox;
-       GtkWidget *copies;
-
-       GtkWidget *merge_frame;
-       GtkWidget *prmerge_vbox;
-       GtkWidget *prmerge;
-
-       GtkWidget *outline_check;
-       GtkWidget *reverse_check;
-       GtkWidget *crop_marks_check;
-
         gboolean   force_outline_flag;
 
         gchar     *filename;
@@ -107,32 +88,11 @@ struct _glPrintOpSettings
 /* Local function prototypes                 */
 /*===========================================*/
 
-static void     gl_print_op_finalize      (GObject            *object);
-
-static void     gl_print_op_construct       (glPrintOp          *op,
-                                             glLabel            *label);
-
-static void     gl_print_op_construct_batch (glPrintOp          *op,
-                                             glLabel            *label,
-                                             gchar              *filename,
-                                             gint                n_sheets,
-                                             gint                n_copies,
-                                             gint                first,
-                                             gboolean            outline_flag,
-                                             gboolean            reverse_flag,
-                                             gboolean            crop_marks_flag);
-
+static void     gl_print_op_finalize          (GObject           *object);
 
 static void     set_page_size                 (glPrintOp         *op,
                                                glLabel           *label);
 
-static GObject *create_custom_widget_cb       (GtkPrintOperation *operation,
-                                               gpointer           user_data);
-
-static void     custom_widget_apply_cb        (GtkPrintOperation *operation,
-                                               GtkWidget         *widget,
-                                               gpointer           user_data);
-
 static void     begin_print_cb                (GtkPrintOperation *operation,
                                                GtkPrintContext   *context,
                                                gpointer           user_data);
@@ -187,12 +147,7 @@ gl_print_op_finalize (GObject *object)
         g_return_if_fail (GL_IS_PRINT_OP (op));
        g_return_if_fail (op->priv != NULL);
 
-       if (op->priv->label) {
-               g_object_unref (G_OBJECT(op->priv->label));
-       }
-       if (op->priv->builder) {
-               g_object_unref (G_OBJECT(op->priv->builder));
-       }
+        g_object_unref (G_OBJECT(op->priv->label));
         g_free (op->priv->filename);
        g_free (op->priv);
 
@@ -220,20 +175,23 @@ gl_print_op_new (glLabel      *label)
 }
 
 
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Construct op.                                              */
-/*--------------------------------------------------------------------------*/
-static void
+/*****************************************************************************/
+/* Construct print op.                                                       */
+/*****************************************************************************/
+void
 gl_print_op_construct (glPrintOp      *op,
                        glLabel        *label)
 {
+        glMerge                *merge = NULL;
         const lglTemplateFrame *frame;
 
        op->priv->label              = label;
        op->priv->force_outline_flag = FALSE;
 
+        merge = gl_label_get_merge (label);
         frame = (lglTemplateFrame *)label->template->frames->data;
 
+        op->priv->merge_flag         = (merge != NULL);
         op->priv->n_sheets           = 1;
         op->priv->first              = 1;
         op->priv->last               = lgl_template_frame_get_n_labels (frame);
@@ -244,12 +202,6 @@ gl_print_op_construct (glPrintOp      *op,
        gtk_print_operation_set_custom_tab_label ( GTK_PRINT_OPERATION (op),
                                                   _("Labels"));
 
-       g_signal_connect (G_OBJECT (op), "create-custom-widget",
-                         G_CALLBACK (create_custom_widget_cb), label);
-
-       g_signal_connect (G_OBJECT (op), "custom-widget-apply",
-                         G_CALLBACK (custom_widget_apply_cb), label);
-
        g_signal_connect (G_OBJECT (op), "begin-print",
                          G_CALLBACK (begin_print_cb), label);
 
@@ -259,174 +211,170 @@ gl_print_op_construct (glPrintOp      *op,
 
 
 /*****************************************************************************/
-/* NEW batch print operation.                                                */
+/* Set outline flag/checkbox.                                                */
 /*****************************************************************************/
-glPrintOp *
-gl_print_op_new_batch (glLabel       *label,
-                       gchar         *filename,
-                       gint           n_sheets,
-                       gint           n_copies,
-                       gint           first,
-                       gboolean       outline_flag,
-                       gboolean       reverse_flag,
-                       gboolean       crop_marks_flag)
+void
+gl_print_op_force_outline (glPrintOp *op)
 {
-       glPrintOp *op;
-
-       gl_debug (DEBUG_PRINT, "");
-
-       op = GL_PRINT_OP (g_object_new (GL_TYPE_PRINT_OP, NULL));
+        op->priv->force_outline_flag = TRUE;
+}
 
-       gl_print_op_construct_batch (GL_PRINT_OP(op),
-                                         label,
-                                         filename,
-                                         n_sheets,
-                                         n_copies,
-                                         first,
-                                         outline_flag,
-                                         reverse_flag,
-                                         crop_marks_flag);
 
-       return op;
+/*****************************************************************************/
+/* Set outline flag/checkbox.                                                */
+/*****************************************************************************/
+gboolean
+gl_print_op_is_outline_forced (glPrintOp *op)
+{
+        return op->priv->force_outline_flag;
 }
 
 
 /*****************************************************************************/
-/* Get print operation settings.                                             */
+/* Set job parameters.                                                       */
 /*****************************************************************************/
-glPrintOpSettings *
-gl_print_op_get_settings (glPrintOp         *print_op)
+void
+gl_print_op_set_filename (glPrintOp *op,
+                          gchar     *filename)
 {
-        glPrintOpSettings *settings;
+        gtk_print_operation_set_export_filename (GTK_PRINT_OPERATION (op),
+                                                 filename);
+}
 
-        settings = g_new0 (glPrintOpSettings, 1);
 
-        if ( settings )
-        {
-                settings->gtk_settings =
-                        gtk_print_operation_get_print_settings (GTK_PRINT_OPERATION (print_op));
+void
+gl_print_op_set_n_sheets (glPrintOp *op,
+                          gint       n_sheets)
+{
+        op->priv->n_sheets = n_sheets;
+}
 
-                settings->outline_flag     = print_op->priv->outline_flag;
-                settings->reverse_flag     = print_op->priv->reverse_flag;
-                settings->crop_marks_flag  = print_op->priv->crop_marks_flag;
-                settings->collate_flag     = print_op->priv->collate_flag;
 
-                settings->first            = print_op->priv->first;
-                settings->last             = print_op->priv->last;
-                settings->n_sheets         = print_op->priv->n_sheets;
-                settings->n_copies         = print_op->priv->n_copies;
-        }
+void
+gl_print_op_set_n_copies (glPrintOp *op,
+                          gint       n_copies)
+{
+        op->priv->n_copies = n_copies;
+}
 
-        return settings;
+
+void
+gl_print_op_set_first (glPrintOp *op,
+                       gint       first)
+{
+        op->priv->first = first;
 }
 
 
-/*****************************************************************************/
-/* Set print operation settings.                                             */
-/*****************************************************************************/
 void
-gl_print_op_set_settings (glPrintOp         *print_op,
-                          glPrintOpSettings *settings)
+gl_print_op_set_last (glPrintOp *op,
+                      gint       last)
 {
+        op->priv->last = last;
+}
 
-        if ( settings )
-        {
-                gtk_print_operation_set_print_settings (GTK_PRINT_OPERATION (print_op),
-                                                        settings->gtk_settings);
 
-                print_op->priv->outline_flag     = settings->outline_flag;
-                print_op->priv->reverse_flag     = settings->reverse_flag;
-                print_op->priv->crop_marks_flag  = settings->crop_marks_flag;
-                print_op->priv->collate_flag     = settings->collate_flag;
+void
+gl_print_op_set_collate_flag (glPrintOp *op,
+                              gboolean   collate_flag)
+{
+        op->priv->collate_flag = collate_flag;
+}
+
+
+void
+gl_print_op_set_outline_flag (glPrintOp *op,
+                              gboolean   outline_flag)
+{
+        op->priv->outline_flag = outline_flag;
+}
+
+
+void
+gl_print_op_set_reverse_flag (glPrintOp *op,
+                              gboolean   reverse_flag)
+{
+        op->priv->reverse_flag = reverse_flag;
+}
 
-                print_op->priv->first            = settings->first;
-                print_op->priv->last             = settings->last;
-                print_op->priv->n_sheets         = settings->n_sheets;
-                print_op->priv->n_copies         = settings->n_copies;
-        }
 
+void
+gl_print_op_set_crop_marks_flag (glPrintOp *op,
+                                 gboolean   crop_marks_flag)
+{
+        op->priv->crop_marks_flag = crop_marks_flag;
 }
 
 
 /*****************************************************************************/
-/* Free print operation settings structure.                                  */
+/* Get job parameters.                                                       */
 /*****************************************************************************/
-void
-gl_print_op_free_settings(glPrintOpSettings *settings)
+gchar *
+gl_print_op_get_filename (glPrintOp *op)
 {
-        
-        if ( settings )
-        {
-                if ( settings->gtk_settings )
-                {
-                        g_object_unref (settings->gtk_settings);
-                }
+        gchar *filename;
 
-                g_free (settings);
-        }
+        g_object_get (G_OBJECT (op),
+                      "export_filename", filename,
+                      NULL);
+
+        return filename;
 }
 
 
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Construct op.                                                  */
-/*--------------------------------------------------------------------------*/
-static void
-gl_print_op_construct_batch (glPrintOp      *op,
-                             glLabel        *label,
-                             gchar          *filename,
-                             gint            n_sheets,
-                             gint            n_copies,
-                             gint            first,
-                             gboolean        outline_flag,
-                             gboolean        reverse_flag,
-                             gboolean        crop_marks_flag)
+gint
+gl_print_op_get_n_sheets (glPrintOp *op)
+{
+        return op->priv->n_sheets;
+}
 
+
+gint
+gl_print_op_get_n_copies (glPrintOp *op)
 {
-        glMerge                *merge = NULL;
-        const lglTemplateFrame *frame = NULL;
+        return op->priv->n_copies;
+}
 
-       op->priv->label              = label;
-       op->priv->force_outline_flag = FALSE;
-        op->priv->filename           = g_strdup (filename);
-        op->priv->n_sheets           = n_sheets;
-        op->priv->n_copies           = n_copies;
-        op->priv->first              = first;
-        op->priv->outline_flag       = outline_flag;
-        op->priv->reverse_flag       = reverse_flag;
-        op->priv->crop_marks_flag    = crop_marks_flag;
 
-        merge = gl_label_get_merge (label);
+gint
+gl_print_op_get_first (glPrintOp *op)
+{
+        return op->priv->first;
+}
 
-        frame = (lglTemplateFrame *)label->template->frames->data;
-        if (merge == NULL)
-        {
-                op->priv->merge_flag = FALSE;
 
-                op->priv->last = lgl_template_frame_get_n_labels (frame);
+gint
+gl_print_op_get_last (glPrintOp *op)
+{
+        return op->priv->last;
+}
 
-        }
-        else
-        {
-                op->priv->merge_flag = TRUE;
 
-                op->priv->n_sheets =
-                        ceil ((double)(first-1 + n_copies * gl_merge_get_record_count(merge))
-                              / lgl_template_frame_get_n_labels (frame));;
+gboolean
+gl_print_op_get_collate_flag (glPrintOp *op)
+{
+        return op->priv->collate_flag;
+}
 
-                g_object_unref (G_OBJECT(merge));
 
-        }
+gboolean
+gl_print_op_get_outline_flag (glPrintOp *op)
+{
+        return op->priv->outline_flag;
+}
 
-        set_page_size (op, label);
 
-        gtk_print_operation_set_export_filename (GTK_PRINT_OPERATION (op),
-                                                 filename);
+gboolean
+gl_print_op_get_reverse_flag (glPrintOp *op)
+{
+        return op->priv->reverse_flag;
+}
 
-       g_signal_connect (G_OBJECT (op), "begin-print",
-                         G_CALLBACK (begin_print_cb), label);
 
-       g_signal_connect (G_OBJECT (op), "draw-page",
-                         G_CALLBACK (draw_page_cb), label);
+gboolean
+gl_print_op_get_crop_marks_flag (glPrintOp *op)
+{
+        return op->priv->crop_marks_flag;
 }
 
 
@@ -484,151 +432,79 @@ set_page_size (glPrintOp  *op,
 }
 
 
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  "Create custom widget" callback                                */
-/*--------------------------------------------------------------------------*/
-static GObject *
-create_custom_widget_cb (GtkPrintOperation *operation,
-                        gpointer           user_data)
-{
-       GtkBuilder    *builder;
-        static gchar  *object_ids[] = { "print_custom_widget_vbox", NULL };
-        GError        *error = NULL;
-       glPrintOp     *op = GL_PRINT_OP (operation);
-       glLabel       *label  = GL_LABEL (user_data);
-       GtkWidget     *vbox;
-        glMerge       *merge = NULL;
-
-       builder = gtk_builder_new ();
-        gtk_builder_add_objects_from_file (builder,
-                                           GLABELS_BUILDER_DIR "print-custom-widget.builder",
-                                           object_ids,
-                                           &error);
-       if (error) {
-               g_critical ("%s\n\ngLabels may not be installed correctly!", error->message);
-                g_error_free (error);
-               return NULL;
-       }
-
-        gl_util_get_builder_widgets (builder,
-                                     "print_custom_widget_vbox", &vbox,
-                                     "simple_frame",             &op->priv->simple_frame,
-                                     "copies_vbox",              &op->priv->copies_vbox,
-                                     "merge_frame",              &op->priv->merge_frame,
-                                     "prmerge_vbox",             &op->priv->prmerge_vbox,
-                                     "outline_check",            &op->priv->outline_check,
-                                     "reverse_check",            &op->priv->reverse_check,
-                                     "crop_marks_check",         &op->priv->crop_marks_check,
-                                     NULL);
-
-       /* ----- Simple print control ----- */
-       op->priv->copies = gl_wdgt_print_copies_new (label);
-       gtk_box_pack_start (GTK_BOX(op->priv->copies_vbox),
-                           op->priv->copies, FALSE, FALSE, 0);
-
-       /* ----- Merge print control ----- */
-       op->priv->prmerge = gl_wdgt_print_merge_new (label);
-       gtk_box_pack_start (GTK_BOX(op->priv->prmerge_vbox),
-                           op->priv->prmerge, FALSE, FALSE, 0);
-
-
-        op->priv->builder = builder;
+/*****************************************************************************/
+/* Get print operation settings.                                             */
+/*****************************************************************************/
+glPrintOpSettings *
+gl_print_op_get_settings (glPrintOp         *print_op)
+{
+        glPrintOpSettings *settings;
 
-        
-        /* ---- Activate either simple or merge print control widgets. ---- */
-        merge = gl_label_get_merge (op->priv->label);
-       if (merge == NULL) {
-
-                gl_wdgt_print_copies_set_range (GL_WDGT_PRINT_COPIES (op->priv->copies),
-                                                op->priv->n_sheets,
-                                                op->priv->first,
-                                                op->priv->last);
-
-               gtk_widget_show_all (op->priv->simple_frame);
-               gtk_widget_hide_all (op->priv->merge_frame);
-
-       } else {
-
-               gint n_records = gl_merge_get_record_count( merge );
-                gl_wdgt_print_merge_set_copies (GL_WDGT_PRINT_MERGE (op->priv->prmerge),
-                                                op->priv->n_copies,
-                                                op->priv->first,
-                                                n_records,
-                                                op->priv->collate_flag);
-               g_object_unref (G_OBJECT(merge));
-
-               gtk_widget_hide_all (op->priv->simple_frame);
-               gtk_widget_show_all (op->priv->merge_frame);
-       }
-
-        /* --- Set options --- */
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->outline_check),
-                                      op->priv->outline_flag);
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->reverse_check),
-                                      op->priv->reverse_flag);
-        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->priv->crop_marks_check),
-                                      op->priv->crop_marks_flag);
-
-        /* --- Do we need to force the outline flag --- */
-        if (op->priv->force_outline_flag)
+        settings = g_new0 (glPrintOpSettings, 1);
+
+        if ( settings )
         {
-                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(op->priv->outline_check),
-                                              TRUE);
+                settings->gtk_settings =
+                        gtk_print_operation_get_print_settings (GTK_PRINT_OPERATION (print_op));
 
-                gtk_widget_set_sensitive (op->priv->outline_check, FALSE);
-                gtk_widget_set_sensitive (op->priv->reverse_check, FALSE);
-                gtk_widget_set_sensitive (op->priv->crop_marks_check, FALSE);
+                settings->outline_flag     = print_op->priv->outline_flag;
+                settings->reverse_flag     = print_op->priv->reverse_flag;
+                settings->crop_marks_flag  = print_op->priv->crop_marks_flag;
+                settings->collate_flag     = print_op->priv->collate_flag;
+
+                settings->first            = print_op->priv->first;
+                settings->last             = print_op->priv->last;
+                settings->n_sheets         = print_op->priv->n_sheets;
+                settings->n_copies         = print_op->priv->n_copies;
         }
 
-       return G_OBJECT (vbox);
+        return settings;
 }
 
 
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  "Custom widget apply" callback                                 */
-/*--------------------------------------------------------------------------*/
-static void
-custom_widget_apply_cb (GtkPrintOperation *operation,
-                        GtkWidget         *widget,
-                        gpointer           user_data)
+/*****************************************************************************/
+/* Set print operation settings.                                             */
+/*****************************************************************************/
+void
+gl_print_op_set_settings (glPrintOp         *print_op,
+                          glPrintOpSettings *settings)
 {
-        glPrintOp *op = GL_PRINT_OP (operation);
-        glMerge       *merge = NULL;
 
+        if ( settings )
+        {
+                gtk_print_operation_set_print_settings (GTK_PRINT_OPERATION (print_op),
+                                                        settings->gtk_settings);
+
+                print_op->priv->outline_flag     = settings->outline_flag;
+                print_op->priv->reverse_flag     = settings->reverse_flag;
+                print_op->priv->crop_marks_flag  = settings->crop_marks_flag;
+                print_op->priv->collate_flag     = settings->collate_flag;
 
-        op->priv->outline_flag =
-                gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                              (op->priv->outline_check));
-        op->priv->reverse_flag =
-                gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                              (op->priv->reverse_check));
-        op->priv->crop_marks_flag =
-                gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                              (op->priv->crop_marks_check));
+                print_op->priv->first            = settings->first;
+                print_op->priv->last             = settings->last;
+                print_op->priv->n_sheets         = settings->n_sheets;
+                print_op->priv->n_copies         = settings->n_copies;
+        }
 
-        merge = gl_label_get_merge (op->priv->label);
+}
 
-        if (merge == NULL)
-        {
 
-                op->priv->merge_flag = FALSE;
-                gl_wdgt_print_copies_get_range (GL_WDGT_PRINT_COPIES (op->priv->copies),
-                                                &op->priv->n_sheets,
-                                                &op->priv->first,
-                                                &op->priv->last);
-        }
-        else
+/*****************************************************************************/
+/* Free print operation settings structure.                                  */
+/*****************************************************************************/
+void
+gl_print_op_free_settings(glPrintOpSettings *settings)
+{
+        
+        if ( settings )
         {
+                if ( settings->gtk_settings )
+                {
+                        g_object_unref (settings->gtk_settings);
+                }
 
-                op->priv->merge_flag = TRUE;
-                gl_wdgt_print_merge_get_copies (GL_WDGT_PRINT_MERGE (op->priv->prmerge),
-                                                &op->priv->n_copies,
-                                                &op->priv->first,
-                                                &op->priv->collate_flag,
-                                                &op->priv->n_sheets);
-                g_object_unref (G_OBJECT(merge));
+                g_free (settings);
         }
-
 }
 
 
@@ -703,15 +579,6 @@ draw_page_cb (GtkPrintOperation *operation,
 }
 
 
-/*****************************************************************************/
-/* Set outline flag/checkbox.                                                */
-/*****************************************************************************/
-void
-gl_print_op_force_outline_flag (glPrintOp *op)
-{
-        op->priv->force_outline_flag = TRUE;
-}
-
 
 
 /*
index 5485386e32489a2288a4bf6b4c3472ce0554c170..0ee7a7252051d7e6dcf52c4d2028e775ec758b32 100644 (file)
@@ -1,26 +1,23 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-
 /*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  print-op.h:  Print operation module header file
+ *  print-op.h
+ *  Copyright (C) 2001-2009  Jim Evins <evins@snaught.com>.
  *
- *  Copyright (C) 2001-2007  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/>.
  */
+
 #ifndef __PRINT_OP_H__
 #define __PRINT_OP_H__
 
@@ -65,29 +62,62 @@ typedef struct _glPrintOpSettings glPrintOpSettings;
 
 
 
-GType              gl_print_op_get_type           (void) G_GNUC_CONST;
-
-glPrintOp         *gl_print_op_new                (glLabel           *label);
-
-void               gl_print_op_force_outline_flag (glPrintOp         *print_op);
-
-glPrintOpSettings *gl_print_op_get_settings          (glPrintOp         *print_op);
-void               gl_print_op_set_settings          (glPrintOp         *print_op,
-                                                      glPrintOpSettings *settings);
-void               gl_print_op_free_settings         (glPrintOpSettings *settings);
+GType              gl_print_op_get_type            (void) G_GNUC_CONST;
+
+glPrintOp         *gl_print_op_new                 (glLabel           *label);
+
+void               gl_print_op_construct           (glPrintOp         *print_op,
+                                                    glLabel           *label);
+
+void               gl_print_op_set_filename        (glPrintOp         *print_op,
+                                                    gchar             *filename);
+void               gl_print_op_set_n_sheets        (glPrintOp         *print_op,
+                                                    gint               n_sheets);
+void               gl_print_op_set_n_copies        (glPrintOp         *print_op,
+                                                    gint               n_copies);
+void               gl_print_op_set_first           (glPrintOp         *print_op,
+                                                    gint               first);
+void               gl_print_op_set_last            (glPrintOp         *print_op,
+                                                    gint               last);
+void               gl_print_op_set_collate_flag    (glPrintOp         *print_op,
+                                                    gboolean           collate_flag);
+void               gl_print_op_set_outline_flag    (glPrintOp         *print_op,
+                                                    gboolean           outline_flag);
+void               gl_print_op_set_reverse_flag    (glPrintOp         *print_op,
+                                                    gboolean           reverse_flag);
+void               gl_print_op_set_crop_marks_flag (glPrintOp         *print_op,
+                                                    gboolean           crop_marks_flag);
+
+gchar             *gl_print_op_get_filename        (glPrintOp         *print_op);
+gint               gl_print_op_get_n_sheets        (glPrintOp         *print_op);
+gint               gl_print_op_get_n_copies        (glPrintOp         *print_op);
+gint               gl_print_op_get_first           (glPrintOp         *print_op);
+gint               gl_print_op_get_last            (glPrintOp         *print_op);
+gboolean           gl_print_op_get_collate_flag    (glPrintOp         *print_op);
+gboolean           gl_print_op_get_outline_flag    (glPrintOp         *print_op);
+gboolean           gl_print_op_get_reverse_flag    (glPrintOp         *print_op);
+gboolean           gl_print_op_get_crop_marks_flag (glPrintOp         *print_op);
+
+void               gl_print_op_force_outline       (glPrintOp         *print_op);
+gboolean           gl_print_op_is_outline_forced   (glPrintOp         *print_op);
+
+glPrintOpSettings *gl_print_op_get_settings        (glPrintOp         *print_op);
+void               gl_print_op_set_settings        (glPrintOp         *print_op,
+                                                    glPrintOpSettings *settings);
+void               gl_print_op_free_settings       (glPrintOpSettings *settings);
                                           
-/*
- * Batch print operation
- */
-glPrintOp         *gl_print_op_new_batch          (glLabel           *label,
-                                                   gchar             *filename,
-                                                   gint               n_sheets,
-                                                   gint               n_copies,
-                                                   gint               first,
-                                                   gboolean           outline_flag,
-                                                   gboolean           reverse_flag,
-                                                   gboolean           crop_marks_flag);
 
 G_END_DECLS
 
 #endif
+
+
+
+/*
+ * Local Variables:       -- emacs
+ * mode: C                -- emacs
+ * c-basic-offset: 8      -- emacs
+ * tab-width: 8           -- emacs
+ * indent-tabs-mode: nil  -- emacs
+ * End:                   -- emacs
+ */
index 0848cc9eeb1cd70f8a86c50b5d942aa84f8e099e..2d34a11c2fc740cc69fb22303fca0a0b4bb61555 100644 (file)
@@ -35,7 +35,7 @@
 #include <libglabels/db.h>
 #include "mini-preview.h"
 #include "mini-preview-pixbuf-cache.h"
-#include "print-op.h"
+#include "print-op-dialog.h"
 #include "util.h"
 
 #include "debug.h"
@@ -1610,17 +1610,17 @@ layout_page_changed_cb (glTemplateDesigner *dialog)
 static void
 print_test_cb (glTemplateDesigner      *dialog)
 {
-       GObject     *label;
-       lglTemplate *template;
-       glPrintOp   *print_op;
+       GObject           *label;
+       lglTemplate       *template;
+       glPrintOpDialog   *print_op;
 
        label = gl_label_new ();
 
        template = build_template (dialog);
        gl_label_set_template (GL_LABEL(label), template);
 
-       print_op = gl_print_op_new (GL_LABEL(label));
-       gl_print_op_force_outline_flag (print_op);
+       print_op = gl_print_op_dialog_new (GL_LABEL(label));
+       gl_print_op_force_outline (GL_PRINT_OP (print_op));
         gtk_print_operation_run (GTK_PRINT_OPERATION (print_op),
                                  GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
                                  GTK_WINDOW (dialog),
index bc01a65b0b9c4ece145599a0c20424cf173f256a..80f5f79459c6e98046da8b4ed8694cada4ba1bbe 100644 (file)
@@ -32,7 +32,7 @@
 #include "view.h"
 #include "file.h"
 #include "template-designer.h"
-#include "print-op.h"
+#include "print-op-dialog.h"
 #include "prefs.h"
 #include "prefs-dialog.h"
 #include "recent.h"
@@ -182,7 +182,7 @@ void
 gl_ui_cmd_file_print (GtkAction *action,
                       glWindow  *window)
 {
-        glPrintOp               *op;
+        glPrintOpDialog         *op;
         GtkPrintOperationResult  result;
 
         gl_debug (DEBUG_COMMANDS, "START");
@@ -190,11 +190,11 @@ gl_ui_cmd_file_print (GtkAction *action,
         g_return_if_fail (action && GTK_IS_ACTION(action));
         g_return_if_fail (window && GL_IS_WINDOW(window));
 
-        op = gl_print_op_new (GL_VIEW(window->view)->label);
+        op = gl_print_op_dialog_new (GL_VIEW(window->view)->label);
 
         if (window->print_settings)
         {
-                gl_print_op_set_settings (op, window->print_settings);
+                gl_print_op_set_settings (GL_PRINT_OP (op), window->print_settings);
         }
 
         result = gtk_print_operation_run (GTK_PRINT_OPERATION (op),
@@ -205,7 +205,7 @@ gl_ui_cmd_file_print (GtkAction *action,
         if ( result == GTK_PRINT_OPERATION_RESULT_APPLY )
         {
                 gl_print_op_free_settings (window->print_settings);
-                window->print_settings = gl_print_op_get_settings (op);
+                window->print_settings = gl_print_op_get_settings (GL_PRINT_OP (op));
         }
 
         gl_debug (DEBUG_COMMANDS, "END");
diff --git a/glabels2/src/wdgt-print-copies.c b/glabels2/src/wdgt-print-copies.c
deleted file mode 100644 (file)
index 0a7b770..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  wdgt_print_copies.c:  custom print copies widget module
- *
- *  Copyright (C) 2001  Jim Evins <evins@snaught.com>.
- *
- *  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, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
- */
-
-#include <config.h>
-
-#include "wdgt-print-copies.h"
-
-#include <glib/gi18n.h>
-#include <gtk/gtktogglebutton.h>
-#include <gtk/gtkspinbutton.h>
-#include <gtk/gtkradiobutton.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkvbox.h>
-
-#include "hig.h"
-#include "mini-preview.h"
-#include "marshal.h"
-
-#include "debug.h"
-
-#define MINI_PREVIEW_HEIGHT 175
-#define MINI_PREVIEW_WIDTH  150
-
-/*===========================================*/
-/* Private globals                           */
-/*===========================================*/
-
-/*===========================================*/
-/* Local function prototypes                 */
-/*===========================================*/
-
-static void gl_wdgt_print_copies_finalize      (GObject * object);
-
-static void gl_wdgt_print_copies_construct     (glWdgtPrintCopies * copies,
-                                               glLabel * label);
-
-static void sheets_radio_cb                    (GtkToggleButton * togglebutton,
-                                               gpointer user_data);
-static void first_spin_cb                      (GtkSpinButton * spinbutton,
-                                               gpointer user_data);
-static void last_spin_cb                       (GtkSpinButton * spinbutton,
-                                               gpointer user_data);
-
-static void
-preview_pressed (glMiniPreview *mini_preview,
-                gint first, gint last, gpointer user_data);
-
-\f
-/****************************************************************************/
-/* Boilerplate Object stuff.                                                */
-/****************************************************************************/
-G_DEFINE_TYPE (glWdgtPrintCopies, gl_wdgt_print_copies, GTK_TYPE_HBOX);
-
-static void
-gl_wdgt_print_copies_class_init (glWdgtPrintCopiesClass * class)
-{
-       GObjectClass *object_class = G_OBJECT_CLASS (class);
-
-       gl_wdgt_print_copies_parent_class = g_type_class_peek_parent (class);
-
-       object_class->finalize = gl_wdgt_print_copies_finalize;
-}
-
-static void
-gl_wdgt_print_copies_init (glWdgtPrintCopies * copies)
-{
-       copies->labels_per_sheet = 0;
-
-       copies->mini_preview = NULL;
-
-       copies->sheets_radio = NULL;
-       copies->sheets_spin = NULL;
-
-       copies->labels_radio = NULL;
-       copies->first_spin = NULL;
-       copies->last_spin = NULL;
-}
-
-static void
-gl_wdgt_print_copies_finalize (GObject * object)
-{
-       g_return_if_fail (object != NULL);
-       g_return_if_fail (GL_IS_WDGT_PRINT_COPIES (object));
-
-       G_OBJECT_CLASS (gl_wdgt_print_copies_parent_class)->finalize (object);
-}
-
-GtkWidget *
-gl_wdgt_print_copies_new (glLabel * label)
-{
-       glWdgtPrintCopies *copies;
-
-       copies = g_object_new (gl_wdgt_print_copies_get_type (), NULL);
-
-       gl_wdgt_print_copies_construct (copies, label);
-
-       return GTK_WIDGET (copies);
-}
-
-/*--------------------------------------------------------------------------*/
-/* Construct composite widget.                                              */
-/*--------------------------------------------------------------------------*/
-static void
-gl_wdgt_print_copies_construct (glWdgtPrintCopies *copies,
-                               glLabel           *label)
-{
-       const lglTemplateFrame    *frame;
-       GtkWidget                 *whbox, *wvbox, *whbox1;
-       GSList                    *radio_group = NULL;
-       GtkObject                 *adjust;
-
-       whbox = GTK_WIDGET (copies);
-
-        frame = (lglTemplateFrame *)label->template->frames->data;
-
-       copies->labels_per_sheet = lgl_template_frame_get_n_labels (frame);
-
-       /* mini_preview canvas */
-       copies->mini_preview = gl_mini_preview_new (MINI_PREVIEW_HEIGHT,
-                                                   MINI_PREVIEW_WIDTH);
-       gl_mini_preview_set_template (GL_MINI_PREVIEW(copies->mini_preview),
-                                      label->template);
-       gtk_box_pack_start (GTK_BOX(whbox), copies->mini_preview, FALSE, FALSE, 0);
-
-       wvbox = gtk_vbox_new (FALSE, GL_HIG_PAD1);
-       gtk_box_pack_start (GTK_BOX(whbox), wvbox, FALSE, FALSE, 0);
-
-       /* Sheet controls */
-       whbox1 = gtk_hbox_new (FALSE, GL_HIG_PAD2);
-       gtk_box_pack_start (GTK_BOX(wvbox), whbox1, FALSE, FALSE, 0);
-       copies->sheets_radio =
-           gtk_radio_button_new_with_label (radio_group, _("Sheets:"));
-       gtk_box_pack_start (GTK_BOX(whbox1), copies->sheets_radio, FALSE, FALSE, 0);
-       adjust = gtk_adjustment_new (1, 1.0, 10.0, 1.0, 10.0, 0.0);
-       copies->sheets_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust),
-                                                  1.0, 0);
-       gtk_box_pack_start (GTK_BOX(whbox1), copies->sheets_spin, FALSE, FALSE, 0);
-       gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview),
-                                         1, copies->labels_per_sheet);
-
-       /* Blank line */
-       gtk_box_pack_start (GTK_BOX(wvbox), gtk_label_new (""), FALSE, FALSE, 0);
-
-       /* Label controls */
-       whbox1 = gtk_hbox_new (FALSE, GL_HIG_PAD2);
-       gtk_box_pack_start (GTK_BOX(wvbox), whbox1, FALSE, FALSE, 0);
-       radio_group =
-           gtk_radio_button_get_group (GTK_RADIO_BUTTON (copies->sheets_radio));
-       copies->labels_radio =
-           gtk_radio_button_new_with_label (radio_group, _("Labels"));
-       gtk_box_pack_start (GTK_BOX(whbox1), copies->labels_radio, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX(whbox1), gtk_label_new (_("from:")), FALSE, FALSE, 0);
-       adjust = gtk_adjustment_new (1, 1.0, copies->labels_per_sheet,
-                                    1.0, 10.0, 0.0);
-       copies->first_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust),
-                                                 1.0, 0);
-       gtk_box_pack_start (GTK_BOX(whbox1), copies->first_spin, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX(whbox1), gtk_label_new (_("to:")), FALSE, FALSE, 0);
-       adjust = gtk_adjustment_new (copies->labels_per_sheet,
-                                    1.0, copies->labels_per_sheet,
-                                    1.0, 10.0, 0.0);
-       copies->last_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust),
-                                                1.0, 0);
-       gtk_box_pack_start (GTK_BOX(whbox1), copies->last_spin, FALSE, FALSE, 0);
-       gtk_widget_set_sensitive (copies->first_spin, FALSE);
-       gtk_widget_set_sensitive (copies->last_spin, FALSE);
-
-       /* Connect signals to controls */
-       g_signal_connect (G_OBJECT (copies->mini_preview), "pressed",
-                         G_CALLBACK (preview_pressed), copies);
-       g_signal_connect (G_OBJECT (copies->sheets_radio), "toggled",
-                         G_CALLBACK (sheets_radio_cb), copies);
-       g_signal_connect (G_OBJECT (copies->first_spin), "changed",
-                         G_CALLBACK (first_spin_cb), copies);
-       g_signal_connect (G_OBJECT (copies->last_spin), "changed",
-                         G_CALLBACK (last_spin_cb), copies);
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Enable/Disable appropriate controls due to radio button toggle.*/
-/*--------------------------------------------------------------------------*/
-static void
-sheets_radio_cb (GtkToggleButton * togglebutton,
-                gpointer user_data)
-{
-       glWdgtPrintCopies *copies = GL_WDGT_PRINT_COPIES (user_data);
-       gint first, last;
-
-       if (gtk_toggle_button_get_active (togglebutton)) {
-
-               gtk_widget_set_sensitive (copies->sheets_spin, TRUE);
-               gtk_widget_set_sensitive (copies->first_spin, FALSE);
-               gtk_widget_set_sensitive (copies->last_spin, FALSE);
-
-               gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview),
-                                                 1, copies->labels_per_sheet);
-
-       } else {
-
-               gtk_widget_set_sensitive (copies->sheets_spin, FALSE);
-               gtk_widget_set_sensitive (copies->first_spin, TRUE);
-               gtk_widget_set_sensitive (copies->last_spin, TRUE);
-
-               first =
-                   gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                                     (copies->first_spin));
-               last =
-                   gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                                     (copies->last_spin));
-               gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview),
-                                                first, last);
-
-       }
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  modify widget due to change of first spin button               */
-/*--------------------------------------------------------------------------*/
-static void
-first_spin_cb (GtkSpinButton * spinbutton,
-              gpointer user_data)
-{
-       glWdgtPrintCopies *copies = GL_WDGT_PRINT_COPIES (user_data);
-       gint first, last;
-
-       first =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (copies->first_spin));
-       last =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (copies->last_spin));
-
-       gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (copies->last_spin))->
-           lower = first;
-
-       gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview),
-                                        first, last);
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  modify widget due to change of last spin button                */
-/*--------------------------------------------------------------------------*/
-static void
-last_spin_cb (GtkSpinButton * spinbutton,
-             gpointer user_data)
-{
-       glWdgtPrintCopies *copies = GL_WDGT_PRINT_COPIES (user_data);
-       gint first, last;
-
-       first =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (copies->first_spin));
-       last =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (copies->last_spin));
-
-       gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (copies->first_spin))->
-           upper = last;
-
-       gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview),
-                                        first, last);
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Canvas event handler, select first and last items.             */
-/*--------------------------------------------------------------------------*/
-static void
-preview_pressed (glMiniPreview *mini_preview,
-                gint first,
-                gint last,
-                gpointer user_data)
-{
-       glWdgtPrintCopies *copies = GL_WDGT_PRINT_COPIES (user_data);
-
-       gl_wdgt_print_copies_set_range (copies, 1, first, last);
-}
-
-/****************************************************************************/
-/* query selected range of labels within sheet or number of sheets.         */
-/****************************************************************************/
-void
-gl_wdgt_print_copies_get_range (glWdgtPrintCopies * copies,
-                               gint * n_sheets,
-                               gint * first_label,
-                               gint * last_label)
-{
-       gboolean sheets_active;
-
-       sheets_active =
-           gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                         (copies->sheets_radio));
-
-       if (sheets_active) {
-               *n_sheets =
-                   gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                                     (copies->sheets_spin));
-               *first_label = 1;
-               *last_label = copies->labels_per_sheet;
-       } else {
-               *n_sheets = 1;
-               *first_label =
-                   gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                                     (copies->first_spin));
-               *last_label =
-                   gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                                     (copies->last_spin));
-       }
-}
-
-/****************************************************************************/
-/* set range of labels within sheet or number of sheets                     */
-/****************************************************************************/
-void
-gl_wdgt_print_copies_set_range (glWdgtPrintCopies * copies,
-                               gint n_sheets,
-                               gint first_label,
-                               gint last_label)
-{
-       gint old_first_label;
-
-       old_first_label =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (copies->first_spin));
-
-       if (first_label > old_first_label) {
-               gtk_spin_button_set_value (GTK_SPIN_BUTTON (copies->last_spin),
-                                          last_label);
-               gtk_spin_button_set_value (GTK_SPIN_BUTTON (copies->first_spin),
-                                          first_label);
-       } else {
-               gtk_spin_button_set_value (GTK_SPIN_BUTTON (copies->first_spin),
-                                          first_label);
-               gtk_spin_button_set_value (GTK_SPIN_BUTTON (copies->last_spin),
-                                          last_label);
-       }
-       if ((first_label == 1) && (last_label == copies->labels_per_sheet)) {
-               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                             (copies->sheets_radio), TRUE);
-               gtk_spin_button_set_value (GTK_SPIN_BUTTON
-                                          (copies->sheets_spin), n_sheets);
-       } else {
-               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                             (copies->labels_radio), TRUE);
-               gtk_spin_button_set_value (GTK_SPIN_BUTTON
-                                          (copies->sheets_spin), 1.0);
-       }
-}
diff --git a/glabels2/src/wdgt-print-copies.h b/glabels2/src/wdgt-print-copies.h
deleted file mode 100644 (file)
index ffae2f1..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  wdgt_print_copies.h:  custom print copies widget module header file
- *
- *  Copyright (C) 2001-2002  Jim Evins <evins@snaught.com>.
- *
- *  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, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
- */
-
-#ifndef __WDGT_PRINT_COPIES_H__
-#define __WDGT_PRINT_COPIES_H__
-
-#include "label.h"
-#include <gtk/gtkhbox.h>
-
-G_BEGIN_DECLS
-
-#define GL_TYPE_WDGT_PRINT_COPIES (gl_wdgt_print_copies_get_type ())
-#define GL_WDGT_PRINT_COPIES(obj) \
-        (G_TYPE_CHECK_INSTANCE_CAST((obj), GL_TYPE_WDGT_PRINT_COPIES, glWdgtPrintCopies ))
-#define GL_WDGT_PRINT_COPIES_CLASS(klass) \
-        (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_WDGT_PRINT_COPIES, glWdgtPrintCopiesClass))
-#define GL_IS_WDGT_PRINT_COPIES(obj) \
-        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_WDGT_PRINT_COPIES))
-#define GL_IS_WDGT_PRINT_COPIES_CLASS(klass) \
-        (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_WDGT_PRINT_COPIES))
-
-typedef struct _glWdgtPrintCopies      glWdgtPrintCopies;
-typedef struct _glWdgtPrintCopiesClass glWdgtPrintCopiesClass;
-
-struct _glWdgtPrintCopies {
-       GtkHBox   parent_widget;
-
-       gint      labels_per_sheet;
-
-       GtkWidget *mini_preview;
-
-       GtkWidget *sheets_radio;
-       GtkWidget *sheets_spin;
-
-       GtkWidget *labels_radio;
-       GtkWidget *first_spin;
-       GtkWidget *last_spin;
-};
-
-struct _glWdgtPrintCopiesClass {
-       GtkHBoxClass parent_class;
-};
-
-GType      gl_wdgt_print_copies_get_type  (void) G_GNUC_CONST;
-
-GtkWidget *gl_wdgt_print_copies_new       (glLabel           *label);
-
-void       gl_wdgt_print_copies_get_range (glWdgtPrintCopies *copies,
-                                          gint              *n_sheets,
-                                          gint              *first_label,
-                                          gint              *last_label);
-
-void       gl_wdgt_print_copies_set_range (glWdgtPrintCopies *copies,
-                                          gint               n_sheets,
-                                          gint               first_label,
-                                          gint               last_label);
-
-G_END_DECLS
-
-#endif
diff --git a/glabels2/src/wdgt-print-merge.c b/glabels2/src/wdgt-print-merge.c
deleted file mode 100644 (file)
index c5e0b97..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  wdgt_print_merge.c:  print merge widget module
- *
- *  Copyright (C) 2001  Jim Evins <evins@snaught.com>.
- *
- *  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, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
- */
-
-#include <config.h>
-
-#include "wdgt-print-merge.h"
-
-#include <math.h>
-#include <glib/gi18n.h>
-#include <gtk/gtktogglebutton.h>
-#include <gtk/gtkspinbutton.h>
-#include <gtk/gtkcheckbutton.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkvbox.h>
-
-#include "hig.h"
-#include "mini-preview.h"
-#include "marshal.h"
-
-#include "pixmaps/collate.xpm"
-#include "pixmaps/nocollate.xpm"
-
-#include "debug.h"
-
-#define MINI_PREVIEW_HEIGHT 175
-#define MINI_PREVIEW_WIDTH  150
-
-/*===========================================*/
-/* Private globals                           */
-/*===========================================*/
-
-/*===========================================*/
-/* Local function prototypes                 */
-/*===========================================*/
-
-static void gl_wdgt_print_merge_finalize      (GObject * object);
-
-static void gl_wdgt_print_merge_construct     (glWdgtPrintMerge * merge,
-                                              glLabel * label);
-
-static void preview_clicked                   (glMiniPreview *mini_preview,
-                                              gint i_label,
-                                              gpointer user_data);
-
-static void collate_check_cb                  (GtkToggleButton * togglebutton,
-                                              gpointer user_data);
-static void spin_cb                           (GtkSpinButton * spinbutton,
-                                              gpointer user_data);
-
-\f
-/****************************************************************************/
-/* Boilerplate Object stuff.                                                */
-/****************************************************************************/
-G_DEFINE_TYPE (glWdgtPrintMerge, gl_wdgt_print_merge, GTK_TYPE_HBOX);
-
-
-static void
-gl_wdgt_print_merge_class_init (glWdgtPrintMergeClass * class)
-{
-       GObjectClass *object_class = G_OBJECT_CLASS (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_init (glWdgtPrintMerge * merge)
-{
-       merge->mini_preview = NULL;
-
-       merge->copies_spin = NULL;
-       merge->first_spin = NULL;
-       merge->collate_image = NULL;
-       merge->collate_check = NULL;
-}
-
-static void
-gl_wdgt_print_merge_finalize (GObject * object)
-{
-       g_return_if_fail (object != NULL);
-       g_return_if_fail (GL_IS_WDGT_PRINT_MERGE (object));
-
-       G_OBJECT_CLASS (gl_wdgt_print_merge_parent_class)->finalize (object);
-}
-
-GtkWidget *
-gl_wdgt_print_merge_new (glLabel * label)
-{
-       glWdgtPrintMerge *merge;
-
-       merge = g_object_new (gl_wdgt_print_merge_get_type (), NULL);
-
-       gl_wdgt_print_merge_construct (merge, label);
-
-       return GTK_WIDGET (merge);
-}
-\f
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Construct composite widget.                                    */
-/*--------------------------------------------------------------------------*/
-static void
-gl_wdgt_print_merge_construct (glWdgtPrintMerge * merge,
-                              glLabel * label)
-{
-       const lglTemplateFrame    *frame;
-       GtkWidget                 *whbox, *wvbox, *whbox1;
-       GtkObject                 *adjust;
-       GdkPixbuf                 *pixbuf;
-
-       whbox = GTK_WIDGET (merge);
-
-        frame = (lglTemplateFrame *)label->template->frames->data;
-
-       merge->labels_per_sheet = lgl_template_frame_get_n_labels (frame);
-
-       /* mini_preview canvas */
-       merge->mini_preview = gl_mini_preview_new (MINI_PREVIEW_HEIGHT,
-                                                   MINI_PREVIEW_WIDTH);
-       gl_mini_preview_set_template( GL_MINI_PREVIEW (merge->mini_preview),
-                                      label->template );
-       gtk_box_pack_start (GTK_BOX(whbox), merge->mini_preview, FALSE, FALSE, 0);
-       gl_mini_preview_highlight_range (GL_MINI_PREVIEW(merge->mini_preview),
-                                         1, 1);
-
-       wvbox = gtk_vbox_new (FALSE, GL_HIG_PAD1);
-       gtk_box_pack_start (GTK_BOX(whbox), wvbox, FALSE, FALSE, 0);
-
-       /* First Label controls */
-       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, 0.0);
-       merge->first_spin =
-           gtk_spin_button_new (GTK_ADJUSTMENT (adjust), 1.0, 0);
-       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 */
-       gtk_box_pack_start (GTK_BOX(wvbox), gtk_label_new (""), FALSE, FALSE, 0);
-
-       /* Copy & collate controls*/
-       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, 0.0);
-       merge->copies_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust),
-                                                  1.0, 0);
-       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"));
-       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);
-
-       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",
-                         G_CALLBACK (preview_clicked), merge);
-       g_signal_connect (G_OBJECT (merge->collate_check), "toggled",
-                         G_CALLBACK (collate_check_cb), merge);
-       g_signal_connect (G_OBJECT (merge->copies_spin), "changed",
-                         G_CALLBACK (spin_cb), merge);
-       g_signal_connect (G_OBJECT (merge->first_spin), "changed",
-                         G_CALLBACK (spin_cb), merge);
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Enable/Disable appropriate controls due to radio button toggle.*/
-/*--------------------------------------------------------------------------*/
-static void
-collate_check_cb (GtkToggleButton * togglebutton,
-                 gpointer user_data)
-{
-       glWdgtPrintMerge *merge = GL_WDGT_PRINT_MERGE (user_data);
-       GdkPixbuf *pixbuf;
-
-       if (gtk_toggle_button_get_active (togglebutton)) {
-
-               pixbuf =
-                 gdk_pixbuf_new_from_xpm_data ( (const char **)collate_xpm);
-
-       } else {
-
-               pixbuf =
-                 gdk_pixbuf_new_from_xpm_data ( (const char **)nocollate_xpm);
-
-       }
-       gtk_image_set_from_pixbuf (GTK_IMAGE (merge->collate_image),
-                                  pixbuf);
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  modify widget due to change of first spin button               */
-/*--------------------------------------------------------------------------*/
-static void
-spin_cb (GtkSpinButton * spinbutton,
-        gpointer user_data)
-{
-       glWdgtPrintMerge *merge = GL_WDGT_PRINT_MERGE (user_data);
-       gint first, last, n_copies;
-
-       first =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (merge->first_spin));
-
-       n_copies =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (merge->copies_spin));
-       last = first + (n_copies * merge->n_records) - 1;
-       gl_mini_preview_highlight_range (GL_MINI_PREVIEW(merge->mini_preview),
-                                        first, last );
-
-       gtk_widget_set_sensitive (merge->collate_check, (n_copies > 1));
-       gtk_widget_set_sensitive (merge->collate_image, (n_copies > 1));
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Canvas event handler, select first and last items.             */
-/*--------------------------------------------------------------------------*/
-static void
-preview_clicked (glMiniPreview *mini_preview,
-                gint first,
-                gpointer user_data)
-{
-       glWdgtPrintMerge *merge = GL_WDGT_PRINT_MERGE (user_data);
-       gint n_copies, last;
-
-       gtk_spin_button_set_value (GTK_SPIN_BUTTON (merge->first_spin),
-                                  first);
-
-       n_copies =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (merge->copies_spin));
-       last = first + (n_copies * merge->n_records) - 1;
-       gl_mini_preview_highlight_range (GL_MINI_PREVIEW (merge->mini_preview),
-                                        first, last);
-
-}
-
-/****************************************************************************/
-/* 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,
-                               gint             *n_sheets)
-{
-       *n_copies =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (merge->copies_spin));
-       *first_label =
-           gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
-                                             (merge->first_spin));
-       *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 );
-}
-
-/****************************************************************************/
-/* set range of labels within sheet or number of sheets                     */
-/****************************************************************************/
-void
-gl_wdgt_print_merge_set_copies (glWdgtPrintMerge * merge,
-                               gint n_copies,
-                               gint first_label,
-                               gint n_records,
-                               gboolean collate_flag)
-{
-       gint last_label;
-
-       merge->n_records = n_records;
-
-       gtk_spin_button_set_value (GTK_SPIN_BUTTON (merge->copies_spin),
-                                  n_copies);
-       gtk_spin_button_set_value (GTK_SPIN_BUTTON (merge->first_spin),
-                                  first_label);
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (merge->collate_check),
-                                     collate_flag);
-
-       last_label = first_label + (n_copies * n_records) - 1;
-       gl_mini_preview_highlight_range (GL_MINI_PREVIEW (merge->mini_preview),
-                                        first_label, last_label );
-}
diff --git a/glabels2/src/wdgt-print-merge.h b/glabels2/src/wdgt-print-merge.h
deleted file mode 100644 (file)
index 1b16bf8..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  wdgt_print_merge.h:  print merge widget module header file
- *
- *  Copyright (C) 2001-2002  Jim Evins <evins@snaught.com>.
- *
- *  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, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
- */
-
-#ifndef __WDGT_PRINT_MERGE_H__
-#define __WDGT_PRINT_MERGE_H__
-
-#include "label.h"
-#include <gtk/gtkhbox.h>
-
-G_BEGIN_DECLS
-
-#define GL_TYPE_WDGT_PRINT_MERGE (gl_wdgt_print_merge_get_type ())
-#define GL_WDGT_PRINT_MERGE(obj) \
-        (G_TYPE_CHECK_INSTANCE_CAST((obj), GL_TYPE_WDGT_PRINT_MERGE, glWdgtPrintMerge ))
-#define GL_WDGT_PRINT_MERGE_CLASS(klass) \
-        (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_WDGT_PRINT_MERGE, glWdgtPrintMergeClass))
-#define GL_IS_WDGT_PRINT_MERGE(obj) \
-        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_WDGT_PRINT_MERGE))
-#define GL_IS_WDGT_PRINT_MERGE_CLASS(klass) \
-        (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_WDGT_PRINT_MERGE))
-
-typedef struct _glWdgtPrintMerge      glWdgtPrintMerge;
-typedef struct _glWdgtPrintMergeClass glWdgtPrintMergeClass;
-
-struct _glWdgtPrintMerge {
-       GtkHBox   parent_widget;
-
-       gint      labels_per_sheet;
-       GtkWidget *mini_preview;
-
-       gint      n_records;
-
-       GtkWidget *copies_spin;
-       GtkWidget *first_spin;
-       GtkWidget *collate_image;
-       GtkWidget *collate_check;
-};
-
-struct _glWdgtPrintMergeClass {
-       GtkHBoxClass parent_class;
-};
-
-GType      gl_wdgt_print_merge_get_type   (void) G_GNUC_CONST;
-
-GtkWidget *gl_wdgt_print_merge_new        (glLabel          *label);
-
-void       gl_wdgt_print_merge_get_copies (glWdgtPrintMerge *merge,
-                                          gint             *n_copies,
-                                          gint             *first_label,
-                                          gboolean         *collate_flag,
-                                          gint             *n_sheets);
-
-void       gl_wdgt_print_merge_set_copies (glWdgtPrintMerge *merge,
-                                          gint              n_copies,
-                                          gint              first_label,
-                                          gint              n_records,
-                                          gboolean          collate_flag);
-
-G_END_DECLS
-
-#endif