Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
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":
numeric_level = getattr(logging, arg.upper(), None)
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)
# Some things that need updating
self.cache.swap_document(self.doc)
self.page_number.set_last(self.doc.pages_number())
self.page_number.enable_labels(self.doc.has_labels())
self.doc.goto(page)
self.medias.purge_media_overlays()
# Draw the new page(s)
if not reloading:
self.talk_time.pause()
self.timing.reset(int(self.talk_time.delta))
self.talk_time.reset_timer()
Returns:
:class:`~pympress.document.PdfPage`: the notes mode
"""
page = self.page(self.cur_page) or self.page(0)
if page is None:
return PdfPage.NONE
ar = page.get_aspect_ratio()
# "Regular" slides will have an aspect ratio of 4/3, 16/9, 16/10... i.e. in the range [1..2]
# So if the aspect ratio is >= 2, we can assume it is a document with notes on the side.
if ar >= 2:
try:
return PdfPage[horizontal.upper()]
except KeyError:
return PdfPage.RIGHT
# Make exception for classic american letter format and ISO (A4, B5, etc.)
if abs(ar - 8.5 / 11) < 1e-3 or abs(ar - 1 / math.sqrt(2)) < 1e-3:
return PdfPage.NONE
# If the aspect ratio is < 1, we can assume it is a document with notes above or below.
if ar < 1:
try:
return PdfPage[vertical.upper()]
except KeyError:
return PdfPage.BOTTOM
return PdfPage.NONE
def to_screen(val, x, y, x2 = None, y2 = None):
""" Transform full page coordinates to visible part coordinates.
Pass 2 floats to transform coordinates, 4 to transform margins,
i.e. the second pair of coordinates is taken from the opposite corner.
Args:
x1 (`float`): x coordinate on the page, on a scale 0..1
y1 (`float`): y coordinate on the page, on a scale 0..1
x2 (`float`): second x coordinate on the page, from the other side, on a scale 0..1
y2 (`float`): second y coordinate on the page, from the other side, on a scale 0..1
"""
if val == PdfPage.RIGHT:
screen = (x * 2 - 1, y)
elif val == PdfPage.LEFT:
screen = (x * 2, y)
elif val == PdfPage.BOTTOM:
screen = (x, y * 2 - 1)
elif val == PdfPage.TOP:
screen = (x, y * 2)
else:
screen = (x, y)
if x2 is None or y2 is None:
return screen
else:
return screen + val.complement().to_screen(x2, y2)
p_da_cur = None
#: :class:`~Gtk.Frame` for the annotations in the Presenter window.
p_frame_annot = None
#: :class:`~Gtk.CheckMenuItem` that shows whether the annotations are toggled
pres_annot = None
#: Indicates whether we should delay redraws on some drawing areas to fluidify resizing gtk.paned
resize_panes = False
#: Tracks return values of GLib.timeout_add to cancel gtk.paned's redraw callbacks
redraw_timeout = 0
#: Whether to use notes mode or not
notes_mode = document.PdfPage.NONE
#: Current choice of mode to toggle notes
chosen_notes_mode = document.PdfPage.RIGHT
#: :class:`~Gtk.CheckMenuItem` that shows whether the annotations are toggled
pres_notes = None
#: Whether to display annotations or not
show_annotations = True
#: Whether to display big buttons or not
show_bigbuttons = True
#: :class:`~Gtk.ToolButton` big button for touch screens, go to previous slide
prev_button = None
#: :class:`~Gtk.ToolButton` big button for touch screens, go to next slide
next_button = None
#: :class:`~Gtk.ToolButton` big button for touch screens, go to scribble on screen
highlight_button = None
#: number of page currently displayed in Controller window's miniatures
page_preview_nb = -1