diff --git a/doc/changelog.txt b/doc/changelog.txt index 23d09ef9..401b89f9 100644 --- a/doc/changelog.txt +++ b/doc/changelog.txt @@ -1,5 +1,9 @@ 7.0 "" (released xx.xx.2011) +Changes: +- Display status info into GUI main window instead of modal window. + Closes: SF bug #3297252 + 6.9 "Cowboy Bebop" (released 6.5.2011) diff --git a/doc/todo.txt b/doc/todo.txt index 6f95d5e9..cdcde043 100644 --- a/doc/todo.txt +++ b/doc/todo.txt @@ -1,6 +1,3 @@ -- [7.0] Put status info into GUI main window, do not make a modal window - for that. - SF bug #3297252 - [7.0] Remember last X checked URLs in GUI. X is configurable. SF bug #3297243 - Port to Python 3.x (will not happen anytime soon though) diff --git a/linkcheck/gui/__init__.py b/linkcheck/gui/__init__.py index 23726a75..95bdfc75 100644 --- a/linkcheck/gui/__init__.py +++ b/linkcheck/gui/__init__.py @@ -63,6 +63,13 @@ def get_app_style (): return QtGui.QStyleFactory.create(style) +def get_icon (name): + """Return QIcon with given pixmap resource name.""" + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap(name), QtGui.QIcon.Normal, QtGui.QIcon.Off) + return icon + + class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow): """The main window displaying checked URLs.""" @@ -90,6 +97,12 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow): # Note: do not use QT assistant here because of the .exe packaging self.assistant = HelpWindow(self, self.get_qhcpath()) self.config_error = None + self.icon_start = get_icon(":/icons/start.png") + self.icon_stop = get_icon(":/icons/stop.png") + self.movie = QtGui.QMovie(":/icons/busy.gif") + self.movie.setCacheMode(QtGui.QMovie.CacheAll) + self.label_busy.setText(u"") + self.label_busy.setMovie(self.movie) # init the rest self.init_treeview() self.connect_widgets() @@ -135,6 +148,7 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow): """Set application status to idle.""" self.status = Status.idle self.set_statusmsg(_("Check finished.")) + self.controlButton.clicked.disconnect(self.checker.cancel) self.checker.finished.connect(set_idle) self.checker.terminated.connect(set_idle) self.log_url_signal.connect(self.model.log_url) @@ -203,13 +217,17 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow): self._status = status if status == Status.idle: self.aggregate = None - self.controlButton.setEnabled(True) self.controlButton.setText(_("Start")) + self.controlButton.setIcon(self.icon_start) + self.controlButton.setEnabled(True) self.actionSave.setEnabled(True) self.actionDebug.setEnabled(self.options.get_options()["debug"]) self.treeView.sortByColumn(0, QtCore.Qt.AscendingOrder) self.treeView.setSortingEnabled(True) self.treeView.scrollToTop() + self.movie.stop() + self.label_busy.hide() + self.menubar.setEnabled(True) elif status == Status.checking: self.treeView.setSortingEnabled(False) self.debug.reset() @@ -218,8 +236,14 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow): self.label_queued.setText(u"0") self.label_checked.setText(u"0") self.set_statusmsg(u"Checking site...") - # XXX disable some commands, reset widgets - self.controlButton.setText(_("Cancel")) + # disable commands + self.menubar.setEnabled(False) + # reset widgets + self.controlButton.setText(_("Stop")) + self.controlButton.setIcon(self.icon_stop) + self.controlButton.clicked.connect(self.checker.cancel) + self.movie.start() + self.label_busy.show() status = property(get_status, set_status) @@ -310,6 +334,7 @@ Version 2 or later. self.controlButton.setEnabled(False) self.set_statusmsg(_(u"Closing pending connections...")) + @QtCore.pyqtSlot() def on_controlButton_clicked (self): """Start or Cancel has been clicked.""" if self.status == Status.idle: diff --git a/linkcheck/gui/checker.py b/linkcheck/gui/checker.py index 950b73eb..33e50071 100644 --- a/linkcheck/gui/checker.py +++ b/linkcheck/gui/checker.py @@ -29,15 +29,15 @@ class CheckerThread (QtCore.QThread): def check (self, aggregate): """Set check variables and start the thread.""" self.aggregate = aggregate - self.parent().controlButton.clicked.connect(self.cancel) # setup the thread and call run() self.start() def cancel (self): """Reset check variables and set stop flag.""" if self.aggregate is not None: - self.aggregate.cancel() + aggregate = self.aggregate self.aggregate = None + aggregate.cancel() def run (self): """Start checking.""" diff --git a/linkcheck/gui/linkchecker_rc.py b/linkcheck/gui/linkchecker_rc.py index e96b4499..f990ef15 100644 --- a/linkcheck/gui/linkchecker_rc.py +++ b/linkcheck/gui/linkchecker_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: Tue Apr 26 14:03:46 2011 +# Created: Mon May 9 20:31:27 2011 # by: The Resource Compiler for PyQt (Qt v4.7.2) # # WARNING! All changes made in this file will be lost! @@ -10,7 +10,7 @@ from PyQt4 import QtCore qt_resource_data = "\ -\x00\x00\x02\xde\ +\x00\x00\x03\x23\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\ @@ -18,46 +18,51 @@ qt_resource_data = "\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\ \x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x5b\x49\x44\ -\x41\x54\x78\xda\xa5\x93\x31\x68\x14\x41\x14\x86\xff\x37\x33\x3b\ -\x7b\x9b\xcb\x5d\x2e\xb9\xd3\x5c\x52\x29\x44\x93\x42\xb0\x50\x2c\ -\xbc\x4a\xec\x2c\x8c\x85\x91\x44\x04\x8b\x34\x12\xd0\x56\x02\x62\ -\x63\x21\x68\x23\x16\x92\x26\xa0\x55\x42\x62\xe1\x69\x91\x2a\x76\ -\x82\x36\x2a\x36\x62\x08\x16\x1a\xc3\x5d\xdc\x35\xe2\x5d\xee\x6e\ -\xf7\x6e\x77\x9c\x5d\xd7\xcd\x69\xec\xfc\xe1\x63\x87\x37\x3b\xff\ -\xbc\xf7\x78\x43\x4a\x29\xfc\x8f\x04\xfe\x12\x9d\x59\x31\x91\x6d\ -\x4e\x13\x63\x53\xc3\x03\xe9\xc1\x00\xe8\xab\xfc\x68\xbf\x57\xc0\ -\x22\xc8\x5c\x56\x8f\x4e\x3b\xe8\xd2\x1f\x19\xd0\xe4\xb3\xf1\x42\ -\x9f\x9c\x3b\x7b\xac\x58\x1c\x1d\xee\x85\x5d\xf3\x40\x00\x06\xb2\ -\x29\xac\x55\x9a\x28\xbf\xb1\x1d\xa7\xee\x8f\xab\x87\xa7\x5e\xec\ -\x31\xa0\x4b\x2b\xa5\x91\x62\xcf\xf3\xf3\x27\x86\xa4\xe0\x0c\xdf\ -\x6a\x2e\xee\x4c\x8d\x81\x08\x98\x5d\x5a\x43\xb6\xd7\x42\x27\x50\ -\x78\xfc\xda\xf1\xd6\x6d\xef\x82\x9a\x3b\x59\x86\x16\xd3\x80\x2e\ -\xaf\xe6\xf3\x39\xab\x5c\x1a\x2b\x48\xbb\xe1\xa3\x52\xef\x20\x9f\ -\x31\x90\x36\x39\x7a\x24\xc7\x50\x2e\x85\x4a\xcd\x87\xdd\x08\x50\ -\x3a\xd4\x2f\x0b\x59\x6b\x8e\xae\xad\x9b\xbb\x3d\x10\x34\x71\x70\ -\x30\x93\x77\x1a\x0a\xa0\x40\x43\xf8\xf8\xb5\x85\xa5\x57\x55\x70\ -\x0e\xac\xae\xd5\x90\xb2\xac\x30\x1e\x71\x60\x7f\xba\x68\x6f\xd4\ -\xa7\x01\x3c\x88\x0c\x0c\x69\x4e\x81\x0b\x54\xb5\x41\x28\xdf\x0f\ -\xd0\x70\x7d\xdc\x78\xfa\x29\x3a\x90\xe9\xed\x01\x0f\xb7\x28\x44\ -\x01\x4c\xc0\x10\xe6\xc5\xc4\xa0\x4d\xe2\xf0\xbb\x6a\x1b\x39\x4b\ -\xc0\x34\x38\xdc\x96\x8b\xea\xdd\xe3\xf8\xad\xc1\xeb\x6f\x61\xa6\ -\x8d\xc8\x40\xfb\xe2\x7b\xcb\x47\x9b\x19\x03\x49\x0f\xc0\x8d\x6d\ -\x4f\x09\x6c\x35\x09\x1b\x75\xc0\x6e\x4b\xb0\x2b\x2f\x13\x03\x5d\ -\x0d\xbe\xec\x00\x1b\x3b\x84\xad\x16\x83\x47\x06\x20\x8c\xfe\xae\ -\x1e\x48\xe7\x57\x7d\x0c\x8a\x28\x02\x2a\x48\x0c\x14\x71\x28\x26\ -\x01\xa2\x18\xa6\xc1\x87\xae\x0c\xe4\x82\x26\xcc\x24\x46\x46\x75\ -\x26\xe2\x22\xbc\x31\x46\xc6\x5f\x73\x71\xd7\xc0\x63\xf3\x3a\xb8\ -\x99\xfc\x40\x2c\xec\x24\x12\x85\x6b\xa2\x68\x2f\x32\x63\xcc\x86\ -\x34\x97\x13\x03\x75\x7f\xc4\x05\x97\x33\x1a\x37\xca\xa0\xe3\xe9\ -\xd8\xd1\xdd\x12\xee\x1d\x01\xbc\x26\x62\xb9\x20\x7e\x4e\xcd\x66\ -\x9c\xbd\xa3\x7c\x6b\xab\x04\xc5\x9e\xb0\xc0\x2f\x14\x45\x13\xc3\ -\x19\x86\x7d\x69\xd2\x83\xa5\xf0\xb9\x65\xc1\xf6\xd8\x26\x80\x19\ -\x75\x33\x5f\xde\x33\xca\x49\xe0\x76\x2d\x8f\x8e\x3b\x01\x45\x93\ -\x8c\x30\xaa\xd9\xd6\x23\x1c\x36\x79\x01\xb9\xed\x79\x75\x75\xc4\ -\xfd\xe7\x63\x22\x22\x09\x20\xd5\x85\xa9\x11\x71\x99\xbe\xa6\xad\ -\xf1\x34\xad\x98\xa6\x3e\xdb\xf9\x09\xcf\x9a\xe3\x95\x25\xec\x84\ -\x76\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\xa0\x49\x44\ +\x41\x54\x78\xda\x75\x93\xdf\x4b\x14\x51\x14\xc7\xbf\x77\xe6\xce\ +\xce\xfe\xd2\x4d\x13\x95\x7e\x2c\x61\x44\x04\x66\x8a\x3f\x88\x0a\ +\x1f\x84\x42\xea\xb1\x87\x20\x24\x88\xac\xe8\x17\x59\x61\x84\x58\ +\x19\x2b\xf4\x90\x69\x50\x20\xf6\xe0\x4b\xf4\x50\x7f\x40\x12\xd9\ +\x4b\x61\x82\xa1\x0f\x45\x68\x92\x8a\x4b\x3d\xb4\x9b\xb3\xcd\xba\ +\xce\xec\xce\xcc\xce\xed\xde\x5d\x56\x54\xf2\x03\x87\x7b\x39\xe7\ +\x7c\xbf\x67\x0e\x33\x43\x18\x63\xd8\x00\xe1\xa1\x88\x18\x9d\x5a\ +\x28\x97\x24\x42\x5a\x6a\x77\xc5\x01\xd8\x3c\x2c\x1e\x2e\xd6\xb0\ +\xd1\x40\xbe\xf6\x74\xa4\x71\x3e\x66\x3c\x2e\xdd\x52\x5c\xbd\xb3\ +\xb2\xb8\x28\xe0\x55\x48\x3c\x61\x1a\x5a\xd2\x98\xad\x2a\xf7\x77\ +\xf4\xb4\x1d\x1e\x03\xe0\xfc\xcf\x40\x3a\x70\x6e\xb0\x4b\xf6\x15\ +\x75\xb7\x1f\xaf\x57\xab\x2a\x43\x50\x15\x19\xa2\x6c\x39\x2e\x62\ +\xba\x81\xb7\x93\x8b\x8e\xa6\x27\x06\x46\x22\x27\xbb\x84\xc9\x3a\ +\x83\xb2\x13\xbd\xb7\xb6\x56\x6e\xef\xbb\x73\xba\x19\x5a\xca\x86\ +\xbe\x62\xc3\xaf\xca\x10\x18\x99\x2c\x8a\x7c\x0a\xb6\x95\xaa\x78\ +\xf9\x71\x16\x73\xf3\xd1\xfb\xdf\x87\xcf\x47\x00\xb0\x9c\x01\x69\ +\xbc\xbe\x97\x96\x56\x4c\xdd\x6e\x6b\xf5\x9b\x16\xcb\x4d\x0d\xfa\ +\x28\xee\x9e\xda\x0f\x41\xe4\xd5\x57\xa4\x4c\x07\x84\x00\x21\xbf\ +\x82\x87\xaf\x3f\x98\x34\xa3\xd5\xa7\xde\xdc\x9b\x96\x20\xa0\x4a\ +\x6f\x73\xdd\x3e\x7f\x5c\xb7\xf8\x64\x0b\x49\xc3\x82\x91\x76\x20\ +\x4b\x44\x84\xb8\xf3\x5c\xbe\xf6\x73\xc9\xc0\x91\xea\x2a\xdf\x4a\ +\x1a\x91\x9c\x14\x02\x82\x06\x22\xab\xf8\xcb\xb3\x05\x96\xcd\x0c\ +\xae\x0e\x8e\x43\x3c\xa1\xc6\xd7\x59\x8b\x57\x51\x00\x89\xd6\xe7\ +\x0c\x48\xcd\xe5\x12\x04\xfd\x61\x22\x11\x2e\xb2\x50\x60\xa4\xe7\ +\x18\x0a\xb4\x3e\x18\x05\x61\x58\x7d\x83\xaa\x42\x00\xb0\x30\xa9\ +\xb9\x52\x42\x91\xf5\x12\x30\x17\xc9\x94\x0d\xaa\x38\xc8\x21\x7b\ +\x70\xa8\xfb\x1d\x3e\xf5\x1e\x85\x20\x95\xa5\x70\xdd\x2c\xf4\xe5\ +\x0c\xf4\x64\x12\xb1\x84\x09\x64\x6d\xc0\x26\x12\x65\xdf\xfa\x35\ +\x72\xf0\x66\x7c\x62\x66\xb1\x82\x28\x1e\x28\xde\x20\x68\x20\x00\ +\x4a\x15\x24\x12\x09\x08\xc6\xa2\x26\xb8\x03\x17\x58\x80\xc5\x4f\ +\x47\x88\x33\x71\x36\xfd\x6c\x89\x42\xe0\xb2\x1f\x70\xd2\x15\x8c\ +\x8b\x2d\xc9\xc3\x7b\x54\xc0\x91\xb0\x0a\x55\x01\x22\xe5\x83\xb9\ +\x40\x5a\x07\xec\xf4\x1c\x38\xf9\x2e\x89\x74\x22\x15\x73\x40\xe4\ +\x7c\xb3\xa2\x42\xeb\x6f\x42\x01\xed\x51\x1d\xa0\xfa\x73\x79\x80\ +\xf0\x44\x54\xec\xda\xb9\xee\x43\x22\x4d\x1d\x43\xf0\x85\x2e\x60\ +\x47\x2d\x10\x2c\x03\xdf\x25\x2f\xa2\xfc\x74\xd2\xf9\x9d\xf5\xdf\ +\xc0\xfc\x38\x60\xea\xcf\xd9\xc4\xc0\xc5\xf5\x06\x1c\x34\x76\x0c\ +\x43\xa6\x67\x20\xd5\x4a\xd8\x13\x02\xec\xdd\xf9\xa9\x9e\x05\x60\ +\xe6\x0f\x24\x67\xd2\x75\x1d\xfb\x05\x3e\x3f\x39\xcb\x38\xab\x06\ +\x6b\x21\x0d\x37\x5a\x54\x1f\x1d\x02\x95\xc3\x56\xc6\xf1\x88\xaa\ +\x12\xf0\xd8\x94\xe1\x97\x65\x5a\xed\xce\x58\xdf\xfb\x4d\xff\xc6\ +\x8d\x48\x35\x97\xc2\xa2\xca\xbe\x0c\x46\xb1\x09\xff\x00\x97\x08\ +\x2c\x5e\x2a\x10\x42\x0c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ \x00\x00\x01\xf3\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -92,6 +97,99 @@ qt_resource_data = "\ \xed\x04\xf9\x30\x17\xe5\xa2\x7c\xe8\x04\x85\x01\xee\x1f\x8d\x42\ \x66\xb3\xf5\x8b\xfe\x99\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ +\x00\x00\x05\xb0\ +\x47\ +\x49\x46\x38\x39\x61\x10\x00\x10\x00\xf6\x00\x00\xff\xff\xff\x00\ +\x00\x00\xfa\xfa\xfa\x92\x92\x92\x88\x88\x88\xee\xee\xee\xc8\xc8\ +\xc8\xd8\xd8\xd8\x9e\x9e\x9e\x00\x00\x00\x8e\x8e\x8e\xc6\xc6\xc6\ +\x32\x32\x32\x52\x52\x52\xec\xec\xec\xa6\xa6\xa6\x94\x94\x94\xf2\ +\xf2\xf2\x82\x82\x82\x1c\x1c\x1c\xb2\xb2\xb2\xa4\xa4\xa4\x9a\x9a\ +\x9a\xf4\xf4\xf4\xf8\xf8\xf8\xa8\xa8\xa8\xce\xce\xce\x44\x44\x44\ +\x0c\x0c\x0c\x60\x60\x60\xde\xde\xde\xe8\xe8\xe8\xbc\xbc\xbc\x2a\ +\x2a\x2a\x36\x36\x36\x46\x46\x46\xd4\xd4\xd4\xc4\xc4\xc4\x3c\x3c\ +\x3c\x4e\x4e\x4e\x3e\x3e\x3e\x48\x48\x48\xd0\xd0\xd0\xca\xca\xca\ +\x5a\x5a\x5a\xb4\xb4\xb4\xea\xea\xea\x70\x70\x70\xac\xac\xac\xb8\ +\xb8\xb8\xba\xba\xba\x5e\x5e\x5e\x5c\x5c\x5c\x62\x62\x62\x86\x86\ +\x86\xe0\xe0\xe0\x7e\x7e\x7e\xfc\xfc\xfc\xa2\xa2\xa2\x18\x18\x18\ +\x2c\x2c\x2c\x56\x56\x56\x04\x04\x04\x50\x50\x50\xcc\xcc\xcc\x38\ +\x38\x38\x58\x58\x58\x1a\x1a\x1a\xf0\xf0\xf0\xd6\xd6\xd6\x9c\x9c\ +\x9c\xe2\xe2\xe2\xe6\xe6\xe6\x40\x40\x40\xaa\xaa\xaa\x24\x24\x24\ +\x20\x20\x20\xae\xae\xae\x72\x72\x72\x4a\x4a\x4a\x34\x34\x34\x6a\ +\x6a\x6a\xd2\xd2\xd2\xc0\xc0\xc0\x26\x26\x26\x7c\x7c\x7c\x42\x42\ +\x42\x54\x54\x54\x0a\x0a\x0a\x08\x08\x08\xb0\xb0\xb0\xe4\xe4\xe4\ +\x4c\x4c\x4c\xf6\xf6\xf6\xb6\xb6\xb6\x66\x66\x66\x68\x68\x68\xdc\ +\xdc\xdc\xa0\xa0\xa0\x12\x12\x12\x22\x22\x22\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\xff\x0b\x4e\ +\x45\x54\x53\x43\x41\x50\x45\x32\x2e\x30\x03\x01\x00\x00\x00\x21\ +\xfe\x1a\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x61\ +\x6a\x61\x78\x6c\x6f\x61\x64\x2e\x69\x6e\x66\x6f\x00\x21\xf9\x04\ +\x09\x08\x00\x00\x00\x2c\x00\x00\x00\x00\x10\x00\x10\x00\x00\x07\ +\x68\x80\x00\x82\x83\x20\x22\x26\x25\x83\x89\x00\x0b\x12\x1a\x00\ +\x21\x09\x09\x28\x8a\x82\x06\x0c\x09\x1b\x1e\x97\x09\x29\x82\x11\ +\x89\x04\x91\x1c\x16\x0b\x23\x27\x2a\x00\x18\x19\x9f\x82\x07\x0d\ +\x13\x1d\x1f\x94\x18\x8a\x0e\x14\x05\x94\x8a\x02\x08\x0f\xb9\x94\ +\x03\x91\x15\xbe\x00\x24\x88\xa1\x09\x16\xc3\xc5\x00\x05\x0a\x10\ +\x17\xc3\xd1\xd2\xa9\xbe\xb4\x89\x11\x19\xd6\x89\xaa\xac\x83\xdd\ +\x24\x24\xde\xd1\x25\x88\xd3\xd1\x81\x00\x21\xf9\x04\x09\x08\x00\ +\x00\x00\x2c\x00\x00\x00\x00\x10\x00\x10\x00\x00\x07\x6b\x80\x00\ +\x82\x83\x07\x34\x35\x37\x83\x89\x8a\x33\x09\x09\x2f\x39\x3a\x3d\ +\x19\x39\x83\x2b\x2f\x1a\x17\x2f\x8d\x38\x10\x3b\x09\x3b\x30\x83\ +\x2c\x09\x0d\x32\x2e\x12\x36\x05\x21\x8d\x09\x35\x83\x2d\x29\x31\ +\x05\x89\x15\x3c\x3e\x3c\x32\x83\x2e\x30\xb3\x8a\x30\x3f\x20\x8a\ +\xc2\xc3\x00\x25\x24\xc4\x82\x24\x25\x82\xc6\xc8\x00\xca\xce\xd1\ +\xd2\x83\x18\xc4\xd5\x89\x11\x19\xd7\x89\x18\x19\x11\x8a\xdf\xc9\ +\xc7\x82\xe1\xc4\x25\xcb\xd3\xc8\x81\x00\x21\xf9\x04\x09\x08\x00\ +\x00\x00\x2c\x00\x00\x00\x00\x10\x00\x10\x00\x00\x07\x68\x80\x00\ +\x82\x83\x02\x08\x0f\x83\x88\x89\x00\x03\x09\x09\x15\x00\x25\x12\ +\x2a\x89\x11\x82\x04\x8d\x16\x40\x41\x09\x26\x45\x83\x11\x19\x18\ +\x00\x05\x0a\x10\x17\x38\x3e\x8d\x46\x88\xa2\x89\x1e\x42\x43\x34\ +\x47\x8a\x8a\x0e\x14\x44\xb4\xb4\x20\x22\x26\x25\x90\x24\xb9\x00\ +\x21\x8d\x28\xbf\xc1\x0c\x8d\x29\xc1\x83\x0b\x23\x27\x93\xcb\xb9\ +\xad\x8a\xd3\x82\xa0\xd5\x82\x18\x19\x95\x88\xdc\x00\x24\xc0\xd6\ +\xcb\x25\xbe\xd1\xd1\x81\x00\x21\xf9\x04\x09\x08\x00\x00\x00\x2c\ +\x00\x00\x00\x00\x10\x00\x10\x00\x00\x07\x67\x80\x00\x82\x83\x84\ +\x85\x86\x82\x25\x25\x87\x83\x11\x83\x24\x24\x00\x44\x0b\x4e\x52\ +\x84\x11\x19\x18\x85\x0f\x49\x09\x51\x85\x99\x85\x48\x4a\x4f\x53\ +\x8b\x85\x1f\x30\x05\xa6\x85\x07\x34\x35\x37\x00\x25\x90\x8b\x33\ +\x09\x09\x2f\xb1\xb3\x87\x2f\xb6\x38\xab\x82\x2e\x12\x36\xaa\xab\ +\x46\x50\x0f\x9f\x86\x10\x4b\x09\x4c\x30\x8c\x98\x85\x21\xb6\x09\ +\x35\x96\x8e\x90\x15\x4c\x09\x54\x32\x8b\x89\x82\x4d\x51\xde\xbf\ +\x86\x81\x00\x21\xf9\x04\x09\x08\x00\x00\x00\x2c\x00\x00\x00\x00\ +\x10\x00\x10\x00\x00\x07\x68\x80\x00\x82\x83\x84\x85\x86\x82\x25\ +\x25\x87\x83\x11\x83\x24\x24\x8c\x85\x11\x19\x18\x86\x18\x19\x8d\ +\x84\x95\x87\x9b\x8b\x9e\x9f\x82\x02\x08\x0f\x88\x90\x8b\x03\x09\ +\x09\x15\x00\x25\xa6\x87\x04\xa9\x16\xa0\x00\x05\x0a\x10\x17\xa0\ +\x0b\x4e\x45\x85\x9d\x83\x2b\x56\x58\x56\xbc\x82\x93\x95\x20\x22\ +\x26\x25\x55\x3e\xa9\x46\x84\x99\x21\xa9\x28\x47\x57\x59\x42\x5b\ +\x87\x0c\xa9\x29\x00\x47\x5a\x1f\x8b\x0b\x23\x27\x2a\x86\x81\x00\ +\x21\xf9\x04\x09\x08\x00\x00\x00\x2c\x00\x00\x00\x00\x10\x00\x10\ +\x00\x00\x07\x67\x80\x00\x82\x83\x84\x85\x86\x82\x25\x25\x87\x83\ +\x11\x83\x24\x24\x8c\x85\x11\x19\x18\x86\x18\x19\x8d\x84\x95\x87\ +\x9b\x8b\x9e\x9f\x87\x25\x90\x9e\x24\x8a\x00\xa2\x9f\xa5\xa0\x8b\ +\x16\x50\x0f\x86\x5d\x20\x5d\x83\x46\x13\x09\x21\x19\x84\x44\x53\ +\x2c\x1a\x83\x5c\x09\xc1\x29\x07\x34\x35\x37\x0f\x49\x09\x60\x83\ +\x19\x43\x09\x3c\x32\x33\xc1\x2f\x1f\x5e\x5f\x0b\x84\x4d\x51\x32\ +\x00\x2f\xc1\x38\xab\x2e\x12\x36\x05\x86\x81\x00\x21\xf9\x04\x09\ +\x08\x00\x00\x00\x2c\x00\x00\x00\x00\x10\x00\x10\x00\x00\x07\x67\ +\x80\x00\x82\x83\x84\x85\x86\x82\x25\x25\x87\x83\x11\x83\x24\x24\ +\x8c\x85\x11\x19\x18\x86\x18\x19\x8d\x84\x95\x87\x9b\x8b\x9e\x20\ +\x22\x26\x8a\x9e\x82\x21\x09\x09\x28\x9e\x24\x8a\x0c\xa7\x29\xaa\ +\x8a\x0b\x23\x27\x2a\xa4\x84\x2b\x4e\x52\xb6\x00\x06\x41\x1c\x4f\ +\x61\x96\x84\x36\xa7\x1c\x16\x02\x08\x0f\x82\x97\x99\x00\x61\x5c\ +\x59\x33\x0e\x03\xa7\x15\x82\xcd\x82\x5b\x5a\x48\x00\x04\xa7\x16\ +\xbb\x05\x0a\x10\x17\x86\x81\x00\x21\xf9\x04\x09\x08\x00\x00\x00\ +\x2c\x00\x00\x00\x00\x10\x00\x10\x00\x00\x07\x68\x80\x00\x82\x83\ +\x84\x85\x82\x02\x62\x3d\x4a\x82\x25\x25\x86\x82\x46\x63\x09\x4c\ +\x19\x00\x24\x24\x83\x11\x84\x5c\x09\x9d\x4f\x85\x18\x19\x9a\x82\ +\x19\x64\x3e\x22\x32\x86\x18\x85\x30\x3f\x31\x8f\x84\x07\x34\x35\ +\x37\xb0\x84\x33\x9d\x2f\xb6\x24\x8e\x2f\x9d\x38\xbb\x8e\x2e\x12\ +\x36\x05\xb6\x85\x11\x32\x02\xc7\x83\x25\x42\x2b\x5d\xaa\x85\x2c\ +\x09\x0d\xaf\x84\xa1\xa3\x82\x53\x5f\x53\x44\x96\x98\x82\xda\x8f\ +\x8d\xcc\xe6\x81\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x03\x4a\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -672,6 +770,10 @@ qt_resource_name = "\ \x00\x73\ \x00\x74\x00\x6f\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ +\x0c\xac\x40\xd6\ +\x00\x62\ +\x00\x75\x00\x73\x00\x79\x00\x2e\x00\x67\x00\x69\x00\x66\ +\x00\x08\ \x0f\x07\x5a\xc7\ \x00\x65\ \x00\x78\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ @@ -719,20 +821,21 @@ qt_resource_name = "\ qt_resource_struct = "\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x02\ -\x00\x00\x00\xde\x00\x00\x00\x00\x00\x01\x00\x00\x18\xf3\ -\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x61\ -\x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x07\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x02\ +\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xec\ +\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x14\x5a\ +\x00\x00\x01\x24\x00\x00\x00\x00\x00\x01\x00\x00\x25\x00\ \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x08\x27\ -\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x68\ -\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x10\x4a\ -\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x16\x1d\ -\x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x02\xe2\ -\x00\x00\x00\xac\x00\x00\x00\x00\x00\x01\x00\x00\x13\x95\ -\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x57\ -\x00\x00\x01\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x22\xd4\ -\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x04\xd9\ +\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x20\ +\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x01\x00\x00\x12\x61\ +\x00\x00\x00\xac\x00\x00\x00\x00\x00\x01\x00\x00\x16\x43\ +\x00\x00\x00\xda\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x16\ +\x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x03\x27\ +\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x19\x8e\ +\x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x22\x50\ +\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x05\x1e\ +\x00\x00\x01\x40\x00\x00\x00\x00\x00\x01\x00\x00\x28\xcd\ +\x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xd2\ " def qInitResources(): diff --git a/linkcheck/gui/linkchecker_ui_main.py b/linkcheck/gui/linkchecker_ui_main.py index 593e5e97..54ad3297 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: Sat May 7 21:08:48 2011 +# Created: Mon May 9 20:42:18 2011 # by: PyQt4 UI code generator 4.8.3 # # WARNING! All changes made in this file will be lost! @@ -63,18 +63,6 @@ class Ui_MainWindow(object): self.horizontalLayout_4.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint) self.horizontalLayout_4.setContentsMargins(0, 0, -1, -1) self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) - self.label_15 = QtGui.QLabel(self.centralwidget) - self.label_15.setObjectName(_fromUtf8("label_15")) - self.horizontalLayout_4.addWidget(self.label_15) - self.label_status = QtGui.QLabel(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.label_status.sizePolicy().hasHeightForWidth()) - self.label_status.setSizePolicy(sizePolicy) - self.label_status.setText(_fromUtf8("")) - self.label_status.setObjectName(_fromUtf8("label_status")) - self.horizontalLayout_4.addWidget(self.label_status) self.label_32 = QtGui.QLabel(self.centralwidget) self.label_32.setObjectName(_fromUtf8("label_32")) self.horizontalLayout_4.addWidget(self.label_32) @@ -96,8 +84,27 @@ class Ui_MainWindow(object): self.label_checked.setMinimumSize(QtCore.QSize(50, 0)) self.label_checked.setObjectName(_fromUtf8("label_checked")) self.horizontalLayout_4.addWidget(self.label_checked) - spacerItem2 = QtGui.QSpacerItem(80, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_4.addItem(spacerItem2) + self.label_15 = QtGui.QLabel(self.centralwidget) + self.label_15.setObjectName(_fromUtf8("label_15")) + self.horizontalLayout_4.addWidget(self.label_15) + self.label_status = QtGui.QLabel(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label_status.sizePolicy().hasHeightForWidth()) + self.label_status.setSizePolicy(sizePolicy) + self.label_status.setText(_fromUtf8("")) + self.label_status.setObjectName(_fromUtf8("label_status")) + self.horizontalLayout_4.addWidget(self.label_status) + self.label_busy = QtGui.QLabel(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(16) + sizePolicy.setVerticalStretch(16) + sizePolicy.setHeightForWidth(self.label_busy.sizePolicy().hasHeightForWidth()) + self.label_busy.setSizePolicy(sizePolicy) + self.label_busy.setMinimumSize(QtCore.QSize(16, 16)) + self.label_busy.setObjectName(_fromUtf8("label_busy")) + self.horizontalLayout_4.addWidget(self.label_busy) self.verticalLayout.addLayout(self.horizontalLayout_4) self.treeView = QtGui.QTreeView(self.centralwidget) self.treeView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) @@ -751,13 +758,14 @@ class Ui_MainWindow(object): self.label.setText(_("URL:")) self.controlButton.setToolTip(_("Start checking the given URL.")) self.controlButton.setText(QtGui.QApplication.translate("MainWindow", "Start", "Start checking URL", QtGui.QApplication.UnicodeUTF8)) - self.label_15.setText(_("Status:")) self.label_32.setText(_("Active:")) self.label_active.setText(_("0")) self.label_30.setText(_("Queued:")) self.label_queued.setText(_("0")) self.label_28.setText(_("Checked:")) self.label_checked.setText(_("0")) + self.label_15.setText(_("Status:")) + self.label_busy.setText(_("O")) self.url_properties.setTitle(_("URL properties")) self.label_2.setText(_("URL")) self.label_3.setText(_("Name")) diff --git a/linkcheck/gui/rc/about.png b/linkcheck/gui/rc/about.png index e1eb7972..cbabb0e5 100644 Binary files a/linkcheck/gui/rc/about.png and b/linkcheck/gui/rc/about.png differ diff --git a/linkcheck/gui/rc/busy.gif b/linkcheck/gui/rc/busy.gif new file mode 100644 index 00000000..078b55fa Binary files /dev/null and b/linkcheck/gui/rc/busy.gif differ diff --git a/linkcheck/gui/rc/linkchecker.qrc b/linkcheck/gui/rc/linkchecker.qrc index 3bf06566..57a963ce 100644 --- a/linkcheck/gui/rc/linkchecker.qrc +++ b/linkcheck/gui/rc/linkchecker.qrc @@ -1,6 +1,7 @@ clear.png + busy.gif save.png copy.png about.png diff --git a/linkcheck/gui/ui/main.ui b/linkcheck/gui/ui/main.ui index 84b69354..66ec646b 100644 --- a/linkcheck/gui/ui/main.ui +++ b/linkcheck/gui/ui/main.ui @@ -115,26 +115,6 @@ 0 - - - - Status: - - - - - - - - 0 - 0 - - - - - - - @@ -196,20 +176,43 @@ - - - Qt::Horizontal + + + Status: - - QSizePolicy::Fixed + + + + + + + 0 + 0 + - + + + + + + + + + + 16 + 16 + + + - 80 - 20 + 16 + 16 - + + O + +