Example #1
0
        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 ();
			}
		}
Example #3
0
        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;
        }
Example #4
0
        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;
        }
Example #5
0
        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;
        }