pymoul-svn Mailing List for pyMoul (Page 2)
Status: Alpha
Brought to you by:
tiran
You can subscribe to this list here.
2007 |
Jan
(89) |
Feb
(108) |
Mar
(62) |
Apr
(8) |
May
(9) |
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|
From: <ti...@us...> - 2007-03-21 12:33:29
|
Revision: 274 http://pymoul.svn.sourceforge.net/pymoul/?rev=274&view=rev Author: tiran Date: 2007-03-21 05:33:30 -0700 (Wed, 21 Mar 2007) Log Message: ----------- Branched pymoul/trunk r269 to branches/before_no_crypt_20070321 Added Paths: ----------- pymoul/branches/before_no_crypt_20070321/ Copied: pymoul/branches/before_no_crypt_20070321 (from rev 273, pymoul/trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-21 12:28:35
|
Revision: 273 http://pymoul.svn.sourceforge.net/pymoul/?rev=273&view=rev Author: tiran Date: 2007-03-21 05:28:30 -0700 (Wed, 21 Mar 2007) Log Message: ----------- grrr ... I thought that .../UruLive Preferences/... was wrong Also fixed the getMoulInstallDir search function. Now it should detect MOUL in /Applications and ~/Applications Modified Paths: -------------- pymoul/trunk/src/moul/osdependent/darwin/__init__.py Modified: pymoul/trunk/src/moul/osdependent/darwin/__init__.py =================================================================== --- pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-03-20 18:59:01 UTC (rev 272) +++ pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-03-21 12:28:30 UTC (rev 273) @@ -31,7 +31,7 @@ LOG.warning('Mac/Darwin support is experimental') HOME = os.path.expanduser('~') -MOUL_DIR = "%s/Library/Preferences/UruLive/Preferences/p_drive/My Documents/Uru Live" % HOME +MOUL_DIR = "%s/Library/Preferences/UruLive Preferences/p_drive/My Documents/Uru Live" % HOME APP_PATH = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/transgaming/c_drive/Program Files/Uru Live/" APP_NAME = "Uru Live.app" EXEC_NAME = "???" # XXX @@ -59,7 +59,7 @@ """Get path to MOUL install dir """ for path in LOCATIONS: - if os.path.isfile(os.path.join(path, EXEC_NAME)): + if os.path.isfile(os.path.join(path, UPDATER)): LOG.info("Uru directory found: %s" % path) return path LOG.warning("Uru directory NOT found! Search path was: \n %s" % This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-20 18:59:09
|
Revision: 272 http://pymoul.svn.sourceforge.net/pymoul/?rev=272&view=rev Author: tiran Date: 2007-03-20 11:59:01 -0700 (Tue, 20 Mar 2007) Log Message: ----------- More mkdir fixes Modified Paths: -------------- pymoul/trunk/src/moul/file/plasmalog.py Modified: pymoul/trunk/src/moul/file/plasmalog.py =================================================================== --- pymoul/trunk/src/moul/file/plasmalog.py 2007-03-20 17:42:38 UTC (rev 271) +++ pymoul/trunk/src/moul/file/plasmalog.py 2007-03-20 18:59:01 UTC (rev 272) @@ -58,14 +58,15 @@ if not os.path.isdir(self._srcdir): LOG.warning("%s is not a directory" % self._srcdir) - if not self.isPlasmaLogDir(): - self._ispldir = False - LOG.warning("%s is not a plasma log directory" % self._srcdir) else: - self._ispldir = True - if not os.path.isdir(self._destdir): - LOG.info("Creating chatlog directory %s" % self._destdir) - os.mkdir(self._destdir) + if not self.isPlasmaLogDir(): + self._ispldir = False + LOG.warning("%s is not a plasma log directory" % self._srcdir) + else: + self._ispldir = True + if not os.path.isdir(self._destdir): + LOG.info("Creating chatlog directory %s" % self._destdir) + os.mkdir(self._destdir) def setZip(self, boolean): """Set ZIP flag This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-20 17:45:30
|
Revision: 271 http://pymoul.svn.sourceforge.net/pymoul/?rev=271&view=rev Author: tiran Date: 2007-03-20 10:42:38 -0700 (Tue, 20 Mar 2007) Log Message: ----------- Workaround for new semantic of createTree Modified Paths: -------------- pymoul/trunk/src/moul/file/directory.py pymoul/trunk/src/moul/file/tests/test_directory.py Modified: pymoul/trunk/src/moul/file/directory.py =================================================================== --- pymoul/trunk/src/moul/file/directory.py 2007-03-20 17:37:52 UTC (rev 270) +++ pymoul/trunk/src/moul/file/directory.py 2007-03-20 17:42:38 UTC (rev 271) @@ -210,7 +210,7 @@ """ created = [] if not self.exists(): - raise OSError("Basepath doesn't exist") # XXX + raise OSError("Basepath %s doesn't exist" % self._basepath) # XXX os.mkdir(self._basepath) created.append(self._basepath) for key in self._dirmapping: Modified: pymoul/trunk/src/moul/file/tests/test_directory.py =================================================================== --- pymoul/trunk/src/moul/file/tests/test_directory.py 2007-03-20 17:37:52 UTC (rev 270) +++ pymoul/trunk/src/moul/file/tests/test_directory.py 2007-03-20 17:42:38 UTC (rev 271) @@ -69,6 +69,7 @@ self.failIf(self.urudir.factory('audioini').exists()) self.failIf(self.urudir.factory('graphicsini').exists()) + os.mkdir(tmpdir) # XXX self.urudir.createTree() self.failUnless(self.urudir.exists()) self.urudir.initializeFactories() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-20 17:45:27
|
Revision: 270 http://pymoul.svn.sourceforge.net/pymoul/?rev=270&view=rev Author: tiran Date: 2007-03-20 10:37:52 -0700 (Tue, 20 Mar 2007) Log Message: ----------- Infrastructure update (xxxreport, languages ...) Modified Paths: -------------- pymoul/trunk/Makefile.in pymoul/trunk/doc/TODO.txt pymoul/trunk/doc/XXXreport.html pymoul/trunk/src/moul/qt/i18n/pymoul_de.ts pymoul/trunk/src/moul/qt/i18n/pymoul_es.ts pymoul/trunk/src/moul/qt/i18n/pymoul_fr.ts pymoul/trunk/src/moul/qt/i18n/pymoul_it.ts pymoul/trunk/src/moul/qt/i18n/pymoul_nl.ts Modified: pymoul/trunk/Makefile.in =================================================================== --- pymoul/trunk/Makefile.in 2007-03-20 17:19:45 UTC (rev 269) +++ pymoul/trunk/Makefile.in 2007-03-20 17:37:52 UTC (rev 270) @@ -67,6 +67,7 @@ clean: find . \( -name '*.o' -o -name '*~' -o -name '*.so' -o -name '*.py[cod]' -o -name '*.dll' \) -exec rm -f {} \; rm -rf build + rm -rf doc/html realclean: clean rm -f TAGS @@ -102,3 +103,5 @@ serverlist: PYTHONPATH="src" $(PYTHON) src/moul/server/serverlist.py +infrastructure: clean inplace ui languages xxxreport propset fixlineendings doc_html serverlist + Modified: pymoul/trunk/doc/TODO.txt =================================================================== --- pymoul/trunk/doc/TODO.txt 2007-03-20 17:19:45 UTC (rev 269) +++ pymoul/trunk/doc/TODO.txt 2007-03-20 17:37:52 UTC (rev 270) @@ -12,7 +12,8 @@ * connect QThread.terminate() slots with its parents close/destroy signal handler * clean documents/journal/localization naming - * table model for PING tab + * Redesign mkdir/makedirs of data directory + * show meaningful error message when a directory is missing future ------ Modified: pymoul/trunk/doc/XXXreport.html =================================================================== --- pymoul/trunk/doc/XXXreport.html 2007-03-20 17:19:45 UTC (rev 269) +++ pymoul/trunk/doc/XXXreport.html 2007-03-20 17:37:52 UTC (rev 270) @@ -3,11 +3,11 @@ <body> <h1>pyMoul - Developer report tools: XXX/TODO/FIXME comments</h1> -<p>Generated on Mon, 12 Mar 2007 11:58:47 CET, based on Zope 3's XXX report</p> +<p>Generated on Tue, 20 Mar 2007 18:33:33 CET, based on Zope 3's XXX report</p> <hr> <h3>Summary</h3> <p> - There are currently 88 XXX/TODO/FIXME comments. + There are currently 98 XXX/TODO/FIXME comments. </p> <hr/> <h3>Listing</h3> @@ -27,10 +27,14 @@ base-691- from zope.tales.tales import TALESTracebackSupplement base-692- from zope.pagetemplate.pagetemplate \ base-693- import PageTemplateTracebackSupplement -</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/chatlog.py.svn-base:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-217- if not os.path.isdir(self._archivedir): -base-218- LOG.warning("%s is not a directory" % self._archivedir) -base-219- return +</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/chatlog.py.svn-base:106</b><br/><pre> return False # XXX ??? +base-107- return True +base-108- +base-109- def findLogs(self): +</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/chatlog.py.svn-base:217</b><br/><pre> # TODO: inefficient, compare list with directory content +base-218- if not os.path.isdir(self._archivedir): +base-219- LOG.warning("%s is not a directory" % self._archivedir) +base-220- return </pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:112</b><br/><pre> # XXX use struct base-113- if header is None: base-114- fd = self._fd @@ -39,10 +43,10 @@ base-128- if size is None: base-129- size = self.getFileSize() base-130- leading = 4* [None] -</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:267</b><br/><pre> # XXX: move checks to copy method! -base-268- if not os.path.isfile(fixed): -base-269- self._tocheck.append((ki, fixed)) -base-270- continue +</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:268</b><br/><pre> # XXX: move checks to copy method! +base-269- if not os.path.isfile(fixed): +base-270- self._tocheck.append((ki, fixed)) +base-271- continue </pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:157</b><br/><pre> # TODO: write me base-158- pass base-159- @@ -59,6 +63,14 @@ base-60- return len([name for name in os.listdir(path) base-61- if os.path.isfile(os.path.join(path, name))]) base-62- +</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:202</b><br/><pre> #os.makedirs(path) # XXX +base-203- return path +base-204- +base-205- def createTree(self): +</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:213</b><br/><pre> raise OSError("Basepath doesn't exist") # XXX +base-214- os.mkdir(self._basepath) +base-215- created.append(self._basepath) +base-216- for key in self._dirmapping: </pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:105</b><br/><pre> # TODO: more base-106- base-107- def test_publicapi_create(self): @@ -91,7 +103,11 @@ fd = open(os.path.join(path, fname), 'wb') fd.write('dummy') fd.close() -</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:216</b><br/><pre> # TODO: inefficient, compare list with directory content +</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:106</b><br/><pre> return False # XXX ??? + return True + + def findLogs(self): +</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:217</b><br/><pre> # TODO: inefficient, compare list with directory content if not os.path.isdir(self._archivedir): LOG.warning("%s is not a directory" % self._archivedir) return @@ -103,7 +119,7 @@ if size is None: size = self.getFileSize() leading = 4* [None] -</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:267</b><br/><pre> # XXX: move checks to copy method! +</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:268</b><br/><pre> # XXX: move checks to copy method! if not os.path.isfile(fixed): self._tocheck.append((ki, fixed)) continue @@ -123,6 +139,14 @@ return len([name for name in os.listdir(path) if os.path.isfile(os.path.join(path, name))]) +</pre></li><li><b>File: utilities/../src/moul/file/directory.py:202</b><br/><pre> #os.makedirs(path) # XXX + return path + + def createTree(self): +</pre></li><li><b>File: utilities/../src/moul/file/directory.py:213</b><br/><pre> raise OSError("Basepath doesn't exist") # XXX + os.mkdir(self._basepath) + created.append(self._basepath) + for key in self._dirmapping: </pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:74</b><br/><pre> # XXX: dos format base-75- return data.replace("\r\n", "\n") base-76- @@ -186,38 +210,38 @@ base-290- del self._kiimage_progressbar base-291- self.pb_kiimage_repair.setEnabled(True) base-292- mb = qtutils.infoMB(self, -</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:478</b><br/><pre> # TODO: thread safety! -base-479- self.servers = servers -base-480- if not self.isRunning(): -base-481- self.start() -</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:484</b><br/><pre> # TODO: thread safety! -base-485- # emit a list of names first -base-486- for i, server in enumerate(self.servers): -base-487- self.emit(SIGNAL("server(int, const QString&)"), i, server.name) -</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:522</b><br/><pre> # TODO check this -base-523- self._running = False -base-524- self.condition.wakeAll() -base-525- +</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:477</b><br/><pre> # TODO: thread safety! +base-478- self.servers = servers +base-479- if not self.isRunning(): +base-480- self.start() +</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:483</b><br/><pre> # TODO: thread safety! +base-484- # emit a list of names first +base-485- for i, server in enumerate(self.servers): +base-486- self.emit(SIGNAL("server(int, const QString&)"), i, server.name) +</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:521</b><br/><pre> # TODO check this +base-522- self._running = False +base-523- self.condition.wakeAll() +base-524- </pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/errorhandler.py.svn-base:45</b><br/><pre> # TODO: translation aware base-46- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback)) base-47- if getattr(sys, 'frozen', False): base-48- try: -</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/dninumbers.py.svn-base:74</b><br/><pre> self.dnitime_timer.setInterval(FACTOR_SP*1000.0/1.0) # XXX: smooth -base-75- #fself.dnitime_timer.setCallable(self.clockscene.timeEvent) -base-76- -base-77- # time zone -base:78: # TODO: change timer from every second to once a minute? -base-79- self.timezone_timer = QtCore.QTimer(self.context) -base-80- self.timezone_timer.setInterval(1000) # 1 sec -base-81- ct = self.caverntime.info() -</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/dninumbers.py.svn-base:101</b><br/><pre> # TODO: needs optimization? run only when timer tab is active -base-102- for name in ('sb_hahr', 'sb_yahr', 'sb_gahrtahvo', -base-103- 'sb_tahvo', 'sb_gorahn', 'sb_prorahn'): -base-104- self.connect(getattr(self, name), SIGNAL("valueChanged(int)"), -</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/dninumbers.py.svn-base:576</b><br/><pre> # XXX: parent? -base-577- #self.clocktext = QtGui.QGraphicsTextItem(None, self) -base-578- #self.clocktext.setPos(0, yoff+2*height+2*space) -base-579- # circular day clock +</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/dninumbers.py.svn-base:80</b><br/><pre> self.dnitime_timer.setInterval(FACTOR_SP*1000.0/1.0) # XXX: smooth +base-81- #fself.dnitime_timer.setCallable(self.clockscene.timeEvent) +base-82- +base-83- # time zone +base:84: # TODO: change timer from every second to once a minute? +base-85- self.timezone_timer = QtCore.QTimer(self.context) +base-86- self.timezone_timer.setInterval(1000) # 1 sec +base-87- ct = self.caverntime.info() +</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/dninumbers.py.svn-base:107</b><br/><pre> # TODO: needs optimization? run only when timer tab is active +base-108- for name in ('sb_hahr', 'sb_yahr', 'sb_gahrtahvo', +base-109- 'sb_tahvo', 'sb_gorahn', 'sb_prorahn'): +base-110- self.connect(getattr(self, name), SIGNAL("valueChanged(int)"), +</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/dninumbers.py.svn-base:679</b><br/><pre> # XXX: parent? +base-680- #self.clocktext = QtGui.QGraphicsTextItem(None, self) +base-681- #self.clocktext.setPos(0, yoff+2*height+2*space) +base-682- # circular day clock </pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:150</b><br/><pre> # FIXME: signal doesn't do anything self.emit(SIGNAL("close()")) event.accept() @@ -226,38 +250,50 @@ del self._kiimage_progressbar self.pb_kiimage_repair.setEnabled(True) mb = qtutils.infoMB(self, -</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:478</b><br/><pre> # TODO: thread safety! +</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:477</b><br/><pre> # TODO: thread safety! self.servers = servers if not self.isRunning(): self.start() -</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:484</b><br/><pre> # TODO: thread safety! +</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:483</b><br/><pre> # TODO: thread safety! # emit a list of names first for i, server in enumerate(self.servers): self.emit(SIGNAL("server(int, const QString&)"), i, server.name) -</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:522</b><br/><pre> # TODO check this +</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:521</b><br/><pre> # TODO check this self._running = False self.condition.wakeAll() - + </pre></li><li><b>File: utilities/../src/moul/qt/errorhandler.py:45</b><br/><pre> # TODO: translation aware LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback)) if getattr(sys, 'frozen', False): try: -</pre></li><li><b>File: utilities/../src/moul/qt/dninumbers.py:74</b><br/><pre> self.dnitime_timer.setInterval(FACTOR_SP*1000.0/1.0) # XXX: smooth +</pre></li><li><b>File: utilities/../src/moul/qt/dninumbers.py:80</b><br/><pre> self.dnitime_timer.setInterval(FACTOR_SP*1000.0/1.0) # XXX: smooth #fself.dnitime_timer.setCallable(self.clockscene.timeEvent) # time zone self.timezone_timer = QtCore.QTimer(self.context) self.timezone_timer.setInterval(1000) # 1 sec ct = self.caverntime.info() -</pre></li><li><b>File: utilities/../src/moul/qt/dninumbers.py:101</b><br/><pre> # TODO: needs optimization? run only when timer tab is active +</pre></li><li><b>File: utilities/../src/moul/qt/dninumbers.py:107</b><br/><pre> # TODO: needs optimization? run only when timer tab is active for name in ('sb_hahr', 'sb_yahr', 'sb_gahrtahvo', 'sb_tahvo', 'sb_gorahn', 'sb_prorahn'): self.connect(getattr(self, name), SIGNAL("valueChanged(int)"), -</pre></li><li><b>File: utilities/../src/moul/qt/dninumbers.py:576</b><br/><pre> # XXX: parent? +</pre></li><li><b>File: utilities/../src/moul/qt/dninumbers.py:679</b><br/><pre> # XXX: parent? #self.clocktext = QtGui.QGraphicsTextItem(None, self) #self.clocktext.setPos(0, yoff+2*height+2*space) # circular day clock -</pre></li><li><b>File: utilities/../src/moul/osdependent/__init__.py:126</b><br/><pre># XXX: what about cygwin, bsd and others? +</pre></li><li><b>File: utilities/../src/moul/time/.svn/text-base/podage.py.svn-base:62</b><br/><pre># XXX Uru's main game server is off 3min 35sec +base-63-BASE_DT = datetime(2007, 3, 7, 1, 7, 0, tzinfo=UTC) +base-64-#BASE_DT = datetime(2007, 3, 7, 1, 10, 9, tzinfo=UTC) +base-65- +</pre></li><li><b>File: utilities/../src/moul/time/podage.py:62</b><br/><pre># XXX Uru's main game server is off 3min 35sec +BASE_DT = datetime(2007, 3, 7, 1, 7, 0, tzinfo=UTC) +#BASE_DT = datetime(2007, 3, 7, 1, 10, 9, tzinfo=UTC) + +</pre></li><li><b>File: utilities/../src/moul/osdependent/__init__.py:46</b><br/><pre> # XXX: disabled for now + #pkg_resources.require("enumprocess>=0.1.1") + +from enumprocess import getPidNames +</pre></li><li><b>File: utilities/../src/moul/osdependent/__init__.py:127</b><br/><pre># XXX: what about cygwin, bsd and others? _thismodule = sys.modules[__name__] if __WIN32__: from moul.osdependent import win32 as osdep_win32 @@ -269,15 +305,19 @@ base-38-UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater" base-39-LOCATIONS = [ base-40- "/Applications", -</pre></li><li><b>File: utilities/../src/moul/osdependent/.svn/text-base/__init__.py.svn-base:126</b><br/><pre># XXX: what about cygwin, bsd and others? -base-127-_thismodule = sys.modules[__name__] -base-128-if __WIN32__: -base-129- from moul.osdependent import win32 as osdep_win32 -</pre></li><li><b>File: utilities/../src/binaryfile/.svn/text-base/tests.py.svn-base:107</b><br/><pre> # XXX: no test data -base-108- pass -base-109- -base-110- def test_string0(self): -</pre></li><li><b>File: utilities/../src/binaryfile/tests.py:107</b><br/><pre> # XXX: no test data +</pre></li><li><b>File: utilities/../src/moul/osdependent/.svn/text-base/__init__.py.svn-base:46</b><br/><pre> # XXX: disabled for now +base-47- #pkg_resources.require("enumprocess>=0.1.1") +base-48- +base-49-from enumprocess import getPidNames +</pre></li><li><b>File: utilities/../src/moul/osdependent/.svn/text-base/__init__.py.svn-base:127</b><br/><pre># XXX: what about cygwin, bsd and others? +base-128-_thismodule = sys.modules[__name__] +base-129-if __WIN32__: +base-130- from moul.osdependent import win32 as osdep_win32 +</pre></li><li><b>File: utilities/../src/binaryfile/.svn/text-base/tests.py.svn-base:108</b><br/><pre> # XXX: no test data +base-109- pass +base-110- +base-111- def test_string0(self): +</pre></li><li><b>File: utilities/../src/binaryfile/tests.py:108</b><br/><pre> # XXX: no test data pass def test_string0(self): @@ -581,14 +621,14 @@ base-317-base-47-base-158- pass base-318-base-48-base-159- base-319-base-49-base-160-class Constrain(object): -base:320:base:50:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-321-base-51-base-555- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-322-base-52-base-556- # microphon missing -> OS mixer -base-323-base-53-base-557- } -base:324:base:54:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-325-base-55-base-643- -base-326-base-56-base-644-class GraphicsIni(ConfFile): -base-327-base-57-base-645- _filename = 'graphics.ini' +base:320:base:50:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:556</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check +base-321-base-51-base-557- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui +base-322-base-52-base-558- # microphon missing -> OS mixer +base-323-base-53-base-559- } +base:324:base:54:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:644</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. +base-325-base-55-base-645- +base-326-base-56-base-646-class GraphicsIni(ConfFile): +base-327-base-57-base-647- _filename = 'graphics.ini' base:328:base:58:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:59</b><br/><pre> # TODO: fnmatch base-329-base-59-base-60- return len([name for name in os.listdir(path) base-330-base-60-base-61- if os.path.isfile(os.path.join(path, name))]) @@ -602,7 +642,7 @@ base-338-base-68-base-116-class AudioIniTest(GenericIniTest): base-339-base-69-base-117- enc = aud_enc base:340:base:70:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:152</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-341-base-71-base-153- +base-341-base-71-base-153- base-342-base-72-base-154- p.screenres = 0 base-343-base-73-base-155- eq(p._get('Graphics.Width'), 800) base:344:base:74:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/utils.py.svn-base:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 @@ -618,1992 +658,2340 @@ base-354-base-84-class AudioIniTest(GenericIniTest): base-355-base-85- enc = aud_enc base:356:base:86:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:152</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-357-base-87- +base-357-base-87- base-358-base-88- p.screenres = 0 base-359-base-89- eq(p._get('Graphics.Width'), 800) -base:360:base:90:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:105</b><br/><pre> # TODO: more -base-361-base-91- -base-362-base-92- def test_publicapi_create(self): -base-363-base-93- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc)) -base:364:base:94:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:116</b><br/><pre> # TODO: more -base-365-base-95- -base-366-base-96-class AudioIniTest(GenericIniTest): -base-367-base-97- enc = aud_enc -base:368:base:98:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:154</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-369-base-99- -base-370-base-100- p.screenres = 0 -base-371-base-101- eq(p._get('Graphics.Width'), 800) -base:372:base:102:</pre></li><li><b>File: utilities/../src/moul/file/tests/utils.py:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 -base-373-base-103- fd = open(os.path.join(path, fname), 'wb') -base-374-base-104- fd.write('dummy') -base-375-base-105- fd.close() -base:376:base:106:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-377-base-107- if not os.path.isdir(self._archivedir): -base-378-base-108- LOG.warning("%s is not a directory" % self._archivedir) -base-379-base-109- return -base:380:base:110:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct -base-381-base-111- if header is None: -base-382-base-112- fd = self._fd -base-383-base-113- fd.seek(0) -base:384:base:114:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:127</b><br/><pre> # XXX use struct -base-385-base-115- if size is None: -base-386-base-116- size = self.getFileSize() -base-387-base-117- leading = 4* [None] -base:388:base:118:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:267</b><br/><pre> # XXX: move checks to copy method! -base-389-base-119- if not os.path.isfile(fixed): -base-390-base-120- self._tocheck.append((ki, fixed)) -base-391-base-121- continue -base:392:base:122:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:157</b><br/><pre> # TODO: write me -base-393-base-123- pass -base-394-base-124- -base-395-base-125-class Constrain(object): -base:396:base:126:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-397-base-127- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-398-base-128- # microphon missing -> OS mixer -base-399-base-129- } -base:400:base:130:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-401-base-131- -base-402-base-132-class GraphicsIni(ConfFile): -base-403-base-133- _filename = 'graphics.ini' -base:404:base:134:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:112</b><br/><pre> # XXX use struct -base-405-base-135- if header is None: -base-406-base-136- fd = self._fd -base-407-base-137- fd.seek(0) -base:408:base:138:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:127</b><br/><pre> # XXX use struct -base-409-base-139- if size is None: -base-410-base-140- size = self.getFileSize() -base-411-base-141- leading = 4* [None] -base:412:base:142:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:267</b><br/><pre> # XXX: move checks to copy method! -base-413-base-143- if not os.path.isfile(fixed): -base-414-base-144- self._tocheck.append((ki, fixed)) -base-415-base-145- else: -base:416:base:146:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:157</b><br/><pre> # TODO: write me -base-417-base-147- pass -base-418-base-148- -base-419-base-149-class Constrain(object): -base:420:base:150:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-421-base-151- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-422-base-152- # microphon missing -> OS mixer -base-423-base-153- } -base:424:base:154:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-425-base-155- -base-426-base-156-class GraphicsIni(ConfFile): -base-427-base-157- _filename = 'graphics.ini' -base:428:base:158:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-429-base-159- if not os.path.isdir(self._archivedir): -base-430-base-160- LOG.warning("%s is not a directory" % self._archivedir) -base-431-base-161- return -base:432:base:162:</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch -base-433-base-163- return len([name for name in os.listdir(path) -base-434-base-164- if os.path.isfile(os.path.join(path, name))]) -base-435-base-165- -base:436:base:166:</pre></li><li><b>File: utilities/../src/moul/file/directory.py~:59</b><br/><pre> # TODO: fnmatch -base-437-base-167- return len([name for name in os.listdir(path) -base-438-base-168- if os.path.isfile(os.path.join(path, name))]) -base-439-base-169- -base:440:base:170:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:76</b><br/><pre> # XXX: dos format -base-441-base-171-base-77- return data.replace("\r\n", "\n") -base-442-base-172-base-78- -base-443-base-173-base-79-def encryptWDYS(instr, fout): -base:444:base:174:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:86</b><br/><pre> # XXX: dos format -base-445-base-175-base-87- instr = instr.replace("\n", "\r\n") -base-446-base-176-base-88- fout.seek(0) -base-447-base-177-base-89- fout.write(HEADER) -base:448:base:178:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:28</b><br/><pre># TODO: use BinaryFile -base-449-base-179-base-29- -base-450-base-180-base-30-def list2int(lst): -base-451-base-181-base-31- return [ord(s) for s in lst] -base:452:base:182:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:72</b><br/><pre> # XXX NotImplemented -base-453-base-183-base-73- raise NotImplementedError -base-454-base-184-base-74- -base-455-base-185-base-75-def decipher(crypt, size, key): -base:456:base:186:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/binary.py.svn-base:293</b><br/><pre> if size > 1024: # XXX: ??? -base-457-base-187-base-294- raise ValueError("string is too long: %i" % size) -base-458-base-188-base-295- if self.version == 5: -base-459-base-189-base-296- size |= 0xF000 -base:460:base:190:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/binary.py.svn-base:315</b><br/><pre> if size > 1024: # XXX: ??? -base-461-base-191-base-316- raise ValueError("size '%i' > 1024 at position %s(%s)" % -base-462-base-192-base-317- (size, fd.tell(), repr(fd))) -base-463-base-193-base-318- if self.version == 5: -base:464:base:194:base:319: # XXX: testme -base-465-base-195-base-320- # read data as tuple of integeres -base-466-base-196-base-321- data = fd.readPacked("<%iI" % size) -base-467-base-197-base-322- # OR integers with 0xff and write their char equivalent to string -base:468:base:198:</pre></li><li><b>File: utilities/../src/moul/crypt/tests/.svn/text-base/test_binary.py.svn-base:98</b><br/><pre> # XXX: no test data -base-469-base-199-base-99- pass -base-470-base-200-base-100- -base-471-base-201-base-101- def test_string0(self): -base:472:base:202:</pre></li><li><b>File: utilities/../src/moul/crypt/tests/test_binary.py:98</b><br/><pre> # XXX: no test data -base-473-base-203- pass -base-474-base-204- -base-475-base-205- def test_string0(self): -base:476:base:206:</pre></li><li><b>File: utilities/../src/moul/crypt/tests/test_binary.py~:98</b><br/><pre> # XXX: no test data -base-477-base-207- pass -base-478-base-208- -base-479-base-209- def test_string0(self): -base:480:base:210:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:76</b><br/><pre> # XXX: dos format -base-481-base-211- return data.replace("\r\n", "\n") -base-482-base-212- -base-483-base-213-def encryptWDYS(instr, fout): -base:484:base:214:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:86</b><br/><pre> # XXX: dos format -base-485-base-215- instr = instr.replace("\n", "\r\n") -base-486-base-216- fout.seek(0) -base-487-base-217- fout.write(HEADER) -base:488:base:218:</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py~:293</b><br/><pre> if size > 1024: # XXX: ??? -base-489-base-219- raise ValueError("string is too long: %i" % size) -base-490-base-220- if self.version == 5: -base-491-base-221- size |= 0xF000 -base:492:base:222:</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py~:315</b><br/><pre> if size > 1024: # XXX: ??? -base-493-base-223- raise ValueError("size '%i' > 1024 at position %s(%s)" % -base-494-base-224- (size, fd.tell(), repr(fd))) -base-495-base-225- if self.version == 5: -base:496:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:229</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:28</b><br/><pre># TODO: use BinaryFile -base-497-base-230- -base-498-base-231-def list2int(lst): -base-499-base-232- return [ord(s) for s in lst] -base:500:base:233:</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:72</b><br/><pre> # XXX NotImplemented -base-501-base-234- raise NotImplementedError -base-502-base-235- -base-503-base-236-def decipher(crypt, size, key): -base:504:base:237:</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:293</b><br/><pre> if size > 1024: # XXX: ??? -base-505-base-238- raise ValueError("string is too long: %i" % size) -base-506-base-239- if self.version == 5: -base-507-base-240- size |= 0xF000 -base:508:base:241:</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:315</b><br/><pre> if size > 1024: # XXX: ??? -base-509-base-242- raise ValueError("size '%i' > 1024 at position %s(%s)" % -base-510-base-243- (size, fd.tell(), repr(fd))) -base-511-base-244- if self.version == 5: -base:512:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:248</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:154</b><br/><pre> # FIXME: signal doesn't do anything -base-513-base-249-base-155- self.emit(SIGNAL("close()")) -base-514-base-250-base-156- event.accept() -base-515-base-251-base-157- event.ignore() -base:516:base:252:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-517-base-253-base-294- del self._kiimage_progressbar -base-518-base-254-base-295- self.pb_kiimage_repair.setEnabled(True) -base-519-base-255-base-296- mb = qtutils.infoMB(self, -base:520:base:256:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:392</b><br/><pre> # TODO: change timer from every second to every minute -base-521-base-257-base-393- self._timezone_timer = QtCore.QTimer(self) -base-522-base-258-base-394- self._timezone_timer.setInterval(1000) # 1 sec -base:523:base:259:base:395: # TODO: needs optimization? run only when timer tab is active -base-524-base-260-base-396- self.connect(self._timezone_timer, SIGNAL('timeout()'), -base-525-base-261-base-397- self.on_timezone_timer_timeout) -base-526-base-262-base-398- self._timezone_timer.start() -base:527:base:263:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:507</b><br/><pre> # TODO: thread safety! -base-528-base-264-base-508- self.servers = servers -base-529-base-265-base-509- if not self.isRunning(): -base-530-base-266-base-510- self.start() -base:531:base:267:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:513</b><br/><pre> # TODO: thread safety! -base-532-base-268-base-514- # emit a list of names first -base-533-base-269-base-515- for server in self.servers: -base-534-base-270-base-516- self.emit(SIGNAL("server(const QString&)"), server.name) -base:535:base:271:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:551</b><br/><pre> # TODO check this -base-536-base-272-base-552- self._running = False -base-537-base-273-base-553- self.condition.wakeAll() -base-538-base-274-base-554- -base:539:base:275:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/errorhandler.py.svn-base:45</b><br/><pre> # TODO: translation aware -base-540-base-276-base-46- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback)) -base-541-base-277-base-47- if getattr(sys, 'frozen', False): -base-542-base-278-base-48- try: -base:543:base:279:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:154</b><br/><pre> # FIXME: signal doesn't do anything -base-544-base-280- self.emit(SIGNAL("close()")) -base-545-base-281- event.accept() -base-546-base-282- event.ignore() -base:547:base:283:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-548-base-284- del self._kiimage_progressbar -base-549-base-285- self.pb_kiimage_repair.setEnabled(True) -base-550-base-286- mb = qtutils.infoMB(self, -base:551:base:287:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:392</b><br/><pre> # TODO: change timer from every second to every minute -base-552-base-288- self._timezone_timer = QtCore.QTimer(self) -base-553-base-289- self._timezone_timer.setInterval(1000) # 1 sec -base-554-base-290- self.connect(self._timezone_timer, SIGNAL('timeout()'), -base:555:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:293</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:507</b><br/><pre> # TODO: thread safety! -base-556-base-294- self.servers = servers -base-557-base-295- if not self.isRunning(): -base-558-base-296- self.start() -base:559:base:297:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:513</b><br/><pre> # TODO: thread safety! -base-560-base-298- # emit a list of names first -base-561-base-299- for server in self.servers: -base-562-base-300- self.emit(SIGNAL("server(const QString&)"), server.name) -base:563:base:301:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:551</b><br/><pre> # TODO check this -base-564-base-302- self._running = False -base-565-base-303- self.condition.wakeAll() -base-566-base-304- -base:567:base:305:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:154</b><br/><pre> # FIXME: signal doesn't do anything -base-568-base-306- self.emit(SIGNAL("close()")) -base-569-base-307- event.accept() -base-570-base-308- event.ignore() -base:571:base:309:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-572-base-310- del self._kiimage_progressbar -base-573-base-311- self.pb_kiimage_repair.setEnabled(True) -base-574-base-312- mb = qtutils.infoMB(self, -base:575:base:313:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:392</b><br/><pre> # TODO: change timer from every second to every minute -base-576-base-314- self._timezone_timer = QtCore.QTimer(self) -base-577-base-315- self._timezone_timer.setInterval(1000) # 1 sec -base-578-base-316- self.connect(self._timezone_timer, SIGNAL('timeout()'), -base:579:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:319</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:507</b><br/><pre> # TODO: thread safety! -base-580-base-320- self.servers = servers -base-581-base-321- if not self.isRunning(): -base-582-base-322- self.start() -base:583:base:323:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:513</b><br/><pre> # TODO: thread safety! -base-584-base-324- # emit a list of names first -base-585-base-325- for server in self.servers: -base-586-base-326- self.emit(SIGNAL("server(const QString&)"), server.name) -base:587:base:327:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:551</b><br/><pre> # TODO check this -base-588-base-328- self._running = False -base-589-base-329- self.condition.wakeAll() -base-590-base-330- -base:591:base:331:</pre></li><li><b>File: utilities/../src/moul/qt/errorhandler.py:45</b><br/><pre> # TODO: translation aware -base-592-base-332- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback)) -base-593-base-333- if getattr(sys, 'frozen', False): -base-594-base-334- try: -base:595:base:335:</pre></li><li><b>File: utilities/../src/moul/osdependent/__init__.py:120</b><br/><pre># XXX: what about cygwin, bsd and others? -base-596-base-336-_thismodule = sys.modules[__name__] -base-597-base-337-if __WIN32__: -base-598-base-338- from moul.osdependent import win32 as osdep_win32 -base:599:base:339:</pre></li><li><b>File: utilities/../src/moul/osdependent/darwin/__init__.py:37</b><br/><pre>EXEC_NAME = "???" # XXX -base-600-base-340-UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater" -base-601-base-341-LOCATIONS = [ -base-602-base-342- "/Applications", -base:603:base:343:</pre></li><li><b>File: utilities/../src/moul/osdependent/darwin/.svn/text-base/__init__.py.svn-base:37</b><br/><pre>EXEC_NAME = "???" # XXX -base-604-base-344-base-38-UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater" -base-605-base-345-base-39-LOCATIONS = [ -base-606-base-346-base-40- "/Applications", -base:607:base:347:</pre></li><li><b>File: utilities/../src/moul/osdependent/darwin/__init__.py~:37</b><br/><pre>EXEC_NAME = "???" # XXX -base-608-base-348-UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater" -base-609-base-349-LOCATIONS = [ -base-610-base-350- "/Applications", -base:611:base:351:</pre></li><li><b>File: utilities/../src/moul/osdependent/.svn/text-base/__init__.py.svn-base:120</b><br/><pre># XXX: what about cygwin, bsd and others? -base-612-base-352-base-121-_thismodule = sys.modules[__name__] -base-613-base-353-base-122-if __WIN32__: -base-614-base-354-base-123- from moul.osdependent import win32 as osdep_win32 -base:615:base:355:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:14</b><br/><pre><ol><li><b>File: utilities/../.svn/text-base/test.py.svn-base:548</b><br/><pre> # XXX bug: doctest may report several failures in one test, they are -base-616-base-356-base-15-base-549- # separated by a horizontal dash line. Only the first one of -base-617-base-357-base-16-base-550- # them is now colorized properly. -base-618-base-358-base-17-base-551- header = lines[0] -base:619:base:359:base:18:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:603</b><br/><pre> # TODO: Scrape and colorize the traceback. -base-620-base-360-base-19-base-604- result.append(self.colorize('doctest_got', line)) -base-621-base-361-base-20-base-605- elif remaining[0] == 'Differences (ndiff with -expected +actual):': -base-622-base-362-base-21-base-606- result.append(self.colorize('doctest_title', remaining.pop(0))) # E. raised: -base:623:base:363:base:22:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:623</b><br/><pre> # TODO: We only deal with the output from Zope 3's doctest module. -base-624-base-364-base-23-base-624- # A colorizer for the Python's doctest module would be nice too. -base-625-base-365-base-24-base-625- if doctest: -base-626-base-366-base-25-base-626- # If we have a doctest, we do not care about this header. All the -base:627:base:367:base:26:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:690</b><br/><pre> # TODO these should be hookable -base-628-base-368-base-27-base-691- from zope.tales.tales import TALESTracebackSupplement -base-629-base-369-base-28-base-692- from zope.pagetemplate.pagetemplate \ -base-630-base-370-base-29-base-693- import PageTemplateTracebackSupplement -base:631:base:371:base:30:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/chatlog.py.svn-base:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-632-base-372-base-31-base-217- if not os.path.isdir(self._archivedir): -base-633-base-373-base-32-base-218- LOG.warning("%s is not a directory" % self._archivedir) -base-634-base-374-base-33-base-219- return -base:635:base:375:base:34:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:112</b><br/><pre> # XXX use struct -base-636-base-376-base-35-base-113- if header is None: -base-637-base-377-base-36-base-114- fd = self._fd -base-638-base-378-base-37-base-115- fd.seek(0) -base:639:base:379:base:38:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:127</b><br/><pre> # XXX use struct -base-640-base-380-base-39-base-128- if size is None: -base-641-base-381-base-40-base-129- size = self.getFileSize() -base-642-base-382-base-41-base-130- leading = 4* [None] -base:643:base:383:base:42:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:267</b><br/><pre> # XXX: move checks to copy method! -base-644-base-384-base-43-base-268- if not os.path.isfile(fixed): -base-645-base-385-base-44-base-269- self._tocheck.append((ki, fixed)) -base-646-base-386-base-45-base-270- continue -base:647:base:387:base:46:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:157</b><br/><pre> # TODO: write me -base-648-base-388-base-47-base-158- pass -base-649-base-389-base-48-base-159- -base-650-base-390-base-49-base-160-class Constrain(object): -base:651:base:391:base:50:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-652-base-392-base-51-base-555- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-653-base-393-base-52-base-556- # microphon missing -> OS mixer -base-654-base-394-base-53-base-557- } -base:655:base:395:base:54:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-656-base-396-base-55-base-643- -base-657-base-397-base-56-base-644-class GraphicsIni(ConfFile): -base-658-base-398-base-57-base-645- _filename = 'graphics.ini' -base:659:base:399:base:58:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:59</b><br/><pre> # TODO: fnmatch -base-660-base-400-base-59-base-60- return len([name for name in os.listdir(path) -base-661-base-401-base-60-base-61- if os.path.isfile(os.path.join(path, name))]) -base-662-base-402-base-61-base-62- -base:663:base:403:base:62:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:105</b><br/><pre> # TODO: more -base-664-base-404-base-63-base-106- -base-665-base-405-base-64-base-107- def test_publicapi_create(self): -base-666-base-406-base-65-base-108- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc)) -base:667:base:407:base:66:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:116</b><br/><pre> # TODO: more -base-668-base-408-base-67-base-117- -base-669-base-409-base-68-base-118-class AudioIniTest(GenericIniTest): -base-670-base-410-base-69-base-119- enc = aud_enc -base:671:base:411:base:70:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:154</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-672-base-412-base-71-base-155- -base-673-base-413-base-72-base-156- p.screenres = 0 -base-674-base-414-base-73-base-157- eq(p._get('Graphics.Width'), 800) -base:675:base:415:base:74:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/utils.py.svn-base:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 -base-676-base-416-base-75-base-81- fd = open(os.path.join(path, fname), 'wb') -base-677-base-417-base-76-base-82- fd.write('dummy') -base-678-base-418-base-77-base-83- fd.close() -base:679:base:419:base:78:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:105</b><br/><pre> # TODO: more -base-680-base-420-base-79- -base-681-base-421-base-80- def test_publicapi_create(self): -base-682-base-422-base-81- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc)) -base:683:base:423:base:82:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:116</b><br/><pre> # TODO: more -base-684-base-424-base-83- -base-685-base-425-base-84-class AudioIniTest(GenericIniTest): -base-686-base-426-base-85- enc = aud_enc -base:687:base:427:base:86:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:154</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-688-base-428-base-87- -base-689-base-429-base-88- p.screenres = 0 -base-690-base-430-base-89- eq(p._get('Graphics.Width'), 800) -base:691:base:431:base:90:</pre></li><li><b>File: utilities/../src/moul/file/tests/utils.py:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 -base-692-base-432-base-91- fd = open(os.path.join(path, fname), 'wb') -base-693-base-433-base-92- fd.write('dummy') -base-694-base-434-base-93- fd.close() -base:695:base:435:base:94:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-696-base-436-base-95- if not os.path.isdir(self._archivedir): -base-697-base-437-base-96- LOG.warning("%s is not a directory" % self._archivedir) -base-698-base-438-base-97- return -base:699:base:439:base:98:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct -base-700-base-440-base-99- if header is None: -base-701-base-441-base-100- fd = self._fd -base-702-base-442-base-101- fd.seek(0) -base:703:base:443:base:102:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:127</b><br/><pre> # XXX use struct -base-704-base-444-base-103- if size is None: -base-705-base-445-base-104- size = self.getFileSize() -base-706-base-446-base-105- leading = 4* [None] -base:707:base:447:base:106:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:267</b><br/><pre> # XXX: move checks to copy method! -base-708-base-448-base-107- if not os.path.isfile(fixed): -base-709-base-449-base-108- self._tocheck.append((ki, fixed)) -base-710-base-450-base-109- continue -base:711:base:451:base:110:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:157</b><br/><pre> # TODO: write me -base-712-base-452-base-111- pass -base-713-base-453-base-112- -base-714-base-454-base-113-class Constrain(object): -base:715:base:455:base:114:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-716-base-456-base-115- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-717-base-457-base-116- # microphon missing -> OS mixer -base-718-base-458-base-117- } -base:719:base:459:base:118:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-720-base-460-base-119- -base-721-base-461-base-120-class GraphicsIni(ConfFile): -base-722-base-462-base-121- _filename = 'graphics.ini' -base:723:base:463:base:122:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:112</b><br/><pre> # XXX use struct -base-724-base-464-base-123- if header is None: -base-725-base-465-base-124- fd = self._fd -base-726-base-466-base-125- fd.seek(0) -base:727:base:467:base:126:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:127</b><br/><pre> # XXX use struct -base-728-base-468-base-127- if size is None: -base-729-base-469-base-128- size = self.getFileSize() -base-730-base-470-base-129- leading = 4* [None] -base:731:base:471:base:130:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:267</b><br/><pre> # XXX: move checks to copy method! -base-732-base-472-base-131- if not os.path.isfile(fixed): -base-733-base-473-base-132- self._tocheck.append((ki, fixed)) -base-734-base-474-base-133- else: -base:735:base:475:base:134:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:157</b><br/><pre> # TODO: write me -base-736-base-476-base-135- pass -base-737-base-477-base-136- -base-738-base-478-base-137-class Constrain(object): -base:739:base:479:base:138:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-740-base-480-base-139- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-741-base-481-base-140- # microphon missing -> OS mixer -base-742-base-482-base-141- } -base:743:base:483:base:142:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-744-base-484-base-143- -base-745-base-485-base-144-class GraphicsIni(ConfFile): -base-746-base-486-base-145- _filename = 'graphics.ini' -base:747:base:487:base:146:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-748-base-488-base-147- if not os.path.isdir(self._archivedir): -base-749-base-489-base-148- LOG.warning("%s is not a directory" % self._archivedir) -base-750-base-490-base-149- return -base:751:base:491:base:150:</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch -base-752-base-492-base-151- return len([name for name in os.listdir(path) -base-753-base-493-base-152- if os.path.isfile(os.path.join(path, name))]) -base-754-base-494-base-153- -base:755:base:495:base:154:</pre></li><li><b>File: utilities/../src/moul/file/directory.py~:59</b><br/><pre> # TODO: fnmatch -base-756-base-496-base-155- return len([name for name in os.listdir(path) -base-757-base-497-base-156- if os.path.isfile(os.path.join(path, name))]) -base-758-base-498-base-157- -base:759:base:499:base:158:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:77</b><br/><pre> # XXX: dos format -base-760-base-500-base-159-base-78- return data.replace("\r\n", "\n") -base-761-base-501-base-160-base-79- -base-762-base-502-base-161-base-80-def encryptWDYS(instr, fout): -base:763:base:503:base:162:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:87</b><br/><pre> # XXX: dos format -base-764-base-504-base-163-base-88- instr = instr.replace("\n", "\r\n") -base-765-base-505-base-164-base-89- fout.seek(0) -base-766-base-506-base-165-base-90- fout.write(HEADER) -base:767:base:507:base:166:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:71</b><br/><pre> # XXX NotImplemented -base-768-base-508-base-167-base-72- raise NotImplementedError -base-769-base-509-base-168-base-73- -base-770-base-510-base-169-base-74-def decipher(crypt, size, key): -base:771:base:511:base:170:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:77</b><br/><pre> # XXX: dos format -base-772-base-512-base-171- return data.replace("\r\n", "\n") -base-773-base-513-base-172- -base-774-base-514-base-173-def encryptWDYS(instr, fout): -base:775:base:515:base:174:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:87</b><br/><pre> # XXX: dos format -base-776-base-516-base-175- instr = instr.replace("\n", "\r\n") -base-777-base-517-base-176- fout.seek(0) -base-778-base-518-base-177- fout.write(HEADER) -base:779:base:519:base:178:</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:71</b><br/><pre> # XXX NotImplemented -base-780-base-520-base-179- raise NotImplementedError -base-781-base-521-base-180- -base-782-base-522-base-181-def decipher(crypt, size, key): -base:783:base:523:base:182:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:152</b><br/><pre> # FIXME: signal doesn't do anything -base-784-base-524-base-183-base-153- self.emit(SIGNAL("close()")) -base-785-base-525-base-184-base-154- event.accept() -base-786-base-526-base-185-base-155- event.ignore() -base:787:base:527:base:186:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:291</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-788-base-528-base-187-base-292- del self._kiimage_progressbar -base-789-base-529-base-188-base-293- self.pb_kiimage_repair.setEnabled(True) -base-790-base-530-base-189-base-294- mb = qtutils.infoMB(self, -base:791:base:531:base:190:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:390</b><br/><pre> # TODO: change timer from every second to every minute -base-792-base-532-base-191-base-391- self._timezone_timer = timer = QtCore.QTimer(self) -base-793-base-533-base-192-base-392- timer.setInterval(1000) # 1 sec -base:794:base:534:base:193:base:393: # TODO: needs optimization? run only when timer tab is active -base-795-base-535-base-194-base-394- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout) -base-796-base-536-base-195-base-395- timer.start() -base-797-base-537-base-196-base-396- -base:798:base:538:base:197:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:487</b><br/><pre> # TODO: thread safety! -base-799-base-539-base-198-base-488- self.servers = servers -base-800-base-540-base-199-base-489- if not self.isRunning(): -base-801-base-541-base-200-base-490- self.start() -base:802:base:542:base:201:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:493</b><br/><pre> # TODO: thread safety! -base-803-base-543-base-202-base-494- # emit a list of names first -base-804-base-544-base-203-base-495- for server in self.servers: -base-805-base-545-base-204-base-496- self.emit(SIGNAL("server(const QString&)"), server.name) -base:806:base:546:base:205:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:531</b><br/><pre> # TODO check this -base-807-base-547-base-206-base-532- self._running = False -base-808-base-548-base-207-base-533- self.condition.wakeAll() -base-809-base-549-base-208-base-534- -base:810:base:550:base:209:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/errorhandler.py.svn-base:45</b><br/><pre> # TODO: translation aware -base-811-base-551-base-210-base-46- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback)) -base-812-base-552-base-211-base-47- if getattr(sys, 'frozen', False): -base-813-base-553-base-212-base-48- try: -base:814:base:554:base:213:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:151</b><br/><pre> # FIXME: signal doesn't do anything -base-815-base-555-base-214- self.emit(SIGNAL("close()")) -base-816-base-556-base-215- event.accept() -base-817-base-557-base-216- event.ignore() -base:818:base:558:base:217:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:290</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-819-base-559-base-218- del self._kiimage_progressbar -base-820-base-560-base-219- self.pb_kiimage_repair.setEnabled(True) -base-821-base-561-base-220- mb = qtutils.infoMB(self, -base:822:base:562:base:221:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:389</b><br/><pre> # TODO: change timer from every second to every minute -base-823-base-563-base-222- self._timezone_timer = timer = QtCore.QTimer(self) -base-824-base-564-base-223- timer.setInterval(1000) # 1 sec -base-825-base-565-base-224- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout) -base:826:base:566:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:227</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:486</b><br/><pre> # TODO: thread saf... [truncated message content] |
From: <ti...@us...> - 2007-03-20 17:28:39
|
Revision: 269 http://pymoul.svn.sourceforge.net/pymoul/?rev=269&view=rev Author: tiran Date: 2007-03-20 10:19:45 -0700 (Tue, 20 Mar 2007) Log Message: ----------- Changed mkdir/makedirs in moul.file and added more logging. The factories mustn't create the directories when its parent directories are missing. Modified Paths: -------------- pymoul/trunk/src/moul/file/chatlog.py pymoul/trunk/src/moul/file/directory.py pymoul/trunk/src/moul/file/kiimage.py Modified: pymoul/trunk/src/moul/file/chatlog.py =================================================================== --- pymoul/trunk/src/moul/file/chatlog.py 2007-03-19 21:08:20 UTC (rev 268) +++ pymoul/trunk/src/moul/file/chatlog.py 2007-03-20 17:19:45 UTC (rev 269) @@ -91,7 +91,7 @@ def clear(self): """Clear results and check the existence of directories - + @return: state of directories, True if everything is ok @rtype: bool """ @@ -99,10 +99,11 @@ if not os.path.isdir(self._srcdir): LOG.warning("%s is not a directory" % self._srcdir) return False - if not os.path.isdir(self._destdir): - LOG.info("Creating chatlog directory %s" % self._destdir) - os.mkdir(self._destdir) - return False + else: + if not os.path.isdir(self._destdir): + LOG.info("Creating chatlog directory %s" % self._destdir) + os.mkdir(self._destdir) + return False # XXX ??? return True def findLogs(self): Modified: pymoul/trunk/src/moul/file/directory.py =================================================================== --- pymoul/trunk/src/moul/file/directory.py 2007-03-19 21:08:20 UTC (rev 268) +++ pymoul/trunk/src/moul/file/directory.py 2007-03-20 17:19:45 UTC (rev 269) @@ -62,7 +62,7 @@ class AbstractUruDirectory(object): """Abstract class for an Uru directory - + @cvar _dirmapping: A mapping of name S{->} subpath @type _dirmapping: dict @cvar _factories: A list of factories name S{->} (callable, name tuples) C{_dirmapping} @@ -80,6 +80,12 @@ @type basepath: str """ self._basepath = basepath + if not self.exists(): + LOG.warning("Basepath %s does not exist for %s!" % + (self._basepath, self.__class__.__name__)) + else: + LOG.debug("Using basepath %s for %s" % + (self._basepath, self.__class__.__name__)) for key in self._factories: if key in self.__class__.__dict__: raise AttributeError("Name %s is reserved and can't be used " @@ -103,10 +109,9 @@ @rtype: str """ if name and name != '.': - path = self._dirmapping[name] + return os.path.join(self._basepath, self._dirmapping[name]) else: - path = '' - return os.path.join(self._basepath, path) + return self._basepath def factory(self, name): """Factory - creates instances to handle subdirectories and files @@ -135,7 +140,7 @@ class UruGameDataDirectory(AbstractUruDirectory): """Uru game directory handler - + An uru game directory contains the launcher, explorer, age files, sound files, localizations and other stuff. """ @@ -152,7 +157,7 @@ class UruPersonalDataDirectory(AbstractUruDirectory): """Uru personal data handler - + An uru personal data directory contains per user data like audio and graphics settings, KI shots, avatar images, logs and pyMoul specific data. @@ -193,7 +198,8 @@ if not name or name == '.': raise ValueError("Cannot create() basedir") path = self.get(name) - os.makedirs(path) + os.mkdir(path) + #os.makedirs(path) # XXX return path def createTree(self): @@ -203,7 +209,8 @@ @rtype: list of str """ created = [] - if not self.exists(''): + if not self.exists(): + raise OSError("Basepath doesn't exist") # XXX os.mkdir(self._basepath) created.append(self._basepath) for key in self._dirmapping: Modified: pymoul/trunk/src/moul/file/kiimage.py =================================================================== --- pymoul/trunk/src/moul/file/kiimage.py 2007-03-19 21:08:20 UTC (rev 268) +++ pymoul/trunk/src/moul/file/kiimage.py 2007-03-20 17:19:45 UTC (rev 269) @@ -226,14 +226,15 @@ if not os.path.isdir(srcdir): LOG.warning("%s is not a directory" % srcdir) - if not os.path.isdir(destdir): - LOG.info("Creating fixed images directory %s" % destdir) - os.mkdir(destdir) + else: + if not os.path.isdir(destdir): + LOG.info("Creating fixed images directory %s" % destdir) + os.mkdir(destdir) @staticmethod def mkFixedName(path, name, dest): """Make new new based on the name of the KI image - + @param path: directory where the file lives @type path: str @param name: name of the image w/o path This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-19 21:58:26
|
Revision: 267 http://pymoul.svn.sourceforge.net/pymoul/?rev=267&view=rev Author: tiran Date: 2007-03-19 13:56:14 -0700 (Mon, 19 Mar 2007) Log Message: ----------- Fixed typo in getPyMoulDataDir Modified Paths: -------------- pymoul/trunk/src/moul/osdependent/darwin/__init__.py pymoul/trunk/src/moul/osdependent/linux/__init__.py Modified: pymoul/trunk/src/moul/osdependent/darwin/__init__.py =================================================================== --- pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-03-19 13:35:53 UTC (rev 266) +++ pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-03-19 20:56:14 UTC (rev 267) @@ -28,7 +28,7 @@ LOG = getLogger('moul.darwin') -LOG.critical('Darwin/Mac support is not tested') +LOG.warning('Mac/Darwin support is experimental') HOME = os.path.expanduser('~') MOUL_DIR = "%s/Library/Preferences/UruLive/Preferences/p_drive/My Documents/Uru Live" % HOME @@ -53,7 +53,7 @@ def getPyMoulDataDir(): """Get path to the pyMoul ini directory """ - return HOME, PYMOUL_DIR + return PYMOUL_DIR def getMoulInstallDir(): """Get path to MOUL install dir Modified: pymoul/trunk/src/moul/osdependent/linux/__init__.py =================================================================== --- pymoul/trunk/src/moul/osdependent/linux/__init__.py 2007-03-19 13:35:53 UTC (rev 266) +++ pymoul/trunk/src/moul/osdependent/linux/__init__.py 2007-03-19 20:56:14 UTC (rev 267) @@ -28,7 +28,7 @@ LOG = getLogger('moul.linux') -LOG.critical('Linux support is not tested') +LOG.warning('Linux support is experimental') HOME = os.path.expanduser('~') MOUL_DIR = "%s/.urulive" % HOME This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-19 21:58:19
|
Revision: 268 http://pymoul.svn.sourceforge.net/pymoul/?rev=268&view=rev Author: tiran Date: 2007-03-19 14:08:20 -0700 (Mon, 19 Mar 2007) Log Message: ----------- Reverted font changes Modified Paths: -------------- pymoul/trunk/src/moul/qt/dninumbers.py pymoul/trunk/src/moul/qt/mainwindow.py Modified: pymoul/trunk/src/moul/qt/dninumbers.py =================================================================== --- pymoul/trunk/src/moul/qt/dninumbers.py 2007-03-19 20:56:14 UTC (rev 267) +++ pymoul/trunk/src/moul/qt/dninumbers.py 2007-03-19 21:08:20 UTC (rev 268) @@ -149,9 +149,9 @@ tw.setRowCount(rows) proto = QtGui.QTableWidgetItem() - font = QtGui.QFont() - font.setPointSize(9) - proto.setFont(font) + #font = QtGui.QFont() + #font.setPointSize(9) + #proto.setFont(font) proto.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) for n, midnight, dawn, dusk in iter(eg): @@ -188,9 +188,9 @@ tw.setColumnCount(cols) proto = QtGui.QTableWidgetItem() - font = QtGui.QFont() - font.setPointSize(9) - proto.setFont(font) + #font = QtGui.QFont() + #font.setPointSize(9) + #proto.setFont(font) proto.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) #for n in range(rows): Modified: pymoul/trunk/src/moul/qt/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/mainwindow.py 2007-03-19 20:56:14 UTC (rev 267) +++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-03-19 21:08:20 UTC (rev 268) @@ -422,9 +422,9 @@ tw.setRowCount(i + 1) proto = QtGui.QTableWidgetItem() - font = QtGui.QFont() - font.setPointSize(9) - proto.setFont(font) + #font = QtGui.QFont() + #font.setPointSize(9) + #proto.setFont(font) proto.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) #tw.setVerticalHeaderItem(i, QtGui.QTableWidgetItem()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-19 16:39:56
|
Revision: 266 http://pymoul.svn.sourceforge.net/pymoul/?rev=266&view=rev Author: tiran Date: 2007-03-19 06:35:53 -0700 (Mon, 19 Mar 2007) Log Message: ----------- Corrected some paths (Linux and Mac) Adjusted font sizes of table items Modified Paths: -------------- pymoul/trunk/src/moul/osdependent/darwin/__init__.py pymoul/trunk/src/moul/osdependent/linux/__init__.py pymoul/trunk/src/moul/qt/dninumbers.py pymoul/trunk/src/moul/qt/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.ui Modified: pymoul/trunk/src/moul/osdependent/darwin/__init__.py =================================================================== --- pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-03-19 09:19:33 UTC (rev 265) +++ pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-03-19 13:35:53 UTC (rev 266) @@ -31,7 +31,7 @@ LOG.critical('Darwin/Mac support is not tested') HOME = os.path.expanduser('~') -MOUL_DIR = "Library/Preferences/UruLive Preferences/p_drive/My Documents/Uru Live" +MOUL_DIR = "%s/Library/Preferences/UruLive/Preferences/p_drive/My Documents/Uru Live" % HOME APP_PATH = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/transgaming/c_drive/Program Files/Uru Live/" APP_NAME = "Uru Live.app" EXEC_NAME = "???" # XXX @@ -40,7 +40,7 @@ "/Applications", "%s/Applications" % HOME, ] -PYMOUL_DIR = "Library/Preferences/pyMoul" +PYMOUL_DIR = "%s/Library/Preferences/pyMoul" % HOME def getMoulUserDataDir(): """Get path of MOUL data directory @@ -48,12 +48,12 @@ The MOUL data directory contains log files, chatlogs, KI images and many more things. """ - return os.path.join(HOME, MOUL_DIR) + return MOUL_DIR def getPyMoulDataDir(): """Get path to the pyMoul ini directory """ - return os.path.join(HOME, PYMOUL_DIR) + return HOME, PYMOUL_DIR def getMoulInstallDir(): """Get path to MOUL install dir Modified: pymoul/trunk/src/moul/osdependent/linux/__init__.py =================================================================== --- pymoul/trunk/src/moul/osdependent/linux/__init__.py 2007-03-19 09:19:33 UTC (rev 265) +++ pymoul/trunk/src/moul/osdependent/linux/__init__.py 2007-03-19 13:35:53 UTC (rev 266) @@ -31,7 +31,7 @@ LOG.critical('Linux support is not tested') HOME = os.path.expanduser('~') -MOUL_DIR = ".urulive" +MOUL_DIR = "%s/.urulive" % HOME INI_FILE = ('pyMoul', 'pymoul.ini') EXEC_NAME = "UruLauncher" PROCESSES = ('urulauncher', 'uruexplorer') @@ -40,7 +40,7 @@ "/media/d/games/MystOnline", "/usr/local/games/MystOnline" ] -PYMOUL_DIR = '.pymoul' +PYMOUL_DIR = '%s/.pymoul' % HOME def getMoulUserDataDir(): """Get path of MOUL data directory @@ -48,12 +48,12 @@ The MOUL data directory contains log files, chatlogs, KI images and many more things. """ - return os.path.join(HOME, MOUL_DIR) + return MOUL_DIR def getPyMoulDataDir(): """Get path to the pyMoul ini directory """ - return os.path.join(HOME, PYMOUL_DIR) + return PYMOUL_DIR def getMoulInstallDir(): """Get path to MOUL install dir Modified: pymoul/trunk/src/moul/qt/dninumbers.py =================================================================== --- pymoul/trunk/src/moul/qt/dninumbers.py 2007-03-19 09:19:33 UTC (rev 265) +++ pymoul/trunk/src/moul/qt/dninumbers.py 2007-03-19 13:35:53 UTC (rev 266) @@ -131,7 +131,7 @@ self.minute_timer.emit(SIGNAL('timeout()')) def _fmtdate(self, dt, spec=Qt.LocalTime): - fmt = self.trUtf8("MMM dd, hh:mm:ss") + fmt = self.trUtf8("MM/dd hh:mm") qdt = QtCore.QDateTime(dt).toTimeSpec(spec) return qdt.toString(fmt) @@ -149,17 +149,17 @@ tw.setRowCount(rows) proto = QtGui.QTableWidgetItem() - #font = QtGui.QFont() - #font.setPointSize(7) - #proto.setFont(font) + font = QtGui.QFont() + font.setPointSize(9) + proto.setFont(font) proto.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) - header = QtGui.QTableWidgetItem() - header.setSizeHint(QtCore.QSize(0,0)) for n, midnight, dawn, dusk in iter(eg): if n > rows: break - tw.setVerticalHeaderItem(n, QtGui.QTableWidgetItem(header)) + #header = QtGui.QTableWidgetItem() + #header.setSizeHint(QtCore.QSize(0,0)) + #tw.setVerticalHeaderItem(n, header) for i, dt in enumerate((midnight, dawn, dusk)): item = QtGui.QTableWidgetItem(proto) item.setText(self._fmtdate(dt)) @@ -188,15 +188,14 @@ tw.setColumnCount(cols) proto = QtGui.QTableWidgetItem() - #font = QtGui.QFont() - #font.setPointSize(7) - #proto.setFont(font) + font = QtGui.QFont() + font.setPointSize(9) + proto.setFont(font) proto.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) - for n in range(rows): - h = QtGui.QTableWidgetItem() - h.setSizeHint(QtCore.QSize(0,0)) - tw.setVerticalHeaderItem(n, h) + #for n in range(rows): + # tw.setVerticalHeaderItem(n, QtGui.QTableWidgetItem()) + # tw.verticalHeaderItem(n).setSizeHint(QtCore.QSize(0, 0)) for i, name in enumerate(listPodAges()): pat = PodAgeTime(name) Modified: pymoul/trunk/src/moul/qt/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/mainwindow.py 2007-03-19 09:19:33 UTC (rev 265) +++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-03-19 13:35:53 UTC (rev 266) @@ -184,13 +184,13 @@ def handleDirtyOnClose(self): """ Handle dirty status on close - + @return: Accept event? @rtype: bool """ if not self.isDirty(): return True - + mb = qtutils.saveMB( self, self.trUtf8("Unsaved changes!"), @@ -411,33 +411,32 @@ def on_pingthread_started(self): self.button_ping.setEnabled(False) self.tw_ping.clearContents() - + def on_pingthread_done(self): self.button_ping.setEnabled(True) def on_pingthread_server(self, i, name): - row = self.tw_ping.rowCount() + tw = self.tw_ping + row = tw.rowCount() if row < (i+1): - self.tw_ping.setRowCount(i + 1) + tw.setRowCount(i + 1) proto = QtGui.QTableWidgetItem() font = QtGui.QFont() - font.setPointSize(7) + font.setPointSize(9) proto.setFont(font) proto.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) - header = QtGui.QTableWidgetItem(proto) - header.setText(QtCore.QString.number(row + 1)) + #tw.setVerticalHeaderItem(i, QtGui.QTableWidgetItem()) + #tw.verticalHeaderItem(i).setSizeHint(QtCore.QSize(0, 0)) item0 = QtGui.QTableWidgetItem(proto) item0.setText(name) + tw.setItem(i, 0, item0) + tw.setItem(i, 1, QtGui.QTableWidgetItem(proto)) + tw.setItem(i, 2, QtGui.QTableWidgetItem(proto)) + tw.resizeRowsToContents() - self.tw_ping.setVerticalHeaderItem(i, header) - self.tw_ping.setItem(i, 0, item0) - self.tw_ping.setItem(i, 1, QtGui.QTableWidgetItem(proto)) - self.tw_ping.setItem(i, 2, QtGui.QTableWidgetItem(proto)) - self.tw_ping.resizeRowsToContents() - def on_pingthread_dns(self, i, time): item = self.tw_ping.item(i, 1) item.setText("%0.3f" % time) @@ -479,13 +478,13 @@ self.servers = servers if not self.isRunning(): self.start() - + def run(self): # TODO: thread safety! # emit a list of names first for i, server in enumerate(self.servers): self.emit(SIGNAL("server(int, const QString&)"), i, server.name) - + for i, server in enumerate(self.servers): name = server.name dns = server.dns() @@ -495,7 +494,7 @@ i, errno, msg) continue self.emit(SIGNAL("dns(int, float)"), i, dns) - + ping = server.portping() if isSocketError(ping): errno, msg = fmtSocketError(ping) @@ -522,7 +521,7 @@ # TODO check this self._running = False self.condition.wakeAll() - + def __del__(self): self.stopChecker() Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-03-19 09:19:33 UTC (rev 265) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-03-19 13:35:53 UTC (rev 266) @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'src/moul/qt/ui/mainwindow.ui' +# Form implementation generated from reading ui file './src/moul/qt/ui/mainwindow.ui' # -# Created: Mon Mar 19 10:09:02 2007 +# Created: Mon Mar 19 14:34:52 2007 # by: PyQt4 UI code generator 4.1.1 # # WARNING! All changes made in this file will be lost! @@ -1010,8 +1010,13 @@ spacerItem10 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum) self.gridlayout3.addItem(spacerItem10,0,5,1,1) + self.lb_localtime = QtGui.QLabel(self.groupBox_4) + self.lb_localtime.setGeometry(QtCore.QRect(360,250,81,20)) + self.lb_localtime.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.lb_localtime.setObjectName("lb_localtime") + self.tw_eg = QtGui.QTableWidget(self.groupBox_4) - self.tw_eg.setGeometry(QtCore.QRect(10,90,431,131)) + self.tw_eg.setGeometry(QtCore.QRect(10,90,431,151)) font = QtGui.QFont(self.tw_eg.font()) font.setPointSize(8) @@ -1020,11 +1025,6 @@ self.tw_eg.setDragDropOverwriteMode(False) self.tw_eg.setAlternatingRowColors(True) self.tw_eg.setObjectName("tw_eg") - - self.lb_localtime = QtGui.QLabel(self.groupBox_4) - self.lb_localtime.setGeometry(QtCore.QRect(360,230,81,20)) - self.lb_localtime.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.lb_localtime.setObjectName("lb_localtime") self.tab_sub_time.addTab(self.tab_time_eder,"") self.tab_time_podages = QtGui.QWidget() @@ -1035,8 +1035,13 @@ self.groupBox_6.setGeometry(QtCore.QRect(10,0,451,371)) self.groupBox_6.setObjectName("groupBox_6") + self.lb_localtime_2 = QtGui.QLabel(self.groupBox_6) + self.lb_localtime_2.setGeometry(QtCore.QRect(360,190,81,20)) + self.lb_localtime_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.lb_localtime_2.setObjectName("lb_localtime_2") + self.tw_pods = QtGui.QTableWidget(self.groupBox_6) - self.tw_pods.setGeometry(QtCore.QRect(10,30,431,131)) + self.tw_pods.setGeometry(QtCore.QRect(10,30,431,151)) font = QtGui.QFont(self.tw_pods.font()) font.setPointSize(8) @@ -1045,11 +1050,6 @@ self.tw_pods.setDragDropOverwriteMode(False) self.tw_pods.setAlternatingRowColors(True) self.tw_pods.setObjectName("tw_pods") - - self.lb_localtime_2 = QtGui.QLabel(self.groupBox_6) - self.lb_localtime_2.setGeometry(QtCore.QRect(360,170,81,20)) - self.lb_localtime_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.lb_localtime_2.setObjectName("lb_localtime_2") self.tab_sub_time.addTab(self.tab_time_podages,"") self.tabwidget.addTab(self.tab_time,"") @@ -1316,6 +1316,7 @@ self.label_13.setText(QtGui.QApplication.translate("MainWindow", "Light level", None, QtGui.QApplication.UnicodeUTF8)) self.label_14.setText(QtGui.QApplication.translate("MainWindow", "Length", None, QtGui.QApplication.UnicodeUTF8)) self.label_4.setText(QtGui.QApplication.translate("MainWindow", "Time", None, QtGui.QApplication.UnicodeUTF8)) + self.lb_localtime.setText(QtGui.QApplication.translate("MainWindow", "local time", None, QtGui.QApplication.UnicodeUTF8)) self.tw_eg.clear() self.tw_eg.setColumnCount(3) self.tw_eg.setRowCount(0) @@ -1331,13 +1332,12 @@ headerItem5 = QtGui.QTableWidgetItem() headerItem5.setText(QtGui.QApplication.translate("MainWindow", "Dusk", None, QtGui.QApplication.UnicodeUTF8)) self.tw_eg.setHorizontalHeaderItem(2,headerItem5) - self.lb_localtime.setText(QtGui.QApplication.translate("MainWindow", "local time", None, QtGui.QApplication.UnicodeUTF8)) self.tab_sub_time.setTabText(self.tab_sub_time.indexOf(self.tab_time_eder), QtGui.QApplication.translate("MainWindow", "Eder Gira", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox_6.setTitle(QtGui.QApplication.translate("MainWindow", "Gate appearence", None, QtGui.QApplication.UnicodeUTF8)) + self.lb_localtime_2.setText(QtGui.QApplication.translate("MainWindow", "local time", None, QtGui.QApplication.UnicodeUTF8)) self.tw_pods.clear() self.tw_pods.setColumnCount(0) self.tw_pods.setRowCount(0) - self.lb_localtime_2.setText(QtGui.QApplication.translate("MainWindow", "local time", None, QtGui.QApplication.UnicodeUTF8)) self.tab_sub_time.setTabText(self.tab_sub_time.indexOf(self.tab_time_podages), QtGui.QApplication.translate("MainWindow", "Pod Ages", None, QtGui.QApplication.UnicodeUTF8)) self.tabwidget.setTabText(self.tabwidget.indexOf(self.tab_time), QtGui.QApplication.translate("MainWindow", "Time", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox_5.setTitle(QtGui.QApplication.translate("MainWindow", "Read chatlogs", None, QtGui.QApplication.UnicodeUTF8)) Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.ui =================================================================== --- pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-03-19 09:19:33 UTC (rev 265) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-03-19 13:35:53 UTC (rev 266) @@ -2180,13 +2180,29 @@ </item> </layout> </widget> + <widget class="QLabel" name="lb_localtime" > + <property name="geometry" > + <rect> + <x>360</x> + <y>250</y> + <width>81</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>local time</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> <widget class="QTableWidget" name="tw_eg" > <property name="geometry" > <rect> <x>10</x> <y>90</y> <width>431</width> - <height>131</height> + <height>151</height> </rect> </property> <property name="font" > @@ -2219,22 +2235,6 @@ </property> </column> </widget> - <widget class="QLabel" name="lb_localtime" > - <property name="geometry" > - <rect> - <x>360</x> - <y>230</y> - <width>81</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>local time</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> </widget> </widget> <widget class="QWidget" name="tab_time_podages" > @@ -2256,13 +2256,29 @@ <property name="title" > <string>Gate appearence</string> </property> + <widget class="QLabel" name="lb_localtime_2" > + <property name="geometry" > + <rect> + <x>360</x> + <y>190</y> + <width>81</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>local time</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> <widget class="QTableWidget" name="tw_pods" > <property name="geometry" > <rect> <x>10</x> <y>30</y> <width>431</width> - <height>131</height> + <height>151</height> </rect> </property> <property name="font" > @@ -2280,22 +2296,6 @@ <bool>true</bool> </property> </widget> - <widget class="QLabel" name="lb_localtime_2" > - <property name="geometry" > - <rect> - <x>360</x> - <y>170</y> - <width>81</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>local time</string> - </property> - <property name="alignment" > - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> </widget> </widget> </widget> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-19 09:35:03
|
Revision: 264 http://pymoul.svn.sourceforge.net/pymoul/?rev=264&view=rev Author: tiran Date: 2007-03-19 02:10:53 -0700 (Mon, 19 Mar 2007) Log Message: ----------- Integration of Eder Gira and Pod age times in the UI Modified Paths: -------------- pymoul/trunk/src/moul/qt/dninumbers.py pymoul/trunk/src/moul/qt/i18n/pymoul_de.ts pymoul/trunk/src/moul/qt/i18n/pymoul_es.ts pymoul/trunk/src/moul/qt/i18n/pymoul_fr.ts pymoul/trunk/src/moul/qt/i18n/pymoul_it.ts pymoul/trunk/src/moul/qt/i18n/pymoul_nl.ts pymoul/trunk/src/moul/qt/ui/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.ui pymoul/trunk/src/moul/time/edergira.py pymoul/trunk/src/moul/time/podage.py Modified: pymoul/trunk/src/moul/qt/dninumbers.py =================================================================== --- pymoul/trunk/src/moul/qt/dninumbers.py 2007-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/qt/dninumbers.py 2007-03-19 09:10:53 UTC (rev 264) @@ -17,6 +17,9 @@ # """Moul QT D'ni Number renderer + +This module started as a renderer for D'ni numbers and turned into a +time display module 8-) """ __author__ = "Christian Heimes" __version__ = "$Id$" @@ -39,6 +42,9 @@ from moul.time.dni import FACTOR_SP from moul.time.dni import VAILEETEE from moul.time.dni import decimal2dni +from moul.time.edergira import EderGiraDayCalculator +from moul.time.podage import PodAgeTime +from moul.time.podage import listPodAges from moul.time.utils import utcnow from moul.qt.utils import QNamespaceContainer @@ -108,6 +114,104 @@ # setup defaults self.rb_earthtime.click() + # pod age timers + self.minute_timer = QtCore.QTimer(self.context) + self.minute_timer.setInterval(60000) # 1 minute + self.connect(self.minute_timer, SIGNAL('timeout()'), + self.on_podage_timeout) + header = self.tw_pods.horizontalHeader() + header.setResizeMode(QtGui.QHeaderView.Stretch) + + # Eder Gira day cycle timer + header = self.tw_eg.horizontalHeader() + header.setResizeMode(QtGui.QHeaderView.Stretch) + self.connect(self.minute_timer, SIGNAL('timeout()'), + self.on_edergira_timeout) + self.minute_timer.start() + self.minute_timer.emit(SIGNAL('timeout()')) + + def _fmtdate(self, dt, spec=Qt.LocalTime): + fmt = self.trUtf8("MMM dd, hh:mm:ss") + qdt = QtCore.QDateTime(dt).toTimeSpec(spec) + return qdt.toString(fmt) + + @skipLogging + @pyqtSignature("") + def on_edergira_timeout(self): + """ + SIGNAL: QTimer timeout + """ + rows = 5 + eg = EderGiraDayCalculator() + + tw = self.tw_eg + tw.clearContents() + tw.setRowCount(rows) + + proto = QtGui.QTableWidgetItem() + #font = QtGui.QFont() + #font.setPointSize(7) + #proto.setFont(font) + proto.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) + header = QtGui.QTableWidgetItem() + header.setSizeHint(QtCore.QSize(0,0)) + + for n, midnight, dawn, dusk in iter(eg): + if n > rows: + break + tw.setVerticalHeaderItem(n, QtGui.QTableWidgetItem(header)) + for i, dt in enumerate((midnight, dawn, dusk)): + item = QtGui.QTableWidgetItem(proto) + item.setText(self._fmtdate(dt)) + tw.setItem(n, i, item) + + tw.resizeRowsToContents() + + day = eg.getDayInfo() + self.le_eg_time.setText(str(day.hour)) + self.le_eg_status.setText(str(day.state)) + self.le_eg_light.setText("%i%%" % (day.light * 100)) + self.le_eg_length.setText(self.trUtf8("10 hours")) + + @skipLogging + @pyqtSignature("") + def on_podage_timeout(self): + """ + SIGNAL: QTimer timeout + """ + rows = 5 + cols = len(listPodAges()) + + tw = self.tw_pods + tw.clearContents() + tw.setRowCount(rows) + tw.setColumnCount(cols) + + proto = QtGui.QTableWidgetItem() + #font = QtGui.QFont() + #font.setPointSize(7) + #proto.setFont(font) + proto.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) + + for n in range(rows): + h = QtGui.QTableWidgetItem() + h.setSizeHint(QtCore.QSize(0,0)) + tw.setVerticalHeaderItem(n, h) + + for i, name in enumerate(listPodAges()): + pat = PodAgeTime(name) + hheader = QtGui.QTableWidgetItem() + hheader.setText(name) + tw.setHorizontalHeaderItem(i, hheader) + for n, dt in iter(pat): + if n > rows: + break + item = QtGui.QTableWidgetItem(proto) + item.setText(self._fmtdate(dt)) + tw.setItem(n, i, item) + + tw.resizeRowsToContents() + @pyqtSignature("bool") def on_timer_timerEnable(self, value=True): value = bool(value) @@ -194,7 +298,7 @@ self.update_earthtime() @pyqtSignature("int") - def on_cb_earthtime_tz_currentIndeChanged(self, idx): + def on_cb_earthtime_tz_currentIndexChanged(self, idx): if idx == 0: spec = Qt.LoalTime elif idx == 1: Modified: pymoul/trunk/src/moul/qt/i18n/pymoul_de.ts =================================================================== --- pymoul/trunk/src/moul/qt/i18n/pymoul_de.ts 2007-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/qt/i18n/pymoul_de.ts 2007-03-19 09:10:53 UTC (rev 264) @@ -5,6 +5,14 @@ <source>cyclic 0</source> <translation>zyklische 0</translation> </message> + <message> + <source>MMM dd, hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>10 hours</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>IniFileContainer</name> @@ -520,17 +528,13 @@ <translation type="unfinished"></translation> </message> <message> - <source>Negilahn</source> + <source>Pod Ages</source> <translation type="unfinished"></translation> </message> <message> - <source>Negilahn Gate appearence</source> + <source>Gate appearence</source> <translation type="unfinished"></translation> </message> - <message> - <source>Gate</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>SimpleProgressbar</name> Modified: pymoul/trunk/src/moul/qt/i18n/pymoul_es.ts =================================================================== --- pymoul/trunk/src/moul/qt/i18n/pymoul_es.ts 2007-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/qt/i18n/pymoul_es.ts 2007-03-19 09:10:53 UTC (rev 264) @@ -5,6 +5,14 @@ <source>cyclic 0</source> <translation type="unfinished"></translation> </message> + <message> + <source>MMM dd, hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>10 hours</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>IniFileContainer</name> @@ -506,17 +514,13 @@ <translation type="unfinished"></translation> </message> <message> - <source>Negilahn</source> + <source>Pod Ages</source> <translation type="unfinished"></translation> </message> <message> - <source>Negilahn Gate appearence</source> + <source>Gate appearence</source> <translation type="unfinished"></translation> </message> - <message> - <source>Gate</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>SimpleProgressbar</name> Modified: pymoul/trunk/src/moul/qt/i18n/pymoul_fr.ts =================================================================== --- pymoul/trunk/src/moul/qt/i18n/pymoul_fr.ts 2007-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/qt/i18n/pymoul_fr.ts 2007-03-19 09:10:53 UTC (rev 264) @@ -5,6 +5,14 @@ <source>cyclic 0</source> <translation type="unfinished"></translation> </message> + <message> + <source>MMM dd, hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>10 hours</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>IniFileContainer</name> @@ -506,17 +514,13 @@ <translation type="unfinished"></translation> </message> <message> - <source>Negilahn</source> + <source>Pod Ages</source> <translation type="unfinished"></translation> </message> <message> - <source>Negilahn Gate appearence</source> + <source>Gate appearence</source> <translation type="unfinished"></translation> </message> - <message> - <source>Gate</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>SimpleProgressbar</name> Modified: pymoul/trunk/src/moul/qt/i18n/pymoul_it.ts =================================================================== --- pymoul/trunk/src/moul/qt/i18n/pymoul_it.ts 2007-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/qt/i18n/pymoul_it.ts 2007-03-19 09:10:53 UTC (rev 264) @@ -5,6 +5,14 @@ <source>cyclic 0</source> <translation type="unfinished"></translation> </message> + <message> + <source>MMM dd, hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>10 hours</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>IniFileContainer</name> @@ -506,17 +514,13 @@ <translation type="unfinished"></translation> </message> <message> - <source>Negilahn</source> + <source>Pod Ages</source> <translation type="unfinished"></translation> </message> <message> - <source>Negilahn Gate appearence</source> + <source>Gate appearence</source> <translation type="unfinished"></translation> </message> - <message> - <source>Gate</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>SimpleProgressbar</name> Modified: pymoul/trunk/src/moul/qt/i18n/pymoul_nl.ts =================================================================== --- pymoul/trunk/src/moul/qt/i18n/pymoul_nl.ts 2007-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/qt/i18n/pymoul_nl.ts 2007-03-19 09:10:53 UTC (rev 264) @@ -5,6 +5,14 @@ <source>cyclic 0</source> <translation type="unfinished"></translation> </message> + <message> + <source>MMM dd, hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>10 hours</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>IniFileContainer</name> @@ -506,17 +514,13 @@ <translation type="unfinished"></translation> </message> <message> - <source>Negilahn</source> + <source>Pod Ages</source> <translation type="unfinished"></translation> </message> <message> - <source>Negilahn Gate appearence</source> + <source>Gate appearence</source> <translation type="unfinished"></translation> </message> - <message> - <source>Gate</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>SimpleProgressbar</name> Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-03-19 09:10:53 UTC (rev 264) @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'src\moul\qt\ui\mainwindow.ui' +# Form implementation generated from reading ui file 'src/moul/qt/ui/mainwindow.ui' # -# Created: Thu Mar 15 09:09:39 2007 +# Created: Mon Mar 19 10:09:02 2007 # by: PyQt4 UI code generator 4.1.1 # # WARNING! All changes made in this file will be lost! @@ -524,6 +524,15 @@ self.cb_aud_eax.setGeometry(QtCore.QRect(20,20,191,22)) self.cb_aud_eax.setObjectName("cb_aud_eax") + self.groupBox_voicechat = QtGui.QGroupBox(self.tab_audio) + self.groupBox_voicechat.setEnabled(True) + self.groupBox_voicechat.setGeometry(QtCore.QRect(10,190,451,51)) + self.groupBox_voicechat.setObjectName("groupBox_voicechat") + + self.cb_aud_voicechat = QtGui.QCheckBox(self.groupBox_voicechat) + self.cb_aud_voicechat.setGeometry(QtCore.QRect(20,20,171,19)) + self.cb_aud_voicechat.setObjectName("cb_aud_voicechat") + self.groupBox_aud_level = QtGui.QGroupBox(self.tab_audio) self.groupBox_aud_level.setEnabled(True) self.groupBox_aud_level.setGeometry(QtCore.QRect(10,0,451,181)) @@ -658,15 +667,6 @@ self.cb_aud_mute = QtGui.QCheckBox(self.groupBox_aud_level) self.cb_aud_mute.setGeometry(QtCore.QRect(20,20,189,22)) self.cb_aud_mute.setObjectName("cb_aud_mute") - - self.groupBox_voicechat = QtGui.QGroupBox(self.tab_audio) - self.groupBox_voicechat.setEnabled(True) - self.groupBox_voicechat.setGeometry(QtCore.QRect(10,190,451,51)) - self.groupBox_voicechat.setObjectName("groupBox_voicechat") - - self.cb_aud_voicechat = QtGui.QCheckBox(self.groupBox_voicechat) - self.cb_aud_voicechat.setGeometry(QtCore.QRect(20,20,171,19)) - self.cb_aud_voicechat.setObjectName("cb_aud_voicechat") self.tab_sub_settings.addTab(self.tab_audio,"") self.tabwidget.addTab(self.tab_settings,"") @@ -694,9 +694,9 @@ self.tab_time = QtGui.QWidget() self.tab_time.setObjectName("tab_time") - self.tabWidget_2 = QtGui.QTabWidget(self.tab_time) - self.tabWidget_2.setGeometry(QtCore.QRect(0,0,471,411)) - self.tabWidget_2.setObjectName("tabWidget_2") + self.tab_sub_time = QtGui.QTabWidget(self.tab_time) + self.tab_sub_time.setGeometry(QtCore.QRect(0,0,471,411)) + self.tab_sub_time.setObjectName("tab_sub_time") self.tab_time_dni = QtGui.QWidget() self.tab_time_dni.setObjectName("tab_time_dni") @@ -950,7 +950,7 @@ self.rb_dnitime = QtGui.QRadioButton(self.gridLayout_5) self.rb_dnitime.setObjectName("rb_dnitime") self.gridlayout2.addWidget(self.rb_dnitime,2,0,1,1) - self.tabWidget_2.addTab(self.tab_time_dni,"") + self.tab_sub_time.addTab(self.tab_time_dni,"") self.tab_time_eder = QtGui.QWidget() self.tab_time_eder.setObjectName("tab_time_eder") @@ -1011,7 +1011,7 @@ self.gridlayout3.addItem(spacerItem10,0,5,1,1) self.tw_eg = QtGui.QTableWidget(self.groupBox_4) - self.tw_eg.setGeometry(QtCore.QRect(10,90,431,141)) + self.tw_eg.setGeometry(QtCore.QRect(10,90,431,131)) font = QtGui.QFont(self.tw_eg.font()) font.setPointSize(8) @@ -1020,8 +1020,13 @@ self.tw_eg.setDragDropOverwriteMode(False) self.tw_eg.setAlternatingRowColors(True) self.tw_eg.setObjectName("tw_eg") - self.tabWidget_2.addTab(self.tab_time_eder,"") + self.lb_localtime = QtGui.QLabel(self.groupBox_4) + self.lb_localtime.setGeometry(QtCore.QRect(360,230,81,20)) + self.lb_localtime.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.lb_localtime.setObjectName("lb_localtime") + self.tab_sub_time.addTab(self.tab_time_eder,"") + self.tab_time_podages = QtGui.QWidget() self.tab_time_podages.setObjectName("tab_time_podages") @@ -1030,17 +1035,22 @@ self.groupBox_6.setGeometry(QtCore.QRect(10,0,451,371)) self.groupBox_6.setObjectName("groupBox_6") - self.tw_eg_2 = QtGui.QTableWidget(self.groupBox_6) - self.tw_eg_2.setGeometry(QtCore.QRect(10,30,431,141)) + self.tw_pods = QtGui.QTableWidget(self.groupBox_6) + self.tw_pods.setGeometry(QtCore.QRect(10,30,431,131)) - font = QtGui.QFont(self.tw_eg_2.font()) + font = QtGui.QFont(self.tw_pods.font()) font.setPointSize(8) - self.tw_eg_2.setFont(font) - self.tw_eg_2.setProperty("showDropIndicator",QtCore.QVariant(False)) - self.tw_eg_2.setDragDropOverwriteMode(False) - self.tw_eg_2.setAlternatingRowColors(True) - self.tw_eg_2.setObjectName("tw_eg_2") - self.tabWidget_2.addTab(self.tab_time_podages,"") + self.tw_pods.setFont(font) + self.tw_pods.setProperty("showDropIndicator",QtCore.QVariant(False)) + self.tw_pods.setDragDropOverwriteMode(False) + self.tw_pods.setAlternatingRowColors(True) + self.tw_pods.setObjectName("tw_pods") + + self.lb_localtime_2 = QtGui.QLabel(self.groupBox_6) + self.lb_localtime_2.setGeometry(QtCore.QRect(360,170,81,20)) + self.lb_localtime_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.lb_localtime_2.setObjectName("lb_localtime_2") + self.tab_sub_time.addTab(self.tab_time_podages,"") self.tabwidget.addTab(self.tab_time,"") self.tab_browse = QtGui.QWidget() @@ -1206,8 +1216,8 @@ self.retranslateUi(MainWindow) self.tabwidget.setCurrentIndex(0) - self.tab_sub_settings.setCurrentIndex(1) - self.tabWidget_2.setCurrentIndex(0) + self.tab_sub_settings.setCurrentIndex(0) + self.tab_sub_time.setCurrentIndex(0) self.tabWidget.setCurrentIndex(2) self.tabwidget_about.setCurrentIndex(0) QtCore.QObject.connect(self.main_buttonbox,QtCore.SIGNAL("rejected()"),MainWindow.close) @@ -1255,14 +1265,14 @@ self.lb_aud_device.setText(QtGui.QApplication.translate("MainWindow", "Generic Software", None, QtGui.QApplication.UnicodeUTF8)) self.lb_aud_priority.setText(QtGui.QApplication.translate("MainWindow", "Sound priority", None, QtGui.QApplication.UnicodeUTF8)) self.cb_aud_eax.setText(QtGui.QApplication.translate("MainWindow", "Enable EAX", None, QtGui.QApplication.UnicodeUTF8)) + self.groupBox_voicechat.setTitle(QtGui.QApplication.translate("MainWindow", "Voice chat", None, QtGui.QApplication.UnicodeUTF8)) + self.cb_aud_voicechat.setText(QtGui.QApplication.translate("MainWindow", "Enable Voice Chat", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox_aud_level.setTitle(QtGui.QApplication.translate("MainWindow", "Level", None, QtGui.QApplication.UnicodeUTF8)) self.lb_aud_fx_3.setText(QtGui.QApplication.translate("MainWindow", "Sound FX", None, QtGui.QApplication.UnicodeUTF8)) self.lb_aud_music.setText(QtGui.QApplication.translate("MainWindow", "Music", None, QtGui.QApplication.UnicodeUTF8)) self.lb_aud_ambience.setText(QtGui.QApplication.translate("MainWindow", "Ambience Sound", None, QtGui.QApplication.UnicodeUTF8)) self.lb_aud_npc.setText(QtGui.QApplication.translate("MainWindow", "NPC Voices", None, QtGui.QApplication.UnicodeUTF8)) self.cb_aud_mute.setText(QtGui.QApplication.translate("MainWindow", "Mute all", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox_voicechat.setTitle(QtGui.QApplication.translate("MainWindow", "Voice chat", None, QtGui.QApplication.UnicodeUTF8)) - self.cb_aud_voicechat.setText(QtGui.QApplication.translate("MainWindow", "Enable Voice Chat", None, QtGui.QApplication.UnicodeUTF8)) self.tab_sub_settings.setTabText(self.tab_sub_settings.indexOf(self.tab_audio), QtGui.QApplication.translate("MainWindow", "Audio", None, QtGui.QApplication.UnicodeUTF8)) self.tabwidget.setTabText(self.tabwidget.indexOf(self.tab_settings), QtGui.QApplication.translate("MainWindow", "Settings", None, QtGui.QApplication.UnicodeUTF8)) self.gb_servers.setTitle(QtGui.QApplication.translate("MainWindow", "Ping servers", None, QtGui.QApplication.UnicodeUTF8)) @@ -1300,7 +1310,7 @@ self.cb_earthtime_tz.addItem(QtGui.QApplication.translate("MainWindow", "local time", None, QtGui.QApplication.UnicodeUTF8)) self.cb_earthtime_tz.addItem(QtGui.QApplication.translate("MainWindow", "UTC", None, QtGui.QApplication.UnicodeUTF8)) self.rb_dnitime.setText(QtGui.QApplication.translate("MainWindow", "D\'ni Time", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_time_dni), QtGui.QApplication.translate("MainWindow", "D\'ni Time", None, QtGui.QApplication.UnicodeUTF8)) + self.tab_sub_time.setTabText(self.tab_sub_time.indexOf(self.tab_time_dni), QtGui.QApplication.translate("MainWindow", "D\'ni Time", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox_4.setTitle(QtGui.QApplication.translate("MainWindow", "Eder Gira day cycle", None, QtGui.QApplication.UnicodeUTF8)) self.label_6.setText(QtGui.QApplication.translate("MainWindow", "Sun", None, QtGui.QApplication.UnicodeUTF8)) self.label_13.setText(QtGui.QApplication.translate("MainWindow", "Light level", None, QtGui.QApplication.UnicodeUTF8)) @@ -1321,22 +1331,20 @@ headerItem5 = QtGui.QTableWidgetItem() headerItem5.setText(QtGui.QApplication.translate("MainWindow", "Dusk", None, QtGui.QApplication.UnicodeUTF8)) self.tw_eg.setHorizontalHeaderItem(2,headerItem5) - self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_time_eder), QtGui.QApplication.translate("MainWindow", "Eder Gira", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox_6.setTitle(QtGui.QApplication.translate("MainWindow", "Negilahn Gate appearence", None, QtGui.QApplication.UnicodeUTF8)) - self.tw_eg_2.clear() - self.tw_eg_2.setColumnCount(1) - self.tw_eg_2.setRowCount(0) - - headerItem6 = QtGui.QTableWidgetItem() - headerItem6.setText(QtGui.QApplication.translate("MainWindow", "Gate", None, QtGui.QApplication.UnicodeUTF8)) - self.tw_eg_2.setHorizontalHeaderItem(0,headerItem6) - self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_time_podages), QtGui.QApplication.translate("MainWindow", "Negilahn", None, QtGui.QApplication.UnicodeUTF8)) + self.lb_localtime.setText(QtGui.QApplication.translate("MainWindow", "local time", None, QtGui.QApplication.UnicodeUTF8)) + self.tab_sub_time.setTabText(self.tab_sub_time.indexOf(self.tab_time_eder), QtGui.QApplication.translate("MainWindow", "Eder Gira", None, QtGui.QApplication.UnicodeUTF8)) + self.groupBox_6.setTitle(QtGui.QApplication.translate("MainWindow", "Gate appearence", None, QtGui.QApplication.UnicodeUTF8)) + self.tw_pods.clear() + self.tw_pods.setColumnCount(0) + self.tw_pods.setRowCount(0) + self.lb_localtime_2.setText(QtGui.QApplication.translate("MainWindow", "local time", None, QtGui.QApplication.UnicodeUTF8)) + self.tab_sub_time.setTabText(self.tab_sub_time.indexOf(self.tab_time_podages), QtGui.QApplication.translate("MainWindow", "Pod Ages", None, QtGui.QApplication.UnicodeUTF8)) self.tabwidget.setTabText(self.tabwidget.indexOf(self.tab_time), QtGui.QApplication.translate("MainWindow", "Time", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox_5.setTitle(QtGui.QApplication.translate("MainWindow", "Read chatlogs", None, QtGui.QApplication.UnicodeUTF8)) self.tb_chatlog_view.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=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'Sans Serif\'; font-size:9pt;\">Not implemented</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) + "</style></head><body style=\" font-family:\'Sans Serif\'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;\">\n" + "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Not implemented</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) self.cb_chatlog.addItem(QtGui.QApplication.translate("MainWindow", "Not implemented", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_sub_chatlogs), QtGui.QApplication.translate("MainWindow", "Chat logs", None, QtGui.QApplication.UnicodeUTF8)) self.gb_documents.setTitle(QtGui.QApplication.translate("MainWindow", "Browse journals and notes", None, QtGui.QApplication.UnicodeUTF8)) @@ -1352,13 +1360,13 @@ self.tabwidget.setTabText(self.tabwidget.indexOf(self.tab_browse), QtGui.QApplication.translate("MainWindow", "Browse", None, QtGui.QApplication.UnicodeUTF8)) self.tb_abouttext.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; font-family:\'Sans Serif\'; font-size:9pt;\"></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) + "</style></head><body style=\" font-family:\'Sans Serif\'; font-size:9pt; 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.tabwidget_about.setTabText(self.tabwidget_about.indexOf(self.tab_sub_about), QtGui.QApplication.translate("MainWindow", "About pyMoul", None, QtGui.QApplication.UnicodeUTF8)) self.tb_license.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; font-family:\'Sans Serif\'; font-size:9pt;\"></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) + "</style></head><body style=\" font-family:\'Sans Serif\'; font-size:9pt; 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.tabwidget_about.setTabText(self.tabwidget_about.indexOf(self.tab_sub_license), QtGui.QApplication.translate("MainWindow", "License", None, QtGui.QApplication.UnicodeUTF8)) self.tabwidget.setTabText(self.tabwidget.indexOf(self.tab_about), 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-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-03-19 09:10:53 UTC (rev 264) @@ -358,7 +358,7 @@ </rect> </property> <property name="currentIndex" > - <number>1</number> + <number>0</number> </property> <widget class="QWidget" name="tab_graphics" > <attribute name="title" > @@ -1126,6 +1126,35 @@ </property> </widget> </widget> + <widget class="QGroupBox" name="groupBox_voicechat" > + <property name="enabled" > + <bool>true</bool> + </property> + <property name="geometry" > + <rect> + <x>10</x> + <y>190</y> + <width>451</width> + <height>51</height> + </rect> + </property> + <property name="title" > + <string>Voice chat</string> + </property> + <widget class="QCheckBox" name="cb_aud_voicechat" > + <property name="geometry" > + <rect> + <x>20</x> + <y>20</y> + <width>171</width> + <height>19</height> + </rect> + </property> + <property name="text" > + <string>Enable Voice Chat</string> + </property> + </widget> + </widget> <widget class="QGroupBox" name="groupBox_aud_level" > <property name="enabled" > <bool>true</bool> @@ -1403,35 +1432,6 @@ </property> </widget> </widget> - <widget class="QGroupBox" name="groupBox_voicechat" > - <property name="enabled" > - <bool>true</bool> - </property> - <property name="geometry" > - <rect> - <x>10</x> - <y>190</y> - <width>451</width> - <height>51</height> - </rect> - </property> - <property name="title" > - <string>Voice chat</string> - </property> - <widget class="QCheckBox" name="cb_aud_voicechat" > - <property name="geometry" > - <rect> - <x>20</x> - <y>20</y> - <width>171</width> - <height>19</height> - </rect> - </property> - <property name="text" > - <string>Enable Voice Chat</string> - </property> - </widget> - </widget> </widget> </widget> </widget> @@ -1503,7 +1503,7 @@ <attribute name="title" > <string>Time</string> </attribute> - <widget class="QTabWidget" name="tabWidget_2" > + <widget class="QTabWidget" name="tab_sub_time" > <property name="geometry" > <rect> <x>0</x> @@ -2186,7 +2186,7 @@ <x>10</x> <y>90</y> <width>431</width> - <height>141</height> + <height>131</height> </rect> </property> <property name="font" > @@ -2219,11 +2219,27 @@ </property> </column> </widget> + <widget class="QLabel" name="lb_localtime" > + <property name="geometry" > + <rect> + <x>360</x> + <y>230</y> + <width>81</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>local time</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> </widget> </widget> <widget class="QWidget" name="tab_time_podages" > <attribute name="title" > - <string>Negilahn</string> + <string>Pod Ages</string> </attribute> <widget class="QGroupBox" name="groupBox_6" > <property name="enabled" > @@ -2238,15 +2254,15 @@ </rect> </property> <property name="title" > - <string>Negilahn Gate appearence</string> + <string>Gate appearence</string> </property> - <widget class="QTableWidget" name="tw_eg_2" > + <widget class="QTableWidget" name="tw_pods" > <property name="geometry" > <rect> <x>10</x> <y>30</y> <width>431</width> - <height>141</height> + <height>131</height> </rect> </property> <property name="font" > @@ -2263,12 +2279,23 @@ <property name="alternatingRowColors" > <bool>true</bool> </property> - <column> - <property name="text" > - <string>Gate</string> - </property> - </column> </widget> + <widget class="QLabel" name="lb_localtime_2" > + <property name="geometry" > + <rect> + <x>360</x> + <y>170</y> + <width>81</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>local time</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> </widget> </widget> </widget> @@ -2320,8 +2347,8 @@ <property name="html" > <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;">Not implemented</p></body></html></string> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Not implemented</p></body></html></string> </property> <property name="textInteractionFlags" > <enum>Qt::TextSelectableByMouse</enum> @@ -2564,8 +2591,8 @@ <property name="html" > <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"> -<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; font-family:'Sans Serif'; font-size:9pt;"></p></body></html></string> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<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> <property name="textInteractionFlags" > <enum>Qt::TextBrowserInteraction</enum> @@ -2591,8 +2618,8 @@ <property name="html" > <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"> -<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; font-family:'Sans Serif'; font-size:9pt;"></p></body></html></string> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<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> <property name="textInteractionFlags" > <enum>Qt::TextSelectableByMouse</enum> Modified: pymoul/trunk/src/moul/time/edergira.py =================================================================== --- pymoul/trunk/src/moul/time/edergira.py 2007-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/time/edergira.py 2007-03-19 09:10:53 UTC (rev 264) @@ -108,8 +108,8 @@ @return: n, midnight, dawn, dusk """ - base = self.getLastMidnight(dt) + self._delta - n = 1 + base = self.getLastMidnight(dt) + n = 0 while True: yield (n, base, base+self._dawn, base+self._dusk) base += self._delta @@ -118,6 +118,7 @@ def __iter__(self): return self.iterDates() + @property def dayLength(self): return (self._hours, 0, 0) Modified: pymoul/trunk/src/moul/time/podage.py =================================================================== --- pymoul/trunk/src/moul/time/podage.py 2007-03-18 22:50:45 UTC (rev 263) +++ pymoul/trunk/src/moul/time/podage.py 2007-03-19 09:10:53 UTC (rev 264) @@ -59,7 +59,7 @@ # base datetime for calculations #BASE_DT = datetime(2007, 3, 4, 10, 16, 0, tzinfo=UTC) # XXX Uru's main game server is off 3min 35sec -BASE_DT = datetime(2007, 3, 7, 1, 7, 57, tzinfo=UTC) +BASE_DT = datetime(2007, 3, 7, 1, 7, 0, tzinfo=UTC) #BASE_DT = datetime(2007, 3, 7, 1, 10, 9, tzinfo=UTC) class PodAgeRegistry(dict): @@ -122,6 +122,8 @@ class PodAgeTime(object): """A pod age day cycle and gate event timer """ + __slots__ = ('_age', '_name', '_base') + def __init__(self, name): """ @param name: Registered name of a pod age @@ -167,8 +169,7 @@ @return: date and time of next event @rtype: datetime instance """ - delta = count * PODDAY_TD - return self._base + delta + return self._base + count * PODDAY_TD def __iter__(self): """Iterate through events @@ -176,12 +177,11 @@ @return: Iterator that yields (number, date) @rtype: iterator (int, datetime) """ - delta = PODDAY_TD - dt = self._base + delta + dt = self._base + PODDAY_TD n = 0 while True: yield (n, dt) - dt += delta + dt += PODDAY_TD n += 1 # pod ages @@ -236,29 +236,34 @@ def allTzList(limit=50, fmt="%Y-%m-%d %H:%M:%S %Z"): """Small utility function to create a nice list for the forum """ - base = os.path.dirname(__file__) + from pytz import common_timezones + base = os.path.join(os.path.dirname(__file__), 'out') + if not os.path.isdir(base): + os.mkdir(base) for tz in common_timezones: continent = tz.split('/')[0] if continent not in ('UTC', 'US', 'Australia', 'Europe', 'America'): continue tzname = tz.replace('/', '_') - fd = open(os.path.join(base, 'out', "%s.html" % tzname), 'w') + fd = open(os.path.join(base, "%s.html" % tzname), 'w') print >>fd, "<html><head><title>%s</title></head><body><pre>" % tz + print tzname for age in listPodAges(): pat = PodAgeTime(age) - print age, tzname print >>fd, age print >>fd, "--------------------------------------------------------------------" for n, dt in iter(pat): if n > limit: break - dni = DniTime.fromUTC(dt) + #dni = DniTime.fromUTC(dt) ldt = normalizeTZ(tz, dt) - print >>fd, "Earth: %s, D'ni: %s, %i" % (ldt.strftime(fmt), - str(dni), dni.pahrtahvo) + #print >>fd, "Earth: %s, D'ni: %s, %i" % (ldt.strftime(fmt), + # str(dni), dni.pahrtahvo) + print >>fd, ldt.strftime(fmt) print >>fd, "\n" print >>fd, "</pre></body></html>" fd.close() if __name__ == '__main__': forumTimeTable(tzlist=('UTC',)) + #allTzList() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-19 09:35:01
|
Revision: 265 http://pymoul.svn.sourceforge.net/pymoul/?rev=265&view=rev Author: tiran Date: 2007-03-19 02:19:33 -0700 (Mon, 19 Mar 2007) Log Message: ----------- Fixed unit tests Modified Paths: -------------- pymoul/trunk/Makefile.in pymoul/trunk/src/moul/time/edergira.py pymoul/trunk/src/moul/time/podage.py Modified: pymoul/trunk/Makefile.in =================================================================== --- pymoul/trunk/Makefile.in 2007-03-19 09:10:53 UTC (rev 264) +++ pymoul/trunk/Makefile.in 2007-03-19 09:19:33 UTC (rev 265) @@ -41,7 +41,7 @@ test_build: build PYTHONPATH="src" $(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS) -test_inplace: +test_inplace: inplace PYTHONPATH="src" $(PYTHON) test.py $(TESTFLAGS) $(TESTOPTS) doc_html: Modified: pymoul/trunk/src/moul/time/edergira.py =================================================================== --- pymoul/trunk/src/moul/time/edergira.py 2007-03-19 09:10:53 UTC (rev 264) +++ pymoul/trunk/src/moul/time/edergira.py 2007-03-19 09:19:33 UTC (rev 265) @@ -35,9 +35,9 @@ <type 'generator'> >>> gen.next() +(0, datetime.datetime(2007, 3, 8, 4, 15, tzinfo=<UTC>), datetime.datetime(2007, 3, 8, 6, 30, tzinfo=<UTC>), datetime.datetime(2007, 3, 8, 11, 30, tzinfo=<UTC>)) +>>> gen.next() (1, datetime.datetime(2007, 3, 8, 14, 15, tzinfo=<UTC>), datetime.datetime(2007, 3, 8, 16, 30, tzinfo=<UTC>), datetime.datetime(2007, 3, 8, 21, 30, tzinfo=<UTC>)) ->>> gen.next() -(2, datetime.datetime(2007, 3, 9, 0, 15, tzinfo=<UTC>), datetime.datetime(2007, 3, 9, 2, 30, tzinfo=<UTC>), datetime.datetime(2007, 3, 9, 7, 30, tzinfo=<UTC>)) """ __author__ = "Christian Heimes" __version__ = "$Id" Modified: pymoul/trunk/src/moul/time/podage.py =================================================================== --- pymoul/trunk/src/moul/time/podage.py 2007-03-19 09:10:53 UTC (rev 264) +++ pymoul/trunk/src/moul/time/podage.py 2007-03-19 09:19:33 UTC (rev 265) @@ -17,12 +17,13 @@ # """pyMoul Pod age time +>>> pod18 = getPodAge('Negilahn') >>> pod18.gatenumber 18 ->>> getPodAge('Negilahn') is pod18 +>>> pod18.name +'Negilahn' +>>> getPodAgeByNumber(18) is pod18 or getPodAgeByNumber(18) True ->>> getPodAgeByNumber(18) is pod18 -True >>> padneg = PodAgeTime('Negilahn') >>> for n, dt in iter(padneg): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-18 22:50:56
|
Revision: 263 http://pymoul.svn.sourceforge.net/pymoul/?rev=263&view=rev Author: tiran Date: 2007-03-18 15:50:45 -0700 (Sun, 18 Mar 2007) Log Message: ----------- Pod age time code update Modified Paths: -------------- pymoul/trunk/src/moul/time/podage.py Modified: pymoul/trunk/src/moul/time/podage.py =================================================================== --- pymoul/trunk/src/moul/time/podage.py 2007-03-16 15:17:59 UTC (rev 262) +++ pymoul/trunk/src/moul/time/podage.py 2007-03-18 22:50:45 UTC (rev 263) @@ -48,7 +48,20 @@ from moul.time.utils import UTC from moul.time.utils import td2sec from moul.time.utils import utcnow +from moul.time.dni import PRORAHN_PER_PAHRTAHVO +from moul.time.dni import FACTOR_SP + +# constants for pod day length +PAHRTAHVO_SEC = PRORAHN_PER_PAHRTAHVO * FACTOR_SP +PODDAY_SEC = 13 * PAHRTAHVO_SEC +PODDAY_TD = timedelta(seconds=PODDAY_SEC) +# base datetime for calculations +#BASE_DT = datetime(2007, 3, 4, 10, 16, 0, tzinfo=UTC) +# XXX Uru's main game server is off 3min 35sec +BASE_DT = datetime(2007, 3, 7, 1, 7, 57, tzinfo=UTC) +#BASE_DT = datetime(2007, 3, 7, 1, 10, 9, tzinfo=UTC) + class PodAgeRegistry(dict): """Registry for pod ages """ @@ -71,6 +84,8 @@ return dict.__delitem__(self, key) def register(self, pod): + if pod.gatenumber < 0: + return False self[pod.name] = pod def listNumbers(self): @@ -92,14 +107,11 @@ """ __slots__ = () - def __init__(self, __registry=_podRegistry, **kw): + def __init__(self, **kw): super(PodAgeInformation, self).__init__(**kw) - self['daycycle'] = timedelta(days=0, hours=15, minutes=43) - self['daycycle_sec'] = td2sec(self['daycycle']) - for key in ('name', 'gatenumber'): + for key in ('name', 'gatenumber', 'offset'): if key not in self: raise KeyError(key) - __registry.register(self) def __getattribute__(self, name): if name in self: @@ -119,6 +131,8 @@ age = getPodAge(name) elif isinstance(name, int): age = getPodAgeByNumber(name) + elif isinstance(name, PodAgeInformation): + age = name else: raise TypeError(name) if age is None: @@ -138,11 +152,12 @@ """ if startdt is None: startdt = utcnow() + base_dt = BASE_DT + self._age.offset # calculate completed cycles since base_dt - sec = td2sec(startdt - self._age.base_dt) - cycles = floor(sec / self._age.daycycle_sec) - delta = int(cycles) * self._age.daycycle - self._base = self._age.base_dt + delta + sec = td2sec(startdt - base_dt) + cycles = floor(sec / PODDAY_SEC) + delta = int(cycles) * PODDAY_TD + self._base = base_dt + delta def get(self, count=1): """Get date by count @@ -152,7 +167,7 @@ @return: date and time of next event @rtype: datetime instance """ - delta = count * self._age.daycycle + delta = count * PODDAY_TD return self._base + delta def __iter__(self): @@ -161,7 +176,7 @@ @return: Iterator that yields (number, date) @rtype: iterator (int, datetime) """ - delta = self._age.daycycle + delta = PODDAY_TD dt = self._base + delta n = 0 while True: @@ -170,12 +185,80 @@ n += 1 # pod ages -pod18 = PodAgeInformation(name = 'Negilahn', gatenumber = 18, - base_dt = datetime(2007, 3, 4, 10, 16, 0, tzinfo=UTC)) +registerPodAge(PodAgeInformation( + name = 'Dereno', + gatenumber = 25, + offset = timedelta(seconds=1*PAHRTAHVO_SEC) + )) +registerPodAge(PodAgeInformation( + name = 'Negilahn', + gatenumber = 18, + offset = timedelta(seconds=0) + )) + +registerPodAge(PodAgeInformation( + name = 'Payiferen', + gatenumber = -1, + offset = timedelta(seconds=-1) + )) + +registerPodAge(PodAgeInformation( + name = 'Tetsonot', + gatenumber = -1, + offset = timedelta(seconds=-1) + )) + + +from moul.time.dni import DniTime +from moul.time.utils import normalizeTZ + +def forumTimeTable(limit=10, fmt="%Y-%m-%d %H:%M:%S %Z", tzlist=('UTC', 'CET', + 'US/Mountain', 'US/Pacific', 'US/Eastern', + 'Australia/Sydney')): + """Small utility function to create a nice list for the forum + """ + for tz in tzlist: + print "[spoiler=%s]" % tz + for age in listPodAges(): + pat = PodAgeTime(age) + print age + print "--------------------------------------------------------------------" + for n, dt in iter(pat): + if n > limit: + break + dni = DniTime.fromUTC(dt) + ldt = normalizeTZ(tz, dt) + print "Earth: %s, D'ni: %s, %i" % (ldt.strftime(fmt), + str(dni), dni.pahrtahvo) + print "[/spoiler]" + +def allTzList(limit=50, fmt="%Y-%m-%d %H:%M:%S %Z"): + """Small utility function to create a nice list for the forum + """ + base = os.path.dirname(__file__) + for tz in common_timezones: + continent = tz.split('/')[0] + if continent not in ('UTC', 'US', 'Australia', 'Europe', 'America'): + continue + tzname = tz.replace('/', '_') + fd = open(os.path.join(base, 'out', "%s.html" % tzname), 'w') + print >>fd, "<html><head><title>%s</title></head><body><pre>" % tz + for age in listPodAges(): + pat = PodAgeTime(age) + print age, tzname + print >>fd, age + print >>fd, "--------------------------------------------------------------------" + for n, dt in iter(pat): + if n > limit: + break + dni = DniTime.fromUTC(dt) + ldt = normalizeTZ(tz, dt) + print >>fd, "Earth: %s, D'ni: %s, %i" % (ldt.strftime(fmt), + str(dni), dni.pahrtahvo) + print >>fd, "\n" + print >>fd, "</pre></body></html>" + fd.close() + if __name__ == '__main__': - padneg = PodAgeTime('Negilahn') - for n, dt in iter(padneg): - print n, dt - if n > 20: - break + forumTimeTable(tzlist=('UTC',)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-16 15:18:04
|
Revision: 262 http://pymoul.svn.sourceforge.net/pymoul/?rev=262&view=rev Author: tiran Date: 2007-03-16 08:17:59 -0700 (Fri, 16 Mar 2007) Log Message: ----------- Removed pkg_resource require of enumprocess Modified Paths: -------------- pymoul/trunk/src/moul/osdependent/__init__.py Modified: pymoul/trunk/src/moul/osdependent/__init__.py =================================================================== --- pymoul/trunk/src/moul/osdependent/__init__.py 2007-03-15 19:54:00 UTC (rev 261) +++ pymoul/trunk/src/moul/osdependent/__init__.py 2007-03-16 15:17:59 UTC (rev 262) @@ -43,7 +43,8 @@ if not __FROZEN__: import pkg_resources - pkg_resources.require("enumprocess>=0.1") + # XXX: disabled for now + #pkg_resources.require("enumprocess>=0.1.1") from enumprocess import getPidNames from enumprocess import getPids This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-15 19:54:02
|
Revision: 261 http://pymoul.svn.sourceforge.net/pymoul/?rev=261&view=rev Author: tiran Date: 2007-03-15 12:54:00 -0700 (Thu, 15 Mar 2007) Log Message: ----------- Removed enumprocess as a dependency. It's part of the bundle Modified Paths: -------------- pymoul/trunk/setup.py Modified: pymoul/trunk/setup.py =================================================================== --- pymoul/trunk/setup.py 2007-03-15 12:56:45 UTC (rev 260) +++ pymoul/trunk/setup.py 2007-03-15 19:54:00 UTC (rev 261) @@ -64,7 +64,7 @@ setup_options = dict( setup_requires = ["setuptools>="+SETUPTOOLS_VERSION,], - install_requires = ["pytz>=2006p", "enumprocess>=0.1"], + install_requires = ["pytz>=2006p"], data_files = [ ('docs', list(glob('*.txt'))), ('i18n', list(glob('src/moul/qt/i18n/pymoul_*.qm'))), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-15 12:56:46
|
Revision: 260 http://pymoul.svn.sourceforge.net/pymoul/?rev=260&view=rev Author: tiran Date: 2007-03-15 05:56:45 -0700 (Thu, 15 Mar 2007) Log Message: ----------- Fixed version requirements for py2app Fixed locking unit tests Modified Paths: -------------- pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py pymoul/trunk/utilities/setup_darwin.py Modified: pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py =================================================================== --- pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py 2007-03-15 08:43:34 UTC (rev 259) +++ pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py 2007-03-15 12:56:45 UTC (rev 260) @@ -89,8 +89,8 @@ stderr=PIPE, shell=True, env=env) popen.wait() self.failUnless(os.path.isfile(self.tmpfile)) - - out = popen.stdout.read() + + out = popen.stdout.read().strip() if os.name == 'nt': self.failUnless(self.tmpfile in out or out == '', out) elif os.name =='posix': @@ -98,11 +98,14 @@ else: raise OSError("unsupported os") - err = popen.stderr.read() + err = popen.stderr.read().strip() if os.name == 'nt': self.failUnless('WindowsError: [Error 13]' in err, err) elif os.name =='posix': - self.failUnless('IOError: [Errno 11]' in err, err) + # Mac: IOError: [Errno 35] Resource temporarily unavailable + # Linux: IOError: [Errno 11] Resource temporarily unavailable + self.failUnless('IOError:' in err, err) + self.failUnless('Resource temporarily unavailable' in err, err) else: raise OSError("unsupported os") Modified: pymoul/trunk/utilities/setup_darwin.py =================================================================== --- pymoul/trunk/utilities/setup_darwin.py 2007-03-15 08:43:34 UTC (rev 259) +++ pymoul/trunk/utilities/setup_darwin.py 2007-03-15 12:56:45 UTC (rev 260) @@ -38,7 +38,7 @@ ) def updateSetupOptions(kw): - for req in ("py2app >=0.3.56",): + for req in ("py2app>=0.3.6",): kw['setup_requires'].append(req) for req in (): kw['install_requires'].append(req) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-15 08:43:34
|
Revision: 259 http://pymoul.svn.sourceforge.net/pymoul/?rev=259&view=rev Author: tiran Date: 2007-03-15 01:43:34 -0700 (Thu, 15 Mar 2007) Log Message: ----------- Unit test fixes Fixed tab view order Modified Paths: -------------- pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py pymoul/trunk/src/moul/qt/ui/mainwindow.py pymoul/trunk/src/moul/qt/ui/mainwindow.ui Modified: pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py =================================================================== --- pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py 2007-03-15 08:39:32 UTC (rev 258) +++ pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py 2007-03-15 08:43:34 UTC (rev 259) @@ -37,7 +37,9 @@ from moul.osdependent.singleapp import unlock if os.name == 'nt': - rmcmd = "cmd /c del %(testfile)s" + rmcmd = (r'%(exe)s -c "import os; ' + 'os.unlink(%(testfile)s)"' % {'exe' : sys.executable, + 'testfile' : r"'%(testfile)s'"}) else: rmcmd = ("%(exe)s -c 'from fcntl import *; " "fd = open(%(testfile)s, %(mode)s); " @@ -61,22 +63,36 @@ #False class SingleAppTest(unittest.TestCase): + def setUp(self): + hndl, tmpfile = tempfile.mkstemp() + self.tmpfile = os.path.normcase(tmpfile).replace('\\', '/') + os.close(hndl) + self.fd = open(self.tmpfile, mode='w+') - def test_locking(self): + def tearDown(self): + try: + unlock(self.fd) + self.fd.close() + except: + pass + os.unlink(self.tmpfile) + + def test_locking(self): FLAGS = LOCK_SH | LOCK_NB - fd = tempfile.NamedTemporaryFile(mode='w+', suffix='lck') - testfile = fd.name - fd.write('testdata') - fd.flush() - self.failUnless(os.path.isfile(testfile)) - lock(fd, FLAGS) - popen = Popen(rmcmd % {'testfile' : testfile}, stdout=PIPE, - stderr=PIPE, shell=True, env = {'LC_ALL' : 'C'}) - + self.fd.write('testdata') + self.fd.flush() + self.failUnless(os.path.isfile(self.tmpfile)) + lock(self.fd, FLAGS) + env = os.environ.copy() + env['LC_ALL'] = 'C' + popen = Popen(rmcmd % {'testfile' : self.tmpfile}, stdout=PIPE, + stderr=PIPE, shell=True, env=env) popen.wait() + self.failUnless(os.path.isfile(self.tmpfile)) + out = popen.stdout.read() if os.name == 'nt': - self.failUnlessEqual(out, '') + self.failUnless(self.tmpfile in out or out == '', out) elif os.name =='posix': self.failUnlessEqual(out, '') else: @@ -84,16 +100,12 @@ err = popen.stderr.read() if os.name == 'nt': - self.failUnless('IOError: [Errno 11] Resource temporarily unavailable' in err, err) + self.failUnless('WindowsError: [Error 13]' in err, err) elif os.name =='posix': - self.failUnless('IOError: [Errno 11] Resource temporarily unavailable' in err, err) + self.failUnless('IOError: [Errno 11]' in err, err) else: raise OSError("unsupported os") - self.failUnless(os.path.isfile(testfile)) - unlock(fd) - fd.close() - def test_suite(): return unittest.TestSuite(( unittest.makeSuite(SingleAppTest), Modified: pymoul/trunk/src/moul/qt/ui/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-03-15 08:39:32 UTC (rev 258) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.py 2007-03-15 08:43:34 UTC (rev 259) @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'src/moul/qt/ui/mainwindow.ui' +# Form implementation generated from reading ui file 'src\moul\qt\ui\mainwindow.ui' # -# Created: Sat Mar 10 15:51:37 2007 +# Created: Thu Mar 15 09:09:39 2007 # by: PyQt4 UI code generator 4.1.1 # # WARNING! All changes made in this file will be lost! @@ -959,11 +959,11 @@ self.groupBox_4.setGeometry(QtCore.QRect(10,0,451,371)) self.groupBox_4.setObjectName("groupBox_4") - self.widget = QtGui.QWidget(self.groupBox_4) - self.widget.setGeometry(QtCore.QRect(7,20,441,58)) - self.widget.setObjectName("widget") + self.layoutWidget4 = QtGui.QWidget(self.groupBox_4) + self.layoutWidget4.setGeometry(QtCore.QRect(7,20,441,58)) + self.layoutWidget4.setObjectName("layoutWidget4") - self.gridlayout3 = QtGui.QGridLayout(self.widget) + self.gridlayout3 = QtGui.QGridLayout(self.layoutWidget4) self.gridlayout3.setMargin(0) self.gridlayout3.setSpacing(6) self.gridlayout3.setObjectName("gridlayout3") @@ -971,39 +971,39 @@ spacerItem9 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum) self.gridlayout3.addItem(spacerItem9,0,2,1,1) - self.label_6 = QtGui.QLabel(self.widget) + self.label_6 = QtGui.QLabel(self.layoutWidget4) self.label_6.setObjectName("label_6") self.gridlayout3.addWidget(self.label_6,1,0,1,1) - self.le_eg_status = QtGui.QLineEdit(self.widget) + self.le_eg_status = QtGui.QLineEdit(self.layoutWidget4) self.le_eg_status.setReadOnly(True) self.le_eg_status.setObjectName("le_eg_status") self.gridlayout3.addWidget(self.le_eg_status,1,1,1,1) - self.le_eg_length = QtGui.QLineEdit(self.widget) + self.le_eg_length = QtGui.QLineEdit(self.layoutWidget4) self.le_eg_length.setReadOnly(True) self.le_eg_length.setObjectName("le_eg_length") self.gridlayout3.addWidget(self.le_eg_length,1,4,1,1) - self.le_eg_light = QtGui.QLineEdit(self.widget) + self.le_eg_light = QtGui.QLineEdit(self.layoutWidget4) self.le_eg_light.setReadOnly(True) self.le_eg_light.setObjectName("le_eg_light") self.gridlayout3.addWidget(self.le_eg_light,0,4,1,1) - self.le_eg_time = QtGui.QLineEdit(self.widget) + self.le_eg_time = QtGui.QLineEdit(self.layoutWidget4) self.le_eg_time.setReadOnly(True) self.le_eg_time.setObjectName("le_eg_time") self.gridlayout3.addWidget(self.le_eg_time,0,1,1,1) - self.label_13 = QtGui.QLabel(self.widget) + self.label_13 = QtGui.QLabel(self.layoutWidget4) self.label_13.setObjectName("label_13") self.gridlayout3.addWidget(self.label_13,0,3,1,1) - self.label_14 = QtGui.QLabel(self.widget) + self.label_14 = QtGui.QLabel(self.layoutWidget4) self.label_14.setObjectName("label_14") self.gridlayout3.addWidget(self.label_14,1,3,1,1) - self.label_4 = QtGui.QLabel(self.widget) + self.label_4 = QtGui.QLabel(self.layoutWidget4) self.label_4.setObjectName("label_4") self.gridlayout3.addWidget(self.label_4,0,0,1,1) @@ -1205,9 +1205,9 @@ self.lb_doc_status.setBuddy(self.pb_doc_loadjournals) self.retranslateUi(MainWindow) - self.tabwidget.setCurrentIndex(3) + self.tabwidget.setCurrentIndex(0) self.tab_sub_settings.setCurrentIndex(1) - self.tabWidget_2.setCurrentIndex(2) + self.tabWidget_2.setCurrentIndex(0) self.tabWidget.setCurrentIndex(2) self.tabwidget_about.setCurrentIndex(0) QtCore.QObject.connect(self.main_buttonbox,QtCore.SIGNAL("rejected()"),MainWindow.close) @@ -1335,8 +1335,8 @@ self.groupBox_5.setTitle(QtGui.QApplication.translate("MainWindow", "Read chatlogs", None, QtGui.QApplication.UnicodeUTF8)) self.tb_chatlog_view.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:\'Sans Serif\'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;\">\n" - "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Not implemented</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) + "</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=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'Sans Serif\'; font-size:9pt;\">Not implemented</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) self.cb_chatlog.addItem(QtGui.QApplication.translate("MainWindow", "Not implemented", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_sub_chatlogs), QtGui.QApplication.translate("MainWindow", "Chat logs", None, QtGui.QApplication.UnicodeUTF8)) self.gb_documents.setTitle(QtGui.QApplication.translate("MainWindow", "Browse journals and notes", None, QtGui.QApplication.UnicodeUTF8)) @@ -1352,13 +1352,13 @@ self.tabwidget.setTabText(self.tabwidget.indexOf(self.tab_browse), QtGui.QApplication.translate("MainWindow", "Browse", None, QtGui.QApplication.UnicodeUTF8)) self.tb_abouttext.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:\'Sans Serif\'; font-size:9pt; 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)) + "</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; font-family:\'Sans Serif\'; font-size:9pt;\"></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) self.tabwidget_about.setTabText(self.tabwidget_about.indexOf(self.tab_sub_about), QtGui.QApplication.translate("MainWindow", "About pyMoul", None, QtGui.QApplication.UnicodeUTF8)) self.tb_license.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:\'Sans Serif\'; font-size:9pt; 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)) + "</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; font-family:\'Sans Serif\'; font-size:9pt;\"></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) self.tabwidget_about.setTabText(self.tabwidget_about.indexOf(self.tab_sub_license), QtGui.QApplication.translate("MainWindow", "License", None, QtGui.QApplication.UnicodeUTF8)) self.tabwidget.setTabText(self.tabwidget.indexOf(self.tab_about), 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-03-15 08:39:32 UTC (rev 258) +++ pymoul/trunk/src/moul/qt/ui/mainwindow.ui 2007-03-15 08:43:34 UTC (rev 259) @@ -110,7 +110,7 @@ <enum>QTabWidget::North</enum> </property> <property name="currentIndex" > - <number>3</number> + <number>0</number> </property> <widget class="QWidget" name="tab_tasks" > <attribute name="title" > @@ -1513,7 +1513,7 @@ </rect> </property> <property name="currentIndex" > - <number>2</number> + <number>0</number> </property> <widget class="QWidget" name="tab_time_dni" > <attribute name="title" > @@ -2080,7 +2080,7 @@ <property name="title" > <string>Eder Gira day cycle</string> </property> - <widget class="QWidget" name="" > + <widget class="QWidget" name="layoutWidget" > <property name="geometry" > <rect> <x>7</x> @@ -2320,8 +2320,8 @@ <property name="html" > <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Not implemented</p></body></html></string> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;">Not implemented</p></body></html></string> </property> <property name="textInteractionFlags" > <enum>Qt::TextSelectableByMouse</enum> @@ -2564,8 +2564,8 @@ <property name="html" > <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<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> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"> +<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; font-family:'Sans Serif'; font-size:9pt;"></p></body></html></string> </property> <property name="textInteractionFlags" > <enum>Qt::TextBrowserInteraction</enum> @@ -2591,8 +2591,8 @@ <property name="html" > <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<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> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"> +<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; font-family:'Sans Serif'; font-size:9pt;"></p></body></html></string> </property> <property name="textInteractionFlags" > <enum>Qt::TextSelectableByMouse</enum> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-15 08:39:32
|
Revision: 258 http://pymoul.svn.sourceforge.net/pymoul/?rev=258&view=rev Author: tiran Date: 2007-03-15 01:39:32 -0700 (Thu, 15 Mar 2007) Log Message: ----------- Unit test fixes for Windows Modified Paths: -------------- binaryfile/trunk/src/binaryfile/tests.py Modified: binaryfile/trunk/src/binaryfile/tests.py =================================================================== --- binaryfile/trunk/src/binaryfile/tests.py 2007-03-15 08:07:10 UTC (rev 257) +++ binaryfile/trunk/src/binaryfile/tests.py 2007-03-15 08:39:32 UTC (rev 258) @@ -39,15 +39,16 @@ class BinaryFileTest(unittest.TestCase): def setUp(self): - self.tmpname = mkstemp()[1] + hndl, self.tmpname = mkstemp() + os.close(hndl) self.b = BinaryFile(self.tmpname, 'wb+') def tearDown(self): self.b.close() + del self.b os.unlink(self.tmpname) def _testrw(self, name, data): - #import pdb; pdb.set_trace() read = getattr(self.b, 'read%s' % name) write = getattr(self.b, 'write%s' % name) write(data) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-15 08:07:09
|
Revision: 257 http://pymoul.svn.sourceforge.net/pymoul/?rev=257&view=rev Author: tiran Date: 2007-03-15 01:07:10 -0700 (Thu, 15 Mar 2007) Log Message: ----------- Beta* servers are aliases for 04 Modified Paths: -------------- pymoul/trunk/src/moul/server/serverlist.py Modified: pymoul/trunk/src/moul/server/serverlist.py =================================================================== --- pymoul/trunk/src/moul/server/serverlist.py 2007-03-15 08:06:34 UTC (rev 256) +++ pymoul/trunk/src/moul/server/serverlist.py 2007-03-15 08:07:10 UTC (rev 257) @@ -24,8 +24,8 @@ PORT = 14617 SERVER_LIST = [ - 'beta-auth.urulive.com', - 'beta-file.urulive.com', + #'beta-auth.urulive.com', # alias for uruapp-cw04 + #'beta-file.urulive.com', # alias for uruapp-cw04 #'bogus.foo.bar', #'www.mystonline.com', 'uruapp-cw01.ibs.aol.com', @@ -74,3 +74,4 @@ if __name__ == '__main__': _ping() + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-15 08:06:33
|
Revision: 256 http://pymoul.svn.sourceforge.net/pymoul/?rev=256&view=rev Author: tiran Date: 2007-03-15 01:06:34 -0700 (Thu, 15 Mar 2007) Log Message: ----------- Suppress more headers Modified Paths: -------------- enumprocess/trunk/src/enumprocess/processinfo.py Modified: enumprocess/trunk/src/enumprocess/processinfo.py =================================================================== --- enumprocess/trunk/src/enumprocess/processinfo.py 2007-03-15 07:10:46 UTC (rev 255) +++ enumprocess/trunk/src/enumprocess/processinfo.py 2007-03-15 08:06:34 UTC (rev 256) @@ -152,7 +152,7 @@ """ __slots__ = () - # -e: Select all processes + # -A: Select all processes # -w twice: unlimited width # -o: format CMD = "ps -w -w " @@ -247,8 +247,11 @@ return None else: lines = popen.stdout.readlines() - if 'PID' in lines[0] or 'CMD' in lines[0]: - lines.pop(0) + # PID, CMD, UCOMM, COMMAND + for s in ('PID', 'CMD', 'COMM'): + if s in lines[0]: + lines.pop(0) + break return lines class LinuxProcReader(object): @@ -483,3 +486,4 @@ unittest.main(defaultTest="test_suite") print getPids() print getPidNames() + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-15 07:10:51
|
Revision: 255 http://pymoul.svn.sourceforge.net/pymoul/?rev=255&view=rev Author: tiran Date: 2007-03-15 00:10:46 -0700 (Thu, 15 Mar 2007) Log Message: ----------- Refactored unit tests for single app Modified Paths: -------------- pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py Modified: pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py =================================================================== --- pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py 2007-03-14 16:04:32 UTC (rev 254) +++ pymoul/trunk/src/moul/osdependent/tests/test_singleapp.py 2007-03-15 07:10:46 UTC (rev 255) @@ -29,19 +29,17 @@ from doctest import DocTestSuite from shutil import rmtree from subprocess import Popen +from subprocess import PIPE from moul.osdependent.singleapp import LOCK_SH, LOCK_NB from moul.osdependent.singleapp import SimpleSingleApp from moul.osdependent.singleapp import lock from moul.osdependent.singleapp import unlock -tmpdir = tempfile.mkdtemp() -testfile = os.path.join(tmpdir, 'test.lck') - if os.name == 'nt': rmcmd = "cmd /c del %(testfile)s" else: - rmcmd = ("LC_ALL=C %(exe)s -c 'from fcntl import *; " + rmcmd = ("%(exe)s -c 'from fcntl import *; " "fd = open(%(testfile)s, %(mode)s); " "lockf(fd, LOCK_EX | LOCK_NB)'" % {'exe' : sys.executable, 'mode' : '"a+"', 'testfile' : '"%(testfile)s"'}) @@ -66,20 +64,17 @@ def test_locking(self): FLAGS = LOCK_SH | LOCK_NB - fd = open(testfile, 'w+') + fd = tempfile.NamedTemporaryFile(mode='w+', suffix='lck') + testfile = fd.name fd.write('testdata') fd.flush() self.failUnless(os.path.isfile(testfile)) lock(fd, FLAGS) - # Try to delete the file from another process - stdout = tempfile.TemporaryFile(mode="w+") - stderr = tempfile.TemporaryFile(mode="w+") - popen = Popen(rmcmd % {'testfile' : testfile}, stdout=stdout, - stderr=stderr, shell=True) + popen = Popen(rmcmd % {'testfile' : testfile}, stdout=PIPE, + stderr=PIPE, shell=True, env = {'LC_ALL' : 'C'}) popen.wait() - stdout.seek(0) - out = stdout.read() + out = popen.stdout.read() if os.name == 'nt': self.failUnlessEqual(out, '') elif os.name =='posix': @@ -87,19 +82,17 @@ else: raise OSError("unsupported os") - stderr.seek(0) - err = stderr.read() + err = popen.stderr.read() if os.name == 'nt': - self.failUnless('IOError: [Errno 11] Resource temporarily unavailable' in err) + self.failUnless('IOError: [Errno 11] Resource temporarily unavailable' in err, err) elif os.name =='posix': - self.failUnless('IOError: [Errno 11] Resource temporarily unavailable' in err) + self.failUnless('IOError: [Errno 11] Resource temporarily unavailable' in err, err) else: raise OSError("unsupported os") self.failUnless(os.path.isfile(testfile)) unlock(fd) fd.close() - rmtree(tmpdir) def test_suite(): return unittest.TestSuite(( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-14 16:04:44
|
Revision: 254 http://pymoul.svn.sourceforge.net/pymoul/?rev=254&view=rev Author: tiran Date: 2007-03-14 09:04:32 -0700 (Wed, 14 Mar 2007) Log Message: ----------- More BSD compatibility Modified Paths: -------------- enumprocess/trunk/PKG-INFO enumprocess/trunk/README.txt enumprocess/trunk/src/enumprocess/processinfo.py enumprocess/trunk/src/enumprocess.egg-info/PKG-INFO enumprocess/trunk/src/enumprocess.egg-info/SOURCES.txt Modified: enumprocess/trunk/PKG-INFO =================================================================== --- enumprocess/trunk/PKG-INFO 2007-03-14 00:17:31 UTC (rev 253) +++ enumprocess/trunk/PKG-INFO 2007-03-14 16:04:32 UTC (rev 254) @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: enumprocess -Version: 0.1 +Version: 0.1.1 Summary: enumprocess: list pids and processes Home-page: http://sourceforge.net/projects/pymoul/ Author: Christian Heimes @@ -11,7 +11,7 @@ TODO: long description Keywords: pid,process,enum,proc,ps,psapi -Platform: Independant +Platform: Independent Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Modified: enumprocess/trunk/README.txt =================================================================== --- enumprocess/trunk/README.txt 2007-03-14 00:17:31 UTC (rev 253) +++ enumprocess/trunk/README.txt 2007-03-14 16:04:32 UTC (rev 254) @@ -14,4 +14,19 @@ getPids() - list of ints/longs getPidNames() - mapping pid -> name getPidDetails(pid) - detailed informations about a process -getPidDetails('self') - detailed informations about current process \ No newline at end of file +getPidDetails('self') - detailed informations about current process + +Authors +======= + +Christian Heimes + + * primary developer and maintainer + +Walt Scrivens + + * Mac/BSD support and tester + +The Windows implementation is based on Eric Koome's example: +http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/305279 + Modified: enumprocess/trunk/src/enumprocess/processinfo.py =================================================================== --- enumprocess/trunk/src/enumprocess/processinfo.py 2007-03-14 00:17:31 UTC (rev 253) +++ enumprocess/trunk/src/enumprocess/processinfo.py 2007-03-14 16:04:32 UTC (rev 254) @@ -152,13 +152,13 @@ """ __slots__ = () - # -e: every process + # -e: Select all processes # -w twice: unlimited width - # -O: format - CMD = "ps" - PIDNAMES = CMD + " -e -o pid,comm" - PIDS = CMD + " -e -o pid" - PIDDETAILS = CMD + " -p %i -o comm" + # -o: format + CMD = "ps -w -w " + PIDS = CMD + "-A -o pid" + PIDNAMES = CMD + "-A -o pid,ucomm" + PIDDETAILS = CMD + "-p %i -o ucomm" @classmethod def supported(cls): Modified: enumprocess/trunk/src/enumprocess.egg-info/PKG-INFO =================================================================== --- enumprocess/trunk/src/enumprocess.egg-info/PKG-INFO 2007-03-14 00:17:31 UTC (rev 253) +++ enumprocess/trunk/src/enumprocess.egg-info/PKG-INFO 2007-03-14 16:04:32 UTC (rev 254) @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: enumprocess -Version: 0.1 +Version: 0.1.1 Summary: enumprocess: list pids and processes Home-page: http://sourceforge.net/projects/pymoul/ Author: Christian Heimes @@ -11,7 +11,7 @@ TODO: long description Keywords: pid,process,enum,proc,ps,psapi -Platform: Independant +Platform: Independent Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Modified: enumprocess/trunk/src/enumprocess.egg-info/SOURCES.txt =================================================================== --- enumprocess/trunk/src/enumprocess.egg-info/SOURCES.txt 2007-03-14 00:17:31 UTC (rev 253) +++ enumprocess/trunk/src/enumprocess.egg-info/SOURCES.txt 2007-03-14 16:04:32 UTC (rev 254) @@ -3,6 +3,7 @@ LICENSE.txt MANIFEST.in Makefile +PKG-INFO README.txt ez_setup.py setup.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-14 00:17:30
|
Revision: 253 http://pymoul.svn.sourceforge.net/pymoul/?rev=253&view=rev Author: tiran Date: 2007-03-13 17:17:31 -0700 (Tue, 13 Mar 2007) Log Message: ----------- Hopefully another fix for BSD Modified Paths: -------------- enumprocess/trunk/src/enumprocess/processinfo.py Modified: enumprocess/trunk/src/enumprocess/processinfo.py =================================================================== --- enumprocess/trunk/src/enumprocess/processinfo.py 2007-03-13 19:57:19 UTC (rev 252) +++ enumprocess/trunk/src/enumprocess/processinfo.py 2007-03-14 00:17:31 UTC (rev 253) @@ -156,9 +156,9 @@ # -w twice: unlimited width # -O: format CMD = "ps" - PIDNAMES = CMD + " -e -o pid,ucmd" + PIDNAMES = CMD + " -e -o pid,comm" PIDS = CMD + " -e -o pid" - PIDDETAILS = CMD + " -p %i -o ucmd" + PIDDETAILS = CMD + " -p %i -o comm" @classmethod def supported(cls): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-13 19:57:21
|
Revision: 252 http://pymoul.svn.sourceforge.net/pymoul/?rev=252&view=rev Author: tiran Date: 2007-03-13 12:57:19 -0700 (Tue, 13 Mar 2007) Log Message: ----------- Update XXX report and Makefile Fixed some comments in Dni time Modified Paths: -------------- pymoul/trunk/Makefile.in pymoul/trunk/doc/XXXreport.html pymoul/trunk/src/moul/qt/ui/mainwindow.py pymoul/trunk/src/moul/time/dni.py Modified: pymoul/trunk/Makefile.in =================================================================== --- pymoul/trunk/Makefile.in 2007-03-13 15:37:27 UTC (rev 251) +++ pymoul/trunk/Makefile.in 2007-03-13 19:57:19 UTC (rev 252) @@ -29,7 +29,7 @@ bdist_egg: PYTHONPATH="src" $(PYTHON) setup.py $(SETUPFLAGS) bdist_egg -run: ui +run: inplace ui PYTHONPATH="src" $(PYTHON) src/moul/qt/moulqt.py exerun: ui py2exe Modified: pymoul/trunk/doc/XXXreport.html =================================================================== --- pymoul/trunk/doc/XXXreport.html 2007-03-13 15:37:27 UTC (rev 251) +++ pymoul/trunk/doc/XXXreport.html 2007-03-13 19:57:19 UTC (rev 252) @@ -3,11 +3,11 @@ <body> <h1>pyMoul - Developer report tools: XXX/TODO/FIXME comments</h1> -<p>Generated on Fri, 09 Mar 2007 17:18:53 CET, based on Zope 3's XXX report</p> +<p>Generated on Mon, 12 Mar 2007 11:58:47 CET, based on Zope 3's XXX report</p> <hr> <h3>Summary</h3> <p> - There are currently 92 XXX/TODO/FIXME comments. + There are currently 88 XXX/TODO/FIXME comments. </p> <hr/> <h3>Listing</h3> @@ -317,14 +317,14 @@ base-47-base-158- pass base-48-base-159- base-49-base-160-class Constrain(object): -base:50:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-51-base-555- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-52-base-556- # microphon missing -> OS mixer -base-53-base-557- } -base:54:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-55-base-643- -base-56-base-644-class GraphicsIni(ConfFile): -base-57-base-645- _filename = 'graphics.ini' +base:50:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:556</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check +base-51-base-557- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui +base-52-base-558- # microphon missing -> OS mixer +base-53-base-559- } +base:54:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:644</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. +base-55-base-645- +base-56-base-646-class GraphicsIni(ConfFile): +base-57-base-647- _filename = 'graphics.ini' base:58:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:59</b><br/><pre> # TODO: fnmatch base-59-base-60- return len([name for name in os.listdir(path) base-60-base-61- if os.path.isfile(os.path.join(path, name))]) @@ -338,7 +338,7 @@ base-68-base-116-class AudioIniTest(GenericIniTest): base-69-base-117- enc = aud_enc base:70:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:152</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-71-base-153- +base-71-base-153- base-72-base-154- p.screenres = 0 base-73-base-155- eq(p._get('Graphics.Width'), 800) base:74:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/utils.py.svn-base:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 @@ -354,1908 +354,2256 @@ base-84-class AudioIniTest(GenericIniTest): base-85- enc = aud_enc base:86:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:152</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-87- +base-87- base-88- p.screenres = 0 base-89- eq(p._get('Graphics.Width'), 800) -base:90:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:105</b><br/><pre> # TODO: more -base-91- -base-92- def test_publicapi_create(self): -base-93- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc)) -base:94:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:116</b><br/><pre> # TODO: more -base-95- -base-96-class AudioIniTest(GenericIniTest): -base-97- enc = aud_enc -base:98:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py~:154</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-99- -base-100- p.screenres = 0 -base-101- eq(p._get('Graphics.Width'), 800) -base:102:</pre></li><li><b>File: utilities/../src/moul/file/tests/utils.py:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 -base-103- fd = open(os.path.join(path, fname), 'wb') -base-104- fd.write('dummy') -base-105- fd.close() -base:106:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-107- if not os.path.isdir(self._archivedir): -base-108- LOG.warning("%s is not a directory" % self._archivedir) -base-109- return -base:110:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct -base-111- if header is None: -base-112- fd = self._fd -base-113- fd.seek(0) -base:114:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:127</b><br/><pre> # XXX use struct -base-115- if size is None: -base-116- size = self.getFileSize() -base-117- leading = 4* [None] -base:118:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:267</b><br/><pre> # XXX: move checks to copy method! -base-119- if not os.path.isfile(fixed): -base-120- self._tocheck.append((ki, fixed)) -base-121- continue -base:122:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:157</b><br/><pre> # TODO: write me -base-123- pass -base-124- -base-125-class Constrain(object): -base:126:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-127- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-128- # microphon missing -> OS mixer -base-129- } -base:130:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-131- -base-132-class GraphicsIni(ConfFile): -base-133- _filename = 'graphics.ini' -base:134:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:112</b><br/><pre> # XXX use struct -base-135- if header is None: -base-136- fd = self._fd -base-137- fd.seek(0) -base:138:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:127</b><br/><pre> # XXX use struct -base-139- if size is None: -base-140- size = self.getFileSize() -base-141- leading = 4* [None] -base:142:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:267</b><br/><pre> # XXX: move checks to copy method! -base-143- if not os.path.isfile(fixed): -base-144- self._tocheck.append((ki, fixed)) -base-145- else: -base:146:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:157</b><br/><pre> # TODO: write me -base-147- pass -base-148- -base-149-class Constrain(object): -base:150:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-151- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-152- # microphon missing -> OS mixer -base-153- } -base:154:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-155- -base-156-class GraphicsIni(ConfFile): -base-157- _filename = 'graphics.ini' -base:158:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-159- if not os.path.isdir(self._archivedir): -base-160- LOG.warning("%s is not a directory" % self._archivedir) -base-161- return -base:162:</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch -base-163- return len([name for name in os.listdir(path) -base-164- if os.path.isfile(os.path.join(path, name))]) -base-165- -base:166:</pre></li><li><b>File: utilities/../src/moul/file/directory.py~:59</b><br/><pre> # TODO: fnmatch -base-167- return len([name for name in os.listdir(path) -base-168- if os.path.isfile(os.path.join(path, name))]) -base-169- -base:170:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:76</b><br/><pre> # XXX: dos format -base-171-base-77- return data.replace("\r\n", "\n") -base-172-base-78- -base-173-base-79-def encryptWDYS(instr, fout): -base:174:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:86</b><br/><pre> # XXX: dos format -base-175-base-87- instr = instr.replace("\n", "\r\n") -base-176-base-88- fout.seek(0) -base-177-base-89- fout.write(HEADER) -base:178:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:28</b><br/><pre># TODO: use BinaryFile -base-179-base-29- -base-180-base-30-def list2int(lst): -base-181-base-31- return [ord(s) for s in lst] -base:182:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:72</b><br/><pre> # XXX NotImplemented -base-183-base-73- raise NotImplementedError -base-184-base-74- -base-185-base-75-def decipher(crypt, size, key): -base:186:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/binary.py.svn-base:293</b><br/><pre> if size > 1024: # XXX: ??? -base-187-base-294- raise ValueError("string is too long: %i" % size) -base-188-base-295- if self.version == 5: -base-189-base-296- size |= 0xF000 -base:190:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/binary.py.svn-base:315</b><br/><pre> if size > 1024: # XXX: ??? -base-191-base-316- raise ValueError("size '%i' > 1024 at position %s(%s)" % -base-192-base-317- (size, fd.tell(), repr(fd))) -base-193-base-318- if self.version == 5: -base:194:base:319: # XXX: testme -base-195-base-320- # read data as tuple of integeres -base-196-base-321- data = fd.readPacked("<%iI" % size) -base-197-base-322- # OR integers with 0xff and write their char equivalent to string -base:198:</pre></li><li><b>File: utilities/../src/moul/crypt/tests/.svn/text-base/test_binary.py.svn-base:98</b><br/><pre> # XXX: no test data -base-199-base-99- pass -base-200-base-100- -base-201-base-101- def test_string0(self): -base:202:</pre></li><li><b>File: utilities/../src/moul/crypt/tests/test_binary.py:98</b><br/><pre> # XXX: no test data -base-203- pass -base-204- -base-205- def test_string0(self): -base:206:</pre></li><li><b>File: utilities/../src/moul/crypt/tests/test_binary.py~:98</b><br/><pre> # XXX: no test data -base-207- pass -base-208- -base-209- def test_string0(self): -base:210:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:76</b><br/><pre> # XXX: dos format -base-211- return data.replace("\r\n", "\n") -base-212- -base-213-def encryptWDYS(instr, fout): -base:214:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:86</b><br/><pre> # XXX: dos format -base-215- instr = instr.replace("\n", "\r\n") -base-216- fout.seek(0) -base-217- fout.write(HEADER) -base:218:</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py~:293</b><br/><pre> if size > 1024: # XXX: ??? -base-219- raise ValueError("string is too long: %i" % size) -base-220- if self.version == 5: -base-221- size |= 0xF000 -base:222:</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py~:315</b><br/><pre> if size > 1024: # XXX: ??? -base-223- raise ValueError("size '%i' > 1024 at position %s(%s)" % -base-224- (size, fd.tell(), repr(fd))) -base-225- if self.version == 5: -</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:229</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:28</b><br/><pre># TODO: use BinaryFile -base-230- -base-231-def list2int(lst): -base-232- return [ord(s) for s in lst] -base:233:</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:72</b><br/><pre> # XXX NotImplemented -base-234- raise NotImplementedError -base-235- -base-236-def decipher(crypt, size, key): -base:237:</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:293</b><br/><pre> if size > 1024: # XXX: ??? -base-238- raise ValueError("string is too long: %i" % size) -base-239- if self.version == 5: -base-240- size |= 0xF000 -base:241:</pre></li><li><b>File: utilities/../src/moul/crypt/binary.py:315</b><br/><pre> if size > 1024: # XXX: ??? -base-242- raise ValueError("size '%i' > 1024 at position %s(%s)" % -base-243- (size, fd.tell(), repr(fd))) -base-244- if self.version == 5: -</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:248</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:154</b><br/><pre> # FIXME: signal doesn't do anything -base-249-base-155- self.emit(SIGNAL("close()")) -base-250-base-156- event.accept() -base-251-base-157- event.ignore() -base:252:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-253-base-294- del self._kiimage_progressbar -base-254-base-295- self.pb_kiimage_repair.setEnabled(True) -base-255-base-296- mb = qtutils.infoMB(self, -base:256:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:392</b><br/><pre> # TODO: change timer from every second to every minute -base-257-base-393- self._timezone_timer = QtCore.QTimer(self) -base-258-base-394- self._timezone_timer.setInterval(1000) # 1 sec -base:259:base:395: # TODO: needs optimization? run only when timer tab is active -base-260-base-396- self.connect(self._timezone_timer, SIGNAL('timeout()'), -base-261-base-397- self.on_timezone_timer_timeout) -base-262-base-398- self._timezone_timer.start() -base:263:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:507</b><br/><pre> # TODO: thread safety! -base-264-base-508- self.servers = servers -base-265-base-509- if not self.isRunning(): -base-266-base-510- self.start() -base:267:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:513</b><br/><pre> # TODO: thread safety! -base-268-base-514- # emit a list of names first -base-269-base-515- for server in self.servers: -base-270-base-516- self.emit(SIGNAL("server(const QString&)"), server.name) -base:271:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:551</b><br/><pre> # TODO check this -base-272-base-552- self._running = False -base-273-base-553- self.condition.wakeAll() -base-274-base-554- -base:275:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/errorhandler.py.svn-base:45</b><br/><pre> # TODO: translation aware -base-276-base-46- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback)) -base-277-base-47- if getattr(sys, 'frozen', False): -base-278-base-48- try: -base:279:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:154</b><br/><pre> # FIXME: signal doesn't do anything -base-280- self.emit(SIGNAL("close()")) -base-281- event.accept() -base-282- event.ignore() -base:283:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-284- del self._kiimage_progressbar -base-285- self.pb_kiimage_repair.setEnabled(True) -base-286- mb = qtutils.infoMB(self, -base:287:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:392</b><br/><pre> # TODO: change timer from every second to every minute -base-288- self._timezone_timer = QtCore.QTimer(self) -base-289- self._timezone_timer.setInterval(1000) # 1 sec -base-290- self.connect(self._timezone_timer, SIGNAL('timeout()'), -</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:293</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:507</b><br/><pre> # TODO: thread safety! -base-294- self.servers = servers -base-295- if not self.isRunning(): -base-296- self.start() -base:297:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:513</b><br/><pre> # TODO: thread safety! -base-298- # emit a list of names first -base-299- for server in self.servers: -base-300- self.emit(SIGNAL("server(const QString&)"), server.name) -base:301:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:551</b><br/><pre> # TODO check this -base-302- self._running = False -base-303- self.condition.wakeAll() -base-304- -base:305:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:154</b><br/><pre> # FIXME: signal doesn't do anything -base-306- self.emit(SIGNAL("close()")) -base-307- event.accept() -base-308- event.ignore() -base:309:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:293</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-310- del self._kiimage_progressbar -base-311- self.pb_kiimage_repair.setEnabled(True) -base-312- mb = qtutils.infoMB(self, -base:313:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:392</b><br/><pre> # TODO: change timer from every second to every minute -base-314- self._timezone_timer = QtCore.QTimer(self) -base-315- self._timezone_timer.setInterval(1000) # 1 sec -base-316- self.connect(self._timezone_timer, SIGNAL('timeout()'), -</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:319</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:507</b><br/><pre> # TODO: thread safety! -base-320- self.servers = servers -base-321- if not self.isRunning(): -base-322- self.start() -base:323:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:513</b><br/><pre> # TODO: thread safety! -base-324- # emit a list of names first -base-325- for server in self.servers: -base-326- self.emit(SIGNAL("server(const QString&)"), server.name) -base:327:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:551</b><br/><pre> # TODO check this -base-328- self._running = False -base-329- self.condition.wakeAll() -base-330- -base:331:</pre></li><li><b>File: utilities/../src/moul/qt/errorhandler.py:45</b><br/><pre> # TODO: translation aware -base-332- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback)) -base-333- if getattr(sys, 'frozen', False): -base-334- try: -base:335:</pre></li><li><b>File: utilities/../src/moul/osdependent/__init__.py:120</b><br/><pre># XXX: what about cygwin, bsd and others? -base-336-_thismodule = sys.modules[__name__] -base-337-if __WIN32__: -base-338- from moul.osdependent import win32 as osdep_win32 -base:339:</pre></li><li><b>File: utilities/../src/moul/osdependent/darwin/__init__.py:37</b><br/><pre>EXEC_NAME = "???" # XXX -base-340-UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater" -base-341-LOCATIONS = [ -base-342- "/Applications", -base:343:</pre></li><li><b>File: utilities/../src/moul/osdependent/darwin/.svn/text-base/__init__.py.svn-base:37</b><br/><pre>EXEC_NAME = "???" # XXX -base-344-base-38-UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater" -base-345-base-39-LOCATIONS = [ -base-346-base-40- "/Applications", -base:347:</pre></li><li><b>File: utilities/../src/moul/osdependent/darwin/__init__.py~:37</b><br/><pre>EXEC_NAME = "???" # XXX -base-348-UPDATER = "Uru Live.app/Contents/Resources/Game.app/Contents/Resources/URU Live Updater.app/Contents/MacOS/URU Live Updater" -base-349-LOCATIONS = [ -base-350- "/Applications", -base:351:</pre></li><li><b>File: utilities/../src/moul/osdependent/.svn/text-base/__init__.py.svn-base:120</b><br/><pre># XXX: what about cygwin, bsd and others? -base-352-base-121-_thismodule = sys.modules[__name__] -base-353-base-122-if __WIN32__: -base-354-base-123- from moul.osdependent import win32 as osdep_win32 -base:355:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:14</b><br/><pre><ol><li><b>File: utilities/../.svn/text-base/test.py.svn-base:548</b><br/><pre> # XXX bug: doctest may report several failures in one test, they are -base-356-base-15-base-549- # separated by a horizontal dash line. Only the first one of -base-357-base-16-base-550- # them is now colorized properly. -base-358-base-17-base-551- header = lines[0] -base:359:base:18:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:603</b><br/><pre> # TODO: Scrape and colorize the traceback. -base-360-base-19-base-604- result.append(self.colorize('doctest_got', line)) -base-361-base-20-base-605- elif remaining[0] == 'Differences (ndiff with -expected +actual):': -base-362-base-21-base-606- result.append(self.colorize('doctest_title', remaining.pop(0))) # E. raised: -base:363:base:22:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:623</b><br/><pre> # TODO: We only deal with the output from Zope 3's doctest module. -base-364-base-23-base-624- # A colorizer for the Python's doctest module would be nice too. -base-365-base-24-base-625- if doctest: -base-366-base-25-base-626- # If we have a doctest, we do not care about this header. All the -base:367:base:26:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:690</b><br/><pre> # TODO these should be hookable -base-368-base-27-base-691- from zope.tales.tales import TALESTracebackSupplement -base-369-base-28-base-692- from zope.pagetemplate.pagetemplate \ -base-370-base-29-base-693- import PageTemplateTracebackSupplement -base:371:base:30:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/chatlog.py.svn-base:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-372-base-31-base-217- if not os.path.isdir(self._archivedir): -base-373-base-32-base-218- LOG.warning("%s is not a directory" % self._archivedir) -base-374-base-33-base-219- return -base:375:base:34:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:112</b><br/><pre> # XXX use struct -base-376-base-35-base-113- if header is None: -base-377-base-36-base-114- fd = self._fd -base-378-base-37-base-115- fd.seek(0) -base:379:base:38:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:127</b><br/><pre> # XXX use struct -base-380-base-39-base-128- if size is None: -base-381-base-40-base-129- size = self.getFileSize() -base-382-base-41-base-130- leading = 4* [None] -base:383:base:42:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:267</b><br/><pre> # XXX: move checks to copy method! -base-384-base-43-base-268- if not os.path.isfile(fixed): -base-385-base-44-base-269- self._tocheck.append((ki, fixed)) -base-386-base-45-base-270- continue -base:387:base:46:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:157</b><br/><pre> # TODO: write me -base-388-base-47-base-158- pass -base-389-base-48-base-159- -base-390-base-49-base-160-class Constrain(object): -base:391:base:50:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-392-base-51-base-555- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-393-base-52-base-556- # microphon missing -> OS mixer -base-394-base-53-base-557- } -base:395:base:54:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-396-base-55-base-643- -base-397-base-56-base-644-class GraphicsIni(ConfFile): -base-398-base-57-base-645- _filename = 'graphics.ini' -base:399:base:58:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:59</b><br/><pre> # TODO: fnmatch -base-400-base-59-base-60- return len([name for name in os.listdir(path) -base-401-base-60-base-61- if os.path.isfile(os.path.join(path, name))]) -base-402-base-61-base-62- -base:403:base:62:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:105</b><br/><pre> # TODO: more -base-404-base-63-base-106- -base-405-base-64-base-107- def test_publicapi_create(self): -base-406-base-65-base-108- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc)) -base:407:base:66:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:116</b><br/><pre> # TODO: more -base-408-base-67-base-117- -base-409-base-68-base-118-class AudioIniTest(GenericIniTest): -base-410-base-69-base-119- enc = aud_enc -base:411:base:70:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:154</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-412-base-71-base-155- -base-413-base-72-base-156- p.screenres = 0 -base-414-base-73-base-157- eq(p._get('Graphics.Width'), 800) -base:415:base:74:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/utils.py.svn-base:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 -base-416-base-75-base-81- fd = open(os.path.join(path, fname), 'wb') -base-417-base-76-base-82- fd.write('dummy') -base-418-base-77-base-83- fd.close() -base:419:base:78:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:105</b><br/><pre> # TODO: more -base-420-base-79- -base-421-base-80- def test_publicapi_create(self): -base-422-base-81- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc)) -base:423:base:82:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:116</b><br/><pre> # TODO: more -base-424-base-83- -base-425-base-84-class AudioIniTest(GenericIniTest): -base-426-base-85- enc = aud_enc -base:427:base:86:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:154</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-428-base-87- -base-429-base-88- p.screenres = 0 -base-430-base-89- eq(p._get('Graphics.Width'), 800) -base:431:base:90:</pre></li><li><b>File: utilities/../src/moul/file/tests/utils.py:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 -base-432-base-91- fd = open(os.path.join(path, fname), 'wb') -base-433-base-92- fd.write('dummy') -base-434-base-93- fd.close() -base:435:base:94:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-436-base-95- if not os.path.isdir(self._archivedir): -base-437-base-96- LOG.warning("%s is not a directory" % self._archivedir) -base-438-base-97- return -base:439:base:98:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct -base-440-base-99- if header is None: -base-441-base-100- fd = self._fd -base-442-base-101- fd.seek(0) -base:443:base:102:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:127</b><br/><pre> # XXX use struct -base-444-base-103- if size is None: -base-445-base-104- size = self.getFileSize() -base-446-base-105- leading = 4* [None] -base:447:base:106:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:267</b><br/><pre> # XXX: move checks to copy method! -base-448-base-107- if not os.path.isfile(fixed): -base-449-base-108- self._tocheck.append((ki, fixed)) -base-450-base-109- continue -base:451:base:110:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:157</b><br/><pre> # TODO: write me -base-452-base-111- pass -base-453-base-112- -base-454-base-113-class Constrain(object): -base:455:base:114:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-456-base-115- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-457-base-116- # microphon missing -> OS mixer -base-458-base-117- } -base:459:base:118:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-460-base-119- -base-461-base-120-class GraphicsIni(ConfFile): -base-462-base-121- _filename = 'graphics.ini' -base:463:base:122:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:112</b><br/><pre> # XXX use struct -base-464-base-123- if header is None: -base-465-base-124- fd = self._fd -base-466-base-125- fd.seek(0) -base:467:base:126:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:127</b><br/><pre> # XXX use struct -base-468-base-127- if size is None: -base-469-base-128- size = self.getFileSize() -base-470-base-129- leading = 4* [None] -base:471:base:130:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:267</b><br/><pre> # XXX: move checks to copy method! -base-472-base-131- if not os.path.isfile(fixed): -base-473-base-132- self._tocheck.append((ki, fixed)) -base-474-base-133- else: -base:475:base:134:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:157</b><br/><pre> # TODO: write me -base-476-base-135- pass -base-477-base-136- -base-478-base-137-class Constrain(object): -base:479:base:138:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-480-base-139- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-481-base-140- # microphon missing -> OS mixer -base-482-base-141- } -base:483:base:142:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-484-base-143- -base-485-base-144-class GraphicsIni(ConfFile): -base-486-base-145- _filename = 'graphics.ini' -base:487:base:146:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:216</b><br/><pre> # TODO: inefficient, compare list with directory content -base-488-base-147- if not os.path.isdir(self._archivedir): -base-489-base-148- LOG.warning("%s is not a directory" % self._archivedir) -base-490-base-149- return -base:491:base:150:</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch -base-492-base-151- return len([name for name in os.listdir(path) -base-493-base-152- if os.path.isfile(os.path.join(path, name))]) -base-494-base-153- -base:495:base:154:</pre></li><li><b>File: utilities/../src/moul/file/directory.py~:59</b><br/><pre> # TODO: fnmatch -base-496-base-155- return len([name for name in os.listdir(path) -base-497-base-156- if os.path.isfile(os.path.join(path, name))]) -base-498-base-157- -base:499:base:158:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:77</b><br/><pre> # XXX: dos format -base-500-base-159-base-78- return data.replace("\r\n", "\n") -base-501-base-160-base-79- -base-502-base-161-base-80-def encryptWDYS(instr, fout): -base:503:base:162:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:87</b><br/><pre> # XXX: dos format -base-504-base-163-base-88- instr = instr.replace("\n", "\r\n") -base-505-base-164-base-89- fout.seek(0) -base-506-base-165-base-90- fout.write(HEADER) -base:507:base:166:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:71</b><br/><pre> # XXX NotImplemented -base-508-base-167-base-72- raise NotImplementedError -base-509-base-168-base-73- -base-510-base-169-base-74-def decipher(crypt, size, key): -base:511:base:170:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:77</b><br/><pre> # XXX: dos format -base-512-base-171- return data.replace("\r\n", "\n") -base-513-base-172- -base-514-base-173-def encryptWDYS(instr, fout): -base:515:base:174:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:87</b><br/><pre> # XXX: dos format -base-516-base-175- instr = instr.replace("\n", "\r\n") -base-517-base-176- fout.seek(0) -base-518-base-177- fout.write(HEADER) -base:519:base:178:</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:71</b><br/><pre> # XXX NotImplemented -base-520-base-179- raise NotImplementedError -base-521-base-180- -base-522-base-181-def decipher(crypt, size, key): -base:523:base:182:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:152</b><br/><pre> # FIXME: signal doesn't do anything -base-524-base-183-base-153- self.emit(SIGNAL("close()")) -base-525-base-184-base-154- event.accept() -base-526-base-185-base-155- event.ignore() -base:527:base:186:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:291</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-528-base-187-base-292- del self._kiimage_progressbar -base-529-base-188-base-293- self.pb_kiimage_repair.setEnabled(True) -base-530-base-189-base-294- mb = qtutils.infoMB(self, -base:531:base:190:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:390</b><br/><pre> # TODO: change timer from every second to every minute -base-532-base-191-base-391- self._timezone_timer = timer = QtCore.QTimer(self) -base-533-base-192-base-392- timer.setInterval(1000) # 1 sec -base:534:base:193:base:393: # TODO: needs optimization? run only when timer tab is active -base-535-base-194-base-394- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout) -base-536-base-195-base-395- timer.start() -base-537-base-196-base-396- -base:538:base:197:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:487</b><br/><pre> # TODO: thread safety! -base-539-base-198-base-488- self.servers = servers -base-540-base-199-base-489- if not self.isRunning(): -base-541-base-200-base-490- self.start() -base:542:base:201:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:493</b><br/><pre> # TODO: thread safety! -base-543-base-202-base-494- # emit a list of names first -base-544-base-203-base-495- for server in self.servers: -base-545-base-204-base-496- self.emit(SIGNAL("server(const QString&)"), server.name) -base:546:base:205:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:531</b><br/><pre> # TODO check this -base-547-base-206-base-532- self._running = False -base-548-base-207-base-533- self.condition.wakeAll() -base-549-base-208-base-534- -base:550:base:209:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/errorhandler.py.svn-base:45</b><br/><pre> # TODO: translation aware -base-551-base-210-base-46- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback)) -base-552-base-211-base-47- if getattr(sys, 'frozen', False): -base-553-base-212-base-48- try: -base:554:base:213:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:151</b><br/><pre> # FIXME: signal doesn't do anything -base-555-base-214- self.emit(SIGNAL("close()")) -base-556-base-215- event.accept() -base-557-base-216- event.ignore() -base:558:base:217:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:290</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-559-base-218- del self._kiimage_progressbar -base-560-base-219- self.pb_kiimage_repair.setEnabled(True) -base-561-base-220- mb = qtutils.infoMB(self, -base:562:base:221:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:389</b><br/><pre> # TODO: change timer from every second to every minute -base-563-base-222- self._timezone_timer = timer = QtCore.QTimer(self) -base-564-base-223- timer.setInterval(1000) # 1 sec -base-565-base-224- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout) -base:566:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:227</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:486</b><br/><pre> # TODO: thread safety! -base-567-base-228- self.servers = servers -base-568-base-229- if not self.isRunning(): -base-569-base-230- self.start() -base:570:base:231:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:492</b><br/><pre> # TODO: thread safety! -base-571-base-232- # emit a list of names first -base-572-base-233- for server in self.servers: -base-573-base-234- self.emit(SIGNAL("server(const QString&)"), server.name) -base:574:base:235:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py~:530</b><br/><pre> # TODO check this -base-575-base-236- self._running = False -base-576-base-237- self.condition.wakeAll() -base-577-base-238- -base:578:base:239:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:152</b><br/><pre> # FIXME: signal doesn't do anything -base-579-base-240- self.emit(SIGNAL("close()")) -base-580-base-241- event.accept() -base-581-base-242- event.ignore() -base:582:base:243:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:291</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-583-base-244- del self._kiimage_progressbar -base-584-base-245- self.pb_kiimage_repair.setEnabled(True) -base-585-base-246- mb = qtutils.infoMB(self, -base:586:base:247:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:390</b><br/><pre> # TODO: change timer from every second to every minute -base-587-base-248- self._timezone_timer = timer = QtCore.QTimer(self) -base-588-base-249- timer.setInterval(1000) # 1 sec -base-589-base-250- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout) -base:590:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:253</b><br/><pre></pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:487</b><br/><pre> # TODO: thread safety! -base-591-base-254- self.servers = servers -base-592-base-255- if not self.isRunning(): -base-593-base-256- self.start() -base:594:base:257:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:493</b><br/><pre> # TODO: thread safety! -base-595-base-258- # emit a list of names first -base-596-base-259- for server in self.servers: -base-597-base-260- self.emit(SIGNAL("server(const QString&)"), server.name) -base:598:base:261:</pre></li><li><b>File: utilities/../src/moul/qt/mainwindow.py:531</b><br/><pre> # TODO check this -base-599-base-262- self._running = False -base-600-base-263- self.condition.wakeAll() -base-601-base-264- -base:602:base:265:</pre></li><li><b>File: utilities/../src/moul/qt/errorhandler.py:45</b><br/><pre> # TODO: translation aware -base-603-base-266- LOG.critical("UNHANDLED ERROR", exc_info=(typ, value, traceback)) -base-604-base-267- if getattr(sys, 'frozen', False): -base-605-base-268- try: -base:606:base:269:</pre></li><li><b>File: utilities/../src/moul/osdependent/__init__.py:120</b><br/><pre># XXX: what about cygwin, bsd and others? -base-607-base-270-_thismodule = sys.modules[__name__] -base-608-base-271-if __WIN32__: -base-609-base-272- from moul.osdependent import win32 as osdep_win32 -base:610:base:273:</pre></li><li><b>File: utilities/../src/moul/osdependent/.svn/text-base/__init__.py.svn-base:120</b><br/><pre># XXX: what about cygwin, bsd and others? -base-611-base-274-base-121-_thismodule = sys.modules[__name__] -base-612-base-275-base-122-if __WIN32__: -base-613-base-276-base-123- from moul.osdependent import win32 as osdep_win32 -base:614:base:277:</pre></li><li><b>File: utilities/../doc/.svn/text-base/XXXreport.html.svn-base:14</b><br/><pre><ol><li><b>File: utilities/../.svn/text-base/test.py.svn-base:548</b><br/><pre> # XXX bug: doctest may report several failures in one test, they are -base-615-base-278-base-15-base-549- # separated by a horizontal dash line. Only the first one of -base-616-base-279-base-16-base-550- # them is now colorized properly. -base-617-base-280-base-17-base-551- header = lines[0] -base:618:base:281:base:18:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:603</b><br/><pre> # TODO: Scrape and colorize the traceback. -base-619-base-282-base-19-base-604- result.append(self.colorize('doctest_got', line)) -base-620-base-283-base-20-base-605- elif remaining[0] == 'Differences (ndiff with -expected +actual):': -base-621-base-284-base-21-base-606- result.append(self.colorize('doctest_title', remaining.pop(0))) # E. raised: -base:622:base:285:base:22:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:623</b><br/><pre> # TODO: We only deal with the output from Zope 3's doctest module. -base-623-base-286-base-23-base-624- # A colorizer for the Python's doctest module would be nice too. -base-624-base-287-base-24-base-625- if doctest: -base-625-base-288-base-25-base-626- # If we have a doctest, we do not care about this header. All the -base:626:base:289:base:26:</pre></li><li><b>File: utilities/../.svn/text-base/test.py.svn-base:690</b><br/><pre> # TODO these should be hookable -base-627-base-290-base-27-base-691- from zope.tales.tales import TALESTracebackSupplement -base-628-base-291-base-28-base-692- from zope.pagetemplate.pagetemplate \ -base-629-base-292-base-29-base-693- import PageTemplateTracebackSupplement -base:630:base:293:base:30:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/chatlog.py.svn-base:208</b><br/><pre> # TODO: inefficient, compare list with directory content -base-631-base-294-base-31-base-209- if not os.path.isdir(self._logdir): -base-632-base-295-base-32-base-210- LOG.warning("%s is not a directory" % logdir) -base-633-base-296-base-33-base-211- return -base:634:base:297:base:34:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:112</b><br/><pre> # XXX use struct -base-635-base-298-base-35-base-113- if header is None: -base-636-base-299-base-36-base-114- fd = self._fd -base-637-base-300-base-37-base-115- fd.seek(0) -base:638:base:301:base:38:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:127</b><br/><pre> # XXX use struct -base-639-base-302-base-39-base-128- if size is None: -base-640-base-303-base-40-base-129- size = self.getFileSize() -base-641-base-304-base-41-base-130- leading = 4* [None] -base:642:base:305:base:42:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/kiimage.py.svn-base:267</b><br/><pre> # XXX: move checks to copy method! -base-643-base-306-base-43-base-268- if not os.path.isfile(fixed): -base-644-base-307-base-44-base-269- self._tocheck.append((ki, fixed)) -base-645-base-308-base-45-base-270- continue -base:646:base:309:base:46:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:157</b><br/><pre> # TODO: write me -base-647-base-310-base-47-base-158- pass -base-648-base-311-base-48-base-159- -base-649-base-312-base-49-base-160-class Constrain(object): -base:650:base:313:base:50:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-651-base-314-base-51-base-555- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-652-base-315-base-52-base-556- # microphon missing -> OS mixer -base-653-base-316-base-53-base-557- } -base:654:base:317:base:54:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/wdysini.py.svn-base:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-655-base-318-base-55-base-643- -base-656-base-319-base-56-base-644-class GraphicsIni(ConfFile): -base-657-base-320-base-57-base-645- _filename = 'graphics.ini' -base:658:base:321:base:58:</pre></li><li><b>File: utilities/../src/moul/file/.svn/text-base/directory.py.svn-base:59</b><br/><pre> # TODO: fnmatch -base-659-base-322-base-59-base-60- return len([name for name in os.listdir(path) -base-660-base-323-base-60-base-61- if os.path.isfile(os.path.join(path, name))]) -base-661-base-324-base-61-base-62- -base:662:base:325:base:62:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:105</b><br/><pre> # TODO: more -base-663-base-326-base-63-base-106- -base-664-base-327-base-64-base-107- def test_publicapi_create(self): -base-665-base-328-base-65-base-108- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc)) -base:666:base:329:base:66:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:116</b><br/><pre> # TODO: more -base-667-base-330-base-67-base-117- -base-668-base-331-base-68-base-118-class AudioIniTest(GenericIniTest): -base-669-base-332-base-69-base-119- enc = aud_enc -base:670:base:333:base:70:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/test_wdysini.py.svn-base:154</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-671-base-334-base-71-base-155- -base-672-base-335-base-72-base-156- p.screenres = 0 -base-673-base-336-base-73-base-157- eq(p._get('Graphics.Width'), 800) -base:674:base:337:base:74:</pre></li><li><b>File: utilities/../src/moul/file/tests/.svn/text-base/utils.py.svn-base:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 -base-675-base-338-base-75-base-81- fd = open(os.path.join(path, fname), 'wb') -base-676-base-339-base-76-base-82- fd.write('dummy') -base-677-base-340-base-77-base-83- fd.close() -base:678:base:341:base:78:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:105</b><br/><pre> # TODO: more -base-679-base-342-base-79- -base-680-base-343-base-80- def test_publicapi_create(self): -base-681-base-344-base-81- inipath = os.path.join(self.tmpdir, os.path.basename(self.enc)) -base:682:base:345:base:82:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:116</b><br/><pre> # TODO: more -base-683-base-346-base-83- -base-684-base-347-base-84-class AudioIniTest(GenericIniTest): -base-685-base-348-base-85- enc = aud_enc -base:686:base:349:base:86:</pre></li><li><b>File: utilities/../src/moul/file/tests/test_wdysini.py:154</b><br/><pre> #XXX self.failIf(p.isChanged()) -base-687-base-350-base-87- -base-688-base-351-base-88- p.screenres = 0 -base-689-base-352-base-89- eq(p._get('Graphics.Width'), 800) -base:690:base:353:base:90:</pre></li><li><b>File: utilities/../src/moul/file/tests/utils.py:80</b><br/><pre> for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32 -base-691-base-354-base-91- fd = open(os.path.join(path, fname), 'wb') -base-692-base-355-base-92- fd.write('dummy') -base-693-base-356-base-93- fd.close() -base:694:base:357:base:94:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py:208</b><br/><pre> # TODO: inefficient, compare list with directory content -base-695-base-358-base-95- if not os.path.isdir(self._logdir): -base-696-base-359-base-96- LOG.warning("%s is not a directory" % logdir) -base-697-base-360-base-97- return -base:698:base:361:base:98:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:112</b><br/><pre> # XXX use struct -base-699-base-362-base-99- if header is None: -base-700-base-363-base-100- fd = self._fd -base-701-base-364-base-101- fd.seek(0) -base:702:base:365:base:102:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:127</b><br/><pre> # XXX use struct -base-703-base-366-base-103- if size is None: -base-704-base-367-base-104- size = self.getFileSize() -base-705-base-368-base-105- leading = 4* [None] -base:706:base:369:base:106:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py:267</b><br/><pre> # XXX: move checks to copy method! -base-707-base-370-base-107- if not os.path.isfile(fixed): -base-708-base-371-base-108- self._tocheck.append((ki, fixed)) -base-709-base-372-base-109- continue -base:710:base:373:base:110:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:157</b><br/><pre> # TODO: write me -base-711-base-374-base-111- pass -base-712-base-375-base-112- -base-713-base-376-base-113-class Constrain(object): -base:714:base:377:base:114:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-715-base-378-base-115- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-716-base-379-base-116- # microphon missing -> OS mixer -base-717-base-380-base-117- } -base:718:base:381:base:118:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-719-base-382-base-119- -base-720-base-383-base-120-class GraphicsIni(ConfFile): -base-721-base-384-base-121- _filename = 'graphics.ini' -base:722:base:385:base:122:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:112</b><br/><pre> # XXX use struct -base-723-base-386-base-123- if header is None: -base-724-base-387-base-124- fd = self._fd -base-725-base-388-base-125- fd.seek(0) -base:726:base:389:base:126:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:127</b><br/><pre> # XXX use struct -base-727-base-390-base-127- if size is None: -base-728-base-391-base-128- size = self.getFileSize() -base-729-base-392-base-129- leading = 4* [None] -base:730:base:393:base:130:</pre></li><li><b>File: utilities/../src/moul/file/kiimage.py~:267</b><br/><pre> # XXX: move checks to copy method! -base-731-base-394-base-131- if not os.path.isfile(fixed): -base-732-base-395-base-132- self._tocheck.append((ki, fixed)) -base-733-base-396-base-133- else: -base:734:base:397:base:134:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:157</b><br/><pre> # TODO: write me -base-735-base-398-base-135- pass -base-736-base-399-base-136- -base-737-base-400-base-137-class Constrain(object): -base:738:base:401:base:138:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:554</b><br/><pre> 'Audio.SetDeviceName' : (QuotedString, Constrain()), # TODO: add check -base-739-base-402-base-139- 'Audio.SetChannelVolume GUI' : (FloatString, MinMax(0.0, 1.0)), # 0-100%, no ui -base-740-base-403-base-140- # microphon missing -> OS mixer -base-741-base-404-base-141- } -base:742:base:405:base:142:</pre></li><li><b>File: utilities/../src/moul/file/wdysini.py~:642</b><br/><pre> # TODO: microphon needs an extra handler. The mic slider changes the OS mixer. -base-743-base-406-base-143- -base-744-base-407-base-144-class GraphicsIni(ConfFile): -base-745-base-408-base-145- _filename = 'graphics.ini' -base:746:base:409:base:146:</pre></li><li><b>File: utilities/../src/moul/file/chatlog.py~:208</b><br/><pre> # TODO: inefficient, compare list with directory content -base-747-base-410-base-147- if not os.path.isdir(logdir): -base-748-base-411-base-148- LOG.warning("%s is not a directory" % logdir) -base-749-base-412-base-149- return -base:750:base:413:base:150:</pre></li><li><b>File: utilities/../src/moul/file/directory.py:59</b><br/><pre> # TODO: fnmatch -base-751-base-414-base-151- return len([name for name in os.listdir(path) -base-752-base-415-base-152- if os.path.isfile(os.path.join(path, name))]) -base-753-base-416-base-153- -base:754:base:417:base:154:</pre></li><li><b>File: utilities/../src/moul/file/directory.py~:59</b><br/><pre> # TODO: fnmatch -base-755-base-418-base-155- return len([name for name in os.listdir(path) -base-756-base-419-base-156- if os.path.isfile(os.path.join(path, name))]) -base-757-base-420-base-157- -base:758:base:421:base:158:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:77</b><br/><pre> # XXX: dos format -base-759-base-422-base-159-base-78- return data.replace("\r\n", "\n") -base-760-base-423-base-160-base-79- -base-761-base-424-base-161-base-80-def encryptWDYS(instr, fout): -base:762:base:425:base:162:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/whatdoyousee.py.svn-base:87</b><br/><pre> # XXX: dos format -base-763-base-426-base-163-base-88- instr = instr.replace("\n", "\r\n") -base-764-base-427-base-164-base-89- fout.seek(0) -base-765-base-428-base-165-base-90- fout.write(HEADER) -base:766:base:429:base:166:</pre></li><li><b>File: utilities/../src/moul/crypt/.svn/text-base/elf.py.svn-base:71</b><br/><pre> # XXX NotImplemented -base-767-base-430-base-167-base-72- raise NotImplementedError -base-768-base-431-base-168-base-73- -base-769-base-432-base-169-base-74-def decipher(crypt, size, key): -base:770:base:433:base:170:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:77</b><br/><pre> # XXX: dos format -base-771-base-434-base-171- return data.replace("\r\n", "\n") -base-772-base-435-base-172- -base-773-base-436-base-173-def encryptWDYS(instr, fout): -base:774:base:437:base:174:</pre></li><li><b>File: utilities/../src/moul/crypt/whatdoyousee.py:87</b><br/><pre> # XXX: dos format -base-775-base-438-base-175- instr = instr.replace("\n", "\r\n") -base-776-base-439-base-176- fout.seek(0) -base-777-base-440-base-177- fout.write(HEADER) -base:778:base:441:base:178:</pre></li><li><b>File: utilities/../src/moul/crypt/elf.py:71</b><br/><pre> # XXX NotImplemented -base-779-base-442-base-179- raise NotImplementedError -base-780-base-443-base-180- -base-781-base-444-base-181-def decipher(crypt, size, key): -base:782:base:445:base:182:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:149</b><br/><pre> # FIXME: signal doesn't do anything -base-783-base-446-base-183-base-150- self.emit(SIGNAL("close()")) -base-784-base-447-base-184-base-151- event.accept() -base-785-base-448-base-185-base-152- event.ignore() -base:786:base:449:base:186:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:250</b><br/><pre> del self._kiimage_threadlet# TODO: other message box -base-787-base-450-base-187-base-251- del self._kiimage_progressbar -base-788-base-451-base-188-base-252- self.pb_kiimage_repair.setEnabled(True) -base-789-base-452-base-189-base-253- mb = qtutils.infoMB(self, -base:790:base:453:base:190:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:345</b><br/><pre> # TODO: change timer from every second to every minute -base-791-base-454-base-191-base-346- self._timezone_timer = timer = QtCore.QTimer(self) -base-792-base-455-base-192-base-347- timer.setInterval(1000) # 1 sec -base:793:base:456:base:193:base:348: # TODO: needs optimization? run only when timer tab is active -base-794-base-457-base-194-base-349- self.connect(timer, SIGNAL('timeout()'), self.on_timezone_timer_timeout) -base-795-base-458-base-195-base-350- timer.start() -base-796-base-459-base-196-base-351- -base:797:base:460:base:197:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:442</b><br/><pre> # TODO: thread safety! -base-798-base-461-base-198-base-443- self.servers = servers -base-799-base-462-base-199-base-444- if not self.isRunning(): -base-800-base-463-base-200-base-445- self.start() -base:801:base:464:base:201:</pre></li><li><b>File: utilities/../src/moul/qt/.svn/text-base/mainwindow.py.svn-base:448</b><br/><pre> # TODO: thread safety! -base-802-base-465-base-202-base-449- # emit a list of names first -base-803-base-466-base-203-base-450- for server in self.servers: -base-804-base-467-base-204-base-451- self.emit(SIGNAL("server(const QString&)"), server.name) -base:8... [truncated message content] |
From: <ti...@us...> - 2007-03-13 15:37:28
|
Revision: 251 http://pymoul.svn.sourceforge.net/pymoul/?rev=251&view=rev Author: tiran Date: 2007-03-13 08:37:27 -0700 (Tue, 13 Mar 2007) Log Message: ----------- Fixes for Mac support compilui fix: prints Nothing to do when all files are up to date Added Windows Quickstart to INSTALL.txt Modified Paths: -------------- pymoul/trunk/INSTALL.txt pymoul/trunk/src/moul/osdependent/darwin/__init__.py pymoul/trunk/src/moul/osdependent/linux/__init__.py pymoul/trunk/utilities/compileui.py Modified: pymoul/trunk/INSTALL.txt =================================================================== --- pymoul/trunk/INSTALL.txt 2007-03-13 15:32:00 UTC (rev 250) +++ pymoul/trunk/INSTALL.txt 2007-03-13 15:37:27 UTC (rev 251) @@ -37,6 +37,21 @@ Windows Installation ==================== +Quick Start +----------- + + * Grap the Qt4.2.2 DLL package from http://sourceforge.net/projects/pymoul + + * Install Python 2.5, MinGW32 and the DLL files according to the INSTALL.txt + + * Install PyQt4 + + * Set PATH and QT4DIR + + * Invoke utilities\ez_setup.py with Python 2.5 + + * Start / Run: easy_install-2.5 -Z pytz + Installation ------------ Modified: pymoul/trunk/src/moul/osdependent/darwin/__init__.py =================================================================== --- pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-03-13 15:32:00 UTC (rev 250) +++ pymoul/trunk/src/moul/osdependent/darwin/__init__.py 2007-03-13 15:37:27 UTC (rev 251) @@ -48,20 +48,38 @@ The MOUL data directory contains log files, chatlogs, KI images and many more things. """ - moul_data = os.path.join(HOME, MOUL_DIR) + return os.path.join(HOME, MOUL_DIR) def getPyMoulDataDir(): """Get path to the pyMoul ini directory """ - inidir= os.path.join(HOME, PYMOUL_DIR) - return inidir + return os.path.join(HOME, PYMOUL_DIR) +def getMoulInstallDir(): + """Get path to MOUL install dir + """ + for path in LOCATIONS: + if os.path.isfile(os.path.join(path, EXEC_NAME)): + LOG.info("Uru directory found: %s" % path) + return path + LOG.warning("Uru directory NOT found! Search path was: \n %s" % + repr(LOCATIONS)) + return 'INVALID' + def startMoul(installdir, *args, **kwargs): """Start MOUL - returns a Popen instance - + args are applied to the program while kwargs are applied to subprocess.Popen() """ path = os.path.join(installdir, EXEC_NAME) args = ' '.join(args) return Popen("%s %s" % (path, args), cwd=installdir, **kwargs) + +def isMoulRunning(): + """Test if MOUL or the launcher is running + """ + for pid, name in getPidNames().items(): + if name.lower() in PROCESSES: + return pid + return False Modified: pymoul/trunk/src/moul/osdependent/linux/__init__.py =================================================================== --- pymoul/trunk/src/moul/osdependent/linux/__init__.py 2007-03-13 15:32:00 UTC (rev 250) +++ pymoul/trunk/src/moul/osdependent/linux/__init__.py 2007-03-13 15:37:27 UTC (rev 251) @@ -40,6 +40,7 @@ "/media/d/games/MystOnline", "/usr/local/games/MystOnline" ] +PYMOUL_DIR = '.pymoul' def getMoulUserDataDir(): """Get path of MOUL data directory @@ -52,8 +53,7 @@ def getPyMoulDataDir(): """Get path to the pyMoul ini directory """ - inidir= os.path.join(HOME, '.pymoul') - return inidir + return os.path.join(HOME, PYMOUL_DIR) def getMoulInstallDir(): """Get path to MOUL install dir @@ -68,7 +68,7 @@ def startMoul(installdir, *args, **kwargs): """Start MOUL - returns a Popen instance - + args are applied to the program while kwargs are applied to subprocess.Popen() """ Modified: pymoul/trunk/utilities/compileui.py =================================================================== --- pymoul/trunk/utilities/compileui.py 2007-03-13 15:32:00 UTC (rev 250) +++ pymoul/trunk/utilities/compileui.py 2007-03-13 15:37:27 UTC (rev 251) @@ -118,5 +118,8 @@ print "Searching in %s" % os.path.abspath(sys.argv[1]) pys = compileUi(sys.argv[1]) - print "Python files written:" - print '\n'.join(pys) + if not pys: + print "Nothing to do." + else: + print "Python files written:" + print '\n'.join(pys) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ti...@us...> - 2007-03-13 15:35:21
|
Revision: 249 http://pymoul.svn.sourceforge.net/pymoul/?rev=249&view=rev Author: tiran Date: 2007-03-13 08:09:57 -0700 (Tue, 13 Mar 2007) Log Message: ----------- BSD (and Mac) compatibility Modified Paths: -------------- enumprocess/trunk/src/enumprocess/processinfo.py Modified: enumprocess/trunk/src/enumprocess/processinfo.py =================================================================== --- enumprocess/trunk/src/enumprocess/processinfo.py 2007-03-12 15:51:36 UTC (rev 248) +++ enumprocess/trunk/src/enumprocess/processinfo.py 2007-03-13 15:09:57 UTC (rev 249) @@ -152,9 +152,12 @@ """ __slots__ = () - CMD = "ps -e --no-header --cols=1024" - PIDNAMES = "%s --format=pid,ucmd" % CMD - PIDS = "%s --format=pid" % CMD + # -e: every process + # -w twice: unlimited width + # -O: format + CMD = "ps -e -w -w" + PIDNAMES = "%s -O pid,ucmd" % CMD + PIDS = "%s -O pid" % CMD @classmethod def supported(cls): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |