20 # |
20 # |
21 # You should have received a copy of the GNU General Public License |
21 # You should have received a copy of the GNU General Public License |
22 # along with this program; if not, write to the Free Software |
22 # along with this program; if not, write to the Free Software |
23 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
23 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
24 |
24 |
25 import wx, os |
25 import os |
|
26 import wx |
|
27 |
26 |
28 |
27 readerexepath = None |
29 readerexepath = None |
28 |
30 |
|
31 |
29 def get_acroversion(): |
32 def get_acroversion(): |
30 " Return version of Adobe Acrobat executable or None" |
33 " Return version of Adobe Acrobat executable or None" |
31 import _winreg |
34 import _winreg |
32 adobesoft = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'Software\Adobe') |
35 adobesoft = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'Software\Adobe') |
33 for index in range(_winreg.QueryInfoKey(adobesoft)[0]): |
36 for index in range(_winreg.QueryInfoKey(adobesoft)[0]): |
37 for index in range(_winreg.QueryInfoKey(acrokey)[0]): |
40 for index in range(_winreg.QueryInfoKey(acrokey)[0]): |
38 numver = _winreg.EnumKey(acrokey, index) |
41 numver = _winreg.EnumKey(acrokey, index) |
39 try: |
42 try: |
40 res = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, 'Software\\Adobe\\%s\\%s\\InstallPath' % (key, numver)) |
43 res = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, 'Software\\Adobe\\%s\\%s\\InstallPath' % (key, numver)) |
41 return res |
44 return res |
42 except: |
45 except Exception: |
43 pass |
46 pass |
44 return None |
47 return None |
45 |
48 |
46 def open_win_pdf(readerexepath, pdffile, pagenum = None): |
49 |
47 if pagenum != None : |
50 def open_win_pdf(readerexepath, pdffile, pagenum=None): |
48 os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", "/A", "page=%d=OpenActions" % pagenum, '"%s"'%pdffile) |
51 if pagenum is not None: |
|
52 os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", "/A", "page=%d=OpenActions" % pagenum, '"%s"' % pdffile) |
49 else: |
53 else: |
50 os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", '"%s"'%pdffile) |
54 os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", '"%s"' % pdffile) |
51 |
55 |
52 def open_lin_pdf(readerexepath, pdffile, pagenum = None): |
56 |
53 if pagenum == None : |
57 def open_lin_pdf(readerexepath, pdffile, pagenum=None): |
54 os.system("%s -remote DS301 %s &"%(readerexepath, pdffile)) |
58 if pagenum is None: |
|
59 os.system("%s -remote DS301 %s &" % (readerexepath, pdffile)) |
55 else: |
60 else: |
56 print "Open pdf %s at page %d"%(pdffile, pagenum) |
61 print "Open pdf %s at page %d" % (pdffile, pagenum) |
57 os.system("%s -remote DS301 %s %d &"%(readerexepath, pdffile, pagenum)) |
62 os.system("%s -remote DS301 %s %d &" % (readerexepath, pdffile, pagenum)) |
58 |
63 |
59 def open_pdf(pdffile, pagenum = None): |
64 |
60 if wx.Platform == '__WXMSW__' : |
65 def open_pdf(pdffile, pagenum=None): |
|
66 if wx.Platform == '__WXMSW__': |
61 try: |
67 try: |
62 readerpath = get_acroversion() |
68 readerpath = get_acroversion() |
63 except: |
69 except Exception: |
64 wx.MessageBox("Acrobat Reader is not found or installed !") |
70 wx.MessageBox("Acrobat Reader is not found or installed !") |
65 return None |
71 return None |
66 |
72 |
67 readerexepath = os.path.join(readerpath, "AcroRd32.exe") |
73 readerexepath = os.path.join(readerpath, "AcroRd32.exe") |
68 if(os.path.isfile(readerexepath)): |
74 if(os.path.isfile(readerexepath)): |
69 open_win_pdf(readerexepath, pdffile, pagenum) |
75 open_win_pdf(readerexepath, pdffile, pagenum) |
70 else: |
76 else: |
71 return None |
77 return None |
72 else: |
78 else: |
73 readerexepath = os.path.join("/usr/bin","xpdf") |
79 readerexepath = os.path.join("/usr/bin", "xpdf") |
74 if(os.path.isfile(readerexepath)): |
80 if(os.path.isfile(readerexepath)): |
75 open_lin_pdf(readerexepath, pdffile, pagenum) |
81 open_lin_pdf(readerexepath, pdffile, pagenum) |
76 else: |
82 else: |
77 wx.MessageBox("xpdf is not found or installed !") |
83 wx.MessageBox("xpdf is not found or installed !") |
78 return None |
84 return None |