aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog20
-rw-r--r--calendar/gui/calendar-commands.c11
-rw-r--r--calendar/gui/e-cal-list-view.etspec2
-rw-r--r--calendar/gui/print.c92
-rw-r--r--calendar/gui/print.h5
-rw-r--r--calendar/gui/tasks-control.c95
6 files changed, 135 insertions, 90 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 89e7425238..4c1ff80a2d 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,23 @@
+2004-01-17 JP Rosevear <jpr@ximian.com>
+
+ * gui/print.h: update protos
+
+ * gui/print.c (print_title): util routine to print a title
+ (print_table): print out an etable
+
+ * gui/calendar-commands.c (print): handle printing the list view
+
+ * gui/e-cal-list-view.etspec: draw the grid to mimic tasks
+
+ * gui/tasks-control.c (tasks_control_print_cmd): use print_table
+
+ Fixes #51751, #52958
+
+2004-01-16 JP Rosevear <jpr@ximian.com>
+
+ * gui/calendar-commands.c (print): handle list view by printing
+ the month
+
2004-01-16 JP Rosevear <jpr@ximian.com>
* gui/e-itip-control.c (find_server): we actually want to not
diff --git a/calendar/gui/calendar-commands.c b/calendar/gui/calendar-commands.c
index 1ff2a3a0a8..5058b1c66a 100644
--- a/calendar/gui/calendar-commands.c
+++ b/calendar/gui/calendar-commands.c
@@ -61,6 +61,7 @@
#include "dialogs/cal-prefs-dialog.h"
#include "itip-utils.h"
#include "e-pub-utils.h"
+#include "e-cal-list-view.h"
#include "evolution-shell-component-utils.h"
/* Focusing information for the calendar view. We have to keep track of this
@@ -89,7 +90,9 @@ print (GnomeCalendar *gcal, gboolean preview)
time_t start;
GnomeCalendarViewType view_type;
PrintView print_view;
-
+ ECalListView *list_view;
+ ETable *etable;
+
gnome_calendar_get_current_time_range (gcal, &start, NULL);
view_type = gnome_calendar_get_view (gcal);
@@ -107,6 +110,12 @@ print (GnomeCalendar *gcal, gboolean preview)
print_view = PRINT_VIEW_MONTH;
break;
+ case GNOME_CAL_LIST_VIEW:
+ list_view = E_CAL_LIST_VIEW (gnome_calendar_get_current_view_widget (gcal));
+ etable = e_table_scrolled_get_table (list_view->table_scrolled);
+ print_table (etable, _("Calendar"), preview);
+ return;
+
default:
g_assert_not_reached ();
return;
diff --git a/calendar/gui/e-cal-list-view.etspec b/calendar/gui/e-cal-list-view.etspec
index e5a2cc0b6d..49a12bc849 100644
--- a/calendar/gui/e-cal-list-view.etspec
+++ b/calendar/gui/e-cal-list-view.etspec
@@ -1,4 +1,4 @@
-<ETableSpecification draw-grid="false" alternating-row-colors="true">
+<ETableSpecification draw-grid="true" alternating-row-colors="true">
<ETableColumn model_col="0" _title="Categories" expansion="1.0" minimum_width="10" resizable="true" cell="calstring" compare="string"/>
<ETableColumn model_col="1" _title="Classification" expansion="1.0" minimum_width="10" resizable="true" cell="classification" compare="string" priority="-1"/>
<ETableColumn model_col="2" _title="color" cell="calcolor" priority="-4"/>
diff --git a/calendar/gui/print.c b/calendar/gui/print.c
index 1e978d8694..2d8ef720c4 100644
--- a/calendar/gui/print.c
+++ b/calendar/gui/print.c
@@ -2619,6 +2619,98 @@ print_comp (ECalComponent *comp, ECal *client, gboolean preview)
g_object_unref (gpm);
}
+static void
+print_title (GnomePrintContext *pc, const char *title,
+ double page_width, double page_height)
+{
+ GnomeFont *font;
+ double w, x, y;
+
+ font = gnome_font_find_closest ("Sans Bold", 18);
+
+ w = gnome_font_get_width_utf8 (font, title);
+
+ x = (page_width - w) / 2;
+ y = page_height - gnome_font_get_ascender (font);
+
+ gnome_print_moveto (pc, x, y);
+ gnome_print_setfont (pc, font);
+ gnome_print_setrgbcolor (pc, 0, 0, 0);
+ gnome_print_show (pc, title);
+
+ g_object_unref (font);
+}
+
+void
+print_table (ETable *etable, const char *title, gboolean preview)
+{
+ EPrintable *printable;
+ GnomePrintContext *pc;
+ GnomePrintJob *gpm;
+ double l, r, t, b, page_width, page_height, left_margin, bottom_margin;
+
+ if (!print_config)
+ print_config = gnome_print_config_default ();
+
+ printable = e_table_get_printable (etable);
+ g_object_ref (printable);
+ gtk_object_sink (GTK_OBJECT (printable));
+ e_printable_reset (printable);
+
+ gpm = gnome_print_job_new (print_config);
+ pc = gnome_print_job_get_context (gpm);
+
+ gnome_print_config_get_page_size (print_config, &r, &t);
+
+#if 0
+ gnome_print_config_get_double (print_config, GNOME_PRINT_KEY_PAGE_MARGIN_TOP, &temp_d);
+ t -= temp_d;
+ gnome_print_config_get_double (print_config, GNOME_PRINT_KEY_PAGE_MARGIN_RIGHT, &temp_d);
+ r -= temp_d;
+ gnome_print_config_get_double (print_config, GNOME_PRINT_KEY_PAGE_MARGIN_BOTTOM, &b);
+ gnome_print_config_get_double (print_config, GNOME_PRINT_KEY_PAGE_MARGIN_LEFT, &l);
+#endif
+
+ b = t * TEMP_MARGIN;
+ l = r * TEMP_MARGIN;
+ t *= (1.0 - TEMP_MARGIN);
+ r *= (1.0 - TEMP_MARGIN);
+
+ page_width = r - l;
+ page_height = t - b;
+ left_margin = l;
+ bottom_margin = b;
+
+ do {
+ gnome_print_beginpage (pc, "Tasks");
+ gnome_print_gsave (pc);
+
+ gnome_print_translate (pc, left_margin, bottom_margin);
+
+ print_title (pc, title, page_width, page_height);
+
+ if (e_printable_data_left (printable))
+ e_printable_print_page (printable, pc,
+ page_width, page_height - 24, TRUE);
+
+ gnome_print_grestore (pc);
+ gnome_print_showpage (pc);
+ } while (e_printable_data_left (printable));
+
+ gnome_print_job_close (gpm);
+
+ if (preview) {
+ GtkWidget *gpmp;
+ gpmp = gnome_print_job_preview_new (gpm, _("Print Preview"));
+ gtk_widget_show (gpmp);
+ } else {
+ gnome_print_job_print (gpm);
+ }
+
+ g_object_unref (gpm);
+ g_object_unref (printable);
+}
+
void
print_setup (void)
{
diff --git a/calendar/gui/print.h b/calendar/gui/print.h
index 495007d81d..52db38c371 100644
--- a/calendar/gui/print.h
+++ b/calendar/gui/print.h
@@ -30,11 +30,14 @@ typedef enum {
PRINT_VIEW_DAY,
PRINT_VIEW_WEEK,
PRINT_VIEW_MONTH,
- PRINT_VIEW_YEAR
+ PRINT_VIEW_YEAR,
+ PRINT_VIEW_LIST
} PrintView;
void print_calendar (GnomeCalendar *gcal, gboolean preview, time_t at, PrintView default_view);
void print_comp (ECalComponent *comp, ECal *client, gboolean preview);
+void print_table (ETable *etable, const char *title, gboolean preview);
+
void print_setup (void);
diff --git a/calendar/gui/tasks-control.c b/calendar/gui/tasks-control.c
index 23a24e97fc..f0064d0789 100644
--- a/calendar/gui/tasks-control.c
+++ b/calendar/gui/tasks-control.c
@@ -48,6 +48,7 @@
#include "calendar-commands.h"
#include "e-tasks.h"
#include "e-calendar-table.h"
+#include "print.h"
#include "tasks-control.h"
#include "evolution-shell-component-utils.h"
@@ -493,103 +494,17 @@ tasks_control_purge_cmd (BonoboUIComponent *uic,
static void
-print_title (GnomePrintContext *pc,
- double page_width, double page_height)
-{
- GnomeFont *font;
- char *text;
- double w, x, y;
-
- font = gnome_font_find_closest ("Sans Bold", 18);
-
- text = _("Tasks");
- w = gnome_font_get_width_utf8 (font, text);
-
- x = (page_width - w) / 2;
- y = page_height - gnome_font_get_ascender (font);
-
- gnome_print_moveto (pc, x, y);
- gnome_print_setfont (pc, font);
- gnome_print_setrgbcolor (pc, 0, 0, 0);
- gnome_print_show (pc, text);
-
- g_object_unref (font);
-}
-
-static void
print_tasks (ETasks *tasks, gboolean preview)
{
ECalendarTable *cal_table;
- EPrintable *printable;
ETable *etable;
- GnomePrintContext *pc;
- GnomePrintJob *gpm;
- double l, r, t, b, page_width, page_height, left_margin, bottom_margin;
-
- if (!print_config)
- print_config = gnome_print_config_default ();
cal_table = e_tasks_get_calendar_table (tasks);
etable = e_calendar_table_get_table (E_CALENDAR_TABLE (cal_table));
- printable = e_table_get_printable (etable);
- g_object_ref (printable);
- gtk_object_sink (GTK_OBJECT (printable));
- e_printable_reset (printable);
-
- gpm = gnome_print_job_new (print_config);
- pc = gnome_print_job_get_context (gpm);
-
- gnome_print_config_get_page_size (print_config, &r, &t);
-
-#if 0
- gnome_print_config_get_double (print_config, GNOME_PRINT_KEY_PAGE_MARGIN_TOP, &temp_d);
- t -= temp_d;
- gnome_print_config_get_double (print_config, GNOME_PRINT_KEY_PAGE_MARGIN_RIGHT, &temp_d);
- r -= temp_d;
- gnome_print_config_get_double (print_config, GNOME_PRINT_KEY_PAGE_MARGIN_BOTTOM, &b);
- gnome_print_config_get_double (print_config, GNOME_PRINT_KEY_PAGE_MARGIN_LEFT, &l);
-#endif
- b = t * FIXED_MARGIN;
- l = r * FIXED_MARGIN;
- t *= (1.0 - FIXED_MARGIN);
- r *= (1.0 - FIXED_MARGIN);
-
- page_width = r - l;
- page_height = t - b;
- left_margin = l;
- bottom_margin = b;
-
- while (e_printable_data_left (printable)) {
- gnome_print_beginpage (pc, "Tasks");
- gnome_print_gsave (pc);
-
- gnome_print_translate (pc, left_margin, bottom_margin);
-
- print_title (pc, page_width, page_height);
-
- e_printable_print_page (printable, pc,
- page_width, page_height - 24, TRUE);
-
- gnome_print_grestore (pc);
- gnome_print_showpage (pc);
- }
-
- gnome_print_job_close (gpm);
-
- if (preview) {
- GtkWidget *gpmp;
- gpmp = gnome_print_job_preview_new (gpm, _("Print Preview"));
- gtk_widget_show (gpmp);
- } else {
- gnome_print_job_print (gpm);
- }
-
- g_object_unref (gpm);
- g_object_unref (printable);
+ print_table (etable, _("Tasks"), preview);
}
-
/* File/Print callback */
static void
tasks_control_print_cmd (BonoboUIComponent *uic,
@@ -600,6 +515,8 @@ tasks_control_print_cmd (BonoboUIComponent *uic,
GtkWidget *gpd;
gboolean preview = FALSE;
GnomePrintJob *gpm;
+ ECalendarTable *cal_table;
+ ETable *etable;
tasks = E_TASKS (data);
@@ -628,7 +545,11 @@ tasks_control_print_cmd (BonoboUIComponent *uic,
return;
}
+ cal_table = e_tasks_get_calendar_table (tasks);
+ etable = e_calendar_table_get_table (E_CALENDAR_TABLE (cal_table));
+
gtk_widget_destroy (gpd);
+
print_tasks (tasks, preview);
}