Source code for steno.droptargets
# -*- coding: utf-8 -*-
"""
.. module:: droptargets
:platform: Unix, Windows
:synopsis: Drag'n'Drop behavior definition
.. moduleauthor:: Anton Konyshev <anton.konyshev@gmail.com>
"""
import os.path as op
import wx
import events as ev
[docs]class FileDropTarget(wx.FileDropTarget):
"""Handles drag'n'drop files events.
"""
[docs] def __init__(self, frame):
"""Implements loading of a content initiated by dragging.
:param frame: Player window instance
:type frame: :class:`player.Player`
"""
super(FileDropTarget, self).__init__()
self.frame = frame
[docs] def OnDropFiles(self, x, y, filenames):
"""Handles a file dropping to the frame.
:param int x: X-coordinate of the dropping
:param int y: Y-coordinate of the dropping
:param list filenames: Paths to files
"""
for filename in filenames:
if op.isfile(filename):
_, extension = op.splitext(filename)
if extension.lower() == '.srt':
self._on_subtitles_drop(filename)
else:
self._on_video_drop(filename)
[docs] def _on_video_drop(self, filename):
"""Initializes loading of a video file.
:param filename: Path to the file
:type filename: str or unicode
"""
wx.PostEvent(self.frame, ev.LoadVideo(filepath=filename))
[docs] def _on_subtitles_drop(self, filename):
"""Initializes loading of a subtitles file.
:param filename: Path to the file
:type filename: str or unicode
"""
wx.PostEvent(self.frame, ev.LoadSubtitles(filepath=filename))