From 85c44d1478d53b944938e180adcb1b57b01a2207 Mon Sep 17 00:00:00 2001
From: Bastian Kleineidam
Date: Thu, 14 Oct 2010 21:13:28 +0200
Subject: [PATCH] Added extra debug dialog.
---
linkcheck/gui/Makefile | 1 +
linkcheck/gui/__init__.py | 10 +-
linkcheck/gui/debug.py | 37 ++++++
linkcheck/gui/linkchecker_ui_debug.py | 35 ++++++
linkcheck/gui/linkchecker_ui_main.py | 14 ++-
linkcheck/gui/linkchecker_ui_progress.py | 68 ++++-------
linkcheck/gui/logger.py | 2 +-
linkcheck/gui/progress.py | 8 --
linkcheck/gui/ui/debug.ui | 39 ++++++
linkcheck/gui/ui/main.ui | 18 ++-
linkcheck/gui/ui/progress.ui | 146 ++++++++---------------
11 files changed, 217 insertions(+), 161 deletions(-)
create mode 100644 linkcheck/gui/debug.py
create mode 100644 linkcheck/gui/linkchecker_ui_debug.py
create mode 100644 linkcheck/gui/ui/debug.ui
diff --git a/linkcheck/gui/Makefile b/linkcheck/gui/Makefile
index 089595a3..14b55c63 100644
--- a/linkcheck/gui/Makefile
+++ b/linkcheck/gui/Makefile
@@ -4,6 +4,7 @@
UI_FILES = linkchecker_ui_main.py \
linkchecker_ui_options.py \
linkchecker_ui_progress.py \
+ linkchecker_ui_debug.py \
linkchecker_ui_editor.py
RC_FILES = linkchecker_rc.py
diff --git a/linkcheck/gui/__init__.py b/linkcheck/gui/__init__.py
index fa15049a..2753d4f7 100644
--- a/linkcheck/gui/__init__.py
+++ b/linkcheck/gui/__init__.py
@@ -21,6 +21,7 @@ import webbrowser
from PyQt4 import QtCore, QtGui
from .linkchecker_ui_main import Ui_MainWindow
from .progress import LinkCheckerProgress, StatusLogger
+from .debug import LinkCheckerDebug
from .logger import GuiLogger, GuiLogHandler
from .help import HelpWindow
from .options import LinkCheckerOptions
@@ -61,6 +62,7 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
# init subdialogs
self.options = LinkCheckerOptions(parent=self)
self.progress = LinkCheckerProgress(parent=self)
+ self.debug = LinkCheckerDebug(parent=self)
self.checker = CheckerThread()
self.contextmenu = ContextMenu(parent=self)
self.editor = EditorWindow(parent=self)
@@ -130,6 +132,7 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
self.set_statusbar(_("Ready."))
elif status == Status.checking:
self.num = 0
+ self.debug.reset()
self.progress.reset()
self.progress.show()
self.controlButton.setEnabled(False)
@@ -184,6 +187,11 @@ for broken links.
Version 2 or later.
""") % d)
+ @QtCore.pyqtSignature("")
+ def on_actionDebug_triggered (self):
+ """Display debug dialog."""
+ self.debug.show()
+
def on_controlButton_clicked (self):
"""Start a new check."""
if self.status == Status.idle:
@@ -224,7 +232,7 @@ Version 2 or later.
self.config = configuration.Configuration()
self.config.logger_add("gui", GuiLogger)
self.config["logger"] = self.config.logger_new('gui', widget=self.checker)
- handler = GuiLogHandler(self.checker)
+ handler = GuiLogHandler(self.debug)
self.config["status"] = True
self.config["status_wait_seconds"] = 1
self.config.init_logging(StatusLogger(self.progress), handler=handler)
diff --git a/linkcheck/gui/debug.py b/linkcheck/gui/debug.py
new file mode 100644
index 00000000..939dac10
--- /dev/null
+++ b/linkcheck/gui/debug.py
@@ -0,0 +1,37 @@
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2009-2010 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.
+
+from PyQt4 import QtCore, QtGui
+from .linkchecker_ui_debug import Ui_DebugDialog
+
+
+class LinkCheckerDebug (QtGui.QDialog, Ui_DebugDialog):
+ """Show debug text."""
+
+ def __init__ (self, parent=None):
+ super(LinkCheckerDebug, self).__init__(parent)
+ self.setupUi(self)
+ self.textBrowser.setFontFamily("Consolas")
+
+ def log_msg (self, msg):
+ text = self.textBrowser.toPlainText()
+ self.textBrowser.setText(text+msg)
+ self.textBrowser.moveCursor(QtGui.QTextCursor.End)
+
+ def reset (self):
+ self.textBrowser.setText(u"")
+
diff --git a/linkcheck/gui/linkchecker_ui_debug.py b/linkcheck/gui/linkchecker_ui_debug.py
new file mode 100644
index 00000000..b41f3478
--- /dev/null
+++ b/linkcheck/gui/linkchecker_ui_debug.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'ui/debug.ui'
+#
+# Created: Thu Oct 14 20:54:43 2010
+# by: PyQt4 UI code generator 4.7.3
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt4 import QtCore, QtGui
+
+class Ui_DebugDialog(object):
+ def setupUi(self, DebugDialog):
+ DebugDialog.setObjectName("DebugDialog")
+ DebugDialog.setWindowModality(QtCore.Qt.ApplicationModal)
+ DebugDialog.resize(564, 547)
+ self.verticalLayout = QtGui.QVBoxLayout(DebugDialog)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.frame = QtGui.QFrame(DebugDialog)
+ self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
+ self.frame.setFrameShadow(QtGui.QFrame.Raised)
+ self.frame.setObjectName("frame")
+ self.verticalLayout_2 = QtGui.QVBoxLayout(self.frame)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.textBrowser = QtGui.QTextBrowser(self.frame)
+ self.textBrowser.setObjectName("textBrowser")
+ self.verticalLayout_2.addWidget(self.textBrowser)
+ self.verticalLayout.addWidget(self.frame)
+
+ self.retranslateUi(DebugDialog)
+ QtCore.QMetaObject.connectSlotsByName(DebugDialog)
+
+ def retranslateUi(self, DebugDialog):
+ DebugDialog.setWindowTitle(_("LinkChecker debug log"))
+
diff --git a/linkcheck/gui/linkchecker_ui_main.py b/linkcheck/gui/linkchecker_ui_main.py
index a64c4bc4..f7326974 100644
--- a/linkcheck/gui/linkchecker_ui_main.py
+++ b/linkcheck/gui/linkchecker_ui_main.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'ui/main.ui'
#
-# Created: Sun Oct 3 10:25:40 2010
+# Created: Thu Oct 14 21:04:29 2010
# by: PyQt4 UI code generator 4.7.3
#
# WARNING! All changes made in this file will be lost!
@@ -66,10 +66,10 @@ class Ui_MainWindow(object):
self.menubar.setObjectName("menubar")
self.menuLinkChecka = QtGui.QMenu(self.menubar)
self.menuLinkChecka.setObjectName("menuLinkChecka")
- self.menuHelp = QtGui.QMenu(self.menubar)
- self.menuHelp.setObjectName("menuHelp")
self.menuEdit = QtGui.QMenu(self.menubar)
self.menuEdit.setObjectName("menuEdit")
+ self.menuHelp = QtGui.QMenu(self.menubar)
+ self.menuHelp.setObjectName("menuHelp")
MainWindow.setMenuBar(self.menubar)
self.statusBar = QtGui.QStatusBar(MainWindow)
self.statusBar.setObjectName("statusBar")
@@ -95,10 +95,13 @@ class Ui_MainWindow(object):
self.actionViewParentSource = QtGui.QAction(MainWindow)
self.actionViewParentSource.setIcon(icon2)
self.actionViewParentSource.setObjectName("actionViewParentSource")
+ self.actionDebug = QtGui.QAction(MainWindow)
+ self.actionDebug.setObjectName("actionDebug")
self.menuLinkChecka.addAction(self.actionQuit)
+ self.menuEdit.addAction(self.actionOptions)
self.menuHelp.addAction(self.actionAbout)
self.menuHelp.addAction(self.actionHelp)
- self.menuEdit.addAction(self.actionOptions)
+ self.menuHelp.addAction(self.actionDebug)
self.menubar.addAction(self.menuLinkChecka.menuAction())
self.menubar.addAction(self.menuEdit.menuAction())
self.menubar.addAction(self.menuHelp.menuAction())
@@ -119,8 +122,8 @@ class Ui_MainWindow(object):
self.treeWidget.headerItem().setText(3, _("Name"))
self.treeWidget.headerItem().setText(4, _("Result"))
self.menuLinkChecka.setTitle(_("File"))
- self.menuHelp.setTitle(_("Help"))
self.menuEdit.setTitle(_("Edit"))
+ self.menuHelp.setTitle(_("Help"))
self.actionQuit.setText(_("Quit"))
self.actionQuit.setShortcut(_("Ctrl+Q"))
self.actionAbout.setText(_("About"))
@@ -135,5 +138,6 @@ class Ui_MainWindow(object):
self.actionViewParentOnline.setToolTip(_("View parent URL online"))
self.actionViewParentSource.setText(_("View parent source"))
self.actionViewParentSource.setToolTip(_("View parent URL source"))
+ self.actionDebug.setText(_("Debug"))
import linkchecker_rc
diff --git a/linkcheck/gui/linkchecker_ui_progress.py b/linkcheck/gui/linkchecker_ui_progress.py
index d91bd3fb..e0daabe1 100644
--- a/linkcheck/gui/linkchecker_ui_progress.py
+++ b/linkcheck/gui/linkchecker_ui_progress.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'ui/progress.ui'
#
-# Created: Fri Oct 1 19:28:45 2010
+# Created: Thu Oct 14 20:50:09 2010
# by: PyQt4 UI code generator 4.7.3
#
# WARNING! All changes made in this file will be lost!
@@ -13,7 +13,7 @@ class Ui_ProgressDialog(object):
def setupUi(self, ProgressDialog):
ProgressDialog.setObjectName("ProgressDialog")
ProgressDialog.setWindowModality(QtCore.Qt.ApplicationModal)
- ProgressDialog.resize(289, 185)
+ ProgressDialog.resize(252, 179)
self.verticalLayout = QtGui.QVBoxLayout(ProgressDialog)
self.verticalLayout.setObjectName("verticalLayout")
self.frame = QtGui.QFrame(ProgressDialog)
@@ -22,47 +22,29 @@ class Ui_ProgressDialog(object):
self.frame.setObjectName("frame")
self.verticalLayout_2 = QtGui.QVBoxLayout(self.frame)
self.verticalLayout_2.setObjectName("verticalLayout_2")
- self.tabWidget = QtGui.QTabWidget(self.frame)
- self.tabWidget.setObjectName("tabWidget")
- self.tab = QtGui.QWidget()
- self.tab.setObjectName("tab")
- self.formLayout = QtGui.QFormLayout(self.tab)
- self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow)
+ self.groupBox = QtGui.QGroupBox(self.frame)
+ self.groupBox.setObjectName("groupBox")
+ self.formLayout = QtGui.QFormLayout(self.groupBox)
self.formLayout.setObjectName("formLayout")
- self.label_active = QtGui.QLabel(self.tab)
- self.label_active.setObjectName("label_active")
- self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.label_active)
- self.label_2 = QtGui.QLabel(self.tab)
- self.label_2.setObjectName("label_2")
- self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_2)
- self.label_queued = QtGui.QLabel(self.tab)
- self.label_queued.setObjectName("label_queued")
- self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.label_queued)
- self.label_3 = QtGui.QLabel(self.tab)
- self.label_3.setObjectName("label_3")
- self.formLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_3)
- self.label_checked = QtGui.QLabel(self.tab)
- self.label_checked.setObjectName("label_checked")
- self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.label_checked)
- self.label = QtGui.QLabel(self.tab)
+ self.label = QtGui.QLabel(self.groupBox)
self.label.setObjectName("label")
self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.label)
- self.tabWidget.addTab(self.tab, "")
- self.tab_2 = QtGui.QWidget()
- self.tab_2.setObjectName("tab_2")
- self.scrollArea = QtGui.QScrollArea(self.tab_2)
- self.scrollArea.setGeometry(QtCore.QRect(0, 0, 271, 71))
- self.scrollArea.setWidgetResizable(True)
- self.scrollArea.setObjectName("scrollArea")
- self.scrollAreaWidgetContents = QtGui.QWidget(self.scrollArea)
- self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 265, 65))
- self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
- self.textBrowser = QtGui.QTextBrowser(self.scrollAreaWidgetContents)
- self.textBrowser.setGeometry(QtCore.QRect(0, 0, 271, 71))
- self.textBrowser.setObjectName("textBrowser")
- self.scrollArea.setWidget(self.scrollAreaWidgetContents)
- self.tabWidget.addTab(self.tab_2, "")
- self.verticalLayout_2.addWidget(self.tabWidget)
+ self.label_active = QtGui.QLabel(self.groupBox)
+ self.label_active.setObjectName("label_active")
+ self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.label_active)
+ self.label_2 = QtGui.QLabel(self.groupBox)
+ self.label_2.setObjectName("label_2")
+ self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_2)
+ self.label_queued = QtGui.QLabel(self.groupBox)
+ self.label_queued.setObjectName("label_queued")
+ self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.label_queued)
+ self.label_3 = QtGui.QLabel(self.groupBox)
+ self.label_3.setObjectName("label_3")
+ self.formLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_3)
+ self.label_checked = QtGui.QLabel(self.groupBox)
+ self.label_checked.setObjectName("label_checked")
+ self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.label_checked)
+ self.verticalLayout_2.addWidget(self.groupBox)
self.progressBar = QtGui.QProgressBar(self.frame)
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName("progressBar")
@@ -88,18 +70,16 @@ class Ui_ProgressDialog(object):
self.cancelLabel.setBuddy(self.cancelButton)
self.retranslateUi(ProgressDialog)
- self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(ProgressDialog)
def retranslateUi(self, ProgressDialog):
ProgressDialog.setWindowTitle(_("LinkChecker progress"))
+ self.groupBox.setTitle(_("Status"))
+ self.label.setText(_("Active:"))
self.label_active.setText(_("0"))
self.label_2.setText(_("Queued:"))
self.label_queued.setText(_("0"))
self.label_3.setText(_("Checked:"))
self.label_checked.setText(_("0"))
- self.label.setText(_("Active:"))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _("Status"))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _("Debug"))
self.cancelButton.setText(_("Cancel"))
diff --git a/linkcheck/gui/logger.py b/linkcheck/gui/logger.py
index 209b3424..8b313536 100644
--- a/linkcheck/gui/logger.py
+++ b/linkcheck/gui/logger.py
@@ -29,7 +29,7 @@ class GuiLogHandler (Handler, object):
self.widget = widget
def emit (self, record):
- """Emit a record. It gets logged in the progress window."""
+ """Emit a record. It gets logged in the debug widget."""
msg = self.format(record)
self.widget.emit(QtCore.SIGNAL("log_msg(QString)"), msg)
diff --git a/linkcheck/gui/progress.py b/linkcheck/gui/progress.py
index 8868a200..56e03a0b 100644
--- a/linkcheck/gui/progress.py
+++ b/linkcheck/gui/progress.py
@@ -27,7 +27,6 @@ class LinkCheckerProgress (QtGui.QDialog, Ui_ProgressDialog):
self.setupUi(self)
self.progressBar.setMinimum(0)
self.progressBar.setMaximum(0)
- self.textBrowser.setFontFamily("Consolas")
self.connect(self, QtCore.SIGNAL("log_status(int,int,int,float)"), self.log_status)
self.connect(self.cancelButton, QtCore.SIGNAL("clicked()"), self.cancel)
@@ -36,15 +35,8 @@ class LinkCheckerProgress (QtGui.QDialog, Ui_ProgressDialog):
self.label_active.setText(u"%d" % in_progress)
self.label_queued.setText(u"%d" % queued)
- def log_msg (self, msg):
- text = self.textBrowser.toPlainText()
- self.textBrowser.setText(text+msg)
- self.textBrowser.moveCursor(QtGui.QTextCursor.End)
-
def reset (self):
self.cancelButton.setEnabled(True)
- self.tabWidget.setCurrentIndex(0)
- self.textBrowser.setText(u"")
self.label_active.setText(u"0")
self.label_queued.setText(u"0")
self.label_checked.setText(u"0")
diff --git a/linkcheck/gui/ui/debug.ui b/linkcheck/gui/ui/debug.ui
new file mode 100644
index 00000000..2d0e6e40
--- /dev/null
+++ b/linkcheck/gui/ui/debug.ui
@@ -0,0 +1,39 @@
+
+
+ DebugDialog
+
+
+ Qt::ApplicationModal
+
+
+
+ 0
+ 0
+ 564
+ 547
+
+
+
+ LinkChecker debug log
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+
+
+
+
+
+
+
diff --git a/linkcheck/gui/ui/main.ui b/linkcheck/gui/ui/main.ui
index 1400875a..46b5b3c8 100644
--- a/linkcheck/gui/ui/main.ui
+++ b/linkcheck/gui/ui/main.ui
@@ -151,18 +151,19 @@
+
-
@@ -239,6 +240,11 @@
View parent URL source
+
+
+ Debug
+
+
diff --git a/linkcheck/gui/ui/progress.ui b/linkcheck/gui/ui/progress.ui
index 27752759..d0dd3287 100644
--- a/linkcheck/gui/ui/progress.ui
+++ b/linkcheck/gui/ui/progress.ui
@@ -9,8 +9,8 @@
0
0
- 289
- 185
+ 252
+ 179
@@ -27,103 +27,57 @@
-
-
-
- 0
+
+
+ Status
-
-
- Status
-
-
-
- QFormLayout::ExpandingFieldsGrow
-
-
-
-
-
- 0
-
-
-
- -
-
-
- Queued:
-
-
-
-
-
-
- -
-
-
- 0
-
-
-
- -
-
-
- Checked:
-
-
-
- -
-
-
- 0
-
-
-
- -
-
-
- Active:
-
-
-
-
-
-
-
- Debug
-
-
-
-
- 0
- 0
- 271
- 71
-
-
-
- true
-
-
-
-
- 0
- 0
- 265
- 65
-
+
+ -
+
+
+ Active:
-
-
-
- 0
- 0
- 271
- 71
-
-
-
-
-
+
+ -
+
+
+ 0
+
+
+
+ -
+
+
+ Queued:
+
+
+
+
+
+
+ -
+
+
+ 0
+
+
+
+ -
+
+
+ Checked:
+
+
+
+ -
+
+
+ 0
+
+
+
+
-