mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-05-28 15:48:16 +00:00
Add drag-n-drop support for project files.
This commit is contained in:
parent
1deeb88e16
commit
c3423b3d6a
2 changed files with 42 additions and 9 deletions
|
|
@ -35,7 +35,7 @@ from .urlmodel import UrlItemModel
|
|||
from .urlsave import urlsave
|
||||
from .settings import Settings
|
||||
from .recentdocs import RecentDocumentModel
|
||||
from .projects import openproject, saveproject, loadproject
|
||||
from .projects import openproject, saveproject, loadproject, ProjectExt
|
||||
from .. import configuration, checker, director, add_intern_pattern, \
|
||||
strformat, fileutil, LinkCheckerError, get_link_pat
|
||||
from ..containers import enum
|
||||
|
|
@ -118,6 +118,7 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.init_config()
|
||||
self.read_config()
|
||||
self.init_menu()
|
||||
self.init_drop()
|
||||
self.init_app(project)
|
||||
|
||||
def init_url (self, url):
|
||||
|
|
@ -134,6 +135,12 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
"""Add menu entries for bookmark file checking."""
|
||||
self.urlinput.addMenuEntries(self.menuEdit)
|
||||
|
||||
def init_drop(self):
|
||||
self.__class__.dragEnterEvent = self.handleDragEvent
|
||||
self.__class__.dragMoveEvent = self.handleDragEvent
|
||||
self.__class__.dropEvent = self.handleDropEvent
|
||||
self.setAcceptDrops(True)
|
||||
|
||||
def init_app (self, project):
|
||||
"""Set window size and position, GUI options and reset status."""
|
||||
data = self.settings.read_geometry()
|
||||
|
|
@ -145,14 +152,10 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.status = Status.idle
|
||||
self.actionSave.setEnabled(False)
|
||||
if project:
|
||||
try:
|
||||
msg = loadproject(project, self.config, self.options, self.urlinput)
|
||||
except StandardError, errmsg:
|
||||
args = dict(filename=project, err=errmsg)
|
||||
msg = _("Could not load project %(filename)s: %(err)s") % args
|
||||
loadproject(self, project)
|
||||
else:
|
||||
msg = self.config_error or _("Ready.")
|
||||
self.set_statusmsg(msg)
|
||||
self.set_statusmsg(msg)
|
||||
|
||||
def get_qhcpath (self):
|
||||
"""Helper function to search for the QHC help file in different
|
||||
|
|
@ -559,3 +562,22 @@ Version 2 or later.
|
|||
def internal_error (self, msg):
|
||||
"""Display internal error message. Triggered by sys.excepthook()."""
|
||||
QtGui.QMessageBox.warning(self, _(u"LinkChecker internal error"), msg)
|
||||
|
||||
def handleDragEvent(self, event):
|
||||
"""Handle drag enter of move event."""
|
||||
mime = event.mimeData()
|
||||
if not mime.hasUrls():
|
||||
return event.ignore()
|
||||
url = mime.urls()[0]
|
||||
if url.scheme() != 'file':
|
||||
return event.ignore()
|
||||
if not url.path().toLower().endsWith(ProjectExt):
|
||||
return event.ignore()
|
||||
event.accept()
|
||||
|
||||
def handleDropEvent(self, event):
|
||||
"""Handle drop event."""
|
||||
mime = event.mimeData()
|
||||
url = mime.urls()[0]
|
||||
filename = unicode(url.toLocalFile())
|
||||
loadproject(self, filename)
|
||||
|
|
|
|||
|
|
@ -185,10 +185,21 @@ def openproject_msg(parent):
|
|||
return loadproject(filename, parent.config, parent.options, parent.urlinput)
|
||||
|
||||
|
||||
def loadproject(filename, config, options, urlinput):
|
||||
def loadproject(parent, filename):
|
||||
"""Load a project file."""
|
||||
try:
|
||||
msg = loadproject_msg(parent, filename)
|
||||
except StandardError, errmsg:
|
||||
args = dict(filename=filename, err=errmsg)
|
||||
msg = _("Could not load project %(filename)s: %(err)s") % args
|
||||
parent.set_statusmsg(msg)
|
||||
|
||||
|
||||
def loadproject_msg(parent, filename):
|
||||
"""Load a project file. Returns message to display which indicates if
|
||||
file has been loaded successful."""
|
||||
parser = ProjectParser(config, options, urlinput)
|
||||
parser = ProjectParser(parent.config, parent.options, parent.urlinput)
|
||||
parser.read([filename])
|
||||
d = dict(filename=filename)
|
||||
return _("Project file %(filename)s loaded successfully.") % d
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue