mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-03-18 15:00:28 +00:00
78 lines
2.9 KiB
Python
Executable file
78 lines
2.9 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# -*- coding: iso-8859-1 -*-
|
|
# Copyright (C) 2008-2014 Bastian Kleineidam
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
"""
|
|
Check HTML pages for broken links. This is the GUI client.
|
|
"""
|
|
import sys
|
|
import signal
|
|
from linkcheck import configuration, drop_privileges, i18n
|
|
from linkcheck.loader import is_frozen
|
|
if is_frozen():
|
|
# Let Python find the C++ runtime DLLs for PyQt.
|
|
import os
|
|
from linkcheck import get_install_data
|
|
sys.path.append(os.path.join(get_install_data(), 'Microsoft.VC90.CRT'))
|
|
from PyQt4.QtGui import QApplication
|
|
from linkcheck.fileutil import is_readable
|
|
from linkcheck.gui import LinkCheckerMain, get_app_style
|
|
from linkcheck.gui.projects import ProjectExt
|
|
|
|
|
|
def excepthook (window, etype, evalue, tb):
|
|
"""Catch unhandled exceptions."""
|
|
from cStringIO import StringIO
|
|
from linkcheck.director.console import internal_error
|
|
out = i18n.get_encoded_writer(out=StringIO(), encoding="utf-8")
|
|
internal_error(out=out, etype=etype, evalue=evalue, tb=tb)
|
|
# signal main window to be thread-safe
|
|
window.error_signal.emit(out.getvalue())
|
|
|
|
|
|
def main (argv=None):
|
|
"""Initialize the Qt application, handle commandline arguments
|
|
and show the main window."""
|
|
if argv is None:
|
|
argv = sys.argv
|
|
app = QApplication(argv)
|
|
app.setApplicationName(configuration.AppName)
|
|
app.setApplicationVersion(configuration.Version)
|
|
app.setOrganizationName(configuration.Author)
|
|
QApplication.setStyle(get_app_style())
|
|
QApplication.setPalette(QApplication.style().standardPalette())
|
|
args = app.arguments()
|
|
mainkwargs = {}
|
|
if len(args) > 1:
|
|
fileorurl = unicode(args[1])
|
|
if is_readable(fileorurl) and fileorurl.lower().endswith(ProjectExt):
|
|
mainkwargs["project"] = fileorurl
|
|
else:
|
|
mainkwargs["url"] = fileorurl
|
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
|
# use local variable here to avoid garbage collection of the main
|
|
# window before app.exec_() finishes
|
|
window = LinkCheckerMain(**mainkwargs)
|
|
window.show()
|
|
window.raise_() # this will raise the window on Mac OS X
|
|
drop_privileges()
|
|
sys.excepthook = \
|
|
lambda etype, evalue, tb: excepthook(window, etype, evalue, tb)
|
|
sys.exit(app.exec_())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|