]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/ActiveX_PDFWindow.py
Stop the timer when the sample is destroyed
[wxWidgets.git] / wxPython / demo / ActiveX_PDFWindow.py
index 35c3956c307bfe52ea8a385c9930fa88b17013a3..6639fd0c1db42b14a50a27b822a46bc348d129ec 100644 (file)
@@ -10,55 +10,150 @@ if wx.Platform == '__WXMSW__':
 class TestPanel(wx.Panel):
     def __init__(self, parent, log):
         wx.Panel.__init__(self, parent, -1)
-        self.pdf = None
-
-        sizer = wx.BoxSizer(wx.VERTICAL)
-        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
 
+        mainsizer = wx.BoxSizer(wx.HORIZONTAL)
+        leftsizer = wx.BoxSizer(wx.VERTICAL)
         self.pdf = PDFWindow(self, style=wx.SUNKEN_BORDER)
-
-        sizer.Add(self.pdf, proportion=1, flag=wx.EXPAND)
-
-        btn = wx.Button(self, wx.NewId(), "Open PDF File")
-        self.Bind(wx.EVT_BUTTON, self.OnOpenButton, btn)
-        btnSizer.Add(btn, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
-
-        btn = wx.Button(self, wx.NewId(), "<-- Previous Page")
-        self.Bind(wx.EVT_BUTTON, self.OnPrevPageButton, btn)
-        btnSizer.Add(btn, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
-
-        btn = wx.Button(self, wx.NewId(), "Next Page -->")
-        self.Bind(wx.EVT_BUTTON, self.OnNextPageButton, btn)
-        btnSizer.Add(btn, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
-
-
-        btnSizer.Add((50,-1), proportion=2, flag=wx.EXPAND)
-        sizer.Add(btnSizer, proportion=0, flag=wx.EXPAND)
-
-        self.SetSizer(sizer)
+        leftsizer.Add(self.pdf, proportion=1, flag=wx.EXPAND)
+
+        box = wx.StaticBox(self, wx.NewId(), "" )
+        buttonsizer = wx.StaticBoxSizer(box, wx.HORIZONTAL )
+    
+        b1 = wx.Button(self, wx.NewId(), "First")
+        buttonsizer.Add(b1, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=5)
+        self.Bind(wx.EVT_BUTTON, self.OnFirstPageButton, b1)
+
+        b2 = wx.Button(self,  wx.NewId(), "Previous")
+        buttonsizer.Add(b2, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=5)
+        self.Bind(wx.EVT_BUTTON, self.OnPreviousPageButton, b2)
+        
+        tx1 = wx.StaticText(self, wx.NewId(), "   Go to page" )
+        buttonsizer.Add(tx1, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=5)
+        tc1 = wx.TextCtrl(self, wx.NewId(), "0", size=[30,-1])
+        buttonsizer.Add( tc1, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=5)
+        self.Bind(wx.EVT_TEXT, self.OnGotoPage, tc1)
+    
+        b3 = wx.Button(self, wx.NewId(), "Next")
+        buttonsizer.Add(b3, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=5)
+        self.Bind(wx.EVT_BUTTON, self.OnNextPageButton, b3)
+
+        b4 = wx.Button(self, wx.NewId(), "Last")
+        buttonsizer.Add(b4, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=5)
+        self.Bind(wx.EVT_BUTTON, self.OnLastPageButton, b4)
+
+        tx2 = wx.StaticText(self, wx.NewId(), "     Zoom")
+        buttonsizer.Add(tx2, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=5)
+        ch1 = wx.Choice(self, wx.NewId(),
+                        choices=["Default", "Fit", "FitH", "FitV",
+                                 "25%", "50%", "75%", "100%", "125%", "200%", "400%"])
+        ch1.SetSelection(0)
+        buttonsizer.Add(ch1, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=5)
+        self.Bind(wx.EVT_CHOICE, self.OnZoom, ch1)
+
+        leftsizer.Add(buttonsizer, proportion=0)
+        mainsizer.Add(leftsizer, proportion=1, flag=wx.GROW|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, border=5)
+
+        box = wx.StaticBox(self, wx.NewId(), "" )
+        rightsizer = wx.StaticBoxSizer(box, wx.VERTICAL)
+    
+        b5 = wx.Button(self, wx.NewId(), "Load PDF")
+        rightsizer.Add(b5, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL, border=5)
+        self.Bind(wx.EVT_BUTTON, self.OnLoadButton, b5)
+
+        b6 = wx.Button(self, wx.NewId(), "Print")
+        rightsizer.Add(b6, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL, border=5)
+        self.Bind(wx.EVT_BUTTON, self.OnPrintButton, b6)
+
+        tx3 = wx.StaticText(self, wx.NewId(), "Page mode:")
+        rightsizer.Add(tx3, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL, border=5)
+
+        ch2 = wx.Choice(self, wx.NewId(),size=[100,-1],
+                        choices=["None", "Bookmarks", "Thumbs"])
+        ch2.SetSelection(0)
+        rightsizer.Add(ch2, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL, border=5)
+        self.Bind(wx.EVT_CHOICE, self.OnPageMode, ch2)
+
+        tx4 = wx.StaticText(self, wx.NewId(), "Layout mode:")
+        rightsizer.Add(tx4, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL, border=5)
+
+        ch3 = wx.Choice(self, wx.NewId(),size=[100,-1],
+                        choices=["DontCare", "SinglePage",
+                                 "OneColumn", "TwoColumnLeft", "TwoColumnRight" ])
+        ch3.SetSelection(0)
+        rightsizer.Add(ch3, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL, border=5)
+        self.Bind(wx.EVT_CHOICE, self.OnLayoutMode, ch3)
+
+        cx1 = wx.CheckBox(self, wx.NewId(), "Toolbar")
+        cx1.SetValue( True )
+        rightsizer.Add( cx1,proportion=0, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL, border=5)
+        self.Bind(wx.EVT_CHECKBOX, self.OnToolbar, cx1)
+
+        cx2 = wx.CheckBox(self, wx.NewId(), "Scrollbars")
+        cx2.SetValue( True )
+        rightsizer.Add( cx2,proportion=0, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL, border=5)
+        self.Bind(wx.EVT_CHECKBOX, self.OnScrollbars, cx2)
+
+        mainsizer.Add( rightsizer, proportion=0, flag=wx.ALL, border=15)
+        self.SetSizer(mainsizer)
         self.SetAutoLayout(True)
 
+    def OnFirstPageButton(self, event):
+        self.pdf.gotoFirstPage()
 
+    def OnPreviousPageButton(self, event):
+        self.pdf.gotoPreviousPage()
 
-    def OnOpenButton(self, event):
-        dlg = wx.FileDialog(self, wildcard="*.pdf")
+    def OnNextPageButton(self, event):
+        self.pdf.gotoNextPage()
 
+    def OnLastPageButton(self, event):
+        self.pdf.gotoLastPage()
+
+    def OnGotoPage(self, event):
+        npage = event.GetEventObject().GetValue()
+        try:
+            self.pdf.setCurrentPage(int(npage))
+        except ValueError:
+            pass
+
+    def OnZoom(self, event):
+        astring = event.GetEventObject().GetStringSelection()
+        if astring.startswith('Fit'):
+            self.pdf.setView(astring)
+        else:
+            try:
+                percent = float(astring.replace('%',''))
+                self.pdf.setZoom(percent)
+            except ValueError:
+                pass
+        
+    def OnLoadButton(self, event):
+        dlg = wx.FileDialog(self, wildcard="*.pdf")
         if dlg.ShowModal() == wx.ID_OK:
             wx.BeginBusyCursor()
             self.pdf.LoadFile(dlg.GetPath())
             wx.EndBusyCursor()
-
         dlg.Destroy()
 
+    def OnPrintButton(self, event):
+        self.pdf.Print()
 
-    def OnPrevPageButton(self, event):
-        self.pdf.gotoPreviousPage()
-
+    def OnPageMode(self, event):
+        astring = event.GetEventObject().GetStringSelection()
+        self.pdf.setPageMode(astring.lower())
 
-    def OnNextPageButton(self, event):
-        self.pdf.gotoNextPage()
+    def OnLayoutMode(self, event):
+        astring = event.GetEventObject().GetStringSelection()
+        self.pdf.setLayoutMode(astring)
 
+    def OnToolbar(self, event):
+        on = event.GetEventObject().GetValue()
+        self.pdf.setShowToolbar(on)
 
+    def OnScrollbars(self, event):
+        on = event.GetEventObject().GetValue()
+        self.pdf.setShowScrollbars(on)
 
 #----------------------------------------------------------------------
 
@@ -67,13 +162,14 @@ def runTest(frame, nb, log):
         win = TestPanel(nb, log)
         return win
     else:
-        dlg = wx.MessageDialog(frame, 'This demo only works on MSW.',
-                          'Sorry', wx.OK | wx.ICON_INFORMATION)
-        dlg.ShowModal()
-        dlg.Destroy()
+        from Main import MessagePanel
+        win = MessagePanel(nb, 'This demo only works on Microsoft Windows.',
+                           'Sorry', wx.ICON_WARNING)
+        return win
 
 
-overview = """\<html><body>
+overview = """\
+<html><body>
 <h2>wx.lib.pdfwin.PDFWindow</h2>
 
 The wx.lib.pdfwin.PDFWindow class is another example of using ActiveX