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 @@ + + + Edit + + + Help - - - - Edit - - + @@ -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 + + + +