mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-04-30 11:04:50 +00:00
Add project support.
This commit is contained in:
parent
b5852683ab
commit
1deeb88e16
10 changed files with 844 additions and 459 deletions
|
|
@ -15,7 +15,9 @@ Changes:
|
|||
is not installed.
|
||||
|
||||
Features:
|
||||
- gui: add Ctrl-L shortcut to highlight the URL input.
|
||||
- gui: Add Ctrl-L shortcut to highlight the URL input.
|
||||
- gui: Support loading and saving of project files.
|
||||
Closes: SF bug #3467492
|
||||
|
||||
|
||||
7.4 "Warrior" (released 07.01.2012)
|
||||
|
|
|
|||
|
|
@ -235,3 +235,21 @@ def get_temp_file (**kwargs):
|
|||
def is_tty (fp):
|
||||
"""Check if is a file object pointing to a TTY."""
|
||||
return (hasattr(fp, "isatty") and fp.isatty())
|
||||
|
||||
|
||||
def is_readable(filename):
|
||||
"""Check if file is a regular file and is readable."""
|
||||
return os.path.isfile(filename) and os.access(filename, os.R_OK)
|
||||
|
||||
|
||||
def is_writable(filename):
|
||||
"""Check if
|
||||
- the file is a regular file and is writable, or
|
||||
- the file does not exist and its parent directory exists and is
|
||||
writable
|
||||
"""
|
||||
if not os.path.exists(filename):
|
||||
parentdir = os.path.dirname(filename)
|
||||
return os.path.isdir(parentdir) and os.access(parentdir, os.W_OK)
|
||||
return os.path.isfile(filename) and os.access(filename, os.W_OK)
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +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 .. import configuration, checker, director, add_intern_pattern, \
|
||||
strformat, fileutil, LinkCheckerError, get_link_pat
|
||||
from ..containers import enum
|
||||
|
|
@ -86,7 +87,7 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
log_stats_signal = QtCore.pyqtSignal(object)
|
||||
error_signal = QtCore.pyqtSignal(str)
|
||||
|
||||
def __init__(self, parent=None, url=None):
|
||||
def __init__(self, parent=None, url=None, project=None):
|
||||
"""Initialize UI."""
|
||||
super(LinkCheckerMain, self).__init__(parent)
|
||||
self.setupUi(self)
|
||||
|
|
@ -117,7 +118,7 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.init_config()
|
||||
self.read_config()
|
||||
self.init_menu()
|
||||
self.init_app()
|
||||
self.init_app(project)
|
||||
|
||||
def init_url (self, url):
|
||||
"""Initialize URL input."""
|
||||
|
|
@ -133,7 +134,7 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
"""Add menu entries for bookmark file checking."""
|
||||
self.urlinput.addMenuEntries(self.menuEdit)
|
||||
|
||||
def init_app (self):
|
||||
def init_app (self, project):
|
||||
"""Set window size and position, GUI options and reset status."""
|
||||
data = self.settings.read_geometry()
|
||||
if data["size"] is not None:
|
||||
|
|
@ -143,7 +144,14 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.options.set_options(self.settings.read_options())
|
||||
self.status = Status.idle
|
||||
self.actionSave.setEnabled(False)
|
||||
msg = self.config_error or _("Ready.")
|
||||
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
|
||||
else:
|
||||
msg = self.config_error or _("Ready.")
|
||||
self.set_statusmsg(msg)
|
||||
|
||||
def get_qhcpath (self):
|
||||
|
|
@ -375,9 +383,19 @@ Version 2 or later.
|
|||
"""Display debug dialog."""
|
||||
self.debug.show()
|
||||
|
||||
@QtCore.pyqtSlot()
|
||||
def on_actionOpen_project_triggered (self):
|
||||
"""Open project."""
|
||||
openproject(self)
|
||||
|
||||
@QtCore.pyqtSlot()
|
||||
def on_actionSave_project_triggered (self):
|
||||
"""Save project."""
|
||||
saveproject(self, self.get_url())
|
||||
|
||||
@QtCore.pyqtSlot()
|
||||
def on_actionSave_triggered (self):
|
||||
"""Quit application."""
|
||||
"""Save URL results."""
|
||||
urlsave(self, self.config, self.model.urls)
|
||||
|
||||
@QtCore.pyqtSlot()
|
||||
|
|
@ -522,6 +540,7 @@ Version 2 or later.
|
|||
|
||||
def set_statusmsg (self, msg):
|
||||
"""Show given status message."""
|
||||
self.statusBar.showMessage(msg)
|
||||
if len(msg) > 30:
|
||||
self.label_status.setToolTip(msg)
|
||||
msg = msg[:27]+u"..."
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
# Form implementation generated from reading ui file 'ui/main.ui'
|
||||
#
|
||||
# Created: Sat Dec 17 12:37:55 2011
|
||||
# by: PyQt4 UI code generator 4.8.6
|
||||
# Created: Mon Jan 23 22:46:26 2012
|
||||
# by: PyQt4 UI code generator 4.9
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
|
|
@ -23,7 +23,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
|
||||
MainWindow.setSizePolicy(sizePolicy)
|
||||
MainWindow.setWindowTitle(_("LinkChecker"))
|
||||
icon = QtGui.QIcon()
|
||||
icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/app.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
MainWindow.setWindowIcon(icon)
|
||||
|
|
@ -36,7 +35,6 @@ class Ui_MainWindow(object):
|
|||
self.horizontalLayout_3 = QtGui.QHBoxLayout()
|
||||
self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
|
||||
self.label = QtGui.QLabel(self.centralwidget)
|
||||
self.label.setText(_("URL:"))
|
||||
self.label.setObjectName(_fromUtf8("label"))
|
||||
self.horizontalLayout_3.addWidget(self.label)
|
||||
spacerItem = QtGui.QSpacerItem(4, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
|
|
@ -53,9 +51,7 @@ class Ui_MainWindow(object):
|
|||
spacerItem1 = QtGui.QSpacerItem(10, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_3.addItem(spacerItem1)
|
||||
self.controlButton = QtGui.QPushButton(self.centralwidget)
|
||||
self.controlButton.setToolTip(_("Start checking the given URL."))
|
||||
self.controlButton.setStatusTip(_fromUtf8(""))
|
||||
self.controlButton.setText(QtGui.QApplication.translate("MainWindow", "Start", "Start checking URL", QtGui.QApplication.UnicodeUTF8))
|
||||
icon1 = QtGui.QIcon()
|
||||
icon1.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/start.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.controlButton.setIcon(icon1)
|
||||
|
|
@ -68,34 +64,27 @@ class Ui_MainWindow(object):
|
|||
self.horizontalLayout_4.setContentsMargins(0, 0, -1, -1)
|
||||
self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
|
||||
self.label_32 = QtGui.QLabel(self.centralwidget)
|
||||
self.label_32.setText(_("Active:"))
|
||||
self.label_32.setObjectName(_fromUtf8("label_32"))
|
||||
self.horizontalLayout_4.addWidget(self.label_32)
|
||||
self.label_active = QtGui.QLabel(self.centralwidget)
|
||||
self.label_active.setMinimumSize(QtCore.QSize(50, 0))
|
||||
self.label_active.setText(_("0"))
|
||||
self.label_active.setObjectName(_fromUtf8("label_active"))
|
||||
self.horizontalLayout_4.addWidget(self.label_active)
|
||||
self.label_30 = QtGui.QLabel(self.centralwidget)
|
||||
self.label_30.setText(_("Queued:"))
|
||||
self.label_30.setObjectName(_fromUtf8("label_30"))
|
||||
self.horizontalLayout_4.addWidget(self.label_30)
|
||||
self.label_queued = QtGui.QLabel(self.centralwidget)
|
||||
self.label_queued.setMinimumSize(QtCore.QSize(50, 0))
|
||||
self.label_queued.setText(_("0"))
|
||||
self.label_queued.setObjectName(_fromUtf8("label_queued"))
|
||||
self.horizontalLayout_4.addWidget(self.label_queued)
|
||||
self.label_28 = QtGui.QLabel(self.centralwidget)
|
||||
self.label_28.setText(_("Checked:"))
|
||||
self.label_28.setObjectName(_fromUtf8("label_28"))
|
||||
self.horizontalLayout_4.addWidget(self.label_28)
|
||||
self.label_checked = QtGui.QLabel(self.centralwidget)
|
||||
self.label_checked.setMinimumSize(QtCore.QSize(50, 0))
|
||||
self.label_checked.setText(_("0"))
|
||||
self.label_checked.setObjectName(_fromUtf8("label_checked"))
|
||||
self.horizontalLayout_4.addWidget(self.label_checked)
|
||||
self.label_15 = QtGui.QLabel(self.centralwidget)
|
||||
self.label_15.setText(_("Info:"))
|
||||
self.label_15.setObjectName(_fromUtf8("label_15"))
|
||||
self.horizontalLayout_4.addWidget(self.label_15)
|
||||
self.label_busy = QtGui.QLabel(self.centralwidget)
|
||||
|
|
@ -105,7 +94,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setHeightForWidth(self.label_busy.sizePolicy().hasHeightForWidth())
|
||||
self.label_busy.setSizePolicy(sizePolicy)
|
||||
self.label_busy.setMinimumSize(QtCore.QSize(16, 16))
|
||||
self.label_busy.setText(_("-"))
|
||||
self.label_busy.setObjectName(_fromUtf8("label_busy"))
|
||||
self.horizontalLayout_4.addWidget(self.label_busy)
|
||||
self.label_status = QtGui.QLabel(self.centralwidget)
|
||||
|
|
@ -139,7 +127,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.url_properties.sizePolicy().hasHeightForWidth())
|
||||
self.url_properties.setSizePolicy(sizePolicy)
|
||||
self.url_properties.setTitle(_("URL properties"))
|
||||
self.url_properties.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
|
||||
self.url_properties.setObjectName(_fromUtf8("url_properties"))
|
||||
self.horizontalLayout_2 = QtGui.QHBoxLayout(self.url_properties)
|
||||
|
|
@ -153,7 +140,6 @@ class Ui_MainWindow(object):
|
|||
self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow)
|
||||
self.formLayout.setObjectName(_fromUtf8("formLayout"))
|
||||
self.label_2 = QtGui.QLabel(self.frame)
|
||||
self.label_2.setText(_("URL"))
|
||||
self.label_2.setObjectName(_fromUtf8("label_2"))
|
||||
self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_2)
|
||||
self.prop_url = QtGui.QLabel(self.frame)
|
||||
|
|
@ -171,7 +157,6 @@ class Ui_MainWindow(object):
|
|||
self.prop_url.setObjectName(_fromUtf8("prop_url"))
|
||||
self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.prop_url)
|
||||
self.label_3 = QtGui.QLabel(self.frame)
|
||||
self.label_3.setText(_("Name"))
|
||||
self.label_3.setObjectName(_fromUtf8("label_3"))
|
||||
self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_3)
|
||||
self.prop_name = QtGui.QLabel(self.frame)
|
||||
|
|
@ -188,7 +173,6 @@ class Ui_MainWindow(object):
|
|||
self.prop_name.setObjectName(_fromUtf8("prop_name"))
|
||||
self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.prop_name)
|
||||
self.label_4 = QtGui.QLabel(self.frame)
|
||||
self.label_4.setText(_("Parent URL"))
|
||||
self.label_4.setObjectName(_fromUtf8("label_4"))
|
||||
self.formLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_4)
|
||||
self.prop_parenturl = QtGui.QLabel(self.frame)
|
||||
|
|
@ -206,7 +190,6 @@ class Ui_MainWindow(object):
|
|||
self.prop_parenturl.setObjectName(_fromUtf8("prop_parenturl"))
|
||||
self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.prop_parenturl)
|
||||
self.label_5 = QtGui.QLabel(self.frame)
|
||||
self.label_5.setText(_("Base"))
|
||||
self.label_5.setObjectName(_fromUtf8("label_5"))
|
||||
self.formLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_5)
|
||||
self.prop_base = QtGui.QLabel(self.frame)
|
||||
|
|
@ -224,7 +207,6 @@ class Ui_MainWindow(object):
|
|||
self.prop_base.setObjectName(_fromUtf8("prop_base"))
|
||||
self.formLayout.setWidget(3, QtGui.QFormLayout.FieldRole, self.prop_base)
|
||||
self.label_7 = QtGui.QLabel(self.frame)
|
||||
self.label_7.setText(_("Check time"))
|
||||
self.label_7.setObjectName(_fromUtf8("label_7"))
|
||||
self.formLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.label_7)
|
||||
self.prop_checktime = QtGui.QLabel(self.frame)
|
||||
|
|
@ -241,7 +223,6 @@ class Ui_MainWindow(object):
|
|||
self.prop_checktime.setObjectName(_fromUtf8("prop_checktime"))
|
||||
self.formLayout.setWidget(4, QtGui.QFormLayout.FieldRole, self.prop_checktime)
|
||||
self.label_8 = QtGui.QLabel(self.frame)
|
||||
self.label_8.setText(_("D/L time"))
|
||||
self.label_8.setObjectName(_fromUtf8("label_8"))
|
||||
self.formLayout.setWidget(5, QtGui.QFormLayout.LabelRole, self.label_8)
|
||||
self.prop_dltime = QtGui.QLabel(self.frame)
|
||||
|
|
@ -258,7 +239,6 @@ class Ui_MainWindow(object):
|
|||
self.prop_dltime.setObjectName(_fromUtf8("prop_dltime"))
|
||||
self.formLayout.setWidget(5, QtGui.QFormLayout.FieldRole, self.prop_dltime)
|
||||
self.label_9 = QtGui.QLabel(self.frame)
|
||||
self.label_9.setText(_("Size"))
|
||||
self.label_9.setObjectName(_fromUtf8("label_9"))
|
||||
self.formLayout.setWidget(6, QtGui.QFormLayout.LabelRole, self.label_9)
|
||||
self.prop_size = QtGui.QLabel(self.frame)
|
||||
|
|
@ -275,7 +255,6 @@ class Ui_MainWindow(object):
|
|||
self.prop_size.setObjectName(_fromUtf8("prop_size"))
|
||||
self.formLayout.setWidget(6, QtGui.QFormLayout.FieldRole, self.prop_size)
|
||||
self.label_10 = QtGui.QLabel(self.frame)
|
||||
self.label_10.setText(_("Info"))
|
||||
self.label_10.setObjectName(_fromUtf8("label_10"))
|
||||
self.formLayout.setWidget(7, QtGui.QFormLayout.LabelRole, self.label_10)
|
||||
self.prop_info = QtGui.QLabel(self.frame)
|
||||
|
|
@ -293,7 +272,6 @@ class Ui_MainWindow(object):
|
|||
self.prop_info.setObjectName(_fromUtf8("prop_info"))
|
||||
self.formLayout.setWidget(7, QtGui.QFormLayout.FieldRole, self.prop_info)
|
||||
self.label_11 = QtGui.QLabel(self.frame)
|
||||
self.label_11.setText(_("Warning"))
|
||||
self.label_11.setObjectName(_fromUtf8("label_11"))
|
||||
self.formLayout.setWidget(8, QtGui.QFormLayout.LabelRole, self.label_11)
|
||||
self.prop_warning = QtGui.QLabel(self.frame)
|
||||
|
|
@ -312,7 +290,6 @@ class Ui_MainWindow(object):
|
|||
self.prop_warning.setObjectName(_fromUtf8("prop_warning"))
|
||||
self.formLayout.setWidget(8, QtGui.QFormLayout.FieldRole, self.prop_warning)
|
||||
self.label_12 = QtGui.QLabel(self.frame)
|
||||
self.label_12.setText(_("Result"))
|
||||
self.label_12.setObjectName(_fromUtf8("label_12"))
|
||||
self.formLayout.setWidget(9, QtGui.QFormLayout.LabelRole, self.label_12)
|
||||
self.prop_result = QtGui.QLabel(self.frame)
|
||||
|
|
@ -350,7 +327,6 @@ class Ui_MainWindow(object):
|
|||
font.setBold(True)
|
||||
font.setWeight(75)
|
||||
self.groupBox.setFont(font)
|
||||
self.groupBox.setTitle(_("Check results"))
|
||||
self.groupBox.setObjectName(_fromUtf8("groupBox"))
|
||||
self.gridLayout = QtGui.QGridLayout(self.groupBox)
|
||||
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
|
||||
|
|
@ -360,7 +336,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_24.sizePolicy().hasHeightForWidth())
|
||||
self.label_24.setSizePolicy(sizePolicy)
|
||||
self.label_24.setText(_("Valid URLs"))
|
||||
self.label_24.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_24.setObjectName(_fromUtf8("label_24"))
|
||||
self.gridLayout.addWidget(self.label_24, 0, 0, 1, 1)
|
||||
|
|
@ -384,7 +359,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_26.sizePolicy().hasHeightForWidth())
|
||||
self.label_26.setSizePolicy(sizePolicy)
|
||||
self.label_26.setText(_("Warnings"))
|
||||
self.label_26.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_26.setObjectName(_fromUtf8("label_26"))
|
||||
self.gridLayout.addWidget(self.label_26, 0, 2, 1, 1)
|
||||
|
|
@ -408,7 +382,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_25.sizePolicy().hasHeightForWidth())
|
||||
self.label_25.setSizePolicy(sizePolicy)
|
||||
self.label_25.setText(_("Invalid URLs"))
|
||||
self.label_25.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_25.setObjectName(_fromUtf8("label_25"))
|
||||
self.gridLayout.addWidget(self.label_25, 1, 0, 1, 1)
|
||||
|
|
@ -433,7 +406,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth())
|
||||
self.groupBox_3.setSizePolicy(sizePolicy)
|
||||
self.groupBox_3.setTitle(_("Content type statistics"))
|
||||
self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
|
||||
self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_3)
|
||||
self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
|
||||
|
|
@ -443,7 +415,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth())
|
||||
self.label_6.setSizePolicy(sizePolicy)
|
||||
self.label_6.setText(_("Image"))
|
||||
self.label_6.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_6.setObjectName(_fromUtf8("label_6"))
|
||||
self.gridLayout_2.addWidget(self.label_6, 0, 0, 1, 1)
|
||||
|
|
@ -467,7 +438,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_13.sizePolicy().hasHeightForWidth())
|
||||
self.label_13.setSizePolicy(sizePolicy)
|
||||
self.label_13.setText(_("Text"))
|
||||
self.label_13.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_13.setObjectName(_fromUtf8("label_13"))
|
||||
self.gridLayout_2.addWidget(self.label_13, 0, 2, 1, 1)
|
||||
|
|
@ -491,7 +461,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_27.sizePolicy().hasHeightForWidth())
|
||||
self.label_27.setSizePolicy(sizePolicy)
|
||||
self.label_27.setText(_("Application"))
|
||||
self.label_27.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_27.setObjectName(_fromUtf8("label_27"))
|
||||
self.gridLayout_2.addWidget(self.label_27, 0, 4, 1, 1)
|
||||
|
|
@ -515,7 +484,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_17.sizePolicy().hasHeightForWidth())
|
||||
self.label_17.setSizePolicy(sizePolicy)
|
||||
self.label_17.setText(_("Audio"))
|
||||
self.label_17.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_17.setObjectName(_fromUtf8("label_17"))
|
||||
self.gridLayout_2.addWidget(self.label_17, 1, 0, 1, 1)
|
||||
|
|
@ -539,7 +507,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_21.sizePolicy().hasHeightForWidth())
|
||||
self.label_21.setSizePolicy(sizePolicy)
|
||||
self.label_21.setText(_("Video"))
|
||||
self.label_21.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_21.setObjectName(_fromUtf8("label_21"))
|
||||
self.gridLayout_2.addWidget(self.label_21, 1, 2, 1, 1)
|
||||
|
|
@ -577,7 +544,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_23.sizePolicy().hasHeightForWidth())
|
||||
self.label_23.setSizePolicy(sizePolicy)
|
||||
self.label_23.setText(_("Other"))
|
||||
self.label_23.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_23.setObjectName(_fromUtf8("label_23"))
|
||||
self.gridLayout_2.addWidget(self.label_23, 2, 4, 1, 1)
|
||||
|
|
@ -601,7 +567,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_22.sizePolicy().hasHeightForWidth())
|
||||
self.label_22.setSizePolicy(sizePolicy)
|
||||
self.label_22.setText(_("Mail"))
|
||||
self.label_22.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_22.setObjectName(_fromUtf8("label_22"))
|
||||
self.gridLayout_2.addWidget(self.label_22, 1, 4, 1, 1)
|
||||
|
|
@ -612,7 +577,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth())
|
||||
self.groupBox_2.setSizePolicy(sizePolicy)
|
||||
self.groupBox_2.setTitle(_("URL statistics"))
|
||||
self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
|
||||
self.gridLayout_3 = QtGui.QGridLayout(self.groupBox_2)
|
||||
self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
|
||||
|
|
@ -622,7 +586,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_18.sizePolicy().hasHeightForWidth())
|
||||
self.label_18.setSizePolicy(sizePolicy)
|
||||
self.label_18.setText(_("Min. length"))
|
||||
self.label_18.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_18.setObjectName(_fromUtf8("label_18"))
|
||||
self.gridLayout_3.addWidget(self.label_18, 0, 0, 1, 1)
|
||||
|
|
@ -646,7 +609,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_20.sizePolicy().hasHeightForWidth())
|
||||
self.label_20.setSizePolicy(sizePolicy)
|
||||
self.label_20.setText(_("Avg. length"))
|
||||
self.label_20.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_20.setObjectName(_fromUtf8("label_20"))
|
||||
self.gridLayout_3.addWidget(self.label_20, 0, 2, 1, 1)
|
||||
|
|
@ -670,7 +632,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_19.sizePolicy().hasHeightForWidth())
|
||||
self.label_19.setSizePolicy(sizePolicy)
|
||||
self.label_19.setText(_("Max. length"))
|
||||
self.label_19.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_19.setObjectName(_fromUtf8("label_19"))
|
||||
self.gridLayout_3.addWidget(self.label_19, 1, 0, 1, 1)
|
||||
|
|
@ -694,7 +655,6 @@ class Ui_MainWindow(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.label_14.sizePolicy().hasHeightForWidth())
|
||||
self.label_14.setSizePolicy(sizePolicy)
|
||||
self.label_14.setText(_("Domains"))
|
||||
self.label_14.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_14.setObjectName(_fromUtf8("label_14"))
|
||||
self.gridLayout_3.addWidget(self.label_14, 1, 2, 1, 1)
|
||||
|
|
@ -720,13 +680,10 @@ class Ui_MainWindow(object):
|
|||
self.menubar.setGeometry(QtCore.QRect(0, 0, 782, 20))
|
||||
self.menubar.setObjectName(_fromUtf8("menubar"))
|
||||
self.menuEdit = QtGui.QMenu(self.menubar)
|
||||
self.menuEdit.setTitle(_("&Edit"))
|
||||
self.menuEdit.setObjectName(_fromUtf8("menuEdit"))
|
||||
self.menuFile = QtGui.QMenu(self.menubar)
|
||||
self.menuFile.setTitle(_("&File"))
|
||||
self.menuFile.setObjectName(_fromUtf8("menuFile"))
|
||||
self.menuHelp = QtGui.QMenu(self.menubar)
|
||||
self.menuHelp.setTitle(_("&Help"))
|
||||
self.menuHelp.setObjectName(_fromUtf8("menuHelp"))
|
||||
MainWindow.setMenuBar(self.menubar)
|
||||
self.statusBar = QtGui.QStatusBar(MainWindow)
|
||||
|
|
@ -736,76 +693,58 @@ class Ui_MainWindow(object):
|
|||
icon2 = QtGui.QIcon()
|
||||
icon2.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/about.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.actionAbout.setIcon(icon2)
|
||||
self.actionAbout.setText(_("A&bout"))
|
||||
self.actionAbout.setIconText(_("About"))
|
||||
self.actionAbout.setObjectName(_fromUtf8("actionAbout"))
|
||||
self.actionHelp = QtGui.QAction(MainWindow)
|
||||
icon3 = QtGui.QIcon()
|
||||
icon3.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/help.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.actionHelp.setIcon(icon3)
|
||||
self.actionHelp.setText(_("&Help"))
|
||||
self.actionHelp.setIconText(_("Help"))
|
||||
self.actionHelp.setObjectName(_fromUtf8("actionHelp"))
|
||||
self.actionViewOnline = QtGui.QAction(MainWindow)
|
||||
icon4 = QtGui.QIcon()
|
||||
icon4.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/online.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.actionViewOnline.setIcon(icon4)
|
||||
self.actionViewOnline.setText(_("View online"))
|
||||
self.actionViewOnline.setToolTip(_("View URL online"))
|
||||
self.actionViewOnline.setObjectName(_fromUtf8("actionViewOnline"))
|
||||
self.actionOptions = QtGui.QAction(MainWindow)
|
||||
icon5 = QtGui.QIcon()
|
||||
icon5.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/preferences.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.actionOptions.setIcon(icon5)
|
||||
self.actionOptions.setText(_("&Options"))
|
||||
self.actionOptions.setIconText(_("Options"))
|
||||
self.actionOptions.setObjectName(_fromUtf8("actionOptions"))
|
||||
self.actionCopyToClipboard = QtGui.QAction(MainWindow)
|
||||
icon6 = QtGui.QIcon()
|
||||
icon6.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/copy.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.actionCopyToClipboard.setIcon(icon6)
|
||||
self.actionCopyToClipboard.setText(_("Copy to clipboard"))
|
||||
self.actionCopyToClipboard.setToolTip(_("Copy URL to clipboard"))
|
||||
self.actionCopyToClipboard.setShortcut(_("Ctrl+C"))
|
||||
self.actionCopyToClipboard.setObjectName(_fromUtf8("actionCopyToClipboard"))
|
||||
self.actionViewParentOnline = QtGui.QAction(MainWindow)
|
||||
self.actionViewParentOnline.setIcon(icon4)
|
||||
self.actionViewParentOnline.setText(_("View parent online"))
|
||||
self.actionViewParentOnline.setToolTip(_("View parent URL online"))
|
||||
self.actionViewParentOnline.setObjectName(_fromUtf8("actionViewParentOnline"))
|
||||
self.actionViewParentSource = QtGui.QAction(MainWindow)
|
||||
self.actionViewParentSource.setIcon(icon4)
|
||||
self.actionViewParentSource.setText(_("View parent source"))
|
||||
self.actionViewParentSource.setToolTip(_("View parent URL source"))
|
||||
self.actionViewParentSource.setObjectName(_fromUtf8("actionViewParentSource"))
|
||||
self.actionDebug = QtGui.QAction(MainWindow)
|
||||
self.actionDebug.setText(_("Show debug"))
|
||||
self.actionDebug.setObjectName(_fromUtf8("actionDebug"))
|
||||
self.actionViewProperties = QtGui.QAction(MainWindow)
|
||||
self.actionViewProperties.setText(_("View properties"))
|
||||
self.actionViewProperties.setToolTip(_("View URL properties"))
|
||||
self.actionViewProperties.setObjectName(_fromUtf8("actionViewProperties"))
|
||||
self.actionSave = QtGui.QAction(MainWindow)
|
||||
icon7 = QtGui.QIcon()
|
||||
icon7.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/save.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.actionSave.setIcon(icon7)
|
||||
self.actionSave.setText(_("&Save results..."))
|
||||
self.actionSave.setShortcut(_("Ctrl+S"))
|
||||
self.actionSave.setObjectName(_fromUtf8("actionSave"))
|
||||
self.actionQuit = QtGui.QAction(MainWindow)
|
||||
icon8 = QtGui.QIcon()
|
||||
icon8.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/exit.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.actionQuit.setIcon(icon8)
|
||||
self.actionQuit.setText(_("&Quit"))
|
||||
self.actionQuit.setShortcut(_("Ctrl+Q"))
|
||||
self.actionQuit.setObjectName(_fromUtf8("actionQuit"))
|
||||
self.actionCheckUpdates = QtGui.QAction(MainWindow)
|
||||
self.actionCheckUpdates.setText(_("Check for updates"))
|
||||
self.actionCheckUpdates.setObjectName(_fromUtf8("actionCheckUpdates"))
|
||||
self.actionDonate = QtGui.QAction(MainWindow)
|
||||
self.actionDonate.setText(_("Donate"))
|
||||
self.actionDonate.setObjectName(_fromUtf8("actionDonate"))
|
||||
self.actionOpen_project = QtGui.QAction(MainWindow)
|
||||
self.actionOpen_project.setObjectName(_fromUtf8("actionOpen_project"))
|
||||
self.actionSave_project = QtGui.QAction(MainWindow)
|
||||
self.actionSave_project.setObjectName(_fromUtf8("actionSave_project"))
|
||||
self.menuEdit.addAction(self.actionOptions)
|
||||
self.menuFile.addAction(self.actionOpen_project)
|
||||
self.menuFile.addAction(self.actionSave_project)
|
||||
self.menuFile.addAction(self.actionSave)
|
||||
self.menuFile.addAction(self.actionQuit)
|
||||
self.menuHelp.addAction(self.actionAbout)
|
||||
|
|
@ -822,7 +761,77 @@ class Ui_MainWindow(object):
|
|||
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
||||
|
||||
def retranslateUi(self, MainWindow):
|
||||
pass
|
||||
MainWindow.setWindowTitle(_("LinkChecker"))
|
||||
self.label.setText(_("URL:"))
|
||||
self.controlButton.setToolTip(_("Start checking the given URL."))
|
||||
self.controlButton.setText(QtGui.QApplication.translate("MainWindow", "Start", "Start checking URL", QtGui.QApplication.UnicodeUTF8))
|
||||
self.label_32.setText(_("Active:"))
|
||||
self.label_active.setText(_("0"))
|
||||
self.label_30.setText(_("Queued:"))
|
||||
self.label_queued.setText(_("0"))
|
||||
self.label_28.setText(_("Checked:"))
|
||||
self.label_checked.setText(_("0"))
|
||||
self.label_15.setText(_("Info:"))
|
||||
self.label_busy.setText(_("-"))
|
||||
self.url_properties.setTitle(_("URL properties"))
|
||||
self.label_2.setText(_("URL"))
|
||||
self.label_3.setText(_("Name"))
|
||||
self.label_4.setText(_("Parent URL"))
|
||||
self.label_5.setText(_("Base"))
|
||||
self.label_7.setText(_("Check time"))
|
||||
self.label_8.setText(_("D/L time"))
|
||||
self.label_9.setText(_("Size"))
|
||||
self.label_10.setText(_("Info"))
|
||||
self.label_11.setText(_("Warning"))
|
||||
self.label_12.setText(_("Result"))
|
||||
self.groupBox.setTitle(_("Check results"))
|
||||
self.label_24.setText(_("Valid URLs"))
|
||||
self.label_26.setText(_("Warnings"))
|
||||
self.label_25.setText(_("Invalid URLs"))
|
||||
self.groupBox_3.setTitle(_("Content type statistics"))
|
||||
self.label_6.setText(_("Image"))
|
||||
self.label_13.setText(_("Text"))
|
||||
self.label_27.setText(_("Application"))
|
||||
self.label_17.setText(_("Audio"))
|
||||
self.label_21.setText(_("Video"))
|
||||
self.label_23.setText(_("Other"))
|
||||
self.label_22.setText(_("Mail"))
|
||||
self.groupBox_2.setTitle(_("URL statistics"))
|
||||
self.label_18.setText(_("Min. length"))
|
||||
self.label_20.setText(_("Avg. length"))
|
||||
self.label_19.setText(_("Max. length"))
|
||||
self.label_14.setText(_("Domains"))
|
||||
self.menuEdit.setTitle(_("&Edit"))
|
||||
self.menuFile.setTitle(_("&File"))
|
||||
self.menuHelp.setTitle(_("&Help"))
|
||||
self.actionAbout.setText(_("A&bout"))
|
||||
self.actionAbout.setIconText(_("About"))
|
||||
self.actionHelp.setText(_("&Help"))
|
||||
self.actionHelp.setIconText(_("Help"))
|
||||
self.actionViewOnline.setText(_("View online"))
|
||||
self.actionViewOnline.setToolTip(_("View URL online"))
|
||||
self.actionOptions.setText(_("&Options"))
|
||||
self.actionOptions.setIconText(_("Options"))
|
||||
self.actionCopyToClipboard.setText(_("Copy to clipboard"))
|
||||
self.actionCopyToClipboard.setToolTip(_("Copy URL to clipboard"))
|
||||
self.actionCopyToClipboard.setShortcut(_("Ctrl+C"))
|
||||
self.actionViewParentOnline.setText(_("View parent online"))
|
||||
self.actionViewParentOnline.setToolTip(_("View parent URL online"))
|
||||
self.actionViewParentSource.setText(_("View parent source"))
|
||||
self.actionViewParentSource.setToolTip(_("View parent URL source"))
|
||||
self.actionDebug.setText(_("Show debug"))
|
||||
self.actionViewProperties.setText(_("View properties"))
|
||||
self.actionViewProperties.setToolTip(_("View URL properties"))
|
||||
self.actionSave.setText(_("Save &results..."))
|
||||
self.actionQuit.setText(_("&Quit"))
|
||||
self.actionQuit.setShortcut(_("Ctrl+Q"))
|
||||
self.actionCheckUpdates.setText(_("Check for updates"))
|
||||
self.actionDonate.setText(_("Donate"))
|
||||
self.actionOpen_project.setText(_("&Open project..."))
|
||||
self.actionOpen_project.setIconText(_("Open project"))
|
||||
self.actionOpen_project.setShortcut(_("Ctrl+O"))
|
||||
self.actionSave_project.setText(_("&Save project..."))
|
||||
self.actionSave_project.setShortcut(_("Ctrl+S"))
|
||||
|
||||
from lineedit import LineEdit
|
||||
import linkchecker_rc
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import os
|
|||
from PyQt4 import QtGui
|
||||
from .linkchecker_ui_options import Ui_Options
|
||||
from .editor import EditorWindow
|
||||
from ..fileutil import is_writable
|
||||
from .. import configuration
|
||||
|
||||
|
||||
|
|
@ -50,7 +51,7 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
|
|||
|
||||
def reset_config_options (self):
|
||||
"""Reset configuration file edit buttons."""
|
||||
self.user_config_writable = os.access(self.user_config, os.W_OK)
|
||||
self.user_config_writable = is_writable(self.user_config)
|
||||
set_edit_button(self.user_config, self.user_config_button,
|
||||
self.user_config_writable)
|
||||
|
||||
|
|
@ -71,15 +72,15 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
|
|||
|
||||
def set_options (self, data):
|
||||
"""Set GUI options from given data."""
|
||||
if data["debug"] is not None:
|
||||
if data.get("debug") is not None:
|
||||
self.debug.setChecked(data["debug"])
|
||||
if data["verbose"] is not None:
|
||||
if data.get("verbose") is not None:
|
||||
self.verbose.setChecked(data["verbose"])
|
||||
if data["recursionlevel"] is not None:
|
||||
if data.get("recursionlevel") is not None:
|
||||
self.recursionlevel.setValue(data["recursionlevel"])
|
||||
if data["warninglines"] is not None:
|
||||
if data.get("warninglines") is not None:
|
||||
self.warninglines.setPlainText(data["warninglines"])
|
||||
if data["ignorelines"] is not None:
|
||||
if data.get("ignorelines") is not None:
|
||||
self.ignorelines.setPlainText(data["ignorelines"])
|
||||
|
||||
|
||||
|
|
|
|||
194
linkcheck/gui/projects.py
Normal file
194
linkcheck/gui/projects.py
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
# Copyright (C) 2012 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.
|
||||
import re
|
||||
import os
|
||||
import shutil
|
||||
from PyQt4 import QtGui
|
||||
from ..configuration import get_user_config, confparse
|
||||
from ..url import url_split
|
||||
from ..fileutil import is_readable, is_writable
|
||||
|
||||
ProjectExt = ".lcp"
|
||||
ProjectFilter = _("LinkChecker project (*%(ext)s)") % dict(ext=ProjectExt)
|
||||
|
||||
|
||||
class ProjectParser (confparse.LCConfigParser):
|
||||
|
||||
def __init__ (self, config, gui_options, urlinput):
|
||||
super(ProjectParser, self).__init__(config)
|
||||
# has set_options(data) function
|
||||
self.gui_options = gui_options
|
||||
# has setText(url) function
|
||||
self.urlinput = urlinput
|
||||
|
||||
def read (self, files):
|
||||
super(ProjectParser, self).read(files)
|
||||
self.read_project_config()
|
||||
self.read_gui_config()
|
||||
|
||||
def read_project_config(self):
|
||||
section = "project"
|
||||
if not self.has_section(section):
|
||||
return
|
||||
option = "url"
|
||||
if self.has_option(section, option):
|
||||
url = self.get(section, option)
|
||||
self.urlinput.setText(url)
|
||||
else:
|
||||
self.urlinput.setText(u"")
|
||||
|
||||
def read_gui_config(self):
|
||||
section = "gui"
|
||||
if not self.has_section(section):
|
||||
return
|
||||
data = {}
|
||||
option = "debug"
|
||||
if self.has_option(section, option):
|
||||
data[option] = self.getboolean(section, option)
|
||||
option = "verbose"
|
||||
if self.has_option(section, option):
|
||||
data[option] = self.getboolean(section, option)
|
||||
option = "recursionlevel"
|
||||
if self.has_option(section, option):
|
||||
data[option] = self.getint(section, option)
|
||||
option = "warninglines"
|
||||
if self.has_option(section, option):
|
||||
data[option] = self.get(section, option)
|
||||
option = "ignorelines"
|
||||
if self.has_option(section, option):
|
||||
data[option] = self.get(section, option)
|
||||
self.gui_options.set_options(data)
|
||||
|
||||
def write (self, fp):
|
||||
"""Write project configuration to given file object."""
|
||||
self.write_project_config()
|
||||
self.write_gui_config()
|
||||
super(ProjectParser, self).write(fp)
|
||||
|
||||
def write_project_config(self):
|
||||
"""Write project section configuration."""
|
||||
section = "project"
|
||||
self.add_section(section)
|
||||
self.set(section, "url", self.urlinput.text())
|
||||
|
||||
def write_gui_config(self):
|
||||
"""Write gui section configuration."""
|
||||
section = "gui"
|
||||
self.add_section(section)
|
||||
for key, value in self.gui_options.get_options().items():
|
||||
self.set(section, key, value)
|
||||
|
||||
|
||||
def url_to_filename(url, extension):
|
||||
value = unicode(url)
|
||||
# filter host and document
|
||||
parts = url_split(url)
|
||||
value = parts[1]+parts[3]
|
||||
# normalize
|
||||
import unicodedata
|
||||
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
|
||||
# replace non-alpha characters and convert to lowercase
|
||||
value = re.sub('[^\w-]+', '_', value).strip().lower()
|
||||
# add extension
|
||||
return value + extension
|
||||
|
||||
|
||||
def saveproject(parent, url):
|
||||
"""Save a project file."""
|
||||
try:
|
||||
msg = saveproject_msg(parent, url)
|
||||
except StandardError, errmsg:
|
||||
msg = str(errmsg)
|
||||
parent.set_statusmsg(msg)
|
||||
|
||||
def saveproject_msg(parent, url):
|
||||
"""Save a project file and return status message."""
|
||||
title = _("Save LinkChecker project")
|
||||
func = QtGui.QFileDialog.getSaveFileName
|
||||
suggestedname = url_to_filename(url, ProjectExt)
|
||||
res = func(parent, title, suggestedname, ProjectFilter)
|
||||
if not res:
|
||||
# user canceled
|
||||
return _("Canceled saving a project file.")
|
||||
filename = unicode(res)
|
||||
d = dict(filename=filename)
|
||||
if not is_writable(filename):
|
||||
return _("Could not write project file %(filename)s.") % d
|
||||
user_config = get_user_config()
|
||||
if is_readable(user_config):
|
||||
# Copy user config to filename since this is the current
|
||||
# configuration.
|
||||
# This way it is not necessary to write the parent.config
|
||||
# dictionary back to a file.
|
||||
shutil.copy(user_config, filename)
|
||||
filter_comments = True
|
||||
else:
|
||||
# use default config (ie. do not write anything)
|
||||
filter_comments = False
|
||||
write_header(filename, filter_comments)
|
||||
parser = ProjectParser(parent.config, parent.options, parent.urlinput)
|
||||
with open(filename, 'a') as fp:
|
||||
parser.write(fp)
|
||||
return _("Project file %(filename)s saved successfully.") % d
|
||||
|
||||
|
||||
def write_header(filename, filter_comments):
|
||||
"""Write header and filter comment lines if file already exists."""
|
||||
lines = [
|
||||
'# This is a generated LinkChecker project file. Do not edit'+os.linesep,
|
||||
]
|
||||
if filter_comments:
|
||||
with open(filename, 'r') as fp:
|
||||
for line in fp:
|
||||
if not line.lstrip().startswith((';', '#')):
|
||||
lines.append(line)
|
||||
with open(filename, 'w') as fp:
|
||||
for line in lines:
|
||||
fp.write(line)
|
||||
|
||||
|
||||
def openproject (parent):
|
||||
"""Select and load a project file."""
|
||||
try:
|
||||
msg = openproject_msg(parent)
|
||||
except StandardError, errmsg:
|
||||
msg = str(errmsg)
|
||||
parent.set_statusmsg(msg)
|
||||
|
||||
|
||||
def openproject_msg(parent):
|
||||
"""Select and load a project file. Returns message to display
|
||||
which indicates if file has been loaded successful."""
|
||||
title = _("Open LinkChecker project")
|
||||
func = QtGui.QFileDialog.getOpenFileName
|
||||
directory = ""
|
||||
filename = func(parent, title, directory, ProjectFilter)
|
||||
if not filename:
|
||||
# user canceled
|
||||
return _("Canceled opening a project file.")
|
||||
if not is_readable(filename):
|
||||
return _("Could not read project file %(filename)s.") % dict(filename=filename)
|
||||
return loadproject(filename, parent.config, parent.options, parent.urlinput)
|
||||
|
||||
|
||||
def loadproject(filename, config, options, urlinput):
|
||||
"""Load a project file. Returns message to display which indicates if
|
||||
file has been loaded successful."""
|
||||
parser = ProjectParser(config, options, urlinput)
|
||||
parser.read([filename])
|
||||
d = dict(filename=filename)
|
||||
return _("Project file %(filename)s loaded successfully.") % d
|
||||
|
|
@ -1403,6 +1403,8 @@
|
|||
<property name="title">
|
||||
<string>&File</string>
|
||||
</property>
|
||||
<addaction name="actionOpen_project"/>
|
||||
<addaction name="actionSave_project"/>
|
||||
<addaction name="actionSave"/>
|
||||
<addaction name="actionQuit"/>
|
||||
</widget>
|
||||
|
|
@ -1527,10 +1529,7 @@
|
|||
<normaloff>:/icons/save.png</normaloff>:/icons/save.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Save results...</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Ctrl+S</string>
|
||||
<string>Save &results...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionQuit">
|
||||
|
|
@ -1555,6 +1554,25 @@
|
|||
<string>Donate</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionOpen_project">
|
||||
<property name="text">
|
||||
<string>&Open project...</string>
|
||||
</property>
|
||||
<property name="iconText">
|
||||
<string>Open project</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Ctrl+O</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionSave_project">
|
||||
<property name="text">
|
||||
<string>&Save project...</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Ctrl+S</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
|
|
|
|||
|
|
@ -27,7 +27,9 @@ if main_is_frozen():
|
|||
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):
|
||||
|
|
@ -52,14 +54,17 @@ def main (argv=None):
|
|||
QApplication.setStyle(get_app_style())
|
||||
QApplication.setPalette(QApplication.style().standardPalette())
|
||||
args = app.arguments()
|
||||
mainkwargs = {}
|
||||
if len(args) > 1:
|
||||
url = args[1]
|
||||
else:
|
||||
url = u""
|
||||
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(url=url)
|
||||
window = LinkCheckerMain(**mainkwargs)
|
||||
window.show()
|
||||
window.raise_() # this will raise the window on Mac OS X
|
||||
drop_privileges()
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: calvin@users.sourceforge.net\n"
|
||||
"POT-Creation-Date: 2012-01-21 00:22+0100\n"
|
||||
"POT-Creation-Date: 2012-01-26 20:18+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
@ -80,7 +80,7 @@ msgstr ""
|
|||
msgid "System info:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/director/console.py:129 ../linkchecker:571
|
||||
#: ../linkcheck/director/console.py:129 ../linkchecker:575
|
||||
#, python-format
|
||||
msgid "Python %(version)s on %(platform)s"
|
||||
msgstr ""
|
||||
|
|
@ -155,54 +155,43 @@ msgstr ""
|
|||
msgid "invalid login URL `%s'. Only HTTP and HTTPS URLs are supported."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:303
|
||||
#: ../linkcheck/configuration/__init__.py:287
|
||||
msgid "missing user or URL pattern in authentication data."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:353
|
||||
#: ../linkcheck/configuration/__init__.py:333
|
||||
msgid "activating text logger output."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:361
|
||||
#: ../linkcheck/checker/urlbase.py:786
|
||||
msgid "tidy module is not available; download from http://utidylib.berlios.de/"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:369
|
||||
#: ../linkcheck/checker/urlbase.py:813
|
||||
msgid ""
|
||||
"cssutils module is not available; download from http://cthedot.de/cssutils/"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:379
|
||||
#: ../linkcheck/configuration/__init__.py:343
|
||||
msgid "Clamav could not be initialized"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:385
|
||||
#: ../linkcheck/configuration/__init__.py:349
|
||||
msgid "activating sendcookies because storecookies is active."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:395
|
||||
#: ../linkcheck/configuration/__init__.py:359
|
||||
msgid "no CGI password fieldname given for login URL."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:399
|
||||
#: ../linkcheck/configuration/__init__.py:363
|
||||
msgid "no CGI user fieldname given for login URL."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:403
|
||||
#: ../linkcheck/configuration/__init__.py:367
|
||||
msgid "no user/password authentication data found for login URL."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:406
|
||||
#: ../linkcheck/configuration/__init__.py:370
|
||||
msgid "login URL is not a HTTP URL."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:410
|
||||
#: ../linkcheck/configuration/__init__.py:374
|
||||
msgid "login URL is incomplete."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:414
|
||||
#: ../linkcheck/configuration/__init__.py:378
|
||||
#, python-format
|
||||
msgid "disabling login URL %(url)s."
|
||||
msgstr ""
|
||||
|
|
@ -353,22 +342,22 @@ msgid "Cache key"
|
|||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:33
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:315 ../linkcheck/gui/urlmodel.py:22
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:786 ../linkcheck/gui/urlmodel.py:22
|
||||
msgid "Result"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:34
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:209
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:780
|
||||
msgid "Base"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:35
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:174 ../linkcheck/gui/urlmodel.py:22
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:778 ../linkcheck/gui/urlmodel.py:22
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:36
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:191
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:779
|
||||
msgid "Parent URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -377,32 +366,32 @@ msgid "Extern"
|
|||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:38
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:278
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:784
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:39
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:296
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:785
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:40
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:244
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:782
|
||||
msgid "D/L time"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:41
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:261
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:783
|
||||
msgid "Size"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:42
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:227
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:781
|
||||
msgid "Check time"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/logger/__init__.py:43
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:156 ../linkcheck/gui/urlmodel.py:22
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:777 ../linkcheck/gui/urlmodel.py:22
|
||||
msgid "URL"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -774,35 +763,35 @@ msgid ""
|
|||
"Download size (%(dlsize)d Byte) does not equal content size (%(size)d Byte)."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/urlbase.py:799 ../linkcheck/checker/urlbase.py:867
|
||||
#: ../linkcheck/checker/urlbase.py:797 ../linkcheck/checker/urlbase.py:862
|
||||
msgid "valid HTML syntax"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/urlbase.py:805
|
||||
#: ../linkcheck/checker/urlbase.py:803
|
||||
#, python-format
|
||||
msgid "tidy HTML parsing caused error: %(msg)s "
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/urlbase.py:830 ../linkcheck/checker/urlbase.py:903
|
||||
#: ../linkcheck/checker/urlbase.py:825 ../linkcheck/checker/urlbase.py:898
|
||||
msgid "valid CSS syntax"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/urlbase.py:836
|
||||
#: ../linkcheck/checker/urlbase.py:831
|
||||
#, python-format
|
||||
msgid "cssutils parsing caused error: %(msg)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/urlbase.py:845
|
||||
#: ../linkcheck/checker/urlbase.py:840
|
||||
#, python-format
|
||||
msgid "%(w3type)s validation error at line %(line)s col %(column)s: %(msg)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/urlbase.py:876
|
||||
#: ../linkcheck/checker/urlbase.py:871
|
||||
#, python-format
|
||||
msgid "HTML W3C validation caused error: %(msg)s "
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/urlbase.py:911
|
||||
#: ../linkcheck/checker/urlbase.py:906
|
||||
#, python-format
|
||||
msgid "CSS W3C validation caused error: %(msg)s "
|
||||
msgstr ""
|
||||
|
|
@ -993,35 +982,35 @@ msgstr ""
|
|||
msgid "NNTP server too busy; tried more than %d times."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/__init__.py:129
|
||||
#: ../linkcheck/__init__.py:148
|
||||
msgid "CRITICAL"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/__init__.py:130
|
||||
#: ../linkcheck/__init__.py:149
|
||||
msgid "ERROR"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/__init__.py:131
|
||||
#: ../linkcheck/__init__.py:150
|
||||
msgid "WARN"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/__init__.py:132
|
||||
#: ../linkcheck/__init__.py:151
|
||||
msgid "WARNING"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/__init__.py:133
|
||||
#: ../linkcheck/__init__.py:152
|
||||
msgid "INFO"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/__init__.py:134
|
||||
#: ../linkcheck/__init__.py:153
|
||||
msgid "DEBUG"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/__init__.py:135
|
||||
#: ../linkcheck/__init__.py:154
|
||||
msgid "NOTSET"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/__init__.py:146
|
||||
#: ../linkcheck/__init__.py:165
|
||||
msgid "Running as root user; dropping privileges by changing user to nobody."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1029,224 +1018,240 @@ msgstr ""
|
|||
msgid "LinkChecker debug log"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:26
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:764
|
||||
msgid "LinkChecker"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:39
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:765
|
||||
msgid "URL:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:56
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:766
|
||||
msgid "Start checking the given URL."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:71
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:768
|
||||
msgid "Active:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:76
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:85
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:94
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:769
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:771
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:773
|
||||
msgid "0"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:80
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:770
|
||||
msgid "Queued:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:89
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:772
|
||||
msgid "Checked:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:98
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:774
|
||||
msgid "Info:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:108
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:775
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:142
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:776
|
||||
msgid "URL properties"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:353
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:787
|
||||
msgid "Check results"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:363
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:788
|
||||
msgid "Valid URLs"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:387
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:789
|
||||
msgid "Warnings"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:411
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:790
|
||||
msgid "Invalid URLs"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:436
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:791
|
||||
msgid "Content type statistics"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:446
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:792
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:470
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:793
|
||||
msgid "Text"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:494
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:794
|
||||
msgid "Application"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:518
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:795
|
||||
msgid "Audio"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:542
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:796
|
||||
msgid "Video"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:580
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:797
|
||||
msgid "Other"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:604
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:798
|
||||
msgid "Mail"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:615
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:799
|
||||
msgid "URL statistics"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:625
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:800
|
||||
msgid "Min. length"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:649
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:801
|
||||
msgid "Avg. length"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:673
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:802
|
||||
msgid "Max. length"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:697
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:803
|
||||
msgid "Domains"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:723
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:804
|
||||
msgid "&Edit"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:726
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:805
|
||||
#: ../linkcheck/gui/linkchecker_ui_editor.py:34
|
||||
msgid "&File"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:729
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:746
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:806
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:809
|
||||
msgid "&Help"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:739
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:807
|
||||
msgid "A&bout"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:740
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:808
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:747
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:810
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:753
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:811
|
||||
msgid "View online"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:754
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:812
|
||||
msgid "View URL online"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:760
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:813
|
||||
msgid "&Options"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:761
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:814
|
||||
#: /usr/lib/python2.7/optparse.py:1626
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:767
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:815
|
||||
msgid "Copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:768
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:816
|
||||
msgid "Copy URL to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:769
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:817
|
||||
msgid "Ctrl+C"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:773
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:818
|
||||
msgid "View parent online"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:774
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:819
|
||||
msgid "View parent URL online"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:778
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:820
|
||||
msgid "View parent source"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:779
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:821
|
||||
msgid "View parent URL source"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:782
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:822
|
||||
msgid "Show debug"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:785
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:823
|
||||
msgid "View properties"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:786
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:824
|
||||
msgid "View URL properties"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:792
|
||||
msgid "&Save results..."
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:825
|
||||
msgid "Save &results..."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:793
|
||||
#: ../linkcheck/gui/linkchecker_ui_editor.py:50
|
||||
msgid "Ctrl+S"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:799
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:826
|
||||
msgid "&Quit"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:800
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:827
|
||||
msgid "Ctrl+Q"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:803
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:828
|
||||
msgid "Check for updates"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:806
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:829
|
||||
msgid "Donate"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:830
|
||||
msgid "&Open project..."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:831
|
||||
msgid "Open project"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:832
|
||||
msgid "Ctrl+O"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:833
|
||||
msgid "&Save project..."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:834
|
||||
#: ../linkcheck/gui/linkchecker_ui_editor.py:50
|
||||
msgid "Ctrl+S"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/editor.py:104
|
||||
msgid "Save file?"
|
||||
msgstr ""
|
||||
|
|
@ -1309,16 +1314,16 @@ msgstr ""
|
|||
msgid "Insert %(browser)s bookmark file"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/options.py:104
|
||||
#: ../linkcheck/gui/options.py:105
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:123
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/options.py:106
|
||||
#: ../linkcheck/gui/options.py:107
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/options.py:109
|
||||
#: ../linkcheck/gui/options.py:110
|
||||
msgid "File not found"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1354,28 +1359,33 @@ msgstr ""
|
|||
msgid "&Save"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:146 ../linkcheck/gui/__init__.py:465
|
||||
#: ../linkcheck/gui/__init__.py:152
|
||||
#, python-format
|
||||
msgid "Could not load project %(filename)s: %(err)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:154 ../linkcheck/gui/__init__.py:483
|
||||
msgid "Ready."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:173
|
||||
#: ../linkcheck/gui/__init__.py:181
|
||||
msgid "Check finished."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:281
|
||||
#: ../linkcheck/gui/__init__.py:289
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:306
|
||||
#: ../linkcheck/gui/__init__.py:314
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:354
|
||||
#: ../linkcheck/gui/__init__.py:362
|
||||
#, python-format
|
||||
msgid "About %(appname)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:355
|
||||
#: ../linkcheck/gui/__init__.py:363
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<qt><center>\n"
|
||||
|
|
@ -1392,32 +1402,32 @@ msgid ""
|
|||
"</center></qt>"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:400
|
||||
#: ../linkcheck/gui/__init__.py:418
|
||||
msgid "Closing pending connections..."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:434
|
||||
#: ../linkcheck/gui/__init__.py:452
|
||||
msgid "Error, empty URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:436
|
||||
#: ../linkcheck/gui/__init__.py:454
|
||||
#, python-format
|
||||
msgid "Checking '%s'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:442
|
||||
#: ../linkcheck/gui/__init__.py:460
|
||||
#, python-format
|
||||
msgid "Error, invalid URL `%s'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:462
|
||||
#: ../linkcheck/gui/__init__.py:480
|
||||
#, python-format
|
||||
msgid "%d URL selected."
|
||||
msgid_plural "%d URLs selected"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:542
|
||||
#: ../linkcheck/gui/__init__.py:561
|
||||
msgid "LinkChecker internal error"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1425,7 +1435,7 @@ msgstr ""
|
|||
msgid "Dialog"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:26 ../linkchecker:444
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:26 ../linkchecker:448
|
||||
msgid "Checking options"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1483,6 +1493,47 @@ msgstr ""
|
|||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/projects.py:26
|
||||
#, python-format
|
||||
msgid "LinkChecker project (*%(ext)s)"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/projects.py:120
|
||||
msgid "Save LinkChecker project"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/projects.py:126
|
||||
msgid "Canceled saving a project file."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/projects.py:130
|
||||
#, python-format
|
||||
msgid "Could not write project file %(filename)s."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/projects.py:146
|
||||
#, python-format
|
||||
msgid "Project file %(filename)s saved successfully."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/projects.py:176
|
||||
msgid "Open LinkChecker project"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/projects.py:182
|
||||
msgid "Canceled opening a project file."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/projects.py:184
|
||||
#, python-format
|
||||
msgid "Could not read project file %(filename)s."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/projects.py:194
|
||||
#, python-format
|
||||
msgid "Project file %(filename)s loaded successfully."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/lc_cgi.py:90
|
||||
#, python-format
|
||||
msgid "URL has unparsable domain name: %s"
|
||||
|
|
@ -1791,28 +1842,28 @@ msgid "Output options"
|
|||
msgstr ""
|
||||
|
||||
#: ../linkchecker:351
|
||||
msgid "Check syntax of CSS URLs with local library (cssutils)."
|
||||
msgid ""
|
||||
"Check syntax of CSS URLs with cssutils. If it's not installed,\n"
|
||||
"check with the W3C online validator."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:354
|
||||
msgid "Check syntax of CSS URLs with W3C online validator."
|
||||
#: ../linkchecker:356 ../linkchecker:364
|
||||
msgid "This option is deprecated."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:357
|
||||
msgid "Check syntax of HTML URLs with local library (HTML tidy)."
|
||||
#: ../linkchecker:359
|
||||
msgid ""
|
||||
"Check syntax of HTML URLs with HTML tidy. If it's not installed,\n"
|
||||
"check with the W3C online validator."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:360
|
||||
msgid "Check syntax of HTML URLs with W3C online validator."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:362
|
||||
#: ../linkchecker:366
|
||||
msgid ""
|
||||
"Log all URLs, including duplicates.\n"
|
||||
"Default is to log duplicate URLs only once."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:366
|
||||
#: ../linkchecker:370
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Print debugging output for the given logger.\n"
|
||||
|
|
@ -1824,7 +1875,7 @@ msgid ""
|
|||
"For accurate results, threading will be disabled during debug runs."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:377
|
||||
#: ../linkchecker:381
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Output to a file linkchecker-out.TYPE, $HOME/.linkchecker/blacklist for\n"
|
||||
|
|
@ -1841,15 +1892,15 @@ msgid ""
|
|||
"suppress all console output with the option '-o none'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:391
|
||||
#: ../linkchecker:395
|
||||
msgid "Do not print check status messages."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:393
|
||||
#: ../linkchecker:397
|
||||
msgid "Don't log warnings. Default is to log warnings."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:397
|
||||
#: ../linkchecker:401
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Specify output as %(loggertypes)s. Default output type is text.\n"
|
||||
|
|
@ -1859,36 +1910,36 @@ msgid ""
|
|||
"html."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:405
|
||||
#: ../linkchecker:409
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Write profiling data into a file named %s in the\n"
|
||||
"current working directory. See also --viewprof."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:409
|
||||
#: ../linkchecker:413
|
||||
msgid ""
|
||||
"Quiet operation, an alias for '-o none'.\n"
|
||||
"This is only useful with -F."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:413
|
||||
#: ../linkchecker:417
|
||||
msgid "Scan content of URLs with ClamAV virus scanner."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:415
|
||||
#: ../linkchecker:419
|
||||
msgid "Print tracing information."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:418
|
||||
#: ../linkchecker:422
|
||||
msgid "Log all URLs. Default is to log only errors and warnings."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:421
|
||||
#: ../linkchecker:425
|
||||
msgid "Print out previously generated profiling data. See also --profile."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:425
|
||||
#: ../linkchecker:429
|
||||
msgid ""
|
||||
"Define a regular expression which prints a warning if it matches\n"
|
||||
"any content of the checked link. This applies only to valid pages,\n"
|
||||
|
|
@ -1902,19 +1953,19 @@ msgid ""
|
|||
"for example \"(This page has moved|Oracle Application error)\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:438
|
||||
#: ../linkchecker:442
|
||||
msgid ""
|
||||
"Print a warning if content size info is available and exceeds the\n"
|
||||
"given number of bytes."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:447
|
||||
#: ../linkchecker:451
|
||||
msgid ""
|
||||
"Check HTTP anchor references. Default is not to check anchors.\n"
|
||||
"This option enables logging of the warning 'url-anchor-not-found'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:451
|
||||
#: ../linkchecker:455
|
||||
msgid ""
|
||||
"Accept and send HTTP cookies according to RFC 2109. Only cookies\n"
|
||||
"which are sent back to the originating server are accepted.\n"
|
||||
|
|
@ -1922,146 +1973,146 @@ msgid ""
|
|||
"information."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:458
|
||||
#: ../linkchecker:462
|
||||
msgid ""
|
||||
"Read a file with initial cookie data. The cookie data format is\n"
|
||||
"explained below."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:463
|
||||
#: ../linkchecker:467
|
||||
msgid ""
|
||||
"Only check syntax of URLs matching the given regular expression.\n"
|
||||
" This option can be given multiple times."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:468
|
||||
#: ../linkchecker:472
|
||||
msgid ""
|
||||
"Check but do not recurse into URLs matching the given regular\n"
|
||||
"expression. This option can be given multiple times."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:473
|
||||
#: ../linkchecker:477
|
||||
msgid ""
|
||||
"Specify an NNTP server for 'news:...' links. Default is the\n"
|
||||
"environment variable NNTP_SERVER. If no host is given,\n"
|
||||
"only the syntax of the link is checked."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:479
|
||||
#: ../linkchecker:483
|
||||
msgid ""
|
||||
"Read a password from console and use it for HTTP and FTP authorization.\n"
|
||||
"For FTP the default password is 'anonymous@'. For HTTP there is\n"
|
||||
"no default password. See also -u."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:485
|
||||
#: ../linkchecker:489
|
||||
msgid ""
|
||||
"Pause the given number of seconds between two subsequent connection\n"
|
||||
"requests to the same host. Default is no pause between requests."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:490
|
||||
#: ../linkchecker:494
|
||||
msgid ""
|
||||
"Check recursively all links up to given depth. A negative depth\n"
|
||||
"will enable infinite recursion. Default depth is infinite."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:495
|
||||
#: ../linkchecker:499
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Set the timeout for connection attempts in seconds. The default\n"
|
||||
"timeout is %d seconds."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:500
|
||||
#: ../linkchecker:504
|
||||
msgid ""
|
||||
"Try the given username for HTTP and FTP authorization.\n"
|
||||
"For FTP the default username is 'anonymous'. For HTTP there is\n"
|
||||
"no default username. See also -p."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:506
|
||||
#: ../linkchecker:510
|
||||
msgid ""
|
||||
"Specify the User-Agent string to send to the HTTP server, for example\n"
|
||||
"\"Mozilla/4.0\". The default is \"LinkChecker/X.Y\" where X.Y is the current\n"
|
||||
"version of LinkChecker."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:544
|
||||
#: ../linkchecker:548
|
||||
#, python-format
|
||||
msgid "URL has unparsable domain name: %(domain)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:569
|
||||
#: ../linkchecker:573
|
||||
#, python-format
|
||||
msgid "Invalid debug level %(level)r"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:582
|
||||
#: ../linkchecker:586
|
||||
#, python-format
|
||||
msgid "Unreadable config file: %r"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:590
|
||||
#: ../linkchecker:594
|
||||
msgid "Running with python -O disables debugging."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:612 ../linkchecker:643
|
||||
#: ../linkchecker:616 ../linkchecker:647
|
||||
#, python-format
|
||||
msgid "Unknown logger type %(type)r in %(output)r for option %(option)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:616 ../linkchecker:649
|
||||
#: ../linkchecker:620 ../linkchecker:653
|
||||
#, python-format
|
||||
msgid "Unknown encoding %(encoding)r in %(output)r for option %(option)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:661
|
||||
#: ../linkchecker:665
|
||||
#, python-format
|
||||
msgid "Enter LinkChecker HTTP/FTP password for user %(user)s:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:664
|
||||
#: ../linkchecker:668
|
||||
msgid "Enter LinkChecker HTTP/FTP password:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:671 ../linkchecker:689
|
||||
#: ../linkchecker:675 ../linkchecker:693
|
||||
#, python-format
|
||||
msgid "Illegal argument %(arg)r for option %(option)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:728
|
||||
#: ../linkchecker:732
|
||||
#, python-format
|
||||
msgid "Enter LinkChecker password for user %(user)s at %(strpattern)s:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:745
|
||||
#: ../linkchecker:749
|
||||
msgid ""
|
||||
"Using DOT or GML loggers without --complete output gives an incomplete "
|
||||
"sitemap graph."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:758
|
||||
#: ../linkchecker:762
|
||||
#, python-format
|
||||
msgid "Could not parse cookie file: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:772
|
||||
#: ../linkchecker:776
|
||||
msgid "no files or URLs given"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:777
|
||||
#: ../linkchecker:781
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Overwrite profiling file %(file)r?\n"
|
||||
"Press Ctrl-C to cancel, RETURN to continue."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:783
|
||||
#: ../linkchecker:787
|
||||
msgid "Canceled."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:787
|
||||
#: ../linkchecker:791
|
||||
msgid ""
|
||||
"The `profile' Python module is not installed, therefore the --profile option "
|
||||
"is disabled."
|
||||
|
|
|
|||
Loading…
Reference in a new issue