private void PrintButtonClicked(object sender, EventArgs args) { try { page_breaks = new List <PageBreak> (); using (Gtk.PrintOperation print_op = new Gtk.PrintOperation()) { print_op.JobName = Note.Title; print_op.BeginPrint += OnBeginPrint; print_op.DrawPage += OnDrawPage; print_op.EndPrint += OnEndPrint; print_op.Run(Gtk.PrintOperationAction.PrintDialog, Window); } } catch (Exception e) { Logger.Error("Exception while printing " + Note.Title + ": " + e.ToString()); HIGMessageDialog dlg = new HIGMessageDialog(Note.Window, Gtk.DialogFlags.Modal, Gtk.MessageType.Error, Gtk.ButtonsType.Ok, Catalog.GetString("Error printing note"), e.Message); dlg.Run(); dlg.Destroy(); } }
private void PrintButtonClicked (object sender, EventArgs args) { try { page_breaks = new List<PageBreak> (); using (Gtk.PrintOperation print_op = new Gtk.PrintOperation ()) { print_op.JobName = Note.Title; print_op.BeginPrint += OnBeginPrint; print_op.DrawPage += OnDrawPage; print_op.EndPrint += OnEndPrint; print_op.Run (Gtk.PrintOperationAction.PrintDialog, Window); } } catch (Exception e) { Logger.Error ("Exception while printing " + Note.Title + ": " + e.ToString ()); HIGMessageDialog dlg = new HIGMessageDialog (Note.Window, Gtk.DialogFlags.Modal, Gtk.MessageType.Error, Gtk.ButtonsType.Ok, Catalog.GetString ("Error printing note"), e.Message); dlg.Run (); dlg.Destroy (); } }
private void OnBeginPrint(object sender, Gtk.BeginPrintArgs args) { Gtk.PrintOperation op = (Gtk.PrintOperation)sender; Gtk.PrintContext context = args.Context; timestamp_footer = CreateTimestampLayout(context); // FIXME: These should be configurable settings later (UI Change) margin_top = CmToPixel(1.5, context.DpiY); margin_left = CmToPixel(1, context.DpiX); margin_right = CmToPixel(1, context.DpiX); margin_bottom = 0; double max_height = Pango.Units.FromPixels((int)context.Height - margin_top - margin_bottom - ComputeFooterHeight(context)); Gtk.TextIter position; Gtk.TextIter end_iter; Buffer.GetBounds(out position, out end_iter); double page_height = 0; bool done = position.Compare(end_iter) >= 0; while (!done) { Gtk.TextIter line_end = position; if (!line_end.EndsLine()) { line_end.ForwardToLineEnd(); } int paragraph_number = position.Line; int indentation; using (Pango.Layout layout = CreateParagraphLayout( context, position, line_end, out indentation)) { Pango.Rectangle ink_rect = Pango.Rectangle.Zero; Pango.Rectangle logical_rect = Pango.Rectangle.Zero; for (int line_in_paragraph = 0; line_in_paragraph < layout.LineCount; line_in_paragraph++) { Pango.LayoutLine line = layout.GetLine(line_in_paragraph); line.GetExtents(ref ink_rect, ref logical_rect); if (page_height + logical_rect.Height >= max_height) { PageBreak page_break = new PageBreak( paragraph_number, line_in_paragraph); page_breaks.Add(page_break); page_height = 0; } page_height += logical_rect.Height; } position.ForwardLine(); done = position.Compare(end_iter) >= 0; } } op.NPages = page_breaks.Count + 1; }
protected void OnPrintButtonClicked(object sender, System.EventArgs e) { Gtk.PrintOperation print = new Gtk.PrintOperation(); // Tell the Print Operation how many pages there are print.NPages = this.pdf.NPages; print.BeginPrint += new Gtk.BeginPrintHandler(OnBeginPrint); print.DrawPage += new Gtk.DrawPageHandler(OnDrawPage); print.EndPrint += new Gtk.EndPrintHandler(OnEndPrint); // Run the Print Operation and tell it what it should do (Export, Preview, Print, PrintDialog) // And provide a parent window if applicable print.Run(Gtk.PrintOperationAction.PrintDialog, null); print = null; }
protected void OnPrintButtonClicked(object sender, System.EventArgs e) { Gtk.PrintOperation print = new Gtk.PrintOperation (); // Tell the Print Operation how many pages there are print.NPages = this.pdf.NPages; print.BeginPrint += new Gtk.BeginPrintHandler (OnBeginPrint); print.DrawPage += new Gtk.DrawPageHandler (OnDrawPage); print.EndPrint += new Gtk.EndPrintHandler (OnEndPrint); // Run the Print Operation and tell it what it should do (Export, Preview, Print, PrintDialog) // And provide a parent window if applicable print.Run (Gtk.PrintOperationAction.PrintDialog, null); print = null; }