1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| #!/usr/bin/env python
import os
import sys
import pgi
pgi.require_version('Gtk', '3.0')
pgi.require_version('EvinceDocument', '3.0')
pgi.require_version('EvinceView', '3.0')
from pgi.repository import Gtk, GObject, Gdk
from pgi.repository import EvinceDocument
from pgi.repository import EvinceView
if len(sys.argv) != 2:
print("Usage: "+sys.argv[0]+" file.ext")
sys.exit(0)
else:
docFile=os.path.abspath(sys.argv[1])
# ==========================================================
# Evince viewer class
class EvinceViewer:
# ------------------------------------------------------
# constructor to build GUI and hook up function
def __init__(self):
# create main window
self.window = Gtk.Window()
# set title, size, position
self.window.set_title("Evince")
self.window.set_default_size(800,600)
# connect destroy and delete events to quit
self.window.connect('destroy', Gtk.main_quit)
self.window.connect('delete-event',
Gtk.main_quit)
self.window.connect("key-press-event",
self.keypress)
# scrolled window for the viewer
scroll = Gtk.ScrolledWindow()
self.window.add(scroll)
# evince document
EvinceDocument.init()
doc = EvinceDocument.Document.factory_get_document(
'file://'+docFile)
# evince view
self.view = EvinceView.View()
# evince model
self.model = EvinceView.DocumentModel()
self.model.set_document(doc)
self.model.set_sizing_mode(EvinceView.SizingMode.BEST_FIT)
self.view.set_model(self.model)
# add to scroll window
scroll.add(self.view)
self.window.show_all()
self.fullscreen=False
#------------------------------------------------------
# handling keyboard events
def keypress(self,widget,event):
keyname = Gdk.keyval_name(event.keyval)
ctrl = event.state & \
Gdk.ModifierType.CONTROL_MASK
if ctrl:
if keyname == 'r':
self.view.reload()
elif keyname == 'Return':
if self.fullscreen == False:
self.fullscreen=True
self.window.fullscreen()
else:
self.fullscreen=False
self.window.unfullscreen()
elif keyname == 'f':
self.model.props.page = 5 # 5 = page 6
elif keyname == 'q':
Gtk.main_quit()
def main(self):
Gtk.main()
if __name__ == "__main__":
evinceViewer = EvinceViewer()
evinceViewer.main() |
Partager