Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def main(argv = sys.argv[1:]):
signal.signal(signal.SIGINT, signal.SIG_DFL)
# prefere X11 on posix systems because Wayland still has some shortcomings for us,
# specifically libVLC and the ability to disable screensavers
if util.IS_POSIX:
Gdk.set_allowed_backends('x11,*')
Gtk.init(argv)
pympress_meta = util.get_pympress_meta()['version']
logger.info(' '.join(['Pympress:', pympress_meta,
'; Python:', platform.python_version(),
'; OS:', platform.system(), platform.release(), #platform.version(),
'; Gtk {}.{}.{}'.format(Gtk.get_major_version(), Gtk.get_minor_version(), Gtk.get_micro_version()),
'; GLib {}.{}.{}'.format(GLib.MAJOR_VERSION, GLib.MINOR_VERSION, GLib.MICRO_VERSION),
'; Poppler', document.Poppler.get_version(), document.Poppler.get_backend().value_nick,
'; Cairo', ui.cairo.cairo_version_string(), ', pycairo', ui.cairo.version,
'; Media:', extras.Media.backend_version()
]))
try:
opts, args = getopt.getopt(argv, "hn:t:", ["help", "notes=", "talk-time=", "log="])
except getopt.GetoptError:
usage()
sys.exit(2)
ett, log_level, notes_pos = parse_opts(opts)
logger.setLevel(log_level)
# Create windows
gui = ui.UI()
def parse_opts(opts):
ett = 0
log_level = logging.ERROR
notes_pos = None
for opt, arg in opts:
if opt in ("-h", "--help"):
usage()
sys.exit()
if opt in ("-n", "--notes"):
if arg.lower()[0] == 'n': notes_pos = document.PdfPage.NONE
if arg.lower()[0] == 'l': notes_pos = document.PdfPage.LEFT
if arg.lower()[0] == 'r': notes_pos = document.PdfPage.RIGHT
if arg.lower()[0] == 't': notes_pos = document.PdfPage.TOP
if arg.lower()[0] == 'b': notes_pos = document.PdfPage.BOTTOM
elif opt in ("-t", "--talk-time"):
t = ["0" + n.strip() for n in arg.split(':')]
try:
m = int(t[0])
s = int(t[1])
except ValueError:
print(_("Invalid time (mm or mm:ss expected), got \"{}\"").format(arg))
usage()
sys.exit(2)
except IndexError:
s = 0
ett = m * 60 + s
elif opt == "--log":
Args:
docpath (`str`): the absolute path to the new document
page (`int`): the page at which to start the presentation
reloading (`bool`): whether we are reloading or detecting stuff from the document
"""
try:
self.doc = document.Document.create(self, docpath)
if not reloading and docpath:
Gtk.RecentManager.get_default().add_item(self.doc.get_uri())
extras.FileWatcher.watch_file(docpath, self.reload_document)
except GLib.Error:
if reloading:
return
self.doc = document.Document.create(self, None)
self.error_opening_file(docpath)
extras.FileWatcher.stop_watching()
# Guess notes mode by default if the document has notes
if not reloading:
hpref = self.config.get('notes position', 'horizontal')
vpref = self.config.get('notes position', 'vertical')
self.chosen_notes_mode = target_mode = self.doc.guess_notes(hpref, vpref)
# don't toggle from NONE to NONE
if self.chosen_notes_mode == document.PdfPage.NONE:
self.chosen_notes_mode = document.PdfPage.RIGHT
if self.notes_mode != target_mode:
self.switch_mode('swap_document', docpath, target_mode = target_mode)