aboutsummaryrefslogtreecommitdiffstats
path: root/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'widgets')
-rw-r--r--widgets/misc/e-printable.c41
-rw-r--r--widgets/misc/e-printable.h22
2 files changed, 56 insertions, 7 deletions
diff --git a/widgets/misc/e-printable.c b/widgets/misc/e-printable.c
index 27170fef84..ed982469b8 100644
--- a/widgets/misc/e-printable.c
+++ b/widgets/misc/e-printable.c
@@ -24,6 +24,7 @@ enum {
DATA_LEFT,
RESET,
HEIGHT,
+ WILL_FIT,
LAST_SIGNAL
};
@@ -64,8 +65,16 @@ e_printable_class_init (GtkObjectClass *object_class)
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (EPrintableClass, height),
- e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE,
- GTK_TYPE_DOUBLE, 3, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE);
+ e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE_BOOL,
+ GTK_TYPE_DOUBLE, 4, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE, GTK_TYPE_BOOL);
+
+ e_printable_signals [WILL_FIT] =
+ gtk_signal_new ("will_fit",
+ GTK_RUN_LAST,
+ object_class->type,
+ GTK_SIGNAL_OFFSET (EPrintableClass, will_fit),
+ e_marshal_BOOL__OBJECT_DOUBLE_DOUBLE_BOOL,
+ GTK_TYPE_BOOL, 4, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE, GTK_TYPE_BOOL);
gtk_object_class_add_signals (object_class, e_printable_signals, LAST_SIGNAL);
@@ -73,6 +82,7 @@ e_printable_class_init (GtkObjectClass *object_class)
klass->data_left = NULL;
klass->reset = NULL;
klass->height = NULL;
+ klass->will_fit = NULL;
}
@@ -154,7 +164,8 @@ gdouble
e_printable_height (EPrintable *e_printable,
GnomePrintContext *context,
gdouble width,
- gdouble max_height)
+ gdouble max_height,
+ gboolean quantized)
{
gdouble ret_val;
@@ -166,6 +177,30 @@ e_printable_height (EPrintable *e_printable,
context,
width,
max_height,
+ quantized,
+ &ret_val);
+
+ return ret_val;
+}
+
+gboolean
+e_printable_will_fit (EPrintable *e_printable,
+ GnomePrintContext *context,
+ gdouble width,
+ gdouble max_height,
+ gboolean quantized)
+{
+ gboolean ret_val;
+
+ g_return_val_if_fail (e_printable != NULL, -1);
+ g_return_val_if_fail (E_IS_PRINTABLE (e_printable), -1);
+
+ gtk_signal_emit (GTK_OBJECT (e_printable),
+ e_printable_signals [WILL_FIT],
+ context,
+ width,
+ max_height,
+ quantized,
&ret_val);
return ret_val;
diff --git a/widgets/misc/e-printable.h b/widgets/misc/e-printable.h
index 2f8532e0ec..18e6ec8472 100644
--- a/widgets/misc/e-printable.h
+++ b/widgets/misc/e-printable.h
@@ -33,7 +33,16 @@ typedef struct {
void (*print_page) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble height, gboolean quantized);
gboolean (*data_left) (EPrintable *etm);
void (*reset) (EPrintable *etm);
- gdouble (*height) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble max_height);
+ gdouble (*height) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble max_height, gboolean quantized);
+
+ /* e_printable_will_fit (ep, ...) should be equal in value to
+ * (e_printable_print_page (ep, ...),
+ * !e_printable_data_left(ep)) except that the latter has the
+ * side effect of doing the printing and advancing the
+ * position of the printable.
+ */
+
+ gboolean (*will_fit) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble max_height, gboolean quantized);
} EPrintableClass;
GtkType e_printable_get_type (void);
@@ -41,8 +50,7 @@ GtkType e_printable_get_type (void);
EPrintable *e_printable_new (void);
/*
- * Routines for emitting signals on the e_table
- */
+ * Routines for emitting signals on the e_table */
void e_printable_print_page (EPrintable *e_printable,
GnomePrintContext *context,
gdouble width,
@@ -53,6 +61,12 @@ void e_printable_reset (EPrintable *e_printable);
gdouble e_printable_height (EPrintable *e_printable,
GnomePrintContext *context,
gdouble width,
- gdouble max_height);
+ gdouble max_height,
+ gboolean quantized);
+gboolean e_printable_will_fit (EPrintable *e_printable,
+ GnomePrintContext *context,
+ gdouble width,
+ gdouble max_height,
+ gboolean quantized);
#endif /* _E_PRINTABLE_H_ */