[Pymoul-svn] SF.net SVN: pymoul: [42] pymoul/trunk/src/moul
Status: Alpha
Brought to you by:
tiran
From: <ti...@us...> - 2007-01-17 13:37:56
|
Revision: 42 http://pymoul.svn.sourceforge.net/pymoul/?rev=42&view=rev Author: tiran Date: 2007-01-17 05:37:52 -0800 (Wed, 17 Jan 2007) Log Message: ----------- PING box works but I need to use a seperate thread or event loop. The main loops freezes when the ping method is invoked. Modified Paths: -------------- pymoul/trunk/src/moul/qt/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.ui pymoul/trunk/src/moul/server/ping.py pymoul/trunk/src/moul/server/tests/test_ping.py Modified: pymoul/trunk/src/moul/qt/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/mainwindow.py 2007-01-17 12:52:49 UTC (rev 41) +++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-01-17 13:37:52 UTC (rev 42) @@ -33,6 +33,8 @@ from moul.qt.ui.mainwindow import Ui_MainWindow from moul.time.cavern import CavernTime from moul.file.wdysini import GraphicsIni +from moul.server.ping import ServerList +from moul.server.ping import isSocketError class MainWindow(QtGui.QMainWindow, Ui_MainWindow): def __init__(self): @@ -42,6 +44,7 @@ self._timezone_init() self._graphics_init() + self._ping_init() # ************************************************************************ # graphics @@ -99,3 +102,41 @@ ct = self._caverntime() self.dt_cavern.setDateTime(ct['cavern']) self.dt_pacific.setDateTime(ct['pacific']) + + # ************************************************************************ + # ping + def _ping_init(self): + """init ping tab + """ + self.connect(self.button_ping, SIGNAL("clicked()"), self.on_button_ping_clicked) + + def _ping_servers(self): + # TODO: Use a seperate thread! + self.text_ping.clear() + insertText = self.text_ping.insertPlainText + + serverlist = ServerList() + # dns + for server in serverlist: + insertText("%s ... " % server.name) + result = server.dns() + if isSocketError(result): + insertText("DNS: FAILED\n") + continue + + insertText("dns: %0.3f " % result) + result = server.portping() + if isSocketError(result): + insertText("ping: FAILED\n") + continue + insertText("pin: %0.3f\n" % result) + + @pyqtSignature("") + def on_button_ping_clicked(self): + """SIGNAL: clicked() + """ + self.button_ping.setEnabled(False) + try: + self._ping_servers() + finally: + self.button_ping.setEnabled(True) Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-01-17 12:52:49 UTC (rev 41) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-01-17 13:37:52 UTC (rev 42) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'src\moul\qt\ui\mainwindow.ui' # -# Created: Wed Jan 17 13:36:40 2007 +# Created: Wed Jan 17 14:23:33 2007 # by: PyQt4 UI code generator 4.1.1 # # WARNING! All changes made in this file will be lost! @@ -341,14 +341,18 @@ self.gb_servers.setGeometry(QtCore.QRect(10,0,421,341)) self.gb_servers.setObjectName("gb_servers") - self.but_ping = QtGui.QPushButton(self.gb_servers) - self.but_ping.setGeometry(QtCore.QRect(330,310,75,24)) - self.but_ping.setObjectName("but_ping") - self.text_ping = QtGui.QTextEdit(self.gb_servers) self.text_ping.setGeometry(QtCore.QRect(10,20,401,271)) self.text_ping.setReadOnly(True) self.text_ping.setObjectName("text_ping") + + self.button_ping = QtGui.QPushButton(self.gb_servers) + self.button_ping.setGeometry(QtCore.QRect(330,300,75,24)) + self.button_ping.setObjectName("button_ping") + + self.label_3 = QtGui.QLabel(self.gb_servers) + self.label_3.setGeometry(QtCore.QRect(170,300,151,16)) + self.label_3.setObjectName("label_3") self.tabWidget.addTab(self.tab,"") self.tab_4 = QtGui.QWidget() @@ -372,7 +376,7 @@ MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) - self.tabWidget.setCurrentIndex(2) + self.tabWidget.setCurrentIndex(3) QtCore.QObject.connect(self.buttonbox_rresavcl,QtCore.SIGNAL("rejected()"),MainWindow.close) QtCore.QMetaObject.connectSlotsByName(MainWindow) @@ -406,11 +410,12 @@ self.gb_dnitime.setTitle(QtGui.QApplication.translate("MainWindow", "D\'ni time", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_time), QtGui.QApplication.translate("MainWindow", "Time", None, QtGui.QApplication.UnicodeUTF8)) self.gb_servers.setTitle(QtGui.QApplication.translate("MainWindow", "Ping servers", None, QtGui.QApplication.UnicodeUTF8)) - self.but_ping.setText(QtGui.QApplication.translate("MainWindow", "Ping", None, QtGui.QApplication.UnicodeUTF8)) self.text_ping.setHtml(QtGui.QApplication.translate("MainWindow", "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;\">\n" "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) + self.button_ping.setText(QtGui.QApplication.translate("MainWindow", "Ping", None, QtGui.QApplication.UnicodeUTF8)) + self.label_3.setText(QtGui.QApplication.translate("MainWindow", "TODO: Use a seperate thread", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QtGui.QApplication.translate("MainWindow", "Servers", None, QtGui.QApplication.UnicodeUTF8)) self.label_6.setText(QtGui.QApplication.translate("MainWindow", "pyMoul tools", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), QtGui.QApplication.translate("MainWindow", "About", None, QtGui.QApplication.UnicodeUTF8)) Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.ui =================================================================== --- pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-01-17 12:52:49 UTC (rev 41) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-01-17 13:37:52 UTC (rev 42) @@ -113,7 +113,7 @@ <enum>QTabWidget::North</enum> </property> <property name="currentIndex" > - <number>2</number> + <number>3</number> </property> <widget class="QWidget" name="tab_graphics" > <attribute name="title" > @@ -669,19 +669,6 @@ <property name="title" > <string>Ping servers</string> </property> - <widget class="QPushButton" name="but_ping" > - <property name="geometry" > - <rect> - <x>330</x> - <y>310</y> - <width>75</width> - <height>24</height> - </rect> - </property> - <property name="text" > - <string>Ping</string> - </property> - </widget> <widget class="QTextEdit" name="text_ping" > <property name="geometry" > <rect> @@ -701,6 +688,32 @@ <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string> </property> </widget> + <widget class="QPushButton" name="button_ping" > + <property name="geometry" > + <rect> + <x>330</x> + <y>300</y> + <width>75</width> + <height>24</height> + </rect> + </property> + <property name="text" > + <string>Ping</string> + </property> + </widget> + <widget class="QLabel" name="label_3" > + <property name="geometry" > + <rect> + <x>170</x> + <y>300</y> + <width>151</width> + <height>16</height> + </rect> + </property> + <property name="text" > + <string>TODO: Use a seperate thread</string> + </property> + </widget> </widget> </widget> <widget class="QWidget" name="tab_4" > Modified: pymoul/trunk/src/moul/server/ping.py =================================================================== --- pymoul/trunk/src/moul/server/ping.py 2007-01-17 12:52:49 UTC (rev 41) +++ pymoul/trunk/src/moul/server/ping.py 2007-01-17 13:37:52 UTC (rev 42) @@ -24,7 +24,7 @@ from moul.server.serverlist import PORT from moul.server.serverlist import SERVER_LIST -def isError(stat): +def isSocketError(stat): return isinstance(stat, socket.error) class Server(object): @@ -94,7 +94,7 @@ class ServerList(object): """A list of servers to test """ - def __init__(self, names, port, timeout=3.0): + def __init__(self, names=SERVER_LIST, port=PORT, timeout=3.0): self._names = names self._port = int(port) self._timeout = float(timeout) Modified: pymoul/trunk/src/moul/server/tests/test_ping.py =================================================================== --- pymoul/trunk/src/moul/server/tests/test_ping.py 2007-01-17 12:52:49 UTC (rev 41) +++ pymoul/trunk/src/moul/server/tests/test_ping.py 2007-01-17 13:37:52 UTC (rev 42) @@ -26,7 +26,7 @@ from moul.server.ping import Server from moul.server.ping import ServerList -from moul.server.ping import isError +from moul.server.ping import isSocketError from moul.server.serverlist import SERVER_LIST from moul.server.serverlist import PORT @@ -42,7 +42,7 @@ def test_ping_bogus(self): server = Server('bogus.nonworking.example.foo', PORT) result = server.dns() - self.failUnless(isError(result)) + self.failUnless(isSocketError(result)) result = server.portping() self.failUnless(result is False) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |