commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/forms/src/uidrivers/wx PrintForm.py


From: Jason Cater
Subject: gnue/forms/src/uidrivers/wx PrintForm.py
Date: Tue, 20 May 2003 12:26:46 -0400

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    03/05/20 12:26:45

Modified files:
        forms/src/uidrivers/wx: PrintForm.py 

Log message:
        added page layout/headers/footers to default printout

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/wx/PrintForm.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: gnue/forms/src/uidrivers/wx/PrintForm.py
diff -c gnue/forms/src/uidrivers/wx/PrintForm.py:1.1 
gnue/forms/src/uidrivers/wx/PrintForm.py:1.2
*** gnue/forms/src/uidrivers/wx/PrintForm.py:1.1        Mon May 19 20:13:50 2003
--- gnue/forms/src/uidrivers/wx/PrintForm.py    Tue May 20 12:26:45 2003
***************
*** 35,53 ****
  __all__ = ['printForm']
  
  from wxPython.wx import *
  
  def printForm(form, driver):
  
    # Get a suitable title for the print job
!   # We default to either "Form Name" or "Form Name (Page Name)"
    # depending on if the page has a caption or not.
    try:
      title = form.title
    except AttributeError:
      title = 'Untitled Form'
    try:
      if form._currentPage.caption:
!       title += ' (' + form._currentPage.caption + ')'
    except AttributeError:
      pass
  
--- 35,56 ----
  __all__ = ['printForm']
  
  from wxPython.wx import *
+ from gnue.forms import VERSION
+ import time
  
  def printForm(form, driver):
  
    # Get a suitable title for the print job
!   # We default to either "Form Name" or "Form Name" + "Page Name"
    # depending on if the page has a caption or not.
+   subtitle = ""
    try:
      title = form.title
    except AttributeError:
      title = 'Untitled Form'
    try:
      if form._currentPage.caption:
!       subtitle = ' (' + form._currentPage.caption + ')'
    except AttributeError:
      pass
  
***************
*** 74,80 ****
    prd.SetPrintData(printData)
    prn = wxPrinter(prd)
  
!   printout = FormPrintout(window, title, dest)
  
    if not prn.Print(driver._gfObjToUIWidget[form].mainWindow, printout):
      wxMessageBox(_("There was a problem printing.\nPlease verify your printer 
setup and try again."), _("Printing"), wxOK)
--- 77,84 ----
    prd.SetPrintData(printData)
    prn = wxPrinter(prd)
  
!   printout = FormPrintout(window, title, subtitle,
!        form.triggerGetAuthenticatedUser() or 'Anonymous', dest)
  
    if not prn.Print(driver._gfObjToUIWidget[form].mainWindow, printout):
      wxMessageBox(_("There was a problem printing.\nPlease verify your printer 
setup and try again."), _("Printing"), wxOK)
***************
*** 84,98 ****
  
  class FormPrintout(wxPrintout):
  
!   def __init__(self, window, title, dc):
      self.__window = window
      self.__title = title
      self.__dc = dc
      wxPrintout.__init__(self, title)
  
    def OnPrintPage(self, page):
      dest = self.GetDC()
      src = self.__dc
      w, h = src.GetSizeTuple()
!     dest.Blit(50,50, w, h, src, 0, 0)
  
--- 88,165 ----
  
  class FormPrintout(wxPrintout):
  
!   def __init__(self, window, title, subtitle, login, dc):
      self.__window = window
      self.__title = title
+     self.__subtitle = subtitle
+     self.__login = login
      self.__dc = dc
      wxPrintout.__init__(self, title)
  
    def OnPrintPage(self, page):
      dest = self.GetDC()
+     dest.StartDoc (self.__title + (self.__subtitle and ' (%s)' % 
self.__subtitle or ''))
+     dest.StartPage()
+     dest.SetFont(wxNORMAL_FONT)
+     dest.SetPen(wxBLACK_PEN)
+     dest.SetBrush(wxTRANSPARENT_BRUSH)
+ 
+ 
      src = self.__dc
      w, h = src.GetSizeTuple()
!     screen_ppi_x, screen_ppi_y = self.GetPPIScreen()
!     printer_ppi_x, printer_ppi_y = self.GetPPIPrinter()
!     scale_x = printer_ppi_x / screen_ppi_x
!     scale_y = printer_ppi_y / screen_ppi_y
! 
!     # Get page width/height, in mm
!     page_width, page_height = self.GetPageSizePixels()
! 
! 
!     # 3/4" margins
!     page_margin_left = page_margin_right = int(printer_ppi_y*.75+.5)
!     page_margin_top  = int(printer_ppi_y*.75+.5)
!     page_margin_bottom = int(page_margin_top/2)
!     page_canvas_x = page_width - page_margin_left - page_margin_right
!     page_canvas_y = page_height - page_margin_top - page_margin_bottom
! 
!     # Draw a header:
!     #   Form Name                                  <Timestamp>
!     #   Page Caption                          Login: User Name
!     #   ------------------------------------------------------
! 
!     # Form and page title
!     x, y = self.drawText(dest, page_margin_left, page_margin_top, 
self.__title)
!     x, y = self.drawText(dest, x, y, self.__subtitle)
! 
!     # Timestamp and login
!     timestamp = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))
!     x, y = self.drawText(dest, page_width - page_margin_right, 
page_margin_top,
!                          timestamp, rightAlign=1)
!     x, y = self.drawText(dest, x, y, _('Login: ') + self.__login, 
rightAlign=1)
! 
!     # Draw the border line
!     dest.DrawLine(page_margin_left, y, page_width - page_margin_right, y)
! 
!     # .. and the actual screenshot
!     y += page_margin_top
!     dest.Blit(int((page_canvas_x - w)/2)+page_margin_left,y, w, h, src, 0, 0)
! 
!     # .. with a border
!     dest.DrawRectangle(int((page_canvas_x - w)/2)+page_margin_left, y, w, h)
! 
!     # Finish up with the footer
!     y = page_height - page_margin_bottom
!     self.drawText(dest, page_margin_left, y, 'GNUe Forms %s' % VERSION,  
bottomAlign=1)
!     self.drawText(dest, page_width - page_margin_right, y, _('Page 1 of 1'),  
rightAlign=1, bottomAlign=1)
! 
!     dest.EndPage()
!     dest.EndDoc()
! 
! 
!   def drawText(self, dc, x, y, text, rightAlign=0, bottomAlign=0):
!     w, h = dc.GetTextExtent(text)
!     dc.DrawText(text, x - (rightAlign and w or 0), y - (bottomAlign and h or 
0))
!     return (x + (not rightAlign and w or 0), y + int(h * 1.3))
! 
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]