Added extra debug dialog.

This commit is contained in:
Bastian Kleineidam 2010-10-14 21:13:28 +02:00
parent d8f78ec50c
commit 85c44d1478
11 changed files with 217 additions and 161 deletions

View file

@ -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

View file

@ -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.</p>
Version 2 or later.</p>
</qt>""") % 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.</p>
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)

37
linkcheck/gui/debug.py Normal file
View file

@ -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"")

View file

@ -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"))

View file

@ -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

View file

@ -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"))

View file

@ -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)

View file

@ -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")

39
linkcheck/gui/ui/debug.ui Normal file
View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DebugDialog</class>
<widget class="QDialog" name="DebugDialog">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>564</width>
<height>547</height>
</rect>
</property>
<property name="windowTitle">
<string>LinkChecker debug log</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTextBrowser" name="textBrowser"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -151,18 +151,19 @@
</property>
<addaction name="actionQuit"/>
</widget>
<widget class="QMenu" name="menuEdit">
<property name="title">
<string>Edit</string>
</property>
<addaction name="actionOptions"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>Help</string>
</property>
<addaction name="actionAbout"/>
<addaction name="actionHelp"/>
</widget>
<widget class="QMenu" name="menuEdit">
<property name="title">
<string>Edit</string>
</property>
<addaction name="actionOptions"/>
<addaction name="actionDebug"/>
</widget>
<addaction name="menuLinkChecka"/>
<addaction name="menuEdit"/>
@ -239,6 +240,11 @@
<string>View parent URL source</string>
</property>
</action>
<action name="actionDebug">
<property name="text">
<string>Debug</string>
</property>
</action>
</widget>
<resources>
<include location="../rc/linkchecker.qrc"/>

View file

@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>289</width>
<height>185</height>
<width>252</width>
<height>179</height>
</rect>
</property>
<property name="windowTitle">
@ -27,103 +27,57 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Status</string>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Status</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<item row="0" column="1">
<widget class="QLabel" name="label_active">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Queued:</string>
</property>
<property name="buddy">
<cstring></cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_queued">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Checked:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="label_checked">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Active:</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Debug</string>
</attribute>
<widget class="QScrollArea" name="scrollArea">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>271</width>
<height>71</height>
</rect>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>265</width>
<height>65</height>
</rect>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Active:</string>
</property>
<widget class="QTextBrowser" name="textBrowser">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>271</width>
<height>71</height>
</rect>
</property>
</widget>
</widget>
</widget>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_active">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Queued:</string>
</property>
<property name="buddy">
<cstring></cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_queued">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Checked:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="label_checked">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>