summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/wx-3.0-msw/wx/lib/pdfwin.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/wx-3.0-msw/wx/lib/pdfwin.py')
-rw-r--r--lib/python2.7/site-packages/wx-3.0-msw/wx/lib/pdfwin.py296
1 files changed, 296 insertions, 0 deletions
diff --git a/lib/python2.7/site-packages/wx-3.0-msw/wx/lib/pdfwin.py b/lib/python2.7/site-packages/wx-3.0-msw/wx/lib/pdfwin.py
new file mode 100644
index 0000000..73fadba
--- /dev/null
+++ b/lib/python2.7/site-packages/wx-3.0-msw/wx/lib/pdfwin.py
@@ -0,0 +1,296 @@
+#----------------------------------------------------------------------
+# Name: wx.lib.pdfwin
+# Purpose: A class that allows the use of the Acrobat PDF reader
+# ActiveX control
+#
+# Author: Robin Dunn
+#
+# Created: 22-March-2004
+# RCS-ID: $Id$
+# Copyright: (c) 2008 by Total Control Software
+# Licence: wxWindows license
+#----------------------------------------------------------------------
+
+import wx
+
+_min_adobe_version = None
+
+def get_min_adobe_version():
+ return _min_adobe_version
+
+def get_acroversion():
+ " Included for backward compatibility"
+ return _min_adobe_version
+
+#----------------------------------------------------------------------
+
+if wx.PlatformInfo[1] == 'wxMSW':
+ import wx.lib.activex
+ import comtypes.client as cc
+ import comtypes
+ import ctypes
+
+ try: # Adobe Reader >= 7.0
+ cc.GetModule( ('{05BFD3F1-6319-4F30-B752-C7A22889BCC4}', 1, 0) )
+ progID = 'AcroPDF.PDF.1'
+ _min_adobe_version = 7.0
+ except:
+ try: # Adobe Reader 5 or 6
+ cc.GetModule( ('{CA8A9783-280D-11CF-A24D-444553540000}', 1, 0) )
+ progID = 'PDF.PdfCtrl.5'
+ _min_adobe_version = 5.0
+ except:
+ pass # Adobe Reader not installed (progID is not defined)
+ # Use get_min_adobe_version() before instantiating PDFWindow
+
+ #------------------------------------------------------------------------------
+
+ class PDFWindow(wx.lib.activex.ActiveXCtrl):
+ def __init__(self, parent, id=-1, pos=wx.DefaultPosition,
+ size=wx.DefaultSize, style=0, name='PDFWindow'):
+ wx.lib.activex.ActiveXCtrl.__init__(self, parent, progID,
+ id, pos, size, style, name)
+ self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroyWindow)
+
+ def OnDestroyWindow(self, event):
+ wx.CallAfter(self.FreeDlls)
+
+ def FreeDlls(self):
+ """
+ Unloads any DLLs that are no longer in use when all COM object instances are
+ released. This prevents the error 'The instruction at "0x0700609c" referenced
+ memory at "0x00000014". The memory could not be read' when application closes
+ """
+ ctypes.windll.ole32.CoFreeUnusedLibraries()
+
+ def LoadFile(self, fileName):
+ """
+ Opens and displays the specified document within the browser.
+ """
+ return self.ctrl.LoadFile(fileName)
+
+ def GetVersions(self):
+ """
+ Deprecated: No longer available - do not use.
+ """
+ return self.ctrl.GetVersions()
+
+ def Print(self):
+ """
+ Prints the document according to the specified options in a user dialog box.
+ """
+ return self.ctrl.Print()
+
+ def goBackwardStack(self):
+ """
+ Goes to the previous view on the view stack, if it exists.
+ """
+ return self.ctrl.goBackwardStack()
+
+ def goForwardStack(self):
+ """
+ Goes to the next view on the view stack, if it exists.
+ """
+ return self.ctrl.goForwardStack()
+
+ def gotoFirstPage(self):
+ """
+ Goes to the first page in the document.
+ """
+ return self.ctrl.gotoFirstPage()
+
+ def gotoLastPage(self):
+ """
+ Goes to the last page in the document.
+ """
+ return self.ctrl.gotoLastPage()
+
+ def gotoNextPage(self):
+ """
+ Goes to the next page in the document, if it exists
+ """
+ return self.ctrl.gotoNextPage()
+
+ def gotoPreviousPage(self):
+ """
+ Goes to the previous page in the document, if it exists.
+ """
+ return self.ctrl.gotoPreviousPage()
+
+ def printAll(self):
+ """
+ Prints the entire document without displaying a user
+ dialog box. The current printer, page settings, and job
+ settings are used. This method returns immediately, even
+ if the printing has not completed.
+ """
+ return self.ctrl.printAll()
+
+ def printAllFit(self, shrinkToFit):
+ """
+ Prints the entire document without a user dialog box, and
+ (if shrinkToFit) shrinks pages as needed to fit the
+ imageable area of a page in the printer.
+ """
+ return self.ctrl.printAllFit(shrinkToFit)
+
+ def printPages(self, from_, to):
+ """
+ Prints the specified pages without displaying a user dialog box.
+ """
+ return self.ctrl.printPages(from_, to)
+
+ def printPagesFit(self, from_, to, shrinkToFit):
+ """
+ Prints the specified pages without displaying a user
+ dialog box, and (if shrinkToFit) shrinks pages as needed
+ to fit the imageable area of a page in the printer.
+ """
+ return self.ctrl.printPagesFit( from_, to, shrinkToFit)
+
+ def printWithDialog(self):
+ """
+ Prints the document according to the specified options in
+ a user dialog box. These options may include embedded
+ printing and specifying which printer is to be used.
+
+ NB. The page range in the dialog defaults to
+ 'From Page 1 to 1' - Use Print() above instead. (dfh)
+ """
+ return self.ctrl.printWithDialog()
+
+ def setCurrentHighlight(self, a, b, c, d):
+ return self.ctrl.setCurrentHighlight(a, b, c, d)
+
+ def setCurrentPage(self, npage):
+ """
+ Goes to the specified page in the document. Maintains the
+ current location within the page and zoom level. npage is
+ the page number of the destination page. The first page
+ in a document is page 0.
+
+ ## Oh no it isn't! The first page is 1 (dfh)
+ """
+ return self.ctrl.setCurrentPage(npage)
+
+ def setLayoutMode(self, layoutMode):
+ """
+ LayoutMode possible values:
+
+ ================= ====================================
+ 'DontCare' use the current user preference
+ 'SinglePage' use single page mode (as in pre-Acrobat 3.0 viewers)
+ 'OneColumn' use one-column continuous mode
+ 'TwoColumnLeft' use two-column continuous mode, first page on the left
+ 'TwoColumnRight' use two-column continuous mode, first page on the right
+ ================= ====================================
+ """
+ return self.ctrl.setLayoutMode(layoutMode)
+
+ def setNamedDest(self, namedDest):
+ """
+ Changes the page view to the named destination in the specified string.
+ """
+ return self.ctrl.setNamedDest(namedDest)
+
+ def setPageMode(self, pageMode):
+ """
+ Sets the page mode to display the document only, or to
+ additionally display bookmarks or thumbnails. pageMode =
+ 'none' or 'bookmarks' or 'thumbs'.
+
+ ## NB.'thumbs' is case-sensitive, the other are not (dfh)
+ """
+ return self.ctrl.setPageMode(pageMode)
+
+ def setShowScrollbars(self, On):
+ """
+ Determines whether scrollbars will appear in the document
+ view.
+
+ ## NB. If scrollbars are off, the navigation tools disappear as well (dfh)
+ """
+ return self.ctrl.setShowScrollbars(On)
+
+ def setShowToolbar(self, On):
+ """
+ Determines whether a toolbar will appear in the application.
+ """
+ return self.ctrl.setShowToolbar(On)
+
+ def setView(self, viewMode):
+ """
+ Determines how the page will fit in the current view.
+ viewMode possible values:
+
+ ======== ==============================================
+ 'Fit' fits whole page within the window both vertically and horizontally.
+ 'FitH' fits the width of the page within the window.
+ 'FitV' fits the height of the page within the window.
+ 'FitB' fits bounding box within the window both vertically and horizontally.
+ 'FitBH' fits the width of the bounding box within the window.
+ 'FitBV' fits the height of the bounding box within the window.
+ ======== ==============================================
+ """
+ return self.ctrl.setView(viewMode)
+
+ def setViewRect(self, left, top, width, height):
+ """
+ Sets the view rectangle according to the specified coordinates.
+
+ :param left: The upper left horizontal coordinate.
+ :param top: The vertical coordinate in the upper left corner.
+ :param width: The horizontal width of the rectangle.
+ :param height: The vertical height of the rectangle.
+ """
+ return self.ctrl.setViewRect(left, top, width, height)
+
+ def setViewScroll(self, viewMode, offset):
+ """
+ Sets the view of a page according to the specified string.
+ Depending on the view mode, the page is either scrolled to
+ the right or scrolled down by the amount specified in
+ offset. Possible values of viewMode are as in setView
+ above. offset is the horizontal or vertical coordinate
+ positioned either at the left or top edge.
+ """
+ return self.ctrl.setViewScroll(viewMode, offset)
+
+ def setZoom(self, percent):
+ """
+ Sets the magnification according to the specified value
+ expressed as a percentage (float)
+ """
+ return self.ctrl.setZoom(percent)
+
+ def setZoomScroll(self, percent, left, top):
+ """
+ Sets the magnification according to the specified value,
+ and scrolls the page view both horizontally and vertically
+ according to the specified amounts.
+
+ :param left: the horizontal coordinate positioned at the left edge.
+ :param top: the vertical coordinate positioned at the top edge.
+ """
+ return self.ctrl.setZoomScroll(percent, left, top)
+
+
+#------------------------------------------------------------------------------
+
+
+
+
+if __name__ == '__main__':
+ app = wx.App(False)
+ frm = wx.Frame(None, title="AX Test Window")
+
+ pdf = PDFWindow(frm)
+
+ frm.Show()
+ import wx.lib.inspection
+ wx.lib.inspection.InspectionTool().Show()
+ app.MainLoop()
+
+
+
+