mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-05-27 07:13:59 +00:00
Display GUI options in one dialog; support warning strings in GUI options; support ignore patterns in GUI options.
This commit is contained in:
parent
9367e3166c
commit
5f0853be87
7 changed files with 404 additions and 464 deletions
2
Makefile
2
Makefile
|
|
@ -208,7 +208,7 @@ test: localbuild
|
|||
|
||||
.PHONY: pyflakes
|
||||
pyflakes:
|
||||
pyflakes --force $(PY_FILES_DIRS) 2>&1 | \
|
||||
pyflakes $(PY_FILES_DIRS) 2>&1 | \
|
||||
grep -v "redefinition of unused 'linkcheck'" | \
|
||||
grep -v "undefined name '_'" | \
|
||||
grep -v "undefined name '_n'" | cat
|
||||
|
|
|
|||
|
|
@ -8,6 +8,15 @@ Fixes:
|
|||
- checking: Do not remove whitespace inside URLs given on the
|
||||
commandline or GUI. Only remove whitespace at the start and end.
|
||||
|
||||
Changes:
|
||||
- gui: Display all options in one dialog instead of tabbed panes.
|
||||
|
||||
Features:
|
||||
- gui: Add configuration for warning strings instead of regular
|
||||
expressions. The regular expressions can still be configured in
|
||||
the configuration file.
|
||||
- gui: Add configuration for ignore URL patterns.
|
||||
|
||||
|
||||
7.2 "Driver" (released 20.10.2011)
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
import os
|
||||
import sys
|
||||
import re
|
||||
import copy
|
||||
import webbrowser
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from .linkchecker_ui_main import Ui_MainWindow
|
||||
|
|
@ -36,7 +37,7 @@ from .urlsave import urlsave
|
|||
from .settings import Settings
|
||||
from .recentdocs import RecentDocumentModel
|
||||
from .. import configuration, checker, director, add_intern_pattern, \
|
||||
strformat, fileutil, LinkCheckerError
|
||||
strformat, fileutil, LinkCheckerError, get_link_pat
|
||||
from ..containers import enum
|
||||
from .. import url as urlutil
|
||||
from ..checker import httpheaders
|
||||
|
|
@ -72,6 +73,10 @@ def get_icon (name):
|
|||
return icon
|
||||
|
||||
|
||||
def warninglines2regex(lines):
|
||||
return u"|".join([re.escape(line) for line in lines])
|
||||
|
||||
|
||||
class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
||||
"""The main window displaying checked URLs."""
|
||||
|
||||
|
|
@ -195,6 +200,8 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
def init_config (self):
|
||||
"""Create a configuration object."""
|
||||
self.config = configuration.Configuration()
|
||||
# dictionary holding overwritten values
|
||||
self.config_backup = {}
|
||||
# set standard GUI configuration values
|
||||
self.config.logger_add("gui", GuiLogger)
|
||||
self.config["logger"] = self.config.logger_new('gui',
|
||||
|
|
@ -223,8 +230,31 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.config["threads"] = 1
|
||||
else:
|
||||
self.config.reset_loglevel()
|
||||
if data["warningregex"]:
|
||||
self.config["warningregex"] = re.compile(data["warningregex"])
|
||||
if data["warninglines"]:
|
||||
lines = data["warninglines"].splitlines()
|
||||
ro = re.compile(warninglines2regex(lines))
|
||||
self.backup_config("warningregex", ro)
|
||||
# set ignore patterns
|
||||
ignorepats = data["ignorelines"].strip()
|
||||
if ignorepats:
|
||||
self.backup_config("externlinks")
|
||||
lines = ignorepats.splitlines()
|
||||
for line in lines:
|
||||
pat = get_link_pat(line, strict=1)
|
||||
self.config["externlinks"].append(pat)
|
||||
|
||||
def backup_config (self, key, value=None):
|
||||
"""Backup config key if not already done and set given value."""
|
||||
if key not in self.config_backup:
|
||||
# make copy of containers to avoid unwanted inserted items
|
||||
self.config_backup[key] = copy.copy(self.config[key])
|
||||
if value is not None:
|
||||
self.config[key] = value
|
||||
|
||||
def restore_config (self):
|
||||
"""Restore config from backup."""
|
||||
for key in self.config_backup:
|
||||
self.config[key] = copy.copy(self.config_backup[key])
|
||||
|
||||
def get_status (self):
|
||||
"""Return current application status."""
|
||||
|
|
@ -251,6 +281,7 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.label_busy.hide()
|
||||
self.menubar.setEnabled(True)
|
||||
self.urlinput.setEnabled(True)
|
||||
self.restore_config()
|
||||
elif status == Status.checking:
|
||||
self.treeView.setSortingEnabled(False)
|
||||
self.debug.reset()
|
||||
|
|
@ -392,6 +423,7 @@ Version 2 or later.
|
|||
self.set_statusmsg(_("Checking '%s'.") % strformat.limit(url, 40))
|
||||
url_data = checker.get_url_from(url, 0, aggregate)
|
||||
try:
|
||||
self.backup_config('internlinks')
|
||||
add_intern_pattern(url_data, self.config)
|
||||
except UnicodeError:
|
||||
self.set_statusmsg(_("Error, invalid URL `%s'.") %
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Form implementation generated from reading ui file 'ui/options.ui'
|
||||
#
|
||||
# Created: Mon Dec 12 19:00:36 2011
|
||||
# Created: Tue Dec 13 07:09:29 2011
|
||||
# by: PyQt4 UI code generator 4.8.6
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
|
@ -17,61 +17,27 @@ except AttributeError:
|
|||
class Ui_Options(object):
|
||||
def setupUi(self, Options):
|
||||
Options.setObjectName(_fromUtf8("Options"))
|
||||
Options.setWindowModality(QtCore.Qt.ApplicationModal)
|
||||
Options.resize(279, 239)
|
||||
Options.setWindowTitle(_("Linkchecker options"))
|
||||
self.verticalLayout = QtGui.QVBoxLayout(Options)
|
||||
self.verticalLayout.setSpacing(2)
|
||||
self.verticalLayout.setSizeConstraint(QtGui.QLayout.SetMinimumSize)
|
||||
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
|
||||
self.tabWidget = QtGui.QTabWidget(Options)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.tabWidget.sizePolicy().hasHeightForWidth())
|
||||
self.tabWidget.setSizePolicy(sizePolicy)
|
||||
self.tabWidget.setToolTip(_fromUtf8(""))
|
||||
self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
|
||||
self.gui_options = QtGui.QWidget()
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.gui_options.sizePolicy().hasHeightForWidth())
|
||||
self.gui_options.setSizePolicy(sizePolicy)
|
||||
self.gui_options.setToolTip(_fromUtf8(""))
|
||||
self.gui_options.setObjectName(_fromUtf8("gui_options"))
|
||||
self.verticalLayout_3 = QtGui.QVBoxLayout(self.gui_options)
|
||||
self.verticalLayout_3.setSpacing(2)
|
||||
Options.resize(400, 550)
|
||||
Options.setMinimumSize(QtCore.QSize(400, 550))
|
||||
Options.setWindowTitle(_("Dialog"))
|
||||
self.verticalLayout_3 = QtGui.QVBoxLayout(Options)
|
||||
self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
|
||||
self.label_8 = QtGui.QLabel(self.gui_options)
|
||||
self.label_8.setMinimumSize(QtCore.QSize(240, 0))
|
||||
self.label_8.setText(_("The most common check options are configurable. They override any configuration file settings."))
|
||||
self.label_8.setTextFormat(QtCore.Qt.AutoText)
|
||||
self.label_8.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.label_8.setWordWrap(True)
|
||||
self.label_8.setObjectName(_fromUtf8("label_8"))
|
||||
self.verticalLayout_3.addWidget(self.label_8)
|
||||
self.frame = QtGui.QFrame(self.gui_options)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
|
||||
self.frame.setSizePolicy(sizePolicy)
|
||||
self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
|
||||
self.frame.setFrameShadow(QtGui.QFrame.Raised)
|
||||
self.frame.setObjectName(_fromUtf8("frame"))
|
||||
self.formLayout = QtGui.QFormLayout(self.frame)
|
||||
self.formLayout.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint)
|
||||
self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow)
|
||||
self.formLayout.setHorizontalSpacing(4)
|
||||
self.formLayout.setVerticalSpacing(8)
|
||||
self.groupBox_2 = QtGui.QGroupBox(Options)
|
||||
self.groupBox_2.setTitle(_("Scanning options"))
|
||||
self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
|
||||
self.verticalLayout = QtGui.QVBoxLayout(self.groupBox_2)
|
||||
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
|
||||
self.widget = QtGui.QWidget(self.groupBox_2)
|
||||
self.widget.setObjectName(_fromUtf8("widget"))
|
||||
self.formLayout = QtGui.QFormLayout(self.widget)
|
||||
self.formLayout.setMargin(0)
|
||||
self.formLayout.setObjectName(_fromUtf8("formLayout"))
|
||||
self.label = QtGui.QLabel(self.frame)
|
||||
self.label = QtGui.QLabel(self.widget)
|
||||
self.label.setToolTip(_("Check recursively all links up to given depth. A negative depth will enable infinite recursion."))
|
||||
self.label.setText(_("Recursive depth"))
|
||||
self.label.setObjectName(_fromUtf8("label"))
|
||||
self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.label)
|
||||
self.recursionlevel = QtGui.QSpinBox(self.frame)
|
||||
self.recursionlevel = QtGui.QSpinBox(self.widget)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
|
|
@ -84,103 +50,98 @@ class Ui_Options(object):
|
|||
self.recursionlevel.setProperty("value", -1)
|
||||
self.recursionlevel.setObjectName(_fromUtf8("recursionlevel"))
|
||||
self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.recursionlevel)
|
||||
self.label_2 = QtGui.QLabel(self.frame)
|
||||
self.label_2 = QtGui.QLabel(self.widget)
|
||||
self.label_2.setToolTip(_("Log all checked URLs once. Default is to log only errors and warnings."))
|
||||
self.label_2.setText(_("Verbose output"))
|
||||
self.label_2.setObjectName(_fromUtf8("label_2"))
|
||||
self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_2)
|
||||
self.verbose = QtGui.QCheckBox(self.frame)
|
||||
self.verbose = QtGui.QCheckBox(self.widget)
|
||||
self.verbose.setEnabled(True)
|
||||
self.verbose.setToolTip(_("Log all checked URLs once. Default is to log only errors and warnings."))
|
||||
self.verbose.setText(_fromUtf8(""))
|
||||
self.verbose.setObjectName(_fromUtf8("verbose"))
|
||||
self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.verbose)
|
||||
self.label_4 = QtGui.QLabel(self.frame)
|
||||
self.label_4 = QtGui.QLabel(self.widget)
|
||||
self.label_4.setText(_("Debug"))
|
||||
self.label_4.setObjectName(_fromUtf8("label_4"))
|
||||
self.formLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_4)
|
||||
self.debug = QtGui.QCheckBox(self.frame)
|
||||
self.debug = QtGui.QCheckBox(self.widget)
|
||||
self.debug.setText(_fromUtf8(""))
|
||||
self.debug.setObjectName(_fromUtf8("debug"))
|
||||
self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.debug)
|
||||
self.warningregex = QtGui.QLineEdit(self.frame)
|
||||
self.warningregex.setObjectName(_fromUtf8("warningregex"))
|
||||
self.formLayout.setWidget(3, QtGui.QFormLayout.FieldRole, self.warningregex)
|
||||
self.label_3 = QtGui.QLabel(self.frame)
|
||||
self.label_3.setText(_("Warning regex"))
|
||||
self.verticalLayout.addWidget(self.widget)
|
||||
spacerItem = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.verticalLayout.addItem(spacerItem)
|
||||
self.label_5 = QtGui.QLabel(self.groupBox_2)
|
||||
self.label_5.setText(_("Warn when one of these strings are found (one per line):"))
|
||||
self.label_5.setObjectName(_fromUtf8("label_5"))
|
||||
self.verticalLayout.addWidget(self.label_5)
|
||||
self.warninglines = QtGui.QPlainTextEdit(self.groupBox_2)
|
||||
self.warninglines.setMaximumSize(QtCore.QSize(16777215, 150))
|
||||
self.warninglines.setObjectName(_fromUtf8("warninglines"))
|
||||
self.verticalLayout.addWidget(self.warninglines)
|
||||
self.label_6 = QtGui.QLabel(self.groupBox_2)
|
||||
self.label_6.setText(_("Ignore URLs matching one of these patterns (one per line):"))
|
||||
self.label_6.setObjectName(_fromUtf8("label_6"))
|
||||
self.verticalLayout.addWidget(self.label_6)
|
||||
self.ignorelines = QtGui.QPlainTextEdit(self.groupBox_2)
|
||||
self.ignorelines.setMaximumSize(QtCore.QSize(16777215, 150))
|
||||
self.ignorelines.setObjectName(_fromUtf8("ignorelines"))
|
||||
self.verticalLayout.addWidget(self.ignorelines)
|
||||
self.verticalLayout_3.addWidget(self.groupBox_2)
|
||||
self.groupBox = QtGui.QGroupBox(Options)
|
||||
self.groupBox.setTitle(_("Configuration file"))
|
||||
self.groupBox.setObjectName(_fromUtf8("groupBox"))
|
||||
self.verticalLayout_2 = QtGui.QVBoxLayout(self.groupBox)
|
||||
self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
|
||||
self.label_3 = QtGui.QLabel(self.groupBox)
|
||||
self.label_3.setText(_("The configuration file holds advanced options and can be edited with an integrated text editor."))
|
||||
self.label_3.setWordWrap(True)
|
||||
self.label_3.setObjectName(_fromUtf8("label_3"))
|
||||
self.formLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_3)
|
||||
self.verticalLayout_3.addWidget(self.frame)
|
||||
self.widget = QtGui.QWidget(self.gui_options)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth())
|
||||
self.widget.setSizePolicy(sizePolicy)
|
||||
self.widget.setObjectName(_fromUtf8("widget"))
|
||||
self.horizontalLayout = QtGui.QHBoxLayout(self.widget)
|
||||
self.horizontalLayout.setSizeConstraint(QtGui.QLayout.SetMinimumSize)
|
||||
self.horizontalLayout.setMargin(0)
|
||||
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
|
||||
self.closeButton = QtGui.QPushButton(self.widget)
|
||||
self.closeButton.setText(_("Close"))
|
||||
self.closeButton.setObjectName(_fromUtf8("closeButton"))
|
||||
self.horizontalLayout.addWidget(self.closeButton)
|
||||
self.verticalLayout_3.addWidget(self.widget)
|
||||
self.tabWidget.addTab(self.gui_options, _fromUtf8(""))
|
||||
self.config_options = QtGui.QWidget()
|
||||
self.config_options.setToolTip(_fromUtf8(""))
|
||||
self.config_options.setObjectName(_fromUtf8("config_options"))
|
||||
self.verticalLayout_5 = QtGui.QVBoxLayout(self.config_options)
|
||||
self.verticalLayout_5.setSpacing(0)
|
||||
self.verticalLayout_5.setObjectName(_fromUtf8("verticalLayout_5"))
|
||||
self.label_9 = QtGui.QLabel(self.config_options)
|
||||
self.label_9.setText(_("The user configuration file holds advanced options and can be edited with an integrated text editor."))
|
||||
self.label_9.setTextFormat(QtCore.Qt.AutoText)
|
||||
self.label_9.setWordWrap(True)
|
||||
self.label_9.setObjectName(_fromUtf8("label_9"))
|
||||
self.verticalLayout_5.addWidget(self.label_9)
|
||||
self.frame_2 = QtGui.QFrame(self.config_options)
|
||||
self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
|
||||
self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
|
||||
self.frame_2.setMidLineWidth(0)
|
||||
self.frame_2.setObjectName(_fromUtf8("frame_2"))
|
||||
self.verticalLayout_4 = QtGui.QVBoxLayout(self.frame_2)
|
||||
self.verticalLayout_4.setSpacing(4)
|
||||
self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))
|
||||
self.user_config_label = QtGui.QLabel(self.frame_2)
|
||||
self.verticalLayout_2.addWidget(self.label_3)
|
||||
spacerItem1 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.verticalLayout_2.addItem(spacerItem1)
|
||||
self.user_config_label_2 = QtGui.QLabel(self.groupBox)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.user_config_label.sizePolicy().hasHeightForWidth())
|
||||
self.user_config_label.setSizePolicy(sizePolicy)
|
||||
self.user_config_label.setToolTip(_("Overrides system wide configuration file settings."))
|
||||
self.user_config_label.setFrameShape(QtGui.QFrame.NoFrame)
|
||||
self.user_config_label.setLineWidth(0)
|
||||
self.user_config_label.setText(_("/home/user/.linkchecker/linkcheckerrc"))
|
||||
self.user_config_label.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.user_config_label.setWordWrap(True)
|
||||
self.user_config_label.setMargin(0)
|
||||
self.user_config_label.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse)
|
||||
self.user_config_label.setObjectName(_fromUtf8("user_config_label"))
|
||||
self.verticalLayout_4.addWidget(self.user_config_label)
|
||||
self.user_config_button = QtGui.QPushButton(self.frame_2)
|
||||
sizePolicy.setHeightForWidth(self.user_config_label_2.sizePolicy().hasHeightForWidth())
|
||||
self.user_config_label_2.setSizePolicy(sizePolicy)
|
||||
self.user_config_label_2.setToolTip(_("Overrides system wide configuration file settings."))
|
||||
self.user_config_label_2.setFrameShape(QtGui.QFrame.NoFrame)
|
||||
self.user_config_label_2.setLineWidth(0)
|
||||
self.user_config_label_2.setText(_("/home/user/.linkchecker/linkcheckerrc"))
|
||||
self.user_config_label_2.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.user_config_label_2.setWordWrap(True)
|
||||
self.user_config_label_2.setMargin(0)
|
||||
self.user_config_label_2.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse)
|
||||
self.user_config_label_2.setObjectName(_fromUtf8("user_config_label_2"))
|
||||
self.verticalLayout_2.addWidget(self.user_config_label_2)
|
||||
self.user_config_button = QtGui.QPushButton(self.groupBox)
|
||||
self.user_config_button.setEnabled(False)
|
||||
self.user_config_button.setToolTip(_fromUtf8(""))
|
||||
self.user_config_button.setText(_("Edit"))
|
||||
self.user_config_button.setObjectName(_fromUtf8("user_config_button"))
|
||||
self.verticalLayout_4.addWidget(self.user_config_button)
|
||||
self.verticalLayout_5.addWidget(self.frame_2)
|
||||
spacerItem = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
|
||||
self.verticalLayout_5.addItem(spacerItem)
|
||||
self.tabWidget.addTab(self.config_options, _fromUtf8(""))
|
||||
self.verticalLayout.addWidget(self.tabWidget)
|
||||
self.verticalLayout_2.addWidget(self.user_config_button)
|
||||
self.verticalLayout_3.addWidget(self.groupBox)
|
||||
spacerItem2 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.verticalLayout_3.addItem(spacerItem2)
|
||||
self.widget_2 = QtGui.QWidget(Options)
|
||||
self.widget_2.setObjectName(_fromUtf8("widget_2"))
|
||||
self.horizontalLayout = QtGui.QHBoxLayout(self.widget_2)
|
||||
self.horizontalLayout.setMargin(0)
|
||||
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
|
||||
self.closeButton = QtGui.QPushButton(self.widget_2)
|
||||
self.closeButton.setText(_("Close"))
|
||||
self.closeButton.setObjectName(_fromUtf8("closeButton"))
|
||||
self.horizontalLayout.addWidget(self.closeButton)
|
||||
spacerItem3 = QtGui.QSpacerItem(317, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem3)
|
||||
self.verticalLayout_3.addWidget(self.widget_2)
|
||||
|
||||
self.retranslateUi(Options)
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QtCore.QMetaObject.connectSlotsByName(Options)
|
||||
|
||||
def retranslateUi(self, Options):
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.gui_options), _("GUI options"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.config_options), _("Configuration file"))
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ import os
|
|||
from PyQt4 import QtGui
|
||||
from .linkchecker_ui_options import Ui_Options
|
||||
from .editor import EditorWindow
|
||||
from .validator import PyRegexValidator, check_regex
|
||||
from .. import configuration
|
||||
|
||||
|
||||
|
|
@ -30,26 +29,11 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
|
|||
"""Reset all options and initialize the editor window."""
|
||||
super(LinkCheckerOptions, self).__init__(parent)
|
||||
self.setupUi(self)
|
||||
self.validator = PyRegexValidator(self.warningregex)
|
||||
self.warningregex.setValidator(self.validator)
|
||||
self.warningregex.textChanged.connect(self.check_warningregex)
|
||||
self.editor = EditorWindow(self)
|
||||
self.closeButton.clicked.connect(self.close)
|
||||
self.user_config_button.clicked.connect(self.edit_user_config)
|
||||
self.reset()
|
||||
|
||||
def check_warningregex (self, text):
|
||||
"""Display red text for invalid regex contents."""
|
||||
if check_regex(unicode(text)):
|
||||
style = "QLineEdit {}"
|
||||
self.warningregex.setStyleSheet(style)
|
||||
self.warningregex.setToolTip(u"")
|
||||
else:
|
||||
# red text
|
||||
style = "QLineEdit {color:#aa0000;}"
|
||||
self.warningregex.setStyleSheet(style)
|
||||
self.warningregex.setToolTip(_("Invalid regular expression"))
|
||||
|
||||
def reset (self):
|
||||
"""Reset GUI and config options."""
|
||||
self.user_config = configuration.get_user_config()
|
||||
|
|
@ -61,7 +45,8 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
|
|||
self.recursionlevel.setValue(-1)
|
||||
self.verbose.setChecked(False)
|
||||
self.debug.setChecked(False)
|
||||
self.warningregex.setText(u"")
|
||||
self.warninglines.setPlainText(u"")
|
||||
self.ignorelines.setPlainText(u"")
|
||||
|
||||
def reset_config_options (self):
|
||||
"""Reset configuration file edit buttons."""
|
||||
|
|
@ -80,7 +65,8 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
|
|||
debug=self.debug.isChecked(),
|
||||
verbose=self.verbose.isChecked(),
|
||||
recursionlevel=self.recursionlevel.value(),
|
||||
warningregex=unicode(self.warningregex.text()),
|
||||
warninglines=unicode(self.warninglines.toPlainText()),
|
||||
ignorelines=unicode(self.ignorelines.toPlainText()),
|
||||
)
|
||||
|
||||
def set_options (self, data):
|
||||
|
|
@ -91,8 +77,10 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
|
|||
self.verbose.setChecked(data["verbose"])
|
||||
if data["recursionlevel"] is not None:
|
||||
self.recursionlevel.setValue(data["recursionlevel"])
|
||||
if data["warningregex"] is not None:
|
||||
self.warningregex.setText(data["warningregex"])
|
||||
if data["warninglines"] is not None:
|
||||
self.warninglines.setPlainText(data["warninglines"])
|
||||
if data["ignorelines"] is not None:
|
||||
self.ignorelines.setPlainText(data["ignorelines"])
|
||||
|
||||
|
||||
def start_editor (filename, writable, editor):
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ class Settings (object):
|
|||
def read_options (self):
|
||||
"""Return stored GUI options."""
|
||||
data = dict(debug=None, verbose=None, recursionlevel=None,
|
||||
warningregex=None)
|
||||
warninglines=None, ignorelines=None)
|
||||
self.settings.beginGroup('output')
|
||||
for key in ("debug", "verbose"):
|
||||
if self.settings.contains(key):
|
||||
|
|
@ -105,11 +105,12 @@ class Settings (object):
|
|||
else:
|
||||
value = -1
|
||||
data['recursionlevel'] = value
|
||||
if self.settings.contains('warningregex'):
|
||||
value = self.settings.value('warningregex').toString()
|
||||
value = unicode(value)
|
||||
if not value or check_regex(value):
|
||||
data['warningregex'] = value
|
||||
if self.settings.contains('warninglines'):
|
||||
value = self.settings.value('warninglines').toString()
|
||||
data['warninglines'] = unicode(value)
|
||||
if self.settings.contains('ignorelines'):
|
||||
value = self.settings.value('ignorelines').toString()
|
||||
data['ignorelines'] = unicode(value)
|
||||
self.settings.endGroup()
|
||||
return data
|
||||
|
||||
|
|
@ -120,10 +121,8 @@ class Settings (object):
|
|||
self.settings.setValue(key, QtCore.QVariant(data[key]))
|
||||
self.settings.endGroup()
|
||||
self.settings.beginGroup('checking')
|
||||
key = "recursionlevel"
|
||||
self.settings.setValue(key, QtCore.QVariant(data[key]))
|
||||
key = "warningregex"
|
||||
self.settings.setValue(key, QtCore.QVariant(data[key]))
|
||||
for key in ("recursionlevel", "warninglines", "ignorelines"):
|
||||
self.settings.setValue(key, QtCore.QVariant(data[key]))
|
||||
self.settings.endGroup()
|
||||
|
||||
def read_recent_documents (self):
|
||||
|
|
|
|||
|
|
@ -2,326 +2,277 @@
|
|||
<ui version="4.0">
|
||||
<class>Options</class>
|
||||
<widget class="QDialog" name="Options">
|
||||
<property name="windowModality">
|
||||
<enum>Qt::ApplicationModal</enum>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>279</width>
|
||||
<height>239</height>
|
||||
<width>400</width>
|
||||
<height>550</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Linkchecker options</string>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>550</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetMinimumSize</enum>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Scanning options</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="toolTip">
|
||||
<string>Check recursively all links up to given depth. A negative depth will enable infinite recursion.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Recursive depth</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="recursionlevel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Check recursively all links up to given depth. A negative depth will enable infinite recursion.</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="toolTip">
|
||||
<string>Log all checked URLs once. Default is to log only errors and warnings.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Verbose output</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="verbose">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Log all checked URLs once. Default is to log only errors and warnings.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Debug</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="debug">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Warn when one of these strings are found (one per line):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="warninglines">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>150</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Ignore URLs matching one of these patterns (one per line):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="ignorelines">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>150</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Configuration file</string>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>The configuration file holds advanced options and can be edited with an integrated text editor.</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="user_config_label_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Overrides system wide configuration file settings.</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>/home/user/.linkchecker/linkcheckerrc</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="user_config_button">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Edit</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<widget class="QWidget" name="gui_options">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<attribute name="title">
|
||||
<string>GUI options</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>240</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>The most common check options are configurable. They override any configuration file settings.</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::AutoText</enum>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetDefaultConstraint</enum>
|
||||
</property>
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::ExpandingFieldsGrow</enum>
|
||||
</property>
|
||||
<property name="horizontalSpacing">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="toolTip">
|
||||
<string>Check recursively all links up to given depth. A negative depth will enable infinite recursion.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Recursive depth</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="recursionlevel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Check recursively all links up to given depth. A negative depth will enable infinite recursion.</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="toolTip">
|
||||
<string>Log all checked URLs once. Default is to log only errors and warnings.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Verbose output</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="verbose">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Log all checked URLs once. Default is to log only errors and warnings.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Debug</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="debug">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="warningregex"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Warning regex</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetMinimumSize</enum>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="closeButton">
|
||||
<property name="text">
|
||||
<string>Close</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="config_options">
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<attribute name="title">
|
||||
<string>Configuration file</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>The user configuration file holds advanced options and can be edited with an integrated text editor.</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::AutoText</enum>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="frame_2">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<property name="midLineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<property name="spacing">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="user_config_label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Overrides system wide configuration file settings.</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>/home/user/.linkchecker/linkcheckerrc</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="user_config_button">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Edit</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_2" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QPushButton" name="closeButton">
|
||||
<property name="text">
|
||||
<string>Close</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>317</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
|
|
|||
Loading…
Reference in a new issue